{ "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.22+commit.4fc1097e\"},\"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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"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.22+commit.4fc1097e" }, "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": [ "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "@uniswap/v3-core/=lib_uniswap/v3-core/", "@uniswap/v3-periphery/=lib_uniswap/v3-periphery/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "v3-core/=lib_uniswap/v3-core/", "v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/" ], "optimizer": { "runs": 999999999, "details": { "peephole": true, "inliner": true, "jumpdestRemover": true, "orderLiterals": true, "deduplicate": true, "cse": true, "constantOptimizer": true, "yul": true, "yulDetails": { "stackAllocation": true, "optimizerSteps": "dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu" } } }, "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": 43557, "exportedSymbols": { "IERC20": [ 43556 ] }, "nodeType": "SourceUnit", "src": "106:2661:20", "nodes": [ { "id": 43480, "nodeType": "PragmaDirective", "src": "106:23:20", "nodes": [], "literals": [ "solidity", "^", "0.8", ".0" ] }, { "id": 43556, "nodeType": "ContractDefinition", "src": "202:2564:20", "nodes": [ { "id": 43490, "nodeType": "EventDefinition", "src": "388:72:20", "nodes": [], "anonymous": false, "documentation": { "id": 43482, "nodeType": "StructuredDocumentation", "src": "225:158:20", "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:20", "parameters": { "id": 43489, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43484, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:20", "nodeType": "VariableDeclaration", "scope": 43490, "src": "403:20:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43483, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:20", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43486, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:20", "nodeType": "VariableDeclaration", "scope": 43490, "src": "425:18:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43485, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:20", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43488, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:20", "nodeType": "VariableDeclaration", "scope": 43490, "src": "445:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43487, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "402:57:20" } }, { "id": 43499, "nodeType": "EventDefinition", "src": "619:78:20", "nodes": [], "anonymous": false, "documentation": { "id": 43491, "nodeType": "StructuredDocumentation", "src": "466:148:20", "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:20", "parameters": { "id": 43498, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43493, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:20", "nodeType": "VariableDeclaration", "scope": 43499, "src": "634:21:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43492, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:20", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43495, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:20", "nodeType": "VariableDeclaration", "scope": 43499, "src": "657:23:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43494, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:20", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43497, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:20", "nodeType": "VariableDeclaration", "scope": 43499, "src": "682:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43496, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "633:63:20" } }, { "id": 43505, "nodeType": "FunctionDefinition", "src": "774:55:20", "nodes": [], "documentation": { "id": 43500, "nodeType": "StructuredDocumentation", "src": "703:66:20", "text": " @dev Returns the amount of tokens in existence." }, "functionSelector": "18160ddd", "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:20", "parameters": { "id": 43501, "nodeType": "ParameterList", "parameters": [], "src": "794:2:20" }, "returnParameters": { "id": 43504, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43503, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 43505, "src": "820:7:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43502, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "819:9:20" }, "scope": 43556, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 43513, "nodeType": "FunctionDefinition", "src": "912:68:20", "nodes": [], "documentation": { "id": 43506, "nodeType": "StructuredDocumentation", "src": "835:72:20", "text": " @dev Returns the amount of tokens owned by `account`." }, "functionSelector": "70a08231", "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:20", "parameters": { "id": 43509, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43508, "mutability": "mutable", "name": "account", "nameLocation": "939:7:20", "nodeType": "VariableDeclaration", "scope": 43513, "src": "931:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43507, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:20", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "930:17:20" }, "returnParameters": { "id": 43512, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43511, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 43513, "src": "971:7:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43510, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "970:9:20" }, "scope": 43556, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 43523, "nodeType": "FunctionDefinition", "src": "1193:70:20", "nodes": [], "documentation": { "id": 43514, "nodeType": "StructuredDocumentation", "src": "986:202:20", "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:20", "parameters": { "id": 43519, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43516, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:20", "nodeType": "VariableDeclaration", "scope": 43523, "src": "1211:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43515, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:20", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43518, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:20", "nodeType": "VariableDeclaration", "scope": 43523, "src": "1223:14:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43517, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "1210:28:20" }, "returnParameters": { "id": 43522, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43521, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 43523, "src": "1257:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 43520, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "1256:6:20" }, "scope": 43556, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 43533, "nodeType": "FunctionDefinition", "src": "1538:83:20", "nodes": [], "documentation": { "id": 43524, "nodeType": "StructuredDocumentation", "src": "1269:264:20", "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:20", "parameters": { "id": 43529, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43526, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:20", "nodeType": "VariableDeclaration", "scope": 43533, "src": "1557:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43525, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:20", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43528, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:20", "nodeType": "VariableDeclaration", "scope": 43533, "src": "1572:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43527, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:20", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "1556:32:20" }, "returnParameters": { "id": 43532, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43531, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 43533, "src": "1612:7:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43530, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "1611:9:20" }, "scope": 43556, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 43543, "nodeType": "FunctionDefinition", "src": "2274:74:20", "nodes": [], "documentation": { "id": 43534, "nodeType": "StructuredDocumentation", "src": "1627:642:20", "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:20", "parameters": { "id": 43539, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43536, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:20", "nodeType": "VariableDeclaration", "scope": 43543, "src": "2291:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43535, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:20", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43538, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:20", "nodeType": "VariableDeclaration", "scope": 43543, "src": "2308:14:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43537, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "2290:33:20" }, "returnParameters": { "id": 43542, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43541, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 43543, "src": "2342:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 43540, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "2341:6:20" }, "scope": 43556, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 43555, "nodeType": "FunctionDefinition", "src": "2646:118:20", "nodes": [], "documentation": { "id": 43544, "nodeType": "StructuredDocumentation", "src": "2354:287:20", "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:20", "parameters": { "id": 43551, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43546, "mutability": "mutable", "name": "from", "nameLocation": "2685:4:20", "nodeType": "VariableDeclaration", "scope": 43555, "src": "2677:12:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43545, "name": "address", "nodeType": "ElementaryTypeName", "src": "2677:7:20", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43548, "mutability": "mutable", "name": "to", "nameLocation": "2707:2:20", "nodeType": "VariableDeclaration", "scope": 43555, "src": "2699:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43547, "name": "address", "nodeType": "ElementaryTypeName", "src": "2699:7:20", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43550, "mutability": "mutable", "name": "amount", "nameLocation": "2727:6:20", "nodeType": "VariableDeclaration", "scope": 43555, "src": "2719:14:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43549, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2719:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "2667:72:20" }, "returnParameters": { "id": 43554, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43553, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 43555, "src": "2758:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 43552, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2758:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "2757:6:20" }, "scope": 43556, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], "abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": { "id": 43481, "nodeType": "StructuredDocumentation", "src": "131:70:20", "text": " @dev Interface of the ERC20 standard as defined in the EIP." }, "fullyImplemented": false, "linearizedBaseContracts": [ 43556 ], "name": "IERC20", "nameLocation": "212:6:20", "scope": 43557, "usedErrors": [], "usedEvents": [ 43490, 43499 ] } ], "license": "MIT" }, "id": 20 }