├── .gitignore ├── README.md ├── nextep.rar ├── package-lock.json ├── package.json ├── public ├── fav.svg ├── favicon.ico ├── index.html ├── logo192.png ├── logo512.png ├── manifest.json └── robots.txt └── src ├── App.css ├── App.js ├── App.test.js ├── Assets ├── copy-white.png ├── copy.png ├── css │ ├── app.css │ ├── custom.css │ └── mycss.css ├── france.png ├── images │ ├── 825 (1).svg │ ├── 825.png │ ├── 825.svg │ ├── Frame 1000001031.svg │ ├── Rectangle 4374 (1).svg │ ├── Rectangle 4374.svg │ ├── Vector (3).svg │ ├── Vector (4).svg │ ├── Vector (5).svg │ ├── Vector (6).svg │ ├── Vector (7).svg │ ├── Vector (8).svg │ ├── arrow (8) 1.svg │ ├── binance-coin-seeklogo.com.svg │ ├── lettre n (1) 2.svg │ ├── logo-1.png │ ├── logo.png │ ├── mail 1.svg │ ├── solana-sol-logo 1.svg │ ├── tether-usdt-logo.svg │ ├── toggle.svg │ └── website (4) 1.svg ├── loader.gif └── usa.png ├── Components ├── customHooks │ └── useDarkSide.js ├── global │ ├── ConnectWalletButton.js │ ├── Header.css │ ├── Header.js │ ├── Layout.css │ ├── Layout.js │ ├── Switcher.css │ └── Switcher.js └── sections │ ├── Presale.css │ └── Presale.js ├── const └── index.js ├── context └── index.js ├── contracts ├── contracts │ ├── 4.json │ └── 97.json └── index.js ├── index.css ├── index.js ├── lib └── chains.js ├── locales ├── en-US.json └── fr-FR.json ├── logo.svg ├── reportWebVitals.js ├── setupTests.js └── utils └── index.js /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Getting Started with Create React App 2 | 3 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). 4 | 5 | ## Available Scripts 6 | 7 | In the project directory, you can run: 8 | 9 | ### `npm start` 10 | 11 | Runs the app in the development mode.\ 12 | Open [http://localhost:3000](http://localhost:3000) to view it in your browser. 13 | 14 | The page will reload when you make changes.\ 15 | You may also see any lint errors in the console. 16 | 17 | ### `npm test` 18 | 19 | Launches the test runner in the interactive watch mode.\ 20 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. 21 | 22 | ### `npm run build` 23 | 24 | Builds the app for production to the `build` folder.\ 25 | It correctly bundles React in production mode and optimizes the build for the best performance. 26 | 27 | The build is minified and the filenames include the hashes.\ 28 | Your app is ready to be deployed! 29 | 30 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. 31 | 32 | ### `npm run eject` 33 | 34 | **Note: this is a one-way operation. Once you `eject`, you can't go back!** 35 | 36 | If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. 37 | 38 | Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own. 39 | 40 | You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it. 41 | 42 | ## Learn More 43 | 44 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). 45 | 46 | To learn React, check out the [React documentation](https://reactjs.org/). 47 | 48 | ### Code Splitting 49 | 50 | This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) 51 | 52 | ### Analyzing the Bundle Size 53 | 54 | This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) 55 | 56 | ### Making a Progressive Web App 57 | 58 | This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) 59 | 60 | ### Advanced Configuration 61 | 62 | This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) 63 | 64 | ### Deployment 65 | 66 | This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) 67 | 68 | ### `npm run build` fails to minify 69 | 70 | This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) 71 | -------------------------------------------------------------------------------- /nextep.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newstable/nextep-frontend/74421c33eb3cfd9e96bfeabb20a4a20a8d40b26c/nextep.rar -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nextep", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@coinbase/wallet-sdk": "^3.5.2", 7 | "@testing-library/jest-dom": "^5.16.5", 8 | "@testing-library/react": "^13.4.0", 9 | "@testing-library/user-event": "^13.5.0", 10 | "@walletconnect/web3-provider": "^1.8.0", 11 | "ethers": "^5.7.1", 12 | "react": "^18.2.0", 13 | "react-copy-to-clipboard": "^5.1.0", 14 | "react-dom": "^18.2.0", 15 | "react-notifications": "^1.7.4", 16 | "react-scripts": "^4.0.3", 17 | "react-toggle-dark-mode": "^1.1.0", 18 | "rsuite": "^5.18.0", 19 | "walletlink": "^2.5.0", 20 | "web-vitals": "^2.1.4", 21 | "web3modal": "^1.9.9" 22 | }, 23 | "scripts": { 24 | "start": "react-scripts start", 25 | "build": "react-scripts build", 26 | "test": "react-scripts test", 27 | "eject": "react-scripts eject" 28 | }, 29 | "eslintConfig": { 30 | "extends": [ 31 | "react-app", 32 | "react-app/jest" 33 | ] 34 | }, 35 | "browserslist": { 36 | "production": [ 37 | ">0.2%", 38 | "not dead", 39 | "not op_mini all" 40 | ], 41 | "development": [ 42 | "last 1 chrome version", 43 | "last 1 firefox version", 44 | "last 1 safari version" 45 | ] 46 | }, 47 | "devDependencies": { 48 | "autoprefixer": "^10.4.8", 49 | "postcss": "^8.4.16", 50 | "tailwindcss": "^3.1.8" 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newstable/nextep-frontend/74421c33eb3cfd9e96bfeabb20a4a20a8d40b26c/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 15 | 16 | 25 | 26 | 27 | 29 | Nextep 30 | 31 | 32 | 33 | 34 |
35 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newstable/nextep-frontend/74421c33eb3cfd9e96bfeabb20a4a20a8d40b26c/public/logo192.png -------------------------------------------------------------------------------- /public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newstable/nextep-frontend/74421c33eb3cfd9e96bfeabb20a4a20a8d40b26c/public/logo512.png -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size: 16pxpx !important; 3 | } 4 | 5 | .primary-bg { 6 | background: #C629EC; 7 | } 8 | 9 | .site-grey-color { 10 | color: #869091; 11 | } -------------------------------------------------------------------------------- /src/App.js: -------------------------------------------------------------------------------- 1 | 2 | import './App.css'; 3 | import Layout from './Components/global/Layout'; 4 | import { NotificationContainer } from "react-notifications"; 5 | import 'react-notifications/lib/notifications.css'; 6 | import BlockchainProvider from "./context"; 7 | // import { Route, BrowserRouter } from 'react-router-dom'; 8 | import "./Assets/css/app.css" 9 | import "./Assets/css/custom.css" 10 | import "./Assets/css/mycss.css" 11 | function App() { 12 | return ( 13 | <> 14 | 15 | 16 | 17 | 18 | 19 | ); 20 | } 21 | 22 | export default App; 23 | -------------------------------------------------------------------------------- /src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /src/Assets/copy-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newstable/nextep-frontend/74421c33eb3cfd9e96bfeabb20a4a20a8d40b26c/src/Assets/copy-white.png -------------------------------------------------------------------------------- /src/Assets/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newstable/nextep-frontend/74421c33eb3cfd9e96bfeabb20a4a20a8d40b26c/src/Assets/copy.png -------------------------------------------------------------------------------- /src/Assets/france.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newstable/nextep-frontend/74421c33eb3cfd9e96bfeabb20a4a20a8d40b26c/src/Assets/france.png -------------------------------------------------------------------------------- /src/Assets/images/825 (1).svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/Assets/images/825.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newstable/nextep-frontend/74421c33eb3cfd9e96bfeabb20a4a20a8d40b26c/src/Assets/images/825.png -------------------------------------------------------------------------------- /src/Assets/images/825.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/Assets/images/Frame 1000001031.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/Assets/images/Vector (3).svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Assets/images/Vector (4).svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Assets/images/Vector (5).svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Assets/images/Vector (6).svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Assets/images/Vector (7).svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Assets/images/Vector (8).svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Assets/images/arrow (8) 1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/Assets/images/binance-coin-seeklogo.com.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Assets/images/logo-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newstable/nextep-frontend/74421c33eb3cfd9e96bfeabb20a4a20a8d40b26c/src/Assets/images/logo-1.png -------------------------------------------------------------------------------- /src/Assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newstable/nextep-frontend/74421c33eb3cfd9e96bfeabb20a4a20a8d40b26c/src/Assets/images/logo.png -------------------------------------------------------------------------------- /src/Assets/images/mail 1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/Assets/images/solana-sol-logo 1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/Assets/images/tether-usdt-logo.svg: -------------------------------------------------------------------------------- 1 | tether-usdt-logo -------------------------------------------------------------------------------- /src/Assets/images/toggle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Assets/images/website (4) 1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/Assets/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newstable/nextep-frontend/74421c33eb3cfd9e96bfeabb20a4a20a8d40b26c/src/Assets/loader.gif -------------------------------------------------------------------------------- /src/Assets/usa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newstable/nextep-frontend/74421c33eb3cfd9e96bfeabb20a4a20a8d40b26c/src/Assets/usa.png -------------------------------------------------------------------------------- /src/Components/customHooks/useDarkSide.js: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "react"; 2 | 3 | export default function useDarkSide() { 4 | const [theme, setTheme] = useState(localStorage.theme || "light") 5 | const colorTheme = theme === 'dark' ? 'light' : 'dark'; 6 | 7 | useEffect(() => { 8 | const root = window.document.documentElement; 9 | root.classList.remove(colorTheme); 10 | root.classList.add(theme); 11 | 12 | localStorage.setItem('theme', theme); 13 | }, [theme, colorTheme]) 14 | 15 | return [colorTheme, setTheme]; 16 | } -------------------------------------------------------------------------------- /src/Components/global/ConnectWalletButton.js: -------------------------------------------------------------------------------- 1 | import Web3Modal from "web3modal"; 2 | import { ethers } from "ethers"; 3 | import { providerOptions } from "../../const"; 4 | import { useEffect, useState } from "react"; 5 | import { toHex } from "../../utils"; 6 | import Wallet from "../../Assets/images/Vector (8).svg"; 7 | import { useBlockchainContext } from '../../context'; 8 | const web3Modal = new Web3Modal({ 9 | cacheProvider: true, // optional 10 | providerOptions, // required 11 | }); 12 | 13 | const ConnectButton = ({ styleNames, img, styleP }) => { 14 | const [account, setAccount] = useState(""); 15 | const [library, setLibrary] = useState(); 16 | const [chainId, setChainId] = useState(); 17 | 18 | const [state, { dispatch }] = useBlockchainContext(); 19 | var styledAddress = account 20 | ? account.slice(0, 4) + "..." + account.slice(-4) 21 | : ""; 22 | 23 | const connectWallet = async () => { 24 | try { 25 | const provider = await web3Modal.connect(); 26 | provider.on("accountsChanged", async (accounts) => { 27 | if (accounts.length == 0) { 28 | await web3Modal.clearCachedProvider(); 29 | refreshState(); 30 | } 31 | }) 32 | const library = new ethers.providers.Web3Provider(provider); 33 | const accounts = await library.listAccounts(); 34 | const network = await library.getNetwork(); 35 | dispatch({ 36 | type: "provider", 37 | payload: library 38 | }) 39 | setLibrary(library); 40 | if (accounts) { 41 | dispatch({ 42 | type: "address", 43 | payload: accounts[0] 44 | }) 45 | setAccount(accounts[0]); 46 | } 47 | setChainId(network.chainId); 48 | } catch (error) { 49 | console.log(error); 50 | } 51 | }; 52 | 53 | useEffect(() => { 54 | if (chainId != "97") { 55 | switchNetwork("97"); 56 | } 57 | }, [account]) 58 | 59 | useEffect(() => { 60 | setAccount(state.address); 61 | }, [state.address]) 62 | 63 | const switchNetwork = async (network) => { 64 | try { 65 | await library.provider.request({ 66 | method: "wallet_switchEthereumChain", 67 | params: [{ chainId: toHex(network) }], 68 | }); 69 | } catch (switchError) { 70 | if (switchError.code === 4902) { 71 | try { 72 | await library.provider.request({ 73 | method: "wallet_addEthereumChain", 74 | params: [ 75 | { 76 | chainId: toHex("137"), 77 | chainName: "Polygon", 78 | rpcUrls: ["https://polygon-rpc.com/"], 79 | blockExplorerUrls: ["https://polygonscan.com/"], 80 | }, 81 | ], 82 | }); 83 | } catch (addError) { 84 | throw addError; 85 | } 86 | } 87 | } 88 | }; 89 | 90 | useEffect(() => { 91 | if (web3Modal.cachedProvider) { 92 | connectWallet(); 93 | } 94 | }, []); 95 | 96 | const refreshState = () => { 97 | setAccount(""); 98 | }; 99 | 100 | const disconnect = async () => { 101 | await web3Modal.clearCachedProvider(); 102 | dispatch({ 103 | type: "address", 104 | payload: "" 105 | }) 106 | refreshState(); 107 | } 108 | 109 | return ( 110 | <> 111 | {!account ? ( 112 | 124 | ) : ( 125 | 136 | )} 137 | 138 | ) 139 | } 140 | 141 | export default ConnectButton; -------------------------------------------------------------------------------- /src/Components/global/Header.css: -------------------------------------------------------------------------------- 1 | /*

👏🏻Good morning.

*/ 2 | 3 | .good-morning { 4 | font-size: 22px; 5 | color: #0f0f0f; 6 | } 7 | 8 | .dark .good-morning { 9 | color: #fff !important; 10 | } 11 | 12 | .nextep-font { 13 | font-size: 20px; 14 | color: #0f0f0f; 15 | margin-left: 8px; 16 | } 17 | 18 | .dark .nextep-font { 19 | color: #FDFDFD !important; 20 | } 21 | 22 | .wallet-btn { 23 | background: #C629EC; 24 | padding: 15px 18px; 25 | border-radius: 5px; 26 | } 27 | 28 | .text-1 { 29 | color: #C629EC; 30 | } 31 | 32 | .nextep-h1 { 33 | line-height: 63px !important; 34 | } 35 | 36 | .wallet-p { 37 | margin-bottom: 0; 38 | } 39 | 40 | @media (max-width:600px) { 41 | .wallet-btn { 42 | border-radius: 50%; 43 | padding: 12px 11px; 44 | } 45 | } -------------------------------------------------------------------------------- /src/Components/global/Header.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Wallet from "../../Assets/images/Vector (8).svg"; 3 | import logo from "../../Assets/images/logo.png"; 4 | import ConnectWalletButton from "./ConnectWalletButton"; 5 | import { useBlockchainContext } from '../../context'; 6 | 7 | import './Header.css'; 8 | export const Header = () => { 9 | const [state] = useBlockchainContext(); 10 | const { L } = state; 11 | return ( 12 | <> 13 |
14 |
15 |

👏🏻{L['good']}.

16 |
17 | 18 |
19 |

20 |
21 | 22 |
23 | {/* error */} 28 |

31 | 32 |

33 |
34 |
35 | 36 |
37 |
38 | 39 | ); 40 | }; 41 | -------------------------------------------------------------------------------- /src/Components/global/Layout.css: -------------------------------------------------------------------------------- 1 | .layout { 2 | background: #f3f3f3; 3 | height: 100vh; 4 | } 5 | 6 | .dark .layout { 7 | height: 100vh; 8 | background: #0F0F0F !important; 9 | } 10 | 11 | .dark .layout_ { 12 | background: #181818 !important; 13 | } 14 | 15 | .padding-top-11 { 16 | padding-top: 45px; 17 | } 18 | 19 | 20 | .width-64 { 21 | width: 220px; 22 | } 23 | 24 | .rotate-360 { 25 | transform: translate(0, 0) rotate(360deg) skewX(0) skewY(0) scaleX(1) scaleY(1); 26 | } 27 | 28 | .toggle { 29 | /* dark:filter-none hidden fixed cursor-pointer left-[28px] top-[46px] z-[3] md:block sm:top-[53px] */ 30 | display: none; 31 | position: fixed; 32 | cursor: pointer; 33 | left: 28px; 34 | top: 46px; 35 | z-index: 11; 36 | 37 | } 38 | 39 | .dark .toggle { 40 | filter: none !important; 41 | } 42 | 43 | .z-10 { 44 | z-index: 10; 45 | } 46 | 47 | .next-font { 48 | color: #0F0F0F; 49 | } 50 | 51 | .dark .next-font { 52 | color: #FDFDFD; 53 | } 54 | 55 | .p-7 { 56 | padding: 1.75rem; 57 | } 58 | 59 | .language-p-3 { 60 | padding: 0.3rem 20px; 61 | } 62 | 63 | .padding-5 { 64 | padding: 38px 26px 0; 65 | } 66 | 67 | .padding-lr-5 { 68 | padding: 0 26px; 69 | } 70 | 71 | .padding-tm-5 { 72 | padding: 38px 0; 73 | } 74 | 75 | .my-h1 { 76 | line-height: 62px !important; 77 | } 78 | 79 | .multilanguage { 80 | position: absolute; 81 | bottom: 80px; 82 | width: 74%; 83 | } 84 | 85 | .multilanguage li { 86 | background: #e7e7e7; 87 | } 88 | 89 | .dark .multilanguage li { 90 | background: #0f0f0f; 91 | } 92 | 93 | @media (max-width:767px) { 94 | .multilanguage { 95 | position: relative; 96 | width: 100%; 97 | bottom: 5px; 98 | } 99 | } -------------------------------------------------------------------------------- /src/Components/global/Layout.js: -------------------------------------------------------------------------------- 1 | import { useState, useEffect } from "react"; 2 | import { useBlockchainContext } from '../../context'; 3 | import Switcher from "./Switcher"; 4 | import logo from "../../Assets/images/logo.png"; 5 | import iconMigration from "../../Assets/images/Vector (3).svg"; 6 | import iconArow from "../../Assets/images/arrow (8) 1.svg"; 7 | import toggle from "../../Assets/images/toggle.svg"; 8 | 9 | import france from "../../Assets/france.png"; 10 | import usa from "../../Assets/usa.png"; 11 | 12 | import { Presale } from "../sections/Presale"; 13 | import { Header } from "./Header"; 14 | import './Layout.css'; 15 | 16 | const locales = { 17 | "usa": require('../../locales/en-US.json'), 18 | "france": require('../../locales/fr-FR.json'), 19 | }; 20 | 21 | const Layout = () => { 22 | const [open, setOpen] = useState(true); 23 | const [presale, setPresaleActive] = useState(true); 24 | const [migration, setMigrationActive] = useState(false); 25 | const [isEng, setIsEng] = useState(true); 26 | 27 | const [state, { dispatch }] = useBlockchainContext(); 28 | const { L } = state; 29 | 30 | 31 | const [screenSize, getDimension] = useState(window.innerWidth); 32 | const setDimension = () => { 33 | getDimension(window.innerWidth) 34 | } 35 | 36 | useEffect(() => { 37 | window.addEventListener('resize', setDimension); 38 | if (window.innerWidth < 768) { 39 | setOpen(false); 40 | } else { 41 | setOpen(true); 42 | } 43 | }, [screenSize]) 44 | 45 | useEffect(() => { 46 | if (isEng) { 47 | dispatch({ 48 | type: "L", 49 | payload: locales["usa"] 50 | }) 51 | } else { 52 | dispatch({ 53 | type: "L", 54 | payload: locales["france"] 55 | }) 56 | } 57 | }, [isEng]) 58 | useEffect(() => { 59 | window.localStorage.setItem('lang', 'usa') 60 | }, []) 61 | const activePresale = () => { 62 | setPresaleActive(true); 63 | setMigrationActive(false); 64 | }; 65 | 66 | const activeMigration = () => { 67 | setPresaleActive(false); 68 | setMigrationActive(true); 69 | }; 70 | 71 | return ( 72 |
73 |
77 | setOpen(!open)} 81 | alt="error" 82 | /> 83 |
84 | error 90 | {/*

94 | Nextep 95 |

*/} 96 |
97 |
    98 |
  • activePresale()} 100 | className={`mt-10 flex rounded-md py-3 px-2 mb-5 cursor-pointer items-center 101 | ${presale ? "primary-bg white" : ""} ${open ? "pl-3" : "px-0" 102 | }`} 103 | > 104 | error 105 | 110 | {/* Presale */} 111 | {L['presale']} 112 | 113 |
  • 114 | 115 | 116 | {/*
  • activeMigration()} 118 | className={`flex rounded-md py-3 mb-5 cursor-pointer items-center 119 | ${migration ? "primary-bg white" : ""} ${open ? "pl-3" : "pl-0" 120 | }`} 121 | > 122 | error 123 | 128 | Migration 129 | 130 |
  • */} 131 |
