{"abi":[{"type":"constructor","inputs":[{"name":"inputBox","type":"address","internalType":"contract IInputBox"}],"stateMutability":"nonpayable"},{"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":"0x60a034606d57601f61036c38819003918201601f19168301916001600160401b03831184841017607157808492602094604052833981010312606d57516001600160a01b0381168103606d576080526040516102e69081610086823960805181818161018b015261024b0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c908162aace9a1461023957506395854b8114610031575f80fd5b346101d95760803660031901126101d9576004356001600160a01b0381168082036101d9576024356001600160a01b038116908190036101d957604435916064359167ffffffffffffffff83116101d957366023840112156101d95782600401359167ffffffffffffffff83116101d95736602484860101116101d95760205f916064604051809481936323b872dd60e01b83523360048401528760248401528a60448401525af19081156101e4575f916101fe575b50156101ef5761014360686020958460649560246040519889948b86019c6bffffffffffffffffffffffff199060601b168d523360601b60348701526048860152018484013781015f838201520301601f19810185528461027a565b6040519485938492631789cd6360e01b84526004840152604060248401525180918160448501528484015e5f838284010152601f801991011681010301815f60018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156101e4576101b957005b602090813d83116101dd575b6101cf818361027a565b810103126101d957005b5f80fd5b503d6101c5565b6040513d5f823e3d90fd5b633c9fd93960e21b5f5260045ffd5b90506020813d602011610231575b816102196020938361027a565b810103126101d9575180151581036101d9575f6100e7565b3d915061020c565b346101d9575f3660031901126101d9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b90601f8019910116810190811067ffffffffffffffff82111761029c57604052565b634e487b7160e01b5f52604160045260245ffdfea264697066735822122035c285685db533c541d38f9691c74a5903787f3a4f92da9454e3450141abe75864736f6c634300081e0033","sourceMap":"583:703:52:-:0;;;;;;;;;;;;;-1:-1:-1;;583:703:52;;;;-1:-1:-1;;;;;583:703:52;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;583:703:52;;;;;;567:20:61;;583:703:52;;;;;;;;567:20:61;583:703:52;;;;;;;;;;;;-1:-1:-1;583:703:52;;;;;;-1:-1:-1;583:703:52;;;;;-1:-1:-1;583:703:52","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c908162aace9a1461023957506395854b8114610031575f80fd5b346101d95760803660031901126101d9576004356001600160a01b0381168082036101d9576024356001600160a01b038116908190036101d957604435916064359167ffffffffffffffff83116101d957366023840112156101d95782600401359167ffffffffffffffff83116101d95736602484860101116101d95760205f916064604051809481936323b872dd60e01b83523360048401528760248401528a60448401525af19081156101e4575f916101fe575b50156101ef5761014360686020958460649560246040519889948b86019c6bffffffffffffffffffffffff199060601b168d523360601b60348701526048860152018484013781015f838201520301601f19810185528461027a565b6040519485938492631789cd6360e01b84526004840152604060248401525180918160448501528484015e5f838284010152601f801991011681010301815f60018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156101e4576101b957005b602090813d83116101dd575b6101cf818361027a565b810103126101d957005b5f80fd5b503d6101c5565b6040513d5f823e3d90fd5b633c9fd93960e21b5f5260045ffd5b90506020813d602011610231575b816102196020938361027a565b810103126101d9575180151581036101d9575f6100e7565b3d915061020c565b346101d9575f3660031901126101d9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b90601f8019910116810190811067ffffffffffffffff82111761029c57604052565b634e487b7160e01b5f52604160045260245ffdfea264697066735822122035c285685db533c541d38f9691c74a5903787f3a4f92da9454e3450141abe75864736f6c634300081e0033","sourceMap":"583:703:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;583:703:52;;;;;;-1:-1:-1;;;;;583:703:52;;;;;;;;;-1:-1:-1;;;;;583:703:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;976:50;;995:10;583:703;976:50;;583:703;;;;;;;;;;;976:50;;;;;;;583:703;976:50;;;583:703;1041:8;;1037:67;;1658:198:22;583:703:52;;;;;;;;;1658:198:22;;;;;;583:703:52;;;;;;;;;995:10;583:703;;;;;;;;;;;;;;;;;;;;;;1658:198:22;;;;;;;;;;:::i;:::-;583:703:52;;;;;;;;;;1233:44;;583:703;1233:44;;583:703;;;;;;;;;;;;;;;;;;;;;;;;;;1658:198:22;;583:703:52;;;;;1233:44;;583:703;;;;;;;681:9:61;583:703:52;1233:44;;;;;;;;583:703;1233:44;583:703;1233:44;;;;;;;;;;;;:::i;:::-;;;583:703;;;;;;;;;1233:44;;;;;;583:703;;;;;;;;;1037:67;1072:21;;;583:703;1072:21;583:703;;1072:21;976:50;;;583:703;976:50;;583:703;976:50;;;;;;583:703;976:50;;;:::i;:::-;;;583:703;;;;;;;;;;;;976:50;;;;;;-1:-1:-1;976:50:52;;583:703;;;;;;-1:-1:-1;;583:703:52;;;;681:9:61;-1:-1:-1;;;;;583:703:52;;;;;;;;;1658:198:22;;583:703:52;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;583:703:52;;;;;-1:-1:-1;583:703:52","linkReferences":{},"immutableReferences":{"5443":[{"start":395,"length":32},{"start":587,"length":32}]}},"methodIdentifiers":{"depositERC20Tokens(address,address,uint256,bytes)":"95854b81","getInputBox()":"00aace9a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IInputBox\",\"name\":\"inputBox\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":{\"constructor\":{\"params\":{\"inputBox\":\"The input box used by the portal\"}},\"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\",\"version\":1},\"userdoc\":{\"errors\":{\"ERC20TransferFailed()\":[{\"notice\":\"Failed to transfer ERC-20 tokens to application\"}]},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructs the portal.\"},\"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.\"}},\"notice\":\"This contract allows anyone to perform transfers of ERC-20 tokens to an application contract while informing the off-chain machine.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/portals/ERC20Portal.sol\":\"ERC20Portal\"},\"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/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x68d6fdbeb467192c3627a46aa7bf5cbb73267363b740abc511f521a5a41a446e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ce608c19d5e917c60f9c8aa3e5f0eb05b326280ac0a235e8bb9a848a3a64a91\",\"dweb:/ipfs/QmdLPsWQJj7JvRae8MM13GEo4PBXaEFmD4b4heqcyMJNPG\"]},\"dependencies/@openzeppelin-contracts-5.2.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.2.0/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"dependencies/@openzeppelin-contracts-5.2.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/common/InputEncoding.sol\":{\"keccak256\":\"0xd041b3bb0de75e8415fb1976b1269a396053e7f43975449d0b172bf096f032c1\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://d954aaea18fcfcd72ff7180551629e40a60a625445ecb0e01ffdf225c7048cc5\",\"dweb:/ipfs/QmeuK58dJc8tD2Tm5ygf9Chf5wVQ73wtuGibf8wtKQd8oX\"]},\"src/inputs/IInputBox.sol\":{\"keccak256\":\"0x960495e2fc963df610c0152c9a3d34038da51d1e8fcee8eb8ec85890b74b0940\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://c0a1a72fe4331032c23101a6026a61f5926744f7e2c189f557165ba6597b0de8\",\"dweb:/ipfs/QmU7ZuL7gcQYA7vDV37xArLBqzZ3c9k5pFDYPRd3rn9jgY\"]},\"src/portals/ERC20Portal.sol\":{\"keccak256\":\"0x5afd68b47b15bc79ea7f12a9cd57803816c70f4188133ff3ddba824b927aab70\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://d7208aa0b047f5332d8c220c5c71100d7e11568b1e5ab2899e15b0be283307c4\",\"dweb:/ipfs/QmRQ4NgJDPyJgeomQnh5yS3HCGLx67syLd2WKCqp7sNbFL\"]},\"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\"]},\"src/portals/Portal.sol\":{\"keccak256\":\"0x856903fa5afea5caaae8418f3c7f9314d88825ddec9177f6d4a9f0defe685c45\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://e99efb07ff4e54dd4b0aa0f1f0908e280e2a842aa75824e0328aa1e7e8f0d1c0\",\"dweb:/ipfs/QmUftUnphDm5DjCxBxsUYCJfEdUCLNYcStK2Q4j5kW58N1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IInputBox","name":"inputBox","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":{"constructor":{"params":{"inputBox":"The input box used by the portal"}},"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":{"constructor":{"notice":"Constructs the portal."},"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/ERC20Portal.sol":"ERC20Portal"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.2.0/token/ERC1155/IERC1155.sol":{"keccak256":"0x68d6fdbeb467192c3627a46aa7bf5cbb73267363b740abc511f521a5a41a446e","urls":["bzz-raw://7ce608c19d5e917c60f9c8aa3e5f0eb05b326280ac0a235e8bb9a848a3a64a91","dweb:/ipfs/QmdLPsWQJj7JvRae8MM13GEo4PBXaEFmD4b4heqcyMJNPG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.2.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.2.0/token/ERC721/IERC721.sol":{"keccak256":"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261","urls":["bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11","dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.2.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/common/InputEncoding.sol":{"keccak256":"0xd041b3bb0de75e8415fb1976b1269a396053e7f43975449d0b172bf096f032c1","urls":["bzz-raw://d954aaea18fcfcd72ff7180551629e40a60a625445ecb0e01ffdf225c7048cc5","dweb:/ipfs/QmeuK58dJc8tD2Tm5ygf9Chf5wVQ73wtuGibf8wtKQd8oX"],"license":"Apache-2.0 (see LICENSE)"},"src/inputs/IInputBox.sol":{"keccak256":"0x960495e2fc963df610c0152c9a3d34038da51d1e8fcee8eb8ec85890b74b0940","urls":["bzz-raw://c0a1a72fe4331032c23101a6026a61f5926744f7e2c189f557165ba6597b0de8","dweb:/ipfs/QmU7ZuL7gcQYA7vDV37xArLBqzZ3c9k5pFDYPRd3rn9jgY"],"license":"Apache-2.0 (see LICENSE)"},"src/portals/ERC20Portal.sol":{"keccak256":"0x5afd68b47b15bc79ea7f12a9cd57803816c70f4188133ff3ddba824b927aab70","urls":["bzz-raw://d7208aa0b047f5332d8c220c5c71100d7e11568b1e5ab2899e15b0be283307c4","dweb:/ipfs/QmRQ4NgJDPyJgeomQnh5yS3HCGLx67syLd2WKCqp7sNbFL"],"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)"},"src/portals/Portal.sol":{"keccak256":"0x856903fa5afea5caaae8418f3c7f9314d88825ddec9177f6d4a9f0defe685c45","urls":["bzz-raw://e99efb07ff4e54dd4b0aa0f1f0908e280e2a842aa75824e0328aa1e7e8f0d1c0","dweb:/ipfs/QmUftUnphDm5DjCxBxsUYCJfEdUCLNYcStK2Q4j5kW58N1"],"license":"Apache-2.0 (see LICENSE)"}},"version":1},"id":52}