From 3d0949a9eeff1b48e51f2c22e16d51d668b5fc12 Mon Sep 17 00:00:00 2001 From: Chan Date: Mon, 2 May 2022 01:26:25 +0800 Subject: [PATCH 1/2] marketplace on testnet --- package.json | 197 +- src/App.tsx | 166 +- src/tomb-finance/TombFinance.ts | 56 +- .../deployments/deployments.testing.json | 22166 ++++++++-------- src/views/Nft/Nft.js | 2 +- src/views/NftMarketplace/NftMarketplace.js | 108 + .../components/card/CardAddresses.js | 28 + .../components/card/NFTPrice.js | 45 + .../components/card/PriceTextField.js | 21 + .../components/gen0/Gen0Card.js | 198 + .../components/gen0/Gen0CardList.js | 75 + .../components/gen1/Gen1Card.js | 204 + .../components/gen1/Gen1CardList.js | 76 + .../NftMarketplace/components/markets.js | 73 + .../components/markets/market-0.js | 41 + .../components/markets/market-1.js | 41 + .../components/myNFTs/myGen-0.js | 35 + .../components/myNFTs/myGen-1.js | 34 + src/views/NftMarketplace/components/myNfts.js | 74 + src/views/NftMarketplace/index.js | 1 + .../NftMarketplace/utils/Web3Provider.js | 130 + .../utils/createEmotionCache.js | 7 + src/views/NftMarketplace/utils/format.js | 4 + src/views/NftMarketplace/utils/nft.js | 108 + yarn.lock | 25 +- 25 files changed, 12888 insertions(+), 11027 deletions(-) create mode 100644 src/views/NftMarketplace/NftMarketplace.js create mode 100755 src/views/NftMarketplace/components/card/CardAddresses.js create mode 100755 src/views/NftMarketplace/components/card/NFTPrice.js create mode 100755 src/views/NftMarketplace/components/card/PriceTextField.js create mode 100755 src/views/NftMarketplace/components/gen0/Gen0Card.js create mode 100755 src/views/NftMarketplace/components/gen0/Gen0CardList.js create mode 100755 src/views/NftMarketplace/components/gen1/Gen1Card.js create mode 100755 src/views/NftMarketplace/components/gen1/Gen1CardList.js create mode 100755 src/views/NftMarketplace/components/markets.js create mode 100755 src/views/NftMarketplace/components/markets/market-0.js create mode 100755 src/views/NftMarketplace/components/markets/market-1.js create mode 100644 src/views/NftMarketplace/components/myNFTs/myGen-0.js create mode 100644 src/views/NftMarketplace/components/myNFTs/myGen-1.js create mode 100755 src/views/NftMarketplace/components/myNfts.js create mode 100644 src/views/NftMarketplace/index.js create mode 100755 src/views/NftMarketplace/utils/Web3Provider.js create mode 100755 src/views/NftMarketplace/utils/createEmotionCache.js create mode 100755 src/views/NftMarketplace/utils/format.js create mode 100755 src/views/NftMarketplace/utils/nft.js diff --git a/package.json b/package.json index f0e8139..c62dafc 100644 --- a/package.json +++ b/package.json @@ -1,101 +1,102 @@ { - "name": "frontend", - "version": "1.0.0", - "private": true, - "dependencies": { - "@emotion/react": "^11.8.2", - "@emotion/styled": "^11.8.1", - "@ethersproject/providers": "^5.4.1", - "@fortawesome/fontawesome-svg-core": "latest", - "@fortawesome/free-solid-svg-icons": "latest", - "@fortawesome/react-fontawesome": "latest", - "@mui/icons-material": "^5.5.0", - "@mui/lab": "^5.0.0-alpha.72", - "@mui/material": "^5.5.0", - "@mui/styles": "^5.5.0", - "@reduxjs/toolkit": "^1.4.0", - "@spiritswap/sdk": "https://github.com/Layer3Org/spiritswap-sdk", - "@spookyswap/sdk": "https://github.com/GameTheoryTech/spookyswap-sdk", - "@testing-library/jest-dom": "^4.2.4", - "@testing-library/react": "^9.3.2", - "@testing-library/user-event": "^7.1.2", - "@types/humanize-plus": "^1.8.0", - "@types/jest": "^26.0.9", - "@types/node": "^14.0.27", - "@types/react": "^16.9.46", - "@types/react-redux": "^7.1.9", - "axios": "^0.25.0", - "bignumber.js": "^9.0.0", - "clsx": "^1.1.1", - "ethers": "^5.4.1", - "gh-pages": "^3.2.3", - "moment": "^2.29.1", - "mui-image": "^1.0.4", - "numeral": "^2.0.6", - "process": "^0.11.10", - "react": "^16.13.1", - "react-circular-progressbar": "^2.0.3", - "react-countdown": "^2.2.1", - "react-countup": "^4.3.3", - "react-dom": "^16.13.1", - "react-feather": "^2.0.8", - "react-loading-skeleton": "^2.1.1", - "react-player": "^2.10.0", - "react-redux": "^7.2.1", - "react-router-dom": "^5.2.0", - "react-scripts": "^4.0.3", - "react-spring": "^8.0.27", - "redux-localstorage-simple": "^2.3.1", - "styled-components": "^5.1.1", - "swiper": "^8.1.1", - "typescript": "^3.9.7", - "use-wallet": "OGBoogieTomb/use-wallet", - "web3": "^1.2.11" - }, - "resolutions": { - "react-error-overlay": "^6.0.9" - }, - "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject", - "predeploy": "react-scripts build", - "deploy": "gh-pages -b master -d build" - }, - "homepage": "https://gametheory.tech", - "eslintConfig": { - "extends": "react-app", - "env": { - "browser": true, - "node": true + "name": "frontend", + "version": "1.0.0", + "private": true, + "dependencies": { + "@emotion/react": "^11.8.2", + "@emotion/styled": "^11.8.1", + "@ethersproject/providers": "^5.4.1", + "@fortawesome/fontawesome-svg-core": "latest", + "@fortawesome/free-solid-svg-icons": "latest", + "@fortawesome/react-fontawesome": "latest", + "@mui/icons-material": "^5.5.0", + "@mui/lab": "^5.0.0-alpha.72", + "@mui/material": "^5.5.0", + "@mui/styles": "^5.5.0", + "@reduxjs/toolkit": "^1.4.0", + "@spiritswap/sdk": "https://github.com/Layer3Org/spiritswap-sdk", + "@spookyswap/sdk": "https://github.com/GameTheoryTech/spookyswap-sdk", + "@testing-library/jest-dom": "^4.2.4", + "@testing-library/react": "^9.3.2", + "@testing-library/user-event": "^7.1.2", + "@types/humanize-plus": "^1.8.0", + "@types/jest": "^26.0.9", + "@types/node": "^14.0.27", + "@types/react": "^16.9.46", + "@types/react-redux": "^7.1.9", + "axios": "^0.25.0", + "bignumber.js": "^9.0.0", + "clsx": "^1.1.1", + "ethers": "^5.4.1", + "gh-pages": "^3.2.3", + "moment": "^2.29.1", + "mui-image": "^1.0.4", + "numeral": "^2.0.6", + "process": "^0.11.10", + "react": "^16.13.1", + "react-circular-progressbar": "^2.0.3", + "react-countdown": "^2.2.1", + "react-countup": "^4.3.3", + "react-dom": "^16.13.1", + "react-feather": "^2.0.8", + "react-loading-skeleton": "^2.1.1", + "react-player": "^2.10.0", + "react-redux": "^7.2.1", + "react-router-dom": "^5.2.0", + "react-scripts": "^4.0.3", + "react-spring": "^8.0.27", + "redux-localstorage-simple": "^2.3.1", + "styled-components": "^5.1.1", + "swiper": "^8.1.1", + "typescript": "^3.9.7", + "use-wallet": "OGBoogieTomb/use-wallet", + "web3": "^1.2.11", + "web3modal": "^1.9.7" }, - "rules": { - "no-unused-vars": "off" + "resolutions": { + "react-error-overlay": "^6.0.9" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject", + "predeploy": "react-scripts build", + "deploy": "gh-pages -b master -d build" + }, + "homepage": "https://gametheory.tech", + "eslintConfig": { + "extends": "react-app", + "env": { + "browser": true, + "node": true + }, + "rules": { + "no-unused-vars": "off" + } + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "@types/numeral": "0.0.28", + "@types/react-dom": "^16.9.8", + "@types/react-router-dom": "^5.1.5", + "@types/styled-components": "^5.1.2", + "prettier": "2.3.1", + "react-error-overlay": "^6.0.9" + }, + "resolutions": { + "@types/react": "^16.9.46", + "@types/react-dom": "^16.9.8" } - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "devDependencies": { - "@types/numeral": "0.0.28", - "@types/react-dom": "^16.9.8", - "@types/react-router-dom": "^5.1.5", - "@types/styled-components": "^5.1.2", - "prettier": "2.3.1", - "react-error-overlay": "^6.0.9" - }, - "resolutions": { - "@types/react": "^16.9.46", - "@types/react-dom": "^16.9.8" - } -} +} \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index f5f97c8..7ae5086 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -26,55 +26,59 @@ const Treasury = lazy(() => import('./views/Treasury')); const About = lazy(() => import('./views/About')); const Nft = lazy(() => import('./views/Nft')); const Dungeon = lazy(() => import('./views/Dungeon')); +const MarketPlace = lazy(() => import('./views/NftMarketplace')); // const SBS = lazy(() => import('./views/Sbs')); // const Liquidity = lazy(() => import('./views/Liquidity')); const NoMatch = () => ( -

- URL Not Found. Go back home. -

+

+ URL Not Found. Go back home. +

); const App: React.FC = () => { - // Clear localStorage for mobile users - if (typeof localStorage.version_app === 'undefined' || localStorage.version_app !== '1.1') { - localStorage.clear(); - localStorage.setItem('connectorId', ''); - localStorage.setItem('version_app', '1.1'); - } + // Clear localStorage for mobile users + if (typeof localStorage.version_app === 'undefined' || localStorage.version_app !== '1.1') { + localStorage.clear(); + localStorage.setItem('connectorId', ''); + localStorage.setItem('version_app', '1.1'); + } - usePromptNetwork(); + usePromptNetwork(); - return ( - - - }> - - - - - - - - - - - - - - - - - - - - - - - - - - {/* + return ( + + + }> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {/* @@ -83,50 +87,50 @@ const App: React.FC = () => { */} - - - - - - - - ); + + + + + + + + ); }; const Providers: React.FC = ({ children }) => { - return ( - - - - - - - - - - <> - - {children} - - - - - - - - - - ); + return ( + + + + + + + + + + <> + + {children} + + + + + + + + + + ); }; export default App; diff --git a/src/tomb-finance/TombFinance.ts b/src/tomb-finance/TombFinance.ts index d2c0581..98253fe 100644 --- a/src/tomb-finance/TombFinance.ts +++ b/src/tomb-finance/TombFinance.ts @@ -28,7 +28,9 @@ export class TombFinance { config: Configuration; contracts: { [name: string]: Contract }; externalTokens: { [name: string]: ERC20 }; - masonryVersionOfUser?: string; + masonryVersionOfUser?: string; + contractAddress: { [name: string]: string }; + contractABI: { [name: string]: any[] }; TOMBDAI_LP: Contract; TOMBDAI_LPToken: ERC20; @@ -46,7 +48,17 @@ export class TombFinance { this.contracts = {}; for (const [name, deployment] of Object.entries(deployments)) { this.contracts[name] = new Contract(deployment.address, deployment.abi, provider); - } + } + + this.contractAddress = {}; + for (const [name, deployment] of Object.entries(deployments)) { + this.contractAddress[name] = deployment.address; + } + this.contractABI = {}; + for (const [name, deployment] of Object.entries(deployments)) { + this.contractABI[name] = deployment.abi; + } + this.externalTokens = {}; for (const [symbol, [address, decimal]] of Object.entries(externalTokens)) { this.externalTokens[symbol] = new ERC20(address, provider, symbol, decimal); @@ -1082,6 +1094,46 @@ export class TombFinance { return result; } + async getTheoryUnlockerABI(): Promise { + const { TheoryUnlocker } = this.contractABI; + return TheoryUnlocker; + } + + async getTheoryUnlockerAddress(): Promise { + const { TheoryUnlocker } = this.contractAddress; + return TheoryUnlocker; + } + + async getTheoryUnlockerGen1ABI(): Promise { + const { TheoryUnlockerGen1 } = this.contractABI; + return TheoryUnlockerGen1; + } + + async getTheoryUnlockerGen1Address(): Promise { + const { TheoryUnlockerGen1 } = this.contractAddress; + return TheoryUnlockerGen1; + } + + async getMarketplaceABI(): Promise { + const { Marketplace } = this.contractABI; + return Marketplace; + } + + async getMarketplaceAddress(): Promise { + const { Marketplace } = this.contractAddress; + return Marketplace; + } + + async getGameContractABI(): Promise { + const { game } = this.contractABI; + return game; + } + + async getGameContractAddress(): Promise { + const { game } = this.contractAddress; + return game; + } + async unlockTheory(isGen1 : boolean, tokenId : number | BigNumber): Promise { const { TheoryUnlocker, TheoryUnlockerGen1, theory } = this.contracts; if(BigNumber.from(tokenId).gt(0)) diff --git a/src/tomb-finance/deployments/deployments.testing.json b/src/tomb-finance/deployments/deployments.testing.json index 25f3fbd..819d81d 100644 --- a/src/tomb-finance/deployments/deployments.testing.json +++ b/src/tomb-finance/deployments/deployments.testing.json @@ -1,10842 +1,11326 @@ { - "Oracle": { - "address": "0x5D5579A0A2d695Ab92CCD7D2d184f02d1474aAa9", - "abi": [ - { - "inputs": [ - { - "internalType": "contract IUniswapV2Pair", - "name": "_pair", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_period", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_startTime", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOperator", - "type": "address" - } - ], - "name": "OperatorTransferred", - "type": "event" - }, - { - "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": "uint256", - "name": "price0CumulativeLast", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "price1CumulativeLast", - "type": "uint256" - } - ], - "name": "Updated", - "type": "event" - }, - { - "inputs": [], - "name": "blockTimestampLast", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amountIn", - "type": "uint256" - } - ], - "name": "consult", - "outputs": [ - { - "internalType": "uint144", - "name": "amountOut", - "type": "uint144" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getCurrentEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getLastEpochTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getPeriod", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getStartTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "isOperator", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "nextEpochPoint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "operator", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pair", - "outputs": [ - { - "internalType": "contract IUniswapV2Pair", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "price0Average", - "outputs": [ - { - "internalType": "uint224", - "name": "_x", - "type": "uint224" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "price0CumulativeLast", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "price1Average", - "outputs": [ - { - "internalType": "uint224", - "name": "_x", - "type": "uint224" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "price1CumulativeLast", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_epoch", - "type": "uint256" - } - ], - "name": "setEpoch", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_period", - "type": "uint256" - } - ], - "name": "setPeriod", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "token0", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token1", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOperator_", - "type": "address" - } - ], - "name": "transferOperator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amountIn", - "type": "uint256" - } - ], - "name": "twap", - "outputs": [ - { - "internalType": "uint144", - "name": "_amountOut", - "type": "uint144" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "update", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ] - }, - "game": { - "address": "0x9b343B2fF740E7d4935a4C26c8f94DaD73b5f2ad", - "abi": [ - { - "inputs": [], - "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": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Lock", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOperator", - "type": "address" - } - ], - "name": "OperatorTransferred", - "type": "event" - }, - { - "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": 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" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Unlock", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_toAdd", - "type": "address" - } - ], - "name": "addAuthorized", - "outputs": [], - "stateMutability": "nonpayable", - "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": "", - "type": "address" - } - ], - "name": "authorized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burnFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_holder", - "type": "address" - } - ], - "name": "canUnlockAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "circulatingSupply", - "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": "_genesisPool", - "type": "address" - } - ], - "name": "distributeReward", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IERC20", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - } - ], - "name": "governanceRecoverUnsupported", - "outputs": [], - "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": [], - "name": "isOperator", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_holder", - "type": "address" - } - ], - "name": "lastUnlockTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_holder", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "lock", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "lockFromTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_holder", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_newLockFrom", - "type": "uint256" - } - ], - "name": "lockFromUpdate", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_holder", - "type": "address" - } - ], - "name": "lockOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "lockTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "lockedSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient_", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount_", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "noUnlockBeforeTransfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "operator", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_toRemove", - "type": "address" - } - ], - "name": "removeAuthorized", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "rewardPoolDistributed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_lockTime", - "type": "uint256" - } - ], - "name": "setLockTime", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_noUnlockBeforeTransfer", - "type": "bool" - } - ], - "name": "setNoUnlockBeforeTransfer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_holder", - "type": "address" - } - ], - "name": "totalBalanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalLock", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "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": "newOperator_", - "type": "address" - } - ], - "name": "transferOperator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unlock", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "unlockForUser", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unlockedSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ] - }, - "theory": { - "address": "0x330e5d339C84524B99a02Df30c086b01fcE41614", - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "_startTime", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_communityFund", - "type": "address" - }, - { - "internalType": "address", - "name": "_devFund", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_lockFromTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_lockToTime", - "type": "uint256" - } - ], - "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": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Lock", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOperator", - "type": "address" - } - ], - "name": "OperatorTransferred", - "type": "event" - }, - { - "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": 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" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Unlock", - "type": "event" - }, - { - "inputs": [], - "name": "COMMUNITY_FUND_POOL_ALLOCATION", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DEV_FUND_POOL_ALLOCATION", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "VESTING_DURATION", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_toAdd", - "type": "address" - } - ], - "name": "addAuthorized", - "outputs": [], - "stateMutability": "nonpayable", - "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": "", - "type": "address" - } - ], - "name": "authorized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burnFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_holder", - "type": "address" - } - ], - "name": "canUnlockAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "claimRewards", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "communityFund", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "communityFundLastClaimed", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "communityFundRewardRate", - "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": [], - "name": "devFund", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "devFundLastClaimed", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "devFundRewardRate", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_farmingIncentiveFund", - "type": "address" - } - ], - "name": "distributeReward", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "endTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IERC20", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - } - ], - "name": "governanceRecoverUnsupported", - "outputs": [], - "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": [], - "name": "isOperator", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_holder", - "type": "address" - } - ], - "name": "lastUnlockTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_holder", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "lock", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "lockFromTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_holder", - "type": "address" - } - ], - "name": "lockOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "lockToTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "noUnlockBeforeTransfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "operator", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_toRemove", - "type": "address" - } - ], - "name": "removeAuthorized", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "rewardPoolDistributed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_devFund", - "type": "address" - } - ], - "name": "setDevFund", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_noUnlockBeforeTransfer", - "type": "bool" - } - ], - "name": "setNoUnlockBeforeTransfer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_communityFund", - "type": "address" - } - ], - "name": "setTreasuryFund", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "startTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_holder", - "type": "address" - } - ], - "name": "totalBalanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "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": "_to", - "type": "address" - } - ], - "name": "transferAll", - "outputs": [], - "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": "newOperator_", - "type": "address" - } - ], - "name": "transferOperator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unclaimedDevFund", - "outputs": [ - { - "internalType": "uint256", - "name": "_pending", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "unclaimedTreasuryFund", - "outputs": [ - { - "internalType": "uint256", - "name": "_pending", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "unlock", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "unlockForUser", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ] - }, - "hodl": { - "address": "0x3d8A41215098207fEc2988fA79faA7Fd35A434F2", - "abi": [ - { - "inputs": [], - "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": "previousOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOperator", - "type": "address" - } - ], - "name": "OperatorTransferred", - "type": "event" - }, - { - "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": 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": [ - { - "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": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burnFrom", - "outputs": [], - "stateMutability": "nonpayable", - "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": [], - "name": "isOperator", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient_", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount_", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "operator", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "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": "newOperator_", - "type": "address" - } - ], - "name": "transferOperator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ] - }, - "Treasury": { - "address": "0x55c6B3105ace3752e2414930D8767Df50Fb2f513", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "gameAmount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "bondAmount", - "type": "uint256" - } - ], - "name": "BoughtBonds", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "bondAmount", - "type": "uint256" - } - ], - "name": "BurnedBonds", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "seigniorage", - "type": "uint256" - } - ], - "name": "DaoFundFunded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "seigniorage", - "type": "uint256" - } - ], - "name": "DevFundFunded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "executor", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "at", - "type": "uint256" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "gameAmount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "bondAmount", - "type": "uint256" - } - ], - "name": "RedeemedBonds", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "seigniorage", - "type": "uint256" - } - ], - "name": "TreasuryFunded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "seigniorage", - "type": "uint256" - } - ], - "name": "theoreticsFunded", - "type": "event" - }, - { - "inputs": [], - "name": "PERIOD", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "allocateSeigniorage", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "bondDepletionFloorPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "bondSupplyExpansionPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "bondTreasury", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "bootstrapEpochs", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "bootstrapSupplyExpansionPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_gameAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "targetPrice", - "type": "uint256" - } - ], - "name": "buyBonds", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "daoFund", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "daoFundSharedPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "devFund", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "devFundSharedPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "discountPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "epoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "epochSupplyContractionLeft", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "excludedFromTotalSupply", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "game", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "gameOracle", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "gamePriceCeiling", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "gamePriceOne", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getBondDiscountRate", - "outputs": [ - { - "internalType": "uint256", - "name": "_rate", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getBondPremiumRate", - "outputs": [ - { - "internalType": "uint256", - "name": "_rate", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getBurnableGameLeft", - "outputs": [ - { - "internalType": "uint256", - "name": "_burnableGameLeft", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getGameCirculatingSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getGamePrice", - "outputs": [ - { - "internalType": "uint256", - "name": "gamePrice", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getGameUpdatedPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "_gamePrice", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getRedeemableBonds", - "outputs": [ - { - "internalType": "uint256", - "name": "_redeemableBonds", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getReserve", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IERC20", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - } - ], - "name": "governanceRecoverUnsupported", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "hodl", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_game", - "type": "address" - }, - { - "internalType": "address", - "name": "_hodl", - "type": "address" - }, - { - "internalType": "address", - "name": "_theory", - "type": "address" - }, - { - "internalType": "address", - "name": "_gameOracle", - "type": "address" - }, - { - "internalType": "address", - "name": "_theoretics", - "type": "address" - }, - { - "internalType": "address", - "name": "_genesisPool", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_startTime", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "initialized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "isInitialized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxDebtRatioPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxDiscountRate", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "maxExpansionTiers", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxPremiumRate", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxSupplyContractionPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxSupplyExpansionPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "mintingFactorForPayingDebt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "nextEpochPoint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "operator", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "premiumPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "premiumThreshold", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "previousEpochGamePrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_bondAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "targetPrice", - "type": "uint256" - } - ], - "name": "redeemBonds", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "seigniorageExpansionFloorPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "seigniorageSaved", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_bondDepletionFloorPercent", - "type": "uint256" - } - ], - "name": "setBondDepletionFloorPercent", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_bondSupplyExpansionPercent", - "type": "uint256" - } - ], - "name": "setBondSupplyExpansionPercent", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_bootstrapEpochs", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_bootstrapSupplyExpansionPercent", - "type": "uint256" - } - ], - "name": "setBootstrap", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_discountPercent", - "type": "uint256" - } - ], - "name": "setDiscountPercent", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_daoFund", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_daoFundSharedPercent", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_devFund", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_devFundSharedPercent", - "type": "uint256" - } - ], - "name": "setExtraFunds", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_gameOracle", - "type": "address" - } - ], - "name": "setGameOracle", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_gamePriceCeiling", - "type": "uint256" - } - ], - "name": "setGamePriceCeiling", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_maxDebtRatioPercent", - "type": "uint256" - } - ], - "name": "setMaxDebtRatioPercent", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_maxDiscountRate", - "type": "uint256" - } - ], - "name": "setMaxDiscountRate", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "_index", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "name": "setMaxExpansionTiersEntry", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_maxPremiumRate", - "type": "uint256" - } - ], - "name": "setMaxPremiumRate", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_maxSupplyContractionPercent", - "type": "uint256" - } - ], - "name": "setMaxSupplyContractionPercent", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_maxSupplyExpansionPercent", - "type": "uint256" - } - ], - "name": "setMaxSupplyExpansionPercents", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_mintingFactorForPayingDebt", - "type": "uint256" - } - ], - "name": "setMintingFactorForPayingDebt", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_operator", - "type": "address" - } - ], - "name": "setOperator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_premiumPercent", - "type": "uint256" - } - ], - "name": "setPremiumPercent", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_premiumThreshold", - "type": "uint256" - } - ], - "name": "setPremiumThreshold", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_time", - "type": "uint256" - } - ], - "name": "setStartTime", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "_index", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "name": "setSupplyTiersEntry", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_theoretics", - "type": "address" - } - ], - "name": "setTheoretics", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "startTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "supplyTiers", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "theoretics", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "theoreticsAllocateSeigniorage", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "theoreticsGetCurrentClaimEpochs", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "theoreticsGetCurrentWithdrawEpochs", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "theoreticsGetLockPercentage", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_user", - "type": "address" - } - ], - "name": "theoreticsGetWithdrawFeeOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - } - ], - "name": "theoreticsGovernanceRecoverUnsupported", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_withdrawLockupEpochs", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_rewardLockupEpochs", - "type": "uint256" - } - ], - "name": "theoreticsSetLockUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_operator", - "type": "address" - } - ], - "name": "theoreticsSetOperator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "theory", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ] - }, - "Theoretics": { - "address": "0x8b1455618B07Fa4Ef1f67F9f85b8a7CE6588b513", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "executor", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "at", - "type": "uint256" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOperator", - "type": "address" - } - ], - "name": "OperatorTransferred", - "type": "event" - }, - { - "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": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "reward", - "type": "uint256" - } - ], - "name": "RewardAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "reward", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "lockAmount", - "type": "uint256" - } - ], - "name": "RewardPaid", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "Staked", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "Withdrawn", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_toAdd", - "type": "address" - } - ], - "name": "addAuthorized", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "allocateSeigniorage", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "authorized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "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": "theorist", - "type": "address" - } - ], - "name": "canClaimReward", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "theorist", - "type": "address" - } - ], - "name": "canWithdraw", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "claimReward", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "theorist", - "type": "address" - } - ], - "name": "earned", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "epoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "exit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "farm", - "outputs": [ - { - "internalType": "contract IFarm", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "feeStagePercentage", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "feeStageTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "game", - "outputs": [ - { - "internalType": "contract IERC20Lockable", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getCurrentClaimEpochs", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getCurrentWithdrawEpochs", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getGamePrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "theorist", - "type": "address" - } - ], - "name": "getLastSnapshotIndexOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getLockPercentage", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_user", - "type": "address" - } - ], - "name": "getWithdrawFeeOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IERC20", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - } - ], - "name": "governanceRecoverUnsupported", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IERC20Lockable", - "name": "_game", - "type": "address" - }, - { - "internalType": "contract IERC20Lockable", - "name": "_share", - "type": "address" - }, - { - "internalType": "contract ITreasury", - "name": "_treasury", - "type": "address" - }, - { - "internalType": "contract IFarm", - "name": "_farm", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "initialized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "isOperator", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "latestSnapshotIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "nextEpochPoint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "operator", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pegMaxUnlock", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_toRemove", - "type": "address" - } - ], - "name": "removeAuthorized", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_user", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_time", - "type": "uint256" - } - ], - "name": "reviseDeposit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_user", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_time", - "type": "uint256" - } - ], - "name": "reviseWithdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "rewardLockupEpochs", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "rewardPerShare", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "sameBlockFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "_feeStageTime", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_feeStagePercentage", - "type": "uint256[]" - } - ], - "name": "setFeeStages", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_withdrawLockupEpochs", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_rewardLockupEpochs", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_pegMaxUnlock", - "type": "uint256" - } - ], - "name": "setLockUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_fee", - "type": "uint256" - } - ], - "name": "setSameBlockFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "share", - "outputs": [ - { - "internalType": "contract IERC20Lockable", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "stake", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "theoreticsHistory", - "outputs": [ - { - "internalType": "uint256", - "name": "time", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "rewardReceived", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "rewardPerShare", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "theorists", - "outputs": [ - { - "internalType": "uint256", - "name": "lastSnapshotIndex", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "rewardEarned", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "epochTimerStart", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastDepositBlock", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastWithdrawTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "firstDepositTime", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOperator_", - "type": "address" - } - ], - "name": "transferOperator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "treasury", - "outputs": [ - { - "internalType": "contract ITreasury", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "withdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "withdrawLockupEpochs", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ] - }, - "GameGenesisRewardPool": { - "address": "0x5713201Bbd87bBbECd690D76903BdBbaCc4EC77C", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_game", - "type": "address" - }, - { - "internalType": "contract ITreasury", - "name": "_treasury", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_poolStartTime", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "pid", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "pid", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "EmergencyWithdraw", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOperator", - "type": "address" - } - ], - "name": "OperatorTransferred", - "type": "event" - }, - { - "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": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "RewardPaid", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "pid", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "Withdraw", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_allocPoint", - "type": "uint256" - }, - { - "internalType": "contract IERC20", - "name": "_token", - "type": "address" - }, - { - "internalType": "bool", - "name": "_withUpdate", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "_lastRewardTime", - "type": "uint256" - } - ], - "name": "add", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_toAdd", - "type": "address" - } - ], - "name": "addAuthorized", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "authorized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "deposit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "depositFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - } - ], - "name": "emergencyWithdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "forceMassUpdatePools", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - } - ], - "name": "forceUpdatePool", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "game", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "gamePerSecond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - } - ], - "name": "getGamePerSecondInPool", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_fromTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_toTime", - "type": "uint256" - } - ], - "name": "getGeneratedReward", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getRequiredAllocation", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IERC20", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - } - ], - "name": "governanceRecoverUnsupported", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "isOperator", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "operator", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_user", - "type": "address" - } - ], - "name": "pendingGAME", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "poolEndTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "poolInfo", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "allocPoint", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastRewardTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "accGamePerShare", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "isStarted", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "poolStartTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_toRemove", - "type": "address" - } - ], - "name": "removeAuthorized", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "runningTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_allocPoint", - "type": "uint256" - } - ], - "name": "set", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_depositFee", - "type": "uint256" - } - ], - "name": "setDepositFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_time", - "type": "uint256" - } - ], - "name": "setPoolEndTime", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_time", - "type": "uint256" - } - ], - "name": "setPoolStartTime", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "totalAllocPoint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOperator_", - "type": "address" - } - ], - "name": "transferOperator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "treasury", - "outputs": [ - { - "internalType": "contract ITreasury", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "userInfo", - "outputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "rewardDebt", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "withdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ] - }, - "TheoryRewardPool": { - "address": "0x085DAD9Ac4E8EF88Ff2B12218401dE015A36eB0d", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_theory", - "type": "address" - }, - { - "internalType": "contract ITreasury", - "name": "_treasury", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_poolStartTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_halvingAfterTime", - "type": "uint256" - }, - { - "internalType": "uint256[]", - "name": "_rewardMultiplier", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_percentLockBonusRewards", - "type": "uint256[]" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "pid", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "pid", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "EmergencyWithdraw", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOperator", - "type": "address" - } - ], - "name": "OperatorTransferred", - "type": "event" - }, - { - "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": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "lockAmount", - "type": "uint256" - } - ], - "name": "RewardPaid", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "pid", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "Withdraw", - "type": "event" - }, - { - "inputs": [], - "name": "FINISH_BONUS_AT_TIME", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "HALVING_AT_TIME", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "PERCENT_LOCK_BONUS_REWARD", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "REWARD_MULTIPLIER", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_allocPoint", - "type": "uint256" - }, - { - "internalType": "contract IERC20", - "name": "_token", - "type": "address" - }, - { - "internalType": "bool", - "name": "_withUpdate", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "_lastRewardTime", - "type": "uint256" - } - ], - "name": "add", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_toAdd", - "type": "address" - } - ], - "name": "addAuthorized", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "authorized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "baseTheoryPerSecond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_newFinish", - "type": "uint256" - } - ], - "name": "bonusFinishUpdate", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "deposit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - } - ], - "name": "emergencyWithdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "feeStagePercentage", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "feeStageTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "forceMassUpdatePools", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - } - ], - "name": "forceUpdatePool", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_user", - "type": "address" - } - ], - "name": "getCurrentLockPercentage", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_fromTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_toTime", - "type": "uint256" - } - ], - "name": "getGeneratedReward", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_from", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_to", - "type": "uint256" - } - ], - "name": "getLockPercentage", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_from", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_to", - "type": "uint256" - } - ], - "name": "getMultiplier", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getRequiredAllocation", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - } - ], - "name": "getTheoryPerSecondInPool", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_user", - "type": "address" - } - ], - "name": "getWithdrawFeeOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IERC20", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - } - ], - "name": "governanceRecoverUnsupported", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "_newHalving", - "type": "uint256[]" - } - ], - "name": "halvingUpdate", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "isOperator", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "_newLock", - "type": "uint256[]" - } - ], - "name": "lockUpdate", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "operator", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_user", - "type": "address" - } - ], - "name": "pendingShare", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "poolEndTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "poolInfo", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "allocPoint", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastRewardTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "accTheoryPerShare", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "isStarted", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "poolStartTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_toRemove", - "type": "address" - } - ], - "name": "removeAuthorized", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_user", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_time", - "type": "uint256" - } - ], - "name": "reviseDeposit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_user", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_time", - "type": "uint256" - } - ], - "name": "reviseWithdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "_newMulReward", - "type": "uint256[]" - } - ], - "name": "rewardMulUpdate", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "runningTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "sameBlockFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_allocPoint", - "type": "uint256" - } - ], - "name": "set", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "_feeStageTime", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_feeStagePercentage", - "type": "uint256[]" - } - ], - "name": "setFeeStages", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_time", - "type": "uint256" - } - ], - "name": "setPoolEndTime", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_time", - "type": "uint256" - } - ], - "name": "setPoolStartTime", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_fee", - "type": "uint256" - } - ], - "name": "setSameBlockFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "theory", - "outputs": [ - { - "internalType": "contract IERC20Lockable", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalAllocPoint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOperator_", - "type": "address" - } - ], - "name": "transferOperator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "treasury", - "outputs": [ - { - "internalType": "contract ITreasury", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "userInfo", - "outputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "rewardDebt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "rewardDebtAtTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastDepositBlock", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastWithdrawTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "firstDepositTime", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "withdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ] - }, - "zapper": { - "address": "0x2656DaB561f7c4dd0cecb87D94eE2094282B60a9", - "abi": [ - { - "inputs": [{ "internalType": "address", "name": "_WNATIVE", "type": "address" }], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": false, "internalType": "address", "name": "fee_to", "type": "address" }, - { "indexed": false, "internalType": "uint16", "name": "rate", "type": "uint16" }, - { "indexed": false, "internalType": "uint16", "name": "min", "type": "uint16" } - ], - "name": "FeeChange", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, - { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "inputs": [ - { "internalType": "address", "name": "_LP", "type": "address" }, - { "internalType": "address", "name": "_router", "type": "address" }, - { "internalType": "uint256", "name": "_amt", "type": "uint256" } - ], - "name": "estimateZapIn", - "outputs": [ - { "internalType": "uint256", "name": "", "type": "uint256" }, - { "internalType": "uint256", "name": "", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_from", "type": "address" }, - { "internalType": "address", "name": "_to", "type": "address" }, - { "internalType": "address", "name": "_router", "type": "address" }, - { "internalType": "uint256", "name": "_amt", "type": "uint256" } - ], - "name": "estimateZapInToken", - "outputs": [ - { "internalType": "uint256", "name": "", "type": "uint256" }, - { "internalType": "uint256", "name": "", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { "internalType": "address", "name": "addr", "type": "address" }, - { "internalType": "uint16", "name": "rate", "type": "uint16" }, - { "internalType": "uint16", "name": "min", "type": "uint16" } - ], - "name": "setFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "token", "type": "address" }, - { "internalType": "address", "name": "router", "type": "address" }, - { "internalType": "address", "name": "bridgeToken", "type": "address" } - ], - "name": "setTokenBridgeForRouter", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "router", "type": "address" }], - "name": "setUseNativeRouter", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_from", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" }, - { "internalType": "address", "name": "routerAddr", "type": "address" }, - { "internalType": "address", "name": "_recipient", "type": "address" } - ], - "name": "swapToNative", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_from", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" }, - { "internalType": "address", "name": "_to", "type": "address" }, - { "internalType": "address", "name": "routerAddr", "type": "address" }, - { "internalType": "address", "name": "_recipient", "type": "address" } - ], - "name": "swapToken", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "", "type": "address" }], - "name": "useNativeRouter", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "token", "type": "address" }], - "name": "withdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_from", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" }, - { "internalType": "address", "name": "_toRouter", "type": "address" }, - { "internalType": "address", "name": "_recipient", "type": "address" } - ], - "name": "zapAcross", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_to", "type": "address" }, - { "internalType": "address", "name": "routerAddr", "type": "address" }, - { "internalType": "address", "name": "_recipient", "type": "address" } - ], - "name": "zapIn", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_from", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" }, - { "internalType": "address", "name": "_to", "type": "address" }, - { "internalType": "address", "name": "routerAddr", "type": "address" }, - { "internalType": "address", "name": "_recipient", "type": "address" } - ], - "name": "zapInToken", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_from", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" }, - { "internalType": "address", "name": "routerAddr", "type": "address" }, - { "internalType": "address", "name": "_recipient", "type": "address" } - ], - "name": "zapOut", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_from", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" }, - { "internalType": "address", "name": "_to", "type": "address" }, - { "internalType": "address", "name": "routerAddr", "type": "address" }, - { "internalType": "address", "name": "_recipient", "type": "address" } - ], - "name": "zapOutToken", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { "stateMutability": "payable", "type": "receive" } - ] - }, - "SpookyRouter": { - "address": "0xa6AD18C2aC47803E193F75c3677b14BF19B94883", - "abi": [{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapETHForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}] - }, - "TheoryUnlocker": { - "address": "0x24559C54724704F1B909eA668DD7C72df0B9BCcc", - "abi": [ - { - "inputs": [ - { - "internalType": "contract IERC20", - "name": "_buy", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_initialBuy", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_buyPerLevel", - "type": "uint256" - }, - { - "internalType": "contract IERC20Lockable", - "name": "_theory", - "type": "address" - }, - { - "internalType": "address", - "name": "_communityFund", - "type": "address" - }, - { - "internalType": "uint256[]", - "name": "_maxLevelTime", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_maxLevelLevel", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_levelURIsLevel", - "type": "uint256[]" - }, - { - "internalType": "string[]", - "name": "_levelURIsURI", - "type": "string[]" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "approved", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "ApprovalForAll", - "type": "event" - }, - { - "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": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_toAdd", - "type": "address" - } - ], - "name": "addAuthorized", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "authorized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "baseURI", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "buyToken", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "buyTokenPerLevel", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "player", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "canUnlockAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "communityFund", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - } - ], - "name": "costOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "disableMint", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "getApproved", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "initialPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - } - ], - "name": "levelURI", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "levelURIsLevel", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "levelURIsURI", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "levelUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "maxLevel", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "maxLevelLevel", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "maxLevelTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId1", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "tokenId2", - "type": "uint256" - } - ], - "name": "merge", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "nextLevelTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "nftUnlock", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ownerOf", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_toRemove", - "type": "address" - } - ], - "name": "removeAuthorized", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "setApprovalForAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IERC20", - "name": "_buy", - "type": "address" - } - ], - "name": "setBuyToken", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_perLevel", - "type": "uint256" - } - ], - "name": "setBuyTokenPerLevel", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_fund", - "type": "address" - } - ], - "name": "setCommunityFund", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "time", - "type": "uint256" - } - ], - "name": "setCreationTime", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_disable", - "type": "bool" - } - ], - "name": "setDisableMint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_initial", - "type": "uint256" - } - ], - "name": "setInitialPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "time", - "type": "uint256" - } - ], - "name": "setLastLevelTime", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "setLastLockAmount", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint256", - "name": "time", - "type": "uint256" - } - ], - "name": "setLastUnlockTime", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "_levelURIsLevel", - "type": "uint256[]" - }, - { - "internalType": "string[]", - "name": "_levelURIsURI", - "type": "string[]" - } - ], - "name": "setLevelURIs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "_maxLevelTime", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_maxLevelLevel", - "type": "uint256[]" - } - ], - "name": "setMaxLevel", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_time", - "type": "uint256" - } - ], - "name": "setTimeToLevel", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - } - ], - "name": "setTokenLevel", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "theory", - "outputs": [ - { - "internalType": "contract IERC20Lockable", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "timeLeftToLevel", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "timeToLevel", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "tokenByIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "tokenInfo", - "outputs": [ - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "creationTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastLevelTime", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "tokenOfOwnerByIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "tokenURI", - "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": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "userInfo", - "outputs": [ - { - "internalType": "uint256", - "name": "lastUnlockTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastLockAmount", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ] - }, - "TheoryUnlockerGen1": { - "address": "0x50bB33375af32EAf42af72c6004bAAd931042632", - "abi": [ - { - "inputs": [ - { - "internalType": "contract IERC20", - "name": "_buy", - "type": "address" - }, - { - "internalType": "uint256[2]", - "name": "_prices", - "type": "uint256[2]" - }, - { - "internalType": "contract IERC20Lockable[2]", - "name": "_theoryAndGame", - "type": "address[2]" - }, - { - "internalType": "address", - "name": "_communityFund", - "type": "address" - }, - { - "internalType": "contract ITheoryUnlocker", - "name": "_gen0", - "type": "address" - }, - { - "internalType": "contract IUniswapV2Router", - "name": "_router", - "type": "address" - }, - { - "internalType": "uint256[]", - "name": "_maxLevelTime", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_maxLevelLevel", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_levelURIsLevel", - "type": "uint256[]" - }, - { - "internalType": "string[]", - "name": "_levelURIsURI", - "type": "string[]" - }, - { - "internalType": "uint256[]", - "name": "_levelURIsMax", - "type": "uint256[]" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "approved", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "ApprovalForAll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "leveledTo", - "type": "uint256" - } - ], - "name": "Level", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "tokenId1", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "tokenId2", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "level1", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "level2", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "levelMerged", - "type": "uint256" - } - ], - "name": "Merge", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "level", - "type": "uint256" - } - ], - "name": "Mint", - "type": "event" - }, - { - "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": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "level", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amountToUnlock", - "type": "uint256" - } - ], - "name": "Unlock", - "type": "event" - }, - { - "inputs": [], - "name": "TheoryUnlockerGen0", - "outputs": [ - { - "internalType": "contract ITheoryUnlocker", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_toAdd", - "type": "address" - } - ], - "name": "addAuthorized", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "authorized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "baseURI", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "burnPercentage", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "buyToken", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "buyTokenPerLevel", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "player", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "canUnlockAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "communityFund", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - } - ], - "name": "costOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "disableMint", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "emergencyDisableUnlock", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - } - ], - "name": "extraGameCost", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "extraGameCostAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "extraGameCostLevel", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "game", - "outputs": [ - { - "internalType": "contract IERC20Lockable", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "gameCostPerLevel", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "getApproved", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "initialPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - } - ], - "name": "levelURI", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "levelURIsLevel", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "levelURIsMax", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "levelURIsMinted", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "levelURIsSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "levelURIsURI", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "levelUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "theLevel", - "type": "uint256" - } - ], - "name": "levelUpTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "levelUpToMax", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "maxLevel", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "maxLevelLevel", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "maxLevelTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - } - ], - "name": "maxMinted", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId1", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "tokenId2", - "type": "uint256" - } - ], - "name": "merge", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "slippage", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - } - ], - "name": "minted", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "nextLevelTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "nftUnlock", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ownerOf", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_toRemove", - "type": "address" - } - ], - "name": "removeAuthorized", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "router", - "outputs": [ - { - "internalType": "contract IUniswapV2Router", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "setApprovalForAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_burn", - "type": "uint256" - } - ], - "name": "setBurnPercentage", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IERC20", - "name": "_buy", - "type": "address" - } - ], - "name": "setBuyToken", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_fund", - "type": "address" - } - ], - "name": "setCommunityFund", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "time", - "type": "uint256" - } - ], - "name": "setCreationTime", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_disable", - "type": "bool" - } - ], - "name": "setDisableMint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_disable", - "type": "bool" - } - ], - "name": "setEmergencyDisableUnlock", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_gameCostPerLevel", - "type": "uint256" - }, - { - "internalType": "uint256[]", - "name": "_extraGameCostLevel", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_extraGameCostAmount", - "type": "uint256[]" - } - ], - "name": "setGameCostForLevel", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "time", - "type": "uint256" - } - ], - "name": "setLastLevelTime", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "setLastLockAmount", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint256", - "name": "time", - "type": "uint256" - } - ], - "name": "setLastUnlockTime", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "_levelURIsLevel", - "type": "uint256[]" - }, - { - "internalType": "string[]", - "name": "_levelURIsURI", - "type": "string[]" - }, - { - "internalType": "uint256[]", - "name": "_levelURIsMax", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_levelURIsSupply", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_levelURIsMinted", - "type": "uint256[]" - } - ], - "name": "setLevelURIs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "_maxLevelTime", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "_maxLevelLevel", - "type": "uint256[]" - } - ], - "name": "setMaxLevel", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_initial", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_perLevel", - "type": "uint256" - } - ], - "name": "setPrices", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IUniswapV2Router", - "name": "_router", - "type": "address" - } - ], - "name": "setRouter", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_time", - "type": "uint256" - } - ], - "name": "setTimeToLevel", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - } - ], - "name": "setTokenLevel", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - } - ], - "name": "supply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "theory", - "outputs": [ - { - "internalType": "contract IERC20Lockable", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "timeLeftToLevel", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "timeToLevel", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "tokenByIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "tokenInfo", - "outputs": [ - { - "internalType": "uint256", - "name": "level", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "creationTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastLevelTime", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "merged", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "tokenOfOwnerByIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "tokenURI", - "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": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ] - }, - "Master": { - "address": "0x6860af20ED7362c67d80A21E447d65861Fe83086", - "abi": [ - { - "inputs": [ - { - "internalType": "contract IERC20Lockable", - "name": "_theory", - "type": "address" - }, - { - "internalType": "contract IERC20Lockable", - "name": "_game", - "type": "address" - }, - { - "internalType": "contract ITheoretics", - "name": "_theoretics", - "type": "address" - }, - { - "internalType": "contract ITreasury", - "name": "_treasury", - "type": "address" - }, - { - "internalType": "address[]", - "name": "_whitelist", - "type": "address[]" - } - ], - "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": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amountInTheory", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amountOutMaster", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "LockGame", - "type": "event" - }, - { - "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": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "reward", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "lockAmount", - "type": "uint256" - } - ], - "name": "RewardPaid", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "id", - "type": "uint256" - } - ], - "name": "Snapshot", - "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" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "UnlockGame", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amountInMaster", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amountOutTheory", - "type": "uint256" - } - ], - "name": "Withdraw", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amountInMaster", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amountOutTheory", - "type": "uint256" - } - ], - "name": "WithdrawRequest", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_toAdd", - "type": "address" - } - ], - "name": "addAuthorized", - "outputs": [], - "stateMutability": "nonpayable", - "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": "from", - "type": "address" - } - ], - "name": "approveTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "authorized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "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": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "snapshotId", - "type": "uint256" - } - ], - "name": "balanceOfAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountInTheory", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lockTime", - "type": "uint256" - } - ], - "name": "buyFromTheory", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_holder", - "type": "address" - } - ], - "name": "canUnlockAmountGame", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "claimGame", - "outputs": [], - "stateMutability": "nonpayable", - "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": "theorist", - "type": "address" - } - ], - "name": "earned", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "theorist", - "type": "address" - } - ], - "name": "getLastSnapshotIndexOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "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": "bool", - "name": "allowEmergency", - "type": "bool" - } - ], - "name": "initiatePart1", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "initiatePart2", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "latestSnapshotIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_holder", - "type": "address" - } - ], - "name": "lockOfGame", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "masterHistory", - "outputs": [ - { - "internalType": "uint256", - "name": "time", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "rewardReceived", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "rewardPerShare", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_share", - "type": "uint256" - } - ], - "name": "masterToTheory", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "minLockTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_toRemove", - "type": "address" - } - ], - "name": "removeAuthorized", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountInMaster", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "allowEmergency", - "type": "bool" - } - ], - "name": "requestSellToTheory", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "sellToTheory", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "lockTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "penalty", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "emergency", - "type": "bool" - } - ], - "name": "setAdmin", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "stakeExternalTheory", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "theoryToMaster", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_holder", - "type": "address" - } - ], - "name": "totalBalanceOfGame", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_holder", - "type": "address" - } - ], - "name": "totalCanUnlockAmountGame", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalGameLocked", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalGameUnclaimed", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalLockGame", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalStakeRequestedInTheory", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "snapshotId", - "type": "uint256" - } - ], - "name": "totalSupplyAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalWithdrawRequestedInMaster", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalWithdrawRequestedInTheory", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalWithdrawUnclaimedInTheory", - "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": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IERC20", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferToken", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unlockGame", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "unlockGameForUser", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unlockedClaimPenalty", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "userInfo", - "outputs": [ - { - "internalType": "uint256", - "name": "lockToTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "chosenLockTime", - "type": "uint256" - }, - { - "internalType": "address", - "name": "approveTransferFrom", - "type": "address" - }, - { - "internalType": "uint256", - "name": "lastSnapshotIndex", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "rewardEarned", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "withdrawRequestedInMaster", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "withdrawRequestedInTheory", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastStakeRequestBlock", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastWithdrawRequestBlock", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "gameLocked", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "gameLockFrom", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "gameLastUnlockTime", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ] - } -} + "Oracle": { + "address": "0x5D5579A0A2d695Ab92CCD7D2d184f02d1474aAa9", + "abi": [{ + "inputs": [{ + "internalType": "contract IUniswapV2Pair", + "name": "_pair", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_period", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_startTime", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "previousOperator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOperator", + "type": "address" + } + ], + "name": "OperatorTransferred", + "type": "event" + }, + { + "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": "uint256", + "name": "price0CumulativeLast", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "price1CumulativeLast", + "type": "uint256" + } + ], + "name": "Updated", + "type": "event" + }, + { + "inputs": [], + "name": "blockTimestampLast", + "outputs": [{ + "internalType": "uint32", + "name": "", + "type": "uint32" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amountIn", + "type": "uint256" + } + ], + "name": "consult", + "outputs": [{ + "internalType": "uint144", + "name": "amountOut", + "type": "uint144" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCurrentEpoch", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLastEpochTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPeriod", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getStartTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isOperator", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextEpochPoint", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "operator", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pair", + "outputs": [{ + "internalType": "contract IUniswapV2Pair", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "price0Average", + "outputs": [{ + "internalType": "uint224", + "name": "_x", + "type": "uint224" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "price0CumulativeLast", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "price1Average", + "outputs": [{ + "internalType": "uint224", + "name": "_x", + "type": "uint224" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "price1CumulativeLast", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_epoch", + "type": "uint256" + }], + "name": "setEpoch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_period", + "type": "uint256" + }], + "name": "setPeriod", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "token0", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token1", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "newOperator_", + "type": "address" + }], + "name": "transferOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "newOwner", + "type": "address" + }], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amountIn", + "type": "uint256" + } + ], + "name": "twap", + "outputs": [{ + "internalType": "uint144", + "name": "_amountOut", + "type": "uint144" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "update", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] + }, + "game": { + "address": "0x9b343B2fF740E7d4935a4C26c8f94DaD73b5f2ad", + "abi": [{ + "inputs": [], + "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": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Lock", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "previousOperator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOperator", + "type": "address" + } + ], + "name": "OperatorTransferred", + "type": "event" + }, + { + "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": 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" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Unlock", + "type": "event" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toAdd", + "type": "address" + }], + "name": "addAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "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": "", + "type": "address" + }], + "name": "authorized", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "account", + "type": "address" + }], + "name": "balanceOf", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_holder", + "type": "address" + }], + "name": "canUnlockAmount", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "circulatingSupply", + "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": "_genesisPool", + "type": "address" + }], + "name": "distributeReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "governanceRecoverUnsupported", + "outputs": [], + "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": [], + "name": "isOperator", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_holder", + "type": "address" + }], + "name": "lastUnlockTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_holder", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "lock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "name": "lockFromTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_holder", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_newLockFrom", + "type": "uint256" + } + ], + "name": "lockFromUpdate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_holder", + "type": "address" + }], + "name": "lockOf", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lockTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lockedSupply", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "recipient_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "name": "noUnlockBeforeTransfer", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "operator", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toRemove", + "type": "address" + }], + "name": "removeAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardPoolDistributed", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_lockTime", + "type": "uint256" + }], + "name": "setLockTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "bool", + "name": "_noUnlockBeforeTransfer", + "type": "bool" + }], + "name": "setNoUnlockBeforeTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_holder", + "type": "address" + }], + "name": "totalBalanceOf", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalLock", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "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": "newOperator_", + "type": "address" + }], + "name": "transferOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "newOwner", + "type": "address" + }], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unlock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "unlockForUser", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unlockedSupply", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + } + ] + }, + "theory": { + "address": "0x330e5d339C84524B99a02Df30c086b01fcE41614", + "abi": [{ + "inputs": [{ + "internalType": "uint256", + "name": "_startTime", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_communityFund", + "type": "address" + }, + { + "internalType": "address", + "name": "_devFund", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_lockFromTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_lockToTime", + "type": "uint256" + } + ], + "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": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Lock", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "previousOperator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOperator", + "type": "address" + } + ], + "name": "OperatorTransferred", + "type": "event" + }, + { + "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": 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" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Unlock", + "type": "event" + }, + { + "inputs": [], + "name": "COMMUNITY_FUND_POOL_ALLOCATION", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEV_FUND_POOL_ALLOCATION", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VESTING_DURATION", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toAdd", + "type": "address" + }], + "name": "addAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "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": "", + "type": "address" + }], + "name": "authorized", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "account", + "type": "address" + }], + "name": "balanceOf", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_holder", + "type": "address" + }], + "name": "canUnlockAmount", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "claimRewards", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "communityFund", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "communityFundLastClaimed", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "communityFundRewardRate", + "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": [], + "name": "devFund", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "devFundLastClaimed", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "devFundRewardRate", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_farmingIncentiveFund", + "type": "address" + }], + "name": "distributeReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "endTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "governanceRecoverUnsupported", + "outputs": [], + "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": [], + "name": "isOperator", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_holder", + "type": "address" + }], + "name": "lastUnlockTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_holder", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "lock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "lockFromTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_holder", + "type": "address" + }], + "name": "lockOf", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lockToTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "name": "noUnlockBeforeTransfer", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "operator", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toRemove", + "type": "address" + }], + "name": "removeAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardPoolDistributed", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_devFund", + "type": "address" + }], + "name": "setDevFund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "bool", + "name": "_noUnlockBeforeTransfer", + "type": "bool" + }], + "name": "setNoUnlockBeforeTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_communityFund", + "type": "address" + }], + "name": "setTreasuryFund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "startTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_holder", + "type": "address" + }], + "name": "totalBalanceOf", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "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": "_to", + "type": "address" + }], + "name": "transferAll", + "outputs": [], + "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": "newOperator_", + "type": "address" + }], + "name": "transferOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "newOwner", + "type": "address" + }], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedDevFund", + "outputs": [{ + "internalType": "uint256", + "name": "_pending", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedTreasuryFund", + "outputs": [{ + "internalType": "uint256", + "name": "_pending", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unlock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "unlockForUser", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] + }, + "hodl": { + "address": "0x3d8A41215098207fEc2988fA79faA7Fd35A434F2", + "abi": [{ + "inputs": [], + "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": "previousOperator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOperator", + "type": "address" + } + ], + "name": "OperatorTransferred", + "type": "event" + }, + { + "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": 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": [{ + "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": "uint256", + "name": "amount", + "type": "uint256" + }], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "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": [], + "name": "isOperator", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "recipient_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount_", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "operator", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "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": "newOperator_", + "type": "address" + }], + "name": "transferOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "newOwner", + "type": "address" + }], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] + }, + "Treasury": { + "address": "0x55c6B3105ace3752e2414930D8767Df50Fb2f513", + "abi": [{ + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "gameAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256" + } + ], + "name": "BoughtBonds", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256" + } + ], + "name": "BurnedBonds", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seigniorage", + "type": "uint256" + } + ], + "name": "DaoFundFunded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seigniorage", + "type": "uint256" + } + ], + "name": "DevFundFunded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "executor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "at", + "type": "uint256" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "gameAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256" + } + ], + "name": "RedeemedBonds", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seigniorage", + "type": "uint256" + } + ], + "name": "TreasuryFunded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seigniorage", + "type": "uint256" + } + ], + "name": "theoreticsFunded", + "type": "event" + }, + { + "inputs": [], + "name": "PERIOD", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "allocateSeigniorage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "bondDepletionFloorPercent", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bondSupplyExpansionPercent", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bondTreasury", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bootstrapEpochs", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bootstrapSupplyExpansionPercent", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_gameAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "targetPrice", + "type": "uint256" + } + ], + "name": "buyBonds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "daoFund", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "daoFundSharedPercent", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "devFund", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "devFundSharedPercent", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "discountPercent", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "epoch", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "epochSupplyContractionLeft", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "excludedFromTotalSupply", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "game", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gameOracle", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gamePriceCeiling", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gamePriceOne", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBondDiscountRate", + "outputs": [{ + "internalType": "uint256", + "name": "_rate", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBondPremiumRate", + "outputs": [{ + "internalType": "uint256", + "name": "_rate", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBurnableGameLeft", + "outputs": [{ + "internalType": "uint256", + "name": "_burnableGameLeft", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getGameCirculatingSupply", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getGamePrice", + "outputs": [{ + "internalType": "uint256", + "name": "gamePrice", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getGameUpdatedPrice", + "outputs": [{ + "internalType": "uint256", + "name": "_gamePrice", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRedeemableBonds", + "outputs": [{ + "internalType": "uint256", + "name": "_redeemableBonds", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReserve", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "governanceRecoverUnsupported", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "hodl", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_game", + "type": "address" + }, + { + "internalType": "address", + "name": "_hodl", + "type": "address" + }, + { + "internalType": "address", + "name": "_theory", + "type": "address" + }, + { + "internalType": "address", + "name": "_gameOracle", + "type": "address" + }, + { + "internalType": "address", + "name": "_theoretics", + "type": "address" + }, + { + "internalType": "address", + "name": "_genesisPool", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_startTime", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "initialized", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isInitialized", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxDebtRatioPercent", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxDiscountRate", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "maxExpansionTiers", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxPremiumRate", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxSupplyContractionPercent", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxSupplyExpansionPercent", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "mintingFactorForPayingDebt", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextEpochPoint", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "operator", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "premiumPercent", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "premiumThreshold", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "previousEpochGamePrice", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_bondAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "targetPrice", + "type": "uint256" + } + ], + "name": "redeemBonds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "seigniorageExpansionFloorPercent", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "seigniorageSaved", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_bondDepletionFloorPercent", + "type": "uint256" + }], + "name": "setBondDepletionFloorPercent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_bondSupplyExpansionPercent", + "type": "uint256" + }], + "name": "setBondSupplyExpansionPercent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_bootstrapEpochs", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_bootstrapSupplyExpansionPercent", + "type": "uint256" + } + ], + "name": "setBootstrap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_discountPercent", + "type": "uint256" + }], + "name": "setDiscountPercent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_daoFund", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_daoFundSharedPercent", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_devFund", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_devFundSharedPercent", + "type": "uint256" + } + ], + "name": "setExtraFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_gameOracle", + "type": "address" + }], + "name": "setGameOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_gamePriceCeiling", + "type": "uint256" + }], + "name": "setGamePriceCeiling", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_maxDebtRatioPercent", + "type": "uint256" + }], + "name": "setMaxDebtRatioPercent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_maxDiscountRate", + "type": "uint256" + }], + "name": "setMaxDiscountRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint8", + "name": "_index", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "setMaxExpansionTiersEntry", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_maxPremiumRate", + "type": "uint256" + }], + "name": "setMaxPremiumRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_maxSupplyContractionPercent", + "type": "uint256" + }], + "name": "setMaxSupplyContractionPercent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_maxSupplyExpansionPercent", + "type": "uint256" + }], + "name": "setMaxSupplyExpansionPercents", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_mintingFactorForPayingDebt", + "type": "uint256" + }], + "name": "setMintingFactorForPayingDebt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_operator", + "type": "address" + }], + "name": "setOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_premiumPercent", + "type": "uint256" + }], + "name": "setPremiumPercent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_premiumThreshold", + "type": "uint256" + }], + "name": "setPremiumThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_time", + "type": "uint256" + }], + "name": "setStartTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint8", + "name": "_index", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "setSupplyTiersEntry", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_theoretics", + "type": "address" + }], + "name": "setTheoretics", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "startTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "supplyTiers", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "theoretics", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }], + "name": "theoreticsAllocateSeigniorage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "theoreticsGetCurrentClaimEpochs", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "theoreticsGetCurrentWithdrawEpochs", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "theoreticsGetLockPercentage", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_user", + "type": "address" + }], + "name": "theoreticsGetWithdrawFeeOf", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "theoreticsGovernanceRecoverUnsupported", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_withdrawLockupEpochs", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_rewardLockupEpochs", + "type": "uint256" + } + ], + "name": "theoreticsSetLockUp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_operator", + "type": "address" + }], + "name": "theoreticsSetOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "theory", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + } + ] + }, + "Theoretics": { + "address": "0x8b1455618B07Fa4Ef1f67F9f85b8a7CE6588b513", + "abi": [{ + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "executor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "at", + "type": "uint256" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "previousOperator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOperator", + "type": "address" + } + ], + "name": "OperatorTransferred", + "type": "event" + }, + { + "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": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + } + ], + "name": "RewardAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lockAmount", + "type": "uint256" + } + ], + "name": "RewardPaid", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Staked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdrawn", + "type": "event" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toAdd", + "type": "address" + }], + "name": "addAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }], + "name": "allocateSeigniorage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "name": "authorized", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "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": "theorist", + "type": "address" + }], + "name": "canClaimReward", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "theorist", + "type": "address" + }], + "name": "canWithdraw", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "claimReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "theorist", + "type": "address" + }], + "name": "earned", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "epoch", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "exit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "farm", + "outputs": [{ + "internalType": "contract IFarm", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "feeStagePercentage", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "feeStageTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "game", + "outputs": [{ + "internalType": "contract IERC20Lockable", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCurrentClaimEpochs", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCurrentWithdrawEpochs", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getGamePrice", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "theorist", + "type": "address" + }], + "name": "getLastSnapshotIndexOf", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLockPercentage", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_user", + "type": "address" + }], + "name": "getWithdrawFeeOf", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "governanceRecoverUnsupported", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "contract IERC20Lockable", + "name": "_game", + "type": "address" + }, + { + "internalType": "contract IERC20Lockable", + "name": "_share", + "type": "address" + }, + { + "internalType": "contract ITreasury", + "name": "_treasury", + "type": "address" + }, + { + "internalType": "contract IFarm", + "name": "_farm", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "initialized", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isOperator", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "latestSnapshotIndex", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextEpochPoint", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "operator", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pegMaxUnlock", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toRemove", + "type": "address" + }], + "name": "removeAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_time", + "type": "uint256" + } + ], + "name": "reviseDeposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_time", + "type": "uint256" + } + ], + "name": "reviseWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardLockupEpochs", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardPerShare", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sameBlockFee", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256[]", + "name": "_feeStageTime", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_feeStagePercentage", + "type": "uint256[]" + } + ], + "name": "setFeeStages", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_withdrawLockupEpochs", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_rewardLockupEpochs", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_pegMaxUnlock", + "type": "uint256" + } + ], + "name": "setLockUp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + }], + "name": "setSameBlockFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "share", + "outputs": [{ + "internalType": "contract IERC20Lockable", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }], + "name": "stake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "theoreticsHistory", + "outputs": [{ + "internalType": "uint256", + "name": "time", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardReceived", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardPerShare", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "name": "theorists", + "outputs": [{ + "internalType": "uint256", + "name": "lastSnapshotIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardEarned", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "epochTimerStart", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastDepositBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastWithdrawTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "firstDepositTime", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "newOperator_", + "type": "address" + }], + "name": "transferOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "newOwner", + "type": "address" + }], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "treasury", + "outputs": [{ + "internalType": "contract ITreasury", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "withdrawLockupEpochs", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + } + ] + }, + "GameGenesisRewardPool": { + "address": "0x5713201Bbd87bBbECd690D76903BdBbaCc4EC77C", + "abi": [{ + "inputs": [{ + "internalType": "address", + "name": "_game", + "type": "address" + }, + { + "internalType": "contract ITreasury", + "name": "_treasury", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_poolStartTime", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "EmergencyWithdraw", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "previousOperator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOperator", + "type": "address" + } + ], + "name": "OperatorTransferred", + "type": "event" + }, + { + "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": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RewardPaid", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_allocPoint", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "bool", + "name": "_withUpdate", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "_lastRewardTime", + "type": "uint256" + } + ], + "name": "add", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toAdd", + "type": "address" + }], + "name": "addAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "name": "authorized", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "depositFee", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }], + "name": "emergencyWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "forceMassUpdatePools", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }], + "name": "forceUpdatePool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "game", + "outputs": [{ + "internalType": "contract IERC20", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gamePerSecond", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }], + "name": "getGamePerSecondInPool", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_fromTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_toTime", + "type": "uint256" + } + ], + "name": "getGeneratedReward", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRequiredAllocation", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "governanceRecoverUnsupported", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "isOperator", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "operator", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "pendingGAME", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "poolEndTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "poolInfo", + "outputs": [{ + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allocPoint", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastRewardTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accGamePerShare", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isStarted", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "poolStartTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toRemove", + "type": "address" + }], + "name": "removeAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "runningTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_allocPoint", + "type": "uint256" + } + ], + "name": "set", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_depositFee", + "type": "uint256" + }], + "name": "setDepositFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_time", + "type": "uint256" + }], + "name": "setPoolEndTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_time", + "type": "uint256" + }], + "name": "setPoolStartTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "totalAllocPoint", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "newOperator_", + "type": "address" + }], + "name": "transferOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "newOwner", + "type": "address" + }], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "treasury", + "outputs": [{ + "internalType": "contract ITreasury", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "userInfo", + "outputs": [{ + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardDebt", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] + }, + "TheoryRewardPool": { + "address": "0x085DAD9Ac4E8EF88Ff2B12218401dE015A36eB0d", + "abi": [{ + "inputs": [{ + "internalType": "address", + "name": "_theory", + "type": "address" + }, + { + "internalType": "contract ITreasury", + "name": "_treasury", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_poolStartTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_halvingAfterTime", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "_rewardMultiplier", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_percentLockBonusRewards", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "EmergencyWithdraw", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "previousOperator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOperator", + "type": "address" + } + ], + "name": "OperatorTransferred", + "type": "event" + }, + { + "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": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lockAmount", + "type": "uint256" + } + ], + "name": "RewardPaid", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "FINISH_BONUS_AT_TIME", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "HALVING_AT_TIME", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "PERCENT_LOCK_BONUS_REWARD", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "REWARD_MULTIPLIER", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_allocPoint", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "bool", + "name": "_withUpdate", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "_lastRewardTime", + "type": "uint256" + } + ], + "name": "add", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toAdd", + "type": "address" + }], + "name": "addAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "name": "authorized", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseTheoryPerSecond", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_newFinish", + "type": "uint256" + }], + "name": "bonusFinishUpdate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }], + "name": "emergencyWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "feeStagePercentage", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "feeStageTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "forceMassUpdatePools", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }], + "name": "forceUpdatePool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getCurrentLockPercentage", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_fromTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_toTime", + "type": "uint256" + } + ], + "name": "getGeneratedReward", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_from", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_to", + "type": "uint256" + } + ], + "name": "getLockPercentage", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_from", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_to", + "type": "uint256" + } + ], + "name": "getMultiplier", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRequiredAllocation", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }], + "name": "getTheoryPerSecondInPool", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getWithdrawFeeOf", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "governanceRecoverUnsupported", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256[]", + "name": "_newHalving", + "type": "uint256[]" + }], + "name": "halvingUpdate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "isOperator", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256[]", + "name": "_newLock", + "type": "uint256[]" + }], + "name": "lockUpdate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "operator", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "pendingShare", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "poolEndTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "poolInfo", + "outputs": [{ + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allocPoint", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastRewardTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accTheoryPerShare", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isStarted", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "poolStartTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toRemove", + "type": "address" + }], + "name": "removeAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_time", + "type": "uint256" + } + ], + "name": "reviseDeposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_time", + "type": "uint256" + } + ], + "name": "reviseWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256[]", + "name": "_newMulReward", + "type": "uint256[]" + }], + "name": "rewardMulUpdate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "runningTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sameBlockFee", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_allocPoint", + "type": "uint256" + } + ], + "name": "set", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256[]", + "name": "_feeStageTime", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_feeStagePercentage", + "type": "uint256[]" + } + ], + "name": "setFeeStages", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_time", + "type": "uint256" + }], + "name": "setPoolEndTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_time", + "type": "uint256" + }], + "name": "setPoolStartTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + }], + "name": "setSameBlockFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "theory", + "outputs": [{ + "internalType": "contract IERC20Lockable", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalAllocPoint", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "newOperator_", + "type": "address" + }], + "name": "transferOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "newOwner", + "type": "address" + }], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "treasury", + "outputs": [{ + "internalType": "contract ITreasury", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "userInfo", + "outputs": [{ + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardDebtAtTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastDepositBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastWithdrawTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "firstDepositTime", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] + }, + "zapper": { + "address": "0x2656DaB561f7c4dd0cecb87D94eE2094282B60a9", + "abi": [{ + "inputs": [{ + "internalType": "address", + "name": "_WNATIVE", + "type": "address" + }], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": false, + "internalType": "address", + "name": "fee_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rate", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "min", + "type": "uint16" + } + ], + "name": "FeeChange", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_LP", + "type": "address" + }, + { + "internalType": "address", + "name": "_router", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amt", + "type": "uint256" + } + ], + "name": "estimateZapIn", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "address", + "name": "_router", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amt", + "type": "uint256" + } + ], + "name": "estimateZapInToken", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint16", + "name": "rate", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "min", + "type": "uint16" + } + ], + "name": "setFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "router", + "type": "address" + }, + { + "internalType": "address", + "name": "bridgeToken", + "type": "address" + } + ], + "name": "setTokenBridgeForRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "router", + "type": "address" + }], + "name": "setUseNativeRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "routerAddr", + "type": "address" + }, + { + "internalType": "address", + "name": "_recipient", + "type": "address" + } + ], + "name": "swapToNative", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "address", + "name": "routerAddr", + "type": "address" + }, + { + "internalType": "address", + "name": "_recipient", + "type": "address" + } + ], + "name": "swapToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "newOwner", + "type": "address" + }], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "name": "useNativeRouter", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "token", + "type": "address" + }], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_toRouter", + "type": "address" + }, + { + "internalType": "address", + "name": "_recipient", + "type": "address" + } + ], + "name": "zapAcross", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "address", + "name": "routerAddr", + "type": "address" + }, + { + "internalType": "address", + "name": "_recipient", + "type": "address" + } + ], + "name": "zapIn", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "address", + "name": "routerAddr", + "type": "address" + }, + { + "internalType": "address", + "name": "_recipient", + "type": "address" + } + ], + "name": "zapInToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "routerAddr", + "type": "address" + }, + { + "internalType": "address", + "name": "_recipient", + "type": "address" + } + ], + "name": "zapOut", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "address", + "name": "routerAddr", + "type": "address" + }, + { + "internalType": "address", + "name": "_recipient", + "type": "address" + } + ], + "name": "zapOutToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ] + }, + "SpookyRouter": { + "address": "0xa6AD18C2aC47803E193F75c3677b14BF19B94883", + "abi": [{ + "inputs": [{ + "internalType": "address", + "name": "_factory", + "type": "address" + }, + { + "internalType": "address", + "name": "_WETH", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "WETH", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [{ + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [{ + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [{ + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [{ + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [{ + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [{ + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [{ + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [{ + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [{ + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "outputs": [{ + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [{ + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "outputs": [{ + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [{ + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [{ + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [{ + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [{ + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [{ + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [{ + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [{ + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ] + }, + "TheoryUnlocker": { + "address": "0x24559C54724704F1B909eA668DD7C72df0B9BCcc", + "abi": [{ + "inputs": [{ + "internalType": "contract IERC20", + "name": "_buy", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_initialBuy", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_buyPerLevel", + "type": "uint256" + }, + { + "internalType": "contract IERC20Lockable", + "name": "_theory", + "type": "address" + }, + { + "internalType": "address", + "name": "_communityFund", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "_maxLevelTime", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_maxLevelLevel", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_levelURIsLevel", + "type": "uint256[]" + }, + { + "internalType": "string[]", + "name": "_levelURIsURI", + "type": "string[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "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": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toAdd", + "type": "address" + }], + "name": "addAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "name": "authorized", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "owner", + "type": "address" + }], + "name": "balanceOf", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "buyToken", + "outputs": [{ + "internalType": "contract IERC20", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "buyTokenPerLevel", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "player", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "canUnlockAmount", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "communityFund", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "level", + "type": "uint256" + }], + "name": "costOf", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "disableMint", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }], + "name": "getApproved", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialPrice", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "level", + "type": "uint256" + }], + "name": "levelURI", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "levelURIsLevel", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "levelURIsURI", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }], + "name": "levelUp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "maxLevel", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "maxLevelLevel", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "maxLevelTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenId2", + "type": "uint256" + } + ], + "name": "merge", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "level", + "type": "uint256" + }], + "name": "mint", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }], + "name": "nextLevelTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }], + "name": "nftUnlock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }], + "name": "ownerOf", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toRemove", + "type": "address" + }], + "name": "removeAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "contract IERC20", + "name": "_buy", + "type": "address" + }], + "name": "setBuyToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_perLevel", + "type": "uint256" + }], + "name": "setBuyTokenPerLevel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_fund", + "type": "address" + }], + "name": "setCommunityFund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "setCreationTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "bool", + "name": "_disable", + "type": "bool" + }], + "name": "setDisableMint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_initial", + "type": "uint256" + }], + "name": "setInitialPrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "setLastLevelTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setLastLockAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "setLastUnlockTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256[]", + "name": "_levelURIsLevel", + "type": "uint256[]" + }, + { + "internalType": "string[]", + "name": "_levelURIsURI", + "type": "string[]" + } + ], + "name": "setLevelURIs", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256[]", + "name": "_maxLevelTime", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_maxLevelLevel", + "type": "uint256[]" + } + ], + "name": "setMaxLevel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_time", + "type": "uint256" + }], + "name": "setTimeToLevel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "level", + "type": "uint256" + } + ], + "name": "setTokenLevel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + }], + "name": "supportsInterface", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "theory", + "outputs": [{ + "internalType": "contract IERC20Lockable", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }], + "name": "timeLeftToLevel", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "timeToLevel", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "index", + "type": "uint256" + }], + "name": "tokenByIndex", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "tokenInfo", + "outputs": [{ + "internalType": "uint256", + "name": "level", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "creationTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastLevelTime", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }], + "name": "tokenURI", + "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": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "newOwner", + "type": "address" + }], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "name": "userInfo", + "outputs": [{ + "internalType": "uint256", + "name": "lastUnlockTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastLockAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ] + }, + "TheoryUnlockerGen1": { + "address": "0x50bB33375af32EAf42af72c6004bAAd931042632", + "abi": [{ + "inputs": [{ + "internalType": "contract IERC20", + "name": "_buy", + "type": "address" + }, + { + "internalType": "uint256[2]", + "name": "_prices", + "type": "uint256[2]" + }, + { + "internalType": "contract IERC20Lockable[2]", + "name": "_theoryAndGame", + "type": "address[2]" + }, + { + "internalType": "address", + "name": "_communityFund", + "type": "address" + }, + { + "internalType": "contract ITheoryUnlocker", + "name": "_gen0", + "type": "address" + }, + { + "internalType": "contract IUniswapV2Router", + "name": "_router", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "_maxLevelTime", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_maxLevelLevel", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_levelURIsLevel", + "type": "uint256[]" + }, + { + "internalType": "string[]", + "name": "_levelURIsURI", + "type": "string[]" + }, + { + "internalType": "uint256[]", + "name": "_levelURIsMax", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": false, + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "leveledTo", + "type": "uint256" + } + ], + "name": "Level", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": false, + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenId1", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenId2", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "level1", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "level2", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "levelMerged", + "type": "uint256" + } + ], + "name": "Merge", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": false, + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "level", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "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": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": false, + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "level", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountToUnlock", + "type": "uint256" + } + ], + "name": "Unlock", + "type": "event" + }, + { + "inputs": [], + "name": "TheoryUnlockerGen0", + "outputs": [{ + "internalType": "contract ITheoryUnlocker", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toAdd", + "type": "address" + }], + "name": "addAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "name": "authorized", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "owner", + "type": "address" + }], + "name": "balanceOf", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "burnPercentage", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "buyToken", + "outputs": [{ + "internalType": "contract IERC20", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "buyTokenPerLevel", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "player", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "canUnlockAmount", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "communityFund", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "level", + "type": "uint256" + }], + "name": "costOf", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "disableMint", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "emergencyDisableUnlock", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "level", + "type": "uint256" + }], + "name": "extraGameCost", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "extraGameCostAmount", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "extraGameCostLevel", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "game", + "outputs": [{ + "internalType": "contract IERC20Lockable", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gameCostPerLevel", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }], + "name": "getApproved", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialPrice", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "level", + "type": "uint256" + }], + "name": "levelURI", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "levelURIsLevel", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "levelURIsMax", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "levelURIsMinted", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "levelURIsSupply", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "levelURIsURI", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }], + "name": "levelUp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "theLevel", + "type": "uint256" + } + ], + "name": "levelUpTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }], + "name": "levelUpToMax", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "maxLevel", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "maxLevelLevel", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "maxLevelTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "level", + "type": "uint256" + }], + "name": "maxMinted", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenId2", + "type": "uint256" + } + ], + "name": "merge", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "level", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "slippage", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "level", + "type": "uint256" + }], + "name": "minted", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }], + "name": "nextLevelTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }], + "name": "nftUnlock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }], + "name": "ownerOf", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toRemove", + "type": "address" + }], + "name": "removeAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [{ + "internalType": "contract IUniswapV2Router", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_burn", + "type": "uint256" + }], + "name": "setBurnPercentage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "contract IERC20", + "name": "_buy", + "type": "address" + }], + "name": "setBuyToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_fund", + "type": "address" + }], + "name": "setCommunityFund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "setCreationTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "bool", + "name": "_disable", + "type": "bool" + }], + "name": "setDisableMint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "bool", + "name": "_disable", + "type": "bool" + }], + "name": "setEmergencyDisableUnlock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_gameCostPerLevel", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "_extraGameCostLevel", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_extraGameCostAmount", + "type": "uint256[]" + } + ], + "name": "setGameCostForLevel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "setLastLevelTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setLastLockAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "setLastUnlockTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256[]", + "name": "_levelURIsLevel", + "type": "uint256[]" + }, + { + "internalType": "string[]", + "name": "_levelURIsURI", + "type": "string[]" + }, + { + "internalType": "uint256[]", + "name": "_levelURIsMax", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_levelURIsSupply", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_levelURIsMinted", + "type": "uint256[]" + } + ], + "name": "setLevelURIs", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256[]", + "name": "_maxLevelTime", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_maxLevelLevel", + "type": "uint256[]" + } + ], + "name": "setMaxLevel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_initial", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_perLevel", + "type": "uint256" + } + ], + "name": "setPrices", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "contract IUniswapV2Router", + "name": "_router", + "type": "address" + }], + "name": "setRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_time", + "type": "uint256" + }], + "name": "setTimeToLevel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "level", + "type": "uint256" + } + ], + "name": "setTokenLevel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "level", + "type": "uint256" + }], + "name": "supply", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + }], + "name": "supportsInterface", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "theory", + "outputs": [{ + "internalType": "contract IERC20Lockable", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }], + "name": "timeLeftToLevel", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "timeToLevel", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "index", + "type": "uint256" + }], + "name": "tokenByIndex", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "tokenInfo", + "outputs": [{ + "internalType": "uint256", + "name": "level", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "creationTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastLevelTime", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "merged", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }], + "name": "tokenURI", + "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": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "newOwner", + "type": "address" + }], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] + }, + "Master": { + "address": "0x6860af20ED7362c67d80A21E447d65861Fe83086", + "abi": [{ + "inputs": [{ + "internalType": "contract IERC20Lockable", + "name": "_theory", + "type": "address" + }, + { + "internalType": "contract IERC20Lockable", + "name": "_game", + "type": "address" + }, + { + "internalType": "contract ITheoretics", + "name": "_theoretics", + "type": "address" + }, + { + "internalType": "contract ITreasury", + "name": "_treasury", + "type": "address" + }, + { + "internalType": "address[]", + "name": "_whitelist", + "type": "address[]" + } + ], + "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": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountInTheory", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountOutMaster", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "LockGame", + "type": "event" + }, + { + "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": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lockAmount", + "type": "uint256" + } + ], + "name": "RewardPaid", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }], + "name": "Snapshot", + "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" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "UnlockGame", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountInMaster", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountOutTheory", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountInMaster", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountOutTheory", + "type": "uint256" + } + ], + "name": "WithdrawRequest", + "type": "event" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toAdd", + "type": "address" + }], + "name": "addAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "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": "from", + "type": "address" + }], + "name": "approveTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "name": "authorized", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "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": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "snapshotId", + "type": "uint256" + } + ], + "name": "balanceOfAt", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amountInTheory", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lockTime", + "type": "uint256" + } + ], + "name": "buyFromTheory", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_holder", + "type": "address" + }], + "name": "canUnlockAmountGame", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "claimGame", + "outputs": [], + "stateMutability": "nonpayable", + "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": "theorist", + "type": "address" + }], + "name": "earned", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "theorist", + "type": "address" + }], + "name": "getLastSnapshotIndexOf", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "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": "bool", + "name": "allowEmergency", + "type": "bool" + }], + "name": "initiatePart1", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "initiatePart2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "latestSnapshotIndex", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_holder", + "type": "address" + }], + "name": "lockOfGame", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "name": "masterHistory", + "outputs": [{ + "internalType": "uint256", + "name": "time", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardReceived", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardPerShare", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_share", + "type": "uint256" + }], + "name": "masterToTheory", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minLockTime", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toRemove", + "type": "address" + }], + "name": "removeAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amountInMaster", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "allowEmergency", + "type": "bool" + } + ], + "name": "requestSellToTheory", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "sellToTheory", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "lockTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "penalty", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "emergency", + "type": "bool" + } + ], + "name": "setAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }], + "name": "stakeExternalTheory", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ + "internalType": "string", + "name": "", + "type": "string" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }], + "name": "theoryToMaster", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_holder", + "type": "address" + }], + "name": "totalBalanceOfGame", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_holder", + "type": "address" + }], + "name": "totalCanUnlockAmountGame", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalGameLocked", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalGameUnclaimed", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalLockGame", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalStakeRequestedInTheory", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "snapshotId", + "type": "uint256" + }], + "name": "totalSupplyAt", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalWithdrawRequestedInMaster", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalWithdrawRequestedInTheory", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalWithdrawUnclaimedInTheory", + "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": "newOwner", + "type": "address" + }], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unlockGame", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "unlockGameForUser", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unlockedClaimPenalty", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "name": "userInfo", + "outputs": [{ + "internalType": "uint256", + "name": "lockToTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "chosenLockTime", + "type": "uint256" + }, + { + "internalType": "address", + "name": "approveTransferFrom", + "type": "address" + }, + { + "internalType": "uint256", + "name": "lastSnapshotIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardEarned", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawRequestedInMaster", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawRequestedInTheory", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastStakeRequestBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastWithdrawRequestBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gameLocked", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gameLockFrom", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gameLastUnlockTime", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ] + }, + "Marketplace": { + "address": "0xC21a8F58EeD11e11cc2F73158F489EA2E55A62de", + "abi": [{ + "inputs": [{ + "internalType": "contract IERC20", + "name": "_buy", + "type": "address" + }, + { + "internalType": "address", + "name": "_communityFund", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "uint256", + "name": "marketItemId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "nftContract", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "genNumber", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "sold", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bool", + "name": "canceled", + "type": "bool" + } + ], + "name": "MarketItemCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toAdd", + "type": "address" + }], + "name": "addAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "name": "authorized", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "buyToken", + "outputs": [{ + "internalType": "contract IERC20", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "nftContractAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "marketItemId", + "type": "uint256" + } + ], + "name": "cancelMarketItem", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "communityFund", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "nftContractAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "genNumber", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + } + ], + "name": "createMarketItem", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "nftContractAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "marketItemId", + "type": "uint256" + } + ], + "name": "createMarketSale", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "fetchAvailableMarketItems", + "outputs": [{ + "components": [{ + "internalType": "uint256", + "name": "marketItemId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "nftContractAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "genNumber", + "type": "uint256" + }, + { + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "sold", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canceled", + "type": "bool" + } + ], + "internalType": "struct Marketplace.MarketItem[]", + "name": "", + "type": "tuple[]" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "string", + "name": "_addressProperty", + "type": "string" + }], + "name": "fetchMarketItemsByAddressProperty", + "outputs": [{ + "components": [{ + "internalType": "uint256", + "name": "marketItemId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "nftContractAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "genNumber", + "type": "uint256" + }, + { + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "sold", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canceled", + "type": "bool" + } + ], + "internalType": "struct Marketplace.MarketItem[]", + "name": "", + "type": "tuple[]" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "fetchOwnedMarketItems", + "outputs": [{ + "components": [{ + "internalType": "uint256", + "name": "marketItemId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "nftContractAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "genNumber", + "type": "uint256" + }, + { + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "sold", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canceled", + "type": "bool" + } + ], + "internalType": "struct Marketplace.MarketItem[]", + "name": "", + "type": "tuple[]" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "fetchSellingMarketItems", + "outputs": [{ + "components": [{ + "internalType": "uint256", + "name": "marketItemId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "nftContractAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "genNumber", + "type": "uint256" + }, + { + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "sold", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canceled", + "type": "bool" + } + ], + "internalType": "struct Marketplace.MarketItem[]", + "name": "", + "type": "tuple[]" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFeeRate", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }], + "name": "getLatestMarketItemByTokenId", + "outputs": [{ + "components": [{ + "internalType": "uint256", + "name": "marketItemId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "nftContractAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "genNumber", + "type": "uint256" + }, + { + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "sold", + "type": "bool" + }, + { + "internalType": "bool", + "name": "canceled", + "type": "bool" + } + ], + "internalType": "struct Marketplace.MarketItem", + "name": "", + "type": "tuple" + }, + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "marketItemId", + "type": "uint256" + }], + "name": "getPrice", + "outputs": [{ + "internalType": "uint256", + "name": "", + "type": "uint256" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "mutex", + "outputs": [{ + "internalType": "bool", + "name": "", + "type": "bool" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ + "internalType": "address", + "name": "", + "type": "address" + }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_toRemove", + "type": "address" + }], + "name": "removeAuthorized", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "contract IERC20", + "name": "_buy", + "type": "address" + }], + "name": "setBuyToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "_newCommunityFund", + "type": "address" + }], + "name": "setCommunityFund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "uint256", + "name": "_newFeeRate", + "type": "uint256" + }], + "name": "setFeeRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "newOwner", + "type": "address" + }], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }], + "name": "withdrawTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] + } +} \ No newline at end of file diff --git a/src/views/Nft/Nft.js b/src/views/Nft/Nft.js index db22f02..bb4a284 100644 --- a/src/views/Nft/Nft.js +++ b/src/views/Nft/Nft.js @@ -1055,7 +1055,7 @@ LTHEORY Unlockers available to Mint What are the benefits of Game Theory NFTs? - + Game Theory NFTs can be used in the following ways:

  1. diff --git a/src/views/NftMarketplace/NftMarketplace.js b/src/views/NftMarketplace/NftMarketplace.js new file mode 100644 index 0000000..56a7d67 --- /dev/null +++ b/src/views/NftMarketplace/NftMarketplace.js @@ -0,0 +1,108 @@ +import React, { useState } from 'react'; +import { useWallet } from 'use-wallet'; +import styled from 'styled-components'; +import { makeStyles } from '@mui/styles'; +import { Box, Typography, Grid, Container } from '@mui/material'; +import UnlockWallet from '../../components/UnlockWallet'; +import Page from '../../components/Page'; +import Markets from './components/markets'; +import MyNFTs from './components/myNfts'; +import { createGlobalStyle } from 'styled-components'; +import Web3Provider from './utils/Web3Provider'; +import { CacheProvider } from '@emotion/react'; +import createEmotionCache from './utils/createEmotionCache'; + +// Client-side cache, shared for the whole session of the user in the browser. +const clientSideEmotionCache = createEmotionCache() + +const NftMarketplace = (props) => { + const { emotionCache = clientSideEmotionCache } = props + const classes = useStyles(); + const { account } = useWallet(); + const [activeTab, setActiveTab] = useState("tab1"); + + const handleTab1 = () =>{ + setActiveTab("tab1"); + }; + const handleTab2 = () => { + setActiveTab("tab2"); + }; + + return ( + + + + + {!!account ? ( + <> + + NFT Marketplace + + + + + Market Place + My NFTs + + + {activeTab ==="tab1" ? : } + + + + + ) : ( + + )} + + + + ); +}; + + + +const BackgroundImage = createGlobalStyle` + body { + background-color: var(--black); + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='32' viewBox='0 0 16 32'%3E%3Cg fill='%231D1E1F' fill-opacity='0.4'%3E%3Cpath fill-rule='evenodd' d='M0 24h4v2H0v-2zm0 4h6v2H0v-2zm0-8h2v2H0v-2zM0 0h4v2H0V0zm0 4h2v2H0V4zm16 20h-6v2h6v-2zm0 4H8v2h8v-2zm0-8h-4v2h4v-2zm0-20h-6v2h6V0zm0 4h-4v2h4V4zm-2 12h2v2h-2v-2zm0-8h2v2h-2V8zM2 8h10v2H2V8zm0 8h10v2H2v-2zm-2-4h14v2H0v-2zm4-8h6v2H4V4zm0 16h6v2H4v-2zM6 0h2v2H6V0zm0 24h2v2H6v-2z'/%3E%3C/g%3E%3C/svg%3E"); + } + + * { + color: var(--white) !important; + } +`; + +const useStyles = makeStyles((theme) => ({ + + nftField: { + display: "flex", + justifyContent: "center" + }, + + toggleNav: { + display: "flex", + margin: '40px 16px', + boxShadow: '0px 2px 4px var(--extra-color-1)' + }, + + tabs: { + fontSize: 20, + width: '50%', + textAlign: 'center', + color: "#9a9797 !important", + padding: "16px 0 12px", + cursor: "pointer" + }, + + tabActive: { + fontSize: 20, + width: '50%', + textAlign: 'center', + color: "#FFF", + padding: "16px 0 12px", + backgroundColor: "#ff26de56", + cursor: "pointer" + } +})); + +export default NftMarketplace; diff --git a/src/views/NftMarketplace/components/card/CardAddresses.js b/src/views/NftMarketplace/components/card/CardAddresses.js new file mode 100755 index 0000000..f9f352b --- /dev/null +++ b/src/views/NftMarketplace/components/card/CardAddresses.js @@ -0,0 +1,28 @@ +import { Typography } from '@mui/material' +import { ethers } from 'ethers' +import { useContext } from 'react' +import { shortenAddress } from '../../utils/format' +import { Web3Context } from '../../utils/Web3Provider' + +function getAddressText(address, account) { + if (address === ethers.constants.AddressZero) return 'Marketplace'; + if (address === account) return 'You'; + return shortenAddress(address); +} + +export default function CardAddresses({ nft }) { + const isAvailable = !nft.sold && !nft.canceled; + const { account } = useContext(Web3Context); + return ( + <> + + Owner: {getAddressText(nft.owner, account)} + + {isAvailable && + + Seller: {getAddressText(nft.seller, account)} + + } + + ); +}; diff --git a/src/views/NftMarketplace/components/card/NFTPrice.js b/src/views/NftMarketplace/components/card/NFTPrice.js new file mode 100755 index 0000000..9918373 --- /dev/null +++ b/src/views/NftMarketplace/components/card/NFTPrice.js @@ -0,0 +1,45 @@ +import { Typography } from '@mui/material' +import Game from '../../../../assets/img/GAME.png' +// import Image from 'material-ui-image' + +function getPriceText (nft) { + const { sold, canceled } = nft; + if (sold) { + return 'Sold for' + } + + if (canceled) { + return 'Offered for' + } + + return 'Price' +} + +export default function NFTPrice ({ nft }) { + const priceText = getPriceText(nft); + + return ( +
    + + + {priceText} + + + + Game + + {' '}{nft.price} + +
    + ); +}; diff --git a/src/views/NftMarketplace/components/card/PriceTextField.js b/src/views/NftMarketplace/components/card/PriceTextField.js new file mode 100755 index 0000000..cf7415e --- /dev/null +++ b/src/views/NftMarketplace/components/card/PriceTextField.js @@ -0,0 +1,21 @@ +import { TextField } from '@mui/material' + +export default function PriceTextField ({ onChange, disabled, error }) { + return ( + + ); +}; diff --git a/src/views/NftMarketplace/components/gen0/Gen0Card.js b/src/views/NftMarketplace/components/gen0/Gen0Card.js new file mode 100755 index 0000000..899e4ac --- /dev/null +++ b/src/views/NftMarketplace/components/gen0/Gen0Card.js @@ -0,0 +1,198 @@ +import { ethers } from 'ethers' +import { useContext, useEffect, useState } from 'react' +import { makeStyles } from '@mui/styles' +import { Grid, Card, CardActions, CardContent, CardMedia, Button, Divider, Box, CircularProgress, Typography } from '@mui/material' +import { Web3Context } from '../../utils/Web3Provider' +import NFTPrice from '../card/NFTPrice' +import CardAddresses from '../card/CardAddresses' +import PriceTextField from '../card/PriceTextField' +import ReactPlayer from 'react-player'; +import useApprove, { ApprovalState } from '../../../../hooks/useApprove' +import useTombFinance from '../../../../hooks/useTombFinance' + +const APPROVE_AMOUNT = ethers.constants.MaxUint256; + +export default function Gen0Card({ nft, action, updateNFT }) { + const { account, TheoryUnlocker, marketplaceContract, GameContract, hasWeb3 } = useContext(Web3Context); + const [isHovered, setIsHovered] = useState(false); + const [isLoading, setIsLoading] = useState(false); + const [priceError, setPriceError] = useState(false); + const [newPrice, setPrice] = useState(0); + const classes = useStyles(); + + const tombFinance = useTombFinance(); + const [approveStatus, approve] = useApprove(tombFinance?.TOMB, tombFinance?.contracts.Marketplace.address); + + const actions = { + buy: { + text: 'buy', + method: buyNft + }, + cancel: { + text: 'cancel', + method: cancelNft + }, + approve: { + text: 'Approve for selling', + method: approveNft + }, + sell: { + text: 'Sell', + method: sellNft + } + }; + + async function buyNft (nft) { + const transaction = await marketplaceContract.createMarketSale(TheoryUnlocker.address, nft.marketItemId); + await transaction.wait(); + updateNFT(); + } + + async function approveBuy () { + const transaction = await GameContract.approve(marketplaceContract.address, APPROVE_AMOUNT); + await transaction.wait(); + // updateNFT(); + } + + async function cancelNft (nft) { + const transaction = await marketplaceContract.cancelMarketItem(TheoryUnlocker.address, nft.marketItemId); + await transaction.wait(); + updateNFT(); + } + + async function approveNft(nft) { + const approveTx = await TheoryUnlocker.approve(marketplaceContract.address, nft.tokenId); + await approveTx.wait(); + updateNFT(); + return approveTx; + } + + async function sellNft (nft) { + if (!newPrice) { + setPriceError(true); + return; + } + setPriceError(false) + const priceInWei = ethers.utils.parseUnits(newPrice, 'ether'); + const transaction = await marketplaceContract.createMarketItem(TheoryUnlocker.address, nft.tokenId, 0, priceInWei); + await transaction.wait(); + updateNFT(); + return transaction; + } + + async function onClick (nft) { + try { + setIsLoading(true); + await actions[action].method(nft); + } catch (error) { + console.log(error); + } finally { + setIsLoading(false); + } + } + + return ( + setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)} + > + + + + + + Generation + 0 + + + Tier + {nft.attributes[0].value} + + + Level + {nft.level.toNumber()} + + + + +
    + Token ID:{nft.tokenId.toNumber()} + +
    +
    + {action === 'sell' + ? setPrice(e.target.value)} /> + : + } +
    +
    +
    + + {nft.owner === ethers.constants.AddressZero && approveStatus !== ApprovalState.APPROVED && nft.seller !== account ? ( + + ) : ( + + )} + +
    + ); +}; + +const useStyles = makeStyles({ + root: { + flexDirection: 'column', + display: 'flex', + margin: 15, + flexGrow: 1, + height: 'auto', + + '& .video': { + '& > video': { + borderTopLeftRadius: 17, + borderTopRightRadius: 17 + } + } + }, + cardContent: { + padding: '9px 16px 16px', + display: 'flex', + flexDirection: 'column', + height: '100%' + }, + firstDivider: { + margin: '10px 0', + borderColor: '#e4e2e226' + }, + addressesAndPrice: { + display: 'flex', + flexDirection: 'row' + }, + addressesContainer: { + margin: 'auto', + width: '60%', + textAlign: 'left' + }, + priceContainer: { + width: '40%', + margin: 'auto', + '& input': { + fontSize: '20px' + } + }, + cardActions: { + padding: '10px 16px 16px' + }, + btn: { + background: '#ff24df', + fontSize: 15 + } +}) \ No newline at end of file diff --git a/src/views/NftMarketplace/components/gen0/Gen0CardList.js b/src/views/NftMarketplace/components/gen0/Gen0CardList.js new file mode 100755 index 0000000..e4cc70a --- /dev/null +++ b/src/views/NftMarketplace/components/gen0/Gen0CardList.js @@ -0,0 +1,75 @@ +import { useContext } from 'react' +import { ethers } from 'ethers' +import Grid from '@mui/material/Grid' +import Fade from '@mui/material/Fade' +import { makeStyles } from '@mui/styles' +import Gen0Card from './Gen0Card' +import { Web3Context } from '../../utils/Web3Provider' +import { mapOwnedTokenIdsAsMarketItems } from '../../utils/nft' + +export default function Gen0CardList({ nfts, setNfts }) { + const classes = useStyles(); + const { account, marketplaceContract, TheoryUnlocker} = useContext(Web3Context); + + async function updateNFT(index, tokenId) { + const updatedNFt = await mapOwnedTokenIdsAsMarketItems(marketplaceContract, TheoryUnlocker, account)(tokenId); + setNfts(prevNfts => { + const updatedNfts = [...prevNfts]; + updatedNfts[index] = updatedNFt; + return updatedNfts; + }); + } + + function Gen0NFT({ nft, index }) { + if (nft.owner === account && !nft.hasMarketApproval) { + return updateNFT(index, nft.tokenId)} /> + } + + if (nft.owner === account && nft.hasMarketApproval) { + return updateNFT(index, nft.tokenId)} /> + } + + if (nft.seller === account && !nft.sold) { + return updateNFT(index, nft.tokenId)} /> + } + + if (nft.owner === ethers.constants.AddressZero) { + return updateNFT(index, nft.tokenId)} /> + } + + return + } + + return ( + + {nfts.map((nft, i) => + + + + + + )} + + ); +}; + +const useStyles = makeStyles((theme) => ({ + grid: { + spacing: 3, + alignItems: 'stretch' + }, + gridItem: { + display: 'flex', + transition: 'all .3s', + + '@media (min-width: 1000px)': { + maxWidth: '33.3% !important' + }, + '@media (min-width: 641px) and (max-width: 999px)': { + maxWidth: '50% !important' + }, + '@media (max-width: 640px)': { + maxWidth: '100% !important' + } + } +})); \ No newline at end of file diff --git a/src/views/NftMarketplace/components/gen1/Gen1Card.js b/src/views/NftMarketplace/components/gen1/Gen1Card.js new file mode 100755 index 0000000..71271da --- /dev/null +++ b/src/views/NftMarketplace/components/gen1/Gen1Card.js @@ -0,0 +1,204 @@ +import { ethers } from 'ethers' +import { useContext, useEffect, useState } from 'react' +import { makeStyles } from '@mui/styles' +import { Grid, Card, CardActions, CardContent, CardMedia, Button, Divider, Box, CircularProgress, Typography } from '@mui/material' +import { Web3Context } from '../../utils/Web3Provider' +import NFTPrice from '../card/NFTPrice' +import CardAddresses from '../card/CardAddresses' +import PriceTextField from '../card/PriceTextField' +import ReactPlayer from 'react-player' +import useApprove, { ApprovalState } from '../../../../hooks/useApprove' +import useTombFinance from '../../../../hooks/useTombFinance' + +const APPROVE_AMOUNT = ethers.constants.MaxUint256; + +export default function Gen1Card({ nft, action, updateNFT }) { + const { account, TheoryUnlockerGen1, marketplaceContract, GameContract, hasWeb3 } = useContext(Web3Context); + const [isHovered, setIsHovered] = useState(false); + const [isLoading, setIsLoading] = useState(false); + const [priceError, setPriceError] = useState(false); + const [newPrice, setPrice] = useState(0); + const classes = useStyles(); + + const tombFinance = useTombFinance(); + const [approveStatus, approve] = useApprove(tombFinance?.TOMB, tombFinance?.contracts.Marketplace.address); + + const actions = { + buy: { + text: 'buy', + method: buyNft + }, + cancel: { + text: 'cancel', + method: cancelNft + }, + approve: { + text: 'Approve for selling', + method: approveNft + }, + sell: { + text: 'Sell', + method: sellNft + } + }; + + async function buyNft (nft) { + // const price = ethers.utils.parseUnits(nft.price.toString(), 'ether'); + // const getPrice = await marketplaceContract.getPrice(nft.marketItemId); + const transaction = await marketplaceContract.createMarketSale(TheoryUnlockerGen1.address, nft.marketItemId); + await transaction.wait(); + updateNFT(); + } + + async function approveBuy () { + const transaction = await GameContract.approve(marketplaceContract.address, APPROVE_AMOUNT); + await transaction.wait(); + // const allowanceTx = await GameContract.allowance(account, marketplaceContract.address); + // updateNFT(); + } + + async function cancelNft (nft) { + const transaction = await marketplaceContract.cancelMarketItem(TheoryUnlockerGen1.address, nft.marketItemId); + await transaction.wait(); + updateNFT(); + } + + async function approveNft (nft) { + const approveTx = await TheoryUnlockerGen1.approve(marketplaceContract.address, nft.tokenId); + // const approveTx = await TheoryUnlockerGen1.setApprovalForAll(marketplaceContract.address, true); + await approveTx.wait(); + updateNFT(); + return approveTx; + } + + async function sellNft (nft) { + if (!newPrice) { + setPriceError(true); + return; + } + setPriceError(false) + const priceInWei = ethers.utils.parseUnits(newPrice, 'ether'); + // const approvalForSal = await TheoryUnlockerGen1.setApprovalForAll(marketplaceContract.address, true) + // await approvalForSal.wait() + const transaction = await marketplaceContract.createMarketItem(TheoryUnlockerGen1.address, nft.tokenId, 1, priceInWei); + await transaction.wait(); + updateNFT(); + return transaction; + } + + async function onClick (nft) { + try { + setIsLoading(true); + await actions[action].method(nft); + } catch (error) { + console.log(error); + } finally { + setIsLoading(false); + } + } + + return ( + setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)} + > + + + + + + Generation + 1 + + + Tier + {nft.attributes[0].value} + + + Level + {nft.level.toNumber()} + + + + +
    + Token ID: {nft.tokenId.toNumber()} + +
    +
    + {action === 'sell' + ? setPrice(e.target.value)} /> + : + } +
    +
    +
    + + {nft.owner === ethers.constants.AddressZero && approveStatus !== ApprovalState.APPROVED && nft.seller !== account ? ( + + ) : ( + + )} + +
    + ); +}; + +const useStyles = makeStyles({ + root: { + flexDirection: 'column', + display: 'flex', + margin: 15, + flexGrow: 1, + height: 'auto', + + '& .video': { + '& > video': { + borderTopLeftRadius: 17, + borderTopRightRadius: 17 + } + } + }, + cardContent: { + padding: '9px 16px 16px', + display: 'flex', + flexDirection: 'column', + height: '100%' + }, + firstDivider: { + margin: '10px 0', + borderColor: '#e4e2e226' + }, + addressesAndPrice: { + display: 'flex', + flexDirection: 'row' + }, + addressesContainer: { + margin: 'auto', + width: '60%', + textAlign: 'left' + }, + priceContainer: { + width: '40%', + margin: 'auto', + '& input': { + fontSize: '20px' + } + }, + cardActions: { + padding: '10px 16px 16px' + }, + btn: { + background: '#ff24df', + fontSize: 15 + } +}) \ No newline at end of file diff --git a/src/views/NftMarketplace/components/gen1/Gen1CardList.js b/src/views/NftMarketplace/components/gen1/Gen1CardList.js new file mode 100755 index 0000000..6e66e2f --- /dev/null +++ b/src/views/NftMarketplace/components/gen1/Gen1CardList.js @@ -0,0 +1,76 @@ +import { useContext, useState } from 'react' +import { ethers } from 'ethers' +import Grid from '@mui/material/Grid' +import Fade from '@mui/material/Fade' +import { makeStyles } from '@mui/styles' +import Gen1Card from './Gen1Card' +import { Web3Context } from '../../utils/Web3Provider' +import { mapOwnedTokenIdsAsMarketItemsGen1 } from '../../utils/nft' + +export default function Gen1CardList({ nfts, setNfts }) { + const classes = useStyles(); + const { account, marketplaceContract, TheoryUnlockerGen1 } = useContext(Web3Context); + + async function updateNFT(index, tokenId) { + const updatedNFt = await mapOwnedTokenIdsAsMarketItemsGen1(marketplaceContract, TheoryUnlockerGen1, account)(tokenId); + setNfts(prevNfts => { + const updatedNfts = [...prevNfts]; + updatedNfts[index] = updatedNFt; + return updatedNfts; + }); + } + + function Gen1NFT({ nft, index }) { + // if (nft.owner === account && nft.marketItemId && !nft.hasMarketApproval) { + if (nft.owner === account && !nft.hasMarketApproval) { + return updateNFT(index, nft.tokenId)} /> + } + + if (nft.owner === account && nft.hasMarketApproval) { + return updateNFT(index, nft.tokenId)} /> + } + + if (nft.seller === account && !nft.sold) { + return updateNFT(index, nft.tokenId)} /> + } + + if (nft.owner === ethers.constants.AddressZero) { + return updateNFT(index, nft.tokenId)} /> + } + + return + } + + return ( + + {nfts.map((nft, i) => + + + + + + )} + + ); +}; + +const useStyles = makeStyles((theme) => ({ + grid: { + spacing: 3, + alignItems: 'stretch' + }, + gridItem: { + display: 'flex', + transition: 'all .3s', + + '@media (min-width: 1000px)': { + maxWidth: '33.3% !important' + }, + '@media (min-width: 641px) and (max-width: 999px)': { + maxWidth: '50% !important' + }, + '@media (max-width: 640px)': { + maxWidth: '100% !important' + } + } +})); \ No newline at end of file diff --git a/src/views/NftMarketplace/components/markets.js b/src/views/NftMarketplace/components/markets.js new file mode 100755 index 0000000..7394d25 --- /dev/null +++ b/src/views/NftMarketplace/components/markets.js @@ -0,0 +1,73 @@ +import { useState } from 'react' +import { makeStyles } from '@mui/styles' +import { Box, Typography, Grid, Container } from '@mui/material'; +import Market0 from './markets/market-0'; +import Market1 from './markets/market-1'; + +export default function Markets() { + const [activeTab, setActiveTab] = useState("tab1"); + const classes = useStyles(); + + const handleTab1 = () =>{ + setActiveTab("tab1"); + }; + const handleTab2 = () => { + setActiveTab("tab2"); + }; + + return ( + + + + Gen 0 + Gen 1 + + + {activeTab ==="tab1" ? : } + + + + ); + +}; + +const useStyles = makeStyles((theme) => ({ + + genContainer: { + paddingLeft: 0, + paddingRight: 0 + }, + + genField: { + display: "flex", + justifyContent: "center" + }, + + genNav: { + display: "flex", + justifyContent: "space-between", + backgroundColor: "#000", + width: 230, + borderRadius: 30, + marginBottom: 40, + marginLeft: "auto", + marginRight: "auto", + padding: 1 + }, + + tabs: { + fontSize: 18, + color: "#999898 !important", + padding: "7px 34px", + cursor: "pointer" + }, + + tabActive: { + fontSize: 18, + color: "#FFF", + padding: "7px 34px", + backgroundColor: "#ff24df", + borderRadius: 20, + cursor: "pointer" + } +})); \ No newline at end of file diff --git a/src/views/NftMarketplace/components/markets/market-0.js b/src/views/NftMarketplace/components/markets/market-0.js new file mode 100755 index 0000000..971daf1 --- /dev/null +++ b/src/views/NftMarketplace/components/markets/market-0.js @@ -0,0 +1,41 @@ +import { useContext, useEffect, useState } from 'react' +import { CircularProgress } from '@mui/material' +import Gen0CardList from '../gen0/Gen0CardList' +import { Web3Context } from '../../utils/Web3Provider' +import { mapAvailableMarketItems } from '../../utils/nft' + + +export default function Market0 () { + const [nfts, setNfts] = useState([]); + const [isLoading, setIsLoading] = useState(true); + + const { marketplaceContract, TheoryUnlocker, isReady } = useContext(Web3Context) + useEffect(() => { + loadNFTs(); + }, [isReady]); + + async function loadNFTs() { + if (!isReady) return; + + const data = await marketplaceContract.fetchAvailableMarketItems() + let marketItems = []; + for (let i = 0; i < data.length; ++i) { + if ((data[i].genNumber).toNumber() == 0) { + marketItems.push(data[i]); + } + } + + const items = await Promise.all(marketItems.map(mapAvailableMarketItems(TheoryUnlocker))) + setNfts(items) + setIsLoading(false) + } + + if (isLoading) return + if (!isLoading && !nfts.length) return

    No NFTs for sale

    + return ( + isReady && ( + + ) + ); +}; + \ No newline at end of file diff --git a/src/views/NftMarketplace/components/markets/market-1.js b/src/views/NftMarketplace/components/markets/market-1.js new file mode 100755 index 0000000..53242b5 --- /dev/null +++ b/src/views/NftMarketplace/components/markets/market-1.js @@ -0,0 +1,41 @@ +import { useContext, useEffect, useState } from 'react' +import { CircularProgress } from '@mui/material' +import Gen1CardList from '../gen1/Gen1CardList' +import { Web3Context } from '../../utils/Web3Provider' +import { mapAvailableMarketItemsGen1 } from '../../utils/nft' + + +export default function Market1 () { + const [nfts, setNfts] = useState([]); + const [isLoading, setIsLoading] = useState(true); + + const { marketplaceContract, TheoryUnlockerGen1, isReady } = useContext(Web3Context) + + useEffect(() => { + loadNFTs(); + }, [isReady]); + + async function loadNFTs() { + if (!isReady) return; + + const data = await marketplaceContract.fetchAvailableMarketItems() + let marketItems = []; + for (let i = 0; i < data.length; ++i) { + if ((data[i].genNumber).toNumber() == 1) { + marketItems.push(data[i]); + } + } + const items = await Promise.all(marketItems.map(mapAvailableMarketItemsGen1(TheoryUnlockerGen1))) + setNfts(items) + setIsLoading(false) + } + + if (isLoading) return + if (!isLoading && !nfts.length) return

    No NFTs for sale

    + return ( + isReady && ( + + ) + ); +}; + \ No newline at end of file diff --git a/src/views/NftMarketplace/components/myNFTs/myGen-0.js b/src/views/NftMarketplace/components/myNFTs/myGen-0.js new file mode 100644 index 0000000..f8a8f8b --- /dev/null +++ b/src/views/NftMarketplace/components/myNFTs/myGen-0.js @@ -0,0 +1,35 @@ +import React, { useContext, useEffect, useState } from 'react' +import { CircularProgress } from '@mui/material' +import { Web3Context } from '../../utils/Web3Provider' +import { mapOwnedTokenIdsAsMarketItems, getUniqueOwnedTokenIds } from '../../utils/nft' +import Gen0CardList from '../gen0/Gen0CardList'; + +export default function MyGen0() { + const [nfts, setNfts] = useState([]); + const [isLoading, setIsLoading] = useState(true); + const { account, marketplaceContract, TheoryUnlocker, isReady, hasWeb3 } = useContext(Web3Context); + + useEffect(() => { + loadNFTs(); + }, [account, isReady, TheoryUnlocker]); + + async function loadNFTs() { + if (!isReady || !hasWeb3) return <> + const myUniqueOwnedTokenIds = await getUniqueOwnedTokenIds(TheoryUnlocker, account) + const myNfts = await Promise.all(myUniqueOwnedTokenIds.map( + mapOwnedTokenIdsAsMarketItems(marketplaceContract, TheoryUnlocker, account) + )) + + setNfts(myNfts) + setIsLoading(false) + }; + + if (isLoading) return + if (!isLoading && !nfts.length) return

    No NFTs

    + return ( + isReady && ( + + ) + ); +}; + \ No newline at end of file diff --git a/src/views/NftMarketplace/components/myNFTs/myGen-1.js b/src/views/NftMarketplace/components/myNFTs/myGen-1.js new file mode 100644 index 0000000..ffbedf3 --- /dev/null +++ b/src/views/NftMarketplace/components/myNFTs/myGen-1.js @@ -0,0 +1,34 @@ +import React, { useContext, useEffect, useState } from 'react' +import { CircularProgress } from '@mui/material' +import { Web3Context } from '../../utils/Web3Provider' +import { mapOwnedTokenIdsAsMarketItemsGen1, getUniqueOwnedTokenIdsGen1 } from '../../utils/nft' +import Gen1CardList from '../gen1/Gen1CardList'; + +export default function MyGen1() { + const [nfts, setNfts] = useState([]); + const [isLoading, setIsLoading] = useState(true); + const { account, marketplaceContract, TheoryUnlockerGen1, isReady, hasWeb3 } = useContext(Web3Context); + + useEffect(() => { + loadNFTs(); + }, [account, isReady, TheoryUnlockerGen1]); + + async function loadNFTs() { + if (!isReady || !hasWeb3) return <> + const myUniqueOwnedTokenIds = await getUniqueOwnedTokenIdsGen1(TheoryUnlockerGen1, account) + const myNfts = await Promise.all(myUniqueOwnedTokenIds.map( + mapOwnedTokenIdsAsMarketItemsGen1(marketplaceContract, TheoryUnlockerGen1, account) + )) + + setNfts(myNfts) + setIsLoading(false) + }; + + if (isLoading) return + if (!isLoading && !nfts.length) return

    No NFTs

    + return ( + isReady && ( + + ) + ); +}; diff --git a/src/views/NftMarketplace/components/myNfts.js b/src/views/NftMarketplace/components/myNfts.js new file mode 100755 index 0000000..e736495 --- /dev/null +++ b/src/views/NftMarketplace/components/myNfts.js @@ -0,0 +1,74 @@ +import { useState } from 'react' +import { makeStyles } from '@mui/styles' +import { Box, Typography, Grid, Container } from '@mui/material'; +import MyGen0 from './myNFTs/myGen-0' +import MyGen1 from './myNFTs/myGen-1' + +export default function MyNFTs() { + const [activeTab, setActiveTab] = useState("tab1"); + const classes = useStyles(); + + const handleTab1 = () =>{ + setActiveTab("tab1"); + }; + const handleTab2 = () => { + setActiveTab("tab2"); + }; + + return ( + + + + Gen 0 + Gen 1 + + + {activeTab ==="tab1" ? : } + + + + ); + +}; + +const useStyles = makeStyles((theme) => ({ + + genContainer: { + paddingLeft: 0, + paddingRight: 0 + }, + + genField: { + display: "flex", + justifyContent: "center" + }, + + genNav: { + display: "flex", + justifyContent: "space-between", + backgroundColor: "#000", + width: 230, + borderRadius: 30, + marginBottom: 40, + marginLeft: "auto", + marginRight: "auto", + padding: 1 + }, + + tabs: { + fontSize: 18, + color: "#999898 !important", + padding: "7px 34px", + cursor: "pointer" + }, + + tabActive: { + fontSize: 18, + color: "#FFF", + padding: "7px 34px", + backgroundColor: "#ff24df", + borderRadius: 20, + cursor: "pointer" + } +})); + diff --git a/src/views/NftMarketplace/index.js b/src/views/NftMarketplace/index.js new file mode 100644 index 0000000..648833f --- /dev/null +++ b/src/views/NftMarketplace/index.js @@ -0,0 +1 @@ +export { default } from './NftMarketplace'; diff --git a/src/views/NftMarketplace/utils/Web3Provider.js b/src/views/NftMarketplace/utils/Web3Provider.js new file mode 100755 index 0000000..9808762 --- /dev/null +++ b/src/views/NftMarketplace/utils/Web3Provider.js @@ -0,0 +1,130 @@ +import React, { createContext, useCallback, useEffect, useState } from 'react' +import Web3Modal from 'web3modal' +import { ethers } from 'ethers' +import useTombFinance from '../../../hooks/useTombFinance' + +const contextDefaultValues = { + account: '', + connectWallet: () => { }, + marketplaceContract: null, + TheoryUnlocker: null, + TheoryUnlockerGen1: null, + GameContract: null, + isReady: false, + hasWeb3: false +}; + +export const Web3Context = createContext( + contextDefaultValues +); + +export default function Web3Provider({ children }) { + const tombFinance = useTombFinance(); + + const [hasWeb3, setHasWeb3] = useState(contextDefaultValues.hasWeb3); + const [account, setAccount] = useState(contextDefaultValues.account); + const [marketplaceContract, setMarketplaceContract] = useState(contextDefaultValues.marketplaceContract); + const [TheoryUnlocker, setTheoryUnlocker] = useState(); + const [TheoryUnlockerGen1, setTheoryUnlockerGen1] = useState(); + const [GameContract, setGameContract] = useState(); + const [isReady, setIsReady] = useState(contextDefaultValues.isReady); + + useEffect(() => { + initializeWeb3(); + }, []); + + + const getTheoryUnlockers = useCallback(async () => { + setIsReady(false); + const web3Modal = new Web3Modal(); + const connection = await web3Modal.connect(); + const provider = new ethers.providers.Web3Provider(connection); + const signer = provider.getSigner(); + + const TheoryUnlockerAddress = await tombFinance?.getTheoryUnlockerAddress(); + const TheoryUnlockerABI = await tombFinance?.getTheoryUnlockerABI(); + const TheoryUnlocker = new ethers.Contract(TheoryUnlockerAddress, TheoryUnlockerABI, signer); + setTheoryUnlocker(TheoryUnlocker); + + const TheoryUnlockerGen1Address = await tombFinance?.getTheoryUnlockerGen1Address(); + const TheoryUnlockerGen1ABI = await tombFinance?.getTheoryUnlockerGen1ABI(); + const TheoryUnlockerGen1 = new ethers.Contract(TheoryUnlockerGen1Address, TheoryUnlockerGen1ABI, signer); + setTheoryUnlockerGen1(TheoryUnlockerGen1); + + const MarketplaceAddress = await tombFinance?.getMarketplaceAddress(); + const MarketplaceABI = await tombFinance?.getMarketplaceABI(); + const MarketplaceContract = new ethers.Contract(MarketplaceAddress, MarketplaceABI, signer); + setMarketplaceContract(MarketplaceContract); + + + const GameContractAddress = await tombFinance?.getGameContractAddress(); + const GameContractABI = await tombFinance?.getGameContractABI(); + const GameContract = new ethers.Contract(GameContractAddress, GameContractABI, signer); + setGameContract(GameContract); + + setIsReady(true); + }, [tombFinance]); + + useEffect(() => { + getTheoryUnlockers().catch((err) => console.error(`Failed to fetch Theory Unlockers: ${err.stack}`)); + }, [tombFinance, getTheoryUnlockers, setTheoryUnlocker, setTheoryUnlockerGen1, setMarketplaceContract, setGameContract]); + + + async function initializeWeb3WithoutSigner() { + const provider = new ethers.providers.JsonRpcProvider(); + setHasWeb3(false); + }; + + async function initializeWeb3() { + try { + if (!window.ethereum) { + await initializeWeb3WithoutSigner() + return + } + + let onAccountsChangedCooldown = false + const web3Modal = new Web3Modal() + const connection = await web3Modal.connect() + setHasWeb3(true) + const provider = new ethers.providers.Web3Provider(connection, 'any') + await getAndSetWeb3ContextWithSigner(provider) + + function onAccountsChanged(accounts) { + if (onAccountsChangedCooldown) return + onAccountsChangedCooldown = true + setTimeout(() => { onAccountsChangedCooldown = false }, 1000) + const changedAddress = ethers.utils.getAddress(accounts[0]) + setAccount(changedAddress) + } + + connection.on('accountsChanged', onAccountsChanged) + connection.on('chainChanged', initializeWeb3) + } catch (error) { + initializeWeb3WithoutSigner() + console.log(error) + } + }; + + async function getAndSetWeb3ContextWithSigner(provider) { + const signer = provider.getSigner() + const signerAddress = await signer.getAddress() + setAccount(signerAddress) + } + + return ( + + {children} + + ); +}; diff --git a/src/views/NftMarketplace/utils/createEmotionCache.js b/src/views/NftMarketplace/utils/createEmotionCache.js new file mode 100755 index 0000000..a50e840 --- /dev/null +++ b/src/views/NftMarketplace/utils/createEmotionCache.js @@ -0,0 +1,7 @@ +import createCache from '@emotion/cache' + +// prepend: true moves MUI styles to the top of the so they're loaded first. +// It allows developers to easily override MUI styles with other styling solutions, like CSS modules. +export default function createEmotionCache () { + return createCache({ key: 'css', prepend: true }) +} diff --git a/src/views/NftMarketplace/utils/format.js b/src/views/NftMarketplace/utils/format.js new file mode 100755 index 0000000..5047b49 --- /dev/null +++ b/src/views/NftMarketplace/utils/format.js @@ -0,0 +1,4 @@ +export function shortenAddress (address) { + if (!address) return '' + return address.slice(0, 8); +}; diff --git a/src/views/NftMarketplace/utils/nft.js b/src/views/NftMarketplace/utils/nft.js new file mode 100755 index 0000000..549ea0e --- /dev/null +++ b/src/views/NftMarketplace/utils/nft.js @@ -0,0 +1,108 @@ +import axios from 'axios' +import { ethers } from 'ethers' + +export async function getTokenMetadataByTokenId (TheoryUnlocker, tokenId) { + try { + const tokenUri = (await TheoryUnlocker.tokenURI(tokenId)).replace("ipfs://", "https://") + ".ipfs.nftstorage.link"; + const metadata = (await axios(tokenUri)).data; + await new Promise(r => setTimeout(r, 1000)); + metadata.animation_url = metadata.animation_url.replace("ipfs://", "https://") + ".ipfs.nftstorage.link"; + metadata.level = (await TheoryUnlocker.tokenInfo(tokenId)).level; + return metadata + } catch (error) { + console.log(error) + } +} + +export function mapAvailableMarketItems (TheoryUnlocker) { + return async (marketItem) => { + const metadata = await getTokenMetadataByTokenId(TheoryUnlocker, marketItem.tokenId) + return mapMarketItem(marketItem, metadata) + } +} + +export function mapOwnedTokenIdsAsMarketItems (marketplaceContract, TheoryUnlocker, account) { + return async (tokenId) => { + const metadata = await getTokenMetadataByTokenId(TheoryUnlocker, tokenId) + const approveAddress = await TheoryUnlocker.getApproved(tokenId) + const hasMarketApproval = approveAddress === marketplaceContract.address + const [foundMarketItem, hasFound] = await marketplaceContract.getLatestMarketItemByTokenId(tokenId) + const marketItem = hasFound ? foundMarketItem : {} + return mapMarketItem(marketItem, metadata, tokenId, account, hasMarketApproval) + } +} + +export function mapMarketItem (marketItem, metadata, tokenId, account, hasMarketApproval) { + return { + price: marketItem.price ? ethers.utils.formatUnits(marketItem.price, 'ether') : undefined, + tokenId: marketItem.tokenId || tokenId, + marketItemId: marketItem.marketItemId || undefined, + seller: marketItem.seller || undefined, + owner: marketItem.owner || account, + sold: marketItem.sold || false, + canceled: marketItem.canceled || false, + animation_url: metadata.animation_url, + level: metadata.level, + attributes: metadata.attributes, + genNumber: marketItem.genNumber, + hasMarketApproval: hasMarketApproval || false + }; +}; + +export async function getUniqueOwnedTokenIds (TheoryUnlocker, account) { + let myNftIds = [] + const OwnedTokenBalance = await TheoryUnlocker.balanceOf(account); + const balToNum = OwnedTokenBalance.toNumber() + + for (let i = 0; i < balToNum; i++) { + const tokenId = await TheoryUnlocker.tokenOfOwnerByIndex(account, i); + myNftIds[i] = tokenId; + } + + return [...new Map(myNftIds.map((item) => [item._hex, item])).values()] +} + +// TheoryUnlockerGen1 functions +export async function getTokenMetadataByTokenIdGen1 (TheoryUnlockerGen1, tokenId) { + try { + const tokenUri = (await TheoryUnlockerGen1.tokenURI(tokenId)).replace("ipfs://", "https://") + ".ipfs.nftstorage.link"; + const metadata = (await axios(tokenUri)).data; + await new Promise(r => setTimeout(r, 1000)); + metadata.animation_url = metadata.animation_url.replace("ipfs://", "https://") + ".ipfs.nftstorage.link"; + metadata.level = (await TheoryUnlockerGen1.tokenInfo(tokenId)).level; + return metadata + } catch (error) { + console.log(error) + } +} + +export function mapAvailableMarketItemsGen1 (TheoryUnlockerGen1) { + return async (marketItem) => { + const metadata = await getTokenMetadataByTokenIdGen1(TheoryUnlockerGen1, marketItem.tokenId) + return mapMarketItem(marketItem, metadata) + } +} + +export function mapOwnedTokenIdsAsMarketItemsGen1 (marketplaceContract, TheoryUnlockerGen1, account) { + return async (tokenId) => { + const metadata = await getTokenMetadataByTokenIdGen1(TheoryUnlockerGen1, tokenId) + const approveAddress = await TheoryUnlockerGen1.getApproved(tokenId) + const hasMarketApproval = approveAddress === marketplaceContract.address + const [foundMarketItem, hasFound] = await marketplaceContract.getLatestMarketItemByTokenId(tokenId) + const marketItem = hasFound ? foundMarketItem : {} + return mapMarketItem(marketItem, metadata, tokenId, account, hasMarketApproval) + } +} + +export async function getUniqueOwnedTokenIdsGen1 (TheoryUnlockerGen1, account) { + let myNftIds = [] + const OwnedTokenBalance = await TheoryUnlockerGen1.balanceOf(account); + const balToNum = OwnedTokenBalance.toNumber() + + for (let i = 0; i < balToNum; i++) { + const tokenId = await TheoryUnlockerGen1.tokenOfOwnerByIndex(account, i); + myNftIds[i] = tokenId; + } + + return [...new Map(myNftIds.map((item) => [item._hex, item])).values()] +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index bfa83d1..2e8dc6e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8429,6 +8429,11 @@ detect-browser@5.2.0: resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.2.0.tgz#c9cd5afa96a6a19fda0bbe9e9be48a6b6e1e9c97" integrity sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA== +detect-browser@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" + integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== + detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -17457,7 +17462,7 @@ react-dev-utils@^11.0.3: strip-ansi "6.0.0" text-table "0.2.0" -react-dom@^16.13.1: +react-dom@^16.13.1, react-dom@^16.8.6: version "16.14.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" integrity sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw== @@ -17642,7 +17647,7 @@ react-transition-group@^4.4.2: loose-envify "^1.4.0" prop-types "^15.6.2" -react@^16.13.1: +react@^16.13.1, react@^16.8.6: version "16.14.0" resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== @@ -19391,7 +19396,7 @@ style-loader@1.3.0: loader-utils "^2.0.0" schema-utils "^2.7.0" -styled-components@^5.1.1: +styled-components@^5.1.1, styled-components@^5.3.3: version "5.3.5" resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.5.tgz#a750a398d01f1ca73af16a241dec3da6deae5ec4" integrity sha512-ndETJ9RKaaL6q41B69WudeqLzOpY1A/ET/glXkNZ2T7dPjPqpPCXXQjDFYZWwNnE5co0wX+gTCqx9mfxTmSIPg== @@ -20060,7 +20065,7 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -21787,6 +21792,18 @@ web3@^1.2.11: web3-shh "1.7.3" web3-utils "1.7.3" +web3modal@^1.9.7: + version "1.9.7" + resolved "https://registry.yarnpkg.com/web3modal/-/web3modal-1.9.7.tgz#d657b97e53faafae60c55038d046781083645423" + integrity sha512-z3XfY7cV8GwGvHP3WvrSxPU6/7ocwVyiU77U/Lxoa53AUSsOKl01V8ErZ8CkJSH41C3YgzwBaOETj0rC9uFBKg== + dependencies: + detect-browser "^5.1.0" + prop-types "^15.7.2" + react "^16.8.6" + react-dom "^16.8.6" + styled-components "^5.3.3" + tslib "^1.10.0" + webidl-conversions@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506" From 269762874449ccd0f7459c48ea44045f96d705bd Mon Sep 17 00:00:00 2001 From: Chan Date: Wed, 4 May 2022 12:57:04 +0800 Subject: [PATCH 2/2] Add Sort by "Price" & "Level" --- package.json | 10 ++- .../deployments/deployments.testing.json | 2 +- .../NftMarketplace/components/card/SortTag.js | 65 +++++++++++++++++++ .../components/gen0/Gen0Card.js | 6 +- .../components/gen0/Gen0CardList.js | 52 +++++++++++---- .../components/gen1/Gen1Card.js | 6 +- .../components/gen1/Gen1CardList.js | 50 ++++++++++---- .../NftMarketplace/components/markets.js | 7 +- src/views/NftMarketplace/components/myNfts.js | 7 +- 9 files changed, 163 insertions(+), 42 deletions(-) create mode 100755 src/views/NftMarketplace/components/card/SortTag.js diff --git a/package.json b/package.json index c62dafc..1359187 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "react-circular-progressbar": "^2.0.3", "react-countdown": "^2.2.1", "react-countup": "^4.3.3", + "react-data-sort": "^1.2.1", "react-dom": "^16.13.1", "react-feather": "^2.0.8", "react-loading-skeleton": "^2.1.1", @@ -54,7 +55,8 @@ "web3modal": "^1.9.7" }, "resolutions": { - "react-error-overlay": "^6.0.9" + "@types/react": "^16.9.46", + "@types/react-dom": "^16.9.8" }, "scripts": { "start": "react-scripts start", @@ -94,9 +96,5 @@ "@types/styled-components": "^5.1.2", "prettier": "2.3.1", "react-error-overlay": "^6.0.9" - }, - "resolutions": { - "@types/react": "^16.9.46", - "@types/react-dom": "^16.9.8" } -} \ No newline at end of file +} diff --git a/src/tomb-finance/deployments/deployments.testing.json b/src/tomb-finance/deployments/deployments.testing.json index 819d81d..76e0164 100644 --- a/src/tomb-finance/deployments/deployments.testing.json +++ b/src/tomb-finance/deployments/deployments.testing.json @@ -10694,7 +10694,7 @@ ] }, "Marketplace": { - "address": "0xC21a8F58EeD11e11cc2F73158F489EA2E55A62de", + "address": "0x0a6C2021960FF21BFCAB56977e8151Fcb6fF023C", "abi": [{ "inputs": [{ "internalType": "contract IERC20", diff --git a/src/views/NftMarketplace/components/card/SortTag.js b/src/views/NftMarketplace/components/card/SortTag.js new file mode 100755 index 0000000..7764dfd --- /dev/null +++ b/src/views/NftMarketplace/components/card/SortTag.js @@ -0,0 +1,65 @@ +import React from "react"; +import { Grid, Button, Typography } from "@mui/material"; +import { makeStyles } from '@mui/styles' + +export default function SortTag({ setSortBy, sortBy, direction, toggleDirection }) { + const classes = useStyles(); + const tags = [ + { key: "price", title: "Price" }, + { key: "level", title: "Level" } + ]; + const items = tags.map(({ key, title }) => { + const active = key === sortBy; + return ( + { + if (active) { + toggleDirection(); + } + setSortBy(key); + }} + > + {title} {active ? (direction === "asc" ? " (asc)" : " (dsc)") : null} + + ); + }); + return ( + +

    Sort by:

    + {items} +
    + ); +} + +function HeadToggle({ children, active, onClick }) { + return ( + + ); +} + +const useStyles = makeStyles((theme) => ({ + sortField: { + width: 300, + alignItems: 'center', + display: 'flex', + marginRight: 22, + marginBottom: 25, + justifyContent: 'space-around', + position: 'absolute', + right: 0, + // float: 'right', + '& button': { + padding: '5px 25px' + }, + '@media (max-width: 640px)': { + marginTop: 66 + } + } +})); diff --git a/src/views/NftMarketplace/components/gen0/Gen0Card.js b/src/views/NftMarketplace/components/gen0/Gen0Card.js index 899e4ac..074d171 100755 --- a/src/views/NftMarketplace/components/gen0/Gen0Card.js +++ b/src/views/NftMarketplace/components/gen0/Gen0Card.js @@ -39,7 +39,11 @@ export default function Gen0Card({ nft, action, updateNFT }) { sell: { text: 'Sell', method: sellNft - } + }, + none: { + text: 'pending', + method: () => {} + } }; async function buyNft (nft) { diff --git a/src/views/NftMarketplace/components/gen0/Gen0CardList.js b/src/views/NftMarketplace/components/gen0/Gen0CardList.js index e4cc70a..b9fafdc 100755 --- a/src/views/NftMarketplace/components/gen0/Gen0CardList.js +++ b/src/views/NftMarketplace/components/gen0/Gen0CardList.js @@ -1,15 +1,16 @@ -import { useContext } from 'react' +import React, { useContext } from 'react' import { ethers } from 'ethers' -import Grid from '@mui/material/Grid' -import Fade from '@mui/material/Fade' +import { Grid, Fade } from '@mui/material' import { makeStyles } from '@mui/styles' import Gen0Card from './Gen0Card' import { Web3Context } from '../../utils/Web3Provider' import { mapOwnedTokenIdsAsMarketItems } from '../../utils/nft' +import Datasort from "react-data-sort"; +import SortTag from '../card/SortTag' export default function Gen0CardList({ nfts, setNfts }) { const classes = useStyles(); - const { account, marketplaceContract, TheoryUnlocker} = useContext(Web3Context); + const { account, marketplaceContract, TheoryUnlocker } = useContext(Web3Context); async function updateNFT(index, tokenId) { const updatedNFt = await mapOwnedTokenIdsAsMarketItems(marketplaceContract, TheoryUnlocker, account)(tokenId); @@ -41,22 +42,47 @@ export default function Gen0CardList({ nfts, setNfts }) { } return ( - - {nfts.map((nft, i) => - - - + { + return ( + + + + {data.map((nft, i) => + + + + + + )} + - - )} - + ); + }} + /> ); }; const useStyles = makeStyles((theme) => ({ grid: { spacing: 3, - alignItems: 'stretch' + alignItems: 'stretch', + marginTop: 60, + '@media (max-width: 640px)': { + marginTop: 120 + } }, gridItem: { display: 'flex', diff --git a/src/views/NftMarketplace/components/gen1/Gen1Card.js b/src/views/NftMarketplace/components/gen1/Gen1Card.js index 71271da..17e2171 100755 --- a/src/views/NftMarketplace/components/gen1/Gen1Card.js +++ b/src/views/NftMarketplace/components/gen1/Gen1Card.js @@ -39,7 +39,11 @@ export default function Gen1Card({ nft, action, updateNFT }) { sell: { text: 'Sell', method: sellNft - } + }, + none: { + text: 'pending', + method: () => {} + } }; async function buyNft (nft) { diff --git a/src/views/NftMarketplace/components/gen1/Gen1CardList.js b/src/views/NftMarketplace/components/gen1/Gen1CardList.js index 6e66e2f..d855c5d 100755 --- a/src/views/NftMarketplace/components/gen1/Gen1CardList.js +++ b/src/views/NftMarketplace/components/gen1/Gen1CardList.js @@ -1,11 +1,12 @@ -import { useContext, useState } from 'react' +import { useContext } from 'react' import { ethers } from 'ethers' -import Grid from '@mui/material/Grid' -import Fade from '@mui/material/Fade' +import { Grid, Fade } from '@mui/material' import { makeStyles } from '@mui/styles' import Gen1Card from './Gen1Card' import { Web3Context } from '../../utils/Web3Provider' import { mapOwnedTokenIdsAsMarketItemsGen1 } from '../../utils/nft' +import Datasort from "react-data-sort"; +import SortTag from '../card/SortTag' export default function Gen1CardList({ nfts, setNfts }) { const classes = useStyles(); @@ -42,22 +43,47 @@ export default function Gen1CardList({ nfts, setNfts }) { } return ( - - {nfts.map((nft, i) => - - - + { + return ( + + + + {data.map((nft, i) => + + + + + + )} + - - )} - + ); + }} + /> ); }; const useStyles = makeStyles((theme) => ({ grid: { spacing: 3, - alignItems: 'stretch' + alignItems: 'stretch', + marginTop: 60, + '@media (max-width: 640px)': { + marginTop: 120 + } }, gridItem: { display: 'flex', diff --git a/src/views/NftMarketplace/components/markets.js b/src/views/NftMarketplace/components/markets.js index 7394d25..0921323 100755 --- a/src/views/NftMarketplace/components/markets.js +++ b/src/views/NftMarketplace/components/markets.js @@ -49,10 +49,9 @@ const useStyles = makeStyles((theme) => ({ backgroundColor: "#000", width: 230, borderRadius: 30, - marginBottom: 40, - marginLeft: "auto", - marginRight: "auto", - padding: 1 + marginLeft: 22, + padding: 1, + position: 'absolute' }, tabs: { diff --git a/src/views/NftMarketplace/components/myNfts.js b/src/views/NftMarketplace/components/myNfts.js index e736495..b939b44 100755 --- a/src/views/NftMarketplace/components/myNfts.js +++ b/src/views/NftMarketplace/components/myNfts.js @@ -49,10 +49,9 @@ const useStyles = makeStyles((theme) => ({ backgroundColor: "#000", width: 230, borderRadius: 30, - marginBottom: 40, - marginLeft: "auto", - marginRight: "auto", - padding: 1 + marginLeft: 22, + padding: 1, + position: 'absolute' }, tabs: {