132 |
133 |
setIsEng(true)}> 134 | error 135 |
136 | 137 |
138 | 139 |
setIsEng(false)}> 140 | error 141 |
142 |
143 | {/*
    144 |
  • setIsEng(!isEng)} 146 | className={`mt-10 flex rounded-md mb-5 cursor-pointer items-center multilanguage-contianer`} 147 | > 148 | {isEng ? 149 | error 150 | : 151 | < img src={france} style={{ width: '30px', height: '30px' }} alt="error" /> 152 | } 153 |
  • 154 |
*/} 155 | 156 |
157 |
158 |
159 | 160 |
161 |
162 | ); 163 | }; 164 | export default Layout; 165 | -------------------------------------------------------------------------------- /src/Components/global/Switcher.css: -------------------------------------------------------------------------------- 1 | .switcher { 2 | /* absolute w-[74%] bottom-[38px] */ 3 | position: absolute; 4 | bottom: 38px; 5 | width: 74%; 6 | } 7 | 8 | .switcher-style-1 { 9 | padding: 0 25px; 10 | } 11 | 12 | .dark .dark\:switcher-style-1 { 13 | padding: 0; 14 | } 15 | 16 | .width-1 { 17 | width: 3px; 18 | } 19 | 20 | .switcher-body { 21 | background: #e9e9e9; 22 | } 23 | 24 | .dark .switcher-body { 25 | background: #232323 !important; 26 | } 27 | 28 | .swithcer-ele { 29 | background: #808080; 30 | } 31 | 32 | .dark .swithcer-ele { 33 | background: rgb(131, 131, 131) !important; 34 | } 35 | 36 | .multilanguage-contianer { 37 | height: 50px; 38 | padding-left: 15px; 39 | padding-right: 15px; 40 | } 41 | 42 | @media (max-width:767px) { 43 | .switcher { 44 | position: relative; 45 | width: 100%; 46 | bottom: -15px; 47 | } 48 | } -------------------------------------------------------------------------------- /src/Components/global/Switcher.js: -------------------------------------------------------------------------------- 1 | import React, { useState } from "react"; 2 | import useDarkSide from "../customHooks/useDarkSide"; 3 | import Dark from "../../Assets/images/Vector (5).svg"; 4 | import Light from "../../Assets/images/Vector (6).svg"; 5 | import './Switcher.css'; 6 | 7 | export default function Switcher({ open }) { 8 | const [colorTheme, setTheme] = useDarkSide(); 9 | const [darkSide, setDarkSide] = useState( 10 | colorTheme === "light" ? true : false 11 | ); 12 | 13 | const toggleDarkMode = (checked) => { 14 | setTheme(colorTheme); 15 | setDarkSide(checked); 16 | }; 17 | 18 | return ( 19 | <> 20 |
21 |
22 |
toggleDarkMode(true)}> 23 | error 24 |
25 | 26 |
27 | 28 |
toggleDarkMode(false)}> 29 | error 30 |
31 |
32 |
33 | 34 | ); 35 | } 36 | -------------------------------------------------------------------------------- /src/Components/sections/Presale.css: -------------------------------------------------------------------------------- 1 | .presale-card { 2 | display: flex; 3 | justify-content: center; 4 | align-items: center; 5 | height: 90%; 6 | } 7 | 8 | .px-8 { 9 | padding-left: 2rem; 10 | padding-right: 2rem; 11 | } 12 | 13 | .py-7 { 14 | padding-top: 1.75rem; 15 | padding-bottom: 1.75rem; 16 | } 17 | 18 | .rounded-3xl { 19 | border-radius: 20px; 20 | } 21 | 22 | .border-black { 23 | --tw-border-opacity: 1; 24 | border-color: rgba(150, 150, 150, var(--tw-border-opacity)); 25 | } 26 | 27 | .display-center { 28 | display: flex; 29 | justify-content: center; 30 | align-items: center; 31 | } 32 | 33 | .label-style-1 { 34 | margin: 0; 35 | } 36 | 37 | .pading-3 { 38 | padding: 15px; 39 | } 40 | 41 | .dark .dark\:border-white { 42 | --tw-border-opacity: 1; 43 | border-color: rgba(255, 255, 255, var(--tw-border-opacity)); 44 | } 45 | 46 | .p-21 { 47 | padding: 0 21px; 48 | } 49 | 50 | .w-100 { 51 | width: 473px; 52 | } 53 | 54 | .text-color-1 { 55 | color: #575757; 56 | } 57 | 58 | .bg-color-1 { 59 | background-color: rgb(231, 231, 231) !important; 60 | } 61 | 62 | .bg-dropdown-1 { 63 | background-color: transparent; 64 | } 65 | 66 | .outline-style-1 { 67 | border: none; 68 | outline-width: 0; 69 | } 70 | 71 | .rs-dropdown-menu { 72 | border-radius: 0 !important; 73 | } 74 | 75 | .max-btn { 76 | border: 1px solid #575757; 77 | border-radius: 40px; 78 | padding: 2px 7px; 79 | font-weight: 700; 80 | margin-bottom: 5px; 81 | } 82 | 83 | .dark .dark\:.max-btn { 84 | border: 1px solid #a7a7a7; 85 | border-radius: 40px; 86 | padding: 2px 7px; 87 | font-weight: 700; 88 | margin-bottom: 5px; 89 | } 90 | 91 | .outline-style-1:focus { 92 | outline: none !important; 93 | box-shadow: none !important; 94 | } 95 | 96 | .mg-style-0 { 97 | margin: 0; 98 | } 99 | 100 | .width-60 { 101 | width: 235px; 102 | } 103 | 104 | .padding-9 { 105 | padding: 15px 34px; 106 | } 107 | 108 | .brightness-0 { 109 | filter: brightness(0); 110 | } 111 | 112 | /* .sm\:mb-4 { 113 | margin-bottom: 1rem; 114 | } 115 | 116 | .sm\:mr-0 { 117 | margin-right: 0 !important; 118 | } 119 | 120 | .sm\:w-full { 121 | width: 100%; 122 | } */ 123 | 124 | .filter-none { 125 | filter: none; 126 | } 127 | 128 | .flex-center { 129 | display: flex; 130 | justify-content: center; 131 | align-items: center; 132 | } 133 | 134 | @media (width:640) { 135 | .width-60 { 136 | width: 100% !important; 137 | } 138 | } -------------------------------------------------------------------------------- /src/Components/sections/Presale.js: -------------------------------------------------------------------------------- 1 | 2 | import React, { useEffect, useState } from "react"; 3 | // import logo from "../../Assets/images/"; 4 | import Img from "../../Assets/images/Rectangle 4374.svg"; 5 | import CXE from "../../Assets/images/logo-1.png"; 6 | import { ReactComponent as Solana } from "../../Assets/images/solana-sol-logo 1.svg"; 7 | import Dex from "../../Assets/images/Frame 1000001031.svg"; 8 | import Crypto from "../../Assets/images/website (4) 1.svg"; 9 | import Mail from "../../Assets/images/mail 1.svg"; 10 | import Dropdown from "rsuite/Dropdown"; 11 | import "rsuite/dist/rsuite.min.css"; 12 | import USDT from "../../Assets/images/tether-usdt-logo.svg"; 13 | import NextBnB from "../../Assets/images/binance-coin-seeklogo.com.svg"; 14 | import { useBlockchainContext } from '../../context'; 15 | import ConnectButton from "../global/ConnectWalletButton"; 16 | import { NotificationManager } from "react-notifications"; 17 | import './Presale.css'; 18 | import { CopyToClipboard } from 'react-copy-to-clipboard'; 19 | import Loading from "../../Assets/loader.gif"; 20 | import Copy from "../../Assets/copy.png"; 21 | import Copy_white from "../../Assets/copy-white.png"; 22 | const addresses = [ 23 | "0x78867BbEeF44f2326bF8DDd1941a4439382EF2A7", 24 | "0x7ef95a0FEE0Dd31b22626fA2e10Ee6A223F8a684" 25 | ] 26 | 27 | export const Presale = ({ migration }) => { 28 | const [state, { dispatch, buy }] = useBlockchainContext(); 29 | const [receive, setRecieveValue] = useState(0); 30 | const [pay, setPayValue] = useState(0); 31 | const [item, setItemActive] = useState(false); 32 | const { address, tokenAddress, amount, cxsAmount, L } = state; 33 | const [copied, setCopied] = useState(false); 34 | 35 | const onReceiveChange = (e) => { 36 | setRecieveValue(e); 37 | setPayValue(e * 1000); 38 | }; 39 | 40 | const onPayChange = (e) => { 41 | setPayValue(e.target.value); 42 | setRecieveValue(e.target.value / 1000); 43 | }; 44 | 45 | useEffect(() => { 46 | if (copied) { 47 | NotificationManager.success("Successfully Copied!", "Success"); 48 | setTimeout(() => { 49 | setCopied(false); 50 | }, 2000); 51 | } 52 | }, [copied]) 53 | 54 | const onBuy = async () => { 55 | await buy(receive); 56 | } 57 | 58 | // useEffect(() => { 59 | // pay = receive * 10; 60 | // }, [receive]) 61 | 62 | const selectedMenu = (bool, num) => { 63 | setItemActive(bool); 64 | dispatch({ 65 | type: "tokenAddress", 66 | payload: addresses[num] 67 | }) 68 | }; 69 | 70 | return ( 71 |
72 |
73 |
74 |
75 |

76 | {/* Buy CXS Coin */} 77 | {L['buy_cxs']} 78 |

79 |

80 | {/* Select wallet */} 81 | {L['select_wallet']} 82 |

83 | setCopied(true)} text={address ? address : L["connectwallet"]}> 84 |
85 |
86 | {/* error */} 87 |
88 | 92 |
93 |

