├── .gitignore
├── README.md
├── api
├── abi
│ └── abi.js
├── index.js
└── package.json
├── build
├── asset-manifest.json
├── bscbridge.js
├── favicon.ico
├── fire.png
├── index.html
├── logo192.png
├── logo512.png
├── logos
│ ├── bnb.png
│ ├── cake.png
│ └── grt.png
├── manifest.json
├── mushroom-move.gif
├── mushroom.png
├── robots.txt
├── spore_128.png
├── spore_256.png
├── static
│ ├── css
│ │ ├── main.bc8230ef.chunk.css
│ │ └── main.bc8230ef.chunk.css.map
│ ├── js
│ │ ├── 2.2e3059a9.chunk.js
│ │ ├── 2.2e3059a9.chunk.js.LICENSE.txt
│ │ ├── 2.2e3059a9.chunk.js.map
│ │ ├── 3.e7f8ec98.chunk.js
│ │ ├── 3.e7f8ec98.chunk.js.map
│ │ ├── main.9535895a.chunk.js
│ │ ├── main.9535895a.chunk.js.map
│ │ ├── runtime-main.9193d564.js
│ │ └── runtime-main.9193d564.js.map
│ └── media
│ │ └── how_to_buy.d27bfe52.pdf
├── téléchargement-2.png
└── téléchargement-3.png
├── package-lock.json
├── package.json
├── public
├── avalanche-logo.png
├── binance-logo.png
├── bscbridge.js
├── favicon.ico
├── fire.png
├── index.html
├── logo192.png
├── logo512.png
├── logos
│ ├── bnb.png
│ ├── cake.png
│ ├── grt.png
│ ├── spore32x32.jpeg
│ └── spore32x32.png
├── manifest.json
├── mushroom-move.gif
├── mushroom.png
├── robots.txt
├── spore_128.png
├── spore_256.png
├── telegramproof.png
├── téléchargement-2.png
└── téléchargement-3.png
├── src
├── App.css
├── App.tsx
├── Router.tsx
├── components
│ ├── BSCBridge.css
│ ├── BSCBridge.tsx
│ ├── BurnedTokens.css
│ ├── BurnedTokens.tsx
│ ├── ComingSoon.tsx
│ ├── Information.css
│ ├── Information.tsx
│ ├── Particles.tsx
│ ├── PriceToken.tsx
│ ├── contributors.css
│ ├── contributors.tsx
│ └── layout
│ │ ├── Footer.css
│ │ ├── Footer.tsx
│ │ ├── Header.css
│ │ └── Header.tsx
├── index.css
├── index.tsx
├── react-app-env.d.ts
├── reportWebVitals.ts
├── setupTests.ts
└── utils
│ ├── SPORE.png
│ ├── SporeAbi.ts
│ ├── background.png
│ ├── coming-soon.json
│ ├── how_to_buy.pdf
│ └── logovector.png
├── test
└── App.test.tsx
├── tsconfig.json
├── yarn-error.log
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /yarn.lock
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Spore : a greedless ecosystem bringing innovative minds together
2 |
3 | ## Welcome to the Github Repo of [Spore](http://spore.earth/)
4 |
5 | The ultra-deflationary inter-blockchain token frictionless rewards in the Avalanche ecosystem, a bridge Avalanche/Binance Smart Chain, an ultra deflationary 6% burn on every transaction on the Binance Smart chain ecosystem, and many more features in development.
6 |
7 | ### How can we develop so many things?
8 |
9 | In our discord server we are developing constantly in a completely organic manner, in SPORE there is no single "dev" team, we are all proposing and developing in what it could look as a *disorganized* manner, but in reality it is a completely organic way. SPORE spreads and finds new environments in where to develop and flourish, in a similar way as living organisms do.
10 |
11 | **Want to contribute?** Join us in or discord and discover how we as a collective can push blockchain technology to the next level. [https://discord.gg/s82gKcaY](https://discord.gg/s82gKcaY)
12 |
--------------------------------------------------------------------------------
/api/abi/abi.js:
--------------------------------------------------------------------------------
1 | const abi_erc20 = [
2 | {
3 | "constant":true,
4 | "inputs":[
5 |
6 | ],
7 | "name":"token0",
8 | "outputs":[
9 | {
10 | "name":"",
11 | "type":"address"
12 | }
13 | ],
14 | "payable":false,
15 | "type":"function"
16 | },
17 | {
18 | "constant":true,
19 | "inputs":[
20 |
21 | ],
22 | "name":"token1",
23 | "outputs":[
24 | {
25 | "name":"",
26 | "type":"address"
27 | }
28 | ],
29 | "payable":false,
30 | "type":"function"
31 | },
32 | {
33 | "constant":true,
34 | "inputs":[
35 |
36 | ],
37 | "name":"name",
38 | "outputs":[
39 | {
40 | "name":"",
41 | "type":"string"
42 | }
43 | ],
44 | "payable":false,
45 | "type":"function"
46 | },
47 | {
48 | "constant":true,
49 | "inputs":[
50 |
51 | ],
52 | "name":"name",
53 | "outputs":[
54 | {
55 | "name":"",
56 | "type":"string"
57 | }
58 | ],
59 | "payable":false,
60 | "type":"function"
61 | },
62 | {
63 | "constant":true,
64 | "inputs":[
65 |
66 | ],
67 | "name":"owner",
68 | "outputs":[
69 | {
70 | "name":"",
71 | "type":"address"
72 | }
73 | ],
74 | "payable":false,
75 | "type":"function"
76 | },
77 | {
78 | "constant":true,
79 | "inputs":[
80 |
81 | ],
82 | "name":"decimals",
83 | "outputs":[
84 | {
85 | "name":"",
86 | "type":"uint8"
87 | }
88 | ],
89 | "payable":false,
90 | "type":"function"
91 | },
92 | {
93 | "constant":true,
94 | "inputs":[
95 | {
96 | "name":"_owner",
97 | "type":"address"
98 | }
99 | ],
100 | "name":"balanceOf",
101 | "outputs":[
102 | {
103 | "name":"balance",
104 | "type":"uint256"
105 | }
106 | ],
107 | "payable":false,
108 | "type":"function"
109 | },
110 | {
111 | "constant":true,
112 | "inputs":[
113 |
114 | ],
115 | "name":"symbol",
116 | "outputs":[
117 | {
118 | "name":"",
119 | "type":"string"
120 | }
121 | ],
122 | "payable":false,
123 | "type":"function"
124 | },
125 | {
126 | "constant":true,
127 | "inputs":[
128 |
129 | ],
130 | "name":"totalFees",
131 | "outputs":[
132 | {
133 | "name":"",
134 | "type":"uint256"
135 | }
136 | ],
137 | "payable":false,
138 | "type":"function"
139 | },
140 | {
141 | "constant":true,
142 | "inputs":[
143 |
144 | ],
145 | "name":"burned",
146 | "outputs":[
147 | {
148 | "name":"",
149 | "type":"uint256"
150 | }
151 | ],
152 | "payable":false,
153 | "type":"function"
154 | },
155 | {
156 | "constant":true,
157 | "inputs":[
158 |
159 | ],
160 | "name":"totalSupply",
161 | "outputs":[
162 | {
163 | "name":"",
164 | "type":"uint256"
165 | }
166 | ],
167 | "payable":false,
168 | "type":"function"
169 | }
170 | ]
171 |
172 | export { abi_erc20 }
--------------------------------------------------------------------------------
/api/index.js:
--------------------------------------------------------------------------------
1 | import { abi_erc20 } from './abi/abi';
2 | import Web3 from 'web3';
3 |
4 | const bsc = new Web3('https://bsc-dataseed1.binance.org');
5 | const ava = new Web3('https://api.avax.network/ext/bc/C/rpc');
6 |
7 | const tokens = [
8 | {
9 | bsc: '0x33a3d962955a3862c8093d1273344719f03ca17c',
10 | id: '0x6e7f5C0b9f4432716bDd0a77a3601291b9D9e985',
11 | avaburn: '0x000000000000000000000000000000000000dEaD'
12 | }
13 | ];
14 |
15 | const find_token = (tokens, filter) => {
16 | return tokens.filter(t => { return t[filter.key].toLowerCase() === filter.value.toLowerCase()})[0]
17 | }
18 |
19 |
20 | const populate = (token) => {
21 | return Promise.all([
22 | new ava.eth.Contract(abi_erc20, token.id).methods.totalSupply().call().then( result => {
23 | return parseInt(result)
24 | }).catch(err => {
25 | console.log('no supply:', err)
26 | }),
27 | new ava.eth.Contract(abi_erc20, token.id).methods.decimals().call().then( result => {
28 | token.decimals = parseInt(result)
29 | }).catch(err => {
30 | console.log('no decimals:', err)
31 | }),
32 | new ava.eth.Contract(abi_erc20, token.id).methods.name().call().then( result => {
33 | token.name = result
34 | }),
35 | new ava.eth.Contract(abi_erc20, token.id).methods.symbol().call().then( result => {
36 | token.symbol = result
37 | }),
38 | new ava.eth.Contract(abi_erc20, token.id).methods.owner().call().then( result => {
39 | token.owner = result
40 | }).catch(err => {
41 | //console.log('no owner:', err)
42 | }),
43 | new ava.eth.Contract(abi_erc20, token.id).methods.totalFees().call().then( result => {
44 | token.totalFees = result / 1e18
45 | }).catch(err => {
46 | //console.log('no total fees:', err)
47 | })
48 | ]).then(results => {
49 | if ( token.decimals !== 18 ) {
50 | console.log(token.symbol, 'decimals:', token.decimals)
51 | }
52 | token.totalSupply = results[0] / 10 ** token.decimals
53 | return token
54 | })
55 | }
56 |
57 |
58 | export default async function (req,res) {
59 | await populate(tokens[0]);
60 | let spore = find_token(tokens, {key:'symbol', value: 'spore'})
61 | let bscBurned = await new bsc.eth.Contract(abi_erc20, spore.bsc).methods.burned().call();
62 | let avaBurned = await new ava.eth.Contract(abi_erc20, spore.id).methods.balanceOf(spore.avaburn).call();
63 |
64 | let report = {
65 | bscBurned: bscBurned / 10 ** spore.decimals,
66 | avaBurned: avaBurned / 10 ** spore.decimals
67 | };
68 |
69 | report.circulatingSupply = spore.totalSupply - report.avaBurned - report.bscBurned; // - spore.totalFees / 2
70 | spore = Object.assign({}, spore, report);
71 |
72 | delete spore.bsc;
73 | delete spore.avaburn;
74 | delete spore.decimals;
75 | delete spore.owner;
76 | delete spore.totalSupply;
77 | res.json(spore);
78 | };
--------------------------------------------------------------------------------
/api/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "spore-api",
3 | "version": "1.0.0",
4 | "main": "spore.js",
5 | "author": "badangrycloud",
6 | "license": "MIT",
7 | "dependencies": {
8 | "web3": "^1.3.4"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/build/asset-manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": {
3 | "main.css": "/static/css/main.bc8230ef.chunk.css",
4 | "main.js": "/static/js/main.9535895a.chunk.js",
5 | "main.js.map": "/static/js/main.9535895a.chunk.js.map",
6 | "runtime-main.js": "/static/js/runtime-main.9193d564.js",
7 | "runtime-main.js.map": "/static/js/runtime-main.9193d564.js.map",
8 | "static/js/2.2e3059a9.chunk.js": "/static/js/2.2e3059a9.chunk.js",
9 | "static/js/2.2e3059a9.chunk.js.map": "/static/js/2.2e3059a9.chunk.js.map",
10 | "static/js/3.e7f8ec98.chunk.js": "/static/js/3.e7f8ec98.chunk.js",
11 | "static/js/3.e7f8ec98.chunk.js.map": "/static/js/3.e7f8ec98.chunk.js.map",
12 | "index.html": "/index.html",
13 | "static/css/main.bc8230ef.chunk.css.map": "/static/css/main.bc8230ef.chunk.css.map",
14 | "static/js/2.2e3059a9.chunk.js.LICENSE.txt": "/static/js/2.2e3059a9.chunk.js.LICENSE.txt",
15 | "static/media/how_to_buy.d27bfe52.pdf": "/static/media/how_to_buy.d27bfe52.pdf"
16 | },
17 | "entrypoints": [
18 | "static/js/runtime-main.9193d564.js",
19 | "static/js/2.2e3059a9.chunk.js",
20 | "static/css/main.bc8230ef.chunk.css",
21 | "static/js/main.9535895a.chunk.js"
22 | ]
23 | }
--------------------------------------------------------------------------------
/build/bscbridge.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function() {
2 | $("#btn-arrow").on("click", function() {
3 | $(this).toggleClass("reverted");
4 | $(".col-coin").toggleClass("d-none");
5 | });
6 | });
--------------------------------------------------------------------------------
/build/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/build/favicon.ico
--------------------------------------------------------------------------------
/build/fire.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/build/fire.png
--------------------------------------------------------------------------------
/build/index.html:
--------------------------------------------------------------------------------
1 |
Spore Finance You need to enable JavaScript to run this app.
--------------------------------------------------------------------------------
/build/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/build/logo192.png
--------------------------------------------------------------------------------
/build/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/build/logo512.png
--------------------------------------------------------------------------------
/build/logos/bnb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/build/logos/bnb.png
--------------------------------------------------------------------------------
/build/logos/cake.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/build/logos/cake.png
--------------------------------------------------------------------------------
/build/logos/grt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/build/logos/grt.png
--------------------------------------------------------------------------------
/build/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 |
--------------------------------------------------------------------------------
/build/mushroom-move.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/build/mushroom-move.gif
--------------------------------------------------------------------------------
/build/mushroom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/build/mushroom.png
--------------------------------------------------------------------------------
/build/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/build/spore_128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/build/spore_128.png
--------------------------------------------------------------------------------
/build/spore_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/build/spore_256.png
--------------------------------------------------------------------------------
/build/static/css/main.bc8230ef.chunk.css:
--------------------------------------------------------------------------------
1 | body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace}body,html{overflow-x:hidden}body{color:#fff;font-family:"Poppins",sans-serif;background-color:#9c7456;background-size:75% auto;background-repeat:no-repeat;background-position:center 120%}.btn{text-decoration:none}.btn-primary{background-color:#6b4e3b;border-color:#6b4e3b}.btn-primary:active,.btn-primary:focus,.btn-primary:hover{background-color:#ebd5c7;border-color:#ebd5c7;color:#6b4e3b}.main{position:relative}.main #tsparticles{position:absolute;width:100%;height:100vh}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion:no-preference){.App-logo{-webkit-animation:App-logo-spin 20s linear infinite;animation:App-logo-spin 20s linear infinite}}.App-link{color:#61dafb}@-webkit-keyframes App-logo-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes App-logo-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.navbar{transition:all .4s;background-color:#6b4e3b}.navbar .logo{max-height:50px;margin-right:10px}.navbar .navbar-brand{text-decoration:none;font-size:32px}.navbar .nav-item{padding:0 15px}.navbar .btn,.navbar .nav-link{text-decoration:none}.navbar a:focus,.navbar a:hover{text-decoration:none;color:#ebd5c7}.navbar a.btn:focus,.navbar a.btn:hover{text-decoration:none;color:#6b4e3b}.footer a.credit{font-size:42px;text-decoration:none;font-weight:700}.information .feature{font-size:46px}.information .feature span{color:#6b4e3b;font-weight:700}.bg-white{color:#212121}.bg-white-darker{background-color:#f1f3f6;color:#212121}.bg-white li{font-size:20px}.bg-white li b{color:#4b5626}.bg-white h2{color:#6b4e3b;font-weight:700;padding-bottom:15px}.circle{padding:13px 20px;border-radius:50%;background-color:#4b5626;color:#fff;max-height:50px;z-index:2}.how-it-works.row .col-2{-webkit-align-self:stretch;align-self:stretch}.how-it-works.row .col-2:after{content:"";position:absolute;border-left:3px solid #4b5626;z-index:1}.how-it-works.row .col-2.bottom:after{height:50%;left:50%;top:50%}.how-it-works.row .col-2.full:after{height:100%;left:calc(50% - 3px)}.how-it-works.row .col-2.full-left:after{height:100%;left:50%}.how-it-works.row .col-2.top:after{height:50%;left:50%;top:0}.how-it-works.row .col-2.top-right:after{height:50%;left:calc(50% - 3px);top:0}.timeline div{padding:0;height:40px}.timeline hr{border-top:3px solid #4b5626;margin:0;top:17px;position:relative}.timeline .col-2{display:-webkit-flex;display:flex;overflow:hidden}.timeline .corner{border:3px solid #4b5626;width:100%;position:relative;border-radius:15px}.timeline .top-right{left:50%;top:-50%}.timeline .left-bottom{left:-50%;top:calc(50% - 3px)}.timeline .top-left{left:-50%;top:-50%}.timeline .right-bottom{left:50%;top:calc(50% - 3px)}.card .card-body{color:#212121}.BurnedTokens{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;font-size:calc(1px + 1.5vmin);color:#fff}ul{margin:2px}a{color:#fff;text-decoration:underline}a:hover{cursor:pointer}#bridge .rowBridge{position:relative}#bridge .arrow{position:absolute;left:50%;top:50%;-webkit-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%);z-index:99;border:2px solid rgba(0,0,0,.125);border-radius:50%;background-color:#fff}#bridge .arrow .btn{border:0;padding:15px 20px;transition:all .5s ease-in-out}#bridge .arrow .btn.reverted{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}#bridge .arrow .btn:active,#bridge .arrow .btn:focus,#bridge .arrow .btn:hover{border:0;background-color:transparent}#bridge .arrow .fa{color:#4b5626;font-size:46px}#bridge .card-title span{color:rgba(0,0,0,.5);padding-right:15px}#bridge .dropdown-menu a{color:#212121;text-decoration:none}#bridge .dropdown .btn{width:100%;text-align:left;background-color:#f1f3f6}#bridge .dropdown-toggle:after{float:right;position:relative;top:7px}#bridge .dropdown-menu{padding:5px;width:100%}#bridge .dropdown-menu li{padding:3px 5px}#bridge .dropdown-menu li button{font-size:22px;border:0;background-color:#fff}#bridge .dropdown-menu img{height:32px;margin-right:10px}#bridge .final-spores{font-weight:600;font-size:18px}#bridge #swap-btn{font-size:28px}@media screen and (max-width:640px){#bridge .arrow{right:0;left:auto;-webkit-transform:translateY(-50%) translateX(-50%) rotate(90deg);transform:translateY(-50%) translateX(-50%) rotate(90deg);top:calc(50% + 5px)}#bridge .arrow .fa{font-size:32px;position:relative;top:1px}#bridge .arrow .btn{padding:11px 13px}}
2 | /*# sourceMappingURL=main.bc8230ef.chunk.css.map */
--------------------------------------------------------------------------------
/build/static/css/main.bc8230ef.chunk.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack://src/index.css","webpack://src/App.css","webpack://src/components/layout/Header.css","webpack://src/components/layout/Footer.css","webpack://src/components/Information.css","webpack://src/components/BurnedTokens.css","webpack://src/components/BSCBridge.css"],"names":[],"mappings":"AAAA,KACE,QAAS,CACT,mJAEY,CACZ,kCAAmC,CACnC,iCACF,CAEA,KACE,yEAEF,CCRA,UAHE,iBAWF,CARA,KAEE,UAAU,CACV,gCAAkC,CAClC,wBAAyB,CACzB,wBAAyB,CACzB,2BAA4B,CAC5B,+BACF,CAEA,KACE,oBACF,CACA,aACE,wBAAyB,CACzB,oBACF,CACA,0DAGE,wBAAyB,CACzB,oBAAqB,CACrB,aACF,CACA,MACE,iBACF,CACA,mBACE,iBAAkB,CAClB,UAAW,CACX,YACF,CAEA,UACE,aAAc,CACd,mBACF,CAEA,8CACE,UACE,mDAA4C,CAA5C,2CACF,CACF,CAGA,UACE,aACF,CAEA,iCACE,GACE,8BAAuB,CAAvB,sBACF,CACA,GACE,+BAAyB,CAAzB,uBACF,CACF,CAPA,yBACE,GACE,8BAAuB,CAAvB,sBACF,CACA,GACE,+BAAyB,CAAzB,uBACF,CACF,CC5DA,QACE,kBAAoB,CACpB,wBACF,CAEA,cACE,eAAgB,CAChB,iBACF,CAEA,sBACE,oBAAqB,CACrB,cACF,CAEA,kBACE,cACF,CAEA,+BACE,oBACF,CAEA,gCAEE,oBAAqB,CACrB,aACF,CAEA,wCAEE,oBAAqB,CACrB,aACF,CCjCA,iBACE,cAAe,CACf,oBAAqB,CACrB,eACF,CCJA,sBACE,cACF,CAEA,2BACE,aAAa,CACb,eACF,CAEA,UACE,aACF,CACA,iBACE,wBAAyB,CACzB,aACF,CAEA,aACE,cACF,CACA,eACE,aACF,CAEA,aACE,aAAa,CACb,eAAiB,CACjB,mBACF,CACA,QACE,iBAAkB,CAClB,iBAAkB,CAClB,wBAAyB,CACzB,UAAW,CACX,eAAgB,CAChB,SACF,CAEA,yBACE,0BAAmB,CAAnB,kBACF,CACA,+BACE,UAAW,CACX,iBAAkB,CAClB,6BAA8B,CAC9B,SACF,CACA,sCACE,UAAW,CACX,QAAS,CACT,OACF,CACA,oCACE,WAAY,CACZ,oBACF,CACA,yCACE,WAAY,CACZ,QACF,CACA,mCACE,UAAW,CACX,QAAS,CACT,KACF,CACA,yCACE,UAAW,CACX,oBAAqB,CACrB,KACF,CAEA,cACE,SAAU,CACV,WACF,CACA,aACE,4BAA6B,CAC7B,QAAS,CACT,QAAS,CACT,iBACF,CACA,iBACE,oBAAa,CAAb,YAAa,CACb,eACF,CACA,kBACE,wBAAyB,CACzB,UAAW,CACX,iBAAkB,CAClB,kBACF,CACA,qBACE,QAAS,CACT,QACF,CACA,uBACE,SAAU,CACV,mBACF,CACA,oBACE,SAAU,CACV,QACF,CACA,wBACE,QAAS,CACT,mBACF,CAEA,iBACE,aACF,CC9GA,cACE,oBAAa,CAAb,YAAa,CACb,6BAAsB,CAAtB,qBAAsB,CACtB,6BAA8B,CAC9B,UACF,CAEA,GAAK,UAAY,CAEjB,EACE,UAAY,CACZ,yBACF,CACA,QACE,cACF,CCfA,mBACI,iBACJ,CACA,eACI,iBAAkB,CAClB,QAAS,CACT,OAAQ,CACR,mDAA4C,CAA5C,2CAA4C,CAC5C,UAAW,CACX,iCAAkC,CAClC,iBAAkB,CAClB,qBACJ,CAEA,oBACI,QAAS,CACT,iBAAkB,CAClB,8BACJ,CACA,6BACI,iCAA0B,CAA1B,yBACJ,CAEA,+EAGI,QAAS,CACT,4BACJ,CAEA,mBACI,aAAc,CACd,cACJ,CAEA,yBACI,oBAAsB,CACtB,kBACJ,CAEA,yBACI,aAAc,CACd,oBACJ,CAEA,uBACI,UAAW,CACX,eAAgB,CAChB,wBACJ,CAEA,+BACI,WAAY,CACZ,iBAAkB,CAClB,OACJ,CAEA,uBACI,WAAY,CACZ,UACJ,CAEA,0BACI,eACJ,CAEA,iCACI,cAAe,CACf,QAAS,CACT,qBACJ,CAEA,2BACI,WAAY,CACZ,iBACJ,CAEA,sBACI,eAAgB,CAChB,cACJ,CAEA,kBACI,cAEJ,CAEA,oCACI,eACI,OAAU,CACV,SAAU,CACV,iEAA0D,CAA1D,yDAA0D,CAC1D,mBACJ,CAEA,mBACI,cAAe,CACf,iBAAkB,CAClB,OACJ,CAEA,oBACI,iBACJ,CAEJ","file":"main.bc8230ef.chunk.css","sourcesContent":["body {\r\n margin: 0;\r\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\r\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\r\n sans-serif;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\ncode {\r\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\r\n monospace;\r\n}\r\n","html {\r\n overflow-x: hidden;\r\n}\r\n\r\nbody {\r\n overflow-x: hidden;\r\n color:#fff;\r\n font-family: 'Poppins', sans-serif;\r\n background-color: #9C7456;\r\n background-size: 75% auto;\r\n background-repeat: no-repeat;\r\n background-position: center 120%;\r\n}\r\n\r\n.btn {\r\n text-decoration: none;\r\n}\r\n.btn-primary {\r\n background-color: #6B4E3B;\r\n border-color: #6B4E3B;\r\n}\r\n.btn-primary:hover,\r\n.btn-primary:active,\r\n.btn-primary:focus {\r\n background-color: #EBD5C7;\r\n border-color: #EBD5C7;\r\n color: #6B4E3B;\r\n}\r\n.main {\r\n position: relative;\r\n}\r\n.main #tsparticles {\r\n position: absolute;\r\n width: 100%;\r\n height: 100vh;\r\n}\r\n\r\n.App-logo {\r\n height: 40vmin;\r\n pointer-events: none;\r\n}\r\n\r\n@media (prefers-reduced-motion: no-preference) {\r\n .App-logo {\r\n animation: App-logo-spin infinite 20s linear;\r\n }\r\n}\r\n\r\n\r\n.App-link {\r\n color: #61dafb;\r\n}\r\n\r\n@keyframes App-logo-spin {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n}\r\n",".navbar {\r\n transition: all 0.4s;\r\n background-color: #6B4E3B;\r\n}\r\n\r\n.navbar .logo {\r\n max-height: 50px;\r\n margin-right: 10px;\r\n}\r\n\r\n.navbar .navbar-brand {\r\n text-decoration: none;\r\n font-size: 32px;\r\n}\r\n\r\n.navbar .nav-item {\r\n padding: 0 15px;\r\n}\r\n\r\n.navbar .nav-link, .navbar .btn {\r\n text-decoration: none;\r\n}\r\n\r\n.navbar a:hover,\r\n.navbar a:focus {\r\n text-decoration: none;\r\n color: #EBD5C7;\r\n}\r\n\r\n.navbar a.btn:hover,\r\n.navbar a.btn:focus {\r\n text-decoration: none;\r\n color: #6B4E3B;\r\n}\r\n",".footer a.credit {\r\n font-size: 42px;\r\n text-decoration: none;\r\n font-weight: bold;\r\n}",".information .feature {\r\n font-size: 46px;\r\n}\r\n\r\n.information .feature span {\r\n color:#6B4E3B;\r\n font-weight: bold;\r\n}\r\n\r\n.bg-white {\r\n color: #212121;\r\n}\r\n.bg-white-darker {\r\n background-color: #f1f3f6;\r\n color: #212121;\r\n}\r\n\r\n.bg-white li {\r\n font-size: 20px;\r\n}\r\n.bg-white li b {\r\n color: #4B5626;\r\n}\r\n\r\n.bg-white h2 {\r\n color:#6B4E3B;\r\n font-weight: bold;\r\n padding-bottom: 15px;\r\n}\r\n.circle {\r\n padding: 13px 20px;\r\n border-radius: 50%;\r\n background-color: #4B5626;\r\n color: #fff;\r\n max-height: 50px;\r\n z-index: 2;\r\n}\r\n\r\n.how-it-works.row .col-2 {\r\n align-self: stretch;\r\n}\r\n.how-it-works.row .col-2::after {\r\n content: \"\";\r\n position: absolute;\r\n border-left: 3px solid #4B5626;\r\n z-index: 1;\r\n}\r\n.how-it-works.row .col-2.bottom::after {\r\n height: 50%;\r\n left: 50%;\r\n top: 50%;\r\n}\r\n.how-it-works.row .col-2.full::after {\r\n height: 100%;\r\n left: calc(50% - 3px);\r\n}\r\n.how-it-works.row .col-2.full-left::after {\r\n height: 100%;\r\n left: 50% ;\r\n}\r\n.how-it-works.row .col-2.top::after {\r\n height: 50%;\r\n left: 50%;\r\n top: 0;\r\n}\r\n.how-it-works.row .col-2.top-right::after {\r\n height: 50%;\r\n left: calc(50% - 3px);\r\n top: 0;\r\n}\r\n\r\n.timeline div {\r\n padding: 0;\r\n height: 40px;\r\n}\r\n.timeline hr {\r\n border-top: 3px solid #4B5626;\r\n margin: 0;\r\n top: 17px;\r\n position: relative;\r\n}\r\n.timeline .col-2 {\r\n display: flex;\r\n overflow: hidden;\r\n}\r\n.timeline .corner {\r\n border: 3px solid #4B5626;\r\n width: 100%;\r\n position: relative;\r\n border-radius: 15px;\r\n}\r\n.timeline .top-right {\r\n left: 50%;\r\n top: -50%;\r\n}\r\n.timeline .left-bottom {\r\n left: -50%;\r\n top: calc(50% - 3px);\r\n}\r\n.timeline .top-left {\r\n left: -50%;\r\n top: -50%;\r\n}\r\n.timeline .right-bottom {\r\n left: 50%;\r\n top: calc(50% - 3px);\r\n}\r\n\r\n.card .card-body {\r\n color: #212121;\r\n}",".BurnedTokens {\r\n display: flex;\r\n flex-direction: column;\r\n font-size: calc(1px + 1.5vmin);\r\n color: white;\r\n}\r\n\r\nul { margin: 2px;}\r\n\r\na {\r\n color: white;\r\n text-decoration: underline;\r\n}\r\na:hover {\r\n cursor: pointer;\r\n}\r\n","#bridge .rowBridge {\r\n position: relative;\r\n}\r\n#bridge .arrow {\r\n position: absolute;\r\n left: 50%;\r\n top: 50%;\r\n transform: translateY(-50%) translateX(-50%);\r\n z-index: 99;\r\n border: 2px solid rgba(0,0,0,.125);\r\n border-radius: 50%;\r\n background-color: #fff;\r\n}\r\n\r\n#bridge .arrow .btn {\r\n border: 0;\r\n padding: 15px 20px;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n#bridge .arrow .btn.reverted {\r\n transform: rotate(-180deg);\r\n}\r\n\r\n#bridge .arrow .btn:hover,\r\n#bridge .arrow .btn:active,\r\n#bridge .arrow .btn:focus {\r\n border: 0;\r\n background-color: transparent;\r\n}\r\n\r\n#bridge .arrow .fa {\r\n color: #4B5626;\r\n font-size: 46px;\r\n}\r\n\r\n#bridge .card-title span {\r\n color: rgba(0,0,0,.50);\r\n padding-right: 15px;\r\n}\r\n\r\n#bridge .dropdown-menu a {\r\n color: #212121;\r\n text-decoration: none;\r\n}\r\n\r\n#bridge .dropdown .btn {\r\n width: 100%;\r\n text-align: left;\r\n background-color: #f1f3f6;\r\n}\r\n\r\n#bridge .dropdown-toggle:after {\r\n float: right;\r\n position: relative;\r\n top: 7px;\r\n}\r\n\r\n#bridge .dropdown-menu {\r\n padding: 5px;\r\n width: 100%;\r\n}\r\n\r\n#bridge .dropdown-menu li {\r\n padding: 3px 5px;\r\n}\r\n\r\n#bridge .dropdown-menu li button {\r\n font-size: 22px;\r\n border: 0;\r\n background-color: #fff;\r\n}\r\n\r\n#bridge .dropdown-menu img {\r\n height: 32px;\r\n margin-right: 10px;\r\n}\r\n\r\n#bridge .final-spores {\r\n font-weight: 600;\r\n font-size: 18px;\r\n}\r\n\r\n#bridge #swap-btn {\r\n font-size: 28px;\r\n \r\n}\r\n\r\n@media screen and (max-width: 640px) {\r\n #bridge .arrow {\r\n right: 0px;\r\n left: auto;\r\n transform: translateY(-50%) translateX(-50%) rotate(90deg);\r\n top: calc(50% + 5px);\r\n }\r\n \r\n #bridge .arrow .fa {\r\n font-size: 32px;\r\n position: relative;\r\n top: 1px;\r\n }\r\n\r\n #bridge .arrow .btn {\r\n padding: 11px 13px;\r\n }\r\n\r\n}"]}
--------------------------------------------------------------------------------
/build/static/js/2.2e3059a9.chunk.js.LICENSE.txt:
--------------------------------------------------------------------------------
1 | /*
2 | object-assign
3 | (c) Sindre Sorhus
4 | @license MIT
5 | */
6 |
7 | /*!
8 | Transformation Matrix v2.0
9 | (c) Epistemex 2014-2015
10 | www.epistemex.com
11 | By Ken Fyrstenberg
12 | Contributions by leeoniya.
13 | License: MIT, header required.
14 | */
15 |
16 | /*!
17 | * The buffer module from node.js, for the browser.
18 | *
19 | * @author Feross Aboukhadijeh
20 | * @license MIT
21 | */
22 |
23 | /*!
24 | * The buffer module from node.js, for the browser.
25 | *
26 | * @author Feross Aboukhadijeh
27 | * @license MIT
28 | */
29 |
30 | /*!
31 | * v2.1.4-104-gc868b3a
32 | *
33 | */
34 |
35 | /*! https://mths.be/punycode v1.4.1 by @mathias */
36 |
37 | /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */
38 |
39 | /*! safe-buffer. MIT License. Feross Aboukhadijeh */
40 |
41 | /**
42 | * [js-sha3]{@link https://github.com/emn178/js-sha3}
43 | *
44 | * @version 0.5.7
45 | * @author Chen, Yi-Cyuan [emn178@gmail.com]
46 | * @copyright Chen, Yi-Cyuan 2015-2016
47 | * @license MIT
48 | */
49 |
50 | /**
51 | * [js-sha3]{@link https://github.com/emn178/js-sha3}
52 | *
53 | * @version 0.8.0
54 | * @author Chen, Yi-Cyuan [emn178@gmail.com]
55 | * @copyright Chen, Yi-Cyuan 2015-2018
56 | * @license MIT
57 | */
58 |
59 | /** @license React v0.20.1
60 | * scheduler.production.min.js
61 | *
62 | * Copyright (c) Facebook, Inc. and its affiliates.
63 | *
64 | * This source code is licensed under the MIT license found in the
65 | * LICENSE file in the root directory of this source tree.
66 | */
67 |
68 | /** @license React v16.13.1
69 | * react-is.production.min.js
70 | *
71 | * Copyright (c) Facebook, Inc. and its affiliates.
72 | *
73 | * This source code is licensed under the MIT license found in the
74 | * LICENSE file in the root directory of this source tree.
75 | */
76 |
77 | /** @license React v17.0.1
78 | * react-dom.production.min.js
79 | *
80 | * Copyright (c) Facebook, Inc. and its affiliates.
81 | *
82 | * This source code is licensed under the MIT license found in the
83 | * LICENSE file in the root directory of this source tree.
84 | */
85 |
86 | /** @license React v17.0.1
87 | * react-jsx-runtime.production.min.js
88 | *
89 | * Copyright (c) Facebook, Inc. and its affiliates.
90 | *
91 | * This source code is licensed under the MIT license found in the
92 | * LICENSE file in the root directory of this source tree.
93 | */
94 |
95 | /** @license React v17.0.1
96 | * react.production.min.js
97 | *
98 | * Copyright (c) Facebook, Inc. and its affiliates.
99 | *
100 | * This source code is licensed under the MIT license found in the
101 | * LICENSE file in the root directory of this source tree.
102 | */
103 |
--------------------------------------------------------------------------------
/build/static/js/3.e7f8ec98.chunk.js:
--------------------------------------------------------------------------------
1 | (this["webpackJsonpspore-interface"]=this["webpackJsonpspore-interface"]||[]).push([[3],{891:function(t,e,n){"use strict";n.r(e),n.d(e,"getCLS",(function(){return m})),n.d(e,"getFCP",(function(){return g})),n.d(e,"getFID",(function(){return F})),n.d(e,"getLCP",(function(){return k})),n.d(e,"getTTFB",(function(){return C}));var i,a,r,o,c=function(t,e){return{name:t,value:void 0===e?-1:e,delta:0,entries:[],id:"v1-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12)}},u=function(t,e){try{if(PerformanceObserver.supportedEntryTypes.includes(t)){var n=new PerformanceObserver((function(t){return t.getEntries().map(e)}));return n.observe({type:t,buffered:!0}),n}}catch(t){}},s=function(t,e){var n=function n(i){"pagehide"!==i.type&&"hidden"!==document.visibilityState||(t(i),e&&(removeEventListener("visibilitychange",n,!0),removeEventListener("pagehide",n,!0)))};addEventListener("visibilitychange",n,!0),addEventListener("pagehide",n,!0)},f=function(t){addEventListener("pageshow",(function(e){e.persisted&&t(e)}),!0)},p="function"==typeof WeakSet?new WeakSet:new Set,d=function(t,e,n){var i;return function(){e.value>=0&&(n||p.has(e)||"hidden"===document.visibilityState)&&(e.delta=e.value-(i||0),(e.delta||void 0===i)&&(i=e.value,t(e)))}},m=function(t,e){var n,i=c("CLS",0),a=function(t){t.hadRecentInput||(i.value+=t.value,i.entries.push(t),n())},r=u("layout-shift",a);r&&(n=d(t,i,e),s((function(){r.takeRecords().map(a),n()})),f((function(){i=c("CLS",0),n=d(t,i,e)})))},v=-1,l=function(){return"hidden"===document.visibilityState?0:1/0},h=function(){s((function(t){var e=t.timeStamp;v=e}),!0)},S=function(){return v<0&&(v=l(),h(),f((function(){setTimeout((function(){v=l(),h()}),0)}))),{get timeStamp(){return v}}},g=function(t,e){var n,i=S(),a=c("FCP"),r=u("paint",(function(t){"first-contentful-paint"===t.name&&(r&&r.disconnect(),t.startTime=0&&a1e12?new Date:performance.now())-t.timeStamp;"pointerdown"==t.type?function(t,e){var n=function(){E(t,e),a()},i=function(){a()},a=function(){removeEventListener("pointerup",n,y),removeEventListener("pointercancel",i,y)};addEventListener("pointerup",n,y),addEventListener("pointercancel",i,y)}(e,t):E(e,t)}},b=function(t){["mousedown","keydown","touchstart","pointerdown"].forEach((function(e){return t(e,T,y)}))},F=function(t,e){var n,r=S(),m=c("FID"),v=function(t){t.startTime=0&&(n||u.has(t)||\"hidden\"===document.visibilityState)&&(t.delta=t.value-(i||0),(t.delta||void 0===i)&&(i=t.value,e(t)))}},f=function(e,t){var n,i=a(\"CLS\",0),u=function(e){e.hadRecentInput||(i.value+=e.value,i.entries.push(e),n())},f=r(\"layout-shift\",u);f&&(n=s(e,i,t),o((function(){f.takeRecords().map(u),n()})),c((function(){i=a(\"CLS\",0),n=s(e,i,t)})))},m=-1,v=function(){return\"hidden\"===document.visibilityState?0:1/0},d=function(){o((function(e){var t=e.timeStamp;m=t}),!0)},p=function(){return m<0&&(m=v(),d(),c((function(){setTimeout((function(){m=v(),d()}),0)}))),{get timeStamp(){return m}}},l=function(e,t){var n,i=p(),o=a(\"FCP\"),f=r(\"paint\",(function(e){\"first-contentful-paint\"===e.name&&(f&&f.disconnect(),e.startTime=0&&t1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,t){var n=function(){y(e,t),a()},i=function(){a()},a=function(){removeEventListener(\"pointerup\",n,h),removeEventListener(\"pointercancel\",i,h)};addEventListener(\"pointerup\",n,h),addEventListener(\"pointercancel\",i,h)}(t,e):y(t,e)}},w=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(t){return e(t,E,h)}))},L=function(n,f){var m,v=p(),d=a(\"FID\"),l=function(e){e.startTime\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Header;\r\n","// src/Footer.js\r\nimport './Footer.css';\r\n\r\nimport React from 'react';\r\n\r\nfunction Footer() {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default Footer;\r\n","// src/Footer.js\r\nimport './BurnedTokens.css';\r\n\r\nimport React from 'react';\r\nimport axios from 'axios';\r\n\r\nconst TOTAL_SUPPLY = 100000000000000000;\r\n\r\nclass BurnedTokens extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n numberOfBurnedTokens: -1,\r\n percentageOfBurnedTokens: -1,\r\n numberOfTokenHolders: -1\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n Burned Tokens : {this.state.numberOfBurnedTokens} SPORE\r\n \r\n \r\n % of Burned Tokens : {this.state.percentageOfBurnedTokens} %\r\n \r\n \r\n Number of token holders : {this.state.numberOfTokenHolders} \r\n \r\n >\r\n );\r\n }\r\n\r\n async componentDidMount() {\r\n await this.getBurnedTokens();\r\n await this.getTokenHolders();\r\n // Will trigger a refresh every minutes\r\n setTimeout(async () => {\r\n await this.getBurnedTokens();\r\n await this.getTokenHolders();\r\n }, 60000);\r\n }\r\n\r\n async getBurnedTokens() {\r\n const res = await axios.get(\r\n 'https://api.covalenthq.com/v1/43114/address/0x000000000000000000000000000000000000dEaD/balances_v2/?nft=false'\r\n );\r\n\r\n if (\r\n res.data !== undefined &&\r\n res.data.data !== undefined &&\r\n res.data.data.items !== undefined\r\n ) {\r\n const items = res.data.data.items;\r\n items.forEach((coin) => {\r\n if (\r\n coin.contract_address === '0x6e7f5c0b9f4432716bdd0a77a3601291b9d9e985'\r\n ) {\r\n this.setState({\r\n numberOfBurnedTokens: this.numberWithCommas(\r\n (coin.balance / 10 ** 9).toFixed(0)\r\n ),\r\n percentageOfBurnedTokens: (\r\n (coin.balance / 10 ** 9 / TOTAL_SUPPLY) *\r\n 100\r\n ).toFixed(2)\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n async getTokenHolders() {\r\n const res = await axios.get(\r\n 'https://api.covalenthq.com/v1/43114/tokens/0x6e7f5C0b9f4432716bDd0a77a3601291b9D9e985/token_holders/?page-size=999999'\r\n );\r\n\r\n if (\r\n res.data !== undefined &&\r\n res.data.data !== undefined &&\r\n res.data.data.items !== undefined\r\n ) {\r\n const items = res.data.data.items;\r\n this.setState({\r\n numberOfTokenHolders: items.length\r\n });\r\n }\r\n }\r\n\r\n numberWithCommas(x) {\r\n return x.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,');\r\n }\r\n}\r\n\r\nexport default BurnedTokens;\r\n","export default __webpack_public_path__ + \"static/media/how_to_buy.d27bfe52.pdf\";","// src/Footer.js\r\nimport './Information.css';\r\n\r\nimport React from 'react';\r\nimport BurnedTokens from './BurnedTokens';\r\nimport HowToBuyPDF from '../utils/how_to_buy.pdf';\r\n\r\nfunction Information() {\r\n return (\r\n <>\r\n \r\n
\r\n
\r\n
\r\n What is Spore Finance \r\n \r\n
\r\n Spore Finance aims at creating an ecosystem combining{' '}\r\n reflect tokens , algorithmically generated NFTs and\r\n the first NFT prediction market .\r\n
\r\n
\r\n Amazed by the Avalanche Network first generation of pools,\r\n the first phase was to launch one of the first reflect tokens\r\n there to be.\r\n
\r\n\r\n
\r\n On every transaction, 3% of the rewards are burnt forever and 3%\r\n are redistributed to all the owners.\r\n Earn frictionless rewards while your spores spread!\r\n Deflation reduces the supply increasing the token value over time.\r\n The vision of the project is the vision of the community. It is\r\n going to evolve as spores spread.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Tokeneconomics \r\n
\r\n Dev fund : 0% \r\n \r\n Total Supply : 100,000,000,000,000,000 SPORE\r\n \r\n <>\r\n \r\n >\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
Roadmap \r\n \r\n
\r\n
\r\n
\r\n
\r\n
Fair and stealth launch \r\n
\r\n 18 March 2021\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
Setting up Airdrops & Incentive program \r\n
\r\n In Progress \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
Farming Partnerships \r\n
\r\n In Progress{' '}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
Algorithmically generated NFTs \r\n
\r\n Q2 2021 \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
Governance \r\n
\r\n Q2 2021 \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
Second layer blockchain development \r\n
\r\n Q3 2021 \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
Cross-chain compatibility \r\n
\r\n Q3 2021 \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
NFTs Prediction Market \r\n
\r\n Q4 2021 \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n >\r\n );\r\n}\r\n\r\nexport default Information;\r\n","import React from 'react'\r\n\r\nimport Particles from 'react-particles-js';\r\n\r\n\r\nfunction MyParticles() {\r\n return (\r\n \r\n )\r\n}\r\n\r\n\r\n\r\nexport default MyParticles\r\n","import React from 'react';\r\nimport Lottie from 'react-lottie';\r\nimport comingSoon from '../utils/coming-soon.json';\r\n\r\nexport default class ComingSoon extends React.Component {\r\n render() {\r\n const defaultOptions = {\r\n loop: true,\r\n autoplay: true,\r\n animationData: comingSoon\r\n };\r\n\r\n return (\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\n\r\nimport './BSCBridge.css';\r\n\r\nexport default class BSCBridge extends React.Component {\r\n componentDidMount () {\r\n const script = document.createElement(\"script\");\r\n script.src = \"/bscbridge.js\";\r\n script.async = true;\r\n document.body.appendChild(script);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n
BSC / SPORE Bridge \r\n \r\n
\r\n Connect wallet \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
FROM Binance Smart Chain\r\n
Balance : 2.67
\r\n
\r\n
Pay AVAX fees with SPORE\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
TO (estimated) Binance Smart Chain\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
TO (estimated) Spore\r\n
Price : 7775920000000 SPORE per BNB
\r\n
45351634825845.951432785 SPORE
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
FROM Spore\r\n
\r\n
Pay AVAX fees with SPORE\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n TRANSFER \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { HashRouter as ReactRouter, Route, Switch } from 'react-router-dom';\r\nimport Header from './components/layout/Header';\r\nimport Footer from './components/layout/Footer';\r\nimport Information from './components/Information';\r\nimport MyParticles from './components/Particles';\r\nimport ComingSoon from './components/ComingSoon';\r\nimport BSCBridge from './components/BSCBridge';\r\n\r\nconst Router = () => {\r\n return (\r\n \r\n \r\n \r\n (\r\n <>\r\n \r\n \r\n >\r\n )}\r\n />\r\n } />\r\n } />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Router;\r\n","import './App.css';\r\n\r\nimport Router from './Router';\r\n\r\nfunction App() {\r\n return (\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default App;\r\n","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}
--------------------------------------------------------------------------------
/build/static/js/runtime-main.9193d564.js:
--------------------------------------------------------------------------------
1 | !function(e){function r(r){for(var n,i,a=r[0],c=r[1],f=r[2],s=0,p=[];s0.2%",
42 | "not dead",
43 | "not op_mini all"
44 | ],
45 | "development": [
46 | "last 1 chrome version",
47 | "last 1 firefox version",
48 | "last 1 safari version"
49 | ]
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/public/avalanche-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/avalanche-logo.png
--------------------------------------------------------------------------------
/public/binance-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/binance-logo.png
--------------------------------------------------------------------------------
/public/bscbridge.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function() {
2 | $("#btn-arrow").on("click", function() {
3 | $(this).toggleClass("reverted");
4 | $(".col-coin").toggleClass("d-none");
5 | });
6 | });
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/favicon.ico
--------------------------------------------------------------------------------
/public/fire.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/fire.png
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
17 |
18 |
22 |
23 |
32 | Spore Finance
33 |
34 |
35 | You need to enable JavaScript to run this app.
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/logo192.png
--------------------------------------------------------------------------------
/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/logo512.png
--------------------------------------------------------------------------------
/public/logos/bnb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/logos/bnb.png
--------------------------------------------------------------------------------
/public/logos/cake.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/logos/cake.png
--------------------------------------------------------------------------------
/public/logos/grt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/logos/grt.png
--------------------------------------------------------------------------------
/public/logos/spore32x32.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/logos/spore32x32.jpeg
--------------------------------------------------------------------------------
/public/logos/spore32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/logos/spore32x32.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/mushroom-move.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/mushroom-move.gif
--------------------------------------------------------------------------------
/public/mushroom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/mushroom.png
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/public/spore_128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/spore_128.png
--------------------------------------------------------------------------------
/public/spore_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/spore_256.png
--------------------------------------------------------------------------------
/public/telegramproof.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/telegramproof.png
--------------------------------------------------------------------------------
/public/téléchargement-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/téléchargement-2.png
--------------------------------------------------------------------------------
/public/téléchargement-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/public/téléchargement-3.png
--------------------------------------------------------------------------------
/src/App.css:
--------------------------------------------------------------------------------
1 | html {
2 | overflow-x: hidden;
3 | }
4 |
5 | body {
6 | overflow-x: hidden;
7 | color:#fff;
8 | font-family: 'Poppins', sans-serif;
9 | background-color: #9C7456;
10 | background-size: 75% auto;
11 | background-repeat: no-repeat;
12 | background-position: center 120%;
13 | }
14 |
15 | .btn {
16 | text-decoration: none;
17 | }
18 | .btn-primary {
19 | background-color: #6B4E3B;
20 | border-color: #6B4E3B;
21 | }
22 | .btn-primary:hover,
23 | .btn-primary:active,
24 | .btn-primary:focus {
25 | background-color: #EBD5C7;
26 | border-color: #EBD5C7;
27 | color: #6B4E3B;
28 | }
29 | .main {
30 | position: relative;
31 | }
32 | .main #tsparticles {
33 | position: absolute;
34 | width: 100%;
35 | height: 100vh;
36 | }
37 |
38 | .App-logo {
39 | height: 40vmin;
40 | pointer-events: none;
41 | }
42 |
43 | @media (prefers-reduced-motion: no-preference) {
44 | .App-logo {
45 | animation: App-logo-spin infinite 20s linear;
46 | }
47 | }
48 |
49 |
50 | .App-link {
51 | color: #61dafb;
52 | }
53 |
54 | @keyframes App-logo-spin {
55 | from {
56 | transform: rotate(0deg);
57 | }
58 | to {
59 | transform: rotate(360deg);
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/src/App.tsx:
--------------------------------------------------------------------------------
1 | import './App.css';
2 |
3 | import Router from './Router';
4 |
5 | const App = () => {
6 | return (
7 |
8 |
9 |
10 | );
11 | }
12 |
13 | export default App;
14 |
--------------------------------------------------------------------------------
/src/Router.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { HashRouter as ReactRouter, Route, Switch } from 'react-router-dom';
3 | import Header from './components/layout/Header';
4 | import Footer from './components/layout/Footer';
5 | import MyParticles from './components/Particles';
6 | import ComingSoon from './components/ComingSoon';
7 | import Information from './components/Information';
8 | import BSCBridge from './components/BSCBridge';
9 |
10 | const Router = () => {
11 | return (
12 |
13 |
14 |
15 | (
19 | <>
20 |
21 |
22 | >
23 | )}
24 | />
25 | } />
26 | } />
27 |
28 |
29 |
30 | );
31 | };
32 |
33 | export default Router;
34 |
--------------------------------------------------------------------------------
/src/components/BSCBridge.css:
--------------------------------------------------------------------------------
1 | #bridge .rowBridge {
2 | position: relative;
3 | }
4 | #bridge .arrow {
5 | position: absolute;
6 | left: 50%;
7 | top: 50%;
8 | transform: translateY(-50%) translateX(-50%);
9 | z-index: 99;
10 | border: 2px solid rgba(0,0,0,.125);
11 | border-radius: 50%;
12 | background-color: #fff;
13 | }
14 |
15 | #bridge .arrow .btn {
16 | border: 0;
17 | padding: 15px 20px;
18 | transition: all 0.5s ease-in-out;
19 | }
20 | #bridge .arrow .btn.reverted {
21 | transform: rotate(-180deg);
22 | }
23 |
24 | #bridge .arrow .btn:hover,
25 | #bridge .arrow .btn:active,
26 | #bridge .arrow .btn:focus {
27 | border: 0;
28 | background-color: transparent;
29 | }
30 |
31 | #bridge .arrow .fa {
32 | color: #4B5626;
33 | font-size: 46px;
34 | }
35 |
36 | #bridge .card-title span {
37 | color: rgba(0,0,0,.50);
38 | padding-right: 15px;
39 | }
40 |
41 | #bridge .dropdown-menu a {
42 | color: #212121;
43 | text-decoration: none;
44 | }
45 |
46 | #bridge .dropdown .btn {
47 | width: 100%;
48 | text-align: left;
49 | background-color: #f1f3f6;
50 | }
51 |
52 | #bridge .dropdown-toggle:after {
53 | float: right;
54 | position: relative;
55 | top: 7px;
56 | }
57 |
58 | #bridge .dropdown-menu {
59 | padding: 5px;
60 | width: 100%;
61 | }
62 |
63 | #bridge .dropdown-menu li {
64 | padding: 3px 5px;
65 | }
66 |
67 | #bridge .dropdown-menu li button {
68 | font-size: 22px;
69 | border: 0;
70 | background-color: #fff;
71 | }
72 |
73 | #bridge .dropdown-menu img {
74 | height: 32px;
75 | margin-right: 10px;
76 | }
77 |
78 | #bridge .final-spores {
79 | font-weight: 600;
80 | font-size: 18px;
81 | }
82 |
83 | #bridge .avalanche{
84 | background-color: #e84142;
85 | }
86 |
87 | #bridge .binance{
88 | background-color: #f3ba2f;
89 | }
90 |
91 | #bridge .white{
92 | background-color: white;
93 | }
94 |
95 | #bridge #swap-btn {
96 | font-size: 28px;
97 |
98 | }
99 |
100 | #bridge #approve-btn {
101 | font-size: 14px;
102 |
103 | }
104 |
105 | @media screen and (max-width: 640px) {
106 | #bridge .arrow {
107 | right: 0px;
108 | left: auto;
109 | transform: translateY(-50%) translateX(-50%) rotate(90deg);
110 | top: calc(50% + 5px);
111 | }
112 |
113 | #bridge .arrow .fa {
114 | font-size: 32px;
115 | position: relative;
116 | top: 1px;
117 | }
118 |
119 | #bridge .arrow .btn {
120 | padding: 11px 13px;
121 | }
122 |
123 | }
--------------------------------------------------------------------------------
/src/components/BSCBridge.tsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from 'react';
2 | import Web3 from 'web3';
3 | //@ts-ignore
4 | import { ethers } from "ethers";
5 |
6 | import './BSCBridge.css';
7 | import { useEffect } from 'react';
8 |
9 | const win = window as any
10 | const docu = document as any
11 |
12 | const connectMetaMask = async () => {
13 | if (win.ethereum) {
14 | win.web3 = new Web3(win.ethereum);
15 | win.ethereum.enable();
16 | } else { console.log("Already connected to MetaMask") }
17 | }
18 |
19 | const getNetworkId = async () => {
20 | const networks = new Map();
21 | networks.set("97", "BSC Testnet")
22 | networks.set("56", "Binance Smart Chain")
23 | networks.set("43114", "Avalanche")
24 | networks.set("43113", "Fuji Testnet")
25 | return "Network : " + networks.get(win.ethereum.networkVersion);
26 | }
27 |
28 | const approve = async () => {
29 | const SporeAddress = "0x6e7f5C0b9f4432716bDd0a77a3601291b9D9e985";
30 | const SporeABI = [{ "type": "constructor", "stateMutability": "nonpayable", "inputs": [] }, { "type": "event", "name": "Approval", "inputs": [{ "type": "address", "name": "owner", "internalType": "address", "indexed": true }, { "type": "address", "name": "spender", "internalType": "address", "indexed": true }, { "type": "uint256", "name": "value", "internalType": "uint256", "indexed": false }], "anonymous": false }, { "type": "event", "name": "OwnershipTransferred", "inputs": [{ "type": "address", "name": "previousOwner", "internalType": "address", "indexed": true }, { "type": "address", "name": "newOwner", "internalType": "address", "indexed": true }], "anonymous": false }, { "type": "event", "name": "Transfer", "inputs": [{ "type": "address", "name": "from", "internalType": "address", "indexed": true }, { "type": "address", "name": "to", "internalType": "address", "indexed": true }, { "type": "uint256", "name": "value", "internalType": "uint256", "indexed": false }], "anonymous": false }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "allowTradeAt", "inputs": [] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "allowance", "inputs": [{ "type": "address", "name": "owner", "internalType": "address" }, { "type": "address", "name": "spender", "internalType": "address" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], "name": "approve", "inputs": [{ "type": "address", "name": "spender", "internalType": "address" }, { "type": "uint256", "name": "amount", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "balanceOf", "inputs": [{ "type": "address", "name": "account", "internalType": "address" }] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint8", "name": "", "internalType": "uint8" }], "name": "decimals", "inputs": [] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], "name": "decreaseAllowance", "inputs": [{ "type": "address", "name": "spender", "internalType": "address" }, { "type": "uint256", "name": "subtractedValue", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "enableFairLaunch", "inputs": [] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "excludeAccount", "inputs": [{ "type": "address", "name": "account", "internalType": "address" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "includeAccount", "inputs": [{ "type": "address", "name": "account", "internalType": "address" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], "name": "increaseAllowance", "inputs": [{ "type": "address", "name": "spender", "internalType": "address" }, { "type": "uint256", "name": "addedValue", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], "name": "isExcluded", "inputs": [{ "type": "address", "name": "account", "internalType": "address" }] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "string", "name": "", "internalType": "string" }], "name": "name", "inputs": [] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "address", "name": "", "internalType": "address" }], "name": "owner", "inputs": [] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "reflect", "inputs": [{ "type": "uint256", "name": "tAmount", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "reflectionFromToken", "inputs": [{ "type": "uint256", "name": "tAmount", "internalType": "uint256" }, { "type": "bool", "name": "deductTransferFee", "internalType": "bool" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "renounceOwnership", "inputs": [] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "string", "name": "", "internalType": "string" }], "name": "symbol", "inputs": [] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "tokenFromReflection", "inputs": [{ "type": "uint256", "name": "rAmount", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "totalFees", "inputs": [] }, { "type": "function", "stateMutability": "pure", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "totalSupply", "inputs": [] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], "name": "transfer", "inputs": [{ "type": "address", "name": "recipient", "internalType": "address" }, { "type": "uint256", "name": "amount", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], "name": "transferFrom", "inputs": [{ "type": "address", "name": "sender", "internalType": "address" }, { "type": "address", "name": "recipient", "internalType": "address" }, { "type": "uint256", "name": "amount", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "transferOwnership", "inputs": [{ "type": "address", "name": "newOwner", "internalType": "address" }] }];
31 | const AvaxBridgeAdress = "0x1aFCEF48379ECad5a6D790cE85ad1c87458C0f07";
32 | const SporeContract = new win.web3.eth.Contract(
33 | SporeABI,
34 | SporeAddress
35 | );
36 | var account = await win.web3.eth.getAccounts();
37 | account = account[0];
38 | var amount = ethers.BigNumber.from(docu.getElementById("spores").value).mul(10 ** 9);
39 | try {
40 | await SporeContract.methods
41 | .approve(AvaxBridgeAdress, amount)
42 | .send({ from: account, gasPrice: 225000000000 });
43 | } catch (error) {
44 | alert(error);
45 | }
46 | }
47 |
48 | const swapFromAVAX = async () => {
49 | const AvaxBridgeAdress = "0x1aFCEF48379ECad5a6D790cE85ad1c87458C0f07";
50 | const AvaxBridgeABI = [{ "type": "constructor", "stateMutability": "nonpayable", "inputs": [{ "type": "address", "name": "_token", "internalType": "address" }, { "type": "uint256", "name": "_fees", "internalType": "uint256" }] }, { "type": "event", "name": "OwnershipTransferred", "inputs": [{ "type": "address", "name": "previousOwner", "internalType": "address", "indexed": true }, { "type": "address", "name": "newOwner", "internalType": "address", "indexed": true }], "anonymous": false }, { "type": "event", "name": "Transfer", "inputs": [{ "type": "address", "name": "from", "internalType": "address", "indexed": false }, { "type": "address", "name": "to", "internalType": "address", "indexed": false }, { "type": "uint256", "name": "amount", "internalType": "uint256", "indexed": false }, { "type": "uint256", "name": "date", "internalType": "uint256", "indexed": false }, { "type": "uint256", "name": "nonce", "internalType": "uint256", "indexed": false }, { "type": "uint256", "name": "percent", "internalType": "uint256", "indexed": false }, { "type": "uint8", "name": "step", "internalType": "enum BridgeSporeAVAX.Step", "indexed": true }], "anonymous": false }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "address", "name": "", "internalType": "address" }], "name": "admin", "inputs": [] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "balance", "inputs": [] }, { "type": "function", "stateMutability": "payable", "outputs": [], "name": "burn", "inputs": [{ "type": "uint256", "name": "amount", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "changeFees", "inputs": [{ "type": "uint256", "name": "newFees", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "fees", "inputs": [] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "mint", "inputs": [{ "type": "address", "name": "to", "internalType": "address" }, { "type": "uint256", "name": "amount", "internalType": "uint256" }, { "type": "uint256", "name": "otherChainNonce", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "mintAndSwapForAVAX", "inputs": [{ "type": "address", "name": "to", "internalType": "address" }, { "type": "uint256", "name": "amount", "internalType": "uint256" }, { "type": "uint256", "name": "otherChainNonce", "internalType": "uint256" }, { "type": "uint256", "name": "percentSold", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "nonce", "inputs": [] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "address", "name": "", "internalType": "address" }], "name": "owner", "inputs": [] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "address", "name": "", "internalType": "address" }], "name": "pangoRouter", "inputs": [] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], "name": "processedNonces", "inputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "renounceOwnership", "inputs": [] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "address", "name": "", "internalType": "address" }], "name": "spore", "inputs": [] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "address", "name": "", "internalType": "contract IERC20" }], "name": "token", "inputs": [] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "transferOwnership", "inputs": [{ "type": "address", "name": "newOwner", "internalType": "address" }] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "address", "name": "", "internalType": "address" }], "name": "wavax", "inputs": [] }];
51 | const AvaxBridgeContract = new win.web3.eth.Contract(AvaxBridgeABI, AvaxBridgeAdress);
52 | var account = await win.web3.eth.getAccounts();
53 | account = account[0];
54 | var amount = ethers.BigNumber.from(docu.getElementById("spores").value).mul(10 ** 9);
55 | var fees = ethers.BigNumber.from("30000000000000000")
56 | try {
57 | await AvaxBridgeContract.methods
58 | .burn(amount)
59 | .send({ from: account, gasPrice: 225000000000, value: fees });
60 | } catch (error) {
61 | alert(error);
62 | }
63 | }
64 |
65 | const swapFromBSC = async () => {
66 | const BscBridgeAdress = "0x638E8FE7AD4D9C05735Ecb6b9c66013679276651";
67 | const BscBridgeABI = [{ "inputs": [{ "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "uint256", "name": "_fees", "type": "uint256" }], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [{ "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" }], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [{ "indexed": false, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "date", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "percent", "type": "uint256" }, { "indexed": true, "internalType": "enum BridgeSporeBSC.Step", "name": "step", "type": "uint8" }], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "admin", "outputs": [{ "internalType": "address", "name": "", "type": "address" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }], "name": "burn", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "percent", "type": "uint256" }], "name": "burnAndSwap", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [{ "internalType": "uint256", "name": "newFees", "type": "uint256" }], "name": "changeFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "fees", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "otherChainNonce", "type": "uint256" }], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "nonce", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [{ "internalType": "address", "name": "", "type": "address" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "name": "processedNonces", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "token", "outputs": [{ "internalType": "contract IToken", "name": "", "type": "address" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }];
68 | const BscBridgeContract = new win.web3.eth.Contract(BscBridgeABI, BscBridgeAdress);
69 | var account = await win.web3.eth.getAccounts();
70 | account = account[0];
71 | var amount = ethers.BigNumber.from(docu.getElementById("spores2").value).mul(10 ** 9);
72 | var fees = ethers.BigNumber.from("5000000000000000")
73 | try {
74 | if (docu.getElementById("checkbox").checked) {
75 | var percent = 10;
76 | await BscBridgeContract.methods
77 | .burnAndSwap(account, amount, percent)
78 | .send({ from: account, value: fees });
79 | } else {
80 | await BscBridgeContract.methods
81 | .burn(account, amount)
82 | .send({ from: account, value: fees });
83 | }
84 | } catch (error) {
85 | alert(error);
86 | }
87 | }
88 |
89 |
90 | const getSporeInWalletAVAX = async () => {
91 | const SporeAddress = "0x6e7f5C0b9f4432716bDd0a77a3601291b9D9e985";
92 | const SporeABI = [{ "type": "constructor", "stateMutability": "nonpayable", "inputs": [] }, { "type": "event", "name": "Approval", "inputs": [{ "type": "address", "name": "owner", "internalType": "address", "indexed": true }, { "type": "address", "name": "spender", "internalType": "address", "indexed": true }, { "type": "uint256", "name": "value", "internalType": "uint256", "indexed": false }], "anonymous": false }, { "type": "event", "name": "OwnershipTransferred", "inputs": [{ "type": "address", "name": "previousOwner", "internalType": "address", "indexed": true }, { "type": "address", "name": "newOwner", "internalType": "address", "indexed": true }], "anonymous": false }, { "type": "event", "name": "Transfer", "inputs": [{ "type": "address", "name": "from", "internalType": "address", "indexed": true }, { "type": "address", "name": "to", "internalType": "address", "indexed": true }, { "type": "uint256", "name": "value", "internalType": "uint256", "indexed": false }], "anonymous": false }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "allowTradeAt", "inputs": [] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "allowance", "inputs": [{ "type": "address", "name": "owner", "internalType": "address" }, { "type": "address", "name": "spender", "internalType": "address" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], "name": "approve", "inputs": [{ "type": "address", "name": "spender", "internalType": "address" }, { "type": "uint256", "name": "amount", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "balanceOf", "inputs": [{ "type": "address", "name": "account", "internalType": "address" }] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint8", "name": "", "internalType": "uint8" }], "name": "decimals", "inputs": [] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], "name": "decreaseAllowance", "inputs": [{ "type": "address", "name": "spender", "internalType": "address" }, { "type": "uint256", "name": "subtractedValue", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "enableFairLaunch", "inputs": [] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "excludeAccount", "inputs": [{ "type": "address", "name": "account", "internalType": "address" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "includeAccount", "inputs": [{ "type": "address", "name": "account", "internalType": "address" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], "name": "increaseAllowance", "inputs": [{ "type": "address", "name": "spender", "internalType": "address" }, { "type": "uint256", "name": "addedValue", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], "name": "isExcluded", "inputs": [{ "type": "address", "name": "account", "internalType": "address" }] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "string", "name": "", "internalType": "string" }], "name": "name", "inputs": [] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "address", "name": "", "internalType": "address" }], "name": "owner", "inputs": [] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "reflect", "inputs": [{ "type": "uint256", "name": "tAmount", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "reflectionFromToken", "inputs": [{ "type": "uint256", "name": "tAmount", "internalType": "uint256" }, { "type": "bool", "name": "deductTransferFee", "internalType": "bool" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "renounceOwnership", "inputs": [] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "string", "name": "", "internalType": "string" }], "name": "symbol", "inputs": [] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "tokenFromReflection", "inputs": [{ "type": "uint256", "name": "rAmount", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "view", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "totalFees", "inputs": [] }, { "type": "function", "stateMutability": "pure", "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], "name": "totalSupply", "inputs": [] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], "name": "transfer", "inputs": [{ "type": "address", "name": "recipient", "internalType": "address" }, { "type": "uint256", "name": "amount", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], "name": "transferFrom", "inputs": [{ "type": "address", "name": "sender", "internalType": "address" }, { "type": "address", "name": "recipient", "internalType": "address" }, { "type": "uint256", "name": "amount", "internalType": "uint256" }] }, { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "transferOwnership", "inputs": [{ "type": "address", "name": "newOwner", "internalType": "address" }] }];
93 | const SporeContract = new win.web3.eth.Contract(
94 | SporeABI,
95 | SporeAddress
96 | );
97 | var account = await win.web3.eth.getAccounts();
98 | account = account[0];
99 | try {
100 | var spores = await SporeContract.methods.balanceOf(account).call();
101 | console.log(spores)
102 | return spores
103 | } catch (error) {
104 | console.log(error);
105 | return 0
106 | }
107 | }
108 | const getSporeInWalletBSC = async () => {
109 | const SporeAddress = "0x33A3d962955A3862C8093D1273344719f03cA17C";
110 | const SporeABI = [{ "inputs": [{ "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [{ "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [{ "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "admin", "outputs": [{ "internalType": "address", "name": "", "type": "address" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }], "name": "allowance", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }], "name": "approve", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], "name": "balanceOf", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "burned", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" }], "name": "decreaseAllowance", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" }], "name": "increaseAllowance", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [{ "internalType": "string", "name": "", "type": "string" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [{ "internalType": "string", "name": "", "type": "string" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }], "name": "transfer", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }], "name": "transferFrom", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "newAdmin", "type": "address" }], "name": "updateAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }];
111 | const SporeContract = new win.web3.eth.Contract(
112 | SporeABI,
113 | SporeAddress
114 | );
115 | var account = await win.web3.eth.getAccounts();
116 | account = account[0];
117 | try {
118 | var spores = await SporeContract.methods.balanceOf(account).call();
119 | console.log(spores)
120 | return spores
121 | } catch (error) {
122 | console.log(error);
123 | return 0
124 | }
125 | }
126 |
127 | const setMaxSporeAVAX = async () => {
128 | var maxSpores = await getSporeInWalletAVAX();
129 | docu.getElementById("spores").value = maxSpores / 10 ** 9;
130 | docu.getElementById("spores").value = docu.getElementById("spores").value.split('.')[0]
131 | }
132 |
133 | const setMaxSporeBSC = async () => {
134 | var maxSpores = await getSporeInWalletBSC();
135 | docu.getElementById("spores2").value = maxSpores / 10 ** 9;
136 | docu.getElementById("spores2").value = docu.getElementById("spores2").value.split('.')[0]
137 | }
138 |
139 | const BSCBridge = () => {
140 | const [numberOfSporeAVAX, setNumberOfSporeAVAX] = useState(0)
141 | const [numberOfSporeBSC, setNumberOfSporeBSC] = useState(0)
142 | const [feesBNB] = useState(0.005)
143 | const [feesAVAX] = useState(0.03)
144 | const [network, setNetwork] = useState(Connect wallet )
145 |
146 | // network: Connect wallet ,
147 | useEffect(() => {
148 | async function startup() {
149 | const script = document.createElement("script");
150 | script.src = "/bscbridge.js";
151 | script.async = true;
152 | document.body.appendChild(script);
153 | connectMetaMask();
154 | var numberOfSporeAVAX = await getSporeInWalletAVAX() / 10 ** 9;
155 | var numberOfSporeBSC = await getSporeInWalletBSC() / 10 ** 9;
156 | var nid = await getNetworkId();
157 | setNumberOfSporeAVAX(numberOfSporeAVAX)
158 | setNumberOfSporeBSC(numberOfSporeBSC)
159 | setNetwork(nid)
160 |
161 | }
162 | startup()
163 |
164 | }, [])
165 |
166 | return (
167 |
168 |
169 |
170 |
171 |
172 |
AVALANCHE / BSC SPORE BRIDGE
173 |
174 |
175 | {network}
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
FROM Avalanche
184 |
Balance : {numberOfSporeAVAX}
185 |
186 |
187 |
188 | MAX
189 |
190 |
191 |
192 | APPROVE
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
TO Avalanche
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
TO Binance Smart Chain
209 |
210 |
211 |
212 |
213 |
214 |
215 |
FROM Binance Smart Chain
216 |
Balance : {numberOfSporeBSC}
217 |
218 |
219 |
220 | MAX
221 |
222 |
223 |
Swap some SPORE for AVAX (10%)
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 | Transfer fees : {feesAVAX} AVAX
232 | TRANSFER
233 |
234 |
235 | Transfer fees : {feesBNB} BNB
236 | TRANSFER
237 |
238 |
239 |
240 |
241 |
Disclaimer: this is a version alpha. Use at your own risk please come to discord if you have an issue.
242 |
243 |
244 |
245 |
246 |
Trust Wallet Steps 😎
247 |
248 |
249 | Step 1 - Install
253 | metamask extension - use chrome
254 | Step 2 - Add both Avalanche and BSC chains
261 | Step 3 - Add 🍄 SPORE to both chains in metamask
262 | Add token - Custom - paste
263 | 0x33a3d962955a3862c8093d1273344719f03ca17c (spore on BSC)
264 | 0x6e7f5C0b9f4432716bDd0a77a3601291b9D9e985 (spore on Avax)
265 | Step 4 - Send 🍄 SPORE from Trust Wallet to Metamask
266 | Step 5 - Send tiny bit of BNB from Trust Wallet to Metamask
267 | Close your trust wallet 🎉 open your browser again
268 | Step 6 - Goto 🍄 SPORE Bridge
269 | Step 7 - Enable Metamask
270 | Step 8 - Click ‘Max’
271 | Step 9 - Click ‘Transfer’
272 | 😌 - Ahhhhh
273 | Step 10 - Flip to Avalanche chain
274 | Step 11 - Wait for spore to arrive (couple of minutes)
275 | Step 12 - Confirm spore is growing in wallet
276 |
277 |
278 |
279 |
280 |
281 |
282 | );
283 | }
284 |
285 | export default BSCBridge
--------------------------------------------------------------------------------
/src/components/BurnedTokens.css:
--------------------------------------------------------------------------------
1 | .BurnedTokens {
2 | display: flex;
3 | flex-direction: column;
4 | font-size: calc(1px + 1.5vmin);
5 | color: white;
6 | }
7 |
8 | ul { margin: 2px;}
9 |
10 | a {
11 | color: white;
12 | text-decoration: underline;
13 | }
14 | a:hover {
15 | cursor: pointer;
16 | }
17 |
18 |
19 | .bscLink{
20 | color: grey;
21 | }
--------------------------------------------------------------------------------
/src/components/BurnedTokens.tsx:
--------------------------------------------------------------------------------
1 | // src/Footer.js
2 | import './BurnedTokens.css';
3 |
4 | import React from 'react';
5 | import axios from 'axios';
6 | import { useState } from 'react';
7 | import Web3 from 'web3'
8 | import { useEffect } from 'react';
9 |
10 | const TOTAL_SUPPLY = 100000000000000000;
11 |
12 | const win = window as any
13 | win.web3 = new Web3('https://bsc-dataseed1.binance.org:443')
14 |
15 | const BurnedTokens = () => {
16 | const [numberOfBurnedTokens, setNumberOfBurnedTokens] = useState(-1)
17 | const [numberOfBurnedTokensBSC, setNumberOfBurnedTokensBSC] = useState(-1)
18 | const [numberOfTokenHolders, setNumberOfTokenHolders] = useState(-1)
19 | const [numberOfTokenHoldersBSC, setNumberOfTokenHoldersBSC] = useState(-1)
20 |
21 | useEffect(() => {
22 | async function getInfos() {
23 | await getBurnedTokens()
24 | await getTokenHolders()
25 | await getBurnedTokensBSC()
26 | await getTokenHoldersBSC()
27 | setInterval(async () => {
28 | await getBurnedTokens()
29 | await getTokenHolders()
30 | await getTokenHoldersBSC()
31 | await getBurnedTokensBSC()
32 | }, 60000)
33 | }
34 | getInfos()
35 |
36 | }, [])
37 |
38 | const getBurnedTokens = async () => {
39 | try {
40 | console.log("getting burned tokens")
41 | const res = await axios.get(
42 | 'https://api.covalenthq.com/v1/43114/address/0x000000000000000000000000000000000000dEaD/balances_v2/?nft=false'
43 | );
44 |
45 | if (
46 | res.data !== undefined &&
47 | res.data.data !== undefined &&
48 | res.data.data.items !== undefined
49 | ) {
50 | const items = res.data.data.items;
51 | items.forEach((coin: any) => {
52 | if (coin.contract_address === '0x6e7f5c0b9f4432716bdd0a77a3601291b9d9e985') {
53 | setNumberOfBurnedTokens(coin.balance / (10 ** 9))
54 | }
55 | })
56 | }
57 |
58 | }
59 | catch (err) {
60 | console.log("Error getting burned tokens avax")
61 | }
62 | }
63 | const getBurnedTokensBSC = async () => {
64 | console.log('get burned tokens bsc')
65 | const SporeAddress = "0x33A3d962955A3862C8093D1273344719f03cA17C";
66 | const SporeABI = [{ "inputs": [{ "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [{ "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [{ "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "admin", "outputs": [{ "internalType": "address", "name": "", "type": "address" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }], "name": "allowance", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }], "name": "approve", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], "name": "balanceOf", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "burned", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" }], "name": "decreaseAllowance", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" }], "name": "increaseAllowance", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [{ "internalType": "string", "name": "", "type": "string" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [{ "internalType": "string", "name": "", "type": "string" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }], "name": "transfer", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }], "name": "transferFrom", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "newAdmin", "type": "address" }], "name": "updateAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }]
67 | const SporeContract = new win.web3.eth.Contract(
68 | SporeABI,
69 | SporeAddress
70 | );
71 | try {
72 | console.log("GETTING BURNED TOKENS BSC")
73 | const burned = await SporeContract.methods.burned().call()
74 | setNumberOfBurnedTokensBSC(burned / (10 ** 9))
75 |
76 | } catch (error) {
77 | console.log("CANNOT READ BURNED TOKENS BSC", error)
78 | }
79 | }
80 |
81 | const getTokenHolders = async () => {
82 | console.log("getting token holders avax")
83 | try {
84 | const res = await axios.get(
85 | 'https://api.covalenthq.com/v1/43114/tokens/0x6e7f5C0b9f4432716bDd0a77a3601291b9D9e985/token_holders/?page-size=999999&key=ckey_a09c56c3188547958bd621253a4'
86 | )
87 |
88 | if (
89 | res.data !== undefined &&
90 | res.data.data !== undefined &&
91 | res.data.data.items !== undefined
92 | ) {
93 | const items = res.data.data.items;
94 | setNumberOfTokenHolders(items.length)
95 | }
96 |
97 | }
98 | catch (err) {
99 | console.log("errror getting holders avax", err)
100 | }
101 |
102 | }
103 | const getTokenHoldersBSC = async () => {
104 | try {
105 | const res = await axios.get(
106 | 'https://api.covalenthq.com/v1/56/tokens/0x33a3d962955a3862c8093d1273344719f03ca17c/token_holders/?page-size=99999'
107 | )
108 |
109 | if (
110 | res.data !== undefined &&
111 | res.data.data !== undefined &&
112 | res.data.data.items !== undefined
113 | ) {
114 | const items = res.data.data.items;
115 | setNumberOfTokenHoldersBSC(items.length)
116 | }
117 | else {
118 | console.log('test')
119 | console.log(res)
120 | }
121 | }
122 | catch (err) {
123 | console.log("Error getting token holders bsc")
124 | ///HARDCODED VALUE
125 | setNumberOfTokenHoldersBSC(97025)
126 | }
127 |
128 | }
129 |
130 | const numberWithCommas = (x: number) => {
131 | return x.toFixed(0).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,');
132 | }
133 | const burnedTokensPercentage = (burnedAVAX: number, burnedBSC: number): string => {
134 | return ((burnedAVAX + burnedBSC) / TOTAL_SUPPLY * 100).toFixed(2)
135 |
136 | }
137 | return (
138 | <>
139 |
140 | Burned Tokens (Avalanche) : {numberWithCommas(numberOfBurnedTokens)} SPORE
141 |
142 |
143 | Burned Tokens (BSC) : {numberWithCommas(numberOfBurnedTokensBSC)} SPORE
144 |
145 |
146 | % of Burned Tokens : {burnedTokensPercentage(numberOfBurnedTokens, numberOfBurnedTokensBSC)} %
147 |
148 |
149 | Number of token holders (Avalanche) : {numberOfTokenHolders}
150 |
151 |
152 | Number of token holders (BSC) : {numberOfTokenHoldersBSC}+. bscscan
153 |
154 | >
155 | );
156 | }
157 |
158 |
159 | export default BurnedTokens
160 |
--------------------------------------------------------------------------------
/src/components/ComingSoon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Lottie from 'react-lottie';
3 | import comingSoon from '../utils/coming-soon.json';
4 |
5 | const defaultOptions = {
6 | loop: true,
7 | autoplay: true,
8 | animationData: comingSoon
9 | };
10 | const ComingSoon = () => {
11 | return (
12 |
13 |
14 |
15 | );
16 | }
17 |
18 | export default ComingSoon
19 |
--------------------------------------------------------------------------------
/src/components/Information.css:
--------------------------------------------------------------------------------
1 | .information .feature {
2 | font-size: 46px;
3 | }
4 |
5 | .information .feature span {
6 | color:#6B4E3B;
7 | font-weight: bold;
8 | }
9 |
10 | .bg-white {
11 | color: #212121;
12 | }
13 | .bg-white-darker {
14 | background-color: #f1f3f6;
15 | color: #212121;
16 | }
17 |
18 | .bg-white li {
19 | font-size: 20px;
20 | }
21 | .bg-white li b {
22 | color: #4B5626;
23 | }
24 |
25 | .bg-white h2 {
26 | color:#6B4E3B;
27 | font-weight: bold;
28 | padding-bottom: 15px;
29 | }
30 | .circle {
31 | padding: 13px 20px;
32 | border-radius: 50%;
33 | background-color: #4B5626;
34 | color: #fff;
35 | max-height: 50px;
36 | z-index: 2;
37 | }
38 |
39 | .how-it-works.row .col-2 {
40 | align-self: stretch;
41 | }
42 | .how-it-works.row .col-2::after {
43 | content: "";
44 | position: absolute;
45 | border-left: 3px solid #4B5626;
46 | z-index: 1;
47 | }
48 | .how-it-works.row .col-2.bottom::after {
49 | height: 50%;
50 | left: 50%;
51 | top: 50%;
52 | }
53 | .how-it-works.row .col-2.full::after {
54 | height: 100%;
55 | left: calc(50% - 3px);
56 | }
57 | .how-it-works.row .col-2.full-left::after {
58 | height: 100%;
59 | left: 50% ;
60 | }
61 | .how-it-works.row .col-2.top::after {
62 | height: 50%;
63 | left: 50%;
64 | top: 0;
65 | }
66 | .how-it-works.row .col-2.top-right::after {
67 | height: 50%;
68 | left: calc(50% - 3px);
69 | top: 0;
70 | }
71 |
72 | .timeline div {
73 | padding: 0;
74 | height: 40px;
75 | }
76 | .timeline hr {
77 | border-top: 3px solid #4B5626;
78 | margin: 0;
79 | top: 17px;
80 | position: relative;
81 | }
82 | .timeline .col-2 {
83 | display: flex;
84 | overflow: hidden;
85 | }
86 | .timeline .corner {
87 | border: 3px solid #4B5626;
88 | width: 100%;
89 | position: relative;
90 | border-radius: 15px;
91 | }
92 | .timeline .top-right {
93 | left: 50%;
94 | top: -50%;
95 | }
96 | .timeline .left-bottom {
97 | left: -50%;
98 | top: calc(50% - 3px);
99 | }
100 | .timeline .top-left {
101 | left: -50%;
102 | top: -50%;
103 | }
104 | .timeline .right-bottom {
105 | left: 50%;
106 | top: calc(50% - 3px);
107 | }
108 |
109 | .card .card-body {
110 | color: #212121;
111 | }
112 |
113 | .center {
114 | text-align:center;
115 | }
116 |
117 | .larger {
118 | font-size: x-large;
119 | }
120 |
121 | dt, dd {
122 | white-space: nowrap;
123 | }
124 |
125 | dl {
126 | margin-left: 20px;
127 | }
128 |
129 | dt {
130 | margin-left: 60px;
131 | }
132 |
133 | dd {
134 | margin-left: 40px;
135 | }
136 |
137 | ul.lead {
138 | margin-bottom: 20px;
139 | }
140 |
141 | .tips dt, dd dl {
142 | margin-left: 0
143 | }
144 |
145 | .tips {
146 | text-align: left;
147 | }
148 |
149 | .price {
150 | display: inline-block;
151 | margin-bottom: 10px;
152 | }
153 |
154 | .social-links.row {
155 | display: flex;
156 | justify-content: center;
157 | }
--------------------------------------------------------------------------------
/src/components/Information.tsx:
--------------------------------------------------------------------------------
1 | // src/Footer.js
2 | import './Information.css';
3 |
4 |
5 | import React from 'react';
6 | import BurnedTokens from './BurnedTokens';
7 | import PriceToken from './PriceToken';
8 | //@ts-ignore
9 | import HowToBuyPDF from '../utils/how_to_buy.pdf';
10 | import Contributors from './contributors';
11 |
12 | const Information = () => {
13 | return (
14 | <>
15 |
16 |
17 |
18 |
19 | What is Spore Finance
20 |
21 |
22 | Spore Finance aims to create an ecosystem combining
23 |
24 |
25 | reflect tokens
26 | algorithmically generated NFTs
27 | next-gen NFT prediction market
28 |
29 |
30 | Meet Spore
31 |
32 |
33 |
36 |
37 |
38 | On Every Transaction
40 | 3% of rewards are burnt
41 | 3% are redistributed to hodlers
42 | On Every Transaction
43 | 6% of rewards are burnt
44 |
45 |
46 |
47 | Earn frictionless rewards while spore spreads!
48 |
49 |
50 | BSC users enjoy ever decreasing circulating supply.
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
Tokeneconomics
66 |
67 | Dev fund : 0%
68 |
69 | Total Supply : 100,000,000,000,000,000 SPORE
70 |
71 | <>
72 |
73 | >
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
Roadmap
84 |
85 |
86 |
87 |
90 |
91 |
Fair and stealth launch
92 |
93 | 18 March 2021
94 |
95 |
96 |
97 |
98 |
101 |
102 |
103 |
104 |
107 |
108 |
109 |
110 |
111 |
Setting up Airdrops & Incentive program
112 |
113 | 20 March 2021
114 |
115 |
116 |
119 |
120 |
121 |
122 |
125 |
126 |
127 |
128 |
131 |
132 |
133 |
134 |
137 |
138 |
Second layer blockchain development + Bridge (Binance Smart Chain)
139 |
140 | 6 April 2021
141 |
142 |
143 |
144 |
145 |
146 |
149 |
150 |
151 |
152 |
155 |
156 |
157 |
158 |
159 |
Farming Partnerships
160 |
161 | 12 April 2021
162 |
163 |
164 |
167 |
168 |
169 |
170 |
171 |
172 |
175 |
176 |
177 |
178 |
181 |
182 |
183 |
184 |
185 |
188 |
189 |
Algorithmically generated NFTs
190 |
191 | In Progress
192 |
193 |
194 |
195 |
196 |
197 |
198 |
201 |
202 |
203 |
204 |
207 |
208 |
209 |
210 |
211 |
Governance
212 |
213 | In Progress
214 |
215 |
216 |
219 |
220 |
221 |
222 |
225 |
226 |
227 |
228 |
231 |
232 |
233 |
234 |
237 |
238 |
Cross-chain compatibility
239 |
240 | Q3 2021
241 |
242 |
243 |
244 |
245 |
246 |
249 |
250 |
251 |
252 |
255 |
256 |
257 |
258 |
259 |
NFTs Prediction Market
260 |
261 | Q4 2021
262 |
263 |
264 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
Developers
275 |
276 |
277 |
278 | <>
279 |
280 | >
281 |
282 |
283 |
284 |
285 |
286 |
287 |
Links
288 |
289 |
347 |
365 |
383 |
401 |
419 |
420 |
421 |
422 |
423 | >
424 | )
425 | }
426 |
427 | export default Information
428 |
--------------------------------------------------------------------------------
/src/components/Particles.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | import Particles from 'react-particles-js';
4 |
5 |
6 | const MyParticles = () => {
7 | return (
8 |
60 | )
61 | }
62 |
63 |
64 |
65 | export default MyParticles
66 |
--------------------------------------------------------------------------------
/src/components/PriceToken.tsx:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 | import { useEffect, useState } from 'react';
3 |
4 | const PriceToken = () => {
5 | const [usd, setUsd] = useState({ price: 0, zeros: 0})
6 | const [avax, setAvax] = useState({ price: '0', zeros: 0})
7 | const [bnb, setBnb] = useState({ price: '0', zeros: 0})
8 | const [currency, setCurrency] = useState('usd')
9 |
10 | useEffect(() => {
11 | async function getInfos() {
12 | await getPriceToken()
13 | setInterval(async () => {
14 | await getPriceToken()
15 | }, 300000)
16 | }
17 | getInfos()
18 | }, [])
19 |
20 | const toggleCurrency = () => {
21 | switch (currency) {
22 | case 'usd':
23 | setCurrency('avax')
24 | break;
25 | case 'avax':
26 | setCurrency('bnb')
27 | break;
28 | case 'bnb':
29 | setCurrency('usd')
30 | break;
31 | default:
32 | setCurrency('usd')
33 | break;
34 | }
35 | };
36 |
37 |
38 | const getPriceToken = async () => {
39 | await axios.get('https://api.coingecko.com/api/v3/coins/spore-finance-2/market_chart?vs_currency=usd&days=1')
40 | .then(res => {
41 | const {data = null} = res
42 | if (data) {
43 | const price = data.prices[data.prices.length -1][data.prices[data.prices.length -1].length -1].toFixed(18)
44 | const zeros = price.match(/^0.(0)+/g) ? price.match(/^0.(0)+/g)[0].length - 2 : 0
45 | setUsd({ price, zeros })
46 | }
47 | }).catch(error => {
48 | console.error(error)
49 | })
50 | await axios.get('https://api.coingecko.com/api/v3/coins/spore-finance-2?localization=false&tickers=true&market_data=false&community_data=false&developer_data=false&sparkline=false')
51 | .then(res2 => {
52 | const {data = null} = res2
53 | if (data) {
54 | data.tickers.forEach((ticker: { target: string, last: number }) => {
55 | if (ticker.target === 'WBNB') {
56 | const bnb = ticker.last.toFixed(18)
57 | const zerosBnb = bnb.match(/^0.(0)+/g) ? bnb.match(/^0.(0)+/g)![0].length - 2 : 0
58 | setBnb({ price: bnb, zeros: zerosBnb })
59 | }
60 | if (ticker.target === 'AVAX') {
61 | const avax = ticker.last.toFixed(18)
62 | const zerosAvax = avax.match(/^0.(0)+/g) ? avax.match(/^0.(0)+/g)![0].length - 2 : 0
63 | setAvax({ price: avax, zeros: zerosAvax })
64 | }
65 | });
66 | }
67 | }).catch(error => {
68 | console.error(error)
69 | })
70 | }
71 |
72 | return (
73 | <>
74 |
75 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
92 | {currency === 'bnb' && ( )}
93 | {currency === 'avax' && ( )}
94 | {currency === 'usd' ? `💲`+usd.price : currency === 'avax' ? avax.price : bnb.price}
95 |
96 |
97 |
98 | That's {
99 | currency === 'usd' ? usd.zeros : currency === 'avax' ? avax.zeros : bnb.zeros} zeros! 🚀
100 |
101 | >
102 | );
103 | }
104 |
105 | export default PriceToken
106 |
--------------------------------------------------------------------------------
/src/components/contributors.css:
--------------------------------------------------------------------------------
1 | .contributor-style img{
2 | width: 2em;
3 | }
4 |
5 | .contributor-style a{
6 | text-decoration: none;
7 | color: #6B4E3B;
8 | font-size: 2em;
9 | }
10 | .contributor-style{
11 | display: inline-block;
12 | margin: 1em;
13 | }
14 |
15 |
16 | @media (min-width: 1025px) and (max-width: 1280px) {
17 |
18 | /* CSS */
19 | .contributor-style img{
20 | width: 1.8em;
21 | }
22 |
23 | .contributor-style a{
24 | font-size: 1.5em;
25 | }
26 |
27 | }
28 |
29 | /*
30 | ##Device = Tablets, Ipads (portrait)
31 | ##Screen = B/w 768px to 1024px
32 | */
33 |
34 | @media (min-width: 768px) and (max-width: 1024px) {
35 |
36 | /* CSS */
37 | .contributor-style img{
38 | width: 1.8em;
39 | }
40 |
41 | .contributor-style a{
42 | font-size: 1.5em;
43 | }
44 |
45 | }
46 |
47 | /*
48 | ##Device = Tablets, Ipads (landscape)
49 | ##Screen = B/w 768px to 1024px
50 | */
51 |
52 | @media (min-width: 768px) and (max-width: 1024px) and (orientation: landscape) {
53 |
54 | /* CSS */
55 | .contributor-style img{
56 | width: 1.8em;
57 | }
58 |
59 | .contributor-style a{
60 | font-size: 1.5em;
61 | }
62 | }
63 |
64 | /*
65 | ##Device = Low Resolution Tablets, Mobiles (Landscape)
66 | ##Screen = B/w 481px to 767px
67 | */
68 |
69 | @media (min-width: 481px) and (max-width: 767px) {
70 |
71 | /* CSS */
72 | .contributor-style img{
73 | width: 1.8em;
74 | }
75 |
76 | .contributor-style a{
77 | font-size: 1.5em;
78 | }
79 | }
80 |
81 | /*
82 | ##Device = Most of the Smartphones Mobiles (Portrait)
83 | ##Screen = B/w 320px to 479px
84 | */
85 |
86 | @media (min-width: 320px) and (max-width: 480px) {
87 |
88 | /* CSS */
89 | .contributor-style img{
90 | width: 1.8em;
91 | }
92 |
93 | .contributor-style a{
94 | font-size: 1.5em;
95 | }
96 | }
--------------------------------------------------------------------------------
/src/components/contributors.tsx:
--------------------------------------------------------------------------------
1 | import './contributors.css';
2 | import axios from 'axios';
3 | import { useEffect, useState } from 'react';
4 |
5 | const Contributors = () => {
6 | const [contrib, setContributors] = useState([]);
7 |
8 | useEffect(() => {
9 | async function getContributors() {
10 | getContributorsJson()
11 | }
12 | getContributors()
13 | }, [])
14 |
15 | const getContributorsJson = () => {
16 | axios.get(
17 | 'https://api.github.com/repos/SporeFinance/Spore-frontend/contributors'
18 | ).then(res => {
19 | setContributors(res.data);
20 | });
21 | }
22 |
23 | return (
24 | <>
25 |
26 | {
27 | contrib.map((data: any) => {
28 | return
34 | })
35 | }
36 |
37 | >
38 | );
39 |
40 | };
41 | export default Contributors;
--------------------------------------------------------------------------------
/src/components/layout/Footer.css:
--------------------------------------------------------------------------------
1 | .footer a.credit {
2 | font-size: 42px;
3 | text-decoration: none;
4 | font-weight: bold;
5 | }
--------------------------------------------------------------------------------
/src/components/layout/Footer.tsx:
--------------------------------------------------------------------------------
1 | // src/Footer.js
2 | import './Footer.css';
3 |
4 | import React from 'react';
5 |
6 | const Footer = () => {
7 | return (
8 |
23 | );
24 | }
25 |
26 | export default Footer;
27 |
--------------------------------------------------------------------------------
/src/components/layout/Header.css:
--------------------------------------------------------------------------------
1 | .navbar {
2 | transition: all 0.4s;
3 | background-color: #6B4E3B;
4 | }
5 |
6 | .navbar .logo {
7 | max-height: 50px;
8 | margin-right: 10px;
9 | }
10 |
11 | .navbar .navbar-brand {
12 | text-decoration: none;
13 | font-size: 32px;
14 | }
15 |
16 | .imagenespeciada {
17 | margin-left: 5px;
18 | }
19 |
20 | .navbar .nav-item {
21 | padding: 0 15px;
22 | text-align: start;
23 | }
24 |
25 | .navbar .nav-link,
26 | .navbar .btn {
27 | text-decoration: none;
28 | }
29 |
30 | .navbar a:hover,
31 | .navbar a:focus {
32 | text-decoration: none;
33 | color: #EBD5C7;
34 | }
35 |
36 | .navbar a.btn:hover,
37 | .navbar a.btn:focus {
38 | text-decoration: none;
39 | color: #6B4E3B;
40 | }
41 |
42 | .navbar a {
43 | text-decoration: none;
44 | }
45 |
46 | .dropdown {
47 | background-color: #6B4E3B;
48 | }
49 |
50 | .dropdown-menu {
51 | background-color: #6B4E3B;
52 | padding: 15px;
53 | border: 1px solid white;
54 | }
55 |
56 | .dropdown-menu li {
57 | margin: 2px;
58 | }
59 |
60 | .divider {
61 | border: 1px solid white;
62 | }
63 |
--------------------------------------------------------------------------------
/src/components/layout/Header.tsx:
--------------------------------------------------------------------------------
1 | // src/Header.js
2 | import './Header.css';
3 |
4 | import React from 'react';
5 | import Web3 from 'web3';
6 | import { Link } from 'react-router-dom';
7 |
8 | const win = window as any
9 | const connectMetaMask = () => {
10 | if (win.ethereum) {
11 | win.web3 = new Web3(win.ethereum);
12 | win.ethereum.enable();
13 | }
14 | }
15 |
16 | const claimAirdrop = async (e: any) => {
17 | e.preventDefault();
18 | connectMetaMask();
19 | const ABI = [
20 | {
21 | type: 'constructor',
22 | stateMutability: 'nonpayable',
23 | inputs: [
24 | { type: 'address', name: 'contrak', internalType: 'contract IERC20' }
25 | ]
26 | },
27 | {
28 | type: 'event',
29 | name: 'Deposit',
30 | inputs: [
31 | {
32 | type: 'address',
33 | name: 'user',
34 | internalType: 'address',
35 | indexed: true
36 | },
37 | {
38 | type: 'uint256',
39 | name: 'pid',
40 | internalType: 'uint256',
41 | indexed: false
42 | },
43 | {
44 | type: 'uint256',
45 | name: 'amount',
46 | internalType: 'uint256',
47 | indexed: false
48 | }
49 | ],
50 | anonymous: false
51 | },
52 | {
53 | type: 'event',
54 | name: 'OwnershipTransferred',
55 | inputs: [
56 | {
57 | type: 'address',
58 | name: 'previousOwner',
59 | internalType: 'address',
60 | indexed: true
61 | },
62 | {
63 | type: 'address',
64 | name: 'newOwner',
65 | internalType: 'address',
66 | indexed: true
67 | }
68 | ],
69 | anonymous: false
70 | },
71 | {
72 | type: 'event',
73 | name: 'Withdraw',
74 | inputs: [
75 | {
76 | type: 'address',
77 | name: 'user',
78 | internalType: 'address',
79 | indexed: true
80 | },
81 | {
82 | type: 'uint256',
83 | name: 'pid',
84 | internalType: 'uint256',
85 | indexed: false
86 | },
87 | {
88 | type: 'uint256',
89 | name: 'amount',
90 | internalType: 'uint256',
91 | indexed: false
92 | }
93 | ],
94 | anonymous: false
95 | },
96 | {
97 | type: 'function',
98 | stateMutability: 'view',
99 | outputs: [{ type: 'uint256', name: '', internalType: 'uint256' }],
100 | name: 'balance',
101 | inputs: []
102 | },
103 | {
104 | type: 'function',
105 | stateMutability: 'view',
106 | outputs: [{ type: 'address', name: '', internalType: 'contract IERC20' }],
107 | name: 'contractaddress',
108 | inputs: []
109 | },
110 | {
111 | type: 'function',
112 | stateMutability: 'nonpayable',
113 | outputs: [],
114 | name: 'deposit',
115 | inputs: [{ type: 'uint256', name: '_amount', internalType: 'uint256' }]
116 | },
117 | {
118 | type: 'function',
119 | stateMutability: 'nonpayable',
120 | outputs: [],
121 | name: 'get',
122 | inputs: []
123 | },
124 | {
125 | type: 'function',
126 | stateMutability: 'view',
127 | outputs: [{ type: 'address', name: '', internalType: 'address' }],
128 | name: 'owner',
129 | inputs: []
130 | },
131 | {
132 | type: 'function',
133 | stateMutability: 'nonpayable',
134 | outputs: [],
135 | name: 'renounceOwnership',
136 | inputs: []
137 | },
138 | {
139 | type: 'function',
140 | stateMutability: 'nonpayable',
141 | outputs: [],
142 | name: 'transferOwnership',
143 | inputs: [{ type: 'address', name: 'newOwner', internalType: 'address' }]
144 | },
145 | {
146 | type: 'function',
147 | stateMutability: 'nonpayable',
148 | outputs: [],
149 | name: 'update',
150 | inputs: [{ type: 'uint256', name: '_amount', internalType: 'uint256' }]
151 | }
152 | ];
153 | const fairyContract = new win.web3.eth.Contract(
154 | ABI,
155 | '0xeAdf7D005596dbad55e067C1208080f83258D452'
156 | );
157 | var account = await win.web3.eth.getAccounts();
158 | account = account[0];
159 | console.log(account);
160 | try {
161 | await fairyContract.methods
162 | .get()
163 | .send({ from: account, gasPrice: 225000000000, gas: 200000 });
164 | } catch (error) {
165 | alert(error);
166 | }
167 | }
168 |
169 | const Header = () => {
170 | return (
171 |
297 | )
298 | }
299 |
300 | export default Header
301 |
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
5 | sans-serif;
6 | -webkit-font-smoothing: antialiased;
7 | -moz-osx-font-smoothing: grayscale;
8 | }
9 |
10 | code {
11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
12 | monospace;
13 | }
14 |
--------------------------------------------------------------------------------
/src/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import './index.css';
4 | import App from './App';
5 | import reportWebVitals from './reportWebVitals';
6 |
7 | ReactDOM.render(
8 |
9 |
10 | ,
11 | document.getElementById('root')
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/react-app-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/src/reportWebVitals.ts:
--------------------------------------------------------------------------------
1 |
2 | const reportWebVitals = (onPerfEntry?: any) => {
3 | if (onPerfEntry && onPerfEntry instanceof Function) {
4 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
5 | getCLS(onPerfEntry);
6 | getFID(onPerfEntry);
7 | getFCP(onPerfEntry);
8 | getLCP(onPerfEntry);
9 | getTTFB(onPerfEntry);
10 | });
11 | }
12 | };
13 |
14 | export default reportWebVitals;
15 |
--------------------------------------------------------------------------------
/src/setupTests.ts:
--------------------------------------------------------------------------------
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/SPORE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/src/utils/SPORE.png
--------------------------------------------------------------------------------
/src/utils/SporeAbi.ts:
--------------------------------------------------------------------------------
1 | export const sporeABI = [
2 | {
3 | "type": "constructor",
4 | "stateMutability": "nonpayable",
5 | "inputs": []
6 | },
7 | {
8 | "type": "event",
9 | "name": "Approval",
10 | "inputs": [
11 | {
12 | "type": "address",
13 | "name": "owner",
14 | "internalType": "address",
15 | "indexed": true
16 | },
17 | {
18 | "type": "address",
19 | "name": "spender",
20 | "internalType": "address",
21 | "indexed": true
22 | },
23 | {
24 | "type": "uint256",
25 | "name": "value",
26 | "internalType": "uint256",
27 | "indexed": false
28 | }
29 | ],
30 | "anonymous": false
31 | },
32 | {
33 | "type": "event",
34 | "name": "OwnershipTransferred",
35 | "inputs": [
36 | {
37 | "type": "address",
38 | "name": "previousOwner",
39 | "internalType": "address",
40 | "indexed": true
41 | },
42 | {
43 | "type": "address",
44 | "name": "newOwner",
45 | "internalType": "address",
46 | "indexed": true
47 | }
48 | ],
49 | "anonymous": false
50 | },
51 | {
52 | "type": "event",
53 | "name": "Transfer",
54 | "inputs": [
55 | {
56 | "type": "address",
57 | "name": "from",
58 | "internalType": "address",
59 | "indexed": true
60 | },
61 | {
62 | "type": "address",
63 | "name": "to",
64 | "internalType": "address",
65 | "indexed": true
66 | },
67 | {
68 | "type": "uint256",
69 | "name": "value",
70 | "internalType": "uint256",
71 | "indexed": false
72 | }
73 | ],
74 | "anonymous": false
75 | },
76 | {
77 | "type": "function",
78 | "stateMutability": "view",
79 | "outputs": [
80 | {
81 | "type": "uint256",
82 | "name": "",
83 | "internalType": "uint256"
84 | }
85 | ],
86 | "name": "allowTradeAt",
87 | "inputs": []
88 | },
89 | {
90 | "type": "function",
91 | "stateMutability": "view",
92 | "outputs": [
93 | {
94 | "type": "uint256",
95 | "name": "",
96 | "internalType": "uint256"
97 | }
98 | ],
99 | "name": "allowance",
100 | "inputs": [
101 | {
102 | "type": "address",
103 | "name": "owner",
104 | "internalType": "address"
105 | },
106 | {
107 | "type": "address",
108 | "name": "spender",
109 | "internalType": "address"
110 | }
111 | ]
112 | },
113 | {
114 | "type": "function",
115 | "stateMutability": "nonpayable",
116 | "outputs": [
117 | {
118 | "type": "bool",
119 | "name": "",
120 | "internalType": "bool"
121 | }
122 | ],
123 | "name": "approve",
124 | "inputs": [
125 | {
126 | "type": "address",
127 | "name": "spender",
128 | "internalType": "address"
129 | },
130 | {
131 | "type": "uint256",
132 | "name": "amount",
133 | "internalType": "uint256"
134 | }
135 | ]
136 | },
137 | {
138 | "type": "function",
139 | "stateMutability": "view",
140 | "outputs": [
141 | {
142 | "type": "uint256",
143 | "name": "",
144 | "internalType": "uint256"
145 | }
146 | ],
147 | "name": "balanceOf",
148 | "inputs": [
149 | {
150 | "type": "address",
151 | "name": "account",
152 | "internalType": "address"
153 | }
154 | ]
155 | },
156 | {
157 | "type": "function",
158 | "stateMutability": "view",
159 | "outputs": [
160 | {
161 | "type": "uint8",
162 | "name": "",
163 | "internalType": "uint8"
164 | }
165 | ],
166 | "name": "decimals",
167 | "inputs": []
168 | },
169 | {
170 | "type": "function",
171 | "stateMutability": "nonpayable",
172 | "outputs": [
173 | {
174 | "type": "bool",
175 | "name": "",
176 | "internalType": "bool"
177 | }
178 | ],
179 | "name": "decreaseAllowance",
180 | "inputs": [
181 | {
182 | "type": "address",
183 | "name": "spender",
184 | "internalType": "address"
185 | },
186 | {
187 | "type": "uint256",
188 | "name": "subtractedValue",
189 | "internalType": "uint256"
190 | }
191 | ]
192 | },
193 | {
194 | "type": "function",
195 | "stateMutability": "nonpayable",
196 | "outputs": [],
197 | "name": "enableFairLaunch",
198 | "inputs": []
199 | },
200 | {
201 | "type": "function",
202 | "stateMutability": "nonpayable",
203 | "outputs": [],
204 | "name": "excludeAccount",
205 | "inputs": [
206 | {
207 | "type": "address",
208 | "name": "account",
209 | "internalType": "address"
210 | }
211 | ]
212 | },
213 | {
214 | "type": "function",
215 | "stateMutability": "nonpayable",
216 | "outputs": [],
217 | "name": "includeAccount",
218 | "inputs": [
219 | {
220 | "type": "address",
221 | "name": "account",
222 | "internalType": "address"
223 | }
224 | ]
225 | },
226 | {
227 | "type": "function",
228 | "stateMutability": "nonpayable",
229 | "outputs": [
230 | {
231 | "type": "bool",
232 | "name": "",
233 | "internalType": "bool"
234 | }
235 | ],
236 | "name": "increaseAllowance",
237 | "inputs": [
238 | {
239 | "type": "address",
240 | "name": "spender",
241 | "internalType": "address"
242 | },
243 | {
244 | "type": "uint256",
245 | "name": "addedValue",
246 | "internalType": "uint256"
247 | }
248 | ]
249 | },
250 | {
251 | "type": "function",
252 | "stateMutability": "view",
253 | "outputs": [
254 | {
255 | "type": "bool",
256 | "name": "",
257 | "internalType": "bool"
258 | }
259 | ],
260 | "name": "isExcluded",
261 | "inputs": [
262 | {
263 | "type": "address",
264 | "name": "account",
265 | "internalType": "address"
266 | }
267 | ]
268 | },
269 | {
270 | "type": "function",
271 | "stateMutability": "view",
272 | "outputs": [
273 | {
274 | "type": "string",
275 | "name": "",
276 | "internalType": "string"
277 | }
278 | ],
279 | "name": "name",
280 | "inputs": []
281 | },
282 | {
283 | "type": "function",
284 | "stateMutability": "view",
285 | "outputs": [
286 | {
287 | "type": "address",
288 | "name": "",
289 | "internalType": "address"
290 | }
291 | ],
292 | "name": "owner",
293 | "inputs": []
294 | },
295 | {
296 | "type": "function",
297 | "stateMutability": "nonpayable",
298 | "outputs": [],
299 | "name": "reflect",
300 | "inputs": [
301 | {
302 | "type": "uint256",
303 | "name": "tAmount",
304 | "internalType": "uint256"
305 | }
306 | ]
307 | },
308 | {
309 | "type": "function",
310 | "stateMutability": "view",
311 | "outputs": [
312 | {
313 | "type": "uint256",
314 | "name": "",
315 | "internalType": "uint256"
316 | }
317 | ],
318 | "name": "reflectionFromToken",
319 | "inputs": [
320 | {
321 | "type": "uint256",
322 | "name": "tAmount",
323 | "internalType": "uint256"
324 | },
325 | {
326 | "type": "bool",
327 | "name": "deductTransferFee",
328 | "internalType": "bool"
329 | }
330 | ]
331 | },
332 | {
333 | "type": "function",
334 | "stateMutability": "nonpayable",
335 | "outputs": [],
336 | "name": "renounceOwnership",
337 | "inputs": []
338 | },
339 | {
340 | "type": "function",
341 | "stateMutability": "view",
342 | "outputs": [
343 | {
344 | "type": "string",
345 | "name": "",
346 | "internalType": "string"
347 | }
348 | ],
349 | "name": "symbol",
350 | "inputs": []
351 | },
352 | {
353 | "type": "function",
354 | "stateMutability": "view",
355 | "outputs": [
356 | {
357 | "type": "uint256",
358 | "name": "",
359 | "internalType": "uint256"
360 | }
361 | ],
362 | "name": "tokenFromReflection",
363 | "inputs": [
364 | {
365 | "type": "uint256",
366 | "name": "rAmount",
367 | "internalType": "uint256"
368 | }
369 | ]
370 | },
371 | {
372 | "type": "function",
373 | "stateMutability": "view",
374 | "outputs": [
375 | {
376 | "type": "uint256",
377 | "name": "",
378 | "internalType": "uint256"
379 | }
380 | ],
381 | "name": "totalFees",
382 | "inputs": []
383 | },
384 | {
385 | "type": "function",
386 | "stateMutability": "pure",
387 | "outputs": [
388 | {
389 | "type": "uint256",
390 | "name": "",
391 | "internalType": "uint256"
392 | }
393 | ],
394 | "name": "totalSupply",
395 | "inputs": []
396 | },
397 | {
398 | "type": "function",
399 | "stateMutability": "nonpayable",
400 | "outputs": [
401 | {
402 | "type": "bool",
403 | "name": "",
404 | "internalType": "bool"
405 | }
406 | ],
407 | "name": "transfer",
408 | "inputs": [
409 | {
410 | "type": "address",
411 | "name": "recipient",
412 | "internalType": "address"
413 | },
414 | {
415 | "type": "uint256",
416 | "name": "amount",
417 | "internalType": "uint256"
418 | }
419 | ]
420 | },
421 | {
422 | "type": "function",
423 | "stateMutability": "nonpayable",
424 | "outputs": [
425 | {
426 | "type": "bool",
427 | "name": "",
428 | "internalType": "bool"
429 | }
430 | ],
431 | "name": "transferFrom",
432 | "inputs": [
433 | {
434 | "type": "address",
435 | "name": "sender",
436 | "internalType": "address"
437 | },
438 | {
439 | "type": "address",
440 | "name": "recipient",
441 | "internalType": "address"
442 | },
443 | {
444 | "type": "uint256",
445 | "name": "amount",
446 | "internalType": "uint256"
447 | }
448 | ]
449 | },
450 | {
451 | "type": "function",
452 | "stateMutability": "nonpayable",
453 | "outputs": [],
454 | "name": "transferOwnership",
455 | "inputs": [
456 | {
457 | "type": "address",
458 | "name": "newOwner",
459 | "internalType": "address"
460 | }
461 | ]
462 | }
463 | ]
464 |
--------------------------------------------------------------------------------
/src/utils/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/src/utils/background.png
--------------------------------------------------------------------------------
/src/utils/how_to_buy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/src/utils/how_to_buy.pdf
--------------------------------------------------------------------------------
/src/utils/logovector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spore-dev/Spore-frontend/894be021069151c35f1ee0864c555116114aed2b/src/utils/logovector.png
--------------------------------------------------------------------------------
/test/App.test.tsx:
--------------------------------------------------------------------------------
1 | import { render, screen } from '@testing-library/react';
2 | import App from '../src/App';
3 |
4 | test('renders learn react link', () => {
5 | render( );
6 | const linkElement = screen.getByText(/learn react/i);
7 | expect(linkElement).toBeInTheDocument();
8 | });
9 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": [
5 | "dom",
6 | "dom.iterable",
7 | "esnext"
8 | ],
9 | "allowJs": true,
10 | "skipLibCheck": true,
11 | "esModuleInterop": true,
12 | "allowSyntheticDefaultImports": true,
13 | "strict": true,
14 | "forceConsistentCasingInFileNames": true,
15 | "noFallthroughCasesInSwitch": true,
16 | "module": "esnext",
17 | "moduleResolution": "node",
18 | "resolveJsonModule": true,
19 | "isolatedModules": true,
20 | "noEmit": true,
21 | "jsx": "react-jsx"
22 | },
23 | "include": [
24 | "src",
25 | "types",
26 | "test/App.test.tsx"
27 | ]
28 | }
--------------------------------------------------------------------------------