UNPKG

@uniswap/v4-core

Version:

🦄 Core smart contracts of Uniswap v4

1 lines • 24.6 kB
{"abi":[{"type":"constructor","inputs":[{"name":"amountToMint","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transfer","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60803460be57601f61084c38819003918201601f19168301916001600160401b0383118484101760c25780849260209460405283398101031260be5751335f525f60205260405f20549080820180921160aa578110607257335f525f60205260405f205560405161077590816100d78239f35b60405162461bcd60e51b815260206004820152601060248201526f6f766572666c6f772062616c616e636560801b6044820152606490fd5b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063095ea7b31461063957806323b872dd146103c757806340c10f19146102ed57806370a082311461028b578063a9059cbb146100eb5763dd62ed3e1461005b575f80fd5b346100e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576100926106db565b73ffffffffffffffffffffffffffffffffffffffff6100af6106fe565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b346100e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576101226106db565b60243590335f525f60205260405f20549082821061022d576101598373ffffffffffffffffffffffffffffffffffffffff93610721565b335f525f60205260405f20551690815f525f60205260405f20548061017e838261075b565b106101cf578161018d9161075b565b825f525f60205260405f20556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a360206040515f8152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f726563697069656e742062616c616e6365206f766572666c6f770000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152fd5b346100e75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e75773ffffffffffffffffffffffffffffffffffffffff6102d76106db565b165f525f602052602060405f2054604051908152f35b346100e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576103246106db565b73ffffffffffffffffffffffffffffffffffffffff6024359116805f525f6020526103538260405f205461075b565b918210610369575f525f60205260405f20555f80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6f766572666c6f772062616c616e6365000000000000000000000000000000006044820152fd5b346100e75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576103fe6106db565b6104066106fe565b73ffffffffffffffffffffffffffffffffffffffff604435921690815f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054908382106105db576104758473ffffffffffffffffffffffffffffffffffffffff93610721565b835f52600160205260405f208333165f5260205260405f20551691825f525f60205260405f2054806104a7838261075b565b1061057d57816104b69161075b565b835f525f60205260405f2055815f525f60205260405f205481811061051f57816105037fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93602093610721565b845f525f835260405f2055604051908152a360206040515f8152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f756e646572666c6f772062616c616e63652073656e64657200000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6f766572666c6f772062616c616e636520726563697069656e740000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f616c6c6f77616e636520696e73756666696369656e74000000000000000000006044820152fd5b346100e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576106706106db565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600160205260405f208282165f526020528260405f205560405192835216907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a360206040515f8152f35b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100e757565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100e757565b9190820391821161072e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9190820180921161072e5756fea164736f6c634300081a000a","sourceMap":"195:2127:101:-:0;;;;;;;;;;;;;-1:-1:-1;;195:2127:101;;;;-1:-1:-1;;;;;195:2127:101;;;;;;;;;;;;;;;;;;;;;;;;432:10;-1:-1:-1;195:2127:101;-1:-1:-1;195:2127:101;;;-1:-1:-1;195:2127:101;;;;;;;;;;;591:21;;195:2127;;432:10;-1:-1:-1;195:2127:101;-1:-1:-1;195:2127:101;;;-1:-1:-1;195:2127:101;;;;;;;;;;;;;;-1:-1:-1;;;195:2127:101;;;;;;;;;;;;-1:-1:-1;;;195:2127:101;;;;;;;;;;;-1:-1:-1;195:2127:101;;;;;-1:-1:-1;195:2127:101;;-1:-1:-1;195:2127:101;;;;;;-1:-1:-1;195:2127:101;;;;;-1:-1:-1;195:2127:101","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063095ea7b31461063957806323b872dd146103c757806340c10f19146102ed57806370a082311461028b578063a9059cbb146100eb5763dd62ed3e1461005b575f80fd5b346100e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576100926106db565b73ffffffffffffffffffffffffffffffffffffffff6100af6106fe565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b346100e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576101226106db565b60243590335f525f60205260405f20549082821061022d576101598373ffffffffffffffffffffffffffffffffffffffff93610721565b335f525f60205260405f20551690815f525f60205260405f20548061017e838261075b565b106101cf578161018d9161075b565b825f525f60205260405f20556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a360206040515f8152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f726563697069656e742062616c616e6365206f766572666c6f770000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152fd5b346100e75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e75773ffffffffffffffffffffffffffffffffffffffff6102d76106db565b165f525f602052602060405f2054604051908152f35b346100e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576103246106db565b73ffffffffffffffffffffffffffffffffffffffff6024359116805f525f6020526103538260405f205461075b565b918210610369575f525f60205260405f20555f80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6f766572666c6f772062616c616e6365000000000000000000000000000000006044820152fd5b346100e75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576103fe6106db565b6104066106fe565b73ffffffffffffffffffffffffffffffffffffffff604435921690815f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054908382106105db576104758473ffffffffffffffffffffffffffffffffffffffff93610721565b835f52600160205260405f208333165f5260205260405f20551691825f525f60205260405f2054806104a7838261075b565b1061057d57816104b69161075b565b835f525f60205260405f2055815f525f60205260405f205481811061051f57816105037fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93602093610721565b845f525f835260405f2055604051908152a360206040515f8152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f756e646572666c6f772062616c616e63652073656e64657200000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6f766572666c6f772062616c616e636520726563697069656e740000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f616c6c6f77616e636520696e73756666696369656e74000000000000000000006044820152fd5b346100e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576106706106db565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600160205260405f208282165f526020528260405f205560405192835216907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a360206040515f8152f35b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100e757565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100e757565b9190820391821161072e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9190820180921161072e5756fea164736f6c634300081a000a","sourceMap":"195:2127:101:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;303:73;195:2127;;;;;;303:73;195:2127;-1:-1:-1;195:2127:101;;;;;-1:-1:-1;195:2127:101;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;813:10;;195:2127;;;;;;;;;842:23;;;;195:2127;;924:22;;195:2127;924:22;;:::i;:::-;813:10;195:2127;;;;;;;;;;;;;;;;;;;;;1022:25;;;;;:::i;:::-;:45;195:2127;;1131:25;;;;:::i;:::-;195:2127;;;;;;;;;;;;;;;1172:39;195:2127;813:10;1172:39;;195:2127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;551:22;195:2127;;;;;551:22;:::i;:::-;591:21;;;195:2127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;1667:10;195:2127;-1:-1:-1;195:2127:101;;;;-1:-1:-1;195:2127:101;;1696:25;;;;195:2127;;1791:24;;195:2127;1791:24;;:::i;:::-;195:2127;;;;;;;;;1667:10;;195:2127;-1:-1:-1;195:2127:101;;;;-1:-1:-1;195:2127:101;;;;;;;;;;;;;;1891:25;;;;;:::i;:::-;:45;195:2127;;2000:25;;;;:::i;:::-;195:2127;;;;;;;;;;;;;;;;;;;;2094:23;;;195:2127;;2176:22;;2214:35;2176:22;195:2127;2176:22;;:::i;:::-;195:2127;;;;;;;;;;;;;;;2214:35;195:2127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1391:10;;195:2127;;;;;;;;;;;-1:-1:-1;195:2127:101;;;;;-1:-1:-1;195:2127:101;;;;;;;;1391:10;1435:37;195:2127;1391:10;1435:37;;195:2127;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","mint(address,uint256)":"40c10f19","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToMint\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"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\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"params\":{\"owner\":\"The account that approved spending of its tokens\",\"spender\":\"The account for which the spending allowance was modified\",\"value\":\"The new allowance from the owner to the spender\"}},\"Transfer(address,address,uint256)\":{\"params\":{\"from\":\"The account from which the tokens were sent, i.e. the balance decreased\",\"to\":\"The account to which the tokens were sent, i.e. the balance increased\",\"value\":\"The amount of tokens that were transferred\"}}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"params\":{\"amount\":\"The amount of tokens allowed to be used by `spender`\",\"spender\":\"The account which will be allowed to spend a given amount of the owners tokens\"},\"returns\":{\"_0\":\"Returns true for a successful approval, false for unsuccessful\"}},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The number of tokens to send from the sender to the recipient\",\"recipient\":\"The account that will receive the amount transferred\"},\"returns\":{\"_0\":\"Returns true for a successful transfer, false for an unsuccessful transfer\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The amount of the transfer\",\"recipient\":\"The recipient of the transfer\",\"sender\":\"The account from which the transfer will be initiated\"},\"returns\":{\"_0\":\"Returns true for a successful transfer, false for unsuccessful\"}}},\"stateVariables\":{\"allowance\":{\"params\":{\"owner\":\"The account of the token owner\",\"spender\":\"The account of the token spender\"},\"return\":\"The current allowance granted by `owner` to `spender`\",\"returns\":{\"_0\":\"The current allowance granted by `owner` to `spender`\"}},\"balanceOf\":{\"params\":{\"account\":\"The account for which to look up the number of tokens it has, i.e. its balance\"},\"return\":\"The number of tokens held by the account\",\"returns\":{\"_0\":\"The number of tokens held by the account\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"notice\":\"Event emitted when the approval amount for the spender of a given owner's tokens changes.\"},\"Transfer(address,address,uint256)\":{\"notice\":\"Event emitted when tokens are transferred from one address to another, either via `#transfer` or `#transferFrom`.\"}},\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"Returns the current allowance given to a spender by an owner\"},\"approve(address,uint256)\":{\"notice\":\"Sets the allowance of a spender from the `msg.sender` to the value `amount`\"},\"balanceOf(address)\":{\"notice\":\"Returns an account's balance in the token\"},\"transfer(address,uint256)\":{\"notice\":\"Transfers the amount of token from the `msg.sender` to the recipient\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `sender` to `recipient` up to the allowance given to the `msg.sender`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/TestInvalidERC20.sol\":\"TestInvalidERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":44444444},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"src/test/TestInvalidERC20.sol\":{\"keccak256\":\"0xad24e7e19a1c42198e322e9a53495dd23ec0587c78a701e6dc3188b314246717\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://998f949e953c3b9c2586e7d43fd87a39eb3570bc491730fc7f95cdbb2ef6d4b1\",\"dweb:/ipfs/QmSAKgoJm3m5KErGQxeypixVwkpmtGKmp5Yk3Jjr9h3jXN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"amountToMint","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"","type":"address"},{"internalType":"address","name":"","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":"","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"params":{"amount":"The amount of tokens allowed to be used by `spender`","spender":"The account which will be allowed to spend a given amount of the owners tokens"},"returns":{"_0":"Returns true for a successful approval, false for unsuccessful"}},"transfer(address,uint256)":{"params":{"amount":"The number of tokens to send from the sender to the recipient","recipient":"The account that will receive the amount transferred"},"returns":{"_0":"Returns true for a successful transfer, false for an unsuccessful transfer"}},"transferFrom(address,address,uint256)":{"params":{"amount":"The amount of the transfer","recipient":"The recipient of the transfer","sender":"The account from which the transfer will be initiated"},"returns":{"_0":"Returns true for a successful transfer, false for unsuccessful"}}},"version":1},"userdoc":{"kind":"user","methods":{"allowance(address,address)":{"notice":"Returns the current allowance given to a spender by an owner"},"approve(address,uint256)":{"notice":"Sets the allowance of a spender from the `msg.sender` to the value `amount`"},"balanceOf(address)":{"notice":"Returns an account's balance in the token"},"transfer(address,uint256)":{"notice":"Transfers the amount of token from the `msg.sender` to the recipient"},"transferFrom(address,address,uint256)":{"notice":"Transfers `amount` tokens from `sender` to `recipient` up to the allowance given to the `msg.sender`"}},"version":1}},"settings":{"remappings":["@ensdomains/=node_modules/@ensdomains/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solmate/=lib/solmate/"],"optimizer":{"enabled":true,"runs":44444444},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/test/TestInvalidERC20.sol":"TestInvalidERC20"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"src/test/TestInvalidERC20.sol":{"keccak256":"0xad24e7e19a1c42198e322e9a53495dd23ec0587c78a701e6dc3188b314246717","urls":["bzz-raw://998f949e953c3b9c2586e7d43fd87a39eb3570bc491730fc7f95cdbb2ef6d4b1","dweb:/ipfs/QmSAKgoJm3m5KErGQxeypixVwkpmtGKmp5Yk3Jjr9h3jXN"],"license":"UNLICENSED"}},"version":1},"id":101}