94 | {address ? address.slice(0, 8) + "..." + address.slice(address.length - 8, address) : L["connectwallet"]} 95 |

96 | 97 | 98 |
99 |
100 |
101 |
102 |
103 | 104 |
105 |
106 |

107 | {/* You Pay */} 108 | {L['you_pay']} 109 |

110 |
{L['my_balance']} : {amount ? amount.toFixed(0) : 0} 111 | 112 |
113 |
114 |
115 |
116 |
117 | onReceiveChange(e.target.value)} 119 | value={receive} 120 | type="text" 121 | onKeyPress={(event) => { 122 | if (!/[0-9]/.test(event.key)) { 123 | event.preventDefault(); 124 | } 125 | }} 126 | className="outline-style-1 font-inter text-base text-color-1 bg-color-1 dark:bg-black-1 sm:w-[100%]" 127 | /> 128 |
129 |
130 |
134 | {item ? ( 135 | 142 | ) : ( 143 | error 148 | ) 149 | } 150 | > 151 | selectedMenu(false, 0)} 153 | icon={} 154 | > 155 | BUSD 156 | 157 | 158 | ) : ( 159 | 166 | ) : ( 167 | 168 | ) 169 | } 170 | > 171 | selectedMenu(true, 1)} 173 | icon={ 174 | error 179 | } 180 | > 181 | USDT 182 | 183 | 184 | )} 185 |
186 |
187 |
188 | 189 |
190 |
191 |

192 | {/* You receive */} 193 | {L['receive']} 194 |

195 |
{L['cxs_bal']} : {cxsAmount ? cxsAmount.toFixed(0) : 0}
196 |
197 |
198 |
199 |
200 | onPayChange(e)} 202 | value={pay} 203 | type="text" 204 | onKeyPress={(event) => { 205 | if (!/[0-9]/.test(event.key)) { 206 | event.preventDefault(); 207 | } 208 | }} 209 | className="outline-style-1 font-inter text-base text-color-1 dark:text-slate-100 bg-color-1 dark:bg-black-1 sm:w-[100%]" 210 | /> 211 |
212 |
213 |
214 | error 215 |

216 | {migration ? "Nextep Nxchain" : "CXS"} 217 |

