UNPKG

@tokamak-network/thanos-contracts

Version:
1 lines 89 kB
{"abi":[{"type":"function","name":"sendMessage","inputs":[{"name":"_target","type":"address","internalType":"address"},{"name":"_message","type":"bytes","internalType":"bytes"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"xDomainMessageSender","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"sendMessage(address,bytes,uint32)":"3dbb202b","xDomainMessageSender()":"6e296e45"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"}],\"name\":\"sendMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"xDomainMessageSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/tokamak-contracts/USDC/L1//tokamak-UsdcBridge/L1UsdcBridge.sol\":\"ICrossDomainMessenger\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"src/tokamak-contracts/USDC/L1//tokamak-UsdcBridge/L1UsdcBridge.sol\":{\"keccak256\":\"0xbd0042d258b9f10397ccb81dea8fc2ee5d787e5e20bc6d03f28aa62948b8be87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2cdb3bbe78dbcf306b0a49b09f149e94ee6d1c22b16d3e2315d5b5e356dc9\",\"dweb:/ipfs/QmUcRuWcqqzDboPkVLLwdDGqj4vzc83DWp98cxsbZ1pixj\"]},\"src/tokamak-contracts/USDC/L1//tokamak-UsdcBridge/L1UsdcBridgeStorage.sol\":{\"keccak256\":\"0xcca6b8186e534ad59a4878f6756334175cd50aca504c4139d21930fce77e5b00\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4a647cb71c35e41a53248db3c03a3d05ae169180465ee6947b48efd05afd4f5\",\"dweb:/ipfs/Qmf26yXFLCm8LmX4CKCoZ6wg6pGrnJmC3VYXhLFNHsA49i\"]},\"src/tokamak-contracts/USDC/L1/libraries/Address.sol\":{\"keccak256\":\"0x7a2becd0fc138ccd81f63dc85f73aa43ac9e16107b1060dfb9bfcbc46e089060\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9cfc1478aba538118b63dca8c71983d8d522b9ac97b96364ae27dc505b675a3\",\"dweb:/ipfs/QmQJnCRPn61XoPbDtykyGGcXS4YYydmMCxcWDymhBTG6JJ\"]},\"src/tokamak-contracts/USDC/L1/libraries/IERC20.sol\":{\"keccak256\":\"0x32fc81940e398095a082754088b43bcd70dda770a819586abc34fe8b387a42b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e2c83e48dbd6c4576400811d11eccbbe8dd44d652fdbaabab22b6fa1188bba\",\"dweb:/ipfs/QmZkWkDCQGwJH44EN61jov9MY34qg15WYtAvJYvkSJusx4\"]},\"src/tokamak-contracts/USDC/L1/libraries/IERC20Permit.sol\":{\"keccak256\":\"0x38fa29834657581cb1cdb1a18762bf9f730e7f68523d63fb181606f6bea7b173\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d2fa77781be9fa115f4837d80d431761f4af463c3dbd9d5b103a4e2dcf8eee1\",\"dweb:/ipfs/QmSHYchPnZBddirEAa5wnGUgFVnBfq6v9gVJ4wdrtYxsrc\"]},\"src/tokamak-contracts/USDC/L1/libraries/SafeERC20.sol\":{\"keccak256\":\"0x1b796214de865837b31080bf4286131652925a25e206d11c1b870ea267742bae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e527f3891bbc917742346bb4cc230893bbf68eb925d2f0c70b475f3b901b3dd\",\"dweb:/ipfs/QmNeJTgxQKX7zvRCGYA81SJRMjkxcNEdemFcqpZsWJ4q9s\"]},\"src/tokamak-contracts/USDC/libraries/Address.sol\":{\"keccak256\":\"0x1d1dd930cd27cde1a42984254a481d8edb615a93bcea1a1d188568018751c92f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f54df028fb62a3a9ffdedba1b9209391b985b229c7c37a28acf27d7b34478246\",\"dweb:/ipfs/QmdkP1fEBq8mieprvTCMcFTihDfBNzEXwRRAE9teJ8x4nx\"]},\"src/tokamak-contracts/USDC/universal/StandardBridgeStorage.sol\":{\"keccak256\":\"0xc61c40717e55341880ec5ba5c8f7366c7f7cbe045e55cd5bab643dbb60295bac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://237615182e4d1bb0447434f22e494222f5ff9ca97f2673d55b99918eb84bd723\",\"dweb:/ipfs/Qmd8GxkGfN3uhxLQygkQws1c7d47YA6K5p6PSFYM3m8bpT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"}],"stateMutability":"payable","type":"function","name":"sendMessage"},{"inputs":[],"stateMutability":"view","type":"function","name":"xDomainMessageSender","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/tokamak-contracts/USDC/L1//tokamak-UsdcBridge/L1UsdcBridge.sol":"ICrossDomainMessenger"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/tokamak-contracts/USDC/L1//tokamak-UsdcBridge/L1UsdcBridge.sol":{"keccak256":"0xbd0042d258b9f10397ccb81dea8fc2ee5d787e5e20bc6d03f28aa62948b8be87","urls":["bzz-raw://81e2cdb3bbe78dbcf306b0a49b09f149e94ee6d1c22b16d3e2315d5b5e356dc9","dweb:/ipfs/QmUcRuWcqqzDboPkVLLwdDGqj4vzc83DWp98cxsbZ1pixj"],"license":"MIT"},"src/tokamak-contracts/USDC/L1//tokamak-UsdcBridge/L1UsdcBridgeStorage.sol":{"keccak256":"0xcca6b8186e534ad59a4878f6756334175cd50aca504c4139d21930fce77e5b00","urls":["bzz-raw://c4a647cb71c35e41a53248db3c03a3d05ae169180465ee6947b48efd05afd4f5","dweb:/ipfs/Qmf26yXFLCm8LmX4CKCoZ6wg6pGrnJmC3VYXhLFNHsA49i"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/Address.sol":{"keccak256":"0x7a2becd0fc138ccd81f63dc85f73aa43ac9e16107b1060dfb9bfcbc46e089060","urls":["bzz-raw://a9cfc1478aba538118b63dca8c71983d8d522b9ac97b96364ae27dc505b675a3","dweb:/ipfs/QmQJnCRPn61XoPbDtykyGGcXS4YYydmMCxcWDymhBTG6JJ"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/IERC20.sol":{"keccak256":"0x32fc81940e398095a082754088b43bcd70dda770a819586abc34fe8b387a42b4","urls":["bzz-raw://59e2c83e48dbd6c4576400811d11eccbbe8dd44d652fdbaabab22b6fa1188bba","dweb:/ipfs/QmZkWkDCQGwJH44EN61jov9MY34qg15WYtAvJYvkSJusx4"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/IERC20Permit.sol":{"keccak256":"0x38fa29834657581cb1cdb1a18762bf9f730e7f68523d63fb181606f6bea7b173","urls":["bzz-raw://4d2fa77781be9fa115f4837d80d431761f4af463c3dbd9d5b103a4e2dcf8eee1","dweb:/ipfs/QmSHYchPnZBddirEAa5wnGUgFVnBfq6v9gVJ4wdrtYxsrc"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/SafeERC20.sol":{"keccak256":"0x1b796214de865837b31080bf4286131652925a25e206d11c1b870ea267742bae","urls":["bzz-raw://1e527f3891bbc917742346bb4cc230893bbf68eb925d2f0c70b475f3b901b3dd","dweb:/ipfs/QmNeJTgxQKX7zvRCGYA81SJRMjkxcNEdemFcqpZsWJ4q9s"],"license":"MIT"},"src/tokamak-contracts/USDC/libraries/Address.sol":{"keccak256":"0x1d1dd930cd27cde1a42984254a481d8edb615a93bcea1a1d188568018751c92f","urls":["bzz-raw://f54df028fb62a3a9ffdedba1b9209391b985b229c7c37a28acf27d7b34478246","dweb:/ipfs/QmdkP1fEBq8mieprvTCMcFTihDfBNzEXwRRAE9teJ8x4nx"],"license":"MIT"},"src/tokamak-contracts/USDC/universal/StandardBridgeStorage.sol":{"keccak256":"0xc61c40717e55341880ec5ba5c8f7366c7f7cbe045e55cd5bab643dbb60295bac","urls":["bzz-raw://237615182e4d1bb0447434f22e494222f5ff9ca97f2673d55b99918eb84bd723","dweb:/ipfs/Qmd8GxkGfN3uhxLQygkQws1c7d47YA6K5p6PSFYM3m8bpT"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev"},"ast":{"absolutePath":"src/tokamak-contracts/USDC/L1//tokamak-UsdcBridge/L1UsdcBridge.sol","id":250929,"exportedSymbols":{"Address":[121159],"ICrossDomainMessenger":[250630],"IERC20":[119876],"IL2USDCBridge":[250646],"L1UsdcBridge":[250928],"L1UsdcBridgeStorage":[250941],"SafeERC20":[120238]},"nodeType":"SourceUnit","src":"32:7658:251","nodes":[{"id":250607,"nodeType":"PragmaDirective","src":"32:23:251","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":250609,"nodeType":"ImportDirective","src":"57:49:251","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/L1/libraries/IERC20.sol","file":"../libraries/IERC20.sol","nameLocation":"-1:-1:-1","scope":250929,"sourceUnit":119877,"symbolAliases":[{"foreign":{"id":250608,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119876,"src":"66:6:251","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":250611,"nodeType":"ImportDirective","src":"107:54:251","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/libraries/Address.sol","file":"../../libraries/Address.sol","nameLocation":"-1:-1:-1","scope":250929,"sourceUnit":121160,"symbolAliases":[{"foreign":{"id":250610,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121159,"src":"116:7:251","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":250613,"nodeType":"ImportDirective","src":"162:55:251","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/L1/libraries/SafeERC20.sol","file":"../libraries/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":250929,"sourceUnit":120239,"symbolAliases":[{"foreign":{"id":250612,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120238,"src":"171:9:251","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":250615,"nodeType":"ImportDirective","src":"219:64:251","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/L1//tokamak-UsdcBridge/L1UsdcBridgeStorage.sol","file":"./L1UsdcBridgeStorage.sol","nameLocation":"-1:-1:-1","scope":250929,"sourceUnit":250942,"symbolAliases":[{"foreign":{"id":250614,"name":"L1UsdcBridgeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":250941,"src":"228:19:251","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":250630,"nodeType":"ContractDefinition","src":"285:210:251","nodes":[{"id":250620,"nodeType":"FunctionDefinition","src":"323:64:251","nodes":[],"functionSelector":"6e296e45","implemented":false,"kind":"function","modifiers":[],"name":"xDomainMessageSender","nameLocation":"332:20:251","parameters":{"id":250616,"nodeType":"ParameterList","parameters":[],"src":"352:2:251"},"returnParameters":{"id":250619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":250618,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":250620,"src":"378:7:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250617,"name":"address","nodeType":"ElementaryTypeName","src":"378:7:251","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"377:9:251"},"scope":250630,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":250629,"nodeType":"FunctionDefinition","src":"392:101:251","nodes":[],"functionSelector":"3dbb202b","implemented":false,"kind":"function","modifiers":[],"name":"sendMessage","nameLocation":"401:11:251","parameters":{"id":250627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":250622,"mutability":"mutable","name":"_target","nameLocation":"421:7:251","nodeType":"VariableDeclaration","scope":250629,"src":"413:15:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250621,"name":"address","nodeType":"ElementaryTypeName","src":"413:7:251","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":250624,"mutability":"mutable","name":"_message","nameLocation":"445:8:251","nodeType":"VariableDeclaration","scope":250629,"src":"430:23:251","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":250623,"name":"bytes","nodeType":"ElementaryTypeName","src":"430:5:251","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":250626,"mutability":"mutable","name":"_minGasLimit","nameLocation":"462:12:251","nodeType":"VariableDeclaration","scope":250629,"src":"455:19:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":250625,"name":"uint32","nodeType":"ElementaryTypeName","src":"455:6:251","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"412:63:251"},"returnParameters":{"id":250628,"nodeType":"ParameterList","parameters":[],"src":"492:0:251"},"scope":250630,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"ICrossDomainMessenger","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[250630],"name":"ICrossDomainMessenger","nameLocation":"295:21:251","scope":250929,"usedErrors":[]},{"id":250646,"nodeType":"ContractDefinition","src":"497:236:251","nodes":[{"id":250645,"nodeType":"FunctionDefinition","src":"527:204:251","nodes":[],"functionSelector":"662a633a","implemented":false,"kind":"function","modifiers":[],"name":"finalizeDeposit","nameLocation":"536:15:251","parameters":{"id":250643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":250632,"mutability":"mutable","name":"_l1Token","nameLocation":"569:8:251","nodeType":"VariableDeclaration","scope":250645,"src":"561:16:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250631,"name":"address","nodeType":"ElementaryTypeName","src":"561:7:251","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":250634,"mutability":"mutable","name":"_l2Token","nameLocation":"595:8:251","nodeType":"VariableDeclaration","scope":250645,"src":"587:16:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250633,"name":"address","nodeType":"ElementaryTypeName","src":"587:7:251","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":250636,"mutability":"mutable","name":"_from","nameLocation":"621:5:251","nodeType":"VariableDeclaration","scope":250645,"src":"613:13:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250635,"name":"address","nodeType":"ElementaryTypeName","src":"613:7:251","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":250638,"mutability":"mutable","name":"_to","nameLocation":"644:3:251","nodeType":"VariableDeclaration","scope":250645,"src":"636:11:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250637,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:251","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":250640,"mutability":"mutable","name":"_amount","nameLocation":"665:7:251","nodeType":"VariableDeclaration","scope":250645,"src":"657:15:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":250639,"name":"uint256","nodeType":"ElementaryTypeName","src":"657:7:251","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":250642,"mutability":"mutable","name":"_extraData","nameLocation":"697:10:251","nodeType":"VariableDeclaration","scope":250645,"src":"682:25:251","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":250641,"name":"bytes","nodeType":"ElementaryTypeName","src":"682:5:251","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"551:162:251"},"returnParameters":{"id":250644,"nodeType":"ParameterList","parameters":[],"src":"730:0:251"},"scope":250646,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IL2USDCBridge","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[250646],"name":"IL2USDCBridge","nameLocation":"507:13:251","scope":250929,"usedErrors":[]},{"id":250928,"nodeType":"ContractDefinition","src":"735:6954:251","nodes":[{"id":250652,"nodeType":"UsingForDirective","src":"786:27:251","nodes":[],"global":false,"libraryName":{"id":250649,"name":"SafeERC20","nodeType":"IdentifierPath","referencedDeclaration":120238,"src":"792:9:251"},"typeName":{"id":250651,"nodeType":"UserDefinedTypeName","pathNode":{"id":250650,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":119876,"src":"806:6:251"},"referencedDeclaration":119876,"src":"806:6:251","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$119876","typeString":"contract IERC20"}}},{"id":250667,"nodeType":"ModifierDefinition","src":"1129:146:251","nodes":[],"body":{"id":250666,"nodeType":"Block","src":"1148:127:251","nodes":[],"statements":[{"expression":{"arguments":[{"id":250661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1166:31:251","subExpression":{"arguments":[{"expression":{"id":250658,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1186:3:251","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":250659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1186:10:251","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":250656,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121159,"src":"1167:7:251","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$121159_$","typeString":"type(library Address)"}},"id":250657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":120882,"src":"1167:18:251","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":250660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1167:30:251","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c792062652063616c6c65642066726f6d20616e20454f41","id":250662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1199:57:251","typeDescriptions":{"typeIdentifier":"t_stringliteral_f81f6db803ded0832643d2e0ed6f9119d9e7648506a58072f4a7195269d8cce8","typeString":"literal_string \"StandardBridge: function can only be called from an EOA\""},"value":"StandardBridge: function can only be called from an EOA"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f81f6db803ded0832643d2e0ed6f9119d9e7648506a58072f4a7195269d8cce8","typeString":"literal_string \"StandardBridge: function can only be called from an EOA\""}],"id":250655,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1158:7:251","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":250663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1158:99:251","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":250664,"nodeType":"ExpressionStatement","src":"1158:99:251"},{"id":250665,"nodeType":"PlaceholderStatement","src":"1267:1:251"}]},"documentation":{"id":250653,"nodeType":"StructuredDocumentation","src":"818:305:251","text":" @notice Only allow EOAs to call the functions. Note that this is not safe against contracts\n calling code within their constructors, but also doesn't really matter since we're\n just trying to prevent users accidentally depositing with smart contract wallets."},"name":"onlyEOA","nameLocation":"1138:7:251","parameters":{"id":250654,"nodeType":"ParameterList","parameters":[],"src":"1145:2:251"},"virtual":false,"visibility":"internal"},{"id":250688,"nodeType":"ModifierDefinition","src":"1384:264:251","nodes":[],"body":{"id":250687,"nodeType":"Block","src":"1411:237:251","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":250682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":250674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":250671,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1442:3:251","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":250672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1442:10:251","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":250673,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121163,"src":"1456:9:251","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1442:23:251","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":250681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":250676,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121163,"src":"1491:9:251","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":250675,"name":"ICrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":250630,"src":"1469:21:251","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICrossDomainMessenger_$250630_$","typeString":"type(contract ICrossDomainMessenger)"}},"id":250677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1469:32:251","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$250630","typeString":"contract ICrossDomainMessenger"}},"id":250678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"xDomainMessageSender","nodeType":"MemberAccess","referencedDeclaration":250620,"src":"1469:53:251","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":250679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1469:55:251","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":250680,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121165,"src":"1528:11:251","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1469:70:251","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1442:97:251","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c792062652063616c6c65642066726f6d20746865206f7468657220627269646765","id":250683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1553:67:251","typeDescriptions":{"typeIdentifier":"t_stringliteral_cbc7005e6a766806113d4613be79beeb8d602af868fc04e2279ff0ca60009b99","typeString":"literal_string \"StandardBridge: function can only be called from the other bridge\""},"value":"StandardBridge: function can only be called from the other bridge"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cbc7005e6a766806113d4613be79beeb8d602af868fc04e2279ff0ca60009b99","typeString":"literal_string \"StandardBridge: function can only be called from the other bridge\""}],"id":250670,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1421:7:251","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":250684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1421:209:251","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":250685,"nodeType":"ExpressionStatement","src":"1421:209:251"},{"id":250686,"nodeType":"PlaceholderStatement","src":"1640:1:251"}]},"documentation":{"id":250668,"nodeType":"StructuredDocumentation","src":"1281:98:251","text":" @notice Ensures that the caller is a cross-chain message from the other bridge."},"name":"onlyOtherBridge","nameLocation":"1393:15:251","parameters":{"id":250669,"nodeType":"ParameterList","parameters":[],"src":"1408:2:251"},"virtual":false,"visibility":"internal"},{"id":250692,"nodeType":"FunctionDefinition","src":"1654:17:251","nodes":[],"body":{"id":250691,"nodeType":"Block","src":"1668:3:251","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":250689,"nodeType":"ParameterList","parameters":[],"src":"1665:2:251"},"returnParameters":{"id":250690,"nodeType":"ParameterList","parameters":[],"src":"1668:0:251"},"scope":250928,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":250707,"nodeType":"EventDefinition","src":"2124:199:251","nodes":[],"anonymous":false,"documentation":{"id":250693,"nodeType":"StructuredDocumentation","src":"1677:442:251","text":" @custom:legacy\n @notice Emitted whenever an ERC20 deposit is initiated.\n @param l1Token Address of the token on L1.\n @param l2Token Address of the corresponding token on L2.\n @param from Address of the depositor.\n @param to Address of the recipient on L2.\n @param amount Amount of the ERC20 deposited.\n @param extraData Extra data attached to the deposit."},"eventSelector":"718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d0396","name":"ERC20DepositInitiated","nameLocation":"2130:21:251","parameters":{"id":250706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":250695,"indexed":true,"mutability":"mutable","name":"l1Token","nameLocation":"2177:7:251","nodeType":"VariableDeclaration","scope":250707,"src":"2161:23:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250694,"name":"address","nodeType":"ElementaryTypeName","src":"2161:7:251","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":250697,"indexed":true,"mutability":"mutable","name":"l2Token","nameLocation":"2210:7:251","nodeType":"VariableDeclaration","scope":250707,"src":"2194:23:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250696,"name":"address","nodeType":"ElementaryTypeName","src":"2194:7:251","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":250699,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2243:4:251","nodeType":"VariableDeclaration","scope":250707,"src":"2227:20:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250698,"name":"address","nodeType":"ElementaryTypeName","src":"2227:7:251","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":250701,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"2265:2:251","nodeType":"VariableDeclaration","scope":250707,"src":"2257:10:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250700,"name":"address","nodeType":"ElementaryTypeName","src":"2257:7:251","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":250703,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2285:6:251","nodeType":"VariableDeclaration","scope":250707,"src":"2277:14:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":250702,"name":"uint256","nodeType":"ElementaryTypeName","src":"2277:7:251","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":250705,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"2307:9:251","nodeType":"VariableDeclaration","scope":250707,"src":"2301:15:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":250704,"name":"bytes","nodeType":"ElementaryTypeName","src":"2301:5:251","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2151:171:251"}},{"id":250722,"nodeType":"EventDefinition","src":"2783:202:251","nodes":[],"anonymous":false,"documentation":{"id":250708,"nodeType":"StructuredDocumentation","src":"2329:449:251","text":" @custom:legacy\n @notice Emitted whenever an ERC20 withdrawal is finalized.\n @param l1Token Address of the token on L1.\n @param l2Token Address of the corresponding token on L2.\n @param from Address of the withdrawer.\n @param to Address of the recipient on L1.\n @param amount Amount of the ERC20 withdrawn.\n @param extraData Extra data attached to the withdrawal."},"eventSelector":"3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b3","name":"ERC20WithdrawalFinalized","nameLocation":"2789:24:251","parameters":{"id":250721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":250710,"indexed":true,"mutability":"mutable","name":"l1Token","nameLocation":"2839:7:251","nodeType":"VariableDeclaration","scope":250722,"src":"2823:23:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250709,"name":"address","nodeType":"ElementaryTypeName","src":"2823:7:251","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":250712,"indexed":true,"mutability":"mutable","name":"l2Token","nameLocation":"2872:7:251","nodeType":"VariableDeclaration","scope":250722,"src":"2856:23:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250711,"name":"address","nodeType":"ElementaryTypeName","src":"2856:7:251","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":250714,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2905:4:251","nodeType":"VariableDeclaration","scope":250722,"src":"2889:20:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250713,"name":"address","nodeType":"ElementaryTypeName","src":"2889:7:251","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":250716,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"2927:2:251","nodeType":"VariableDeclaration","scope":250722,"src":"2919:10:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250715,"name":"address","nodeType":"ElementaryTypeName","src":"2919:7:251","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":250718,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2947:6:251","nodeType":"VariableDeclaration","scope":250722,"src":"2939:14:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":250717,"name":"uint256","nodeType":"ElementaryTypeName","src":"2939:7:251","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":250720,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"2969:9:251","nodeType":"VariableDeclaration","scope":250722,"src":"2963:15:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":250719,"name":"bytes","nodeType":"ElementaryTypeName","src":"2963:5:251","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2813:171:251"}},{"id":250751,"nodeType":"FunctionDefinition","src":"3644:338:251","nodes":[],"body":{"id":250750,"nodeType":"Block","src":"3865:117:251","nodes":[],"statements":[{"expression":{"arguments":[{"id":250739,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":250725,"src":"3897:8:251","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":250740,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":250727,"src":"3907:8:251","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":250741,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3917:3:251","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":250742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3917:10:251","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":250743,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3929:3:251","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":250744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3929:10:251","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":250745,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":250729,"src":"3941:7:251","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":250746,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":250731,"src":"3950:12:251","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":250747,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":250733,"src":"3964:10:251","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":250738,"name":"_initiateERC20Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":250927,"src":"3875:21:251","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,uint32,bytes calldata)"}},"id":250748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3875:100:251","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":250749,"nodeType":"ExpressionStatement","src":"3875:100:251"}]},"documentation":{"id":250723,"nodeType":"StructuredDocumentation","src":"2991:648:251","text":" @custom:legacy\n @notice Deposits some amount of ERC20 tokens into the sender's account on L2.\n @param _l1Token Address of the L1 token being deposited.\n @param _l2Token Address of the corresponding token on L2.\n @param _amount Amount of the ERC20 to deposit.\n @param _minGasLimit Minimum gas limit for the deposit message on L2.\n @param _extraData Optional data to forward to L2. Data supplied here will not be used to\n execute any code on L2 and is only emitted as extra data for the\n convenience of off-chain tooling."},"functionSelector":"87087623","implemented":true,"kind":"function","modifiers":[{"id":250736,"kind":"modifierInvocation","modifierName":{"id":250735,"name":"onlyEOA","nodeType":"IdentifierPath","referencedDeclaration":250667,"src":"3853:7:251"},"nodeType":"ModifierInvocation","src":"3853:7:251"}],"name":"bridgeERC20","nameLocation":"3653:11:251","parameters":{"id":250734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":250725,"mutability":"mutable","name":"_l1Token","nameLocation":"3682:8:251","nodeType":"VariableDeclaration","scope":250751,"src":"3674:16:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250724,"name":"address","nodeType":"ElementaryTypeName","src":"3674:7:251","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":250727,"mutability":"mutable","name":"_l2Token","nameLocation":"3708:8:251","nodeType":"VariableDeclaration","scope":250751,"src":"3700:16:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250726,"name":"address","nodeType":"ElementaryTypeName","src":"3700:7:251","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":250729,"mutability":"mutable","name":"_amount","nameLocation":"3734:7:251","nodeType":"VariableDeclaration","scope":250751,"src":"3726:15:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":250728,"name":"uint256","nodeType":"ElementaryTypeName","src":"3726:7:251","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":250731,"mutability":"mutable","name":"_minGasLimit","nameLocation":"3758:12:251","nodeType":"VariableDeclaration","scope":250751,"src":"3751:19:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":250730,"name":"uint32","nodeType":"ElementaryTypeName","src":"3751:6:251","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":250733,"mutability":"mutable","name":"_extraData","nameLocation":"3795:10:251","nodeType":"VariableDeclaration","scope":250751,"src":"3780:25:251","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":250732,"name":"bytes","nodeType":"ElementaryTypeName","src":"3780:5:251","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3664:147:251"},"returnParameters":{"id":250737,"nodeType":"ParameterList","parameters":[],"src":"3865:0:251"},"scope":250928,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":250779,"nodeType":"FunctionDefinition","src":"4696:338:251","nodes":[],"body":{"id":250778,"nodeType":"Block","src":"4924:110:251","nodes":[],"statements":[{"expression":{"arguments":[{"id":250768,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":250754,"src":"4956:8:251","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":250769,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":250756,"src":"4966:8:251","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":250770,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4976:3:251","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":250771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4976:10:251","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":250772,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":250758,"src":"4988:3:251","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":250773,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":250760,"src":"4993:7:251","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":250774,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":250762,"src":"5002:12:251","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":250775,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":250764,"src":"5016:10:251","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":250767,"name":"_initiateERC20Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":250927,"src":"4934:21:251","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,uint32,bytes calldata)"}},"id":250776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4934:93:251","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":250777,"nodeType":"ExpressionStatement","src":"4934:93:251"}]},"documentation":{"id":250752,"nodeType":"StructuredDocumentation","src":"3988:703:251","text":" @custom:legacy\n @notice Deposits some amount of ERC20 tokens into a target account on L2.\n @param _l1Token Address of the L1 token being deposited.\n @param _l2Token Address of the corresponding token on L2.\n @param _to Address of the recipient on L2.\n @param _amount Amount of the ERC20 to deposit.\n @param _minGasLimit Minimum gas limit for the deposit message on L2.\n @param _extraData Optional data to forward to L2. Data supplied here will not be used to\n execute any code on L2 and is only emitted as extra data for the\n convenience of off-chain tooling."},"functionSelector":"540abf73","implemented":true,"kind":"function","modifiers":[],"name":"bridgeERC20To","nameLocation":"4705:13:251","parameters":{"id":250765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":250754,"mutability":"mutable","name":"_l1Token","nameLocation":"4736:8:251","nodeType":"VariableDeclaration","scope":250779,"src":"4728:16:251","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250753,"name":"address","nodeType":"ElementaryTypeName","src":"4728:7:251","stateMutability":"nonpayable","typeDescriptions":{"type