├── .DS_Store ├── .env.sample ├── .eslintignore ├── .eslintrc ├── .gitignore ├── .mocharc.json ├── README.md ├── artifacts ├── @openzeppelin │ └── contracts │ │ ├── access │ │ ├── AccessControl.sol │ │ │ ├── AccessControl.dbg.json │ │ │ └── AccessControl.json │ │ ├── AccessControlEnumerable.sol │ │ │ ├── AccessControlEnumerable.dbg.json │ │ │ └── AccessControlEnumerable.json │ │ ├── IAccessControl.sol │ │ │ ├── IAccessControl.dbg.json │ │ │ └── IAccessControl.json │ │ ├── IAccessControlEnumerable.sol │ │ │ ├── IAccessControlEnumerable.dbg.json │ │ │ └── IAccessControlEnumerable.json │ │ └── Ownable.sol │ │ │ ├── Ownable.dbg.json │ │ │ └── Ownable.json │ │ ├── token │ │ ├── ERC20 │ │ │ └── IERC20.sol │ │ │ │ ├── IERC20.dbg.json │ │ │ │ └── IERC20.json │ │ └── ERC721 │ │ │ ├── ERC721.sol │ │ │ ├── ERC721.dbg.json │ │ │ └── ERC721.json │ │ │ ├── IERC721.sol │ │ │ ├── IERC721.dbg.json │ │ │ └── IERC721.json │ │ │ ├── IERC721Receiver.sol │ │ │ ├── IERC721Receiver.dbg.json │ │ │ └── IERC721Receiver.json │ │ │ └── extensions │ │ │ └── IERC721Metadata.sol │ │ │ ├── IERC721Metadata.dbg.json │ │ │ └── IERC721Metadata.json │ │ └── utils │ │ ├── Address.sol │ │ ├── Address.dbg.json │ │ └── Address.json │ │ ├── Context.sol │ │ ├── Context.dbg.json │ │ └── Context.json │ │ ├── Counters.sol │ │ ├── Counters.dbg.json │ │ └── Counters.json │ │ ├── Strings.sol │ │ ├── Strings.dbg.json │ │ └── Strings.json │ │ ├── cryptography │ │ ├── ECDSA.sol │ │ │ ├── ECDSA.dbg.json │ │ │ └── ECDSA.json │ │ └── draft-EIP712.sol │ │ │ ├── EIP712.dbg.json │ │ │ └── EIP712.json │ │ ├── introspection │ │ ├── ERC165.sol │ │ │ ├── ERC165.dbg.json │ │ │ └── ERC165.json │ │ └── IERC165.sol │ │ │ ├── IERC165.dbg.json │ │ │ └── IERC165.json │ │ └── structs │ │ └── EnumerableSet.sol │ │ ├── EnumerableSet.dbg.json │ │ └── EnumerableSet.json ├── build-info │ ├── 03949a2006fce667084cecaaa54538bd.json │ ├── 5817655c7a41c4cb83f57c4a2c1fc2b4.json │ └── 7a32fae717d7f1ab30a7e34e2870b3cc.json └── contracts │ ├── BuyNFT.sol │ ├── BuyNFT.dbg.json │ └── BuyNFT.json │ ├── DaoSponsor.sol │ ├── DaoSponsor.dbg.json │ └── DaoSponsor.json │ ├── DaoTicket.sol │ ├── DaoTicket.dbg.json │ └── DaoTicket.json │ ├── DaoTreasury.sol │ ├── DaoTreasury.dbg.json │ └── DaoTreasury.json │ ├── DaoVault.sol │ ├── DaoVault.dbg.json │ └── DaoVault.json │ ├── EIP3664 │ ├── ERC3664.sol │ │ ├── ERC3664.dbg.json │ │ └── ERC3664.json │ └── interfaces │ │ ├── IERC3664.sol │ │ ├── IERC3664.dbg.json │ │ └── IERC3664.json │ │ └── IERC3664Metadata.sol │ │ ├── IERC3664Metadata.dbg.json │ │ └── IERC3664Metadata.json │ ├── MultiSign.sol │ ├── MultiSign.dbg.json │ └── MultiSign.json │ ├── Web3DAOCN.sol │ ├── Web3DAOCN.dbg.json │ └── Web3DAOCN.json │ ├── interfaces │ ├── IBuyNFT.sol │ │ ├── IBuyNFT.dbg.json │ │ └── IBuyNFT.json │ ├── IDaoSponsor.sol │ │ ├── IDaoSponsor.dbg.json │ │ └── IDaoSponsor.json │ ├── IDaoTreasury.sol │ │ ├── IDaoTreasury.dbg.json │ │ └── IDaoTreasury.json │ ├── IDaoVault.sol │ │ ├── IDaoVault.dbg.json │ │ └── IDaoVault.json │ └── IWeb3DAOCN.sol │ │ ├── IWeb3DAOCN.dbg.json │ │ └── IWeb3DAOCN.json │ └── test │ └── MaticWETH.sol │ ├── AccessControl.dbg.json │ ├── AccessControl.json │ ├── AccessControlMixin.dbg.json │ ├── AccessControlMixin.json │ ├── Address.dbg.json │ ├── Address.json │ ├── ChainConstants.dbg.json │ ├── ChainConstants.json │ ├── ChildERC20.dbg.json │ ├── ChildERC20.json │ ├── Context.dbg.json │ ├── Context.json │ ├── ContextMixin.dbg.json │ ├── ContextMixin.json │ ├── EIP712Base.dbg.json │ ├── EIP712Base.json │ ├── ERC20.dbg.json │ ├── ERC20.json │ ├── EnumerableSet.dbg.json │ ├── EnumerableSet.json │ ├── IChildToken.dbg.json │ ├── IChildToken.json │ ├── IERC20.dbg.json │ ├── IERC20.json │ ├── Initializable.dbg.json │ ├── Initializable.json │ ├── MaticWETH.dbg.json │ ├── MaticWETH.json │ ├── NativeMetaTransaction.dbg.json │ ├── NativeMetaTransaction.json │ ├── SafeMath.dbg.json │ └── SafeMath.json ├── contracts ├── BuyNFT.sol ├── DaoSponsor.sol ├── DaoTicket.sol ├── DaoTreasury.sol ├── DaoVault.sol ├── EIP3664 │ ├── ERC3664.sol │ └── interfaces │ │ ├── IERC3664.sol │ │ └── IERC3664Metadata.sol ├── MultiSign.sol ├── Web3DAOCN.sol ├── interfaces │ ├── IBuyNFT.sol │ ├── IDaoSponsor.sol │ ├── IDaoTreasury.sol │ ├── IDaoVault.sol │ └── IWeb3DAOCN.sol └── test │ └── MaticWETH.sol ├── deployments ├── ganache │ ├── BuyNFT.json │ ├── DaoSponsor.json │ ├── DaoTreasury.json │ ├── DaoVault.json │ └── Web3DAOCN.json ├── hardhat │ ├── BuyNFT.json │ ├── DaoSponsor.json │ ├── DaoTreasury.json │ ├── DaoVault.json │ └── Web3DAOCN.json ├── maticmain │ ├── BuyNFT.json │ ├── DaoSponsor.json │ ├── DaoTreasury.json │ ├── DaoVault.json │ └── Web3DAOCN.json └── matictest │ ├── BuyNFT.json │ ├── DaoSponsor.json │ ├── DaoTreasury.json │ ├── DaoVault.json │ └── Web3DAOCN.json ├── flatten.sh ├── hardhat.config.ts ├── output.sol ├── package-lock.json ├── package.json ├── scripts ├── deployTool.ts └── network.ts ├── test ├── BuyNFT.ts ├── DaoSponsor.ts ├── DaoTreasury.ts ├── DaoVault.ts ├── WEB3DAO.ts └── shared │ ├── constant.ts │ ├── expect.ts │ └── permitSign.ts ├── truffle-config.js └── typechain ├── AccessControl.d.ts ├── AccessControlEnumerable.d.ts ├── AccessControlMixin.d.ts ├── BuyNFT.d.ts ├── ChainConstants.d.ts ├── ChildERC20.d.ts ├── DaoSponsor.d.ts ├── DaoTicket.d.ts ├── DaoTreasury.d.ts ├── DaoVault.d.ts ├── EIP712Base.d.ts ├── ERC165.d.ts ├── ERC20.d.ts ├── ERC3664.d.ts ├── ERC721.d.ts ├── IAccessControl.d.ts ├── IAccessControlEnumerable.d.ts ├── IBuyNFT.d.ts ├── IChildToken.d.ts ├── IDaoSponsor.d.ts ├── IDaoTreasury.d.ts ├── IDaoVault.d.ts ├── IERC165.d.ts ├── IERC20.d.ts ├── IERC3664.d.ts ├── IERC3664Metadata.d.ts ├── IERC721.d.ts ├── IERC721Metadata.d.ts ├── IERC721Receiver.d.ts ├── IWeb3DAOCN.d.ts ├── MaticWETH.d.ts ├── MultiSign.d.ts ├── NativeMetaTransaction.d.ts ├── Ownable.d.ts ├── Web3DAOCN.d.ts ├── factories ├── AccessControlEnumerable__factory.ts ├── AccessControlMixin__factory.ts ├── AccessControl__factory.ts ├── BuyNFT__factory.ts ├── ChainConstants__factory.ts ├── ChildERC20__factory.ts ├── DaoSponsor__factory.ts ├── DaoTicket__factory.ts ├── DaoTreasury__factory.ts ├── DaoVault__factory.ts ├── EIP712Base__factory.ts ├── ERC165__factory.ts ├── ERC20__factory.ts ├── ERC3664__factory.ts ├── ERC721__factory.ts ├── IAccessControlEnumerable__factory.ts ├── IAccessControl__factory.ts ├── IBuyNFT__factory.ts ├── IChildToken__factory.ts ├── IDaoSponsor__factory.ts ├── IDaoTreasury__factory.ts ├── IDaoVault__factory.ts ├── IERC165__factory.ts ├── IERC20__factory.ts ├── IERC3664Metadata__factory.ts ├── IERC3664__factory.ts ├── IERC721Metadata__factory.ts ├── IERC721Receiver__factory.ts ├── IERC721__factory.ts ├── IWeb3DAOCN__factory.ts ├── MaticWETH__factory.ts ├── MultiSign__factory.ts ├── NativeMetaTransaction__factory.ts ├── Ownable__factory.ts └── Web3DAOCN__factory.ts └── index.ts /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Web3DAO-CN/token-contract/e65f8506bcbb56176f88a299acc84fc8e27103b1/.DS_Store -------------------------------------------------------------------------------- /.env.sample: -------------------------------------------------------------------------------- 1 | MNEMONIC='' 2 | INFURA_API_KEY='' 3 | ETHERSCAN_APIKEY='' -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | build/* 2 | coverage/* 3 | migrations/* -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends" : [ 3 | "standard", 4 | "plugin:promise/recommended" 5 | ], 6 | "plugins": [ 7 | "mocha-no-only", 8 | "promise" 9 | ], 10 | "env": { 11 | "browser" : true, 12 | "node" : true, 13 | "mocha" : true, 14 | "jest" : true 15 | }, 16 | "globals" : { 17 | "artifacts": false, 18 | "contract": false, 19 | "assert": false, 20 | "web3": false, 21 | "usePlugin": false, 22 | "extendEnvironment": false 23 | }, 24 | "rules": { 25 | 26 | // Strict mode 27 | "strict": ["error", "global"], 28 | 29 | // Code style 30 | "array-bracket-spacing": ["off"], 31 | "camelcase": ["error", {"properties": "always"}], 32 | "comma-dangle": ["error", "always-multiline"], 33 | "comma-spacing": ["error", {"before": false, "after": true}], 34 | "dot-notation": ["error", {"allowKeywords": true, "allowPattern": ""}], 35 | "eol-last": ["error", "always"], 36 | "eqeqeq": ["error", "smart"], 37 | "generator-star-spacing": ["error", "before"], 38 | "indent": ["error", 2], 39 | "linebreak-style": ["error", "unix"], 40 | "max-len": ["error", 120, 2], 41 | "no-debugger": "off", 42 | "no-dupe-args": "error", 43 | "no-dupe-keys": "error", 44 | "no-mixed-spaces-and-tabs": ["error", "smart-tabs"], 45 | "no-redeclare": ["error", {"builtinGlobals": true}], 46 | "no-trailing-spaces": ["error", { "skipBlankLines": false }], 47 | "no-undef": "error", 48 | "no-use-before-define": "off", 49 | "no-var": "error", 50 | "object-curly-spacing": ["error", "always"], 51 | "prefer-const": "error", 52 | "quotes": ["error", "single"], 53 | "semi": ["error", "always"], 54 | "space-before-function-paren": ["error", "always"], 55 | 56 | "mocha-no-only/mocha-no-only": ["error"], 57 | 58 | "promise/always-return": "off", 59 | "promise/avoid-new": "off" 60 | }, 61 | "parserOptions": { 62 | "ecmaVersion": 2018 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | node_modules 3 | .idea/* 4 | .vscode/ 5 | cache/ 6 | flattened 7 | .env.development 8 | .env -------------------------------------------------------------------------------- /.mocharc.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": "ts-node/register/files", 3 | "timeout": 20000 4 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Web3DAO@CN Token Contract 2 | 3 | ## Install 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ## Compile 9 | ``` 10 | npx hardhat compile 11 | ``` 12 | 13 | ## Testing 14 | ``` 15 | npx hardhat test 16 | ``` 17 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "AccessControl", 4 | "sourceName": "@openzeppelin/contracts/access/AccessControl.sol", 5 | "abi": [ 6 | { 7 | "anonymous": false, 8 | "inputs": [ 9 | { 10 | "indexed": true, 11 | "internalType": "bytes32", 12 | "name": "role", 13 | "type": "bytes32" 14 | }, 15 | { 16 | "indexed": true, 17 | "internalType": "bytes32", 18 | "name": "previousAdminRole", 19 | "type": "bytes32" 20 | }, 21 | { 22 | "indexed": true, 23 | "internalType": "bytes32", 24 | "name": "newAdminRole", 25 | "type": "bytes32" 26 | } 27 | ], 28 | "name": "RoleAdminChanged", 29 | "type": "event" 30 | }, 31 | { 32 | "anonymous": false, 33 | "inputs": [ 34 | { 35 | "indexed": true, 36 | "internalType": "bytes32", 37 | "name": "role", 38 | "type": "bytes32" 39 | }, 40 | { 41 | "indexed": true, 42 | "internalType": "address", 43 | "name": "account", 44 | "type": "address" 45 | }, 46 | { 47 | "indexed": true, 48 | "internalType": "address", 49 | "name": "sender", 50 | "type": "address" 51 | } 52 | ], 53 | "name": "RoleGranted", 54 | "type": "event" 55 | }, 56 | { 57 | "anonymous": false, 58 | "inputs": [ 59 | { 60 | "indexed": true, 61 | "internalType": "bytes32", 62 | "name": "role", 63 | "type": "bytes32" 64 | }, 65 | { 66 | "indexed": true, 67 | "internalType": "address", 68 | "name": "account", 69 | "type": "address" 70 | }, 71 | { 72 | "indexed": true, 73 | "internalType": "address", 74 | "name": "sender", 75 | "type": "address" 76 | } 77 | ], 78 | "name": "RoleRevoked", 79 | "type": "event" 80 | }, 81 | { 82 | "inputs": [], 83 | "name": "DEFAULT_ADMIN_ROLE", 84 | "outputs": [ 85 | { 86 | "internalType": "bytes32", 87 | "name": "", 88 | "type": "bytes32" 89 | } 90 | ], 91 | "stateMutability": "view", 92 | "type": "function" 93 | }, 94 | { 95 | "inputs": [ 96 | { 97 | "internalType": "bytes32", 98 | "name": "role", 99 | "type": "bytes32" 100 | } 101 | ], 102 | "name": "getRoleAdmin", 103 | "outputs": [ 104 | { 105 | "internalType": "bytes32", 106 | "name": "", 107 | "type": "bytes32" 108 | } 109 | ], 110 | "stateMutability": "view", 111 | "type": "function" 112 | }, 113 | { 114 | "inputs": [ 115 | { 116 | "internalType": "bytes32", 117 | "name": "role", 118 | "type": "bytes32" 119 | }, 120 | { 121 | "internalType": "address", 122 | "name": "account", 123 | "type": "address" 124 | } 125 | ], 126 | "name": "grantRole", 127 | "outputs": [], 128 | "stateMutability": "nonpayable", 129 | "type": "function" 130 | }, 131 | { 132 | "inputs": [ 133 | { 134 | "internalType": "bytes32", 135 | "name": "role", 136 | "type": "bytes32" 137 | }, 138 | { 139 | "internalType": "address", 140 | "name": "account", 141 | "type": "address" 142 | } 143 | ], 144 | "name": "hasRole", 145 | "outputs": [ 146 | { 147 | "internalType": "bool", 148 | "name": "", 149 | "type": "bool" 150 | } 151 | ], 152 | "stateMutability": "view", 153 | "type": "function" 154 | }, 155 | { 156 | "inputs": [ 157 | { 158 | "internalType": "bytes32", 159 | "name": "role", 160 | "type": "bytes32" 161 | }, 162 | { 163 | "internalType": "address", 164 | "name": "account", 165 | "type": "address" 166 | } 167 | ], 168 | "name": "renounceRole", 169 | "outputs": [], 170 | "stateMutability": "nonpayable", 171 | "type": "function" 172 | }, 173 | { 174 | "inputs": [ 175 | { 176 | "internalType": "bytes32", 177 | "name": "role", 178 | "type": "bytes32" 179 | }, 180 | { 181 | "internalType": "address", 182 | "name": "account", 183 | "type": "address" 184 | } 185 | ], 186 | "name": "revokeRole", 187 | "outputs": [], 188 | "stateMutability": "nonpayable", 189 | "type": "function" 190 | }, 191 | { 192 | "inputs": [ 193 | { 194 | "internalType": "bytes4", 195 | "name": "interfaceId", 196 | "type": "bytes4" 197 | } 198 | ], 199 | "name": "supportsInterface", 200 | "outputs": [ 201 | { 202 | "internalType": "bool", 203 | "name": "", 204 | "type": "bool" 205 | } 206 | ], 207 | "stateMutability": "view", 208 | "type": "function" 209 | } 210 | ], 211 | "bytecode": "0x", 212 | "deployedBytecode": "0x", 213 | "linkReferences": {}, 214 | "deployedLinkReferences": {} 215 | } 216 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/access/AccessControlEnumerable.sol/AccessControlEnumerable.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/access/AccessControlEnumerable.sol/AccessControlEnumerable.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "AccessControlEnumerable", 4 | "sourceName": "@openzeppelin/contracts/access/AccessControlEnumerable.sol", 5 | "abi": [ 6 | { 7 | "anonymous": false, 8 | "inputs": [ 9 | { 10 | "indexed": true, 11 | "internalType": "bytes32", 12 | "name": "role", 13 | "type": "bytes32" 14 | }, 15 | { 16 | "indexed": true, 17 | "internalType": "bytes32", 18 | "name": "previousAdminRole", 19 | "type": "bytes32" 20 | }, 21 | { 22 | "indexed": true, 23 | "internalType": "bytes32", 24 | "name": "newAdminRole", 25 | "type": "bytes32" 26 | } 27 | ], 28 | "name": "RoleAdminChanged", 29 | "type": "event" 30 | }, 31 | { 32 | "anonymous": false, 33 | "inputs": [ 34 | { 35 | "indexed": true, 36 | "internalType": "bytes32", 37 | "name": "role", 38 | "type": "bytes32" 39 | }, 40 | { 41 | "indexed": true, 42 | "internalType": "address", 43 | "name": "account", 44 | "type": "address" 45 | }, 46 | { 47 | "indexed": true, 48 | "internalType": "address", 49 | "name": "sender", 50 | "type": "address" 51 | } 52 | ], 53 | "name": "RoleGranted", 54 | "type": "event" 55 | }, 56 | { 57 | "anonymous": false, 58 | "inputs": [ 59 | { 60 | "indexed": true, 61 | "internalType": "bytes32", 62 | "name": "role", 63 | "type": "bytes32" 64 | }, 65 | { 66 | "indexed": true, 67 | "internalType": "address", 68 | "name": "account", 69 | "type": "address" 70 | }, 71 | { 72 | "indexed": true, 73 | "internalType": "address", 74 | "name": "sender", 75 | "type": "address" 76 | } 77 | ], 78 | "name": "RoleRevoked", 79 | "type": "event" 80 | }, 81 | { 82 | "inputs": [], 83 | "name": "DEFAULT_ADMIN_ROLE", 84 | "outputs": [ 85 | { 86 | "internalType": "bytes32", 87 | "name": "", 88 | "type": "bytes32" 89 | } 90 | ], 91 | "stateMutability": "view", 92 | "type": "function" 93 | }, 94 | { 95 | "inputs": [ 96 | { 97 | "internalType": "bytes32", 98 | "name": "role", 99 | "type": "bytes32" 100 | } 101 | ], 102 | "name": "getRoleAdmin", 103 | "outputs": [ 104 | { 105 | "internalType": "bytes32", 106 | "name": "", 107 | "type": "bytes32" 108 | } 109 | ], 110 | "stateMutability": "view", 111 | "type": "function" 112 | }, 113 | { 114 | "inputs": [ 115 | { 116 | "internalType": "bytes32", 117 | "name": "role", 118 | "type": "bytes32" 119 | }, 120 | { 121 | "internalType": "uint256", 122 | "name": "index", 123 | "type": "uint256" 124 | } 125 | ], 126 | "name": "getRoleMember", 127 | "outputs": [ 128 | { 129 | "internalType": "address", 130 | "name": "", 131 | "type": "address" 132 | } 133 | ], 134 | "stateMutability": "view", 135 | "type": "function" 136 | }, 137 | { 138 | "inputs": [ 139 | { 140 | "internalType": "bytes32", 141 | "name": "role", 142 | "type": "bytes32" 143 | } 144 | ], 145 | "name": "getRoleMemberCount", 146 | "outputs": [ 147 | { 148 | "internalType": "uint256", 149 | "name": "", 150 | "type": "uint256" 151 | } 152 | ], 153 | "stateMutability": "view", 154 | "type": "function" 155 | }, 156 | { 157 | "inputs": [ 158 | { 159 | "internalType": "bytes32", 160 | "name": "role", 161 | "type": "bytes32" 162 | }, 163 | { 164 | "internalType": "address", 165 | "name": "account", 166 | "type": "address" 167 | } 168 | ], 169 | "name": "grantRole", 170 | "outputs": [], 171 | "stateMutability": "nonpayable", 172 | "type": "function" 173 | }, 174 | { 175 | "inputs": [ 176 | { 177 | "internalType": "bytes32", 178 | "name": "role", 179 | "type": "bytes32" 180 | }, 181 | { 182 | "internalType": "address", 183 | "name": "account", 184 | "type": "address" 185 | } 186 | ], 187 | "name": "hasRole", 188 | "outputs": [ 189 | { 190 | "internalType": "bool", 191 | "name": "", 192 | "type": "bool" 193 | } 194 | ], 195 | "stateMutability": "view", 196 | "type": "function" 197 | }, 198 | { 199 | "inputs": [ 200 | { 201 | "internalType": "bytes32", 202 | "name": "role", 203 | "type": "bytes32" 204 | }, 205 | { 206 | "internalType": "address", 207 | "name": "account", 208 | "type": "address" 209 | } 210 | ], 211 | "name": "renounceRole", 212 | "outputs": [], 213 | "stateMutability": "nonpayable", 214 | "type": "function" 215 | }, 216 | { 217 | "inputs": [ 218 | { 219 | "internalType": "bytes32", 220 | "name": "role", 221 | "type": "bytes32" 222 | }, 223 | { 224 | "internalType": "address", 225 | "name": "account", 226 | "type": "address" 227 | } 228 | ], 229 | "name": "revokeRole", 230 | "outputs": [], 231 | "stateMutability": "nonpayable", 232 | "type": "function" 233 | }, 234 | { 235 | "inputs": [ 236 | { 237 | "internalType": "bytes4", 238 | "name": "interfaceId", 239 | "type": "bytes4" 240 | } 241 | ], 242 | "name": "supportsInterface", 243 | "outputs": [ 244 | { 245 | "internalType": "bool", 246 | "name": "", 247 | "type": "bool" 248 | } 249 | ], 250 | "stateMutability": "view", 251 | "type": "function" 252 | } 253 | ], 254 | "bytecode": "0x", 255 | "deployedBytecode": "0x", 256 | "linkReferences": {}, 257 | "deployedLinkReferences": {} 258 | } 259 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "IAccessControl", 4 | "sourceName": "@openzeppelin/contracts/access/IAccessControl.sol", 5 | "abi": [ 6 | { 7 | "anonymous": false, 8 | "inputs": [ 9 | { 10 | "indexed": true, 11 | "internalType": "bytes32", 12 | "name": "role", 13 | "type": "bytes32" 14 | }, 15 | { 16 | "indexed": true, 17 | "internalType": "bytes32", 18 | "name": "previousAdminRole", 19 | "type": "bytes32" 20 | }, 21 | { 22 | "indexed": true, 23 | "internalType": "bytes32", 24 | "name": "newAdminRole", 25 | "type": "bytes32" 26 | } 27 | ], 28 | "name": "RoleAdminChanged", 29 | "type": "event" 30 | }, 31 | { 32 | "anonymous": false, 33 | "inputs": [ 34 | { 35 | "indexed": true, 36 | "internalType": "bytes32", 37 | "name": "role", 38 | "type": "bytes32" 39 | }, 40 | { 41 | "indexed": true, 42 | "internalType": "address", 43 | "name": "account", 44 | "type": "address" 45 | }, 46 | { 47 | "indexed": true, 48 | "internalType": "address", 49 | "name": "sender", 50 | "type": "address" 51 | } 52 | ], 53 | "name": "RoleGranted", 54 | "type": "event" 55 | }, 56 | { 57 | "anonymous": false, 58 | "inputs": [ 59 | { 60 | "indexed": true, 61 | "internalType": "bytes32", 62 | "name": "role", 63 | "type": "bytes32" 64 | }, 65 | { 66 | "indexed": true, 67 | "internalType": "address", 68 | "name": "account", 69 | "type": "address" 70 | }, 71 | { 72 | "indexed": true, 73 | "internalType": "address", 74 | "name": "sender", 75 | "type": "address" 76 | } 77 | ], 78 | "name": "RoleRevoked", 79 | "type": "event" 80 | }, 81 | { 82 | "inputs": [ 83 | { 84 | "internalType": "bytes32", 85 | "name": "role", 86 | "type": "bytes32" 87 | } 88 | ], 89 | "name": "getRoleAdmin", 90 | "outputs": [ 91 | { 92 | "internalType": "bytes32", 93 | "name": "", 94 | "type": "bytes32" 95 | } 96 | ], 97 | "stateMutability": "view", 98 | "type": "function" 99 | }, 100 | { 101 | "inputs": [ 102 | { 103 | "internalType": "bytes32", 104 | "name": "role", 105 | "type": "bytes32" 106 | }, 107 | { 108 | "internalType": "address", 109 | "name": "account", 110 | "type": "address" 111 | } 112 | ], 113 | "name": "grantRole", 114 | "outputs": [], 115 | "stateMutability": "nonpayable", 116 | "type": "function" 117 | }, 118 | { 119 | "inputs": [ 120 | { 121 | "internalType": "bytes32", 122 | "name": "role", 123 | "type": "bytes32" 124 | }, 125 | { 126 | "internalType": "address", 127 | "name": "account", 128 | "type": "address" 129 | } 130 | ], 131 | "name": "hasRole", 132 | "outputs": [ 133 | { 134 | "internalType": "bool", 135 | "name": "", 136 | "type": "bool" 137 | } 138 | ], 139 | "stateMutability": "view", 140 | "type": "function" 141 | }, 142 | { 143 | "inputs": [ 144 | { 145 | "internalType": "bytes32", 146 | "name": "role", 147 | "type": "bytes32" 148 | }, 149 | { 150 | "internalType": "address", 151 | "name": "account", 152 | "type": "address" 153 | } 154 | ], 155 | "name": "renounceRole", 156 | "outputs": [], 157 | "stateMutability": "nonpayable", 158 | "type": "function" 159 | }, 160 | { 161 | "inputs": [ 162 | { 163 | "internalType": "bytes32", 164 | "name": "role", 165 | "type": "bytes32" 166 | }, 167 | { 168 | "internalType": "address", 169 | "name": "account", 170 | "type": "address" 171 | } 172 | ], 173 | "name": "revokeRole", 174 | "outputs": [], 175 | "stateMutability": "nonpayable", 176 | "type": "function" 177 | } 178 | ], 179 | "bytecode": "0x", 180 | "deployedBytecode": "0x", 181 | "linkReferences": {}, 182 | "deployedLinkReferences": {} 183 | } 184 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/access/IAccessControlEnumerable.sol/IAccessControlEnumerable.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/access/IAccessControlEnumerable.sol/IAccessControlEnumerable.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "IAccessControlEnumerable", 4 | "sourceName": "@openzeppelin/contracts/access/IAccessControlEnumerable.sol", 5 | "abi": [ 6 | { 7 | "anonymous": false, 8 | "inputs": [ 9 | { 10 | "indexed": true, 11 | "internalType": "bytes32", 12 | "name": "role", 13 | "type": "bytes32" 14 | }, 15 | { 16 | "indexed": true, 17 | "internalType": "bytes32", 18 | "name": "previousAdminRole", 19 | "type": "bytes32" 20 | }, 21 | { 22 | "indexed": true, 23 | "internalType": "bytes32", 24 | "name": "newAdminRole", 25 | "type": "bytes32" 26 | } 27 | ], 28 | "name": "RoleAdminChanged", 29 | "type": "event" 30 | }, 31 | { 32 | "anonymous": false, 33 | "inputs": [ 34 | { 35 | "indexed": true, 36 | "internalType": "bytes32", 37 | "name": "role", 38 | "type": "bytes32" 39 | }, 40 | { 41 | "indexed": true, 42 | "internalType": "address", 43 | "name": "account", 44 | "type": "address" 45 | }, 46 | { 47 | "indexed": true, 48 | "internalType": "address", 49 | "name": "sender", 50 | "type": "address" 51 | } 52 | ], 53 | "name": "RoleGranted", 54 | "type": "event" 55 | }, 56 | { 57 | "anonymous": false, 58 | "inputs": [ 59 | { 60 | "indexed": true, 61 | "internalType": "bytes32", 62 | "name": "role", 63 | "type": "bytes32" 64 | }, 65 | { 66 | "indexed": true, 67 | "internalType": "address", 68 | "name": "account", 69 | "type": "address" 70 | }, 71 | { 72 | "indexed": true, 73 | "internalType": "address", 74 | "name": "sender", 75 | "type": "address" 76 | } 77 | ], 78 | "name": "RoleRevoked", 79 | "type": "event" 80 | }, 81 | { 82 | "inputs": [ 83 | { 84 | "internalType": "bytes32", 85 | "name": "role", 86 | "type": "bytes32" 87 | } 88 | ], 89 | "name": "getRoleAdmin", 90 | "outputs": [ 91 | { 92 | "internalType": "bytes32", 93 | "name": "", 94 | "type": "bytes32" 95 | } 96 | ], 97 | "stateMutability": "view", 98 | "type": "function" 99 | }, 100 | { 101 | "inputs": [ 102 | { 103 | "internalType": "bytes32", 104 | "name": "role", 105 | "type": "bytes32" 106 | }, 107 | { 108 | "internalType": "uint256", 109 | "name": "index", 110 | "type": "uint256" 111 | } 112 | ], 113 | "name": "getRoleMember", 114 | "outputs": [ 115 | { 116 | "internalType": "address", 117 | "name": "", 118 | "type": "address" 119 | } 120 | ], 121 | "stateMutability": "view", 122 | "type": "function" 123 | }, 124 | { 125 | "inputs": [ 126 | { 127 | "internalType": "bytes32", 128 | "name": "role", 129 | "type": "bytes32" 130 | } 131 | ], 132 | "name": "getRoleMemberCount", 133 | "outputs": [ 134 | { 135 | "internalType": "uint256", 136 | "name": "", 137 | "type": "uint256" 138 | } 139 | ], 140 | "stateMutability": "view", 141 | "type": "function" 142 | }, 143 | { 144 | "inputs": [ 145 | { 146 | "internalType": "bytes32", 147 | "name": "role", 148 | "type": "bytes32" 149 | }, 150 | { 151 | "internalType": "address", 152 | "name": "account", 153 | "type": "address" 154 | } 155 | ], 156 | "name": "grantRole", 157 | "outputs": [], 158 | "stateMutability": "nonpayable", 159 | "type": "function" 160 | }, 161 | { 162 | "inputs": [ 163 | { 164 | "internalType": "bytes32", 165 | "name": "role", 166 | "type": "bytes32" 167 | }, 168 | { 169 | "internalType": "address", 170 | "name": "account", 171 | "type": "address" 172 | } 173 | ], 174 | "name": "hasRole", 175 | "outputs": [ 176 | { 177 | "internalType": "bool", 178 | "name": "", 179 | "type": "bool" 180 | } 181 | ], 182 | "stateMutability": "view", 183 | "type": "function" 184 | }, 185 | { 186 | "inputs": [ 187 | { 188 | "internalType": "bytes32", 189 | "name": "role", 190 | "type": "bytes32" 191 | }, 192 | { 193 | "internalType": "address", 194 | "name": "account", 195 | "type": "address" 196 | } 197 | ], 198 | "name": "renounceRole", 199 | "outputs": [], 200 | "stateMutability": "nonpayable", 201 | "type": "function" 202 | }, 203 | { 204 | "inputs": [ 205 | { 206 | "internalType": "bytes32", 207 | "name": "role", 208 | "type": "bytes32" 209 | }, 210 | { 211 | "internalType": "address", 212 | "name": "account", 213 | "type": "address" 214 | } 215 | ], 216 | "name": "revokeRole", 217 | "outputs": [], 218 | "stateMutability": "nonpayable", 219 | "type": "function" 220 | } 221 | ], 222 | "bytecode": "0x", 223 | "deployedBytecode": "0x", 224 | "linkReferences": {}, 225 | "deployedLinkReferences": {} 226 | } 227 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "Ownable", 4 | "sourceName": "@openzeppelin/contracts/access/Ownable.sol", 5 | "abi": [ 6 | { 7 | "anonymous": false, 8 | "inputs": [ 9 | { 10 | "indexed": true, 11 | "internalType": "address", 12 | "name": "previousOwner", 13 | "type": "address" 14 | }, 15 | { 16 | "indexed": true, 17 | "internalType": "address", 18 | "name": "newOwner", 19 | "type": "address" 20 | } 21 | ], 22 | "name": "OwnershipTransferred", 23 | "type": "event" 24 | }, 25 | { 26 | "inputs": [], 27 | "name": "owner", 28 | "outputs": [ 29 | { 30 | "internalType": "address", 31 | "name": "", 32 | "type": "address" 33 | } 34 | ], 35 | "stateMutability": "view", 36 | "type": "function" 37 | }, 38 | { 39 | "inputs": [], 40 | "name": "renounceOwnership", 41 | "outputs": [], 42 | "stateMutability": "nonpayable", 43 | "type": "function" 44 | }, 45 | { 46 | "inputs": [ 47 | { 48 | "internalType": "address", 49 | "name": "newOwner", 50 | "type": "address" 51 | } 52 | ], 53 | "name": "transferOwnership", 54 | "outputs": [], 55 | "stateMutability": "nonpayable", 56 | "type": "function" 57 | } 58 | ], 59 | "bytecode": "0x", 60 | "deployedBytecode": "0x", 61 | "linkReferences": {}, 62 | "deployedLinkReferences": {} 63 | } 64 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "IERC20", 4 | "sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol", 5 | "abi": [ 6 | { 7 | "anonymous": false, 8 | "inputs": [ 9 | { 10 | "indexed": true, 11 | "internalType": "address", 12 | "name": "owner", 13 | "type": "address" 14 | }, 15 | { 16 | "indexed": true, 17 | "internalType": "address", 18 | "name": "spender", 19 | "type": "address" 20 | }, 21 | { 22 | "indexed": false, 23 | "internalType": "uint256", 24 | "name": "value", 25 | "type": "uint256" 26 | } 27 | ], 28 | "name": "Approval", 29 | "type": "event" 30 | }, 31 | { 32 | "anonymous": false, 33 | "inputs": [ 34 | { 35 | "indexed": true, 36 | "internalType": "address", 37 | "name": "from", 38 | "type": "address" 39 | }, 40 | { 41 | "indexed": true, 42 | "internalType": "address", 43 | "name": "to", 44 | "type": "address" 45 | }, 46 | { 47 | "indexed": false, 48 | "internalType": "uint256", 49 | "name": "value", 50 | "type": "uint256" 51 | } 52 | ], 53 | "name": "Transfer", 54 | "type": "event" 55 | }, 56 | { 57 | "inputs": [ 58 | { 59 | "internalType": "address", 60 | "name": "owner", 61 | "type": "address" 62 | }, 63 | { 64 | "internalType": "address", 65 | "name": "spender", 66 | "type": "address" 67 | } 68 | ], 69 | "name": "allowance", 70 | "outputs": [ 71 | { 72 | "internalType": "uint256", 73 | "name": "", 74 | "type": "uint256" 75 | } 76 | ], 77 | "stateMutability": "view", 78 | "type": "function" 79 | }, 80 | { 81 | "inputs": [ 82 | { 83 | "internalType": "address", 84 | "name": "spender", 85 | "type": "address" 86 | }, 87 | { 88 | "internalType": "uint256", 89 | "name": "amount", 90 | "type": "uint256" 91 | } 92 | ], 93 | "name": "approve", 94 | "outputs": [ 95 | { 96 | "internalType": "bool", 97 | "name": "", 98 | "type": "bool" 99 | } 100 | ], 101 | "stateMutability": "nonpayable", 102 | "type": "function" 103 | }, 104 | { 105 | "inputs": [ 106 | { 107 | "internalType": "address", 108 | "name": "account", 109 | "type": "address" 110 | } 111 | ], 112 | "name": "balanceOf", 113 | "outputs": [ 114 | { 115 | "internalType": "uint256", 116 | "name": "", 117 | "type": "uint256" 118 | } 119 | ], 120 | "stateMutability": "view", 121 | "type": "function" 122 | }, 123 | { 124 | "inputs": [], 125 | "name": "totalSupply", 126 | "outputs": [ 127 | { 128 | "internalType": "uint256", 129 | "name": "", 130 | "type": "uint256" 131 | } 132 | ], 133 | "stateMutability": "view", 134 | "type": "function" 135 | }, 136 | { 137 | "inputs": [ 138 | { 139 | "internalType": "address", 140 | "name": "recipient", 141 | "type": "address" 142 | }, 143 | { 144 | "internalType": "uint256", 145 | "name": "amount", 146 | "type": "uint256" 147 | } 148 | ], 149 | "name": "transfer", 150 | "outputs": [ 151 | { 152 | "internalType": "bool", 153 | "name": "", 154 | "type": "bool" 155 | } 156 | ], 157 | "stateMutability": "nonpayable", 158 | "type": "function" 159 | }, 160 | { 161 | "inputs": [ 162 | { 163 | "internalType": "address", 164 | "name": "sender", 165 | "type": "address" 166 | }, 167 | { 168 | "internalType": "address", 169 | "name": "recipient", 170 | "type": "address" 171 | }, 172 | { 173 | "internalType": "uint256", 174 | "name": "amount", 175 | "type": "uint256" 176 | } 177 | ], 178 | "name": "transferFrom", 179 | "outputs": [ 180 | { 181 | "internalType": "bool", 182 | "name": "", 183 | "type": "bool" 184 | } 185 | ], 186 | "stateMutability": "nonpayable", 187 | "type": "function" 188 | } 189 | ], 190 | "bytecode": "0x", 191 | "deployedBytecode": "0x", 192 | "linkReferences": {}, 193 | "deployedLinkReferences": {} 194 | } 195 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "IERC721Receiver", 4 | "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", 5 | "abi": [ 6 | { 7 | "inputs": [ 8 | { 9 | "internalType": "address", 10 | "name": "operator", 11 | "type": "address" 12 | }, 13 | { 14 | "internalType": "address", 15 | "name": "from", 16 | "type": "address" 17 | }, 18 | { 19 | "internalType": "uint256", 20 | "name": "tokenId", 21 | "type": "uint256" 22 | }, 23 | { 24 | "internalType": "bytes", 25 | "name": "data", 26 | "type": "bytes" 27 | } 28 | ], 29 | "name": "onERC721Received", 30 | "outputs": [ 31 | { 32 | "internalType": "bytes4", 33 | "name": "", 34 | "type": "bytes4" 35 | } 36 | ], 37 | "stateMutability": "nonpayable", 38 | "type": "function" 39 | } 40 | ], 41 | "bytecode": "0x", 42 | "deployedBytecode": "0x", 43 | "linkReferences": {}, 44 | "deployedLinkReferences": {} 45 | } 46 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "Address", 4 | "sourceName": "@openzeppelin/contracts/utils/Address.sol", 5 | "abi": [], 6 | "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bac15b1a6a14e0ffac307b05f495c838c7aef99d388f303bc550dec0b88bbc0464736f6c63430008040033", 7 | "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bac15b1a6a14e0ffac307b05f495c838c7aef99d388f303bc550dec0b88bbc0464736f6c63430008040033", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "Context", 4 | "sourceName": "@openzeppelin/contracts/utils/Context.sol", 5 | "abi": [], 6 | "bytecode": "0x", 7 | "deployedBytecode": "0x", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "Counters", 4 | "sourceName": "@openzeppelin/contracts/utils/Counters.sol", 5 | "abi": [], 6 | "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122016c7f342822180adc957cabcaee86ae0bc3669c1f9f3bcf324c6dd411eb49b6664736f6c63430008040033", 7 | "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122016c7f342822180adc957cabcaee86ae0bc3669c1f9f3bcf324c6dd411eb49b6664736f6c63430008040033", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "Strings", 4 | "sourceName": "@openzeppelin/contracts/utils/Strings.sol", 5 | "abi": [], 6 | "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a364030ddaa4ba6708934a9435fcbcf71b3c72f0321d6d5d0e0161c12bef99dc64736f6c63430008040033", 7 | "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a364030ddaa4ba6708934a9435fcbcf71b3c72f0321d6d5d0e0161c12bef99dc64736f6c63430008040033", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "ECDSA", 4 | "sourceName": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", 5 | "abi": [], 6 | "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b5dc80a7cb1f1d5c0b307e97984bc8b00253c2075369501f96975b0df2473b9364736f6c63430008040033", 7 | "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b5dc80a7cb1f1d5c0b307e97984bc8b00253c2075369501f96975b0df2473b9364736f6c63430008040033", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol/EIP712.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol/EIP712.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "EIP712", 4 | "sourceName": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol", 5 | "abi": [], 6 | "bytecode": "0x", 7 | "deployedBytecode": "0x", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "ERC165", 4 | "sourceName": "@openzeppelin/contracts/utils/introspection/ERC165.sol", 5 | "abi": [ 6 | { 7 | "inputs": [ 8 | { 9 | "internalType": "bytes4", 10 | "name": "interfaceId", 11 | "type": "bytes4" 12 | } 13 | ], 14 | "name": "supportsInterface", 15 | "outputs": [ 16 | { 17 | "internalType": "bool", 18 | "name": "", 19 | "type": "bool" 20 | } 21 | ], 22 | "stateMutability": "view", 23 | "type": "function" 24 | } 25 | ], 26 | "bytecode": "0x", 27 | "deployedBytecode": "0x", 28 | "linkReferences": {}, 29 | "deployedLinkReferences": {} 30 | } 31 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "IERC165", 4 | "sourceName": "@openzeppelin/contracts/utils/introspection/IERC165.sol", 5 | "abi": [ 6 | { 7 | "inputs": [ 8 | { 9 | "internalType": "bytes4", 10 | "name": "interfaceId", 11 | "type": "bytes4" 12 | } 13 | ], 14 | "name": "supportsInterface", 15 | "outputs": [ 16 | { 17 | "internalType": "bool", 18 | "name": "", 19 | "type": "bool" 20 | } 21 | ], 22 | "stateMutability": "view", 23 | "type": "function" 24 | } 25 | ], 26 | "bytecode": "0x", 27 | "deployedBytecode": "0x", 28 | "linkReferences": {}, 29 | "deployedLinkReferences": {} 30 | } 31 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/structs/EnumerableSet.sol/EnumerableSet.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/@openzeppelin/contracts/utils/structs/EnumerableSet.sol/EnumerableSet.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "EnumerableSet", 4 | "sourceName": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", 5 | "abi": [], 6 | "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ec0d5ff8b78a1d4ffcd61edbab31af19227853650f18a4c5f81759129e85243864736f6c63430008040033", 7 | "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ec0d5ff8b78a1d4ffcd61edbab31af19227853650f18a4c5f81759129e85243864736f6c63430008040033", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /artifacts/contracts/BuyNFT.sol/BuyNFT.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/DaoSponsor.sol/DaoSponsor.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/DaoTicket.sol/DaoTicket.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../build-info/03949a2006fce667084cecaaa54538bd.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/DaoTicket.sol/DaoTicket.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "DaoTicket", 4 | "sourceName": "contracts/DaoTicket.sol", 5 | "abi": [ 6 | { 7 | "anonymous": false, 8 | "inputs": [ 9 | { 10 | "indexed": false, 11 | "internalType": "uint256", 12 | "name": "", 13 | "type": "uint256" 14 | }, 15 | { 16 | "indexed": false, 17 | "internalType": "address", 18 | "name": "", 19 | "type": "address" 20 | } 21 | ], 22 | "name": "randallAteMySandwich_dbohban", 23 | "type": "event" 24 | }, 25 | { 26 | "inputs": [ 27 | { 28 | "internalType": "bytes", 29 | "name": "nickname", 30 | "type": "bytes" 31 | } 32 | ], 33 | "name": "abcei51243fdgjkh", 34 | "outputs": [], 35 | "stateMutability": "nonpayable", 36 | "type": "function" 37 | }, 38 | { 39 | "inputs": [ 40 | { 41 | "internalType": "uint256", 42 | "name": "", 43 | "type": "uint256" 44 | } 45 | ], 46 | "name": "account_info_rotate_tine", 47 | "outputs": [ 48 | { 49 | "internalType": "string", 50 | "name": "", 51 | "type": "string" 52 | } 53 | ], 54 | "stateMutability": "view", 55 | "type": "function" 56 | }, 57 | { 58 | "inputs": [ 59 | { 60 | "internalType": "uint256[]", 61 | "name": "hashs", 62 | "type": "uint256[]" 63 | } 64 | ], 65 | "name": "eldddhzr", 66 | "outputs": [], 67 | "stateMutability": "nonpayable", 68 | "type": "function" 69 | }, 70 | { 71 | "inputs": [ 72 | { 73 | "internalType": "uint256", 74 | "name": "", 75 | "type": "uint256" 76 | } 77 | ], 78 | "name": "mintToSell9630191", 79 | "outputs": [ 80 | { 81 | "internalType": "address", 82 | "name": "", 83 | "type": "address" 84 | } 85 | ], 86 | "stateMutability": "view", 87 | "type": "function" 88 | }, 89 | { 90 | "inputs": [], 91 | "name": "test266151307", 92 | "outputs": [ 93 | { 94 | "internalType": "uint256", 95 | "name": "", 96 | "type": "uint256" 97 | } 98 | ], 99 | "stateMutability": "view", 100 | "type": "function" 101 | } 102 | ], 103 | "bytecode": "0x", 104 | "deployedBytecode": "0x", 105 | "linkReferences": {}, 106 | "deployedLinkReferences": {} 107 | } 108 | -------------------------------------------------------------------------------- /artifacts/contracts/DaoTreasury.sol/DaoTreasury.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/DaoVault.sol/DaoVault.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/EIP3664/ERC3664.sol/ERC3664.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/EIP3664/interfaces/IERC3664.sol/IERC3664.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/EIP3664/interfaces/IERC3664Metadata.sol/IERC3664Metadata.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/MultiSign.sol/MultiSign.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/Web3DAOCN.sol/Web3DAOCN.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/interfaces/IBuyNFT.sol/IBuyNFT.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/interfaces/IBuyNFT.sol/IBuyNFT.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "IBuyNFT", 4 | "sourceName": "contracts/interfaces/IBuyNFT.sol", 5 | "abi": [ 6 | { 7 | "anonymous": false, 8 | "inputs": [ 9 | { 10 | "indexed": false, 11 | "internalType": "address", 12 | "name": "to", 13 | "type": "address" 14 | } 15 | ], 16 | "name": "Buy", 17 | "type": "event" 18 | }, 19 | { 20 | "anonymous": false, 21 | "inputs": [ 22 | { 23 | "indexed": false, 24 | "internalType": "address", 25 | "name": "_DaoVault", 26 | "type": "address" 27 | } 28 | ], 29 | "name": "SetDaoVault", 30 | "type": "event" 31 | }, 32 | { 33 | "anonymous": false, 34 | "inputs": [ 35 | { 36 | "indexed": false, 37 | "internalType": "uint256", 38 | "name": "_maxTotalSupply", 39 | "type": "uint256" 40 | } 41 | ], 42 | "name": "SetMaxTotalSupply", 43 | "type": "event" 44 | }, 45 | { 46 | "anonymous": false, 47 | "inputs": [ 48 | { 49 | "indexed": false, 50 | "internalType": "uint256", 51 | "name": "_price", 52 | "type": "uint256" 53 | } 54 | ], 55 | "name": "SetPrice", 56 | "type": "event" 57 | }, 58 | { 59 | "inputs": [], 60 | "name": "DaoVault", 61 | "outputs": [ 62 | { 63 | "internalType": "address", 64 | "name": "", 65 | "type": "address" 66 | } 67 | ], 68 | "stateMutability": "view", 69 | "type": "function" 70 | }, 71 | { 72 | "inputs": [], 73 | "name": "WEB3DAONFT", 74 | "outputs": [ 75 | { 76 | "internalType": "address", 77 | "name": "", 78 | "type": "address" 79 | } 80 | ], 81 | "stateMutability": "view", 82 | "type": "function" 83 | }, 84 | { 85 | "inputs": [], 86 | "name": "WETH", 87 | "outputs": [ 88 | { 89 | "internalType": "address", 90 | "name": "", 91 | "type": "address" 92 | } 93 | ], 94 | "stateMutability": "view", 95 | "type": "function" 96 | }, 97 | { 98 | "inputs": [ 99 | { 100 | "internalType": "address", 101 | "name": "to", 102 | "type": "address" 103 | } 104 | ], 105 | "name": "buy", 106 | "outputs": [], 107 | "stateMutability": "nonpayable", 108 | "type": "function" 109 | }, 110 | { 111 | "inputs": [], 112 | "name": "maxTotalSupply", 113 | "outputs": [ 114 | { 115 | "internalType": "uint256", 116 | "name": "", 117 | "type": "uint256" 118 | } 119 | ], 120 | "stateMutability": "view", 121 | "type": "function" 122 | }, 123 | { 124 | "inputs": [], 125 | "name": "price", 126 | "outputs": [ 127 | { 128 | "internalType": "uint256", 129 | "name": "", 130 | "type": "uint256" 131 | } 132 | ], 133 | "stateMutability": "view", 134 | "type": "function" 135 | }, 136 | { 137 | "inputs": [ 138 | { 139 | "internalType": "address", 140 | "name": "_DaoVault", 141 | "type": "address" 142 | } 143 | ], 144 | "name": "setDaoVault", 145 | "outputs": [], 146 | "stateMutability": "nonpayable", 147 | "type": "function" 148 | }, 149 | { 150 | "inputs": [ 151 | { 152 | "internalType": "uint256", 153 | "name": "_maxTotalSupply", 154 | "type": "uint256" 155 | } 156 | ], 157 | "name": "setMaxTotalSupply", 158 | "outputs": [], 159 | "stateMutability": "nonpayable", 160 | "type": "function" 161 | }, 162 | { 163 | "inputs": [ 164 | { 165 | "internalType": "uint256", 166 | "name": "_price", 167 | "type": "uint256" 168 | } 169 | ], 170 | "name": "setPrice", 171 | "outputs": [], 172 | "stateMutability": "nonpayable", 173 | "type": "function" 174 | } 175 | ], 176 | "bytecode": "0x", 177 | "deployedBytecode": "0x", 178 | "linkReferences": {}, 179 | "deployedLinkReferences": {} 180 | } 181 | -------------------------------------------------------------------------------- /artifacts/contracts/interfaces/IDaoSponsor.sol/IDaoSponsor.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/interfaces/IDaoTreasury.sol/IDaoTreasury.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/interfaces/IDaoVault.sol/IDaoVault.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/interfaces/IDaoVault.sol/IDaoVault.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "IDaoVault", 4 | "sourceName": "contracts/interfaces/IDaoVault.sol", 5 | "abi": [ 6 | { 7 | "anonymous": false, 8 | "inputs": [ 9 | { 10 | "indexed": false, 11 | "internalType": "uint256", 12 | "name": "amount", 13 | "type": "uint256" 14 | }, 15 | { 16 | "indexed": false, 17 | "internalType": "uint256", 18 | "name": "reserve", 19 | "type": "uint256" 20 | } 21 | ], 22 | "name": "Deposit", 23 | "type": "event" 24 | }, 25 | { 26 | "anonymous": false, 27 | "inputs": [ 28 | { 29 | "indexed": false, 30 | "internalType": "uint256", 31 | "name": "reserve", 32 | "type": "uint256" 33 | } 34 | ], 35 | "name": "UpdateReserve", 36 | "type": "event" 37 | }, 38 | { 39 | "anonymous": false, 40 | "inputs": [ 41 | { 42 | "indexed": false, 43 | "internalType": "uint256", 44 | "name": "amount", 45 | "type": "uint256" 46 | }, 47 | { 48 | "indexed": false, 49 | "internalType": "uint256", 50 | "name": "reserve", 51 | "type": "uint256" 52 | } 53 | ], 54 | "name": "Withdraw", 55 | "type": "event" 56 | }, 57 | { 58 | "inputs": [], 59 | "name": "WETH", 60 | "outputs": [ 61 | { 62 | "internalType": "address", 63 | "name": "", 64 | "type": "address" 65 | } 66 | ], 67 | "stateMutability": "view", 68 | "type": "function" 69 | }, 70 | { 71 | "inputs": [ 72 | { 73 | "internalType": "uint256", 74 | "name": "amount", 75 | "type": "uint256" 76 | } 77 | ], 78 | "name": "deposit", 79 | "outputs": [], 80 | "stateMutability": "nonpayable", 81 | "type": "function" 82 | }, 83 | { 84 | "inputs": [], 85 | "name": "reserve", 86 | "outputs": [ 87 | { 88 | "internalType": "uint256", 89 | "name": "", 90 | "type": "uint256" 91 | } 92 | ], 93 | "stateMutability": "view", 94 | "type": "function" 95 | }, 96 | { 97 | "inputs": [], 98 | "name": "updateReserve", 99 | "outputs": [], 100 | "stateMutability": "nonpayable", 101 | "type": "function" 102 | }, 103 | { 104 | "inputs": [ 105 | { 106 | "internalType": "uint256", 107 | "name": "amount", 108 | "type": "uint256" 109 | }, 110 | { 111 | "internalType": "address", 112 | "name": "to", 113 | "type": "address" 114 | } 115 | ], 116 | "name": "withdraw", 117 | "outputs": [], 118 | "stateMutability": "nonpayable", 119 | "type": "function" 120 | } 121 | ], 122 | "bytecode": "0x", 123 | "deployedBytecode": "0x", 124 | "linkReferences": {}, 125 | "deployedLinkReferences": {} 126 | } 127 | -------------------------------------------------------------------------------- /artifacts/contracts/interfaces/IWeb3DAOCN.sol/IWeb3DAOCN.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/5817655c7a41c4cb83f57c4a2c1fc2b4.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/AccessControl.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/7a32fae717d7f1ab30a7e34e2870b3cc.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/AccessControl.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "AccessControl", 4 | "sourceName": "contracts/test/MaticWETH.sol", 5 | "abi": [ 6 | { 7 | "anonymous": false, 8 | "inputs": [ 9 | { 10 | "indexed": true, 11 | "internalType": "bytes32", 12 | "name": "role", 13 | "type": "bytes32" 14 | }, 15 | { 16 | "indexed": true, 17 | "internalType": "bytes32", 18 | "name": "previousAdminRole", 19 | "type": "bytes32" 20 | }, 21 | { 22 | "indexed": true, 23 | "internalType": "bytes32", 24 | "name": "newAdminRole", 25 | "type": "bytes32" 26 | } 27 | ], 28 | "name": "RoleAdminChanged", 29 | "type": "event" 30 | }, 31 | { 32 | "anonymous": false, 33 | "inputs": [ 34 | { 35 | "indexed": true, 36 | "internalType": "bytes32", 37 | "name": "role", 38 | "type": "bytes32" 39 | }, 40 | { 41 | "indexed": true, 42 | "internalType": "address", 43 | "name": "account", 44 | "type": "address" 45 | }, 46 | { 47 | "indexed": true, 48 | "internalType": "address", 49 | "name": "sender", 50 | "type": "address" 51 | } 52 | ], 53 | "name": "RoleGranted", 54 | "type": "event" 55 | }, 56 | { 57 | "anonymous": false, 58 | "inputs": [ 59 | { 60 | "indexed": true, 61 | "internalType": "bytes32", 62 | "name": "role", 63 | "type": "bytes32" 64 | }, 65 | { 66 | "indexed": true, 67 | "internalType": "address", 68 | "name": "account", 69 | "type": "address" 70 | }, 71 | { 72 | "indexed": true, 73 | "internalType": "address", 74 | "name": "sender", 75 | "type": "address" 76 | } 77 | ], 78 | "name": "RoleRevoked", 79 | "type": "event" 80 | }, 81 | { 82 | "inputs": [], 83 | "name": "DEFAULT_ADMIN_ROLE", 84 | "outputs": [ 85 | { 86 | "internalType": "bytes32", 87 | "name": "", 88 | "type": "bytes32" 89 | } 90 | ], 91 | "stateMutability": "view", 92 | "type": "function" 93 | }, 94 | { 95 | "inputs": [ 96 | { 97 | "internalType": "bytes32", 98 | "name": "role", 99 | "type": "bytes32" 100 | } 101 | ], 102 | "name": "getRoleAdmin", 103 | "outputs": [ 104 | { 105 | "internalType": "bytes32", 106 | "name": "", 107 | "type": "bytes32" 108 | } 109 | ], 110 | "stateMutability": "view", 111 | "type": "function" 112 | }, 113 | { 114 | "inputs": [ 115 | { 116 | "internalType": "bytes32", 117 | "name": "role", 118 | "type": "bytes32" 119 | }, 120 | { 121 | "internalType": "uint256", 122 | "name": "index", 123 | "type": "uint256" 124 | } 125 | ], 126 | "name": "getRoleMember", 127 | "outputs": [ 128 | { 129 | "internalType": "address", 130 | "name": "", 131 | "type": "address" 132 | } 133 | ], 134 | "stateMutability": "view", 135 | "type": "function" 136 | }, 137 | { 138 | "inputs": [ 139 | { 140 | "internalType": "bytes32", 141 | "name": "role", 142 | "type": "bytes32" 143 | } 144 | ], 145 | "name": "getRoleMemberCount", 146 | "outputs": [ 147 | { 148 | "internalType": "uint256", 149 | "name": "", 150 | "type": "uint256" 151 | } 152 | ], 153 | "stateMutability": "view", 154 | "type": "function" 155 | }, 156 | { 157 | "inputs": [ 158 | { 159 | "internalType": "bytes32", 160 | "name": "role", 161 | "type": "bytes32" 162 | }, 163 | { 164 | "internalType": "address", 165 | "name": "account", 166 | "type": "address" 167 | } 168 | ], 169 | "name": "grantRole", 170 | "outputs": [], 171 | "stateMutability": "nonpayable", 172 | "type": "function" 173 | }, 174 | { 175 | "inputs": [ 176 | { 177 | "internalType": "bytes32", 178 | "name": "role", 179 | "type": "bytes32" 180 | }, 181 | { 182 | "internalType": "address", 183 | "name": "account", 184 | "type": "address" 185 | } 186 | ], 187 | "name": "hasRole", 188 | "outputs": [ 189 | { 190 | "internalType": "bool", 191 | "name": "", 192 | "type": "bool" 193 | } 194 | ], 195 | "stateMutability": "view", 196 | "type": "function" 197 | }, 198 | { 199 | "inputs": [ 200 | { 201 | "internalType": "bytes32", 202 | "name": "role", 203 | "type": "bytes32" 204 | }, 205 | { 206 | "internalType": "address", 207 | "name": "account", 208 | "type": "address" 209 | } 210 | ], 211 | "name": "renounceRole", 212 | "outputs": [], 213 | "stateMutability": "nonpayable", 214 | "type": "function" 215 | }, 216 | { 217 | "inputs": [ 218 | { 219 | "internalType": "bytes32", 220 | "name": "role", 221 | "type": "bytes32" 222 | }, 223 | { 224 | "internalType": "address", 225 | "name": "account", 226 | "type": "address" 227 | } 228 | ], 229 | "name": "revokeRole", 230 | "outputs": [], 231 | "stateMutability": "nonpayable", 232 | "type": "function" 233 | } 234 | ], 235 | "bytecode": "0x", 236 | "deployedBytecode": "0x", 237 | "linkReferences": {}, 238 | "deployedLinkReferences": {} 239 | } 240 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/AccessControlMixin.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/7a32fae717d7f1ab30a7e34e2870b3cc.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/Address.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/7a32fae717d7f1ab30a7e34e2870b3cc.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/Address.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "Address", 4 | "sourceName": "contracts/test/MaticWETH.sol", 5 | "abi": [], 6 | "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220500ee860b9cec7953264850a94c9bd025f41026dbf5f602c199719b0f6f6cba964736f6c63430006060033", 7 | "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220500ee860b9cec7953264850a94c9bd025f41026dbf5f602c199719b0f6f6cba964736f6c63430006060033", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/ChainConstants.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/7a32fae717d7f1ab30a7e34e2870b3cc.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/ChainConstants.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "ChainConstants", 4 | "sourceName": "contracts/test/MaticWETH.sol", 5 | "abi": [ 6 | { 7 | "inputs": [], 8 | "name": "CHILD_CHAIN_ID", 9 | "outputs": [ 10 | { 11 | "internalType": "uint256", 12 | "name": "", 13 | "type": "uint256" 14 | } 15 | ], 16 | "stateMutability": "view", 17 | "type": "function" 18 | }, 19 | { 20 | "inputs": [], 21 | "name": "CHILD_CHAIN_ID_BYTES", 22 | "outputs": [ 23 | { 24 | "internalType": "bytes", 25 | "name": "", 26 | "type": "bytes" 27 | } 28 | ], 29 | "stateMutability": "view", 30 | "type": "function" 31 | }, 32 | { 33 | "inputs": [], 34 | "name": "ERC712_VERSION", 35 | "outputs": [ 36 | { 37 | "internalType": "string", 38 | "name": "", 39 | "type": "string" 40 | } 41 | ], 42 | "stateMutability": "view", 43 | "type": "function" 44 | }, 45 | { 46 | "inputs": [], 47 | "name": "ROOT_CHAIN_ID", 48 | "outputs": [ 49 | { 50 | "internalType": "uint256", 51 | "name": "", 52 | "type": "uint256" 53 | } 54 | ], 55 | "stateMutability": "view", 56 | "type": "function" 57 | }, 58 | { 59 | "inputs": [], 60 | "name": "ROOT_CHAIN_ID_BYTES", 61 | "outputs": [ 62 | { 63 | "internalType": "bytes", 64 | "name": "", 65 | "type": "bytes" 66 | } 67 | ], 68 | "stateMutability": "view", 69 | "type": "function" 70 | } 71 | ], 72 | "bytecode": "0x608060405234801561001057600080fd5b506101a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630b54817c1461005c5780630dd7531a146100d95780630f7e5970146100e1578063626381a0146100e95780638acfcaf714610103575b600080fd5b61006461010b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561009e578181015183820152602001610086565b50505050905090810190601f1680156100cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610064610128565b610064610145565b6100f1610162565b60408051918252519081900360200190f35b6100f1610167565b604051806040016040528060018152602001608960f81b81525081565b604051806040016040528060018152602001600160f81b81525081565b604051806040016040528060018152602001603160f81b81525081565b608981565b60018156fea264697066735822122051d7ba3270116dd91188db2bcee7d897af1e0afa63951f0c3d6261ee0dc222a664736f6c63430006060033", 73 | "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80630b54817c1461005c5780630dd7531a146100d95780630f7e5970146100e1578063626381a0146100e95780638acfcaf714610103575b600080fd5b61006461010b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561009e578181015183820152602001610086565b50505050905090810190601f1680156100cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610064610128565b610064610145565b6100f1610162565b60408051918252519081900360200190f35b6100f1610167565b604051806040016040528060018152602001608960f81b81525081565b604051806040016040528060018152602001600160f81b81525081565b604051806040016040528060018152602001603160f81b81525081565b608981565b60018156fea264697066735822122051d7ba3270116dd91188db2bcee7d897af1e0afa63951f0c3d6261ee0dc222a664736f6c63430006060033", 74 | "linkReferences": {}, 75 | "deployedLinkReferences": {} 76 | } 77 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/ChildERC20.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/7a32fae717d7f1ab30a7e34e2870b3cc.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/Context.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/7a32fae717d7f1ab30a7e34e2870b3cc.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/Context.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "Context", 4 | "sourceName": "contracts/test/MaticWETH.sol", 5 | "abi": [], 6 | "bytecode": "0x", 7 | "deployedBytecode": "0x", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/ContextMixin.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/7a32fae717d7f1ab30a7e34e2870b3cc.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/ContextMixin.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "ContextMixin", 4 | "sourceName": "contracts/test/MaticWETH.sol", 5 | "abi": [], 6 | "bytecode": "0x", 7 | "deployedBytecode": "0x", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/EIP712Base.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/7a32fae717d7f1ab30a7e34e2870b3cc.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/EIP712Base.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "EIP712Base", 4 | "sourceName": "contracts/test/MaticWETH.sol", 5 | "abi": [ 6 | { 7 | "inputs": [], 8 | "name": "getChainId", 9 | "outputs": [ 10 | { 11 | "internalType": "uint256", 12 | "name": "", 13 | "type": "uint256" 14 | } 15 | ], 16 | "stateMutability": "pure", 17 | "type": "function" 18 | }, 19 | { 20 | "inputs": [], 21 | "name": "getDomainSeperator", 22 | "outputs": [ 23 | { 24 | "internalType": "bytes32", 25 | "name": "", 26 | "type": "bytes32" 27 | } 28 | ], 29 | "stateMutability": "view", 30 | "type": "function" 31 | } 32 | ], 33 | "bytecode": "0x60806040526000805460ff19169055348015601957600080fd5b506095806100286000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806320379ee51460375780633408e47014604f575b600080fd5b603d6055565b60408051918252519081900360200190f35b603d605b565b60015490565b469056fea264697066735822122074c144d778aba9e57479dc5a33abad8d16f297a22f695c604d387e52a2672cb164736f6c63430006060033", 34 | "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060325760003560e01c806320379ee51460375780633408e47014604f575b600080fd5b603d6055565b60408051918252519081900360200190f35b603d605b565b60015490565b469056fea264697066735822122074c144d778aba9e57479dc5a33abad8d16f297a22f695c604d387e52a2672cb164736f6c63430006060033", 35 | "linkReferences": {}, 36 | "deployedLinkReferences": {} 37 | } 38 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/ERC20.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/7a32fae717d7f1ab30a7e34e2870b3cc.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/EnumerableSet.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/7a32fae717d7f1ab30a7e34e2870b3cc.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/EnumerableSet.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "EnumerableSet", 4 | "sourceName": "contracts/test/MaticWETH.sol", 5 | "abi": [], 6 | "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203ae0d35103df5ad1c9c4a58b140ce46d2ddf94d04f293e034818d47b749921bd64736f6c63430006060033", 7 | "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203ae0d35103df5ad1c9c4a58b140ce46d2ddf94d04f293e034818d47b749921bd64736f6c63430006060033", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/IChildToken.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/7a32fae717d7f1ab30a7e34e2870b3cc.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/IChildToken.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "IChildToken", 4 | "sourceName": "contracts/test/MaticWETH.sol", 5 | "abi": [ 6 | { 7 | "inputs": [ 8 | { 9 | "internalType": "address", 10 | "name": "user", 11 | "type": "address" 12 | }, 13 | { 14 | "internalType": "bytes", 15 | "name": "depositData", 16 | "type": "bytes" 17 | } 18 | ], 19 | "name": "deposit", 20 | "outputs": [], 21 | "stateMutability": "nonpayable", 22 | "type": "function" 23 | } 24 | ], 25 | "bytecode": "0x", 26 | "deployedBytecode": "0x", 27 | "linkReferences": {}, 28 | "deployedLinkReferences": {} 29 | } 30 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/IERC20.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/7a32fae717d7f1ab30a7e34e2870b3cc.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/IERC20.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "IERC20", 4 | "sourceName": "contracts/test/MaticWETH.sol", 5 | "abi": [ 6 | { 7 | "anonymous": false, 8 | "inputs": [ 9 | { 10 | "indexed": true, 11 | "internalType": "address", 12 | "name": "owner", 13 | "type": "address" 14 | }, 15 | { 16 | "indexed": true, 17 | "internalType": "address", 18 | "name": "spender", 19 | "type": "address" 20 | }, 21 | { 22 | "indexed": false, 23 | "internalType": "uint256", 24 | "name": "value", 25 | "type": "uint256" 26 | } 27 | ], 28 | "name": "Approval", 29 | "type": "event" 30 | }, 31 | { 32 | "anonymous": false, 33 | "inputs": [ 34 | { 35 | "indexed": true, 36 | "internalType": "address", 37 | "name": "from", 38 | "type": "address" 39 | }, 40 | { 41 | "indexed": true, 42 | "internalType": "address", 43 | "name": "to", 44 | "type": "address" 45 | }, 46 | { 47 | "indexed": false, 48 | "internalType": "uint256", 49 | "name": "value", 50 | "type": "uint256" 51 | } 52 | ], 53 | "name": "Transfer", 54 | "type": "event" 55 | }, 56 | { 57 | "inputs": [ 58 | { 59 | "internalType": "address", 60 | "name": "owner", 61 | "type": "address" 62 | }, 63 | { 64 | "internalType": "address", 65 | "name": "spender", 66 | "type": "address" 67 | } 68 | ], 69 | "name": "allowance", 70 | "outputs": [ 71 | { 72 | "internalType": "uint256", 73 | "name": "", 74 | "type": "uint256" 75 | } 76 | ], 77 | "stateMutability": "view", 78 | "type": "function" 79 | }, 80 | { 81 | "inputs": [ 82 | { 83 | "internalType": "address", 84 | "name": "spender", 85 | "type": "address" 86 | }, 87 | { 88 | "internalType": "uint256", 89 | "name": "amount", 90 | "type": "uint256" 91 | } 92 | ], 93 | "name": "approve", 94 | "outputs": [ 95 | { 96 | "internalType": "bool", 97 | "name": "", 98 | "type": "bool" 99 | } 100 | ], 101 | "stateMutability": "nonpayable", 102 | "type": "function" 103 | }, 104 | { 105 | "inputs": [ 106 | { 107 | "internalType": "address", 108 | "name": "account", 109 | "type": "address" 110 | } 111 | ], 112 | "name": "balanceOf", 113 | "outputs": [ 114 | { 115 | "internalType": "uint256", 116 | "name": "", 117 | "type": "uint256" 118 | } 119 | ], 120 | "stateMutability": "view", 121 | "type": "function" 122 | }, 123 | { 124 | "inputs": [], 125 | "name": "totalSupply", 126 | "outputs": [ 127 | { 128 | "internalType": "uint256", 129 | "name": "", 130 | "type": "uint256" 131 | } 132 | ], 133 | "stateMutability": "view", 134 | "type": "function" 135 | }, 136 | { 137 | "inputs": [ 138 | { 139 | "internalType": "address", 140 | "name": "recipient", 141 | "type": "address" 142 | }, 143 | { 144 | "internalType": "uint256", 145 | "name": "amount", 146 | "type": "uint256" 147 | } 148 | ], 149 | "name": "transfer", 150 | "outputs": [ 151 | { 152 | "internalType": "bool", 153 | "name": "", 154 | "type": "bool" 155 | } 156 | ], 157 | "stateMutability": "nonpayable", 158 | "type": "function" 159 | }, 160 | { 161 | "inputs": [ 162 | { 163 | "internalType": "address", 164 | "name": "sender", 165 | "type": "address" 166 | }, 167 | { 168 | "internalType": "address", 169 | "name": "recipient", 170 | "type": "address" 171 | }, 172 | { 173 | "internalType": "uint256", 174 | "name": "amount", 175 | "type": "uint256" 176 | } 177 | ], 178 | "name": "transferFrom", 179 | "outputs": [ 180 | { 181 | "internalType": "bool", 182 | "name": "", 183 | "type": "bool" 184 | } 185 | ], 186 | "stateMutability": "nonpayable", 187 | "type": "function" 188 | } 189 | ], 190 | "bytecode": "0x", 191 | "deployedBytecode": "0x", 192 | "linkReferences": {}, 193 | "deployedLinkReferences": {} 194 | } 195 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/Initializable.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/7a32fae717d7f1ab30a7e34e2870b3cc.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/Initializable.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "Initializable", 4 | "sourceName": "contracts/test/MaticWETH.sol", 5 | "abi": [], 6 | "bytecode": "0x60806040526000805460ff19169055348015601957600080fd5b50603f8060276000396000f3fe6080604052600080fdfea26469706673582212203a45e693758da7a0861e0d861ed5bd5aa57ab4a17e73ca3e93d39f085a80b29d64736f6c63430006060033", 7 | "deployedBytecode": "0x6080604052600080fdfea26469706673582212203a45e693758da7a0861e0d861ed5bd5aa57ab4a17e73ca3e93d39f085a80b29d64736f6c63430006060033", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/MaticWETH.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/7a32fae717d7f1ab30a7e34e2870b3cc.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/NativeMetaTransaction.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/7a32fae717d7f1ab30a7e34e2870b3cc.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/SafeMath.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../../../build-info/7a32fae717d7f1ab30a7e34e2870b3cc.json" 4 | } 5 | -------------------------------------------------------------------------------- /artifacts/contracts/test/MaticWETH.sol/SafeMath.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "SafeMath", 4 | "sourceName": "contracts/test/MaticWETH.sol", 5 | "abi": [], 6 | "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204f1780eeaa45a9aa331d7868b272c298fbd8b20797bf24196deac04454e8c57864736f6c63430006060033", 7 | "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204f1780eeaa45a9aa331d7868b272c298fbd8b20797bf24196deac04454e8c57864736f6c63430006060033", 8 | "linkReferences": {}, 9 | "deployedLinkReferences": {} 10 | } 11 | -------------------------------------------------------------------------------- /contracts/BuyNFT.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; 6 | import "@openzeppelin/contracts/utils/Address.sol"; 7 | import "@openzeppelin/contracts/access/Ownable.sol"; 8 | import "./interfaces/IWeb3DAOCN.sol"; 9 | import "./interfaces/IBuyNFT.sol"; 10 | import "./interfaces/IDaoVault.sol"; 11 | 12 | /** 13 | * @title WEB3DAO@CN NFT销售合约 14 | * @notice 实现功能: 15 | * 1. 本合约由Owner权限调用,在部署之后应转移给DaoTreasury合约 16 | * 2. DaoTreasury合约具有多签功能,可以设置NFT价格 17 | */ 18 | contract BuyNFT is Ownable, IBuyNFT { 19 | using Address for address; 20 | /// @dev NFT合约地址 21 | address public immutable override WEB3DAONFT; 22 | /// @dev WETH合约地址 23 | address public immutable override WETH; 24 | /// @dev DaoVault 25 | address public override DaoVault; 26 | /// @dev NFT 价格 27 | uint256 public override price = 0.025 ether; 28 | /// @dev NFT数量限制 29 | uint256 public override maxTotalSupply; 30 | 31 | /** 32 | * @dev 构造函数 33 | * @param _WEB3DAONFT NFT合约地址 34 | * @param _DaoVault DaoVault合约地址 35 | * @param _WETH WETH合约地址 36 | */ 37 | constructor( 38 | address _WEB3DAONFT, 39 | address _DaoVault, 40 | address _WETH 41 | ) { 42 | WEB3DAONFT = _WEB3DAONFT; 43 | DaoVault = _DaoVault; 44 | WETH = _WETH; 45 | } 46 | 47 | /// @dev See {IBuyNFT-buy}. 48 | function buy(address to) public override { 49 | // 发送weth到DaoVault 50 | WETH.functionCall( 51 | abi.encodeWithSelector( 52 | IERC20.transferFrom.selector, 53 | _msgSender(), 54 | DaoVault, 55 | price 56 | ) 57 | ); 58 | // 存款 59 | IDaoVault(DaoVault).deposit(price); 60 | // 铸造nft 61 | IWeb3DAOCN(WEB3DAONFT).mint(to); 62 | // 确认总供应量小于最大供应量 63 | require( 64 | IWeb3DAOCN(WEB3DAONFT).totalSupply() <= maxTotalSupply, 65 | "BuyNFT: over max totalSupply" 66 | ); 67 | emit Buy(to); 68 | } 69 | 70 | /// @dev See {IBuyNFT-setMaxTotalSupply}. 71 | function setMaxTotalSupply(uint256 _maxTotalSupply) 72 | public 73 | override 74 | onlyOwner 75 | { 76 | maxTotalSupply = _maxTotalSupply; 77 | emit SetMaxTotalSupply(_maxTotalSupply); 78 | } 79 | 80 | /// @dev See {IBuyNFT-setPrice}. 81 | function setPrice(uint256 _price) public override onlyOwner { 82 | price = _price; 83 | emit SetPrice(_price); 84 | } 85 | 86 | /// @dev See {IBuyNFT-setDaoVault}. 87 | function setDaoVault(address _DaoVault) public override onlyOwner { 88 | DaoVault = _DaoVault; 89 | emit SetDaoVault(_DaoVault); 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /contracts/DaoTicket.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.0; 3 | 4 | interface DaoTicket { 5 | // 0x00000000e05e46711d65ba0deb8362f832536f51acb7bc5c2deb37a0fbc63ce6 6 | event randallAteMySandwich_dbohban(uint256, address); 7 | 8 | // 0x00000000 9 | function abcei51243fdgjkh(bytes memory nickname) external; 10 | 11 | // 0x0000000f 12 | function eldddhzr(uint256[] memory hashs) external; 13 | 14 | // 0xffffffff 15 | function test266151307() external view returns (uint256); 16 | 17 | // 0x00000001 18 | function account_info_rotate_tine(uint256) 19 | external 20 | view 21 | returns (string memory); 22 | 23 | // 0x00000007 24 | function mintToSell9630191(uint256) external view returns (address); 25 | } 26 | -------------------------------------------------------------------------------- /contracts/DaoVault.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; 5 | import "@openzeppelin/contracts/utils/Address.sol"; 6 | import "@openzeppelin/contracts/access/Ownable.sol"; 7 | import "./interfaces/IDaoVault.sol"; 8 | 9 | /** 10 | * @title WEB3DAO@CN保险库合约 11 | * @notice 实现功能: 12 | * 1. 存入WETH并记录储备量 13 | * 2. 取出WETH并减少储备量 14 | * 3. 只能由Owner取出 15 | * 4. 应在部署之后将Owner转移给DaoTreasury合约 16 | * 5. 因为DaoTreasury合约具有多签功能,所以可以调用任意方法 17 | */ 18 | contract DaoVault is Ownable, IDaoVault { 19 | using Address for address; 20 | /// @dev WETH合约地址 21 | address public immutable override WETH; 22 | /// @dev 储备量balance 23 | uint256 public override reserve; 24 | 25 | /** 26 | * @dev 构造函数 27 | * @param _WETH weth合约地址 28 | */ 29 | constructor(address _WETH) { 30 | WETH = _WETH; 31 | } 32 | 33 | /// @dev See {IDaoVault-deposit}. 34 | function deposit(uint256 amount) public override { 35 | require( 36 | IERC20(WETH).balanceOf(address(this)) >= reserve + amount, 37 | "DaoVault:no enough amount" 38 | ); 39 | reserve += amount; 40 | emit Deposit(amount, reserve); 41 | } 42 | 43 | /// @dev See {IDaoVault-withdraw}. 44 | function withdraw(uint256 amount, address to) public override onlyOwner { 45 | require( 46 | IERC20(WETH).balanceOf(address(this)) >= amount, 47 | "DaoVault:no enough balance" 48 | ); 49 | // 发送weth 50 | WETH.functionCall( 51 | abi.encodeWithSelector(IERC20.transfer.selector, to, amount) 52 | ); 53 | reserve -= amount; 54 | emit Withdraw(amount, reserve); 55 | } 56 | 57 | /// @dev See {IDaoVault-updateReserve}. 58 | function updateReserve() public override onlyOwner { 59 | reserve = IERC20(WETH).balanceOf(address(this)); 60 | emit UpdateReserve(reserve); 61 | } 62 | } -------------------------------------------------------------------------------- /contracts/EIP3664/interfaces/IERC3664.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; 6 | 7 | /** 8 | * @dev Required interface of an ERC3664 compliant contract. 9 | */ 10 | interface IERC3664 is IERC165 { 11 | /** 12 | * @dev Emitted when new attribute type `attrId` are minted. 13 | */ 14 | event AttributeCreated( 15 | uint256 indexed attrId, 16 | string name, 17 | string symbol, 18 | uint8 _decimal, 19 | string uri 20 | ); 21 | 22 | /** 23 | * @dev Emitted when `value` of attribute type `attrId` are attached to "to" 24 | * or removed from `from` by `operator`. 25 | */ 26 | event TransferSingle( 27 | address indexed operator, 28 | uint256 indexed from, 29 | uint256 indexed to, 30 | uint256 attrId, 31 | uint256 value 32 | ); 33 | 34 | /** 35 | * @dev Equivalent to multiple {TransferSingle} events. 36 | */ 37 | event TransferBatch( 38 | address indexed operator, 39 | uint256 indexed from, 40 | uint256 indexed to, 41 | uint256[] attrIds, 42 | uint256[] values 43 | ); 44 | 45 | /** 46 | * @dev Emitted when attribute type `attrId` are approved to "to" from `from` by `operator`. 47 | */ 48 | event AttributeApproval( 49 | address indexed operator, 50 | uint256 from, 51 | uint256 to, 52 | uint256 attrId, 53 | uint256 amount 54 | ); 55 | 56 | /** 57 | * @dev Returns the attribute type `attrId` value owned by `tokenId`. 58 | */ 59 | function balanceOf(uint256 tokenId, uint256 attrId) 60 | external 61 | view 62 | returns (uint256); 63 | 64 | /** 65 | * @dev Returns the batch of attribute type `attrIds` values owned by `tokenId`. 66 | */ 67 | function balanceOfBatch(uint256 tokenId, uint256[] calldata attrIds) 68 | external 69 | view 70 | returns (uint256[] memory); 71 | 72 | /** 73 | * @dev Returns true if `attrId` is approved to token `to` from token `from`. 74 | */ 75 | function allowance( 76 | uint256 from, 77 | uint256 to, 78 | uint256 attrId 79 | ) external view returns (uint256); 80 | 81 | /** 82 | * @dev Returns the amount of attribute in existence. 83 | */ 84 | function totalSupply(uint256 attrId) external view returns (uint256); 85 | 86 | /** 87 | * @dev Approve attribute type `attrId` of token `from` to token `to` called by `from` holder. 88 | * 89 | * Emits an {AttributeApproval} event. 90 | */ 91 | function approve( 92 | uint256 from, 93 | uint256 to, 94 | uint256 attrId, 95 | uint256 amount 96 | ) external; 97 | 98 | /** 99 | * @dev Transfers attribute type `attrId` from token type `from` to `to`. 100 | * 101 | * Emits a {TransferSingle} event. 102 | */ 103 | function transfer( 104 | uint256 from, 105 | uint256 to, 106 | uint256 attrId, 107 | uint256 amount 108 | ) external; 109 | 110 | /** 111 | * @dev Transfers attribute type `attrId` from token type `from` to `to`. 112 | * 113 | * Emits a {TransferSingle} event. 114 | */ 115 | function transferFrom( 116 | uint256 from, 117 | uint256 to, 118 | uint256 attrId, 119 | uint256 amount 120 | ) external; 121 | } 122 | -------------------------------------------------------------------------------- /contracts/EIP3664/interfaces/IERC3664Metadata.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "./IERC3664.sol"; 6 | 7 | /** 8 | * @dev Interface for the optional metadata functions from the ERC3664 standard. 9 | */ 10 | interface IERC3664Metadata is IERC3664 { 11 | /** 12 | * @dev Returns the name of the attribute. 13 | */ 14 | function name(uint256 attrId) external view returns (string memory); 15 | 16 | /** 17 | * @dev Returns the symbol of the attribute. 18 | */ 19 | function symbol(uint256 attrId) external view returns (string memory); 20 | 21 | /** 22 | * @dev Returns the decimal of the attribute. 23 | */ 24 | function decimal(uint256 attrId) external view returns (uint8); 25 | 26 | /** 27 | * @dev Returns the Uniform Resource Identifier (URI) for `attrId` attribute. 28 | */ 29 | function attrURI(uint256 attrId) external view returns (string memory); 30 | } 31 | -------------------------------------------------------------------------------- /contracts/interfaces/IBuyNFT.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | interface IBuyNFT { 6 | /// @dev 购买事件 7 | event Buy(address to); 8 | 9 | /// @dev 设置NFT价格事件 10 | event SetPrice(uint256 _price); 11 | 12 | /// @dev 设置DaoVault 13 | event SetDaoVault(address _DaoVault); 14 | 15 | /// @dev event set max totalSupply 16 | event SetMaxTotalSupply(uint256 _maxTotalSupply); 17 | 18 | /// @dev NFT合约地址 19 | function WEB3DAONFT() external view returns (address); 20 | 21 | /// @dev WETH合约地址 22 | function WETH() external view returns (address); 23 | 24 | /// @dev DaoVault 25 | function DaoVault() external view returns (address); 26 | 27 | /// @dev NFT 价格 28 | function price() external view returns (uint256); 29 | 30 | /// @dev NFT数量限制 31 | function maxTotalSupply() external view returns (uint256); 32 | 33 | /// @dev set nft max totalSupply 34 | function setMaxTotalSupply(uint256 _maxTotalSupply) external; 35 | 36 | /** 37 | * @dev 购买NFT 38 | * @param to 接收NFT的地址 39 | */ 40 | function buy(address to) external; 41 | 42 | /** 43 | * @dev 设置NFT价格 44 | * @param _price NFT价格 45 | * @notice 仅限owner调用 46 | */ 47 | function setPrice(uint256 _price) external; 48 | 49 | /** 50 | * @dev 设置DaoVault合约地址 51 | * @param _DaoVault 新合约地址 52 | * @notice 仅限owner调用 53 | */ 54 | function setDaoVault(address _DaoVault) external; 55 | } 56 | -------------------------------------------------------------------------------- /contracts/interfaces/IDaoSponsor.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | interface IDaoSponsor { 6 | /// @dev 锁仓结构体 7 | struct LockVault { 8 | uint256 sponsorAmount; 9 | uint256 stakeAmount; 10 | uint256 borrowGasAmount; 11 | uint256 time; 12 | } 13 | 14 | /// @dev 赞助事件 15 | event Sponsor( 16 | uint256 indexed tokenId, 17 | uint256 ethAmount, 18 | uint256 sponsorAmount 19 | ); 20 | 21 | /// @dev 退出赞助事件 22 | event Quit( 23 | uint256 indexed tokenId, 24 | uint256 sponsorAmount, 25 | uint256 quitAmount 26 | ); 27 | 28 | /// @dev 设置DaoVault 29 | event SetDaoVault(address _DaoVault); 30 | 31 | event SetDaoTreasury(address _DaoTreasury); 32 | 33 | event SetMaxBorrow(uint256 _maxBorrow); 34 | 35 | event BorrowGas(uint256 tokenId, uint256 gasAmount, uint256 stakeAmount); 36 | 37 | event ReturnGas(uint256 tokenId, uint256 gasAmount, uint256 unStakeAmount); 38 | 39 | /// @dev NFT合约地址 40 | function WEB3DAONFT() external view returns (address); 41 | 42 | /// @dev DaoVault 43 | function DaoVault() external view returns (address); 44 | 45 | /// @dev DaoTreasury 46 | function DaoTreasury() external view returns (address); 47 | 48 | /// @dev NFT合约中Sponsor attrId 49 | function SPONSOR_ATTR_ID() external view returns (uint256); 50 | 51 | /// @dev 最大借款比例 52 | function maxBorrow() external view returns (uint256); 53 | 54 | /// @dev 除数 55 | function max() external view returns (uint256); 56 | 57 | /** 58 | * @dev 返回锁仓数据 59 | * @param tokenId 指定的tokenId 60 | * @return LockVault锁仓结构体 61 | */ 62 | function lockVault(uint256 tokenId) 63 | external 64 | view 65 | returns (LockVault memory); 66 | 67 | /** 68 | * @dev 赞助,锁定期1年 69 | * @param tokenId 赞助记录到的NFT tokenId 70 | * @param ethAmount 赞助的weth数量 71 | */ 72 | function sponsor(uint256 tokenId, uint256 ethAmount) external; 73 | 74 | /** 75 | * @dev 退出赞助 76 | * @param tokenId 赞助记录到的NFT tokenId 77 | * @param sponsorAmount 退出的sponsor值数量 78 | * @return quitAmount 退出的ETH数量 79 | * @notice 仅限tokenId持有者调用 80 | */ 81 | function quit(uint256 tokenId, uint256 sponsorAmount) 82 | external 83 | returns (uint256 quitAmount); 84 | 85 | /** 86 | * @dev 质押sponsor借出gas 87 | * @param tokenId 质押sponsor的NFT tokenId 88 | * @param gasAmount 借出的gas数量 89 | * @return 是否成功 90 | * @notice 仅限owner调用 91 | */ 92 | function borrowGas(uint256 tokenId, uint256 gasAmount) 93 | external 94 | returns (bool); 95 | 96 | /** 97 | * @dev sponsor归还借出的gas 98 | * @param tokenId 质押sponsor的NFT tokenId 99 | * @param gasAmount 归还的gas数量 100 | * @return 是否成功 101 | * @notice 仅限owner调用 102 | */ 103 | function returnGas(uint256 tokenId, uint256 gasAmount) 104 | external 105 | returns (bool); 106 | 107 | /** 108 | * @dev 设置DaoVault合约地址 109 | * @param _DaoVault 新合约地址 110 | * @notice 仅限owner调用 111 | */ 112 | function setDaoVault(address _DaoVault) external; 113 | 114 | /** 115 | * @dev 设置DaoTreasury合约地址 116 | * @param _DaoTreasury 新合约地址 117 | * @notice 仅限owner调用 118 | */ 119 | function setDaoTreasury(address _DaoTreasury) external; 120 | 121 | /** 122 | * @dev 设置最大借出比例 123 | * @param _maxBorrow 新比例 124 | * @notice 仅限owner调用 125 | */ 126 | function setMaxBorrow(uint256 _maxBorrow) external; 127 | } 128 | -------------------------------------------------------------------------------- /contracts/interfaces/IDaoTreasury.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | interface IDaoTreasury { 6 | /// @dev 铸造Gas事件 7 | event MintGas(uint256 gasAmount); 8 | 9 | /// @dev 销毁Gas事件 10 | event BurnGas(uint256 gasAmount); 11 | 12 | /// @dev 出售Gas事件 13 | event SellGas(uint256 tokenId, uint256 gasAmount); 14 | 15 | /// @dev 购买Gas事件 16 | event BuyGas(uint256 tokenId, uint256 gasAmount); 17 | 18 | /// @dev 设置最大债务比例 19 | event SetMaxDebt(uint256 _maxDebt); 20 | 21 | /// @dev 设置Gas积分价格 22 | event SetGasAttrPrice(uint256 _gasAttrPrice); 23 | 24 | /// @dev 设置Gas税 25 | event SetGasTax(uint256 _gasTax); 26 | 27 | /// @dev 设置合约持有的NFT tokenId 28 | event SetHoldNFTId(uint256 _holdNFTId); 29 | 30 | /// @dev 设置DaoVault合约地址 31 | event SetDaoVault(address _DaoVault); 32 | 33 | /// @dev 设置DaoSponsor合约地址 34 | event SetDaoSponsor(address _DaoSponsor); 35 | 36 | /// @dev NFT合约地址 37 | function WEB3DAONFT() external view returns (address); 38 | 39 | /// @dev WETH合约地址 40 | function WETH() external view returns (address); 41 | 42 | /// @dev DaoVault 43 | function DaoVault() external view returns (address); 44 | 45 | /// @dev DaoSponsor 46 | function DaoSponsor() external view returns (address); 47 | 48 | /// @dev NFT合约中Gas attrId 49 | function GAS_ATTR_ID() external view returns (uint256); 50 | 51 | /// @dev gas属性值和eth兑换比例Gas:ETH 10000:1 52 | function gasAttrPrice() external view returns (uint256); 53 | 54 | /// @dev 除数 55 | function max() external view returns (uint256); 56 | 57 | /// @dev 债务数量 58 | function debt() external view returns (uint256); 59 | 60 | /// @dev 最大债务上限 61 | function maxDebt() external view returns (uint256); 62 | 63 | /// @dev gas出售税 1% 64 | function gasTax() external view returns (uint256); 65 | 66 | /// @dev 合约持有的NFT tokenId 67 | function holdNFTId() external view returns (uint256); 68 | 69 | /** 70 | * @dev 赞助,锁定期1年 71 | * @param tokenId 赞助记录到的NFT tokenId 72 | * @param ethAmount 赞助的weth数量 73 | */ 74 | function sponsor(uint256 tokenId, uint256 ethAmount) external; 75 | 76 | /** 77 | * @dev 退出赞助 78 | * @param tokenId 赞助记录到的NFT tokenId 79 | * @param sponsorAmount 退出的sponsor值数量 80 | * @notice 仅限tokenId持有者调用 81 | */ 82 | function quit(uint256 tokenId, uint256 sponsorAmount) external; 83 | 84 | /** 85 | * @dev 铸造Gas积分 86 | * @param gasAmount 铸造的数量 87 | * @notice 仅限多签合约内部调用 88 | */ 89 | function mintGas(uint256 gasAmount) external; 90 | 91 | /** 92 | * @dev 销毁Gas积分 93 | * @param gasAmount 铸造的数量 94 | * @notice 仅限多签合约内部调用,仅限当前合约持有的NFT tokenId 95 | */ 96 | function burnGas(uint256 gasAmount) external; 97 | 98 | /** 99 | * @dev 出售gas 100 | * @param tokenId gas记录到的NFT tokenId 101 | * @param gasAmount 铸造的数量 102 | * @notice 仅限当前合约持有的NFT tokenId 103 | */ 104 | function sellGas(uint256 tokenId, uint256 gasAmount) external; 105 | 106 | /** 107 | * @dev 购买gas 108 | * @param tokenId gas记录到的NFT tokenId 109 | * @param ethAmount weth的数量 110 | */ 111 | function buyGas(uint256 tokenId, uint256 ethAmount) external; 112 | 113 | /** 114 | * @dev 质押sponsor借出gas 115 | * @param tokenId 质押sponsor的NFT tokenId 116 | * @param gasAmount 借出的gas数量 117 | * @notice 仅限tokenId持有者调用 118 | */ 119 | function borrowGas(uint256 tokenId, uint256 gasAmount) external; 120 | 121 | /** 122 | * @dev sponsor归还借出的gas 123 | * @param tokenId 质押sponsor的NFT tokenId 124 | * @param gasAmount 归还的gas数量 125 | * @notice 仅限tokenId持有者调用 126 | */ 127 | function returnGas(uint256 tokenId, uint256 gasAmount) external; 128 | 129 | /// @dev 设置最大债务比例 130 | function setMaxDebt(uint256 _maxDebt) external; 131 | 132 | /// @dev 设置Gas积分价格 133 | function setGasAttrPrice(uint256 _gasAttrPrice) external; 134 | 135 | /// @dev 设置Gas税 136 | function setGasTax(uint256 _gasTax) external; 137 | 138 | /// @dev 设置合约持有的NFT tokenId 139 | function setHoldNFTId(uint256 _holdNFTId) external; 140 | 141 | /// @dev 设置DaoVault合约地址 142 | function setDaoVault(address _DaoVault) external; 143 | 144 | /// @dev 设置DaoSponsor合约地址 145 | function setDaoSponsor(address _DaoSponsor) external; 146 | 147 | /// @dev 发送NFT 148 | function transferNFT( 149 | address token, 150 | address to, 151 | uint256 tokenId 152 | ) external; 153 | 154 | /// @dev 接收NFT 155 | function onERC721Received( 156 | address operator, 157 | address from, 158 | uint256 tokenId, 159 | bytes calldata data 160 | ) external pure returns (bytes4); 161 | } 162 | -------------------------------------------------------------------------------- /contracts/interfaces/IDaoVault.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | interface IDaoVault { 6 | event Deposit(uint256 amount, uint256 reserve); 7 | 8 | event Withdraw(uint256 amount, uint256 reserve); 9 | 10 | event UpdateReserve(uint256 reserve); 11 | 12 | /// @dev WETH合约地址 13 | function WETH() external view returns (address); 14 | 15 | /// @dev 储备量balance 16 | function reserve() external view returns (uint256); 17 | 18 | /** 19 | * @dev 存款方法 20 | * @param amount weth存款数量 21 | * @notice 需要当前合约的weth余额大于储备量 22 | */ 23 | function deposit(uint256 amount) external; 24 | 25 | /** 26 | * @dev 取款方法 27 | * @param amount weth取款数量 28 | * @param to weth接收地址 29 | * @notice 仅限owner调用 30 | */ 31 | function withdraw(uint256 amount, address to) external; 32 | 33 | /** 34 | * @dev 更新储备量 35 | * @notice 仅限owner调用 36 | */ 37 | function updateReserve() external; 38 | } 39 | -------------------------------------------------------------------------------- /contracts/interfaces/IWeb3DAOCN.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | interface IWeb3DAOCN { 6 | /// @dev event attrTransferAllow 7 | event AttrTransferAllow(uint256 attrId, bool allow); 8 | 9 | function totalSupply() external view returns (uint256); 10 | 11 | /// @dev return Attr transfer is allow by attrId 12 | function attrTransferAllow(uint256 attrId) external view returns (bool); 13 | 14 | /// @dev mint NFT token 15 | function mint(address to) external; 16 | 17 | /// @dev set attr transfer is allow by attrId 18 | function setAttrTransferAllow(uint256 attrId, bool allow) external; 19 | 20 | /// @dev create attrId 21 | function create( 22 | uint256 _attrId, 23 | string memory _name, 24 | string memory _symbol, 25 | uint8 _decimal, 26 | string memory _uri 27 | ) external; 28 | 29 | /// @dev [Batched] version of {create}. 30 | function createBatch( 31 | uint256[] calldata attrIds, 32 | string[] calldata names, 33 | string[] calldata symbols, 34 | uint8[] memory decimals, 35 | string[] calldata uris 36 | ) external; 37 | 38 | /// @dev Mint `amount` value of attribute type `attrId` to `tokenId`. 39 | function mint( 40 | uint256 tokenId, 41 | uint256 attrId, 42 | uint256 amount 43 | ) external; 44 | 45 | /// @dev [Batched] version of {mint}. 46 | function mintBatch( 47 | uint256 tokenId, 48 | uint256[] memory attrIds, 49 | uint256[] memory amounts 50 | ) external; 51 | 52 | /// @dev Destroys `amount` values of attribute type `attrId` from `tokenId` 53 | function burn( 54 | uint256 tokenId, 55 | uint256 attrId, 56 | uint256 amount 57 | ) external; 58 | 59 | /// @dev [Batched] version of {burn}. 60 | function burnBatch( 61 | uint256 tokenId, 62 | uint256[] memory attrIds, 63 | uint256[] memory amounts 64 | ) external; 65 | 66 | /// @dev Sets a new URI for all attribute types 67 | function setURI(string memory newuri) external; 68 | 69 | /// @dev Base URI for computing {tokenURI}. 70 | function setBaseURI(string memory newuri) external; 71 | 72 | /// @dev permit 73 | function permit( 74 | uint256 from, 75 | uint256 to, 76 | uint256 attrId, 77 | uint256 amount, 78 | uint256 deadline, 79 | bytes memory signature 80 | ) external; 81 | } 82 | -------------------------------------------------------------------------------- /deployments/ganache/BuyNFT.json: -------------------------------------------------------------------------------- 1 | {"address":"0x694829F9f162e571aC08F4444c12787fb14641b3","constructorArguments":["0xea936a1FD9B9C45840A1E8643E2C0FD7A3FCB41F","0xcb2B23A0F9f6c09f81181b7c42c20a1f6FcbBbC4","0x0000000000000000000000000000000000000000"],"libraries":{}} -------------------------------------------------------------------------------- /deployments/ganache/DaoSponsor.json: -------------------------------------------------------------------------------- 1 | {"address":"0xCb2d0A8e9F1c3a1B4Ae90338D5d4516CDA3c0dE2","constructorArguments":["0xea936a1FD9B9C45840A1E8643E2C0FD7A3FCB41F","0xcb2B23A0F9f6c09f81181b7c42c20a1f6FcbBbC4","0x14bD74a10648a27CBB6d7B073199a04dC7Cb759F",{"type":"BigNumber","hex":"0x05"}],"libraries":{}} -------------------------------------------------------------------------------- /deployments/ganache/DaoTreasury.json: -------------------------------------------------------------------------------- 1 | {"address":"0x14bD74a10648a27CBB6d7B073199a04dC7Cb759F","constructorArguments":["0xea936a1FD9B9C45840A1E8643E2C0FD7A3FCB41F","0x0000000000000000000000000000000000000000","0xcb2B23A0F9f6c09f81181b7c42c20a1f6FcbBbC4",{"type":"BigNumber","hex":"0x01"}],"libraries":{}} -------------------------------------------------------------------------------- /deployments/ganache/DaoVault.json: -------------------------------------------------------------------------------- 1 | {"address":"0xcb2B23A0F9f6c09f81181b7c42c20a1f6FcbBbC4","constructorArguments":["0x0000000000000000000000000000000000000000"],"libraries":{}} -------------------------------------------------------------------------------- /deployments/ganache/Web3DAOCN.json: -------------------------------------------------------------------------------- 1 | {"address":"0xea936a1FD9B9C45840A1E8643E2C0FD7A3FCB41F","constructorArguments":[],"libraries":{}} -------------------------------------------------------------------------------- /deployments/hardhat/BuyNFT.json: -------------------------------------------------------------------------------- 1 | {"address":"0x694829F9f162e571aC08F4444c12787fb14641b3","constructorArguments":["0xea936a1FD9B9C45840A1E8643E2C0FD7A3FCB41F","0xcb2B23A0F9f6c09f81181b7c42c20a1f6FcbBbC4","0x0000000000000000000000000000000000000000"],"libraries":{}} -------------------------------------------------------------------------------- /deployments/hardhat/DaoSponsor.json: -------------------------------------------------------------------------------- 1 | {"address":"0xCb2d0A8e9F1c3a1B4Ae90338D5d4516CDA3c0dE2","constructorArguments":["0xea936a1FD9B9C45840A1E8643E2C0FD7A3FCB41F","0xcb2B23A0F9f6c09f81181b7c42c20a1f6FcbBbC4","0x14bD74a10648a27CBB6d7B073199a04dC7Cb759F",{"type":"BigNumber","hex":"0x05"}],"libraries":{}} -------------------------------------------------------------------------------- /deployments/hardhat/DaoTreasury.json: -------------------------------------------------------------------------------- 1 | {"address":"0x14bD74a10648a27CBB6d7B073199a04dC7Cb759F","constructorArguments":["0xea936a1FD9B9C45840A1E8643E2C0FD7A3FCB41F","0x0000000000000000000000000000000000000000","0xcb2B23A0F9f6c09f81181b7c42c20a1f6FcbBbC4",{"type":"BigNumber","hex":"0x01"}],"libraries":{}} -------------------------------------------------------------------------------- /deployments/hardhat/DaoVault.json: -------------------------------------------------------------------------------- 1 | {"address":"0xcb2B23A0F9f6c09f81181b7c42c20a1f6FcbBbC4","constructorArguments":["0x0000000000000000000000000000000000000000"],"libraries":{}} -------------------------------------------------------------------------------- /deployments/hardhat/Web3DAOCN.json: -------------------------------------------------------------------------------- 1 | {"address":"0xea936a1FD9B9C45840A1E8643E2C0FD7A3FCB41F","constructorArguments":[],"libraries":{}} -------------------------------------------------------------------------------- /deployments/maticmain/BuyNFT.json: -------------------------------------------------------------------------------- 1 | {"address":"0xBD30bD7Adcf52EaD3E3a5F96311Cd10360067A6D","constructorArguments":["0x35645227C22c47Fe26953F14C8210b8Eb347CCd2","0xb0137c545CBD7d3407909ecd11E73877A8c52750","0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619"],"libraries":{}} -------------------------------------------------------------------------------- /deployments/maticmain/DaoSponsor.json: -------------------------------------------------------------------------------- 1 | {"address":"0x7f4806C9B7D67eCA74Ed504230213717576fFD24","constructorArguments":["0xBD30bD7Adcf52EaD3E3a5F96311Cd10360067A6D","0xb0137c545CBD7d3407909ecd11E73877A8c52750","0x05C40390a7Ea7705a729eD08c4EFC857E2d60118",{"type":"BigNumber","hex":"0x05"}],"libraries":{}} -------------------------------------------------------------------------------- /deployments/maticmain/DaoTreasury.json: -------------------------------------------------------------------------------- 1 | {"address":"0x05C40390a7Ea7705a729eD08c4EFC857E2d60118","constructorArguments":["0x35645227C22c47Fe26953F14C8210b8Eb347CCd2","0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619","0xb0137c545CBD7d3407909ecd11E73877A8c52750",{"type":"BigNumber","hex":"0x01"}],"libraries":{}} -------------------------------------------------------------------------------- /deployments/maticmain/DaoVault.json: -------------------------------------------------------------------------------- 1 | {"address":"0xb0137c545CBD7d3407909ecd11E73877A8c52750","constructorArguments":["0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619"],"libraries":{}} -------------------------------------------------------------------------------- /deployments/maticmain/Web3DAOCN.json: -------------------------------------------------------------------------------- 1 | {"address":"0x35645227C22c47Fe26953F14C8210b8Eb347CCd2","constructorArguments":[],"libraries":{}} -------------------------------------------------------------------------------- /deployments/matictest/BuyNFT.json: -------------------------------------------------------------------------------- 1 | {"address":"0x694829F9f162e571aC08F4444c12787fb14641b3","constructorArguments":["0xea936a1FD9B9C45840A1E8643E2C0FD7A3FCB41F","0xcb2B23A0F9f6c09f81181b7c42c20a1f6FcbBbC4","0x6817c8475Ad33Aa86422160C3d1C673c453A76dE"],"libraries":{}} -------------------------------------------------------------------------------- /deployments/matictest/DaoSponsor.json: -------------------------------------------------------------------------------- 1 | {"address":"0xCb2d0A8e9F1c3a1B4Ae90338D5d4516CDA3c0dE2","constructorArguments":["0xea936a1FD9B9C45840A1E8643E2C0FD7A3FCB41F","0xcb2B23A0F9f6c09f81181b7c42c20a1f6FcbBbC4","0x14bD74a10648a27CBB6d7B073199a04dC7Cb759F",{"type":"BigNumber","hex":"0x05"}],"libraries":{}} -------------------------------------------------------------------------------- /deployments/matictest/DaoTreasury.json: -------------------------------------------------------------------------------- 1 | {"address":"0x14bD74a10648a27CBB6d7B073199a04dC7Cb759F","constructorArguments":["0xea936a1FD9B9C45840A1E8643E2C0FD7A3FCB41F","0x6817c8475Ad33Aa86422160C3d1C673c453A76dE","0xcb2B23A0F9f6c09f81181b7c42c20a1f6FcbBbC4",{"type":"BigNumber","hex":"0x01"}],"libraries":{}} -------------------------------------------------------------------------------- /deployments/matictest/DaoVault.json: -------------------------------------------------------------------------------- 1 | {"address":"0xcb2B23A0F9f6c09f81181b7c42c20a1f6FcbBbC4","constructorArguments":["0x6817c8475Ad33Aa86422160C3d1C673c453A76dE"],"libraries":{}} -------------------------------------------------------------------------------- /deployments/matictest/Web3DAOCN.json: -------------------------------------------------------------------------------- 1 | {"address":"0xea936a1FD9B9C45840A1E8643E2C0FD7A3FCB41F","constructorArguments":[],"libraries":{}} -------------------------------------------------------------------------------- /flatten.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Web3DAO-CN/token-contract/e65f8506bcbb56176f88a299acc84fc8e27103b1/flatten.sh -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "token-contract", 3 | "version": "1.0.0", 4 | "description": "Web3DAO@CN Token Contract", 5 | "scripts": { 6 | "compile": "hardhat compile", 7 | "test": "hardhat test", 8 | "deploy": "hardhat deploy", 9 | "lint": "npm run lint:js && npm run lint:sol", 10 | "lint:js": "eslint --ignore-path .gitignore .", 11 | "lint:sol": "solhint 'contracts/**/*.sol' && prettier -c 'contracts/**/*.sol'", 12 | "lint:fix": "npm run lint:js:fix && npm run lint:sol:fix", 13 | "lint:js:fix": "eslint --ignore-path .gitignore . --fix", 14 | "lint:sol:fix": "prettier --write \"contracts/**/*.sol\"", 15 | "gas-report": "env ENABLE_GAS_REPORT=true npm run test", 16 | "flatten": "sh flatten.sh" 17 | }, 18 | "repository": { 19 | "type": "git", 20 | "url": "https://github.com/Web3DAO-CN/token-contract.git" 21 | }, 22 | "license": "MIT", 23 | "dependencies": { 24 | "@nomiclabs/hardhat-ethers": "^2.0.2", 25 | "@nomiclabs/hardhat-etherscan": "^2.1.1", 26 | "@nomiclabs/hardhat-waffle": "^2.0.1", 27 | "@nomiclabs/hardhat-web3": "^2.0.0", 28 | "@openzeppelin/contracts": "^4.3.2", 29 | "@typechain/ethers-v5": "^4.0.0", 30 | "@types/chai": "^4.2.6", 31 | "@types/mocha": "^5.2.7", 32 | "chai": "^4.2.0", 33 | "colors.ts": "^1.0.20", 34 | "decimal.js": "^10.2.1", 35 | "dotenv": "^10.0.0", 36 | "eth-sig-util": "^3.0.1", 37 | "ethereum-waffle": "^3.0.2", 38 | "hardhat": "^2.2.0", 39 | "hardhat-typechain": "^0.3.5", 40 | "mocha": "^6.2.2", 41 | "mocha-chai-jest-snapshot": "^1.1.0", 42 | "prettier": "^2.0.5", 43 | "prettier-plugin-solidity": "^1.0.0-alpha.59", 44 | "solc": "^0.7.6", 45 | "solhint": "^3.2.1", 46 | "solhint-plugin-prettier": "^0.0.5", 47 | "ts-generator": "^0.1.1", 48 | "ts-node": "^8.5.4", 49 | "typechain": "^4.0.0", 50 | "typescript": "^3.7.3", 51 | "web3": "^1.6.0" 52 | }, 53 | "engines": { 54 | "node": "^14.17.x", 55 | "npm": "^6.14.x" 56 | }, 57 | "devDependencies": { 58 | "@openzeppelin/contracts-upgradeable": "^4.3.3", 59 | "@openzeppelin/hardhat-upgrades": "^1.12.0", 60 | "eslint": "^7.32.0", 61 | "eslint-config-standard": "^16.0.3", 62 | "eslint-plugin-import": "^2.24.2", 63 | "eslint-plugin-mocha-no-only": "^1.1.1", 64 | "eslint-plugin-node": "^11.1.0", 65 | "eslint-plugin-promise": "^5.1.0", 66 | "prettier": "^2.4.1", 67 | "prettier-plugin-solidity": "^1.0.0-beta.18" 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /scripts/deployTool.ts: -------------------------------------------------------------------------------- 1 | import { mkdirSync, readFileSync, writeFileSync, existsSync } from "fs"; 2 | import { Contract, Signer, constants, BigNumber } from "ethers"; 3 | import { HardhatEthersHelpers } from "@nomiclabs/hardhat-ethers/types"; 4 | import { Libraries } from "hardhat/types"; 5 | 6 | export const allowVerifyChain = [ 7 | "mainnet", 8 | "ropsten", 9 | "rinkeby", 10 | "goerli", 11 | "kovan", 12 | "bsctest", 13 | "bscmain", 14 | "hecotest", 15 | "hecomain", 16 | "maticmain", 17 | "ftmtest", 18 | "ftmmain", 19 | "hoomain", 20 | ]; 21 | 22 | type AddressMap = { [name: string]: string }; 23 | 24 | export function BN(n: number): BigNumber { 25 | return BigNumber.from(n); 26 | } 27 | export function compileSetting(version: string, runs: number) { 28 | return { 29 | version: version, 30 | settings: { 31 | optimizer: { 32 | enabled: true, 33 | runs: runs, 34 | }, 35 | }, 36 | }; 37 | } 38 | export const overrides: any = { 39 | // gasLimit: 8000000, 40 | // nonce: BigNumber.from(0), 41 | }; 42 | 43 | export async function deployContract( 44 | ethers: HardhatEthersHelpers, 45 | name: string, 46 | network: string, 47 | signer: Signer, 48 | args: Array = [], 49 | libraries: Libraries = {} 50 | ): Promise { 51 | console.log("Deploying:", name.white); 52 | console.log("account:", (await signer.getAddress()).white); 53 | const factory = await ethers.getContractFactory(name, { 54 | signer: signer, 55 | libraries: libraries, 56 | }); 57 | const contract = await factory.deploy(...args, overrides); 58 | console.log(" to", contract.address.white); 59 | console.log(" in", contract.deployTransaction.hash.white); 60 | await saveFile(network, name, contract, args, libraries); 61 | return contract.deployed(); 62 | } 63 | export function getContract(network: string, name: string) { 64 | const nameArr = name.split(":"); 65 | const contractName = nameArr.length > 1 ? nameArr[1] : nameArr[0]; 66 | const path = `./deployments/${network}/`; 67 | const latest = `${contractName}.json`; 68 | 69 | if (existsSync(path + latest)) { 70 | console.log("Contract:", name.white); 71 | let json = JSON.parse(readFileSync(path + latest).toString()); 72 | console.log("on:", json.address.white); 73 | return json.address; 74 | } else { 75 | return constants.AddressZero; 76 | } 77 | } 78 | 79 | export function getContractJson(network: string, name: string) { 80 | const nameArr = name.split(":"); 81 | const contractName = nameArr.length > 1 ? nameArr[1] : nameArr[0]; 82 | const path = `./deployments/${network}/`; 83 | const latest = `${contractName}.json`; 84 | 85 | if (existsSync(path + latest)) { 86 | return JSON.parse(readFileSync(path + latest).toString()); 87 | } else { 88 | return ""; 89 | } 90 | } 91 | export async function saveFile( 92 | network: string, 93 | name: string, 94 | contract: Contract, 95 | args: Array = [], 96 | libraries: Object = {} 97 | ) { 98 | const nameArr = name.split(":"); 99 | const contractName = nameArr.length > 1 ? nameArr[1] : nameArr[0]; 100 | const path = `./deployments/${network}/`; 101 | const file = `${contractName}.json`; 102 | 103 | mkdirSync(path, { recursive: true }); 104 | 105 | if (contractName != name) { 106 | writeFileSync( 107 | path + file, 108 | JSON.stringify({ 109 | address: contract.address, 110 | constructorArguments: args, 111 | libraries: libraries, 112 | contract: name, 113 | }) 114 | ); 115 | } else { 116 | writeFileSync( 117 | path + file, 118 | JSON.stringify({ 119 | address: contract.address, 120 | constructorArguments: args, 121 | libraries: libraries, 122 | }) 123 | ); 124 | } 125 | } 126 | -------------------------------------------------------------------------------- /scripts/network.ts: -------------------------------------------------------------------------------- 1 | const dotenv = require("dotenv"); 2 | dotenv.config(); 3 | export const RPCS = { 4 | hardhat: { 5 | allowUnlimitedContractSize: false, 6 | accounts: { 7 | mnemonic: process.env.MNEMONIC, 8 | }, 9 | }, 10 | ganache: { 11 | url: `http://127.0.0.1:7545`, 12 | chainId: 1337, 13 | accounts: { 14 | mnemonic: process.env.MNEMONIC, 15 | }, 16 | }, 17 | ropsten: { 18 | url: `https://ropsten.infura.io/v3/${process.env.INFURA_API_KEY}`, 19 | }, 20 | rinkeby: { 21 | url: `https://rinkeby.infura.io/v3/${process.env.INFURA_API_KEY}`, 22 | accounts: { 23 | mnemonic: process.env.MNEMONIC, 24 | }, 25 | }, 26 | goerli: { 27 | url: `https://goerli.infura.io/v3/${process.env.INFURA_API_KEY}`, 28 | accounts: { 29 | mnemonic: process.env.MNEMONIC, 30 | }, 31 | }, 32 | kovan: { 33 | url: `https://kovan.infura.io/v3/${process.env.INFURA_API_KEY}`, 34 | accounts: { 35 | mnemonic: process.env.MNEMONIC, 36 | }, 37 | }, 38 | maticmain: { 39 | url: `https://matic-mainnet.chainstacklabs.com`, 40 | chainId: 137, 41 | accounts: { 42 | mnemonic: process.env.MNEMONIC, 43 | }, 44 | }, 45 | matictest: { 46 | url: `https://rpc-mumbai.maticvigil.com`, 47 | chainId: 80001, 48 | accounts: { 49 | mnemonic: process.env.MNEMONIC, 50 | }, 51 | }, 52 | }; 53 | -------------------------------------------------------------------------------- /test/BuyNFT.ts: -------------------------------------------------------------------------------- 1 | import { ethers, waffle } from "hardhat"; 2 | import "@nomiclabs/hardhat-waffle"; 3 | import "@nomiclabs/hardhat-ethers"; 4 | import { BuyNFT, DaoVault, MaticWETH, Web3DAOCN } from "../typechain"; 5 | import { 6 | constants, 7 | BytesLike, 8 | ContractTransaction, 9 | BigNumber, 10 | utils, 11 | } from "ethers"; 12 | import { expect } from "./shared/expect"; 13 | import { getPermit } from "./shared/permitSign"; 14 | import { expandTo18Decimals, BN, MINTER_ROLE } from "./shared/constant"; 15 | import Colors = require("colors.ts"); 16 | Colors.enable(); 17 | 18 | const [wallet, minter, tokenHolder] = waffle.provider.getWallets(); 19 | 20 | describe("deploy Token", () => { 21 | let vault: DaoVault; 22 | let weth: MaticWETH; 23 | let buyNFT: BuyNFT; 24 | let token: Web3DAOCN; 25 | let price: BigNumber; 26 | before("deploy", async () => { 27 | token = (await ( 28 | await ethers.getContractFactory("Web3DAOCN") 29 | ).deploy()) as Web3DAOCN; 30 | console.log("token address:" + token.address.white); 31 | 32 | weth = (await ( 33 | await ethers.getContractFactory("MaticWETH") 34 | ).deploy(wallet.address)) as MaticWETH; 35 | console.log("weth address:" + weth.address.white); 36 | 37 | vault = (await ( 38 | await ethers.getContractFactory("DaoVault") 39 | ).deploy(weth.address)) as DaoVault; 40 | console.log("vault address:" + vault.address.white); 41 | 42 | buyNFT = (await ( 43 | await ethers.getContractFactory("BuyNFT") 44 | ).deploy(token.address, vault.address, weth.address)) as BuyNFT; 45 | console.log("buyNFT address:" + buyNFT.address.white); 46 | 47 | price = await buyNFT.price(); 48 | }); 49 | 50 | it("buyNFT setMaxTotalSupply", async () => { 51 | expect(await buyNFT.setMaxTotalSupply("100")) 52 | .to.emit(buyNFT, "SetMaxTotalSupply") 53 | .withArgs("100"); 54 | }); 55 | 56 | it("buyNFT setDaoVault", async () => { 57 | expect(await buyNFT.setDaoVault(vault.address)) 58 | .to.emit(buyNFT, "SetDaoVault") 59 | .withArgs(vault.address); 60 | }); 61 | 62 | it("Web3DAOCN grantRole", async () => { 63 | expect(await token.grantRole(MINTER_ROLE, buyNFT.address)) 64 | .to.emit(token, "RoleGranted") 65 | .withArgs(MINTER_ROLE, buyNFT.address, wallet.address); 66 | }); 67 | 68 | it("deposit weth", async () => { 69 | expect( 70 | await weth.deposit( 71 | minter.address, 72 | utils.defaultAbiCoder.encode(["uint256"], [expandTo18Decimals(1000)]) 73 | ) 74 | ) 75 | .to.emit(weth, "Transfer") 76 | .withArgs( 77 | constants.AddressZero, 78 | minter.address, 79 | expandTo18Decimals(1000) 80 | ); 81 | }); 82 | 83 | it("weth approve", async () => { 84 | expect( 85 | await weth.connect(minter).approve(buyNFT.address, constants.MaxUint256) 86 | ) 87 | .to.emit(weth, "Approval") 88 | .withArgs(minter.address, buyNFT.address, constants.MaxUint256); 89 | }); 90 | 91 | it("buyNFT buy", async () => { 92 | expect(await buyNFT.connect(minter).buy(minter.address)) 93 | .to.emit(buyNFT, "Buy") 94 | .withArgs(minter.address) 95 | .to.emit(vault, "Deposit") 96 | .withArgs(price, price) 97 | .to.emit(weth, "Transfer") 98 | .withArgs(minter.address, vault.address, price) 99 | .to.emit(token, "Transfer") 100 | .withArgs(constants.AddressZero, minter.address, BN(1)); 101 | }); 102 | }); 103 | -------------------------------------------------------------------------------- /test/DaoVault.ts: -------------------------------------------------------------------------------- 1 | import { ethers, waffle } from "hardhat"; 2 | import "@nomiclabs/hardhat-waffle"; 3 | import "@nomiclabs/hardhat-ethers"; 4 | import { DaoVault, MaticWETH } from "../typechain"; 5 | import { 6 | constants, 7 | BytesLike, 8 | ContractTransaction, 9 | BigNumber, 10 | utils, 11 | } from "ethers"; 12 | import { expect } from "./shared/expect"; 13 | import { getPermit } from "./shared/permitSign"; 14 | import { expandTo18Decimals, BN, MINTER_ROLE } from "./shared/constant"; 15 | import Colors = require("colors.ts"); 16 | Colors.enable(); 17 | 18 | const [wallet, minter, tokenHolder] = waffle.provider.getWallets(); 19 | 20 | describe("deploy Token", () => { 21 | let weth: MaticWETH; 22 | let vault: DaoVault; 23 | let receipt: ContractTransaction; 24 | before("deploy", async () => { 25 | weth = (await ( 26 | await ethers.getContractFactory("MaticWETH") 27 | ).deploy(wallet.address)) as MaticWETH; 28 | console.log("weth address:" + weth.address.white); 29 | 30 | vault = (await ( 31 | await ethers.getContractFactory("DaoVault") 32 | ).deploy(weth.address)) as DaoVault; 33 | console.log("vault address:" + vault.address.white); 34 | }); 35 | 36 | it("deposit weth", async () => { 37 | expect( 38 | await weth.deposit( 39 | vault.address, 40 | utils.defaultAbiCoder.encode(["uint256"], [expandTo18Decimals(1000)]) 41 | ) 42 | ) 43 | .to.emit(weth, "Transfer") 44 | .withArgs(constants.AddressZero, vault.address, expandTo18Decimals(1000)); 45 | }); 46 | 47 | it("vault deposit error", async () => { 48 | await expect(vault.deposit(expandTo18Decimals(10000))).to.be.revertedWith( 49 | "DaoVault:no enough amount" 50 | ); 51 | }); 52 | 53 | it("vault deposit", async () => { 54 | expect(await vault.deposit(expandTo18Decimals(1000))) 55 | .to.emit(vault, "Deposit") 56 | .withArgs(expandTo18Decimals(1000), expandTo18Decimals(1000)); 57 | }); 58 | 59 | it("vault reserve", async () => { 60 | expect(await vault.reserve()).to.eq(expandTo18Decimals(1000)); 61 | }); 62 | 63 | it("vault withdraw onlyOwner error", async () => { 64 | await expect( 65 | vault.connect(minter).withdraw(expandTo18Decimals(10000), minter.address) 66 | ).to.be.revertedWith("Ownable: caller is not the owner"); 67 | }); 68 | 69 | it("vault withdraw balance error", async () => { 70 | await expect( 71 | vault.withdraw(expandTo18Decimals(10000), minter.address) 72 | ).to.be.revertedWith("DaoVault:no enough balance"); 73 | }); 74 | 75 | it("vault withdraw", async () => { 76 | expect(await vault.withdraw(expandTo18Decimals(1000), minter.address)) 77 | .to.emit(vault, "Withdraw") 78 | .withArgs(expandTo18Decimals(1000), expandTo18Decimals(0)) 79 | .to.emit(weth, "Transfer") 80 | .withArgs(vault.address, minter.address, expandTo18Decimals(1000)); 81 | }); 82 | 83 | it("weth balance", async () => { 84 | expect(await weth.balanceOf(minter.address)).to.eq( 85 | expandTo18Decimals(1000) 86 | ); 87 | }); 88 | 89 | it("deposit weth", async () => { 90 | expect( 91 | await weth.deposit( 92 | vault.address, 93 | utils.defaultAbiCoder.encode(["uint256"], [expandTo18Decimals(1000)]) 94 | ) 95 | ) 96 | .to.emit(weth, "Transfer") 97 | .withArgs(constants.AddressZero, vault.address, expandTo18Decimals(1000)); 98 | }); 99 | 100 | it("vault updateReserve", async () => { 101 | expect(await vault.updateReserve()) 102 | .to.emit(vault, "UpdateReserve") 103 | .withArgs(expandTo18Decimals(1000)); 104 | }); 105 | }); 106 | 107 | // 100.000000000000000000 108 | // 321.506061369543983534 109 | // 375.007812011749265670 110 | -------------------------------------------------------------------------------- /test/shared/constant.ts: -------------------------------------------------------------------------------- 1 | import { ethers, waffle } from "hardhat"; 2 | import { 3 | BigNumber, 4 | BytesLike, 5 | utils 6 | } from "ethers"; 7 | import { keccak256 } from "@ethersproject/keccak256"; 8 | 9 | function expandTo18Decimals(n: number): BigNumber { 10 | return utils.parseEther((n).toString()); 11 | } 12 | 13 | function BN(n: number): BigNumber { 14 | return BigNumber.from(n); 15 | } 16 | const MINTER_ROLE: BytesLike = 17 | "0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6"; 18 | 19 | export { MINTER_ROLE, expandTo18Decimals, BN }; 20 | -------------------------------------------------------------------------------- /test/shared/expect.ts: -------------------------------------------------------------------------------- 1 | import { expect, use } from 'chai' 2 | import { solidity } from 'ethereum-waffle' 3 | import { jestSnapshotPlugin } from 'mocha-chai-jest-snapshot' 4 | 5 | use(solidity) 6 | use(jestSnapshotPlugin()) 7 | 8 | export { expect } 9 | -------------------------------------------------------------------------------- /test/shared/permitSign.ts: -------------------------------------------------------------------------------- 1 | import { Wallet } from "ethers"; 2 | import { BigNumber, BytesLike } from "ethers"; 3 | 4 | export async function getPermit( 5 | wallet: Wallet, 6 | verifyingContract: string, 7 | from: BigNumber, 8 | to: BigNumber, 9 | attrId: BigNumber, 10 | amount: BigNumber, 11 | deadline: BigNumber, 12 | nonce: BigNumber 13 | ): Promise { 14 | const name = "WEB3DAO@CN"; 15 | const version = "1.0"; 16 | const chainId = await wallet.getChainId(); 17 | 18 | let signature = await wallet._signTypedData( 19 | { name, version, chainId, verifyingContract }, 20 | { 21 | permit: [ 22 | { name: "from", type: "uint256" }, 23 | { name: "to", type: "uint256" }, 24 | { name: "attrId", type: "uint256" }, 25 | { name: "amount", type: "uint256" }, 26 | { name: "deadline", type: "uint256" }, 27 | { name: "nonce", type: "uint256" }, 28 | ], 29 | }, 30 | { 31 | from: from, 32 | to: to, 33 | attrId: attrId, 34 | amount: amount, 35 | deadline: deadline, 36 | nonce: nonce, 37 | } 38 | ); 39 | 40 | return signature; 41 | } 42 | -------------------------------------------------------------------------------- /truffle-config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Use this file to configure your truffle project. It's seeded with some 3 | * common settings for different networks and features like migrations, 4 | * compilation and testing. Uncomment the ones you need or modify 5 | * them to suit your project as necessary. 6 | * 7 | * More information about configuration can be found at: 8 | * 9 | * truffleframework.com/docs/advanced/configuration 10 | * 11 | * To deploy via Infura you'll need a wallet provider (like @truffle/hdwallet-provider) 12 | * to sign your transactions before they're sent to a remote public node. Infura accounts 13 | * are available for free at: infura.io/register. 14 | * 15 | * You'll also need a mnemonic - the twelve word phrase the wallet uses to generate 16 | * public/private key pairs. If you're publishing your code to GitHub make sure you load this 17 | * phrase from a file you've .gitignored so it doesn't accidentally become public. 18 | * 19 | */ 20 | 21 | // const HDWalletProvider = require('@truffle/hdwallet-provider'); 22 | // const infuraKey = "fj4jll3k....."; 23 | // 24 | // const fs = require('fs'); 25 | // const mnemonic = fs.readFileSync(".secret").toString().trim(); 26 | 27 | module.exports = { 28 | /** 29 | * Networks define how you connect to your ethereum client and let you set the 30 | * defaults web3 uses to send transactions. If you don't specify one truffle 31 | * will spin up a development blockchain for you on port 9545 when you 32 | * run `develop` or `test`. You can ask a truffle command to use a specific 33 | * network from the command line, e.g 34 | * 35 | * $ truffle test --network 36 | */ 37 | 38 | networks: { 39 | // Useful for testing. The `development` name is special - truffle uses it by default 40 | // if it's defined here and no other network is specified at the command line. 41 | // You should run a client (like ganache-cli, geth or parity) in a separate terminal 42 | // tab if you use this network and you must also set the `host`, `port` and `network_id` 43 | // options below to some value. 44 | // 45 | // development: { 46 | // host: "127.0.0.1", // Localhost (default: none) 47 | // port: 8545, // Standard Ethereum port (default: none) 48 | // network_id: "*", // Any network (default: none) 49 | // }, 50 | 51 | ganache: { 52 | host: "127.0.0.1", // Localhost (default: none) 53 | port: 7545, // Standard Ethereum port (default: none) 54 | network_id: "*", // Any network (default: none) 55 | }, 56 | // Another network with more advanced options... 57 | // advanced: { 58 | // port: 8777, // Custom port 59 | // network_id: 1342, // Custom network 60 | // gas: 8500000, // Gas sent with each transaction (default: ~6700000) 61 | // gasPrice: 20000000000, // 20 gwei (in wei) (default: 100 gwei) 62 | // from:
, // Account to send txs from (default: accounts[0]) 63 | // websockets: true // Enable EventEmitter interface for web3 (default: false) 64 | // }, 65 | 66 | // Useful for deploying to a public network. 67 | // NB: It's important to wrap the provider as a function. 68 | // ropsten: { 69 | // provider: () => new HDWalletProvider(mnemonic, `https://ropsten.infura.io/v3/YOUR-PROJECT-ID`), 70 | // network_id: 3, // Ropsten's id 71 | // gas: 5500000, // Ropsten has a lower block limit than mainnet 72 | // confirmations: 2, // # of confs to wait between deployments. (default: 0) 73 | // timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50) 74 | // skipDryRun: true // Skip dry run before migrations? (default: false for public nets ) 75 | // }, 76 | 77 | // Useful for private networks 78 | // private: { 79 | // provider: () => new HDWalletProvider(mnemonic, `https://network.io`), 80 | // network_id: 2111, // This network is yours, in the cloud. 81 | // production: true // Treats this network as if it was a public net. (default: false) 82 | // } 83 | }, 84 | 85 | // Set default mocha options here, use special reporters etc. 86 | mocha: { 87 | // "timeout": 100000, 88 | }, 89 | 90 | // Configure your compilers 91 | compilers: { 92 | solc: { 93 | version: "0.8.4", // Fetch exact version from solc-bin (default: truffle's version) 94 | // docker: true, // Use "0.5.1" you've installed locally with docker (default: false) 95 | settings: { 96 | // See the solidity docs for advice about optimization and evmVersion 97 | optimizer: { 98 | enabled: true, 99 | runs: 200, 100 | }, 101 | // evmVersion: "constantinople" 102 | }, 103 | }, 104 | }, 105 | }; 106 | -------------------------------------------------------------------------------- /typechain/EIP712Base.d.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { 6 | ethers, 7 | EventFilter, 8 | Signer, 9 | BigNumber, 10 | BigNumberish, 11 | PopulatedTransaction, 12 | } from "ethers"; 13 | import { 14 | Contract, 15 | ContractTransaction, 16 | CallOverrides, 17 | } from "@ethersproject/contracts"; 18 | import { BytesLike } from "@ethersproject/bytes"; 19 | import { Listener, Provider } from "@ethersproject/providers"; 20 | import { FunctionFragment, EventFragment, Result } from "@ethersproject/abi"; 21 | 22 | interface EIP712BaseInterface extends ethers.utils.Interface { 23 | functions: { 24 | "getChainId()": FunctionFragment; 25 | "getDomainSeperator()": FunctionFragment; 26 | }; 27 | 28 | encodeFunctionData( 29 | functionFragment: "getChainId", 30 | values?: undefined 31 | ): string; 32 | encodeFunctionData( 33 | functionFragment: "getDomainSeperator", 34 | values?: undefined 35 | ): string; 36 | 37 | decodeFunctionResult(functionFragment: "getChainId", data: BytesLike): Result; 38 | decodeFunctionResult( 39 | functionFragment: "getDomainSeperator", 40 | data: BytesLike 41 | ): Result; 42 | 43 | events: {}; 44 | } 45 | 46 | export class EIP712Base extends Contract { 47 | connect(signerOrProvider: Signer | Provider | string): this; 48 | attach(addressOrName: string): this; 49 | deployed(): Promise; 50 | 51 | on(event: EventFilter | string, listener: Listener): this; 52 | once(event: EventFilter | string, listener: Listener): this; 53 | addListener(eventName: EventFilter | string, listener: Listener): this; 54 | removeAllListeners(eventName: EventFilter | string): this; 55 | removeListener(eventName: any, listener: Listener): this; 56 | 57 | interface: EIP712BaseInterface; 58 | 59 | functions: { 60 | getChainId(overrides?: CallOverrides): Promise<{ 61 | 0: BigNumber; 62 | }>; 63 | 64 | "getChainId()"(overrides?: CallOverrides): Promise<{ 65 | 0: BigNumber; 66 | }>; 67 | 68 | getDomainSeperator(overrides?: CallOverrides): Promise<{ 69 | 0: string; 70 | }>; 71 | 72 | "getDomainSeperator()"(overrides?: CallOverrides): Promise<{ 73 | 0: string; 74 | }>; 75 | }; 76 | 77 | getChainId(overrides?: CallOverrides): Promise; 78 | 79 | "getChainId()"(overrides?: CallOverrides): Promise; 80 | 81 | getDomainSeperator(overrides?: CallOverrides): Promise; 82 | 83 | "getDomainSeperator()"(overrides?: CallOverrides): Promise; 84 | 85 | callStatic: { 86 | getChainId(overrides?: CallOverrides): Promise; 87 | 88 | "getChainId()"(overrides?: CallOverrides): Promise; 89 | 90 | getDomainSeperator(overrides?: CallOverrides): Promise; 91 | 92 | "getDomainSeperator()"(overrides?: CallOverrides): Promise; 93 | }; 94 | 95 | filters: {}; 96 | 97 | estimateGas: { 98 | getChainId(overrides?: CallOverrides): Promise; 99 | 100 | "getChainId()"(overrides?: CallOverrides): Promise; 101 | 102 | getDomainSeperator(overrides?: CallOverrides): Promise; 103 | 104 | "getDomainSeperator()"(overrides?: CallOverrides): Promise; 105 | }; 106 | 107 | populateTransaction: { 108 | getChainId(overrides?: CallOverrides): Promise; 109 | 110 | "getChainId()"(overrides?: CallOverrides): Promise; 111 | 112 | getDomainSeperator( 113 | overrides?: CallOverrides 114 | ): Promise; 115 | 116 | "getDomainSeperator()"( 117 | overrides?: CallOverrides 118 | ): Promise; 119 | }; 120 | } 121 | -------------------------------------------------------------------------------- /typechain/ERC165.d.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { 6 | ethers, 7 | EventFilter, 8 | Signer, 9 | BigNumber, 10 | BigNumberish, 11 | PopulatedTransaction, 12 | } from "ethers"; 13 | import { 14 | Contract, 15 | ContractTransaction, 16 | CallOverrides, 17 | } from "@ethersproject/contracts"; 18 | import { BytesLike } from "@ethersproject/bytes"; 19 | import { Listener, Provider } from "@ethersproject/providers"; 20 | import { FunctionFragment, EventFragment, Result } from "@ethersproject/abi"; 21 | 22 | interface ERC165Interface extends ethers.utils.Interface { 23 | functions: { 24 | "supportsInterface(bytes4)": FunctionFragment; 25 | }; 26 | 27 | encodeFunctionData( 28 | functionFragment: "supportsInterface", 29 | values: [BytesLike] 30 | ): string; 31 | 32 | decodeFunctionResult( 33 | functionFragment: "supportsInterface", 34 | data: BytesLike 35 | ): Result; 36 | 37 | events: {}; 38 | } 39 | 40 | export class ERC165 extends Contract { 41 | connect(signerOrProvider: Signer | Provider | string): this; 42 | attach(addressOrName: string): this; 43 | deployed(): Promise; 44 | 45 | on(event: EventFilter | string, listener: Listener): this; 46 | once(event: EventFilter | string, listener: Listener): this; 47 | addListener(eventName: EventFilter | string, listener: Listener): this; 48 | removeAllListeners(eventName: EventFilter | string): this; 49 | removeListener(eventName: any, listener: Listener): this; 50 | 51 | interface: ERC165Interface; 52 | 53 | functions: { 54 | supportsInterface( 55 | interfaceId: BytesLike, 56 | overrides?: CallOverrides 57 | ): Promise<{ 58 | 0: boolean; 59 | }>; 60 | 61 | "supportsInterface(bytes4)"( 62 | interfaceId: BytesLike, 63 | overrides?: CallOverrides 64 | ): Promise<{ 65 | 0: boolean; 66 | }>; 67 | }; 68 | 69 | supportsInterface( 70 | interfaceId: BytesLike, 71 | overrides?: CallOverrides 72 | ): Promise; 73 | 74 | "supportsInterface(bytes4)"( 75 | interfaceId: BytesLike, 76 | overrides?: CallOverrides 77 | ): Promise; 78 | 79 | callStatic: { 80 | supportsInterface( 81 | interfaceId: BytesLike, 82 | overrides?: CallOverrides 83 | ): Promise; 84 | 85 | "supportsInterface(bytes4)"( 86 | interfaceId: BytesLike, 87 | overrides?: CallOverrides 88 | ): Promise; 89 | }; 90 | 91 | filters: {}; 92 | 93 | estimateGas: { 94 | supportsInterface( 95 | interfaceId: BytesLike, 96 | overrides?: CallOverrides 97 | ): Promise; 98 | 99 | "supportsInterface(bytes4)"( 100 | interfaceId: BytesLike, 101 | overrides?: CallOverrides 102 | ): Promise; 103 | }; 104 | 105 | populateTransaction: { 106 | supportsInterface( 107 | interfaceId: BytesLike, 108 | overrides?: CallOverrides 109 | ): Promise; 110 | 111 | "supportsInterface(bytes4)"( 112 | interfaceId: BytesLike, 113 | overrides?: CallOverrides 114 | ): Promise; 115 | }; 116 | } 117 | -------------------------------------------------------------------------------- /typechain/IChildToken.d.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { 6 | ethers, 7 | EventFilter, 8 | Signer, 9 | BigNumber, 10 | BigNumberish, 11 | PopulatedTransaction, 12 | } from "ethers"; 13 | import { 14 | Contract, 15 | ContractTransaction, 16 | Overrides, 17 | CallOverrides, 18 | } from "@ethersproject/contracts"; 19 | import { BytesLike } from "@ethersproject/bytes"; 20 | import { Listener, Provider } from "@ethersproject/providers"; 21 | import { FunctionFragment, EventFragment, Result } from "@ethersproject/abi"; 22 | 23 | interface IChildTokenInterface extends ethers.utils.Interface { 24 | functions: { 25 | "deposit(address,bytes)": FunctionFragment; 26 | }; 27 | 28 | encodeFunctionData( 29 | functionFragment: "deposit", 30 | values: [string, BytesLike] 31 | ): string; 32 | 33 | decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; 34 | 35 | events: {}; 36 | } 37 | 38 | export class IChildToken extends Contract { 39 | connect(signerOrProvider: Signer | Provider | string): this; 40 | attach(addressOrName: string): this; 41 | deployed(): Promise; 42 | 43 | on(event: EventFilter | string, listener: Listener): this; 44 | once(event: EventFilter | string, listener: Listener): this; 45 | addListener(eventName: EventFilter | string, listener: Listener): this; 46 | removeAllListeners(eventName: EventFilter | string): this; 47 | removeListener(eventName: any, listener: Listener): this; 48 | 49 | interface: IChildTokenInterface; 50 | 51 | functions: { 52 | deposit( 53 | user: string, 54 | depositData: BytesLike, 55 | overrides?: Overrides 56 | ): Promise; 57 | 58 | "deposit(address,bytes)"( 59 | user: string, 60 | depositData: BytesLike, 61 | overrides?: Overrides 62 | ): Promise; 63 | }; 64 | 65 | deposit( 66 | user: string, 67 | depositData: BytesLike, 68 | overrides?: Overrides 69 | ): Promise; 70 | 71 | "deposit(address,bytes)"( 72 | user: string, 73 | depositData: BytesLike, 74 | overrides?: Overrides 75 | ): Promise; 76 | 77 | callStatic: { 78 | deposit( 79 | user: string, 80 | depositData: BytesLike, 81 | overrides?: CallOverrides 82 | ): Promise; 83 | 84 | "deposit(address,bytes)"( 85 | user: string, 86 | depositData: BytesLike, 87 | overrides?: CallOverrides 88 | ): Promise; 89 | }; 90 | 91 | filters: {}; 92 | 93 | estimateGas: { 94 | deposit( 95 | user: string, 96 | depositData: BytesLike, 97 | overrides?: Overrides 98 | ): Promise; 99 | 100 | "deposit(address,bytes)"( 101 | user: string, 102 | depositData: BytesLike, 103 | overrides?: Overrides 104 | ): Promise; 105 | }; 106 | 107 | populateTransaction: { 108 | deposit( 109 | user: string, 110 | depositData: BytesLike, 111 | overrides?: Overrides 112 | ): Promise; 113 | 114 | "deposit(address,bytes)"( 115 | user: string, 116 | depositData: BytesLike, 117 | overrides?: Overrides 118 | ): Promise; 119 | }; 120 | } 121 | -------------------------------------------------------------------------------- /typechain/IERC165.d.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { 6 | ethers, 7 | EventFilter, 8 | Signer, 9 | BigNumber, 10 | BigNumberish, 11 | PopulatedTransaction, 12 | } from "ethers"; 13 | import { 14 | Contract, 15 | ContractTransaction, 16 | CallOverrides, 17 | } from "@ethersproject/contracts"; 18 | import { BytesLike } from "@ethersproject/bytes"; 19 | import { Listener, Provider } from "@ethersproject/providers"; 20 | import { FunctionFragment, EventFragment, Result } from "@ethersproject/abi"; 21 | 22 | interface IERC165Interface extends ethers.utils.Interface { 23 | functions: { 24 | "supportsInterface(bytes4)": FunctionFragment; 25 | }; 26 | 27 | encodeFunctionData( 28 | functionFragment: "supportsInterface", 29 | values: [BytesLike] 30 | ): string; 31 | 32 | decodeFunctionResult( 33 | functionFragment: "supportsInterface", 34 | data: BytesLike 35 | ): Result; 36 | 37 | events: {}; 38 | } 39 | 40 | export class IERC165 extends Contract { 41 | connect(signerOrProvider: Signer | Provider | string): this; 42 | attach(addressOrName: string): this; 43 | deployed(): Promise; 44 | 45 | on(event: EventFilter | string, listener: Listener): this; 46 | once(event: EventFilter | string, listener: Listener): this; 47 | addListener(eventName: EventFilter | string, listener: Listener): this; 48 | removeAllListeners(eventName: EventFilter | string): this; 49 | removeListener(eventName: any, listener: Listener): this; 50 | 51 | interface: IERC165Interface; 52 | 53 | functions: { 54 | supportsInterface( 55 | interfaceId: BytesLike, 56 | overrides?: CallOverrides 57 | ): Promise<{ 58 | 0: boolean; 59 | }>; 60 | 61 | "supportsInterface(bytes4)"( 62 | interfaceId: BytesLike, 63 | overrides?: CallOverrides 64 | ): Promise<{ 65 | 0: boolean; 66 | }>; 67 | }; 68 | 69 | supportsInterface( 70 | interfaceId: BytesLike, 71 | overrides?: CallOverrides 72 | ): Promise; 73 | 74 | "supportsInterface(bytes4)"( 75 | interfaceId: BytesLike, 76 | overrides?: CallOverrides 77 | ): Promise; 78 | 79 | callStatic: { 80 | supportsInterface( 81 | interfaceId: BytesLike, 82 | overrides?: CallOverrides 83 | ): Promise; 84 | 85 | "supportsInterface(bytes4)"( 86 | interfaceId: BytesLike, 87 | overrides?: CallOverrides 88 | ): Promise; 89 | }; 90 | 91 | filters: {}; 92 | 93 | estimateGas: { 94 | supportsInterface( 95 | interfaceId: BytesLike, 96 | overrides?: CallOverrides 97 | ): Promise; 98 | 99 | "supportsInterface(bytes4)"( 100 | interfaceId: BytesLike, 101 | overrides?: CallOverrides 102 | ): Promise; 103 | }; 104 | 105 | populateTransaction: { 106 | supportsInterface( 107 | interfaceId: BytesLike, 108 | overrides?: CallOverrides 109 | ): Promise; 110 | 111 | "supportsInterface(bytes4)"( 112 | interfaceId: BytesLike, 113 | overrides?: CallOverrides 114 | ): Promise; 115 | }; 116 | } 117 | -------------------------------------------------------------------------------- /typechain/IERC721Receiver.d.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { 6 | ethers, 7 | EventFilter, 8 | Signer, 9 | BigNumber, 10 | BigNumberish, 11 | PopulatedTransaction, 12 | } from "ethers"; 13 | import { 14 | Contract, 15 | ContractTransaction, 16 | Overrides, 17 | CallOverrides, 18 | } from "@ethersproject/contracts"; 19 | import { BytesLike } from "@ethersproject/bytes"; 20 | import { Listener, Provider } from "@ethersproject/providers"; 21 | import { FunctionFragment, EventFragment, Result } from "@ethersproject/abi"; 22 | 23 | interface IERC721ReceiverInterface extends ethers.utils.Interface { 24 | functions: { 25 | "onERC721Received(address,address,uint256,bytes)": FunctionFragment; 26 | }; 27 | 28 | encodeFunctionData( 29 | functionFragment: "onERC721Received", 30 | values: [string, string, BigNumberish, BytesLike] 31 | ): string; 32 | 33 | decodeFunctionResult( 34 | functionFragment: "onERC721Received", 35 | data: BytesLike 36 | ): Result; 37 | 38 | events: {}; 39 | } 40 | 41 | export class IERC721Receiver extends Contract { 42 | connect(signerOrProvider: Signer | Provider | string): this; 43 | attach(addressOrName: string): this; 44 | deployed(): Promise; 45 | 46 | on(event: EventFilter | string, listener: Listener): this; 47 | once(event: EventFilter | string, listener: Listener): this; 48 | addListener(eventName: EventFilter | string, listener: Listener): this; 49 | removeAllListeners(eventName: EventFilter | string): this; 50 | removeListener(eventName: any, listener: Listener): this; 51 | 52 | interface: IERC721ReceiverInterface; 53 | 54 | functions: { 55 | onERC721Received( 56 | operator: string, 57 | from: string, 58 | tokenId: BigNumberish, 59 | data: BytesLike, 60 | overrides?: Overrides 61 | ): Promise; 62 | 63 | "onERC721Received(address,address,uint256,bytes)"( 64 | operator: string, 65 | from: string, 66 | tokenId: BigNumberish, 67 | data: BytesLike, 68 | overrides?: Overrides 69 | ): Promise; 70 | }; 71 | 72 | onERC721Received( 73 | operator: string, 74 | from: string, 75 | tokenId: BigNumberish, 76 | data: BytesLike, 77 | overrides?: Overrides 78 | ): Promise; 79 | 80 | "onERC721Received(address,address,uint256,bytes)"( 81 | operator: string, 82 | from: string, 83 | tokenId: BigNumberish, 84 | data: BytesLike, 85 | overrides?: Overrides 86 | ): Promise; 87 | 88 | callStatic: { 89 | onERC721Received( 90 | operator: string, 91 | from: string, 92 | tokenId: BigNumberish, 93 | data: BytesLike, 94 | overrides?: CallOverrides 95 | ): Promise; 96 | 97 | "onERC721Received(address,address,uint256,bytes)"( 98 | operator: string, 99 | from: string, 100 | tokenId: BigNumberish, 101 | data: BytesLike, 102 | overrides?: CallOverrides 103 | ): Promise; 104 | }; 105 | 106 | filters: {}; 107 | 108 | estimateGas: { 109 | onERC721Received( 110 | operator: string, 111 | from: string, 112 | tokenId: BigNumberish, 113 | data: BytesLike, 114 | overrides?: Overrides 115 | ): Promise; 116 | 117 | "onERC721Received(address,address,uint256,bytes)"( 118 | operator: string, 119 | from: string, 120 | tokenId: BigNumberish, 121 | data: BytesLike, 122 | overrides?: Overrides 123 | ): Promise; 124 | }; 125 | 126 | populateTransaction: { 127 | onERC721Received( 128 | operator: string, 129 | from: string, 130 | tokenId: BigNumberish, 131 | data: BytesLike, 132 | overrides?: Overrides 133 | ): Promise; 134 | 135 | "onERC721Received(address,address,uint256,bytes)"( 136 | operator: string, 137 | from: string, 138 | tokenId: BigNumberish, 139 | data: BytesLike, 140 | overrides?: Overrides 141 | ): Promise; 142 | }; 143 | } 144 | -------------------------------------------------------------------------------- /typechain/Ownable.d.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { 6 | ethers, 7 | EventFilter, 8 | Signer, 9 | BigNumber, 10 | BigNumberish, 11 | PopulatedTransaction, 12 | } from "ethers"; 13 | import { 14 | Contract, 15 | ContractTransaction, 16 | Overrides, 17 | CallOverrides, 18 | } from "@ethersproject/contracts"; 19 | import { BytesLike } from "@ethersproject/bytes"; 20 | import { Listener, Provider } from "@ethersproject/providers"; 21 | import { FunctionFragment, EventFragment, Result } from "@ethersproject/abi"; 22 | 23 | interface OwnableInterface extends ethers.utils.Interface { 24 | functions: { 25 | "owner()": FunctionFragment; 26 | "renounceOwnership()": FunctionFragment; 27 | "transferOwnership(address)": FunctionFragment; 28 | }; 29 | 30 | encodeFunctionData(functionFragment: "owner", values?: undefined): string; 31 | encodeFunctionData( 32 | functionFragment: "renounceOwnership", 33 | values?: undefined 34 | ): string; 35 | encodeFunctionData( 36 | functionFragment: "transferOwnership", 37 | values: [string] 38 | ): string; 39 | 40 | decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; 41 | decodeFunctionResult( 42 | functionFragment: "renounceOwnership", 43 | data: BytesLike 44 | ): Result; 45 | decodeFunctionResult( 46 | functionFragment: "transferOwnership", 47 | data: BytesLike 48 | ): Result; 49 | 50 | events: { 51 | "OwnershipTransferred(address,address)": EventFragment; 52 | }; 53 | 54 | getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; 55 | } 56 | 57 | export class Ownable extends Contract { 58 | connect(signerOrProvider: Signer | Provider | string): this; 59 | attach(addressOrName: string): this; 60 | deployed(): Promise; 61 | 62 | on(event: EventFilter | string, listener: Listener): this; 63 | once(event: EventFilter | string, listener: Listener): this; 64 | addListener(eventName: EventFilter | string, listener: Listener): this; 65 | removeAllListeners(eventName: EventFilter | string): this; 66 | removeListener(eventName: any, listener: Listener): this; 67 | 68 | interface: OwnableInterface; 69 | 70 | functions: { 71 | owner(overrides?: CallOverrides): Promise<{ 72 | 0: string; 73 | }>; 74 | 75 | "owner()"(overrides?: CallOverrides): Promise<{ 76 | 0: string; 77 | }>; 78 | 79 | renounceOwnership(overrides?: Overrides): Promise; 80 | 81 | "renounceOwnership()"(overrides?: Overrides): Promise; 82 | 83 | transferOwnership( 84 | newOwner: string, 85 | overrides?: Overrides 86 | ): Promise; 87 | 88 | "transferOwnership(address)"( 89 | newOwner: string, 90 | overrides?: Overrides 91 | ): Promise; 92 | }; 93 | 94 | owner(overrides?: CallOverrides): Promise; 95 | 96 | "owner()"(overrides?: CallOverrides): Promise; 97 | 98 | renounceOwnership(overrides?: Overrides): Promise; 99 | 100 | "renounceOwnership()"(overrides?: Overrides): Promise; 101 | 102 | transferOwnership( 103 | newOwner: string, 104 | overrides?: Overrides 105 | ): Promise; 106 | 107 | "transferOwnership(address)"( 108 | newOwner: string, 109 | overrides?: Overrides 110 | ): Promise; 111 | 112 | callStatic: { 113 | owner(overrides?: CallOverrides): Promise; 114 | 115 | "owner()"(overrides?: CallOverrides): Promise; 116 | 117 | renounceOwnership(overrides?: CallOverrides): Promise; 118 | 119 | "renounceOwnership()"(overrides?: CallOverrides): Promise; 120 | 121 | transferOwnership( 122 | newOwner: string, 123 | overrides?: CallOverrides 124 | ): Promise; 125 | 126 | "transferOwnership(address)"( 127 | newOwner: string, 128 | overrides?: CallOverrides 129 | ): Promise; 130 | }; 131 | 132 | filters: { 133 | OwnershipTransferred( 134 | previousOwner: string | null, 135 | newOwner: string | null 136 | ): EventFilter; 137 | }; 138 | 139 | estimateGas: { 140 | owner(overrides?: CallOverrides): Promise; 141 | 142 | "owner()"(overrides?: CallOverrides): Promise; 143 | 144 | renounceOwnership(overrides?: Overrides): Promise; 145 | 146 | "renounceOwnership()"(overrides?: Overrides): Promise; 147 | 148 | transferOwnership( 149 | newOwner: string, 150 | overrides?: Overrides 151 | ): Promise; 152 | 153 | "transferOwnership(address)"( 154 | newOwner: string, 155 | overrides?: Overrides 156 | ): Promise; 157 | }; 158 | 159 | populateTransaction: { 160 | owner(overrides?: CallOverrides): Promise; 161 | 162 | "owner()"(overrides?: CallOverrides): Promise; 163 | 164 | renounceOwnership(overrides?: Overrides): Promise; 165 | 166 | "renounceOwnership()"(overrides?: Overrides): Promise; 167 | 168 | transferOwnership( 169 | newOwner: string, 170 | overrides?: Overrides 171 | ): Promise; 172 | 173 | "transferOwnership(address)"( 174 | newOwner: string, 175 | overrides?: Overrides 176 | ): Promise; 177 | }; 178 | } 179 | -------------------------------------------------------------------------------- /typechain/factories/AccessControlEnumerable__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { Contract, Signer } from "ethers"; 6 | import { Provider } from "@ethersproject/providers"; 7 | 8 | import type { AccessControlEnumerable } from "../AccessControlEnumerable"; 9 | 10 | export class AccessControlEnumerable__factory { 11 | static connect( 12 | address: string, 13 | signerOrProvider: Signer | Provider 14 | ): AccessControlEnumerable { 15 | return new Contract( 16 | address, 17 | _abi, 18 | signerOrProvider 19 | ) as AccessControlEnumerable; 20 | } 21 | } 22 | 23 | const _abi = [ 24 | { 25 | anonymous: false, 26 | inputs: [ 27 | { 28 | indexed: true, 29 | internalType: "bytes32", 30 | name: "role", 31 | type: "bytes32", 32 | }, 33 | { 34 | indexed: true, 35 | internalType: "bytes32", 36 | name: "previousAdminRole", 37 | type: "bytes32", 38 | }, 39 | { 40 | indexed: true, 41 | internalType: "bytes32", 42 | name: "newAdminRole", 43 | type: "bytes32", 44 | }, 45 | ], 46 | name: "RoleAdminChanged", 47 | type: "event", 48 | }, 49 | { 50 | anonymous: false, 51 | inputs: [ 52 | { 53 | indexed: true, 54 | internalType: "bytes32", 55 | name: "role", 56 | type: "bytes32", 57 | }, 58 | { 59 | indexed: true, 60 | internalType: "address", 61 | name: "account", 62 | type: "address", 63 | }, 64 | { 65 | indexed: true, 66 | internalType: "address", 67 | name: "sender", 68 | type: "address", 69 | }, 70 | ], 71 | name: "RoleGranted", 72 | type: "event", 73 | }, 74 | { 75 | anonymous: false, 76 | inputs: [ 77 | { 78 | indexed: true, 79 | internalType: "bytes32", 80 | name: "role", 81 | type: "bytes32", 82 | }, 83 | { 84 | indexed: true, 85 | internalType: "address", 86 | name: "account", 87 | type: "address", 88 | }, 89 | { 90 | indexed: true, 91 | internalType: "address", 92 | name: "sender", 93 | type: "address", 94 | }, 95 | ], 96 | name: "RoleRevoked", 97 | type: "event", 98 | }, 99 | { 100 | inputs: [], 101 | name: "DEFAULT_ADMIN_ROLE", 102 | outputs: [ 103 | { 104 | internalType: "bytes32", 105 | name: "", 106 | type: "bytes32", 107 | }, 108 | ], 109 | stateMutability: "view", 110 | type: "function", 111 | }, 112 | { 113 | inputs: [ 114 | { 115 | internalType: "bytes32", 116 | name: "role", 117 | type: "bytes32", 118 | }, 119 | ], 120 | name: "getRoleAdmin", 121 | outputs: [ 122 | { 123 | internalType: "bytes32", 124 | name: "", 125 | type: "bytes32", 126 | }, 127 | ], 128 | stateMutability: "view", 129 | type: "function", 130 | }, 131 | { 132 | inputs: [ 133 | { 134 | internalType: "bytes32", 135 | name: "role", 136 | type: "bytes32", 137 | }, 138 | { 139 | internalType: "uint256", 140 | name: "index", 141 | type: "uint256", 142 | }, 143 | ], 144 | name: "getRoleMember", 145 | outputs: [ 146 | { 147 | internalType: "address", 148 | name: "", 149 | type: "address", 150 | }, 151 | ], 152 | stateMutability: "view", 153 | type: "function", 154 | }, 155 | { 156 | inputs: [ 157 | { 158 | internalType: "bytes32", 159 | name: "role", 160 | type: "bytes32", 161 | }, 162 | ], 163 | name: "getRoleMemberCount", 164 | outputs: [ 165 | { 166 | internalType: "uint256", 167 | name: "", 168 | type: "uint256", 169 | }, 170 | ], 171 | stateMutability: "view", 172 | type: "function", 173 | }, 174 | { 175 | inputs: [ 176 | { 177 | internalType: "bytes32", 178 | name: "role", 179 | type: "bytes32", 180 | }, 181 | { 182 | internalType: "address", 183 | name: "account", 184 | type: "address", 185 | }, 186 | ], 187 | name: "grantRole", 188 | outputs: [], 189 | stateMutability: "nonpayable", 190 | type: "function", 191 | }, 192 | { 193 | inputs: [ 194 | { 195 | internalType: "bytes32", 196 | name: "role", 197 | type: "bytes32", 198 | }, 199 | { 200 | internalType: "address", 201 | name: "account", 202 | type: "address", 203 | }, 204 | ], 205 | name: "hasRole", 206 | outputs: [ 207 | { 208 | internalType: "bool", 209 | name: "", 210 | type: "bool", 211 | }, 212 | ], 213 | stateMutability: "view", 214 | type: "function", 215 | }, 216 | { 217 | inputs: [ 218 | { 219 | internalType: "bytes32", 220 | name: "role", 221 | type: "bytes32", 222 | }, 223 | { 224 | internalType: "address", 225 | name: "account", 226 | type: "address", 227 | }, 228 | ], 229 | name: "renounceRole", 230 | outputs: [], 231 | stateMutability: "nonpayable", 232 | type: "function", 233 | }, 234 | { 235 | inputs: [ 236 | { 237 | internalType: "bytes32", 238 | name: "role", 239 | type: "bytes32", 240 | }, 241 | { 242 | internalType: "address", 243 | name: "account", 244 | type: "address", 245 | }, 246 | ], 247 | name: "revokeRole", 248 | outputs: [], 249 | stateMutability: "nonpayable", 250 | type: "function", 251 | }, 252 | { 253 | inputs: [ 254 | { 255 | internalType: "bytes4", 256 | name: "interfaceId", 257 | type: "bytes4", 258 | }, 259 | ], 260 | name: "supportsInterface", 261 | outputs: [ 262 | { 263 | internalType: "bool", 264 | name: "", 265 | type: "bool", 266 | }, 267 | ], 268 | stateMutability: "view", 269 | type: "function", 270 | }, 271 | ]; 272 | -------------------------------------------------------------------------------- /typechain/factories/AccessControl__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { Contract, Signer } from "ethers"; 6 | import { Provider } from "@ethersproject/providers"; 7 | 8 | import type { AccessControl } from "../AccessControl"; 9 | 10 | export class AccessControl__factory { 11 | static connect( 12 | address: string, 13 | signerOrProvider: Signer | Provider 14 | ): AccessControl { 15 | return new Contract(address, _abi, signerOrProvider) as AccessControl; 16 | } 17 | } 18 | 19 | const _abi = [ 20 | { 21 | anonymous: false, 22 | inputs: [ 23 | { 24 | indexed: true, 25 | internalType: "bytes32", 26 | name: "role", 27 | type: "bytes32", 28 | }, 29 | { 30 | indexed: true, 31 | internalType: "bytes32", 32 | name: "previousAdminRole", 33 | type: "bytes32", 34 | }, 35 | { 36 | indexed: true, 37 | internalType: "bytes32", 38 | name: "newAdminRole", 39 | type: "bytes32", 40 | }, 41 | ], 42 | name: "RoleAdminChanged", 43 | type: "event", 44 | }, 45 | { 46 | anonymous: false, 47 | inputs: [ 48 | { 49 | indexed: true, 50 | internalType: "bytes32", 51 | name: "role", 52 | type: "bytes32", 53 | }, 54 | { 55 | indexed: true, 56 | internalType: "address", 57 | name: "account", 58 | type: "address", 59 | }, 60 | { 61 | indexed: true, 62 | internalType: "address", 63 | name: "sender", 64 | type: "address", 65 | }, 66 | ], 67 | name: "RoleGranted", 68 | type: "event", 69 | }, 70 | { 71 | anonymous: false, 72 | inputs: [ 73 | { 74 | indexed: true, 75 | internalType: "bytes32", 76 | name: "role", 77 | type: "bytes32", 78 | }, 79 | { 80 | indexed: true, 81 | internalType: "address", 82 | name: "account", 83 | type: "address", 84 | }, 85 | { 86 | indexed: true, 87 | internalType: "address", 88 | name: "sender", 89 | type: "address", 90 | }, 91 | ], 92 | name: "RoleRevoked", 93 | type: "event", 94 | }, 95 | { 96 | inputs: [], 97 | name: "DEFAULT_ADMIN_ROLE", 98 | outputs: [ 99 | { 100 | internalType: "bytes32", 101 | name: "", 102 | type: "bytes32", 103 | }, 104 | ], 105 | stateMutability: "view", 106 | type: "function", 107 | }, 108 | { 109 | inputs: [ 110 | { 111 | internalType: "bytes32", 112 | name: "role", 113 | type: "bytes32", 114 | }, 115 | ], 116 | name: "getRoleAdmin", 117 | outputs: [ 118 | { 119 | internalType: "bytes32", 120 | name: "", 121 | type: "bytes32", 122 | }, 123 | ], 124 | stateMutability: "view", 125 | type: "function", 126 | }, 127 | { 128 | inputs: [ 129 | { 130 | internalType: "bytes32", 131 | name: "role", 132 | type: "bytes32", 133 | }, 134 | { 135 | internalType: "uint256", 136 | name: "index", 137 | type: "uint256", 138 | }, 139 | ], 140 | name: "getRoleMember", 141 | outputs: [ 142 | { 143 | internalType: "address", 144 | name: "", 145 | type: "address", 146 | }, 147 | ], 148 | stateMutability: "view", 149 | type: "function", 150 | }, 151 | { 152 | inputs: [ 153 | { 154 | internalType: "bytes32", 155 | name: "role", 156 | type: "bytes32", 157 | }, 158 | ], 159 | name: "getRoleMemberCount", 160 | outputs: [ 161 | { 162 | internalType: "uint256", 163 | name: "", 164 | type: "uint256", 165 | }, 166 | ], 167 | stateMutability: "view", 168 | type: "function", 169 | }, 170 | { 171 | inputs: [ 172 | { 173 | internalType: "bytes32", 174 | name: "role", 175 | type: "bytes32", 176 | }, 177 | { 178 | internalType: "address", 179 | name: "account", 180 | type: "address", 181 | }, 182 | ], 183 | name: "grantRole", 184 | outputs: [], 185 | stateMutability: "nonpayable", 186 | type: "function", 187 | }, 188 | { 189 | inputs: [ 190 | { 191 | internalType: "bytes32", 192 | name: "role", 193 | type: "bytes32", 194 | }, 195 | { 196 | internalType: "address", 197 | name: "account", 198 | type: "address", 199 | }, 200 | ], 201 | name: "hasRole", 202 | outputs: [ 203 | { 204 | internalType: "bool", 205 | name: "", 206 | type: "bool", 207 | }, 208 | ], 209 | stateMutability: "view", 210 | type: "function", 211 | }, 212 | { 213 | inputs: [ 214 | { 215 | internalType: "bytes32", 216 | name: "role", 217 | type: "bytes32", 218 | }, 219 | { 220 | internalType: "address", 221 | name: "account", 222 | type: "address", 223 | }, 224 | ], 225 | name: "renounceRole", 226 | outputs: [], 227 | stateMutability: "nonpayable", 228 | type: "function", 229 | }, 230 | { 231 | inputs: [ 232 | { 233 | internalType: "bytes32", 234 | name: "role", 235 | type: "bytes32", 236 | }, 237 | { 238 | internalType: "address", 239 | name: "account", 240 | type: "address", 241 | }, 242 | ], 243 | name: "revokeRole", 244 | outputs: [], 245 | stateMutability: "nonpayable", 246 | type: "function", 247 | }, 248 | ]; 249 | -------------------------------------------------------------------------------- /typechain/factories/ChainConstants__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { Signer } from "ethers"; 6 | import { Provider, TransactionRequest } from "@ethersproject/providers"; 7 | import { Contract, ContractFactory, Overrides } from "@ethersproject/contracts"; 8 | 9 | import type { ChainConstants } from "../ChainConstants"; 10 | 11 | export class ChainConstants__factory extends ContractFactory { 12 | constructor(signer?: Signer) { 13 | super(_abi, _bytecode, signer); 14 | } 15 | 16 | deploy(overrides?: Overrides): Promise { 17 | return super.deploy(overrides || {}) as Promise; 18 | } 19 | getDeployTransaction(overrides?: Overrides): TransactionRequest { 20 | return super.getDeployTransaction(overrides || {}); 21 | } 22 | attach(address: string): ChainConstants { 23 | return super.attach(address) as ChainConstants; 24 | } 25 | connect(signer: Signer): ChainConstants__factory { 26 | return super.connect(signer) as ChainConstants__factory; 27 | } 28 | static connect( 29 | address: string, 30 | signerOrProvider: Signer | Provider 31 | ): ChainConstants { 32 | return new Contract(address, _abi, signerOrProvider) as ChainConstants; 33 | } 34 | } 35 | 36 | const _abi = [ 37 | { 38 | inputs: [], 39 | name: "CHILD_CHAIN_ID", 40 | outputs: [ 41 | { 42 | internalType: "uint256", 43 | name: "", 44 | type: "uint256", 45 | }, 46 | ], 47 | stateMutability: "view", 48 | type: "function", 49 | }, 50 | { 51 | inputs: [], 52 | name: "CHILD_CHAIN_ID_BYTES", 53 | outputs: [ 54 | { 55 | internalType: "bytes", 56 | name: "", 57 | type: "bytes", 58 | }, 59 | ], 60 | stateMutability: "view", 61 | type: "function", 62 | }, 63 | { 64 | inputs: [], 65 | name: "ERC712_VERSION", 66 | outputs: [ 67 | { 68 | internalType: "string", 69 | name: "", 70 | type: "string", 71 | }, 72 | ], 73 | stateMutability: "view", 74 | type: "function", 75 | }, 76 | { 77 | inputs: [], 78 | name: "ROOT_CHAIN_ID", 79 | outputs: [ 80 | { 81 | internalType: "uint256", 82 | name: "", 83 | type: "uint256", 84 | }, 85 | ], 86 | stateMutability: "view", 87 | type: "function", 88 | }, 89 | { 90 | inputs: [], 91 | name: "ROOT_CHAIN_ID_BYTES", 92 | outputs: [ 93 | { 94 | internalType: "bytes", 95 | name: "", 96 | type: "bytes", 97 | }, 98 | ], 99 | stateMutability: "view", 100 | type: "function", 101 | }, 102 | ]; 103 | 104 | const _bytecode = 105 | "0x608060405234801561001057600080fd5b506101a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630b54817c1461005c5780630dd7531a146100d95780630f7e5970146100e1578063626381a0146100e95780638acfcaf714610103575b600080fd5b61006461010b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561009e578181015183820152602001610086565b50505050905090810190601f1680156100cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610064610128565b610064610145565b6100f1610162565b60408051918252519081900360200190f35b6100f1610167565b604051806040016040528060018152602001608960f81b81525081565b604051806040016040528060018152602001600160f81b81525081565b604051806040016040528060018152602001603160f81b81525081565b608981565b60018156fea264697066735822122051d7ba3270116dd91188db2bcee7d897af1e0afa63951f0c3d6261ee0dc222a664736f6c63430006060033"; 106 | -------------------------------------------------------------------------------- /typechain/factories/DaoTicket__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { Contract, Signer } from "ethers"; 6 | import { Provider } from "@ethersproject/providers"; 7 | 8 | import type { DaoTicket } from "../DaoTicket"; 9 | 10 | export class DaoTicket__factory { 11 | static connect( 12 | address: string, 13 | signerOrProvider: Signer | Provider 14 | ): DaoTicket { 15 | return new Contract(address, _abi, signerOrProvider) as DaoTicket; 16 | } 17 | } 18 | 19 | const _abi = [ 20 | { 21 | anonymous: false, 22 | inputs: [ 23 | { 24 | indexed: false, 25 | internalType: "uint256", 26 | name: "", 27 | type: "uint256", 28 | }, 29 | { 30 | indexed: false, 31 | internalType: "address", 32 | name: "", 33 | type: "address", 34 | }, 35 | ], 36 | name: "randallAteMySandwich_dbohban", 37 | type: "event", 38 | }, 39 | { 40 | inputs: [ 41 | { 42 | internalType: "bytes", 43 | name: "nickname", 44 | type: "bytes", 45 | }, 46 | ], 47 | name: "abcei51243fdgjkh", 48 | outputs: [], 49 | stateMutability: "nonpayable", 50 | type: "function", 51 | }, 52 | { 53 | inputs: [ 54 | { 55 | internalType: "uint256", 56 | name: "", 57 | type: "uint256", 58 | }, 59 | ], 60 | name: "account_info_rotate_tine", 61 | outputs: [ 62 | { 63 | internalType: "string", 64 | name: "", 65 | type: "string", 66 | }, 67 | ], 68 | stateMutability: "view", 69 | type: "function", 70 | }, 71 | { 72 | inputs: [ 73 | { 74 | internalType: "uint256[]", 75 | name: "hashs", 76 | type: "uint256[]", 77 | }, 78 | ], 79 | name: "eldddhzr", 80 | outputs: [], 81 | stateMutability: "nonpayable", 82 | type: "function", 83 | }, 84 | { 85 | inputs: [ 86 | { 87 | internalType: "uint256", 88 | name: "", 89 | type: "uint256", 90 | }, 91 | ], 92 | name: "mintToSell9630191", 93 | outputs: [ 94 | { 95 | internalType: "address", 96 | name: "", 97 | type: "address", 98 | }, 99 | ], 100 | stateMutability: "view", 101 | type: "function", 102 | }, 103 | { 104 | inputs: [], 105 | name: "test266151307", 106 | outputs: [ 107 | { 108 | internalType: "uint256", 109 | name: "", 110 | type: "uint256", 111 | }, 112 | ], 113 | stateMutability: "view", 114 | type: "function", 115 | }, 116 | ]; 117 | -------------------------------------------------------------------------------- /typechain/factories/EIP712Base__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { Signer } from "ethers"; 6 | import { Provider, TransactionRequest } from "@ethersproject/providers"; 7 | import { Contract, ContractFactory, Overrides } from "@ethersproject/contracts"; 8 | 9 | import type { EIP712Base } from "../EIP712Base"; 10 | 11 | export class EIP712Base__factory extends ContractFactory { 12 | constructor(signer?: Signer) { 13 | super(_abi, _bytecode, signer); 14 | } 15 | 16 | deploy(overrides?: Overrides): Promise { 17 | return super.deploy(overrides || {}) as Promise; 18 | } 19 | getDeployTransaction(overrides?: Overrides): TransactionRequest { 20 | return super.getDeployTransaction(overrides || {}); 21 | } 22 | attach(address: string): EIP712Base { 23 | return super.attach(address) as EIP712Base; 24 | } 25 | connect(signer: Signer): EIP712Base__factory { 26 | return super.connect(signer) as EIP712Base__factory; 27 | } 28 | static connect( 29 | address: string, 30 | signerOrProvider: Signer | Provider 31 | ): EIP712Base { 32 | return new Contract(address, _abi, signerOrProvider) as EIP712Base; 33 | } 34 | } 35 | 36 | const _abi = [ 37 | { 38 | inputs: [], 39 | name: "getChainId", 40 | outputs: [ 41 | { 42 | internalType: "uint256", 43 | name: "", 44 | type: "uint256", 45 | }, 46 | ], 47 | stateMutability: "pure", 48 | type: "function", 49 | }, 50 | { 51 | inputs: [], 52 | name: "getDomainSeperator", 53 | outputs: [ 54 | { 55 | internalType: "bytes32", 56 | name: "", 57 | type: "bytes32", 58 | }, 59 | ], 60 | stateMutability: "view", 61 | type: "function", 62 | }, 63 | ]; 64 | 65 | const _bytecode = 66 | "0x60806040526000805460ff19169055348015601957600080fd5b506095806100286000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806320379ee51460375780633408e47014604f575b600080fd5b603d6055565b60408051918252519081900360200190f35b603d605b565b60015490565b469056fea264697066735822122074c144d778aba9e57479dc5a33abad8d16f297a22f695c604d387e52a2672cb164736f6c63430006060033"; 67 | -------------------------------------------------------------------------------- /typechain/factories/ERC165__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { Contract, Signer } from "ethers"; 6 | import { Provider } from "@ethersproject/providers"; 7 | 8 | import type { ERC165 } from "../ERC165"; 9 | 10 | export class ERC165__factory { 11 | static connect(address: string, signerOrProvider: Signer | Provider): ERC165 { 12 | return new Contract(address, _abi, signerOrProvider) as ERC165; 13 | } 14 | } 15 | 16 | const _abi = [ 17 | { 18 | inputs: [ 19 | { 20 | internalType: "bytes4", 21 | name: "interfaceId", 22 | type: "bytes4", 23 | }, 24 | ], 25 | name: "supportsInterface", 26 | outputs: [ 27 | { 28 | internalType: "bool", 29 | name: "", 30 | type: "bool", 31 | }, 32 | ], 33 | stateMutability: "view", 34 | type: "function", 35 | }, 36 | ]; 37 | -------------------------------------------------------------------------------- /typechain/factories/IAccessControlEnumerable__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { Contract, Signer } from "ethers"; 6 | import { Provider } from "@ethersproject/providers"; 7 | 8 | import type { IAccessControlEnumerable } from "../IAccessControlEnumerable"; 9 | 10 | export class IAccessControlEnumerable__factory { 11 | static connect( 12 | address: string, 13 | signerOrProvider: Signer | Provider 14 | ): IAccessControlEnumerable { 15 | return new Contract( 16 | address, 17 | _abi, 18 | signerOrProvider 19 | ) as IAccessControlEnumerable; 20 | } 21 | } 22 | 23 | const _abi = [ 24 | { 25 | anonymous: false, 26 | inputs: [ 27 | { 28 | indexed: true, 29 | internalType: "bytes32", 30 | name: "role", 31 | type: "bytes32", 32 | }, 33 | { 34 | indexed: true, 35 | internalType: "bytes32", 36 | name: "previousAdminRole", 37 | type: "bytes32", 38 | }, 39 | { 40 | indexed: true, 41 | internalType: "bytes32", 42 | name: "newAdminRole", 43 | type: "bytes32", 44 | }, 45 | ], 46 | name: "RoleAdminChanged", 47 | type: "event", 48 | }, 49 | { 50 | anonymous: false, 51 | inputs: [ 52 | { 53 | indexed: true, 54 | internalType: "bytes32", 55 | name: "role", 56 | type: "bytes32", 57 | }, 58 | { 59 | indexed: true, 60 | internalType: "address", 61 | name: "account", 62 | type: "address", 63 | }, 64 | { 65 | indexed: true, 66 | internalType: "address", 67 | name: "sender", 68 | type: "address", 69 | }, 70 | ], 71 | name: "RoleGranted", 72 | type: "event", 73 | }, 74 | { 75 | anonymous: false, 76 | inputs: [ 77 | { 78 | indexed: true, 79 | internalType: "bytes32", 80 | name: "role", 81 | type: "bytes32", 82 | }, 83 | { 84 | indexed: true, 85 | internalType: "address", 86 | name: "account", 87 | type: "address", 88 | }, 89 | { 90 | indexed: true, 91 | internalType: "address", 92 | name: "sender", 93 | type: "address", 94 | }, 95 | ], 96 | name: "RoleRevoked", 97 | type: "event", 98 | }, 99 | { 100 | inputs: [ 101 | { 102 | internalType: "bytes32", 103 | name: "role", 104 | type: "bytes32", 105 | }, 106 | ], 107 | name: "getRoleAdmin", 108 | outputs: [ 109 | { 110 | internalType: "bytes32", 111 | name: "", 112 | type: "bytes32", 113 | }, 114 | ], 115 | stateMutability: "view", 116 | type: "function", 117 | }, 118 | { 119 | inputs: [ 120 | { 121 | internalType: "bytes32", 122 | name: "role", 123 | type: "bytes32", 124 | }, 125 | { 126 | internalType: "uint256", 127 | name: "index", 128 | type: "uint256", 129 | }, 130 | ], 131 | name: "getRoleMember", 132 | outputs: [ 133 | { 134 | internalType: "address", 135 | name: "", 136 | type: "address", 137 | }, 138 | ], 139 | stateMutability: "view", 140 | type: "function", 141 | }, 142 | { 143 | inputs: [ 144 | { 145 | internalType: "bytes32", 146 | name: "role", 147 | type: "bytes32", 148 | }, 149 | ], 150 | name: "getRoleMemberCount", 151 | outputs: [ 152 | { 153 | internalType: "uint256", 154 | name: "", 155 | type: "uint256", 156 | }, 157 | ], 158 | stateMutability: "view", 159 | type: "function", 160 | }, 161 | { 162 | inputs: [ 163 | { 164 | internalType: "bytes32", 165 | name: "role", 166 | type: "bytes32", 167 | }, 168 | { 169 | internalType: "address", 170 | name: "account", 171 | type: "address", 172 | }, 173 | ], 174 | name: "grantRole", 175 | outputs: [], 176 | stateMutability: "nonpayable", 177 | type: "function", 178 | }, 179 | { 180 | inputs: [ 181 | { 182 | internalType: "bytes32", 183 | name: "role", 184 | type: "bytes32", 185 | }, 186 | { 187 | internalType: "address", 188 | name: "account", 189 | type: "address", 190 | }, 191 | ], 192 | name: "hasRole", 193 | outputs: [ 194 | { 195 | internalType: "bool", 196 | name: "", 197 | type: "bool", 198 | }, 199 | ], 200 | stateMutability: "view", 201 | type: "function", 202 | }, 203 | { 204 | inputs: [ 205 | { 206 | internalType: "bytes32", 207 | name: "role", 208 | type: "bytes32", 209 | }, 210 | { 211 | internalType: "address", 212 | name: "account", 213 | type: "address", 214 | }, 215 | ], 216 | name: "renounceRole", 217 | outputs: [], 218 | stateMutability: "nonpayable", 219 | type: "function", 220 | }, 221 | { 222 | inputs: [ 223 | { 224 | internalType: "bytes32", 225 | name: "role", 226 | type: "bytes32", 227 | }, 228 | { 229 | internalType: "address", 230 | name: "account", 231 | type: "address", 232 | }, 233 | ], 234 | name: "revokeRole", 235 | outputs: [], 236 | stateMutability: "nonpayable", 237 | type: "function", 238 | }, 239 | ]; 240 | -------------------------------------------------------------------------------- /typechain/factories/IAccessControl__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { Contract, Signer } from "ethers"; 6 | import { Provider } from "@ethersproject/providers"; 7 | 8 | import type { IAccessControl } from "../IAccessControl"; 9 | 10 | export class IAccessControl__factory { 11 | static connect( 12 | address: string, 13 | signerOrProvider: Signer | Provider 14 | ): IAccessControl { 15 | return new Contract(address, _abi, signerOrProvider) as IAccessControl; 16 | } 17 | } 18 | 19 | const _abi = [ 20 | { 21 | anonymous: false, 22 | inputs: [ 23 | { 24 | indexed: true, 25 | internalType: "bytes32", 26 | name: "role", 27 | type: "bytes32", 28 | }, 29 | { 30 | indexed: true, 31 | internalType: "bytes32", 32 | name: "previousAdminRole", 33 | type: "bytes32", 34 | }, 35 | { 36 | indexed: true, 37 | internalType: "bytes32", 38 | name: "newAdminRole", 39 | type: "bytes32", 40 | }, 41 | ], 42 | name: "RoleAdminChanged", 43 | type: "event", 44 | }, 45 | { 46 | anonymous: false, 47 | inputs: [ 48 | { 49 | indexed: true, 50 | internalType: "bytes32", 51 | name: "role", 52 | type: "bytes32", 53 | }, 54 | { 55 | indexed: true, 56 | internalType: "address", 57 | name: "account", 58 | type: "address", 59 | }, 60 | { 61 | indexed: true, 62 | internalType: "address", 63 | name: "sender", 64 | type: "address", 65 | }, 66 | ], 67 | name: "RoleGranted", 68 | type: "event", 69 | }, 70 | { 71 | anonymous: false, 72 | inputs: [ 73 | { 74 | indexed: true, 75 | internalType: "bytes32", 76 | name: "role", 77 | type: "bytes32", 78 | }, 79 | { 80 | indexed: true, 81 | internalType: "address", 82 | name: "account", 83 | type: "address", 84 | }, 85 | { 86 | indexed: true, 87 | internalType: "address", 88 | name: "sender", 89 | type: "address", 90 | }, 91 | ], 92 | name: "RoleRevoked", 93 | type: "event", 94 | }, 95 | { 96 | inputs: [ 97 | { 98 | internalType: "bytes32", 99 | name: "role", 100 | type: "bytes32", 101 | }, 102 | ], 103 | name: "getRoleAdmin", 104 | outputs: [ 105 | { 106 | internalType: "bytes32", 107 | name: "", 108 | type: "bytes32", 109 | }, 110 | ], 111 | stateMutability: "view", 112 | type: "function", 113 | }, 114 | { 115 | inputs: [ 116 | { 117 | internalType: "bytes32", 118 | name: "role", 119 | type: "bytes32", 120 | }, 121 | { 122 | internalType: "address", 123 | name: "account", 124 | type: "address", 125 | }, 126 | ], 127 | name: "grantRole", 128 | outputs: [], 129 | stateMutability: "nonpayable", 130 | type: "function", 131 | }, 132 | { 133 | inputs: [ 134 | { 135 | internalType: "bytes32", 136 | name: "role", 137 | type: "bytes32", 138 | }, 139 | { 140 | internalType: "address", 141 | name: "account", 142 | type: "address", 143 | }, 144 | ], 145 | name: "hasRole", 146 | outputs: [ 147 | { 148 | internalType: "bool", 149 | name: "", 150 | type: "bool", 151 | }, 152 | ], 153 | stateMutability: "view", 154 | type: "function", 155 | }, 156 | { 157 | inputs: [ 158 | { 159 | internalType: "bytes32", 160 | name: "role", 161 | type: "bytes32", 162 | }, 163 | { 164 | internalType: "address", 165 | name: "account", 166 | type: "address", 167 | }, 168 | ], 169 | name: "renounceRole", 170 | outputs: [], 171 | stateMutability: "nonpayable", 172 | type: "function", 173 | }, 174 | { 175 | inputs: [ 176 | { 177 | internalType: "bytes32", 178 | name: "role", 179 | type: "bytes32", 180 | }, 181 | { 182 | internalType: "address", 183 | name: "account", 184 | type: "address", 185 | }, 186 | ], 187 | name: "revokeRole", 188 | outputs: [], 189 | stateMutability: "nonpayable", 190 | type: "function", 191 | }, 192 | ]; 193 | -------------------------------------------------------------------------------- /typechain/factories/IBuyNFT__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { Contract, Signer } from "ethers"; 6 | import { Provider } from "@ethersproject/providers"; 7 | 8 | import type { IBuyNFT } from "../IBuyNFT"; 9 | 10 | export class IBuyNFT__factory { 11 | static connect( 12 | address: string, 13 | signerOrProvider: Signer | Provider 14 | ): IBuyNFT { 15 | return new Contract(address, _abi, signerOrProvider) as IBuyNFT; 16 | } 17 | } 18 | 19 | const _abi = [ 20 | { 21 | anonymous: false, 22 | inputs: [ 23 | { 24 | indexed: false, 25 | internalType: "address", 26 | name: "to", 27 | type: "address", 28 | }, 29 | ], 30 | name: "Buy", 31 | type: "event", 32 | }, 33 | { 34 | anonymous: false, 35 | inputs: [ 36 | { 37 | indexed: false, 38 | internalType: "address", 39 | name: "_DaoVault", 40 | type: "address", 41 | }, 42 | ], 43 | name: "SetDaoVault", 44 | type: "event", 45 | }, 46 | { 47 | anonymous: false, 48 | inputs: [ 49 | { 50 | indexed: false, 51 | internalType: "uint256", 52 | name: "_maxTotalSupply", 53 | type: "uint256", 54 | }, 55 | ], 56 | name: "SetMaxTotalSupply", 57 | type: "event", 58 | }, 59 | { 60 | anonymous: false, 61 | inputs: [ 62 | { 63 | indexed: false, 64 | internalType: "uint256", 65 | name: "_price", 66 | type: "uint256", 67 | }, 68 | ], 69 | name: "SetPrice", 70 | type: "event", 71 | }, 72 | { 73 | inputs: [], 74 | name: "DaoVault", 75 | outputs: [ 76 | { 77 | internalType: "address", 78 | name: "", 79 | type: "address", 80 | }, 81 | ], 82 | stateMutability: "view", 83 | type: "function", 84 | }, 85 | { 86 | inputs: [], 87 | name: "WEB3DAONFT", 88 | outputs: [ 89 | { 90 | internalType: "address", 91 | name: "", 92 | type: "address", 93 | }, 94 | ], 95 | stateMutability: "view", 96 | type: "function", 97 | }, 98 | { 99 | inputs: [], 100 | name: "WETH", 101 | outputs: [ 102 | { 103 | internalType: "address", 104 | name: "", 105 | type: "address", 106 | }, 107 | ], 108 | stateMutability: "view", 109 | type: "function", 110 | }, 111 | { 112 | inputs: [ 113 | { 114 | internalType: "address", 115 | name: "to", 116 | type: "address", 117 | }, 118 | ], 119 | name: "buy", 120 | outputs: [], 121 | stateMutability: "nonpayable", 122 | type: "function", 123 | }, 124 | { 125 | inputs: [], 126 | name: "maxTotalSupply", 127 | outputs: [ 128 | { 129 | internalType: "uint256", 130 | name: "", 131 | type: "uint256", 132 | }, 133 | ], 134 | stateMutability: "view", 135 | type: "function", 136 | }, 137 | { 138 | inputs: [], 139 | name: "price", 140 | outputs: [ 141 | { 142 | internalType: "uint256", 143 | name: "", 144 | type: "uint256", 145 | }, 146 | ], 147 | stateMutability: "view", 148 | type: "function", 149 | }, 150 | { 151 | inputs: [ 152 | { 153 | internalType: "address", 154 | name: "_DaoVault", 155 | type: "address", 156 | }, 157 | ], 158 | name: "setDaoVault", 159 | outputs: [], 160 | stateMutability: "nonpayable", 161 | type: "function", 162 | }, 163 | { 164 | inputs: [ 165 | { 166 | internalType: "uint256", 167 | name: "_maxTotalSupply", 168 | type: "uint256", 169 | }, 170 | ], 171 | name: "setMaxTotalSupply", 172 | outputs: [], 173 | stateMutability: "nonpayable", 174 | type: "function", 175 | }, 176 | { 177 | inputs: [ 178 | { 179 | internalType: "uint256", 180 | name: "_price", 181 | type: "uint256", 182 | }, 183 | ], 184 | name: "setPrice", 185 | outputs: [], 186 | stateMutability: "nonpayable", 187 | type: "function", 188 | }, 189 | ]; 190 | -------------------------------------------------------------------------------- /typechain/factories/IChildToken__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { Contract, Signer } from "ethers"; 6 | import { Provider } from "@ethersproject/providers"; 7 | 8 | import type { IChildToken } from "../IChildToken"; 9 | 10 | export class IChildToken__factory { 11 | static connect( 12 | address: string, 13 | signerOrProvider: Signer | Provider 14 | ): IChildToken { 15 | return new Contract(address, _abi, signerOrProvider) as IChildToken; 16 | } 17 | } 18 | 19 | const _abi = [ 20 | { 21 | inputs: [ 22 | { 23 | internalType: "address", 24 | name: "user", 25 | type: "address", 26 | }, 27 | { 28 | internalType: "bytes", 29 | name: "depositData", 30 | type: "bytes", 31 | }, 32 | ], 33 | name: "deposit", 34 | outputs: [], 35 | stateMutability: "nonpayable", 36 | type: "function", 37 | }, 38 | ]; 39 | -------------------------------------------------------------------------------- /typechain/factories/IDaoVault__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { Contract, Signer } from "ethers"; 6 | import { Provider } from "@ethersproject/providers"; 7 | 8 | import type { IDaoVault } from "../IDaoVault"; 9 | 10 | export class IDaoVault__factory { 11 | static connect( 12 | address: string, 13 | signerOrProvider: Signer | Provider 14 | ): IDaoVault { 15 | return new Contract(address, _abi, signerOrProvider) as IDaoVault; 16 | } 17 | } 18 | 19 | const _abi = [ 20 | { 21 | anonymous: false, 22 | inputs: [ 23 | { 24 | indexed: false, 25 | internalType: "uint256", 26 | name: "amount", 27 | type: "uint256", 28 | }, 29 | { 30 | indexed: false, 31 | internalType: "uint256", 32 | name: "reserve", 33 | type: "uint256", 34 | }, 35 | ], 36 | name: "Deposit", 37 | type: "event", 38 | }, 39 | { 40 | anonymous: false, 41 | inputs: [ 42 | { 43 | indexed: false, 44 | internalType: "uint256", 45 | name: "reserve", 46 | type: "uint256", 47 | }, 48 | ], 49 | name: "UpdateReserve", 50 | type: "event", 51 | }, 52 | { 53 | anonymous: false, 54 | inputs: [ 55 | { 56 | indexed: false, 57 | internalType: "uint256", 58 | name: "amount", 59 | type: "uint256", 60 | }, 61 | { 62 | indexed: false, 63 | internalType: "uint256", 64 | name: "reserve", 65 | type: "uint256", 66 | }, 67 | ], 68 | name: "Withdraw", 69 | type: "event", 70 | }, 71 | { 72 | inputs: [], 73 | name: "WETH", 74 | outputs: [ 75 | { 76 | internalType: "address", 77 | name: "", 78 | type: "address", 79 | }, 80 | ], 81 | stateMutability: "view", 82 | type: "function", 83 | }, 84 | { 85 | inputs: [ 86 | { 87 | internalType: "uint256", 88 | name: "amount", 89 | type: "uint256", 90 | }, 91 | ], 92 | name: "deposit", 93 | outputs: [], 94 | stateMutability: "nonpayable", 95 | type: "function", 96 | }, 97 | { 98 | inputs: [], 99 | name: "reserve", 100 | outputs: [ 101 | { 102 | internalType: "uint256", 103 | name: "", 104 | type: "uint256", 105 | }, 106 | ], 107 | stateMutability: "view", 108 | type: "function", 109 | }, 110 | { 111 | inputs: [], 112 | name: "updateReserve", 113 | outputs: [], 114 | stateMutability: "nonpayable", 115 | type: "function", 116 | }, 117 | { 118 | inputs: [ 119 | { 120 | internalType: "uint256", 121 | name: "amount", 122 | type: "uint256", 123 | }, 124 | { 125 | internalType: "address", 126 | name: "to", 127 | type: "address", 128 | }, 129 | ], 130 | name: "withdraw", 131 | outputs: [], 132 | stateMutability: "nonpayable", 133 | type: "function", 134 | }, 135 | ]; 136 | -------------------------------------------------------------------------------- /typechain/factories/IERC165__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { Contract, Signer } from "ethers"; 6 | import { Provider } from "@ethersproject/providers"; 7 | 8 | import type { IERC165 } from "../IERC165"; 9 | 10 | export class IERC165__factory { 11 | static connect( 12 | address: string, 13 | signerOrProvider: Signer | Provider 14 | ): IERC165 { 15 | return new Contract(address, _abi, signerOrProvider) as IERC165; 16 | } 17 | } 18 | 19 | const _abi = [ 20 | { 21 | inputs: [ 22 | { 23 | internalType: "bytes4", 24 | name: "interfaceId", 25 | type: "bytes4", 26 | }, 27 | ], 28 | name: "supportsInterface", 29 | outputs: [ 30 | { 31 | internalType: "bool", 32 | name: "", 33 | type: "bool", 34 | }, 35 | ], 36 | stateMutability: "view", 37 | type: "function", 38 | }, 39 | ]; 40 | -------------------------------------------------------------------------------- /typechain/factories/IERC20__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { Contract, Signer } from "ethers"; 6 | import { Provider } from "@ethersproject/providers"; 7 | 8 | import type { IERC20 } from "../IERC20"; 9 | 10 | export class IERC20__factory { 11 | static connect(address: string, signerOrProvider: Signer | Provider): IERC20 { 12 | return new Contract(address, _abi, signerOrProvider) as IERC20; 13 | } 14 | } 15 | 16 | const _abi = [ 17 | { 18 | anonymous: false, 19 | inputs: [ 20 | { 21 | indexed: true, 22 | internalType: "address", 23 | name: "owner", 24 | type: "address", 25 | }, 26 | { 27 | indexed: true, 28 | internalType: "address", 29 | name: "spender", 30 | type: "address", 31 | }, 32 | { 33 | indexed: false, 34 | internalType: "uint256", 35 | name: "value", 36 | type: "uint256", 37 | }, 38 | ], 39 | name: "Approval", 40 | type: "event", 41 | }, 42 | { 43 | anonymous: false, 44 | inputs: [ 45 | { 46 | indexed: true, 47 | internalType: "address", 48 | name: "from", 49 | type: "address", 50 | }, 51 | { 52 | indexed: true, 53 | internalType: "address", 54 | name: "to", 55 | type: "address", 56 | }, 57 | { 58 | indexed: false, 59 | internalType: "uint256", 60 | name: "value", 61 | type: "uint256", 62 | }, 63 | ], 64 | name: "Transfer", 65 | type: "event", 66 | }, 67 | { 68 | inputs: [ 69 | { 70 | internalType: "address", 71 | name: "owner", 72 | type: "address", 73 | }, 74 | { 75 | internalType: "address", 76 | name: "spender", 77 | type: "address", 78 | }, 79 | ], 80 | name: "allowance", 81 | outputs: [ 82 | { 83 | internalType: "uint256", 84 | name: "", 85 | type: "uint256", 86 | }, 87 | ], 88 | stateMutability: "view", 89 | type: "function", 90 | }, 91 | { 92 | inputs: [ 93 | { 94 | internalType: "address", 95 | name: "spender", 96 | type: "address", 97 | }, 98 | { 99 | internalType: "uint256", 100 | name: "amount", 101 | type: "uint256", 102 | }, 103 | ], 104 | name: "approve", 105 | outputs: [ 106 | { 107 | internalType: "bool", 108 | name: "", 109 | type: "bool", 110 | }, 111 | ], 112 | stateMutability: "nonpayable", 113 | type: "function", 114 | }, 115 | { 116 | inputs: [ 117 | { 118 | internalType: "address", 119 | name: "account", 120 | type: "address", 121 | }, 122 | ], 123 | name: "balanceOf", 124 | outputs: [ 125 | { 126 | internalType: "uint256", 127 | name: "", 128 | type: "uint256", 129 | }, 130 | ], 131 | stateMutability: "view", 132 | type: "function", 133 | }, 134 | { 135 | inputs: [], 136 | name: "totalSupply", 137 | outputs: [ 138 | { 139 | internalType: "uint256", 140 | name: "", 141 | type: "uint256", 142 | }, 143 | ], 144 | stateMutability: "view", 145 | type: "function", 146 | }, 147 | { 148 | inputs: [ 149 | { 150 | internalType: "address", 151 | name: "recipient", 152 | type: "address", 153 | }, 154 | { 155 | internalType: "uint256", 156 | name: "amount", 157 | type: "uint256", 158 | }, 159 | ], 160 | name: "transfer", 161 | outputs: [ 162 | { 163 | internalType: "bool", 164 | name: "", 165 | type: "bool", 166 | }, 167 | ], 168 | stateMutability: "nonpayable", 169 | type: "function", 170 | }, 171 | { 172 | inputs: [ 173 | { 174 | internalType: "address", 175 | name: "sender", 176 | type: "address", 177 | }, 178 | { 179 | internalType: "address", 180 | name: "recipient", 181 | type: "address", 182 | }, 183 | { 184 | internalType: "uint256", 185 | name: "amount", 186 | type: "uint256", 187 | }, 188 | ], 189 | name: "transferFrom", 190 | outputs: [ 191 | { 192 | internalType: "bool", 193 | name: "", 194 | type: "bool", 195 | }, 196 | ], 197 | stateMutability: "nonpayable", 198 | type: "function", 199 | }, 200 | ]; 201 | -------------------------------------------------------------------------------- /typechain/factories/IERC721Receiver__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { Contract, Signer } from "ethers"; 6 | import { Provider } from "@ethersproject/providers"; 7 | 8 | import type { IERC721Receiver } from "../IERC721Receiver"; 9 | 10 | export class IERC721Receiver__factory { 11 | static connect( 12 | address: string, 13 | signerOrProvider: Signer | Provider 14 | ): IERC721Receiver { 15 | return new Contract(address, _abi, signerOrProvider) as IERC721Receiver; 16 | } 17 | } 18 | 19 | const _abi = [ 20 | { 21 | inputs: [ 22 | { 23 | internalType: "address", 24 | name: "operator", 25 | type: "address", 26 | }, 27 | { 28 | internalType: "address", 29 | name: "from", 30 | type: "address", 31 | }, 32 | { 33 | internalType: "uint256", 34 | name: "tokenId", 35 | type: "uint256", 36 | }, 37 | { 38 | internalType: "bytes", 39 | name: "data", 40 | type: "bytes", 41 | }, 42 | ], 43 | name: "onERC721Received", 44 | outputs: [ 45 | { 46 | internalType: "bytes4", 47 | name: "", 48 | type: "bytes4", 49 | }, 50 | ], 51 | stateMutability: "nonpayable", 52 | type: "function", 53 | }, 54 | ]; 55 | -------------------------------------------------------------------------------- /typechain/factories/Ownable__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import { Contract, Signer } from "ethers"; 6 | import { Provider } from "@ethersproject/providers"; 7 | 8 | import type { Ownable } from "../Ownable"; 9 | 10 | export class Ownable__factory { 11 | static connect( 12 | address: string, 13 | signerOrProvider: Signer | Provider 14 | ): Ownable { 15 | return new Contract(address, _abi, signerOrProvider) as Ownable; 16 | } 17 | } 18 | 19 | const _abi = [ 20 | { 21 | anonymous: false, 22 | inputs: [ 23 | { 24 | indexed: true, 25 | internalType: "address", 26 | name: "previousOwner", 27 | type: "address", 28 | }, 29 | { 30 | indexed: true, 31 | internalType: "address", 32 | name: "newOwner", 33 | type: "address", 34 | }, 35 | ], 36 | name: "OwnershipTransferred", 37 | type: "event", 38 | }, 39 | { 40 | inputs: [], 41 | name: "owner", 42 | outputs: [ 43 | { 44 | internalType: "address", 45 | name: "", 46 | type: "address", 47 | }, 48 | ], 49 | stateMutability: "view", 50 | type: "function", 51 | }, 52 | { 53 | inputs: [], 54 | name: "renounceOwnership", 55 | outputs: [], 56 | stateMutability: "nonpayable", 57 | type: "function", 58 | }, 59 | { 60 | inputs: [ 61 | { 62 | internalType: "address", 63 | name: "newOwner", 64 | type: "address", 65 | }, 66 | ], 67 | name: "transferOwnership", 68 | outputs: [], 69 | stateMutability: "nonpayable", 70 | type: "function", 71 | }, 72 | ]; 73 | -------------------------------------------------------------------------------- /typechain/index.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | export type { AccessControl } from "./AccessControl"; 5 | export type { AccessControlEnumerable } from "./AccessControlEnumerable"; 6 | export type { IAccessControl } from "./IAccessControl"; 7 | export type { IAccessControlEnumerable } from "./IAccessControlEnumerable"; 8 | export type { Ownable } from "./Ownable"; 9 | export type { IERC20 } from "./IERC20"; 10 | export type { ERC721 } from "./ERC721"; 11 | export type { IERC721Metadata } from "./IERC721Metadata"; 12 | export type { IERC721 } from "./IERC721"; 13 | export type { IERC721Receiver } from "./IERC721Receiver"; 14 | export type { ERC165 } from "./ERC165"; 15 | export type { IERC165 } from "./IERC165"; 16 | export type { BuyNFT } from "./BuyNFT"; 17 | export type { DaoSponsor } from "./DaoSponsor"; 18 | export type { DaoTicket } from "./DaoTicket"; 19 | export type { DaoTreasury } from "./DaoTreasury"; 20 | export type { DaoVault } from "./DaoVault"; 21 | export type { ERC3664 } from "./ERC3664"; 22 | export type { IERC3664 } from "./IERC3664"; 23 | export type { IERC3664Metadata } from "./IERC3664Metadata"; 24 | export type { IBuyNFT } from "./IBuyNFT"; 25 | export type { IDaoSponsor } from "./IDaoSponsor"; 26 | export type { IDaoTreasury } from "./IDaoTreasury"; 27 | export type { IDaoVault } from "./IDaoVault"; 28 | export type { IWeb3DAOCN } from "./IWeb3DAOCN"; 29 | export type { MultiSign } from "./MultiSign"; 30 | export type { AccessControl } from "./AccessControl"; 31 | export type { AccessControlMixin } from "./AccessControlMixin"; 32 | export type { ChainConstants } from "./ChainConstants"; 33 | export type { ChildERC20 } from "./ChildERC20"; 34 | export type { EIP712Base } from "./EIP712Base"; 35 | export type { ERC20 } from "./ERC20"; 36 | export type { IChildToken } from "./IChildToken"; 37 | export type { IERC20 } from "./IERC20"; 38 | export type { MaticWETH } from "./MaticWETH"; 39 | export type { NativeMetaTransaction } from "./NativeMetaTransaction"; 40 | export type { Web3DAOCN } from "./Web3DAOCN"; 41 | 42 | export { AccessControl__factory } from "./factories/AccessControl__factory"; 43 | export { AccessControlEnumerable__factory } from "./factories/AccessControlEnumerable__factory"; 44 | export { IAccessControl__factory } from "./factories/IAccessControl__factory"; 45 | export { IAccessControlEnumerable__factory } from "./factories/IAccessControlEnumerable__factory"; 46 | export { Ownable__factory } from "./factories/Ownable__factory"; 47 | export { IERC20__factory } from "./factories/IERC20__factory"; 48 | export { ERC721__factory } from "./factories/ERC721__factory"; 49 | export { IERC721Metadata__factory } from "./factories/IERC721Metadata__factory"; 50 | export { IERC721__factory } from "./factories/IERC721__factory"; 51 | export { IERC721Receiver__factory } from "./factories/IERC721Receiver__factory"; 52 | export { ERC165__factory } from "./factories/ERC165__factory"; 53 | export { IERC165__factory } from "./factories/IERC165__factory"; 54 | export { BuyNFT__factory } from "./factories/BuyNFT__factory"; 55 | export { DaoSponsor__factory } from "./factories/DaoSponsor__factory"; 56 | export { DaoTicket__factory } from "./factories/DaoTicket__factory"; 57 | export { DaoTreasury__factory } from "./factories/DaoTreasury__factory"; 58 | export { DaoVault__factory } from "./factories/DaoVault__factory"; 59 | export { ERC3664__factory } from "./factories/ERC3664__factory"; 60 | export { IERC3664__factory } from "./factories/IERC3664__factory"; 61 | export { IERC3664Metadata__factory } from "./factories/IERC3664Metadata__factory"; 62 | export { IBuyNFT__factory } from "./factories/IBuyNFT__factory"; 63 | export { IDaoSponsor__factory } from "./factories/IDaoSponsor__factory"; 64 | export { IDaoTreasury__factory } from "./factories/IDaoTreasury__factory"; 65 | export { IDaoVault__factory } from "./factories/IDaoVault__factory"; 66 | export { IWeb3DAOCN__factory } from "./factories/IWeb3DAOCN__factory"; 67 | export { MultiSign__factory } from "./factories/MultiSign__factory"; 68 | export { AccessControl__factory } from "./factories/AccessControl__factory"; 69 | export { AccessControlMixin__factory } from "./factories/AccessControlMixin__factory"; 70 | export { ChainConstants__factory } from "./factories/ChainConstants__factory"; 71 | export { ChildERC20__factory } from "./factories/ChildERC20__factory"; 72 | export { EIP712Base__factory } from "./factories/EIP712Base__factory"; 73 | export { ERC20__factory } from "./factories/ERC20__factory"; 74 | export { IChildToken__factory } from "./factories/IChildToken__factory"; 75 | export { IERC20__factory } from "./factories/IERC20__factory"; 76 | export { MaticWETH__factory } from "./factories/MaticWETH__factory"; 77 | export { NativeMetaTransaction__factory } from "./factories/NativeMetaTransaction__factory"; 78 | export { Web3DAOCN__factory } from "./factories/Web3DAOCN__factory"; 79 | --------------------------------------------------------------------------------