218 |
219 |
220 |
221 |
222 |
223 | {address ? 224 | 228 | : 229 |
230 | 231 |
232 | } 233 | 234 |
235 |
236 | 237 |
238 | 282 | 283 | {/* 284 |
285 | error 290 |

291 | Mail 292 |

293 |
294 |
*/} 295 |
296 |
297 |
298 | ); 299 | }; 300 | -------------------------------------------------------------------------------- /src/const/index.js: -------------------------------------------------------------------------------- 1 | import WalletConnect from "@walletconnect/web3-provider"; 2 | import CoinbaseWalletSDK from "@coinbase/wallet-sdk"; 3 | // import Portis from "@portis/web3"; 4 | // import Fortmatic from "fortmatic"; 5 | // import Squarelink from "squarelink"; 6 | 7 | export const providerOptions = { 8 | walletlink: { 9 | package: CoinbaseWalletSDK, // Required 10 | options: { 11 | appName: "Web 3 Modal Demo", // Required 12 | infuraId: "9f8f5ec266c54f85aa9e66fbe230b077", // Required unless you provide a JSON RPC url; see `rpc` below 13 | }, 14 | }, 15 | walletconnect: { 16 | package: WalletConnect, // required 17 | options: { 18 | infuraId: "9f8f5ec266c54f85aa9e66fbe230b077", // required 19 | }, 20 | }, 21 | }; 22 | -------------------------------------------------------------------------------- /src/context/index.js: -------------------------------------------------------------------------------- 1 | import React, { 2 | createContext, 3 | useContext, 4 | useReducer, 5 | useMemo, 6 | useCallback, 7 | useEffect, 8 | } from "react"; 9 | import { ethers } from "ethers"; 10 | import { 11 | providers, ERCContract, presaleContract, Contrats 12 | } from "../contracts"; 13 | 14 | import { delay, handleAlert, toBigNum, fromBigNum } from "../utils"; 15 | import { NotificationManager } from "react-notifications"; 16 | 17 | const locales = { 18 | "usa": require('../locales/en-US.json'), 19 | "france": require('../locales/fr-FR.json'), 20 | }; 21 | 22 | const BlockchainContext = createContext(); 23 | 24 | export function useBlockchainContext() { 25 | return useContext(BlockchainContext); 26 | } 27 | 28 | function reducer(state, { type, payload }) { 29 | return { 30 | ...state, 31 | [type]: payload, 32 | }; 33 | } 34 | 35 | 36 | const INIT_STATE = { 37 | lang: "usa", 38 | L: locales["usa"], 39 | signer: "", 40 | amount: 0, 41 | cxsAmount: 0, 42 | provider: null, 43 | web3Provider: "", 44 | address: '', 45 | chainId: '', 46 | balance: 0, 47 | tokenAddress: "0x78867BbEeF44f2326bF8DDd1941a4439382EF2A7", 48 | contract: null, 49 | myBalance: 0, 50 | }; 51 | 52 | export default function Provider({ children }) { 53 | const [state, dispatch] = useReducer(reducer, INIT_STATE); 54 | 55 | useEffect(() => { 56 | if (state.address == "") { 57 | dispatch({ 58 | type: "cxsAmount", 59 | payload: 0 60 | }) 61 | } else { 62 | setCXSAmount(); 63 | } 64 | }, [state.address]) 65 | 66 | const setCXSAmount = async () => { 67 | var contract = ERCContract("0xFd9Fd678C8EF9a271862edCFc0402B38B665Af69"); 68 | const myBalance = fromBigNum(await contract.balanceOf(state.address)); 69 | dispatch({ 70 | type: "cxsAmount", 71 | payload: myBalance 72 | }) 73 | } 74 | 75 | useEffect(() => { 76 | dispatch({ 77 | type: "contract", 78 | payload: ERCContract(state.tokenAddress) 79 | }) 80 | }, [state.tokenAddress]) 81 | 82 | useEffect(() => { 83 | if (state.address == "") { 84 | dispatch({ 85 | type: "amount", 86 | payload: 0 87 | }) 88 | } else { 89 | setAmount(); 90 | } 91 | }, [state.address, state.tokenAddress]) 92 | 93 | const setAmount = async () => { 94 | var contract = ERCContract(state.tokenAddress); 95 | const myBalance = fromBigNum(await contract.balanceOf(state.address)); 96 | dispatch({ 97 | type: "amount", 98 | payload: myBalance 99 | }) 100 | } 101 | useEffect(() => { 102 | console.log(state.provider); 103 | if (state.provider) { 104 | dispatch({ 105 | type: "signer", 106 | payload: state.provider?.getSigner() 107 | }) 108 | } else { 109 | dispatch({ 110 | type: "signer", 111 | payload: null 112 | }) 113 | } 114 | }, [state.provider]) 115 | 116 | const checkBalance = async () => { 117 | const myBalance = await state.contract.balanceOf(state.address); 118 | return myBalance; 119 | } 120 | //actions 121 | const buy = async (amount) => { 122 | try { 123 | const myBalance = fromBigNum(await checkBalance()); 124 | if (amount > myBalance) { 125 | NotificationManager.error("Insufficient Balance.Please check your Balance.", "Error"); 126 | return false; 127 | } 128 | var erc = state.contract.connect(state.signer); 129 | var approve = await erc.approve(Contrats.presale.address, toBigNum(amount, 18)); 130 | await approve.wait(); 131 | var signedPresaleContract = presaleContract.connect(state.signer); 132 | var tx = await signedPresaleContract.buyWithStableCoin(state.tokenAddress, toBigNum(amount, 18)); 133 | await tx.wait(); 134 | NotificationManager.success("Buy Success"); 135 | } catch (err) { 136 | NotificationManager.warning("An error has occured. Please try again", "Warning"); 137 | } 138 | } 139 | 140 | return ( 141 | [ 144 | state, 145 | { 146 | buy, 147 | dispatch 148 | } 149 | ], 150 | [state] 151 | )}> 152 | {children} 153 | 154 | ); 155 | } 156 | -------------------------------------------------------------------------------- /src/contracts/contracts/4.json: -------------------------------------------------------------------------------- 1 | { 2 | "token": { 3 | "address": "0x1A03b9d9C8F29217a078C8330b06FbD480c81C5E", 4 | "abi": [ 5 | { 6 | "inputs": [ 7 | { 8 | "internalType": "string", 9 | "name": "name", 10 | "type": "string" 11 | }, 12 | { 13 | "internalType": "string", 14 | "name": "symbol", 15 | "type": "string" 16 | } 17 | ], 18 | "stateMutability": "nonpayable", 19 | "type": "constructor" 20 | }, 21 | { 22 | "anonymous": false, 23 | "inputs": [ 24 | { 25 | "indexed": true, 26 | "internalType": "address", 27 | "name": "owner", 28 | "type": "address" 29 | }, 30 | { 31 | "indexed": true, 32 | "internalType": "address", 33 | "name": "spender", 34 | "type": "address" 35 | }, 36 | { 37 | "indexed": false, 38 | "internalType": "uint256", 39 | "name": "value", 40 | "type": "uint256" 41 | } 42 | ], 43 | "name": "Approval", 44 | "type": "event" 45 | }, 46 | { 47 | "anonymous": false, 48 | "inputs": [ 49 | { 50 | "indexed": true, 51 | "internalType": "address", 52 | "name": "from", 53 | "type": "address" 54 | }, 55 | { 56 | "indexed": true, 57 | "internalType": "address", 58 | "name": "to", 59 | "type": "address" 60 | }, 61 | { 62 | "indexed": false, 63 | "internalType": "uint256", 64 | "name": "value", 65 | "type": "uint256" 66 | } 67 | ], 68 | "name": "Transfer", 69 | "type": "event" 70 | }, 71 | { 72 | "inputs": [ 73 | { 74 | "internalType": "address", 75 | "name": "owner", 76 | "type": "address" 77 | }, 78 | { 79 | "internalType": "address", 80 | "name": "spender", 81 | "type": "address" 82 | } 83 | ], 84 | "name": "allowance", 85 | "outputs": [ 86 | { 87 | "internalType": "uint256", 88 | "name": "", 89 | "type": "uint256" 90 | } 91 | ], 92 | "stateMutability": "view", 93 | "type": "function" 94 | }, 95 | { 96 | "inputs": [ 97 | { 98 | "internalType": "address", 99 | "name": "spender", 100 | "type": "address" 101 | }, 102 | { 103 | "internalType": "uint256", 104 | "name": "amount", 105 | "type": "uint256" 106 | } 107 | ], 108 | "name": "approve", 109 | "outputs": [ 110 | { 111 | "internalType": "bool", 112 | "name": "", 113 | "type": "bool" 114 | } 115 | ], 116 | "stateMutability": "nonpayable", 117 | "type": "function" 118 | }, 119 | { 120 | "inputs": [ 121 | { 122 | "internalType": "address", 123 | "name": "account", 124 | "type": "address" 125 | } 126 | ], 127 | "name": "balanceOf", 128 | "outputs": [ 129 | { 130 | "internalType": "uint256", 131 | "name": "", 132 | "type": "uint256" 133 | } 134 | ], 135 | "stateMutability": "view", 136 | "type": "function" 137 | }, 138 | { 139 | "inputs": [ 140 | { 141 | "internalType": "uint256", 142 | "name": "amount", 143 | "type": "uint256" 144 | } 145 | ], 146 | "name": "burn", 147 | "outputs": [], 148 | "stateMutability": "nonpayable", 149 | "type": "function" 150 | }, 151 | { 152 | "inputs": [], 153 | "name": "decimals", 154 | "outputs": [ 155 | { 156 | "internalType": "uint8", 157 | "name": "", 158 | "type": "uint8" 159 | } 160 | ], 161 | "stateMutability": "view", 162 | "type": "function" 163 | }, 164 | { 165 | "inputs": [ 166 | { 167 | "internalType": "address", 168 | "name": "spender", 169 | "type": "address" 170 | }, 171 | { 172 | "internalType": "uint256", 173 | "name": "subtractedValue", 174 | "type": "uint256" 175 | } 176 | ], 177 | "name": "decreaseAllowance", 178 | "outputs": [ 179 | { 180 | "internalType": "bool", 181 | "name": "", 182 | "type": "bool" 183 | } 184 | ], 185 | "stateMutability": "nonpayable", 186 | "type": "function" 187 | }, 188 | { 189 | "inputs": [ 190 | { 191 | "internalType": "address", 192 | "name": "spender", 193 | "type": "address" 194 | }, 195 | { 196 | "internalType": "uint256", 197 | "name": "addedValue", 198 | "type": "uint256" 199 | } 200 | ], 201 | "name": "increaseAllowance", 202 | "outputs": [ 203 | { 204 | "internalType": "bool", 205 | "name": "", 206 | "type": "bool" 207 | } 208 | ], 209 | "stateMutability": "nonpayable", 210 | "type": "function" 211 | }, 212 | { 213 | "inputs": [], 214 | "name": "name", 215 | "outputs": [ 216 | { 217 | "internalType": "string", 218 | "name": "", 219 | "type": "string" 220 | } 221 | ], 222 | "stateMutability": "view", 223 | "type": "function" 224 | }, 225 | { 226 | "inputs": [], 227 | "name": "symbol", 228 | "outputs": [ 229 | { 230 | "internalType": "string", 231 | "name": "", 232 | "type": "string" 233 | } 234 | ], 235 | "stateMutability": "view", 236 | "type": "function" 237 | }, 238 | { 239 | "inputs": [], 240 | "name": "totalSupply", 241 | "outputs": [ 242 | { 243 | "internalType": "uint256", 244 | "name": "", 245 | "type": "uint256" 246 | } 247 | ], 248 | "stateMutability": "view", 249 | "type": "function" 250 | }, 251 | { 252 | "inputs": [ 253 | { 254 | "internalType": "address", 255 | "name": "recipient", 256 | "type": "address" 257 | }, 258 | { 259 | "internalType": "uint256", 260 | "name": "amount", 261 | "type": "uint256" 262 | } 263 | ], 264 | "name": "transfer", 265 | "outputs": [ 266 | { 267 | "internalType": "bool", 268 | "name": "", 269 | "type": "bool" 270 | } 271 | ], 272 | "stateMutability": "nonpayable", 273 | "type": "function" 274 | }, 275 | { 276 | "inputs": [ 277 | { 278 | "internalType": "address", 279 | "name": "sender", 280 | "type": "address" 281 | }, 282 | { 283 | "internalType": "address", 284 | "name": "recipient", 285 | "type": "address" 286 | }, 287 | { 288 | "internalType": "uint256", 289 | "name": "amount", 290 | "type": "uint256" 291 | } 292 | ], 293 | "name": "transferFrom", 294 | "outputs": [ 295 | { 296 | "internalType": "bool", 297 | "name": "", 298 | "type": "bool" 299 | } 300 | ], 301 | "stateMutability": "nonpayable", 302 | "type": "function" 303 | } 304 | ] 305 | }, 306 | "presale": { 307 | "address": "0xaF91ae7125a35A1199add36Acfe80C8324f11969", 308 | "abi": [ 309 | { 310 | "inputs": [ 311 | { 312 | "internalType": "uint256", 313 | "name": "rate_", 314 | "type": "uint256" 315 | }, 316 | { 317 | "internalType": "uint256", 318 | "name": "maxBuy_", 319 | "type": "uint256" 320 | }, 321 | { 322 | "internalType": "uint256", 323 | "name": "startTime_", 324 | "type": "uint256" 325 | }, 326 | { 327 | "internalType": "uint256", 328 | "name": "endTime_", 329 | "type": "uint256" 330 | } 331 | ], 332 | "stateMutability": "nonpayable", 333 | "type": "constructor" 334 | }, 335 | { 336 | "anonymous": false, 337 | "inputs": [ 338 | { 339 | "indexed": false, 340 | "internalType": "address", 341 | "name": "_addressCoin", 342 | "type": "address" 343 | }, 344 | { 345 | "indexed": false, 346 | "internalType": "bool", 347 | "name": "_addRemove", 348 | "type": "bool" 349 | } 350 | ], 351 | "name": "AddStableCoin", 352 | "type": "event" 353 | }, 354 | { 355 | "anonymous": false, 356 | "inputs": [ 357 | { 358 | "indexed": true, 359 | "internalType": "address", 360 | "name": "buy", 361 | "type": "address" 362 | }, 363 | { 364 | "indexed": false, 365 | "internalType": "uint256", 366 | "name": "amount", 367 | "type": "uint256" 368 | } 369 | ], 370 | "name": "CoinClaimed", 371 | "type": "event" 372 | }, 373 | { 374 | "anonymous": false, 375 | "inputs": [ 376 | { 377 | "indexed": true, 378 | "internalType": "address", 379 | "name": "previousOwner", 380 | "type": "address" 381 | }, 382 | { 383 | "indexed": true, 384 | "internalType": "address", 385 | "name": "newOwner", 386 | "type": "address" 387 | } 388 | ], 389 | "name": "OwnershipTransferred", 390 | "type": "event" 391 | }, 392 | { 393 | "anonymous": false, 394 | "inputs": [ 395 | { 396 | "indexed": true, 397 | "internalType": "address", 398 | "name": "purchaser", 399 | "type": "address" 400 | }, 401 | { 402 | "indexed": true, 403 | "internalType": "address", 404 | "name": "beneficiary", 405 | "type": "address" 406 | }, 407 | { 408 | "indexed": false, 409 | "internalType": "uint256", 410 | "name": "value", 411 | "type": "uint256" 412 | }, 413 | { 414 | "indexed": false, 415 | "internalType": "uint256", 416 | "name": "amount", 417 | "type": "uint256" 418 | } 419 | ], 420 | "name": "TokensPurchased", 421 | "type": "event" 422 | }, 423 | { 424 | "anonymous": false, 425 | "inputs": [ 426 | { 427 | "indexed": false, 428 | "internalType": "uint256", 429 | "name": "maxBuy_", 430 | "type": "uint256" 431 | } 432 | ], 433 | "name": "UpdateBuyLimits", 434 | "type": "event" 435 | }, 436 | { 437 | "anonymous": false, 438 | "inputs": [ 439 | { 440 | "indexed": false, 441 | "internalType": "bool", 442 | "name": "_enable", 443 | "type": "bool" 444 | } 445 | ], 446 | "name": "UpdateEnableWhitelist", 447 | "type": "event" 448 | }, 449 | { 450 | "anonymous": false, 451 | "inputs": [ 452 | { 453 | "indexed": false, 454 | "internalType": "bool", 455 | "name": "state_", 456 | "type": "bool" 457 | } 458 | ], 459 | "name": "UpdatePauseState", 460 | "type": "event" 461 | }, 462 | { 463 | "anonymous": false, 464 | "inputs": [ 465 | { 466 | "indexed": false, 467 | "internalType": "uint256", 468 | "name": "rate_", 469 | "type": "uint256" 470 | } 471 | ], 472 | "name": "UpdateRate", 473 | "type": "event" 474 | }, 475 | { 476 | "anonymous": false, 477 | "inputs": [ 478 | { 479 | "indexed": false, 480 | "internalType": "uint256", 481 | "name": "startTime_", 482 | "type": "uint256" 483 | }, 484 | { 485 | "indexed": false, 486 | "internalType": "uint256", 487 | "name": "endTime_", 488 | "type": "uint256" 489 | } 490 | ], 491 | "name": "UpdateTiming", 492 | "type": "event" 493 | }, 494 | { 495 | "anonymous": false, 496 | "inputs": [ 497 | { 498 | "indexed": true, 499 | "internalType": "address", 500 | "name": "account", 501 | "type": "address" 502 | } 503 | ], 504 | "name": "UpdateWallet", 505 | "type": "event" 506 | }, 507 | { 508 | "anonymous": false, 509 | "inputs": [ 510 | { 511 | "indexed": true, 512 | "internalType": "address", 513 | "name": "_account", 514 | "type": "address" 515 | }, 516 | { 517 | "indexed": false, 518 | "internalType": "bool", 519 | "name": "_whitelist", 520 | "type": "bool" 521 | } 522 | ], 523 | "name": "UpdateWhitelist", 524 | "type": "event" 525 | }, 526 | { 527 | "inputs": [], 528 | "name": "_endTime", 529 | "outputs": [ 530 | { 531 | "internalType": "uint256", 532 | "name": "", 533 | "type": "uint256" 534 | } 535 | ], 536 | "stateMutability": "view", 537 | "type": "function" 538 | }, 539 | { 540 | "inputs": [], 541 | "name": "_maxBuy", 542 | "outputs": [ 543 | { 544 | "internalType": "uint256", 545 | "name": "", 546 | "type": "uint256" 547 | } 548 | ], 549 | "stateMutability": "view", 550 | "type": "function" 551 | }, 552 | { 553 | "inputs": [], 554 | "name": "_paused", 555 | "outputs": [ 556 | { 557 | "internalType": "bool", 558 | "name": "", 559 | "type": "bool" 560 | } 561 | ], 562 | "stateMutability": "view", 563 | "type": "function" 564 | }, 565 | { 566 | "inputs": [], 567 | "name": "_rate", 568 | "outputs": [ 569 | { 570 | "internalType": "uint256", 571 | "name": "", 572 | "type": "uint256" 573 | } 574 | ], 575 | "stateMutability": "view", 576 | "type": "function" 577 | }, 578 | { 579 | "inputs": [], 580 | "name": "_startTime", 581 | "outputs": [ 582 | { 583 | "internalType": "uint256", 584 | "name": "", 585 | "type": "uint256" 586 | } 587 | ], 588 | "stateMutability": "view", 589 | "type": "function" 590 | }, 591 | { 592 | "inputs": [], 593 | "name": "_totalSold", 594 | "outputs": [ 595 | { 596 | "internalType": "uint256", 597 | "name": "", 598 | "type": "uint256" 599 | } 600 | ], 601 | "stateMutability": "view", 602 | "type": "function" 603 | }, 604 | { 605 | "inputs": [], 606 | "name": "_wallet", 607 | "outputs": [ 608 | { 609 | "internalType": "address payable", 610 | "name": "", 611 | "type": "address" 612 | } 613 | ], 614 | "stateMutability": "view", 615 | "type": "function" 616 | }, 617 | { 618 | "inputs": [ 619 | { 620 | "internalType": "address", 621 | "name": "_addressCoin", 622 | "type": "address" 623 | }, 624 | { 625 | "internalType": "bool", 626 | "name": "_addRemove", 627 | "type": "bool" 628 | } 629 | ], 630 | "name": "addStableCoin", 631 | "outputs": [], 632 | "stateMutability": "nonpayable", 633 | "type": "function" 634 | }, 635 | { 636 | "inputs": [ 637 | { 638 | "internalType": "address[]", 639 | "name": "accounts", 640 | "type": "address[]" 641 | } 642 | ], 643 | "name": "addWhitelistInBulk", 644 | "outputs": [], 645 | "stateMutability": "nonpayable", 646 | "type": "function" 647 | }, 648 | { 649 | "inputs": [ 650 | { 651 | "internalType": "address", 652 | "name": "", 653 | "type": "address" 654 | } 655 | ], 656 | "name": "balance", 657 | "outputs": [ 658 | { 659 | "internalType": "uint256", 660 | "name": "", 661 | "type": "uint256" 662 | } 663 | ], 664 | "stateMutability": "view", 665 | "type": "function" 666 | }, 667 | { 668 | "inputs": [ 669 | { 670 | "internalType": "address", 671 | "name": "_coin", 672 | "type": "address" 673 | }, 674 | { 675 | "internalType": "uint256", 676 | "name": "amount", 677 | "type": "uint256" 678 | } 679 | ], 680 | "name": "buyWithStableCoin", 681 | "outputs": [], 682 | "stateMutability": "nonpayable", 683 | "type": "function" 684 | }, 685 | { 686 | "inputs": [ 687 | { 688 | "internalType": "uint256", 689 | "name": "", 690 | "type": "uint256" 691 | } 692 | ], 693 | "name": "buyers", 694 | "outputs": [ 695 | { 696 | "internalType": "address", 697 | "name": "", 698 | "type": "address" 699 | } 700 | ], 701 | "stateMutability": "view", 702 | "type": "function" 703 | }, 704 | { 705 | "inputs": [ 706 | { 707 | "internalType": "bool", 708 | "name": "state_", 709 | "type": "bool" 710 | } 711 | ], 712 | "name": "changePauseState", 713 | "outputs": [], 714 | "stateMutability": "nonpayable", 715 | "type": "function" 716 | }, 717 | { 718 | "inputs": [ 719 | { 720 | "internalType": "uint256", 721 | "name": "rate_", 722 | "type": "uint256" 723 | } 724 | ], 725 | "name": "changeRate", 726 | "outputs": [], 727 | "stateMutability": "nonpayable", 728 | "type": "function" 729 | }, 730 | { 731 | "inputs": [ 732 | { 733 | "internalType": "uint256", 734 | "name": "startTime_", 735 | "type": "uint256" 736 | }, 737 | { 738 | "internalType": "uint256", 739 | "name": "endTime_", 740 | "type": "uint256" 741 | } 742 | ], 743 | "name": "changeTimings", 744 | "outputs": [], 745 | "stateMutability": "nonpayable", 746 | "type": "function" 747 | }, 748 | { 749 | "inputs": [ 750 | { 751 | "internalType": "address payable", 752 | "name": "account", 753 | "type": "address" 754 | } 755 | ], 756 | "name": "changeWallet", 757 | "outputs": [], 758 | "stateMutability": "nonpayable", 759 | "type": "function" 760 | }, 761 | { 762 | "inputs": [ 763 | { 764 | "internalType": "address", 765 | "name": "_coin", 766 | "type": "address" 767 | } 768 | ], 769 | "name": "claimCoin", 770 | "outputs": [], 771 | "stateMutability": "nonpayable", 772 | "type": "function" 773 | }, 774 | { 775 | "inputs": [], 776 | "name": "enableWhitelist", 777 | "outputs": [ 778 | { 779 | "internalType": "bool", 780 | "name": "", 781 | "type": "bool" 782 | } 783 | ], 784 | "stateMutability": "view", 785 | "type": "function" 786 | }, 787 | { 788 | "inputs": [], 789 | "name": "geUnlockTime", 790 | "outputs": [ 791 | { 792 | "internalType": "uint256", 793 | "name": "", 794 | "type": "uint256" 795 | } 796 | ], 797 | "stateMutability": "view", 798 | "type": "function" 799 | }, 800 | { 801 | "inputs": [ 802 | { 803 | "internalType": "address", 804 | "name": "account", 805 | "type": "address" 806 | } 807 | ], 808 | "name": "getBalanceClaimable", 809 | "outputs": [ 810 | { 811 | "internalType": "uint256", 812 | "name": "", 813 | "type": "uint256" 814 | } 815 | ], 816 | "stateMutability": "view", 817 | "type": "function" 818 | }, 819 | { 820 | "inputs": [], 821 | "name": "getBuyerList", 822 | "outputs": [ 823 | { 824 | "internalType": "address[]", 825 | "name": "", 826 | "type": "address[]" 827 | } 828 | ], 829 | "stateMutability": "view", 830 | "type": "function" 831 | }, 832 | { 833 | "inputs": [ 834 | { 835 | "internalType": "uint256", 836 | "name": "time", 837 | "type": "uint256" 838 | } 839 | ], 840 | "name": "lock", 841 | "outputs": [], 842 | "stateMutability": "nonpayable", 843 | "type": "function" 844 | }, 845 | { 846 | "inputs": [], 847 | "name": "owner", 848 | "outputs": [ 849 | { 850 | "internalType": "address", 851 | "name": "", 852 | "type": "address" 853 | } 854 | ], 855 | "stateMutability": "view", 856 | "type": "function" 857 | }, 858 | { 859 | "inputs": [], 860 | "name": "renounceOwnership", 861 | "outputs": [], 862 | "stateMutability": "nonpayable", 863 | "type": "function" 864 | }, 865 | { 866 | "inputs": [ 867 | { 868 | "internalType": "uint256", 869 | "name": "maxBuy_", 870 | "type": "uint256" 871 | } 872 | ], 873 | "name": "setBuyLimit", 874 | "outputs": [], 875 | "stateMutability": "nonpayable", 876 | "type": "function" 877 | }, 878 | { 879 | "inputs": [ 880 | { 881 | "internalType": "address", 882 | "name": "", 883 | "type": "address" 884 | } 885 | ], 886 | "name": "stableCoin", 887 | "outputs": [ 888 | { 889 | "internalType": "bool", 890 | "name": "", 891 | "type": "bool" 892 | } 893 | ], 894 | "stateMutability": "view", 895 | "type": "function" 896 | }, 897 | { 898 | "inputs": [ 899 | { 900 | "internalType": "address", 901 | "name": "newOwner", 902 | "type": "address" 903 | } 904 | ], 905 | "name": "transferOwnership", 906 | "outputs": [], 907 | "stateMutability": "nonpayable", 908 | "type": "function" 909 | }, 910 | { 911 | "inputs": [], 912 | "name": "unlock", 913 | "outputs": [], 914 | "stateMutability": "nonpayable", 915 | "type": "function" 916 | }, 917 | { 918 | "inputs": [ 919 | { 920 | "internalType": "bool", 921 | "name": "_enable", 922 | "type": "bool" 923 | } 924 | ], 925 | "name": "updateEnableWhitelist", 926 | "outputs": [], 927 | "stateMutability": "nonpayable", 928 | "type": "function" 929 | }, 930 | { 931 | "inputs": [ 932 | { 933 | "internalType": "address", 934 | "name": "_account", 935 | "type": "address" 936 | }, 937 | { 938 | "internalType": "bool", 939 | "name": "_whitelist", 940 | "type": "bool" 941 | } 942 | ], 943 | "name": "updateWhitelist", 944 | "outputs": [], 945 | "stateMutability": "nonpayable", 946 | "type": "function" 947 | }, 948 | { 949 | "inputs": [ 950 | { 951 | "internalType": "address", 952 | "name": "", 953 | "type": "address" 954 | } 955 | ], 956 | "name": "whitelists", 957 | "outputs": [ 958 | { 959 | "internalType": "bool", 960 | "name": "", 961 | "type": "bool" 962 | } 963 | ], 964 | "stateMutability": "view", 965 | "type": "function" 966 | } 967 | ] 968 | } 969 | } -------------------------------------------------------------------------------- /src/contracts/contracts/97.json: -------------------------------------------------------------------------------- 1 | { 2 | "token": { 3 | "address": "0xFd9Fd678C8EF9a271862edCFc0402B38B665Af69", 4 | "abi": [ 5 | { 6 | "inputs": [ 7 | { 8 | "internalType": "string", 9 | "name": "name_", 10 | "type": "string" 11 | }, 12 | { 13 | "internalType": "string", 14 | "name": "symbol_", 15 | "type": "string" 16 | } 17 | ], 18 | "stateMutability": "nonpayable", 19 | "type": "constructor" 20 | }, 21 | { 22 | "anonymous": false, 23 | "inputs": [ 24 | { 25 | "indexed": true, 26 | "internalType": "address", 27 | "name": "owner", 28 | "type": "address" 29 | }, 30 | { 31 | "indexed": true, 32 | "internalType": "address", 33 | "name": "spender", 34 | "type": "address" 35 | }, 36 | { 37 | "indexed": false, 38 | "internalType": "uint256", 39 | "name": "value", 40 | "type": "uint256" 41 | } 42 | ], 43 | "name": "Approval", 44 | "type": "event" 45 | }, 46 | { 47 | "anonymous": false, 48 | "inputs": [ 49 | { 50 | "indexed": true, 51 | "internalType": "address", 52 | "name": "from", 53 | "type": "address" 54 | }, 55 | { 56 | "indexed": true, 57 | "internalType": "address", 58 | "name": "to", 59 | "type": "address" 60 | }, 61 | { 62 | "indexed": false, 63 | "internalType": "uint256", 64 | "name": "value", 65 | "type": "uint256" 66 | } 67 | ], 68 | "name": "Transfer", 69 | "type": "event" 70 | }, 71 | { 72 | "inputs": [ 73 | { 74 | "internalType": "address", 75 | "name": "owner", 76 | "type": "address" 77 | }, 78 | { 79 | "internalType": "address", 80 | "name": "spender", 81 | "type": "address" 82 | } 83 | ], 84 | "name": "allowance", 85 | "outputs": [ 86 | { 87 | "internalType": "uint256", 88 | "name": "", 89 | "type": "uint256" 90 | } 91 | ], 92 | "stateMutability": "view", 93 | "type": "function" 94 | }, 95 | { 96 | "inputs": [ 97 | { 98 | "internalType": "address", 99 | "name": "spender", 100 | "type": "address" 101 | }, 102 | { 103 | "internalType": "uint256", 104 | "name": "amount", 105 | "type": "uint256" 106 | } 107 | ], 108 | "name": "approve", 109 | "outputs": [ 110 | { 111 | "internalType": "bool", 112 | "name": "", 113 | "type": "bool" 114 | } 115 | ], 116 | "stateMutability": "nonpayable", 117 | "type": "function" 118 | }, 119 | { 120 | "inputs": [ 121 | { 122 | "internalType": "address", 123 | "name": "account", 124 | "type": "address" 125 | } 126 | ], 127 | "name": "balanceOf", 128 | "outputs": [ 129 | { 130 | "internalType": "uint256", 131 | "name": "", 132 | "type": "uint256" 133 | } 134 | ], 135 | "stateMutability": "view", 136 | "type": "function" 137 | }, 138 | { 139 | "inputs": [], 140 | "name": "decimals", 141 | "outputs": [ 142 | { 143 | "internalType": "uint8", 144 | "name": "", 145 | "type": "uint8" 146 | } 147 | ], 148 | "stateMutability": "view", 149 | "type": "function" 150 | }, 151 | { 152 | "inputs": [ 153 | { 154 | "internalType": "address", 155 | "name": "spender", 156 | "type": "address" 157 | }, 158 | { 159 | "internalType": "uint256", 160 | "name": "subtractedValue", 161 | "type": "uint256" 162 | } 163 | ], 164 | "name": "decreaseAllowance", 165 | "outputs": [ 166 | { 167 | "internalType": "bool", 168 | "name": "", 169 | "type": "bool" 170 | } 171 | ], 172 | "stateMutability": "nonpayable", 173 | "type": "function" 174 | }, 175 | { 176 | "inputs": [ 177 | { 178 | "internalType": "address", 179 | "name": "spender", 180 | "type": "address" 181 | }, 182 | { 183 | "internalType": "uint256", 184 | "name": "addedValue", 185 | "type": "uint256" 186 | } 187 | ], 188 | "name": "increaseAllowance", 189 | "outputs": [ 190 | { 191 | "internalType": "bool", 192 | "name": "", 193 | "type": "bool" 194 | } 195 | ], 196 | "stateMutability": "nonpayable", 197 | "type": "function" 198 | }, 199 | { 200 | "inputs": [], 201 | "name": "name", 202 | "outputs": [ 203 | { 204 | "internalType": "string", 205 | "name": "", 206 | "type": "string" 207 | } 208 | ], 209 | "stateMutability": "view", 210 | "type": "function" 211 | }, 212 | { 213 | "inputs": [], 214 | "name": "symbol", 215 | "outputs": [ 216 | { 217 | "internalType": "string", 218 | "name": "", 219 | "type": "string" 220 | } 221 | ], 222 | "stateMutability": "view", 223 | "type": "function" 224 | }, 225 | { 226 | "inputs": [], 227 | "name": "totalSupply", 228 | "outputs": [ 229 | { 230 | "internalType": "uint256", 231 | "name": "", 232 | "type": "uint256" 233 | } 234 | ], 235 | "stateMutability": "view", 236 | "type": "function" 237 | }, 238 | { 239 | "inputs": [ 240 | { 241 | "internalType": "address", 242 | "name": "to", 243 | "type": "address" 244 | }, 245 | { 246 | "internalType": "uint256", 247 | "name": "amount", 248 | "type": "uint256" 249 | } 250 | ], 251 | "name": "transfer", 252 | "outputs": [ 253 | { 254 | "internalType": "bool", 255 | "name": "", 256 | "type": "bool" 257 | } 258 | ], 259 | "stateMutability": "nonpayable", 260 | "type": "function" 261 | }, 262 | { 263 | "inputs": [ 264 | { 265 | "internalType": "address", 266 | "name": "from", 267 | "type": "address" 268 | }, 269 | { 270 | "internalType": "address", 271 | "name": "to", 272 | "type": "address" 273 | }, 274 | { 275 | "internalType": "uint256", 276 | "name": "amount", 277 | "type": "uint256" 278 | } 279 | ], 280 | "name": "transferFrom", 281 | "outputs": [ 282 | { 283 | "internalType": "bool", 284 | "name": "", 285 | "type": "bool" 286 | } 287 | ], 288 | "stateMutability": "nonpayable", 289 | "type": "function" 290 | } 291 | ] 292 | }, 293 | "presale": { 294 | "address": "0x4855861e14152B250FbeBF14b18eE29c806752fb", 295 | "abi": [ 296 | { 297 | "inputs": [ 298 | { 299 | "internalType": "uint256", 300 | "name": "rate_", 301 | "type": "uint256" 302 | }, 303 | { 304 | "internalType": "uint256", 305 | "name": "maxBuy_", 306 | "type": "uint256" 307 | }, 308 | { 309 | "internalType": "uint256", 310 | "name": "startTime_", 311 | "type": "uint256" 312 | }, 313 | { 314 | "internalType": "uint256", 315 | "name": "endTime_", 316 | "type": "uint256" 317 | }, 318 | { 319 | "internalType": "address", 320 | "name": "presaleToken_", 321 | "type": "address" 322 | } 323 | ], 324 | "stateMutability": "nonpayable", 325 | "type": "constructor" 326 | }, 327 | { 328 | "anonymous": false, 329 | "inputs": [ 330 | { 331 | "indexed": false, 332 | "internalType": "address", 333 | "name": "_addressCoin", 334 | "type": "address" 335 | }, 336 | { 337 | "indexed": false, 338 | "internalType": "bool", 339 | "name": "_addRemove", 340 | "type": "bool" 341 | } 342 | ], 343 | "name": "AddStableCoin", 344 | "type": "event" 345 | }, 346 | { 347 | "anonymous": false, 348 | "inputs": [ 349 | { 350 | "indexed": true, 351 | "internalType": "address", 352 | "name": "buy", 353 | "type": "address" 354 | }, 355 | { 356 | "indexed": false, 357 | "internalType": "uint256", 358 | "name": "amount", 359 | "type": "uint256" 360 | } 361 | ], 362 | "name": "CoinClaimed", 363 | "type": "event" 364 | }, 365 | { 366 | "anonymous": false, 367 | "inputs": [ 368 | { 369 | "indexed": true, 370 | "internalType": "address", 371 | "name": "previousOwner", 372 | "type": "address" 373 | }, 374 | { 375 | "indexed": true, 376 | "internalType": "address", 377 | "name": "newOwner", 378 | "type": "address" 379 | } 380 | ], 381 | "name": "OwnershipTransferred", 382 | "type": "event" 383 | }, 384 | { 385 | "anonymous": false, 386 | "inputs": [ 387 | { 388 | "indexed": true, 389 | "internalType": "address", 390 | "name": "purchaser", 391 | "type": "address" 392 | }, 393 | { 394 | "indexed": true, 395 | "internalType": "address", 396 | "name": "beneficiary", 397 | "type": "address" 398 | }, 399 | { 400 | "indexed": false, 401 | "internalType": "uint256", 402 | "name": "value", 403 | "type": "uint256" 404 | }, 405 | { 406 | "indexed": false, 407 | "internalType": "uint256", 408 | "name": "amount", 409 | "type": "uint256" 410 | } 411 | ], 412 | "name": "TokensPurchased", 413 | "type": "event" 414 | }, 415 | { 416 | "anonymous": false, 417 | "inputs": [ 418 | { 419 | "indexed": false, 420 | "internalType": "uint256", 421 | "name": "maxBuy_", 422 | "type": "uint256" 423 | } 424 | ], 425 | "name": "UpdateBuyLimits", 426 | "type": "event" 427 | }, 428 | { 429 | "anonymous": false, 430 | "inputs": [ 431 | { 432 | "indexed": false, 433 | "internalType": "bool", 434 | "name": "_enable", 435 | "type": "bool" 436 | } 437 | ], 438 | "name": "UpdateEnableWhitelist", 439 | "type": "event" 440 | }, 441 | { 442 | "anonymous": false, 443 | "inputs": [ 444 | { 445 | "indexed": false, 446 | "internalType": "bool", 447 | "name": "state_", 448 | "type": "bool" 449 | } 450 | ], 451 | "name": "UpdatePauseState", 452 | "type": "event" 453 | }, 454 | { 455 | "anonymous": false, 456 | "inputs": [ 457 | { 458 | "indexed": false, 459 | "internalType": "uint256", 460 | "name": "rate_", 461 | "type": "uint256" 462 | } 463 | ], 464 | "name": "UpdateRate", 465 | "type": "event" 466 | }, 467 | { 468 | "anonymous": false, 469 | "inputs": [ 470 | { 471 | "indexed": false, 472 | "internalType": "uint256", 473 | "name": "startTime_", 474 | "type": "uint256" 475 | }, 476 | { 477 | "indexed": false, 478 | "internalType": "uint256", 479 | "name": "endTime_", 480 | "type": "uint256" 481 | } 482 | ], 483 | "name": "UpdateTiming", 484 | "type": "event" 485 | }, 486 | { 487 | "anonymous": false, 488 | "inputs": [ 489 | { 490 | "indexed": true, 491 | "internalType": "address", 492 | "name": "account", 493 | "type": "address" 494 | } 495 | ], 496 | "name": "UpdateWallet", 497 | "type": "event" 498 | }, 499 | { 500 | "anonymous": false, 501 | "inputs": [ 502 | { 503 | "indexed": true, 504 | "internalType": "address", 505 | "name": "_account", 506 | "type": "address" 507 | }, 508 | { 509 | "indexed": false, 510 | "internalType": "bool", 511 | "name": "_whitelist", 512 | "type": "bool" 513 | } 514 | ], 515 | "name": "UpdateWhitelist", 516 | "type": "event" 517 | }, 518 | { 519 | "inputs": [], 520 | "name": "_endTime", 521 | "outputs": [ 522 | { 523 | "internalType": "uint256", 524 | "name": "", 525 | "type": "uint256" 526 | } 527 | ], 528 | "stateMutability": "view", 529 | "type": "function" 530 | }, 531 | { 532 | "inputs": [], 533 | "name": "_maxBuy", 534 | "outputs": [ 535 | { 536 | "internalType": "uint256", 537 | "name": "", 538 | "type": "uint256" 539 | } 540 | ], 541 | "stateMutability": "view", 542 | "type": "function" 543 | }, 544 | { 545 | "inputs": [], 546 | "name": "_paused", 547 | "outputs": [ 548 | { 549 | "internalType": "bool", 550 | "name": "", 551 | "type": "bool" 552 | } 553 | ], 554 | "stateMutability": "view", 555 | "type": "function" 556 | }, 557 | { 558 | "inputs": [], 559 | "name": "_presaleToken", 560 | "outputs": [ 561 | { 562 | "internalType": "address", 563 | "name": "", 564 | "type": "address" 565 | } 566 | ], 567 | "stateMutability": "view", 568 | "type": "function" 569 | }, 570 | { 571 | "inputs": [], 572 | "name": "_rate", 573 | "outputs": [ 574 | { 575 | "internalType": "uint256", 576 | "name": "", 577 | "type": "uint256" 578 | } 579 | ], 580 | "stateMutability": "view", 581 | "type": "function" 582 | }, 583 | { 584 | "inputs": [], 585 | "name": "_startTime", 586 | "outputs": [ 587 | { 588 | "internalType": "uint256", 589 | "name": "", 590 | "type": "uint256" 591 | } 592 | ], 593 | "stateMutability": "view", 594 | "type": "function" 595 | }, 596 | { 597 | "inputs": [], 598 | "name": "_totalSold", 599 | "outputs": [ 600 | { 601 | "internalType": "uint256", 602 | "name": "", 603 | "type": "uint256" 604 | } 605 | ], 606 | "stateMutability": "view", 607 | "type": "function" 608 | }, 609 | { 610 | "inputs": [], 611 | "name": "_wallet", 612 | "outputs": [ 613 | { 614 | "internalType": "address payable", 615 | "name": "", 616 | "type": "address" 617 | } 618 | ], 619 | "stateMutability": "view", 620 | "type": "function" 621 | }, 622 | { 623 | "inputs": [ 624 | { 625 | "internalType": "address", 626 | "name": "_addressCoin", 627 | "type": "address" 628 | }, 629 | { 630 | "internalType": "bool", 631 | "name": "_addRemove", 632 | "type": "bool" 633 | } 634 | ], 635 | "name": "addStableCoin", 636 | "outputs": [], 637 | "stateMutability": "nonpayable", 638 | "type": "function" 639 | }, 640 | { 641 | "inputs": [ 642 | { 643 | "internalType": "address[]", 644 | "name": "accounts", 645 | "type": "address[]" 646 | } 647 | ], 648 | "name": "addWhitelistInBulk", 649 | "outputs": [], 650 | "stateMutability": "nonpayable", 651 | "type": "function" 652 | }, 653 | { 654 | "inputs": [ 655 | { 656 | "internalType": "address", 657 | "name": "", 658 | "type": "address" 659 | } 660 | ], 661 | "name": "balance", 662 | "outputs": [ 663 | { 664 | "internalType": "uint256", 665 | "name": "", 666 | "type": "uint256" 667 | } 668 | ], 669 | "stateMutability": "view", 670 | "type": "function" 671 | }, 672 | { 673 | "inputs": [ 674 | { 675 | "internalType": "address", 676 | "name": "_coin", 677 | "type": "address" 678 | }, 679 | { 680 | "internalType": "uint256", 681 | "name": "amount", 682 | "type": "uint256" 683 | } 684 | ], 685 | "name": "buyWithStableCoin", 686 | "outputs": [], 687 | "stateMutability": "nonpayable", 688 | "type": "function" 689 | }, 690 | { 691 | "inputs": [ 692 | { 693 | "internalType": "uint256", 694 | "name": "", 695 | "type": "uint256" 696 | } 697 | ], 698 | "name": "buyers", 699 | "outputs": [ 700 | { 701 | "internalType": "address", 702 | "name": "", 703 | "type": "address" 704 | } 705 | ], 706 | "stateMutability": "view", 707 | "type": "function" 708 | }, 709 | { 710 | "inputs": [ 711 | { 712 | "internalType": "bool", 713 | "name": "state_", 714 | "type": "bool" 715 | } 716 | ], 717 | "name": "changePauseState", 718 | "outputs": [], 719 | "stateMutability": "nonpayable", 720 | "type": "function" 721 | }, 722 | { 723 | "inputs": [ 724 | { 725 | "internalType": "uint256", 726 | "name": "rate_", 727 | "type": "uint256" 728 | } 729 | ], 730 | "name": "changeRate", 731 | "outputs": [], 732 | "stateMutability": "nonpayable", 733 | "type": "function" 734 | }, 735 | { 736 | "inputs": [ 737 | { 738 | "internalType": "uint256", 739 | "name": "startTime_", 740 | "type": "uint256" 741 | }, 742 | { 743 | "internalType": "uint256", 744 | "name": "endTime_", 745 | "type": "uint256" 746 | } 747 | ], 748 | "name": "changeTimings", 749 | "outputs": [], 750 | "stateMutability": "nonpayable", 751 | "type": "function" 752 | }, 753 | { 754 | "inputs": [ 755 | { 756 | "internalType": "address payable", 757 | "name": "account", 758 | "type": "address" 759 | } 760 | ], 761 | "name": "changeWallet", 762 | "outputs": [], 763 | "stateMutability": "nonpayable", 764 | "type": "function" 765 | }, 766 | { 767 | "inputs": [ 768 | { 769 | "internalType": "address", 770 | "name": "_coin", 771 | "type": "address" 772 | } 773 | ], 774 | "name": "claimCoin", 775 | "outputs": [], 776 | "stateMutability": "nonpayable", 777 | "type": "function" 778 | }, 779 | { 780 | "inputs": [], 781 | "name": "enableWhitelist", 782 | "outputs": [ 783 | { 784 | "internalType": "bool", 785 | "name": "", 786 | "type": "bool" 787 | } 788 | ], 789 | "stateMutability": "view", 790 | "type": "function" 791 | }, 792 | { 793 | "inputs": [], 794 | "name": "geUnlockTime", 795 | "outputs": [ 796 | { 797 | "internalType": "uint256", 798 | "name": "", 799 | "type": "uint256" 800 | } 801 | ], 802 | "stateMutability": "view", 803 | "type": "function" 804 | }, 805 | { 806 | "inputs": [ 807 | { 808 | "internalType": "address", 809 | "name": "account", 810 | "type": "address" 811 | } 812 | ], 813 | "name": "getBalanceClaimable", 814 | "outputs": [ 815 | { 816 | "internalType": "uint256", 817 | "name": "", 818 | "type": "uint256" 819 | } 820 | ], 821 | "stateMutability": "view", 822 | "type": "function" 823 | }, 824 | { 825 | "inputs": [], 826 | "name": "getBuyerList", 827 | "outputs": [ 828 | { 829 | "internalType": "address[]", 830 | "name": "", 831 | "type": "address[]" 832 | } 833 | ], 834 | "stateMutability": "view", 835 | "type": "function" 836 | }, 837 | { 838 | "inputs": [ 839 | { 840 | "internalType": "uint256", 841 | "name": "time", 842 | "type": "uint256" 843 | } 844 | ], 845 | "name": "lock", 846 | "outputs": [], 847 | "stateMutability": "nonpayable", 848 | "type": "function" 849 | }, 850 | { 851 | "inputs": [], 852 | "name": "owner", 853 | "outputs": [ 854 | { 855 | "internalType": "address", 856 | "name": "", 857 | "type": "address" 858 | } 859 | ], 860 | "stateMutability": "view", 861 | "type": "function" 862 | }, 863 | { 864 | "inputs": [], 865 | "name": "renounceOwnership", 866 | "outputs": [], 867 | "stateMutability": "nonpayable", 868 | "type": "function" 869 | }, 870 | { 871 | "inputs": [ 872 | { 873 | "internalType": "uint256", 874 | "name": "maxBuy_", 875 | "type": "uint256" 876 | } 877 | ], 878 | "name": "setBuyLimit", 879 | "outputs": [], 880 | "stateMutability": "nonpayable", 881 | "type": "function" 882 | }, 883 | { 884 | "inputs": [ 885 | { 886 | "internalType": "address", 887 | "name": "presaleToken_", 888 | "type": "address" 889 | } 890 | ], 891 | "name": "setPresaleToken", 892 | "outputs": [], 893 | "stateMutability": "nonpayable", 894 | "type": "function" 895 | }, 896 | { 897 | "inputs": [ 898 | { 899 | "internalType": "address", 900 | "name": "", 901 | "type": "address" 902 | } 903 | ], 904 | "name": "stableCoin", 905 | "outputs": [ 906 | { 907 | "internalType": "bool", 908 | "name": "", 909 | "type": "bool" 910 | } 911 | ], 912 | "stateMutability": "view", 913 | "type": "function" 914 | }, 915 | { 916 | "inputs": [ 917 | { 918 | "internalType": "address", 919 | "name": "newOwner", 920 | "type": "address" 921 | } 922 | ], 923 | "name": "transferOwnership", 924 | "outputs": [], 925 | "stateMutability": "nonpayable", 926 | "type": "function" 927 | }, 928 | { 929 | "inputs": [], 930 | "name": "unlock", 931 | "outputs": [], 932 | "stateMutability": "nonpayable", 933 | "type": "function" 934 | }, 935 | { 936 | "inputs": [ 937 | { 938 | "internalType": "bool", 939 | "name": "_enable", 940 | "type": "bool" 941 | } 942 | ], 943 | "name": "updateEnableWhitelist", 944 | "outputs": [], 945 | "stateMutability": "nonpayable", 946 | "type": "function" 947 | }, 948 | { 949 | "inputs": [ 950 | { 951 | "internalType": "address", 952 | "name": "_account", 953 | "type": "address" 954 | }, 955 | { 956 | "internalType": "bool", 957 | "name": "_whitelist", 958 | "type": "bool" 959 | } 960 | ], 961 | "name": "updateWhitelist", 962 | "outputs": [], 963 | "stateMutability": "nonpayable", 964 | "type": "function" 965 | }, 966 | { 967 | "inputs": [ 968 | { 969 | "internalType": "address", 970 | "name": "", 971 | "type": "address" 972 | } 973 | ], 974 | "name": "whitelists", 975 | "outputs": [ 976 | { 977 | "internalType": "bool", 978 | "name": "", 979 | "type": "bool" 980 | } 981 | ], 982 | "stateMutability": "view", 983 | "type": "function" 984 | } 985 | ] 986 | } 987 | } -------------------------------------------------------------------------------- /src/contracts/index.js: -------------------------------------------------------------------------------- 1 | import { ethers } from "ethers"; 2 | 3 | import Contrats from "./contracts/97.json"; 4 | 5 | const supportChainId = 97; 6 | 7 | const RPCS = { 8 | 1: "http://13.59.118.124/eth", 9 | 56: "https://bsc-dataseed.binance.org/", 10 | 97: "https://data-seed-prebsc-1-s1.binance.org:8545/", 11 | 250: "https://rpc.ftm.tools/", 12 | 4002: "https://rpc.testnet.fantom.network", 13 | 26: "https://mainnet-rpc.icicbchain.org", 14 | 417: "https://testnet-rpc.icicbchain.org", 15 | 1337: "http://localhost:7545", 16 | 31337: "http://localhost:8545/", 17 | 4: "https://rinkeby.infura.io/v3/580d6de4d2694cbdbee111d2f553dbcc" 18 | } 19 | 20 | const providers = { 21 | 1: new ethers.providers.JsonRpcProvider(RPCS[1]), 22 | 56: new ethers.providers.JsonRpcProvider(RPCS[56]), 23 | 250: new ethers.providers.JsonRpcProvider(RPCS[250]), 24 | 4002: new ethers.providers.JsonRpcProvider(RPCS[4002]), 25 | 26: new ethers.providers.JsonRpcProvider(RPCS[26]), 26 | 417: new ethers.providers.JsonRpcProvider(RPCS[417]), 27 | 4: new ethers.providers.JsonRpcProvider(RPCS[4]), 28 | 97: new ethers.providers.JsonRpcProvider(RPCS[97]) 29 | // 31337: new ethers.providers.JsonRpcProvider(RPCS[31337]) 30 | } 31 | 32 | const ERCContract = (e) => { 33 | const result = new ethers.Contract( 34 | e, Contrats.token.abi, providers[supportChainId] 35 | ) 36 | return result; 37 | } 38 | const presaleContract = new ethers.Contract(Contrats.presale.address, Contrats.presale.abi, providers[supportChainId]); 39 | 40 | export { 41 | providers, ERCContract, presaleContract, Contrats 42 | } -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | 6 | iframe { 7 | z-index: -99999999 !important; 8 | } 9 | 10 | .rs-btn-default { 11 | display: flex !important; 12 | align-items: center; 13 | } 14 | 15 | .rs-dropdown-menu { 16 | position: absolute; 17 | width: 93px; 18 | } 19 | 20 | .dark .rs-btn-default { 21 | display: flex !important; 22 | align-items: center; 23 | background-color: #161616 !important; 24 | color: #fff !important; 25 | border-radius: 0; 26 | outline: none; 27 | border: 0; 28 | } 29 | 30 | .light .rs-btn-default { 31 | display: flex !important; 32 | align-items: center; 33 | color: #0F0F0F !important; 34 | background-color: #F6F6F6 !important; 35 | border-radius: 0; 36 | outline: none; 37 | border: 0; 38 | } 39 | 40 | .light .rs-dropdown-menu { 41 | position: absolute; 42 | width: 93px; 43 | background-color: #F6F6F6; 44 | color: #0F0F0F !important; 45 | } 46 | 47 | .dark .rs-dropdown-menu { 48 | position: absolute; 49 | width: 94px; 50 | background-color: #161616; 51 | color: #F6F6F6 !important; 52 | } 53 | 54 | 55 | .rs-dropdown-toggle-caret { 56 | display: flex; 57 | -ms-flex-align: center; 58 | align-items: center; 59 | margin-left: 2px; 60 | position: absolute; 61 | top: 9px !important; 62 | right: 0px !important; 63 | height: 20px !important; 64 | font-size: 10px !important; 65 | } 66 | 67 | .rs-dropdown-toggle, 68 | .rs-dropdown-toggle.rs-btn { 69 | padding-right: 15px; 70 | } 71 | 72 | .busd-placement-bottom-start button, 73 | .usd-placement-bottom-start button { 74 | padding-right: 15px !important; 75 | } 76 | 77 | .rs-dropdown-toggle-icon { 78 | margin-right: 10px !important; 79 | } 80 | 81 | .rs-dropdown-item { 82 | display: flex !important; 83 | justify-content: center; 84 | align-items: center; 85 | } 86 | 87 | .dark .rs-dropdown-item { 88 | color: #F6F6F6; 89 | } 90 | 91 | .dark body { 92 | background-color: #0F0F0F; 93 | } 94 | 95 | .light body { 96 | background-color: #F6F6F6; 97 | } 98 | 99 | .rs-dropdown-item-menu-icon { 100 | height: 22px; 101 | width: 22px; 102 | margin-right: 10px; 103 | } 104 | 105 | .rs-dropdown-toggle-icon { 106 | width: 22px; 107 | height: 22px; 108 | } 109 | 110 | .hide-dropdown .rs-dropdown-toggle-caret { 111 | display: none; 112 | } 113 | 114 | .hide-dropdown .rs-dropdown-menu { 115 | display: none; 116 | } 117 | 118 | .hide-dropdown button { 119 | -webkit-transition: none !important; 120 | -moz-transition: none !important; 121 | -o-transition: none !important; 122 | transition: none !important; 123 | cursor: default !important; 124 | background: none !important; 125 | outline: none !important; 126 | background-image: none !important; 127 | 128 | } 129 | 130 | .hide-dropdown button:active { 131 | border-style: outset; 132 | -webkit-transition: none !important; 133 | -moz-transition: none !important; 134 | -o-transition: none !important; 135 | transition: none !important; 136 | } 137 | 138 | .hide-dropdown .rs-ripple { 139 | display: none; 140 | } 141 | 142 | /* 143 | .hide-dropdown button.active.focus, button.active:focus, 144 | button.focus, button:active.focus, 145 | button:active:focus, button:focus { 146 | outline: none; 147 | box-shadow: none; 148 | background-color: white; 149 | } */ 150 | 151 | 152 | 153 | @media(max-width:500px) { 154 | 155 | .hide-dropdown button, 156 | .show-dropdown button { 157 | overflow: inherit !important; 158 | } 159 | 160 | .usd-placement-bottom-start button { 161 | padding-right: 36px !important; 162 | } 163 | } -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import './index.css'; 4 | import App from './App'; 5 | import reportWebVitals from './reportWebVitals'; 6 | 7 | const root = ReactDOM.createRoot(document.getElementById('root')); 8 | root.render( 9 | 10 | 11 | 12 | ); 13 | 14 | // If you want to start measuring performance in your app, pass a function 15 | // to log results (for example: reportWebVitals(console.log)) 16 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 17 | reportWebVitals(); 18 | -------------------------------------------------------------------------------- /src/lib/chains.js: -------------------------------------------------------------------------------- 1 | 2 | export const CHAIN_ID_ETHEREUM = 1; 3 | export const CHAIN_ID_ETHEREUM_HEX = '0x1'; 4 | export const CHAIN_ID_BSC_TESTNET = 97; 5 | export const CHAIN_ID_BSC_TESTNET_HEX = '0x61'; 6 | 7 | // export const DEFAULT_CHAIN_ID = CHAIN_ID_ETHEREUM; 8 | // export const DEFAULT_CHAIN_ID_HEX = CHAIN_ID_ETHEREUM_HEX; 9 | export const DEFAULT_CHAIN_ID = CHAIN_ID_BSC_TESTNET; 10 | export const DEFAULT_CHAIN_ID_HEX = CHAIN_ID_BSC_TESTNET_HEX; 11 | 12 | const supportedChains = [ 13 | { 14 | name: 'Ethereum Mainnet', 15 | short_name: 'eth', 16 | chain: 'ETH', 17 | network: 'mainnet', 18 | chain_id: CHAIN_ID_ETHEREUM, 19 | network_id: 1, 20 | rpc_url: 'https://mainnet.infura.io/v3/%API_KEY%', 21 | native_currency: { 22 | symbol: 'ETH', 23 | name: 'Ethereum', 24 | decimals: '18', 25 | contractAddress: '', 26 | balance: '', 27 | }, 28 | }, 29 | // { 30 | // name: 'Ethereum Ropsten', 31 | // short_name: 'rop', 32 | // chain: 'ETH', 33 | // network: 'ropsten', 34 | // chain_id: 3, 35 | // network_id: 3, 36 | // rpc_url: 'https://ropsten.infura.io/v3/%API_KEY%', 37 | // native_currency: { 38 | // symbol: 'ETH', 39 | // name: 'Ethereum', 40 | // decimals: '18', 41 | // contractAddress: '', 42 | // balance: '', 43 | // }, 44 | // }, 45 | // { 46 | // name: 'Ethereum Rinkeby', 47 | // short_name: 'rin', 48 | // chain: 'ETH', 49 | // network: 'rinkeby', 50 | // chain_id: 4, 51 | // network_id: 4, 52 | // rpc_url: 'https://rinkeby.infura.io/v3/%API_KEY%', 53 | // native_currency: { 54 | // symbol: 'ETH', 55 | // name: 'Ethereum', 56 | // decimals: '18', 57 | // contractAddress: '', 58 | // balance: '', 59 | // }, 60 | // }, 61 | // { 62 | // name: 'Ethereum Görli', 63 | // short_name: 'gor', 64 | // chain: 'ETH', 65 | // network: 'goerli', 66 | // chain_id: 5, 67 | // network_id: 5, 68 | // rpc_url: 'https://goerli.infura.io/v3/%API_KEY%', 69 | // native_currency: { 70 | // symbol: 'ETH', 71 | // name: 'Ethereum', 72 | // decimals: '18', 73 | // contractAddress: '', 74 | // balance: '', 75 | // }, 76 | // }, 77 | // { 78 | // name: 'RSK Mainnet', 79 | // short_name: 'rsk', 80 | // chain: 'RSK', 81 | // network: 'mainnet', 82 | // chain_id: 30, 83 | // network_id: 30, 84 | // rpc_url: 'https://public-node.rsk.co', 85 | // native_currency: { 86 | // symbol: 'RSK', 87 | // name: 'RSK', 88 | // decimals: '18', 89 | // contractAddress: '', 90 | // balance: '', 91 | // }, 92 | // }, 93 | // { 94 | // name: 'Ethereum Kovan', 95 | // short_name: 'kov', 96 | // chain: 'ETH', 97 | // network: 'kovan', 98 | // chain_id: 42, 99 | // network_id: 42, 100 | // rpc_url: 'https://kovan.infura.io/v3/%API_KEY%', 101 | // native_currency: { 102 | // symbol: 'ETH', 103 | // name: 'Ethereum', 104 | // decimals: '18', 105 | // contractAddress: '', 106 | // balance: '', 107 | // }, 108 | // }, 109 | // { 110 | // name: 'Ethereum Classic Mainnet', 111 | // short_name: 'etc', 112 | // chain: 'ETC', 113 | // network: 'mainnet', 114 | // chain_id: 61, 115 | // network_id: 1, 116 | // rpc_url: 'https://ethereumclassic.network', 117 | // native_currency: { 118 | // symbol: 'ETH', 119 | // name: 'Ethereum', 120 | // decimals: '18', 121 | // contractAddress: '', 122 | // balance: '', 123 | // }, 124 | // }, 125 | // { 126 | // name: 'POA Network Sokol', 127 | // short_name: 'poa', 128 | // chain: 'POA', 129 | // network: 'sokol', 130 | // chain_id: 77, 131 | // network_id: 77, 132 | // rpc_url: 'https://sokol.poa.network', 133 | // native_currency: { 134 | // symbol: 'POA', 135 | // name: 'POA', 136 | // decimals: '18', 137 | // contractAddress: '', 138 | // balance: '', 139 | // }, 140 | // }, 141 | // { 142 | // name: 'POA Network Core', 143 | // short_name: 'skl', 144 | // chain: 'POA', 145 | // network: 'core', 146 | // chain_id: 99, 147 | // network_id: 99, 148 | // rpc_url: 'https://core.poa.network', 149 | // native_currency: { 150 | // symbol: 'POA', 151 | // name: 'POA', 152 | // decimals: '18', 153 | // contractAddress: '', 154 | // balance: '', 155 | // }, 156 | // }, 157 | // { 158 | // name: 'xDAI Chain', 159 | // short_name: 'xdai', 160 | // chain: 'POA', 161 | // network: 'dai', 162 | // chain_id: 100, 163 | // network_id: 100, 164 | // rpc_url: 'https://dai.poa.network', 165 | // native_currency: { 166 | // symbol: 'xDAI', 167 | // name: 'xDAI', 168 | // decimals: '18', 169 | // contractAddress: '', 170 | // balance: '', 171 | // }, 172 | // }, 173 | // { 174 | // name: 'Callisto Mainnet', 175 | // short_name: 'clo', 176 | // chain: 'callisto', 177 | // network: 'mainnet', 178 | // chain_id: 820, 179 | // network_id: 1, 180 | // rpc_url: 'https://clo-geth.0xinfra.com/', 181 | // native_currency: { 182 | // symbol: 'CLO', 183 | // name: 'CLO', 184 | // decimals: '18', 185 | // contractAddress: '', 186 | // balance: '', 187 | // }, 188 | // }, 189 | { 190 | name: 'Binance Smart Chain', 191 | short_name: 'bsc', 192 | chain: 'smartchain', 193 | network: 'mainnet', 194 | chain_id: 56, 195 | network_id: 56, 196 | rpc_url: 'https://bsc-dataseed1.defibit.io/', 197 | native_currency: { 198 | symbol: 'BNB', 199 | name: 'BNB', 200 | decimals: '18', 201 | contractAddress: '', 202 | balance: '', 203 | }, 204 | }, 205 | ] 206 | 207 | export default supportedChains 208 | -------------------------------------------------------------------------------- /src/locales/en-US.json: -------------------------------------------------------------------------------- 1 | { 2 | "lang": "En", 3 | "buy_cxs": "Buy CXS Coin", 4 | "select_wallet": "Connect your Wallet", 5 | "address": "Address", 6 | "wallet.connect": "Connect", 7 | "connectwallet": "Please connect Wallet", 8 | "you_pay": "You pay", 9 | "my_balance": "My Balance", 10 | "receive": "You receive", 11 | "cxs_bal": "My CXS Balance", 12 | "validate": "VALIDATE", 13 | "mail": "Mail", 14 | "good": "Good morning", 15 | "connect": "Connect Wallet", 16 | "presale": "Presale" 17 | } -------------------------------------------------------------------------------- /src/locales/fr-FR.json: -------------------------------------------------------------------------------- 1 | { 2 | "lang": "Fr", 3 | "buy_cxs": "Acheter des CXS", 4 | "select_wallet": "Connecter votre wallet", 5 | "connectwallet": "Veuillez connecter le portefeuille", 6 | "address": "Adresse", 7 | "you_pay": "Vous Payez", 8 | "my_balance": "Ma balance", 9 | "receive": "Vous recevez", 10 | "cxs_bal": "Ma balance CXS", 11 | "validate": "VALIDER", 12 | "presale": "Prévente", 13 | "mail": "Mail", 14 | "good": "Bonjour", 15 | "connect": "Connecter le Wallet" 16 | } -------------------------------------------------------------------------------- /src/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/reportWebVitals.js: -------------------------------------------------------------------------------- 1 | const reportWebVitals = onPerfEntry => { 2 | if (onPerfEntry && onPerfEntry instanceof Function) { 3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { 4 | getCLS(onPerfEntry); 5 | getFID(onPerfEntry); 6 | getFCP(onPerfEntry); 7 | getLCP(onPerfEntry); 8 | getTTFB(onPerfEntry); 9 | }); 10 | } 11 | }; 12 | 13 | export default reportWebVitals; 14 | -------------------------------------------------------------------------------- /src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /src/utils/index.js: -------------------------------------------------------------------------------- 1 | 2 | import { ethers } from "ethers" 3 | 4 | /** 5 | * set delay for delayTimes 6 | * @param {Number} delayTimes - timePeriod for delay 7 | */ 8 | function delay(delayTimes) { 9 | return new Promise(resolve => { 10 | setTimeout(() => { 11 | resolve(2); 12 | }, delayTimes); 13 | }); 14 | } 15 | 16 | /** 17 | * change data type from Number to BigNum 18 | * @param {Number} value - data that need to be change 19 | * @param {Number} d - decimals 20 | */ 21 | function toBigNum(value, d) { 22 | return ethers.utils.parseUnits(Number(value).toFixed(d), d); 23 | } 24 | 25 | /** 26 | * change data type from BigNum to Number 27 | * @param {Number} value - data that need to be change 28 | * @param {Number} d - decimals 29 | */ 30 | function fromBigNum(value, d) { 31 | return parseFloat(ethers.utils.formatUnits(value, d)); 32 | } 33 | 34 | const toHex = (num) => { 35 | const val = Number(num); 36 | return "0x" + val.toString(16); 37 | }; 38 | 39 | export { delay, toBigNum, fromBigNum, toHex }; --------------------------------------------------------------------------------