@uniswap/v4-core
Version:
🦄 Core smart contracts of Uniswap v4
1 lines • 24.6 kB
JSON
{"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":"0x60803460be57601f61084f38819003918201601f19168301916001600160401b0383118484101760c25780849260209460405283398101031260be5751335f525f60205260405f20549080820180921160aa578110607257335f525f60205260405f205560405161077890816100d78239f35b60405162461bcd60e51b815260206004820152601060248201526f6f766572666c6f772062616c616e636560801b6044820152606490fd5b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063095ea7b31461063b57806323b872dd146103c857806340c10f19146102ee57806370a082311461028c578063a9059cbb146100eb5763dd62ed3e1461005b575f80fd5b346100e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576100926106de565b73ffffffffffffffffffffffffffffffffffffffff6100af610701565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b346100e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576101226106de565b60243590335f525f60205260405f20549082821061022e576101598373ffffffffffffffffffffffffffffffffffffffff93610724565b335f525f60205260405f20551690815f525f60205260405f20548061017e838261075e565b106101d0578161018d9161075e565b825f525f60205260405f20556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3602060405160018152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f726563697069656e742062616c616e6365206f766572666c6f770000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152fd5b346100e75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e75773ffffffffffffffffffffffffffffffffffffffff6102d86106de565b165f525f602052602060405f2054604051908152f35b346100e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576103256106de565b73ffffffffffffffffffffffffffffffffffffffff6024359116805f525f6020526103548260405f205461075e565b91821061036a575f525f60205260405f20555f80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6f766572666c6f772062616c616e6365000000000000000000000000000000006044820152fd5b346100e75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576103ff6106de565b610407610701565b73ffffffffffffffffffffffffffffffffffffffff604435921690815f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054908382106105dd576104768473ffffffffffffffffffffffffffffffffffffffff93610724565b835f52600160205260405f208333165f5260205260405f20551691825f525f60205260405f2054806104a8838261075e565b1061057f57816104b79161075e565b835f525f60205260405f2055815f525f60205260405f205481811061052157816105047fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93602093610724565b845f525f835260405f2055604051908152a3602060405160018152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f756e646572666c6f772062616c616e63652073656e64657200000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6f766572666c6f772062616c616e636520726563697069656e740000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f616c6c6f77616e636520696e73756666696369656e74000000000000000000006044820152fd5b346100e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576106726106de565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600160205260405f208282165f526020528260405f205560405192835216907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100e757565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100e757565b9190820391821161073157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b919082018092116107315756fea164736f6c634300081a000a","sourceMap":"138:2033:100:-:0;;;;;;;;;;;;;-1:-1:-1;;138:2033:100;;;;-1:-1:-1;;;;;138:2033:100;;;;;;;;;;;;;;;;;;;;;;;;368:10;-1:-1:-1;138:2033:100;-1:-1:-1;138:2033:100;;;-1:-1:-1;138:2033:100;;;;;;;;;;;527:21;;138:2033;;368:10;-1:-1:-1;138:2033:100;-1:-1:-1;138:2033:100;;;-1:-1:-1;138:2033:100;;;;;;;;;;;;;;-1:-1:-1;;;138:2033:100;;;;;;;;;;;;-1:-1:-1;;;138:2033:100;;;;;;;;;;;-1:-1:-1;138:2033:100;;;;;-1:-1:-1;138:2033:100;;-1:-1:-1;138:2033:100;;;;;;-1:-1:-1;138:2033:100;;;;;-1:-1:-1;138:2033:100","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063095ea7b31461063b57806323b872dd146103c857806340c10f19146102ee57806370a082311461028c578063a9059cbb146100eb5763dd62ed3e1461005b575f80fd5b346100e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576100926106de565b73ffffffffffffffffffffffffffffffffffffffff6100af610701565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b346100e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576101226106de565b60243590335f525f60205260405f20549082821061022e576101598373ffffffffffffffffffffffffffffffffffffffff93610724565b335f525f60205260405f20551690815f525f60205260405f20548061017e838261075e565b106101d0578161018d9161075e565b825f525f60205260405f20556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3602060405160018152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f726563697069656e742062616c616e6365206f766572666c6f770000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152fd5b346100e75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e75773ffffffffffffffffffffffffffffffffffffffff6102d86106de565b165f525f602052602060405f2054604051908152f35b346100e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576103256106de565b73ffffffffffffffffffffffffffffffffffffffff6024359116805f525f6020526103548260405f205461075e565b91821061036a575f525f60205260405f20555f80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6f766572666c6f772062616c616e6365000000000000000000000000000000006044820152fd5b346100e75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576103ff6106de565b610407610701565b73ffffffffffffffffffffffffffffffffffffffff604435921690815f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054908382106105dd576104768473ffffffffffffffffffffffffffffffffffffffff93610724565b835f52600160205260405f208333165f5260205260405f20551691825f525f60205260405f2054806104a8838261075e565b1061057f57816104b79161075e565b835f525f60205260405f2055815f525f60205260405f205481811061052157816105047fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93602093610724565b845f525f835260405f2055604051908152a3602060405160018152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f756e646572666c6f772062616c616e63652073656e64657200000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6f766572666c6f772062616c616e636520726563697069656e740000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f616c6c6f77616e636520696e73756666696369656e74000000000000000000006044820152fd5b346100e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100e7576106726106de565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600160205260405f208282165f526020528260405f205560405192835216907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100e757565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100e757565b9190820391821161073157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b919082018092116107315756fea164736f6c634300081a000a","sourceMap":"138:2033:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;239:73;138:2033;;;;;;239:73;138:2033;-1:-1:-1;138:2033:100;;;;;-1:-1:-1;138:2033:100;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;749:10;;138:2033;;;;;;;;;778:23;;;;138:2033;;860:22;;138:2033;860:22;;:::i;:::-;749:10;138:2033;;;;;;;;;;;;;;;;;;;;;958:25;;;;;:::i;:::-;:45;138:2033;;1067:25;;;;:::i;:::-;138:2033;;;;;;;;;;;;;;;1108:39;138:2033;749:10;1108:39;;138:2033;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;487:22;138:2033;;;;;487:22;:::i;:::-;527:21;;;138:2033;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;1559:10;138:2033;-1:-1:-1;138:2033:100;;;;-1:-1:-1;138:2033:100;;1588:25;;;;138:2033;;1683:24;;138:2033;1683:24;;:::i;:::-;138:2033;;;;;;;;;1559:10;;138:2033;-1:-1:-1;138:2033:100;;;;-1:-1:-1;138:2033:100;;;;;;;;;;;;;;1783:25;;;;;:::i;:::-;:45;138:2033;;1892:25;;;;:::i;:::-;138:2033;;;;;;;;;;;;;;;;;;;;1986:23;;;138:2033;;2068:22;;2106:35;2068:22;138:2033;2068:22;;:::i;:::-;138:2033;;;;;;;;;;;;;;;2106:35;138:2033;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1284:10;;138:2033;;;;;;;;;;;-1:-1:-1;138:2033:100;;;;;-1:-1:-1;138:2033:100;;;;;;;;1284:10;1328:37;138:2033;1284:10;1328:37;;138:2033;;;;;;;;;;;;;;;;;;:::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/TestERC20.sol\":\"TestERC20\"},\"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/TestERC20.sol\":{\"keccak256\":\"0x9dd2e3e553105280dacf971f30f749fa8fcb150337ac16b11d02efd40a46391d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://950737a85fa24a43018d22d122b63fa5f8ede7ab931b4143738141de0337b62b\",\"dweb:/ipfs/QmPLafnsV7Y5ju8uFo2YLqfJeeu8bbaK7usfbg6PWT1ff1\"]}},\"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/TestERC20.sol":"TestERC20"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"src/test/TestERC20.sol":{"keccak256":"0x9dd2e3e553105280dacf971f30f749fa8fcb150337ac16b11d02efd40a46391d","urls":["bzz-raw://950737a85fa24a43018d22d122b63fa5f8ede7ab931b4143738141de0337b62b","dweb:/ipfs/QmPLafnsV7Y5ju8uFo2YLqfJeeu8bbaK7usfbg6PWT1ff1"],"license":"UNLICENSED"}},"version":1},"id":100}