{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockL1ScrollMessenger",
  "sourceName": "contracts/test/MockL1ScrollMessanger.sol",
  "abi": [
    {
      "inputs": [],
      "name": "ErrorZeroAddress",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "messageHash",
          "type": "bytes32"
        }
      ],
      "name": "FailedRelayedMessage",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "messageHash",
          "type": "bytes32"
        }
      ],
      "name": "RelayedMessage",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "messageNonce",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "gasLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "message",
          "type": "bytes"
        }
      ],
      "name": "SentMessage",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldMaxReplayTimes",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newMaxReplayTimes",
          "type": "uint256"
        }
      ],
      "name": "UpdateMaxReplayTimes",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "messageNonce",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "message",
          "type": "bytes"
        }
      ],
      "name": "dropMessage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_nonce",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_message",
          "type": "bytes"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "batchIndex",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "merkleProof",
              "type": "bytes"
            }
          ],
          "internalType": "struct IL1ScrollMessenger.L2MessageProof",
          "name": "_proof",
          "type": "tuple"
        }
      ],
      "name": "relayMessageWithProof",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_messageNonce",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_message",
          "type": "bytes"
        },
        {
          "internalType": "uint32",
          "name": "_newGasLimit",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "_refundAddress",
          "type": "address"
        }
      ],
      "name": "replayMessage",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_message",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_gasLimit",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "refundAddress",
          "type": "address"
        }
      ],
      "name": "sendMessage",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_message",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_gasLimit",
          "type": "uint256"
        }
      ],
      "name": "sendMessage",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "xDomainMessageSender",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052348015600f57600080fd5b50610a278061001f6000396000f3fe6080604052600436106100555760003560e01c806329907acd1461005a578063550041051461007e5780635f7b1577146100915780636e296e45146100a4578063b2267a7b146100e0578063c311b6fc146100f3575b600080fd5b34801561006657600080fd5b5061007c6100753660046105c3565b5050505050565b005b61007c61008c366004610635565b610113565b61007c61009f3660046106d3565b61012f565b3480156100b057600080fd5b506000546100c4906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b61007c6100ee36600461077b565b6101bf565b3480156100ff57600080fd5b5061007c61010e3660046107da565b610266565b6101268686858563ffffffff16336103ff565b50505050505050565b610174868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508892503391506103ff9050565b6001600160a01b0381166108fc8661018d6001346108cc565b61019791906108cc565b6040518115909202916000818181858888f19350505050158015610126573d6000803e3d6000fd5b346101cb8460016108e5565b11156102175760405162461bcd60e51b8152602060048201526016602482015275696e73756666696369656e74206d73672e76616c756560501b60448201526064015b60405180910390fd5b61022484848484336103ff565b336108fc846102346001346108cc565b61023e91906108cc565b6040518115909202916000818181858888f19350505050158015610075573d6000803e3d6000fd5b60006102758787878787610489565b80516020918201206000818152600190925260409091205490915060ff16156102f25760405162461bcd60e51b815260206004820152602960248201527f4d6573736167652077617320616c7265616479207375636365737366756c6c7960448201526808195e1958dd5d195960ba1b606482015260840161020e565b600080546001600160a01b0319166001600160a01b0389811691909117825560405190881690879061032590879061091c565b60006040518083038185875af1925050503d8060008114610362576040519150601f19603f3d011682016040523d82523d6000602084013e610367565b606091505b5050600080546001600160a01b0319169055905080156103c9576000828152600160208190526040808320805460ff19169092179091555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a26103f5565b60405182907f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f90600090a25b5050505050505050565b600061041033878760025488610489565b805190602001209050856001600160a01b0316336001600160a01b03167f104371f3b442861a2a7b82a070afbbaab748bb13757bf47769e170e37809ec1e8760025487896040516104649493929190610964565b60405180910390a36002805490600061047c83610993565b9190505550505050505050565b606085858585856040516024016104a49594939291906109ac565b60408051601f198184030181529190526020810180516001600160e01b0316634778999760e11b179052905095945050505050565b80356001600160a01b03811681146104f057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561052e5761052e6104f5565b60405290565b600082601f83011261054557600080fd5b813567ffffffffffffffff81111561055f5761055f6104f5565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561058e5761058e6104f5565b6040528181528382016020018510156105a657600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156105db57600080fd5b6105e4866104d9565b94506105f2602087016104d9565b93506040860135925060608601359150608086013567ffffffffffffffff81111561061c57600080fd5b61062888828901610534565b9150509295509295909350565b600080600080600080600060e0888a03121561065057600080fd5b610659886104d9565b9650610667602089016104d9565b95506040880135945060608801359350608088013567ffffffffffffffff81111561069157600080fd5b61069d8a828b01610534565b93505060a088013563ffffffff811681146106b757600080fd5b91506106c560c089016104d9565b905092959891949750929550565b60008060008060008060a087890312156106ec57600080fd5b6106f5876104d9565b955060208701359450604087013567ffffffffffffffff81111561071857600080fd5b8701601f8101891361072957600080fd5b803567ffffffffffffffff81111561074057600080fd5b89602082840101111561075257600080fd5b602091909101945092506060870135915061076f608088016104d9565b90509295509295509295565b6000806000806080858703121561079157600080fd5b61079a856104d9565b935060208501359250604085013567ffffffffffffffff8111156107bd57600080fd5b6107c987828801610534565b949793965093946060013593505050565b60008060008060008060c087890312156107f357600080fd5b6107fc876104d9565b955061080a602088016104d9565b94506040870135935060608701359250608087013567ffffffffffffffff81111561083457600080fd5b61084089828a01610534565b92505060a087013567ffffffffffffffff81111561085d57600080fd5b87016040818a03121561086f57600080fd5b61087761050b565b81358152602082013567ffffffffffffffff81111561089557600080fd5b6108a18b828501610534565b60208301525080925050509295509295509295565b634e487b7160e01b600052601160045260246000fd5b818103818111156108df576108df6108b6565b92915050565b808201808211156108df576108df6108b6565b60005b838110156109135781810151838201526020016108fb565b50506000910152565b6000825161092e8184602087016108f8565b9190910192915050565b600081518084526109508160208601602086016108f8565b601f01601f19169290920160200192915050565b8481528360208201528260408201526080606082015260006109896080830184610938565b9695505050505050565b6000600182016109a5576109a56108b6565b5060010190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906109e690830184610938565b97965050505050505056fea2646970667358221220d4c785dbd63c9ced3b2ccd31c09d8c8790aaaffab7a040422c23dd3a5aa088f864736f6c634300081b0033",
  "deployedBytecode": "0x6080604052600436106100555760003560e01c806329907acd1461005a578063550041051461007e5780635f7b1577146100915780636e296e45146100a4578063b2267a7b146100e0578063c311b6fc146100f3575b600080fd5b34801561006657600080fd5b5061007c6100753660046105c3565b5050505050565b005b61007c61008c366004610635565b610113565b61007c61009f3660046106d3565b61012f565b3480156100b057600080fd5b506000546100c4906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b61007c6100ee36600461077b565b6101bf565b3480156100ff57600080fd5b5061007c61010e3660046107da565b610266565b6101268686858563ffffffff16336103ff565b50505050505050565b610174868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508892503391506103ff9050565b6001600160a01b0381166108fc8661018d6001346108cc565b61019791906108cc565b6040518115909202916000818181858888f19350505050158015610126573d6000803e3d6000fd5b346101cb8460016108e5565b11156102175760405162461bcd60e51b8152602060048201526016602482015275696e73756666696369656e74206d73672e76616c756560501b60448201526064015b60405180910390fd5b61022484848484336103ff565b336108fc846102346001346108cc565b61023e91906108cc565b6040518115909202916000818181858888f19350505050158015610075573d6000803e3d6000fd5b60006102758787878787610489565b80516020918201206000818152600190925260409091205490915060ff16156102f25760405162461bcd60e51b815260206004820152602960248201527f4d6573736167652077617320616c7265616479207375636365737366756c6c7960448201526808195e1958dd5d195960ba1b606482015260840161020e565b600080546001600160a01b0319166001600160a01b0389811691909117825560405190881690879061032590879061091c565b60006040518083038185875af1925050503d8060008114610362576040519150601f19603f3d011682016040523d82523d6000602084013e610367565b606091505b5050600080546001600160a01b0319169055905080156103c9576000828152600160208190526040808320805460ff19169092179091555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a26103f5565b60405182907f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f90600090a25b5050505050505050565b600061041033878760025488610489565b805190602001209050856001600160a01b0316336001600160a01b03167f104371f3b442861a2a7b82a070afbbaab748bb13757bf47769e170e37809ec1e8760025487896040516104649493929190610964565b60405180910390a36002805490600061047c83610993565b9190505550505050505050565b606085858585856040516024016104a49594939291906109ac565b60408051601f198184030181529190526020810180516001600160e01b0316634778999760e11b179052905095945050505050565b80356001600160a01b03811681146104f057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561052e5761052e6104f5565b60405290565b600082601f83011261054557600080fd5b813567ffffffffffffffff81111561055f5761055f6104f5565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561058e5761058e6104f5565b6040528181528382016020018510156105a657600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156105db57600080fd5b6105e4866104d9565b94506105f2602087016104d9565b93506040860135925060608601359150608086013567ffffffffffffffff81111561061c57600080fd5b61062888828901610534565b9150509295509295909350565b600080600080600080600060e0888a03121561065057600080fd5b610659886104d9565b9650610667602089016104d9565b95506040880135945060608801359350608088013567ffffffffffffffff81111561069157600080fd5b61069d8a828b01610534565b93505060a088013563ffffffff811681146106b757600080fd5b91506106c560c089016104d9565b905092959891949750929550565b60008060008060008060a087890312156106ec57600080fd5b6106f5876104d9565b955060208701359450604087013567ffffffffffffffff81111561071857600080fd5b8701601f8101891361072957600080fd5b803567ffffffffffffffff81111561074057600080fd5b89602082840101111561075257600080fd5b602091909101945092506060870135915061076f608088016104d9565b90509295509295509295565b6000806000806080858703121561079157600080fd5b61079a856104d9565b935060208501359250604085013567ffffffffffffffff8111156107bd57600080fd5b6107c987828801610534565b949793965093946060013593505050565b60008060008060008060c087890312156107f357600080fd5b6107fc876104d9565b955061080a602088016104d9565b94506040870135935060608701359250608087013567ffffffffffffffff81111561083457600080fd5b61084089828a01610534565b92505060a087013567ffffffffffffffff81111561085d57600080fd5b87016040818a03121561086f57600080fd5b61087761050b565b81358152602082013567ffffffffffffffff81111561089557600080fd5b6108a18b828501610534565b60208301525080925050509295509295509295565b634e487b7160e01b600052601160045260246000fd5b818103818111156108df576108df6108b6565b92915050565b808201808211156108df576108df6108b6565b60005b838110156109135781810151838201526020016108fb565b50506000910152565b6000825161092e8184602087016108f8565b9190910192915050565b600081518084526109508160208601602086016108f8565b601f01601f19169290920160200192915050565b8481528360208201528260408201526080606082015260006109896080830184610938565b9695505050505050565b6000600182016109a5576109a56108b6565b5060010190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906109e690830184610938565b97965050505050505056fea2646970667358221220d4c785dbd63c9ced3b2ccd31c09d8c8790aaaffab7a040422c23dd3a5aa088f864736f6c634300081b0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
