{"abi":[{"type":"function","name":"depositERC20Tokens","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"appContract","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"execLayerData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getInputBox","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IInputBox"}],"stateMutability":"view"},{"type":"error","name":"ERC20TransferFailed","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"depositERC20Tokens(address,address,uint256,bytes)":"95854b81","getInputBox()":"00aace9a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ERC20TransferFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"appContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"execLayerData\",\"type\":\"bytes\"}],\"name\":\"depositERC20Tokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getInputBox\",\"outputs\":[{\"internalType\":\"contract IInputBox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"depositERC20Tokens(address,address,uint256,bytes)\":{\"params\":{\"appContract\":\"The application contract address\",\"execLayerData\":\"Additional data to be interpreted by the execution layer\",\"token\":\"The ERC-20 token contract\",\"value\":\"The amount of tokens to be transferred\"}},\"getInputBox()\":{\"returns\":{\"_0\":\"The input box\"}}},\"title\":\"ERC-20 Portal interface\",\"version\":1},\"userdoc\":{\"errors\":{\"ERC20TransferFailed()\":[{\"notice\":\"Failed to transfer ERC-20 tokens to application\"}]},\"kind\":\"user\",\"methods\":{\"depositERC20Tokens(address,address,uint256,bytes)\":{\"notice\":\"Transfer ERC-20 tokens to an application contract and add an input to the application's input box to signal such operation. The caller must allow the portal to withdraw at least `value` tokens from their account beforehand, by calling the `approve` function in the token contract.\"},\"getInputBox()\":{\"notice\":\"Get the input box used by this portal.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/portals/IERC20Portal.sol\":\"IERC20Portal\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.2.0/=dependencies/@openzeppelin-contracts-5.2.0/\",\":forge-std-1.9.6/=dependencies/forge-std-1.9.6/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.2.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"src/inputs/IInputBox.sol\":{\"keccak256\":\"0x960495e2fc963df610c0152c9a3d34038da51d1e8fcee8eb8ec85890b74b0940\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://c0a1a72fe4331032c23101a6026a61f5926744f7e2c189f557165ba6597b0de8\",\"dweb:/ipfs/QmU7ZuL7gcQYA7vDV37xArLBqzZ3c9k5pFDYPRd3rn9jgY\"]},\"src/portals/IERC20Portal.sol\":{\"keccak256\":\"0x0bed69247a0215d0b59edf9089479816317cb6822d73136a3134331531fb1765\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://fb0ee706ebbb58173eb9a81054f861ea6ce8523fcd227fae94413cced9adcc23\",\"dweb:/ipfs/QmX1CTiVeoTy1FLFf1LTUz4uN3DvdB8ejLsuCrsH1pPuwh\"]},\"src/portals/IPortal.sol\":{\"keccak256\":\"0x390bc7ed84639e38e40bef8085486119d6c42057f91f3ab8286a9246198682e2\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://382a0d34ef36bde5b783849c21105b25a8d6909809c21cad267ed34e9d0f8afa\",\"dweb:/ipfs/QmfQMKGcz2jjzh2krTCSgcGBMQZE9uRVB5QUSsT3gF1oTs\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ERC20TransferFailed"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"appContract","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"execLayerData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"depositERC20Tokens"},{"inputs":[],"stateMutability":"view","type":"function","name":"getInputBox","outputs":[{"internalType":"contract IInputBox","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"depositERC20Tokens(address,address,uint256,bytes)":{"params":{"appContract":"The application contract address","execLayerData":"Additional data to be interpreted by the execution layer","token":"The ERC-20 token contract","value":"The amount of tokens to be transferred"}},"getInputBox()":{"returns":{"_0":"The input box"}}},"version":1},"userdoc":{"kind":"user","methods":{"depositERC20Tokens(address,address,uint256,bytes)":{"notice":"Transfer ERC-20 tokens to an application contract and add an input to the application's input box to signal such operation. The caller must allow the portal to withdraw at least `value` tokens from their account beforehand, by calling the `approve` function in the token contract."},"getInputBox()":{"notice":"Get the input box used by this portal."}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.2.0/=dependencies/@openzeppelin-contracts-5.2.0/","forge-std-1.9.6/=dependencies/forge-std-1.9.6/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/portals/IERC20Portal.sol":"IERC20Portal"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.2.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"src/inputs/IInputBox.sol":{"keccak256":"0x960495e2fc963df610c0152c9a3d34038da51d1e8fcee8eb8ec85890b74b0940","urls":["bzz-raw://c0a1a72fe4331032c23101a6026a61f5926744f7e2c189f557165ba6597b0de8","dweb:/ipfs/QmU7ZuL7gcQYA7vDV37xArLBqzZ3c9k5pFDYPRd3rn9jgY"],"license":"Apache-2.0 (see LICENSE)"},"src/portals/IERC20Portal.sol":{"keccak256":"0x0bed69247a0215d0b59edf9089479816317cb6822d73136a3134331531fb1765","urls":["bzz-raw://fb0ee706ebbb58173eb9a81054f861ea6ce8523fcd227fae94413cced9adcc23","dweb:/ipfs/QmX1CTiVeoTy1FLFf1LTUz4uN3DvdB8ejLsuCrsH1pPuwh"],"license":"Apache-2.0 (see LICENSE)"},"src/portals/IPortal.sol":{"keccak256":"0x390bc7ed84639e38e40bef8085486119d6c42057f91f3ab8286a9246198682e2","urls":["bzz-raw://382a0d34ef36bde5b783849c21105b25a8d6909809c21cad267ed34e9d0f8afa","dweb:/ipfs/QmfQMKGcz2jjzh2krTCSgcGBMQZE9uRVB5QUSsT3gF1oTs"],"license":"Apache-2.0 (see LICENSE)"}},"version":1},"id":57}