{ "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} }, "deployedBytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} }, "methodIdentifiers": { "allowance(address,address)": "dd62ed3e", "approve(address,uint256)": "095ea7b3", "balanceOf(address)": "70a08231", "totalSupply()": "18160ddd", "transfer(address,uint256)": "a9059cbb", "transferFrom(address,address,uint256)": "23b872dd" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500},\"remappings\":[\":Staking-v0.1/=lib/Staking-v0.1/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.18+commit.87f61d96" }, "language": "Solidity", "output": { "abi": [ { "inputs": [ { "internalType": "address", "name": "owner", "type": "address", "indexed": true }, { "internalType": "address", "name": "spender", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "value", "type": "uint256", "indexed": false } ], "type": "event", "name": "Approval", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address", "indexed": true }, { "internalType": "address", "name": "to", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "value", "type": "uint256", "indexed": false } ], "type": "event", "name": "Transfer", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "stateMutability": "view", "type": "function", "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "stateMutability": "view", "type": "function", "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] } ], "devdoc": { "kind": "dev", "methods": { "allowance(address,address)": { "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." }, "approve(address,uint256)": { "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event." }, "balanceOf(address)": { "details": "Returns the amount of tokens owned by `account`." }, "totalSupply()": { "details": "Returns the amount of tokens in existence." }, "transfer(address,uint256)": { "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." }, "transferFrom(address,address,uint256)": { "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." } }, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }, "settings": { "remappings": [ ":Staking-v0.1/=lib/Staking-v0.1/src/", ":ds-test/=lib/forge-std/lib/ds-test/src/", ":forge-std/=lib/forge-std/src/", ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", ":openzeppelin-contracts/=lib/openzeppelin-contracts/" ], "optimizer": { "enabled": true, "runs": 500 }, "metadata": { "bytecodeHash": "ipfs" }, "compilationTarget": { "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": "IERC20" }, "libraries": {} }, "sources": { "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { "keccak256": "0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b", "urls": [ "bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34", "dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr" ], "license": "MIT" } }, "version": 1 }, "ast": { "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", "id": 33402, "exportedSymbols": { "IERC20": [ 33401 ] }, "nodeType": "SourceUnit", "src": "106:2661:47", "nodes": [ { "id": 33325, "nodeType": "PragmaDirective", "src": "106:23:47", "nodes": [], "literals": [ "solidity", "^", "0.8", ".0" ] }, { "id": 33401, "nodeType": "ContractDefinition", "src": "202:2564:47", "nodes": [ { "id": 33335, "nodeType": "EventDefinition", "src": "388:72:47", "nodes": [], "anonymous": false, "documentation": { "id": 33327, "nodeType": "StructuredDocumentation", "src": "225:158:47", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." }, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "name": "Transfer", "nameLocation": "394:8:47", "parameters": { "id": 33334, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 33329, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:47", "nodeType": "VariableDeclaration", "scope": 33335, "src": "403:20:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 33328, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:47", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 33331, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:47", "nodeType": "VariableDeclaration", "scope": 33335, "src": "425:18:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 33330, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:47", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 33333, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:47", "nodeType": "VariableDeclaration", "scope": 33335, "src": "445:13:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 33332, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:47", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "402:57:47" } }, { "id": 33344, "nodeType": "EventDefinition", "src": "619:78:47", "nodes": [], "anonymous": false, "documentation": { "id": 33336, "nodeType": "StructuredDocumentation", "src": "466:148:47", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." }, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "name": "Approval", "nameLocation": "625:8:47", "parameters": { "id": 33343, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 33338, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:47", "nodeType": "VariableDeclaration", "scope": 33344, "src": "634:21:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 33337, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:47", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 33340, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:47", "nodeType": "VariableDeclaration", "scope": 33344, "src": "657:23:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 33339, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:47", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 33342, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:47", "nodeType": "VariableDeclaration", "scope": 33344, "src": "682:13:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 33341, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:47", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "633:63:47" } }, { "id": 33350, "nodeType": "FunctionDefinition", "src": "774:55:47", "nodes": [], "documentation": { "id": 33345, "nodeType": "StructuredDocumentation", "src": "703:66:47", "text": " @dev Returns the amount of tokens in existence." }, "functionSelector": "18160ddd", "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:47", "parameters": { "id": 33346, "nodeType": "ParameterList", "parameters": [], "src": "794:2:47" }, "returnParameters": { "id": 33349, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 33348, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 33350, "src": "820:7:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 33347, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:47", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "819:9:47" }, "scope": 33401, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 33358, "nodeType": "FunctionDefinition", "src": "912:68:47", "nodes": [], "documentation": { "id": 33351, "nodeType": "StructuredDocumentation", "src": "835:72:47", "text": " @dev Returns the amount of tokens owned by `account`." }, "functionSelector": "70a08231", "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:47", "parameters": { "id": 33354, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 33353, "mutability": "mutable", "name": "account", "nameLocation": "939:7:47", "nodeType": "VariableDeclaration", "scope": 33358, "src": "931:15:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 33352, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:47", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "930:17:47" }, "returnParameters": { "id": 33357, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 33356, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 33358, "src": "971:7:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 33355, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:47", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "970:9:47" }, "scope": 33401, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 33368, "nodeType": "FunctionDefinition", "src": "1193:70:47", "nodes": [], "documentation": { "id": 33359, "nodeType": "StructuredDocumentation", "src": "986:202:47", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." }, "functionSelector": "a9059cbb", "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:47", "parameters": { "id": 33364, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 33361, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:47", "nodeType": "VariableDeclaration", "scope": 33368, "src": "1211:10:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 33360, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:47", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 33363, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:47", "nodeType": "VariableDeclaration", "scope": 33368, "src": "1223:14:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 33362, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:47", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "1210:28:47" }, "returnParameters": { "id": 33367, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 33366, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 33368, "src": "1257:4:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 33365, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:47", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "1256:6:47" }, "scope": 33401, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 33378, "nodeType": "FunctionDefinition", "src": "1538:83:47", "nodes": [], "documentation": { "id": 33369, "nodeType": "StructuredDocumentation", "src": "1269:264:47", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." }, "functionSelector": "dd62ed3e", "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:47", "parameters": { "id": 33374, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 33371, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:47", "nodeType": "VariableDeclaration", "scope": 33378, "src": "1557:13:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 33370, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:47", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 33373, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:47", "nodeType": "VariableDeclaration", "scope": 33378, "src": "1572:15:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 33372, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:47", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "1556:32:47" }, "returnParameters": { "id": 33377, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 33376, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 33378, "src": "1612:7:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 33375, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:47", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "1611:9:47" }, "scope": 33401, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 33388, "nodeType": "FunctionDefinition", "src": "2274:74:47", "nodes": [], "documentation": { "id": 33379, "nodeType": "StructuredDocumentation", "src": "1627:642:47", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." }, "functionSelector": "095ea7b3", "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:47", "parameters": { "id": 33384, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 33381, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:47", "nodeType": "VariableDeclaration", "scope": 33388, "src": "2291:15:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 33380, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:47", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 33383, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:47", "nodeType": "VariableDeclaration", "scope": 33388, "src": "2308:14:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 33382, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:47", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "2290:33:47" }, "returnParameters": { "id": 33387, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 33386, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 33388, "src": "2342:4:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 33385, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:47", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "2341:6:47" }, "scope": 33401, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 33400, "nodeType": "FunctionDefinition", "src": "2646:118:47", "nodes": [], "documentation": { "id": 33389, "nodeType": "StructuredDocumentation", "src": "2354:287:47", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." }, "functionSelector": "23b872dd", "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:47", "parameters": { "id": 33396, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 33391, "mutability": "mutable", "name": "from", "nameLocation": "2685:4:47", "nodeType": "VariableDeclaration", "scope": 33400, "src": "2677:12:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 33390, "name": "address", "nodeType": "ElementaryTypeName", "src": "2677:7:47", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 33393, "mutability": "mutable", "name": "to", "nameLocation": "2707:2:47", "nodeType": "VariableDeclaration", "scope": 33400, "src": "2699:10:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 33392, "name": "address", "nodeType": "ElementaryTypeName", "src": "2699:7:47", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 33395, "mutability": "mutable", "name": "amount", "nameLocation": "2727:6:47", "nodeType": "VariableDeclaration", "scope": 33400, "src": "2719:14:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 33394, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2719:7:47", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "2667:72:47" }, "returnParameters": { "id": 33399, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 33398, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 33400, "src": "2758:4:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 33397, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2758:4:47", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "2757:6:47" }, "scope": 33401, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], "abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": { "id": 33326, "nodeType": "StructuredDocumentation", "src": "131:70:47", "text": " @dev Interface of the ERC20 standard as defined in the EIP." }, "fullyImplemented": false, "linearizedBaseContracts": [ 33401 ], "name": "IERC20", "nameLocation": "212:6:47", "scope": 33402, "usedErrors": [] } ], "license": "MIT" }, "id": 47 }