{
  "_format": "hh-sol-artifact-1",
  "contractName": "ExecutorMock",
  "sourceName": "contracts/mocks/ExecutorMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_dstEid",
          "type": "uint32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "packet",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "gasLimit",
          "type": "uint256"
        }
      ],
      "name": "Executed301",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "srcEid",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "sender",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "nonce",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "guid",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "message",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "gasLimit",
          "type": "uint256"
        }
      ],
      "name": "Executed302",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "srcEid",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "sender",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "nonce",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "dstEid",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "oapp",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "nativeDropGasLimit",
          "type": "uint256"
        }
      ],
      "name": "NativeDropMeta",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "NativeDropped",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "dstEid",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_packet",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_gasLimit",
          "type": "uint256"
        }
      ],
      "name": "execute301",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "srcEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "sender",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "nonce",
              "type": "uint64"
            }
          ],
          "internalType": "struct Origin",
          "name": "_origin",
          "type": "tuple"
        },
        {
          "internalType": "uint32",
          "name": "_dstEid",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "_oapp",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "internalType": "struct IExecutor.NativeDropParams[]",
          "name": "_nativeDropParams",
          "type": "tuple[]"
        },
        {
          "internalType": "uint256",
          "name": "_nativeDropGasLimit",
          "type": "uint256"
        }
      ],
      "name": "nativeDrop",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "srcEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "sender",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "nonce",
              "type": "uint64"
            }
          ],
          "internalType": "struct Origin",
          "name": "_origin",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "internalType": "struct IExecutor.NativeDropParams[]",
          "name": "_nativeDropParams",
          "type": "tuple[]"
        },
        {
          "internalType": "uint256",
          "name": "_nativeDropGasLimit",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_packet",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_gasLimit",
          "type": "uint256"
        }
      ],
      "name": "nativeDropAndExecute301",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "internalType": "struct IExecutor.NativeDropParams[]",
          "name": "_nativeDropParams",
          "type": "tuple[]"
        },
        {
          "internalType": "uint256",
          "name": "_nativeDropGasLimit",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "srcEid",
                  "type": "uint32"
                },
                {
                  "internalType": "bytes32",
                  "name": "sender",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint64",
                  "name": "nonce",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Origin",
              "name": "origin",
              "type": "tuple"
            },
            {
              "internalType": "bytes32",
              "name": "guid",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "message",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "extraData",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "gasLimit",
              "type": "uint256"
            }
          ],
          "internalType": "struct IExecutor.ExecutionParams",
          "name": "_executionParams",
          "type": "tuple"
        }
      ],
      "name": "nativeDropAndExecute302",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234801561001057600080fd5b50604051610a4c380380610a4c83398101604081905261002f9161003d565b63ffffffff1660805261006a565b60006020828403121561004f57600080fd5b815163ffffffff8116811461006357600080fd5b9392505050565b6080516109c161008b6000396000818160b901526101ca01526109c16000f3fe60806040526004361061005a5760003560e01c8063475b6d9e11610043578063475b6d9e14610094578063734ff5f3146100a75780638624ba07146100f457600080fd5b80633146646a1461005f5780633927c07514610081575b600080fd5b34801561006b57600080fd5b5061007f61007a366004610484565b610107565b005b61007f61008f36600461052d565b610147565b61007f6100a23660046105fe565b6101ab565b3480156100b357600080fd5b506100db7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200160405180910390f35b61007f61010236600461067d565b6101c1565b7f13cf8d43ee24e24d09e67d7e0e0d8860e18c73357bb2cec756f313eb8706e60b83838360405161013a9392919061073f565b60405180910390a1505050565b610167876101558585610296565b61015f86866102bb565b8989896102d4565b7f13cf8d43ee24e24d09e67d7e0e0d8860e18c73357bb2cec756f313eb8706e60b83838360405161019a9392919061073f565b60405180910390a150505050505050565b6101b98686868686866102d4565b505050505050565b6101fb602082017f00000000000000000000000000000000000000000000000000000000000000006101f38285610763565b8787876102d4565b7f1c1a93b55888096fbb5ecbc7e9e6e330d669ae97368faf548317eabd09af24a061022c604083016020840161077e565b60408301356102416080850160608601610799565b61024e6020860186610763565b608086013561026060a08801886107c3565b61026d60c08a018a6107c3565b8a60e001356040516102889a99989796959493929190610828565b60405180910390a150505050565b60006102a66031602d84866108ae565b6102af916108d8565b60e01c90505b92915050565b60006102cd6102ca8484610422565b90565b9392505050565b60005b8281101561037a577f474242c3ea94bd866150f89e662fefa9f94b2c4e5cc3c00d9a51ffcfd85501a384848381811061031257610312610920565b6103289260206040909202019081019150610763565b85858481811061033a5761033a610920565b6040805173ffffffffffffffffffffffffffffffffffffffff909516855260209181029390930181013590840152500160405180910390a16001016102d7565b507f66365fb5def0779b4a6d68aa44e6db5a8d6ee0857bbf2d306eaf51d5aa95eebd6103a9602088018861077e565b60208801356103be60608a0160408b01610799565b6040805163ffffffff9485168152602081019390935267ffffffffffffffff90911690820152908716606082015273ffffffffffffffffffffffffffffffffffffffff8616608082015260a0810183905260c00160405180910390a1505050505050565b60006104326051603184866108ae565b6102cd9161094f565b60008083601f84011261044d57600080fd5b50813567ffffffffffffffff81111561046557600080fd5b60208301915083602082850101111561047d57600080fd5b9250929050565b60008060006040848603121561049957600080fd5b833567ffffffffffffffff8111156104b057600080fd5b6104bc8682870161043b565b909790965060209590950135949350505050565b6000606082840312156104e257600080fd5b50919050565b60008083601f8401126104fa57600080fd5b50813567ffffffffffffffff81111561051257600080fd5b6020830191508360208260061b850101111561047d57600080fd5b600080600080600080600060e0888a03121561054857600080fd5b61055289896104d0565b9650606088013567ffffffffffffffff8082111561056f57600080fd5b61057b8b838c016104e8565b909850965060808a0135955060a08a013591508082111561059b57600080fd5b506105a88a828b0161043b565b989b979a5095989497959660c090950135949350505050565b803563ffffffff811681146105d557600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105d557600080fd5b60008060008060008060e0878903121561061757600080fd5b61062188886104d0565b955061062f606088016105c1565b945061063d608088016105da565b935060a087013567ffffffffffffffff81111561065957600080fd5b61066589828a016104e8565b979a969950949794969560c090950135949350505050565b6000806000806060858703121561069357600080fd5b843567ffffffffffffffff808211156106ab57600080fd5b6106b7888389016104e8565b90965094506020870135935060408701359150808211156106d757600080fd5b50850161010081880312156106eb57600080fd5b939692955090935050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040815260006107536040830185876106f6565b9050826020830152949350505050565b60006020828403121561077557600080fd5b6102cd826105da565b60006020828403121561079057600080fd5b6102cd826105c1565b6000602082840312156107ab57600080fd5b813567ffffffffffffffff811681146102cd57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126107f857600080fd5b83018035915067ffffffffffffffff82111561081357600080fd5b60200191503681900382131561047d57600080fd5b600061010063ffffffff8d1683528b602084015267ffffffffffffffff8b16604084015273ffffffffffffffffffffffffffffffffffffffff8a1660608401528860808401528060a0840152610881818401888a6106f6565b905082810360c08401526108968186886106f6565b9150508260e08301529b9a5050505050505050505050565b600080858511156108be57600080fd5b838611156108cb57600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156109185780818660040360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b803560208310156102b5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b169291505056fea26469706673582212204c4d830adb3f35bb83abcf21e2970cd9ee3b069efff5a13781973bd9482cdf5c64736f6c63430008160033",
  "deployedBytecode": "0x60806040526004361061005a5760003560e01c8063475b6d9e11610043578063475b6d9e14610094578063734ff5f3146100a75780638624ba07146100f457600080fd5b80633146646a1461005f5780633927c07514610081575b600080fd5b34801561006b57600080fd5b5061007f61007a366004610484565b610107565b005b61007f61008f36600461052d565b610147565b61007f6100a23660046105fe565b6101ab565b3480156100b357600080fd5b506100db7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200160405180910390f35b61007f61010236600461067d565b6101c1565b7f13cf8d43ee24e24d09e67d7e0e0d8860e18c73357bb2cec756f313eb8706e60b83838360405161013a9392919061073f565b60405180910390a1505050565b610167876101558585610296565b61015f86866102bb565b8989896102d4565b7f13cf8d43ee24e24d09e67d7e0e0d8860e18c73357bb2cec756f313eb8706e60b83838360405161019a9392919061073f565b60405180910390a150505050505050565b6101b98686868686866102d4565b505050505050565b6101fb602082017f00000000000000000000000000000000000000000000000000000000000000006101f38285610763565b8787876102d4565b7f1c1a93b55888096fbb5ecbc7e9e6e330d669ae97368faf548317eabd09af24a061022c604083016020840161077e565b60408301356102416080850160608601610799565b61024e6020860186610763565b608086013561026060a08801886107c3565b61026d60c08a018a6107c3565b8a60e001356040516102889a99989796959493929190610828565b60405180910390a150505050565b60006102a66031602d84866108ae565b6102af916108d8565b60e01c90505b92915050565b60006102cd6102ca8484610422565b90565b9392505050565b60005b8281101561037a577f474242c3ea94bd866150f89e662fefa9f94b2c4e5cc3c00d9a51ffcfd85501a384848381811061031257610312610920565b6103289260206040909202019081019150610763565b85858481811061033a5761033a610920565b6040805173ffffffffffffffffffffffffffffffffffffffff909516855260209181029390930181013590840152500160405180910390a16001016102d7565b507f66365fb5def0779b4a6d68aa44e6db5a8d6ee0857bbf2d306eaf51d5aa95eebd6103a9602088018861077e565b60208801356103be60608a0160408b01610799565b6040805163ffffffff9485168152602081019390935267ffffffffffffffff90911690820152908716606082015273ffffffffffffffffffffffffffffffffffffffff8616608082015260a0810183905260c00160405180910390a1505050505050565b60006104326051603184866108ae565b6102cd9161094f565b60008083601f84011261044d57600080fd5b50813567ffffffffffffffff81111561046557600080fd5b60208301915083602082850101111561047d57600080fd5b9250929050565b60008060006040848603121561049957600080fd5b833567ffffffffffffffff8111156104b057600080fd5b6104bc8682870161043b565b909790965060209590950135949350505050565b6000606082840312156104e257600080fd5b50919050565b60008083601f8401126104fa57600080fd5b50813567ffffffffffffffff81111561051257600080fd5b6020830191508360208260061b850101111561047d57600080fd5b600080600080600080600060e0888a03121561054857600080fd5b61055289896104d0565b9650606088013567ffffffffffffffff8082111561056f57600080fd5b61057b8b838c016104e8565b909850965060808a0135955060a08a013591508082111561059b57600080fd5b506105a88a828b0161043b565b989b979a5095989497959660c090950135949350505050565b803563ffffffff811681146105d557600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105d557600080fd5b60008060008060008060e0878903121561061757600080fd5b61062188886104d0565b955061062f606088016105c1565b945061063d608088016105da565b935060a087013567ffffffffffffffff81111561065957600080fd5b61066589828a016104e8565b979a969950949794969560c090950135949350505050565b6000806000806060858703121561069357600080fd5b843567ffffffffffffffff808211156106ab57600080fd5b6106b7888389016104e8565b90965094506020870135935060408701359150808211156106d757600080fd5b50850161010081880312156106eb57600080fd5b939692955090935050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040815260006107536040830185876106f6565b9050826020830152949350505050565b60006020828403121561077557600080fd5b6102cd826105da565b60006020828403121561079057600080fd5b6102cd826105c1565b6000602082840312156107ab57600080fd5b813567ffffffffffffffff811681146102cd57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126107f857600080fd5b83018035915067ffffffffffffffff82111561081357600080fd5b60200191503681900382131561047d57600080fd5b600061010063ffffffff8d1683528b602084015267ffffffffffffffff8b16604084015273ffffffffffffffffffffffffffffffffffffffff8a1660608401528860808401528060a0840152610881818401888a6106f6565b905082810360c08401526108968186886106f6565b9150508260e08301529b9a5050505050505050505050565b600080858511156108be57600080fd5b838611156108cb57600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156109185780818660040360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b803560208310156102b5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b169291505056fea26469706673582212204c4d830adb3f35bb83abcf21e2970cd9ee3b069efff5a13781973bd9482cdf5c64736f6c63430008160033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
