export const teleporterABI = [
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "messageID",
        "type": "bytes32"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "feeTokenAddress",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "amount",
            "type": "uint256"
          }
        ],
        "indexed": false,
        "internalType": "struct TeleporterFeeInfo",
        "name": "updatedFeeInfo",
        "type": "tuple"
      }
    ],
    "name": "AddFeeAmount",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "blockchainID",
        "type": "bytes32"
      }
    ],
    "name": "BlockchainIDInitialized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "messageID",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "sourceBlockchainID",
        "type": "bytes32"
      }
    ],
    "name": "MessageExecuted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "messageID",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "sourceBlockchainID",
        "type": "bytes32"
      },
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "messageNonce",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "originSenderAddress",
            "type": "address"
          },
          {
            "internalType": "bytes32",
            "name": "destinationBlockchainID",
            "type": "bytes32"
          },
          {
            "internalType": "address",
            "name": "destinationAddress",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "requiredGasLimit",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "allowedRelayerAddresses",
            "type": "address[]"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "receivedMessageNonce",
                "type": "uint256"
              },
              {
                "internalType": "address",
                "name": "relayerRewardAddress",
                "type": "address"
              }
            ],
            "internalType": "struct TeleporterMessageReceipt[]",
            "name": "receipts",
            "type": "tuple[]"
          },
          {
            "internalType": "bytes",
            "name": "message",
            "type": "bytes"
          }
        ],
        "indexed": false,
        "internalType": "struct TeleporterMessage",
        "name": "message",
        "type": "tuple"
      }
    ],
    "name": "MessageExecutionFailed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "messageID",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "destinationBlockchainID",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "relayerRewardAddress",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "feeTokenAddress",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "amount",
            "type": "uint256"
          }
        ],
        "indexed": false,
        "internalType": "struct TeleporterFeeInfo",
        "name": "feeInfo",
        "type": "tuple"
      }
    ],
    "name": "ReceiptReceived",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "messageID",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "sourceBlockchainID",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "deliverer",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "rewardRedeemer",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "messageNonce",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "originSenderAddress",
            "type": "address"
          },
          {
            "internalType": "bytes32",
            "name": "destinationBlockchainID",
            "type": "bytes32"
          },
          {
            "internalType": "address",
            "name": "destinationAddress",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "requiredGasLimit",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "allowedRelayerAddresses",
            "type": "address[]"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "receivedMessageNonce",
                "type": "uint256"
              },
              {
                "internalType": "address",
                "name": "relayerRewardAddress",
                "type": "address"
              }
            ],
            "internalType": "struct TeleporterMessageReceipt[]",
            "name": "receipts",
            "type": "tuple[]"
          },
          {
            "internalType": "bytes",
            "name": "message",
            "type": "bytes"
          }
        ],
        "indexed": false,
        "internalType": "struct TeleporterMessage",
        "name": "message",
        "type": "tuple"
      }
    ],
    "name": "ReceiveCrossChainMessage",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "redeemer",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "asset",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "RelayerRewardsRedeemed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "messageID",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "destinationBlockchainID",
        "type": "bytes32"
      },
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "messageNonce",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "originSenderAddress",
            "type": "address"
          },
          {
            "internalType": "bytes32",
            "name": "destinationBlockchainID",
            "type": "bytes32"
          },
          {
            "internalType": "address",
            "name": "destinationAddress",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "requiredGasLimit",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "allowedRelayerAddresses",
            "type": "address[]"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "receivedMessageNonce",
                "type": "uint256"
              },
              {
                "internalType": "address",
                "name": "relayerRewardAddress",
                "type": "address"
              }
            ],
            "internalType": "struct TeleporterMessageReceipt[]",
            "name": "receipts",
            "type": "tuple[]"
          },
          {
            "internalType": "bytes",
            "name": "message",
            "type": "bytes"
          }
        ],
        "indexed": false,
        "internalType": "struct TeleporterMessage",
        "name": "message",
        "type": "tuple"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "feeTokenAddress",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "amount",
            "type": "uint256"
          }
        ],
        "indexed": false,
        "internalType": "struct TeleporterFeeInfo",
        "name": "feeInfo",
        "type": "tuple"
      }
    ],
    "name": "SendCrossChainMessage",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "WARP_MESSENGER",
    "outputs": [
      {
        "internalType": "contract IWarpMessenger",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "messageID",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "feeTokenAddress",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "additionalFeeAmount",
        "type": "uint256"
      }
    ],
    "name": "addFeeAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "blockchainID",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "sourceBlockchainID",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "destinationBlockchainID",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "nonce",
        "type": "uint256"
      }
    ],
    "name": "calculateMessageID",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "relayer",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "feeAsset",
        "type": "address"
      }
    ],
    "name": "checkRelayerRewardAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "messageID",
        "type": "bytes32"
      }
    ],
    "name": "getFeeInfo",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "messageID",
        "type": "bytes32"
      }
    ],
    "name": "getMessageHash",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "destinationBlockchainID",
        "type": "bytes32"
      }
    ],
    "name": "getNextMessageID",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "sourceBlockchainID",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "getReceiptAtIndex",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "receivedMessageNonce",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "relayerRewardAddress",
            "type": "address"
          }
        ],
        "internalType": "struct TeleporterMessageReceipt",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "sourceBlockchainID",
        "type": "bytes32"
      }
    ],
    "name": "getReceiptQueueSize",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "messageID",
        "type": "bytes32"
      }
    ],
    "name": "getRelayerRewardAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "initializeBlockchainID",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "messageNonce",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "messageID",
        "type": "bytes32"
      }
    ],
    "name": "messageReceived",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "sourceBlockchainID",
        "type": "bytes32"
      }
    ],
    "name": "receiptQueues",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "first",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "last",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint32",
        "name": "messageIndex",
        "type": "uint32"
      },
      {
        "internalType": "address",
        "name": "relayerRewardAddress",
        "type": "address"
      }
    ],
    "name": "receiveCrossChainMessage",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "messageID",
        "type": "bytes32"
      }
    ],
    "name": "receivedFailedMessageHashes",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "messageHash",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "feeAsset",
        "type": "address"
      }
    ],
    "name": "redeemRelayerRewards",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "sourceBlockchainID",
        "type": "bytes32"
      },
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "messageNonce",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "originSenderAddress",
            "type": "address"
          },
          {
            "internalType": "bytes32",
            "name": "destinationBlockchainID",
            "type": "bytes32"
          },
          {
            "internalType": "address",
            "name": "destinationAddress",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "requiredGasLimit",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "allowedRelayerAddresses",
            "type": "address[]"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "receivedMessageNonce",
                "type": "uint256"
              },
              {
                "internalType": "address",
                "name": "relayerRewardAddress",
                "type": "address"
              }
            ],
            "internalType": "struct TeleporterMessageReceipt[]",
            "name": "receipts",
            "type": "tuple[]"
          },
          {
            "internalType": "bytes",
            "name": "message",
            "type": "bytes"
          }
        ],
        "internalType": "struct TeleporterMessage",
        "name": "message",
        "type": "tuple"
      }
    ],
    "name": "retryMessageExecution",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "messageNonce",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "originSenderAddress",
            "type": "address"
          },
          {
            "internalType": "bytes32",
            "name": "destinationBlockchainID",
            "type": "bytes32"
          },
          {
            "internalType": "address",
            "name": "destinationAddress",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "requiredGasLimit",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "allowedRelayerAddresses",
            "type": "address[]"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "receivedMessageNonce",
                "type": "uint256"
              },
              {
                "internalType": "address",
                "name": "relayerRewardAddress",
                "type": "address"
              }
            ],
            "internalType": "struct TeleporterMessageReceipt[]",
            "name": "receipts",
            "type": "tuple[]"
          },
          {
            "internalType": "bytes",
            "name": "message",
            "type": "bytes"
          }
        ],
        "internalType": "struct TeleporterMessage",
        "name": "message",
        "type": "tuple"
      }
    ],
    "name": "retrySendCrossChainMessage",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "bytes32",
            "name": "destinationBlockchainID",
            "type": "bytes32"
          },
          {
            "internalType": "address",
            "name": "destinationAddress",
            "type": "address"
          },
          {
            "components": [
              {
                "internalType": "address",
                "name": "feeTokenAddress",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "amount",
                "type": "uint256"
              }
            ],
            "internalType": "struct TeleporterFeeInfo",
            "name": "feeInfo",
            "type": "tuple"
          },
          {
            "internalType": "uint256",
            "name": "requiredGasLimit",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "allowedRelayerAddresses",
            "type": "address[]"
          },
          {
            "internalType": "bytes",
            "name": "message",
            "type": "bytes"
          }
        ],
        "internalType": "struct TeleporterMessageInput",
        "name": "messageInput",
        "type": "tuple"
      }
    ],
    "name": "sendCrossChainMessage",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "sourceBlockchainID",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32[]",
        "name": "messageIDs",
        "type": "bytes32[]"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "feeTokenAddress",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "amount",
            "type": "uint256"
          }
        ],
        "internalType": "struct TeleporterFeeInfo",
        "name": "feeInfo",
        "type": "tuple"
      },
      {
        "internalType": "address[]",
        "name": "allowedRelayerAddresses",
        "type": "address[]"
      }
    ],
    "name": "sendSpecifiedReceipts",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "messageID",
        "type": "bytes32"
      }
    ],
    "name": "sentMessageInfo",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "messageHash",
        "type": "bytes32"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "feeTokenAddress",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "amount",
            "type": "uint256"
          }
        ],
        "internalType": "struct TeleporterFeeInfo",
        "name": "feeInfo",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  }
];
