{"abi":[{"type":"function","name":"crossDomainMessageSender","inputs":[],"outputs":[{"name":"_sender","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"crossDomainMessageSource","inputs":[],"outputs":[{"name":"_source","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"relayMessage","inputs":[{"name":"_destination","type":"uint256","internalType":"uint256"},{"name":"_source","type":"uint256","internalType":"uint256"},{"name":"_nonce","type":"uint256","internalType":"uint256"},{"name":"_sender","type":"address","internalType":"address"},{"name":"_target","type":"address","internalType":"address"},{"name":"_message","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"sendMessage","inputs":[{"name":"_destination","type":"uint256","internalType":"uint256"},{"name":"_target","type":"address","internalType":"address"},{"name":"_message","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"crossDomainMessageSender()":"38ffde18","crossDomainMessageSource()":"24794462","relayMessage(uint256,uint256,uint256,address,address,bytes)":"1ecd26f2","sendMessage(uint256,address,bytes)":"7056f41f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"crossDomainMessageSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"crossDomainMessageSource\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_source\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_destination\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_source\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"relayMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_destination\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"sendMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"crossDomainMessageSender()\":{\"returns\":{\"_sender\":\"Address of the sender of the current cross domain message.\"}},\"crossDomainMessageSource()\":{\"returns\":{\"_source\":\"Chain ID of the source of the current cross domain message.\"}},\"relayMessage(uint256,uint256,uint256,address,address,bytes)\":{\"params\":{\"_destination\":\"Chain ID of the destination chain.\",\"_message\":\"Message to send to the target.\",\"_nonce\":\"Nonce of the message being relayed.\",\"_sender\":\"Address of the user who sent the message.\",\"_source\":\"Chain ID of the source chain.\",\"_target\":\"Address that the message is targeted at.\"}},\"sendMessage(uint256,address,bytes)\":{\"params\":{\"_destination\":\"Chain ID of the destination chain.\",\"_message\":\"Message to trigger the target address with.\",\"_target\":\"Target contract or wallet address.\"}}},\"title\":\"IL2ToL2CrossDomainMessenger\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"crossDomainMessageSender()\":{\"notice\":\"Retrieves the sender of the current cross domain message.\"},\"crossDomainMessageSource()\":{\"notice\":\"Retrieves the source of the current cross domain message.\"},\"relayMessage(uint256,uint256,uint256,address,address,bytes)\":{\"notice\":\"Relays a message that was sent by the other CrossDomainMessenger contract. Can only         be executed via cross-chain call from the other messenger OR if the message was         already received once and is currently being replayed.\"},\"sendMessage(uint256,address,bytes)\":{\"notice\":\"Sends a message to some target address on a destination chain. Note that if the call         always reverts, then the message will be unrelayable, and any ETH sent will be         permanently locked. The same will occur if the target on the other chain is         considered unsafe (see the _isUnsafeTarget() function).\"}},\"notice\":\"Interface for the L2ToL2CrossDomainMessenger contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/L2/IL2ToL2CrossDomainMessenger.sol\":\"IL2ToL2CrossDomainMessenger\"},\"evmVersion\":\"cancun\",\"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/L2/IL2ToL2CrossDomainMessenger.sol\":{\"keccak256\":\"0x0bc5519108a6077e3918968f9812c6f20fcb036c8473b845c065b3cd9d6ef2a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56d64a5a169d54b16b02423faaf98fe9947780957678ec849596cb68880f3e97\",\"dweb:/ipfs/QmRXkq7ABqUffim7foK5EiZRwZPk8Ln6vArafjABHySBbR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"crossDomainMessageSender","outputs":[{"internalType":"address","name":"_sender","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"crossDomainMessageSource","outputs":[{"internalType":"uint256","name":"_source","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_destination","type":"uint256"},{"internalType":"uint256","name":"_source","type":"uint256"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"bytes","name":"_message","type":"bytes"}],"stateMutability":"payable","type":"function","name":"relayMessage"},{"inputs":[{"internalType":"uint256","name":"_destination","type":"uint256"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"bytes","name":"_message","type":"bytes"}],"stateMutability":"payable","type":"function","name":"sendMessage"}],"devdoc":{"kind":"dev","methods":{"crossDomainMessageSender()":{"returns":{"_sender":"Address of the sender of the current cross domain message."}},"crossDomainMessageSource()":{"returns":{"_source":"Chain ID of the source of the current cross domain message."}},"relayMessage(uint256,uint256,uint256,address,address,bytes)":{"params":{"_destination":"Chain ID of the destination chain.","_message":"Message to send to the target.","_nonce":"Nonce of the message being relayed.","_sender":"Address of the user who sent the message.","_source":"Chain ID of the source chain.","_target":"Address that the message is targeted at."}},"sendMessage(uint256,address,bytes)":{"params":{"_destination":"Chain ID of the destination chain.","_message":"Message to trigger the target address with.","_target":"Target contract or wallet address."}}},"version":1},"userdoc":{"kind":"user","methods":{"crossDomainMessageSender()":{"notice":"Retrieves the sender of the current cross domain message."},"crossDomainMessageSource()":{"notice":"Retrieves the source of the current cross domain message."},"relayMessage(uint256,uint256,uint256,address,address,bytes)":{"notice":"Relays a message that was sent by the other CrossDomainMessenger contract. Can only         be executed via cross-chain call from the other messenger OR if the message was         already received once and is currently being replayed."},"sendMessage(uint256,address,bytes)":{"notice":"Sends a message to some target address on a destination chain. Note that if the call         always reverts, then the message will be unrelayable, and any ETH sent will be         permanently locked. The same will occur if the target on the other chain is         considered unsafe (see the _isUnsafeTarget() function)."}},"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/L2/IL2ToL2CrossDomainMessenger.sol":"IL2ToL2CrossDomainMessenger"},"evmVersion":"cancun","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/L2/IL2ToL2CrossDomainMessenger.sol":{"keccak256":"0x0bc5519108a6077e3918968f9812c6f20fcb036c8473b845c065b3cd9d6ef2a3","urls":["bzz-raw://56d64a5a169d54b16b02423faaf98fe9947780957678ec849596cb68880f3e97","dweb:/ipfs/QmRXkq7ABqUffim7foK5EiZRwZPk8Ln6vArafjABHySBbR"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user","methods":{"crossDomainMessageSender()":{"notice":"Retrieves the sender of the current cross domain message."},"crossDomainMessageSource()":{"notice":"Retrieves the source of the current cross domain message."},"relayMessage(uint256,uint256,uint256,address,address,bytes)":{"notice":"Relays a message that was sent by the other CrossDomainMessenger contract. Can only         be executed via cross-chain call from the other messenger OR if the message was         already received once and is currently being replayed."},"sendMessage(uint256,address,bytes)":{"notice":"Sends a message to some target address on a destination chain. Note that if the call         always reverts, then the message will be unrelayable, and any ETH sent will be         permanently locked. The same will occur if the target on the other chain is         considered unsafe (see the _isUnsafeTarget() function)."}},"notice":"Interface for the L2ToL2CrossDomainMessenger contract."},"devdoc":{"version":1,"kind":"dev","methods":{"crossDomainMessageSender()":{"returns":{"_sender":"Address of the sender of the current cross domain message."}},"crossDomainMessageSource()":{"returns":{"_source":"Chain ID of the source of the current cross domain message."}},"relayMessage(uint256,uint256,uint256,address,address,bytes)":{"params":{"_destination":"Chain ID of the destination chain.","_message":"Message to send to the target.","_nonce":"Nonce of the message being relayed.","_sender":"Address of the user who sent the message.","_source":"Chain ID of the source chain.","_target":"Address that the message is targeted at."}},"sendMessage(uint256,address,bytes)":{"params":{"_destination":"Chain ID of the destination chain.","_message":"Message to trigger the target address with.","_target":"Target contract or wallet address."}}},"title":"IL2ToL2CrossDomainMessenger"},"ast":{"absolutePath":"src/L2/IL2ToL2CrossDomainMessenger.sol","id":53500,"exportedSymbols":{"IL2ToL2CrossDomainMessenger":[53499]},"nodeType":"SourceUnit","src":"32:2196:48","nodes":[{"id":53459,"nodeType":"PragmaDirective","src":"32:23:48","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":53499,"nodeType":"ContractDefinition","src":"163:2064:48","nodes":[{"id":53466,"nodeType":"FunctionDefinition","src":"364:76:48","nodes":[],"documentation":{"id":53461,"nodeType":"StructuredDocumentation","src":"207:152:48","text":"@notice Retrieves the sender of the current cross domain message.\n @return _sender Address of the sender of the current cross domain message."},"functionSelector":"38ffde18","implemented":false,"kind":"function","modifiers":[],"name":"crossDomainMessageSender","nameLocation":"373:24:48","parameters":{"id":53462,"nodeType":"ParameterList","parameters":[],"src":"397:2:48"},"returnParameters":{"id":53465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53464,"mutability":"mutable","name":"_sender","nameLocation":"431:7:48","nodeType":"VariableDeclaration","scope":53466,"src":"423:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53463,"name":"address","nodeType":"ElementaryTypeName","src":"423:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"422:17:48"},"scope":53499,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":53472,"nodeType":"FunctionDefinition","src":"604:76:48","nodes":[],"documentation":{"id":53467,"nodeType":"StructuredDocumentation","src":"446:153:48","text":"@notice Retrieves the source of the current cross domain message.\n @return _source Chain ID of the source of the current cross domain message."},"functionSelector":"24794462","implemented":false,"kind":"function","modifiers":[],"name":"crossDomainMessageSource","nameLocation":"613:24:48","parameters":{"id":53468,"nodeType":"ParameterList","parameters":[],"src":"637:2:48"},"returnParameters":{"id":53471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53470,"mutability":"mutable","name":"_source","nameLocation":"671:7:48","nodeType":"VariableDeclaration","scope":53472,"src":"663:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53469,"name":"uint256","nodeType":"ElementaryTypeName","src":"663:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"662:17:48"},"scope":53499,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":53482,"nodeType":"FunctionDefinition","src":"1244:102:48","nodes":[],"documentation":{"id":53473,"nodeType":"StructuredDocumentation","src":"686:553:48","text":"@notice Sends a message to some target address on a destination chain. Note that if the call\n         always reverts, then the message will be unrelayable, and any ETH sent will be\n         permanently locked. The same will occur if the target on the other chain is\n         considered unsafe (see the _isUnsafeTarget() function).\n @param _destination Chain ID of the destination chain.\n @param _target      Target contract or wallet address.\n @param _message     Message to trigger the target address with."},"functionSelector":"7056f41f","implemented":false,"kind":"function","modifiers":[],"name":"sendMessage","nameLocation":"1253:11:48","parameters":{"id":53480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53475,"mutability":"mutable","name":"_destination","nameLocation":"1273:12:48","nodeType":"VariableDeclaration","scope":53482,"src":"1265:20:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53474,"name":"uint256","nodeType":"ElementaryTypeName","src":"1265:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":53477,"mutability":"mutable","name":"_target","nameLocation":"1295:7:48","nodeType":"VariableDeclaration","scope":53482,"src":"1287:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53476,"name":"address","nodeType":"ElementaryTypeName","src":"1287:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":53479,"mutability":"mutable","name":"_message","nameLocation":"1319:8:48","nodeType":"VariableDeclaration","scope":53482,"src":"1304:23:48","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":53478,"name":"bytes","nodeType":"ElementaryTypeName","src":"1304:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1264:64:48"},"returnParameters":{"id":53481,"nodeType":"ParameterList","parameters":[],"src":"1345:0:48"},"scope":53499,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":53498,"nodeType":"FunctionDefinition","src":"2002:223:48","nodes":[],"documentation":{"id":53483,"nodeType":"StructuredDocumentation","src":"1352:645:48","text":"@notice Relays a message that was sent by the other CrossDomainMessenger contract. Can only\n         be executed via cross-chain call from the other messenger OR if the message was\n         already received once and is currently being replayed.\n @param _destination Chain ID of the destination chain.\n @param _nonce       Nonce of the message being relayed.\n @param _sender      Address of the user who sent the message.\n @param _source      Chain ID of the source chain.\n @param _target      Address that the message is targeted at.\n @param _message     Message to send to the target."},"functionSelector":"1ecd26f2","implemented":false,"kind":"function","modifiers":[],"name":"relayMessage","nameLocation":"2011:12:48","parameters":{"id":53496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53485,"mutability":"mutable","name":"_destination","nameLocation":"2041:12:48","nodeType":"VariableDeclaration","scope":53498,"src":"2033:20:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53484,"name":"uint256","nodeType":"ElementaryTypeName","src":"2033:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":53487,"mutability":"mutable","name":"_source","nameLocation":"2071:7:48","nodeType":"VariableDeclaration","scope":53498,"src":"2063:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53486,"name":"uint256","nodeType":"ElementaryTypeName","src":"2063:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":53489,"mutability":"mutable","name":"_nonce","nameLocation":"2096:6:48","nodeType":"VariableDeclaration","scope":53498,"src":"2088:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53488,"name":"uint256","nodeType":"ElementaryTypeName","src":"2088:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":53491,"mutability":"mutable","name":"_sender","nameLocation":"2120:7:48","nodeType":"VariableDeclaration","scope":53498,"src":"2112:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53490,"name":"address","nodeType":"ElementaryTypeName","src":"2112:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":53493,"mutability":"mutable","name":"_target","nameLocation":"2145:7:48","nodeType":"VariableDeclaration","scope":53498,"src":"2137:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53492,"name":"address","nodeType":"ElementaryTypeName","src":"2137:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":53495,"mutability":"mutable","name":"_message","nameLocation":"2177:8:48","nodeType":"VariableDeclaration","scope":53498,"src":"2162:23:48","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":53494,"name":"bytes","nodeType":"ElementaryTypeName","src":"2162:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2023:168:48"},"returnParameters":{"id":53497,"nodeType":"ParameterList","parameters":[],"src":"2224:0:48"},"scope":53499,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IL2ToL2CrossDomainMessenger","contractDependencies":[],"contractKind":"interface","documentation":{"id":53460,"nodeType":"StructuredDocumentation","src":"57:106:48","text":"@title IL2ToL2CrossDomainMessenger\n @notice Interface for the L2ToL2CrossDomainMessenger contract."},"fullyImplemented":false,"linearizedBaseContracts":[53499],"name":"IL2ToL2CrossDomainMessenger","nameLocation":"173:27:48","scope":53500,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":48}