{
  "abi": [
    {
      "type": "constructor",
      "inputs": [
        {
          "name": "endpoint",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "UPGRADE_INTERFACE_VERSION",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "string",
          "internalType": "string"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "activateEmergency",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "allowInitializePath",
      "inputs": [
        {
          "name": "origin",
          "type": "tuple",
          "internalType": "struct Origin",
          "components": [
            {
              "name": "srcEid",
              "type": "uint32",
              "internalType": "uint32"
            },
            {
              "name": "sender",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "nonce",
              "type": "uint64",
              "internalType": "uint64"
            }
          ]
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "bool",
          "internalType": "bool"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "deactivateEmergency",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "eip712Domain",
      "inputs": [],
      "outputs": [
        {
          "name": "fields",
          "type": "bytes1",
          "internalType": "bytes1"
        },
        {
          "name": "name",
          "type": "string",
          "internalType": "string"
        },
        {
          "name": "version",
          "type": "string",
          "internalType": "string"
        },
        {
          "name": "chainId",
          "type": "uint256",
          "internalType": "uint256"
        },
        {
          "name": "verifyingContract",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "salt",
          "type": "bytes32",
          "internalType": "bytes32"
        },
        {
          "name": "extensions",
          "type": "uint256[]",
          "internalType": "uint256[]"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "endpoint",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "contract ILayerZeroEndpointV2"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "globalTransferRoots",
      "inputs": [
        {
          "name": "index",
          "type": "uint64",
          "internalType": "uint64"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "hubEid",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint32",
          "internalType": "uint32"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "initialize",
      "inputs": [
        {
          "name": "token_",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "hubEid_",
          "type": "uint32",
          "internalType": "uint32"
        },
        {
          "name": "delegate",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "rootDecider_",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "withdrawGlobalDecider_",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "withdrawLocalDecider_",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "singleWithdrawGlobalVerifier_",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "singleWithdrawLocalVerifier_",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "eip712Init",
          "type": "bytes",
          "internalType": "bytes"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "initializeV2",
      "inputs": [
        {
          "name": "name_",
          "type": "string",
          "internalType": "string"
        },
        {
          "name": "version_",
          "type": "string",
          "internalType": "string"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "isAllowedProver",
      "inputs": [
        {
          "name": "prover",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "bool",
          "internalType": "bool"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "isComposeMsgSender",
      "inputs": [
        {
          "name": "",
          "type": "tuple",
          "internalType": "struct Origin",
          "components": [
            {
              "name": "srcEid",
              "type": "uint32",
              "internalType": "uint32"
            },
            {
              "name": "sender",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "nonce",
              "type": "uint64",
              "internalType": "uint64"
            }
          ]
        },
        {
          "name": "",
          "type": "bytes",
          "internalType": "bytes"
        },
        {
          "name": "_sender",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "bool",
          "internalType": "bool"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "isUpToDate",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "bool",
          "internalType": "bool"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "latestAggSeq",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint64",
          "internalType": "uint64"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "latestProvedIndex",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint64",
          "internalType": "uint64"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "latestRelayedIndex",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint64",
          "internalType": "uint64"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "latestReservedIndex",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint64",
          "internalType": "uint64"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "lzReceive",
      "inputs": [
        {
          "name": "_origin",
          "type": "tuple",
          "internalType": "struct Origin",
          "components": [
            {
              "name": "srcEid",
              "type": "uint32",
              "internalType": "uint32"
            },
            {
              "name": "sender",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "nonce",
              "type": "uint64",
              "internalType": "uint64"
            }
          ]
        },
        {
          "name": "_guid",
          "type": "bytes32",
          "internalType": "bytes32"
        },
        {
          "name": "_message",
          "type": "bytes",
          "internalType": "bytes"
        },
        {
          "name": "_executor",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "_extraData",
          "type": "bytes",
          "internalType": "bytes"
        }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "nextNonce",
      "inputs": [
        {
          "name": "",
          "type": "uint32",
          "internalType": "uint32"
        },
        {
          "name": "",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "outputs": [
        {
          "name": "nonce",
          "type": "uint64",
          "internalType": "uint64"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "oAppVersion",
      "inputs": [],
      "outputs": [
        {
          "name": "senderVersion",
          "type": "uint64",
          "internalType": "uint64"
        },
        {
          "name": "receiverVersion",
          "type": "uint64",
          "internalType": "uint64"
        }
      ],
      "stateMutability": "pure"
    },
    {
      "type": "function",
      "name": "owner",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "paused",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "bool",
          "internalType": "bool"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "peers",
      "inputs": [
        {
          "name": "_eid",
          "type": "uint32",
          "internalType": "uint32"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "proveTransferRoot",
      "inputs": [
        {
          "name": "proof",
          "type": "bytes",
          "internalType": "bytes"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "provedTransferRoots",
      "inputs": [
        {
          "name": "index",
          "type": "uint64",
          "internalType": "uint64"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "proxiableUUID",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "quoteRelay",
      "inputs": [
        {
          "name": "options",
          "type": "bytes",
          "internalType": "bytes"
        }
      ],
      "outputs": [
        {
          "name": "fee",
          "type": "tuple",
          "internalType": "struct MessagingFee",
          "components": [
            {
              "name": "nativeFee",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "lzTokenFee",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "relayTransferRoot",
      "inputs": [
        {
          "name": "options",
          "type": "bytes",
          "internalType": "bytes"
        }
      ],
      "outputs": [
        {
          "name": "receipt",
          "type": "tuple",
          "internalType": "struct MessagingReceipt",
          "components": [
            {
              "name": "guid",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "nonce",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "fee",
              "type": "tuple",
              "internalType": "struct MessagingFee",
              "components": [
                {
                  "name": "nativeFee",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "lzTokenFee",
                  "type": "uint256",
                  "internalType": "uint256"
                }
              ]
            }
          ]
        }
      ],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "relayTransferRoot",
      "inputs": [
        {
          "name": "options",
          "type": "bytes",
          "internalType": "bytes"
        },
        {
          "name": "refundAddress",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "receipt",
          "type": "tuple",
          "internalType": "struct MessagingReceipt",
          "components": [
            {
              "name": "guid",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "nonce",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "fee",
              "type": "tuple",
              "internalType": "struct MessagingFee",
              "components": [
                {
                  "name": "nativeFee",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "lzTokenFee",
                  "type": "uint256",
                  "internalType": "uint256"
                }
              ]
            }
          ]
        }
      ],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "removeAllowedProver",
      "inputs": [
        {
          "name": "prover",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "renounceOwnership",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "reserveHashChain",
      "inputs": [],
      "outputs": [
        {
          "name": "index",
          "type": "uint64",
          "internalType": "uint64"
        },
        {
          "name": "hashChain",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "reservedHashChains",
      "inputs": [
        {
          "name": "index",
          "type": "uint64",
          "internalType": "uint64"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "rootDecider",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "setAllowedProver",
      "inputs": [
        {
          "name": "prover",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setDelegate",
      "inputs": [
        {
          "name": "_delegate",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setPeer",
      "inputs": [
        {
          "name": "_eid",
          "type": "uint32",
          "internalType": "uint32"
        },
        {
          "name": "_peer",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setVerifiers",
      "inputs": [
        {
          "name": "newRootDecider",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "newWithdrawGlobalDecider",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "newWithdrawLocalDecider",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "newSingleWithdrawGlobalVerifier",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "newSingleWithdrawLocalVerifier",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "singleTeleport",
      "inputs": [
        {
          "name": "isGlobal",
          "type": "bool",
          "internalType": "bool"
        },
        {
          "name": "rootHint",
          "type": "uint64",
          "internalType": "uint64"
        },
        {
          "name": "gr",
          "type": "tuple",
          "internalType": "struct GeneralRecipientLib.GeneralRecipient",
          "components": [
            {
              "name": "chainId",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "recipient",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "tweak",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ]
        },
        {
          "name": "proof",
          "type": "bytes",
          "internalType": "bytes"
        },
        {
          "name": "feeAuth",
          "type": "tuple",
          "internalType": "struct Verifier.RelayerFeeAuthorization",
          "components": [
            {
              "name": "relayerFee",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "maxFee",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "deadline",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "signature",
              "type": "bytes",
              "internalType": "bytes"
            }
          ]
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "singleTeleport",
      "inputs": [
        {
          "name": "isGlobal",
          "type": "bool",
          "internalType": "bool"
        },
        {
          "name": "rootHint",
          "type": "uint64",
          "internalType": "uint64"
        },
        {
          "name": "gr",
          "type": "tuple",
          "internalType": "struct GeneralRecipientLib.GeneralRecipient",
          "components": [
            {
              "name": "chainId",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "recipient",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "tweak",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ]
        },
        {
          "name": "proof",
          "type": "bytes",
          "internalType": "bytes"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "singleWithdrawGlobalVerifier",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "singleWithdrawLocalVerifier",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "teleport",
      "inputs": [
        {
          "name": "isGlobal",
          "type": "bool",
          "internalType": "bool"
        },
        {
          "name": "rootHint",
          "type": "uint64",
          "internalType": "uint64"
        },
        {
          "name": "gr",
          "type": "tuple",
          "internalType": "struct GeneralRecipientLib.GeneralRecipient",
          "components": [
            {
              "name": "chainId",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "recipient",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "tweak",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ]
        },
        {
          "name": "proof",
          "type": "bytes",
          "internalType": "bytes"
        },
        {
          "name": "feeAuth",
          "type": "tuple",
          "internalType": "struct Verifier.RelayerFeeAuthorization",
          "components": [
            {
              "name": "relayerFee",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "maxFee",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "deadline",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "signature",
              "type": "bytes",
              "internalType": "bytes"
            }
          ]
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "teleport",
      "inputs": [
        {
          "name": "isGlobal",
          "type": "bool",
          "internalType": "bool"
        },
        {
          "name": "rootHint",
          "type": "uint64",
          "internalType": "uint64"
        },
        {
          "name": "gr",
          "type": "tuple",
          "internalType": "struct GeneralRecipientLib.GeneralRecipient",
          "components": [
            {
              "name": "chainId",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "recipient",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "tweak",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ]
        },
        {
          "name": "proof",
          "type": "bytes",
          "internalType": "bytes"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "token",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "totalTeleported",
      "inputs": [
        {
          "name": "recipient",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "transferOwnership",
      "inputs": [
        {
          "name": "newOwner",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "upgradeToAndCall",
      "inputs": [
        {
          "name": "newImplementation",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "data",
          "type": "bytes",
          "internalType": "bytes"
        }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "withdrawGlobalDecider",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "withdrawLocalDecider",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "event",
      "name": "ActivateEmergency",
      "inputs": [],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "DeactivateEmergency",
      "inputs": [],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "EIP712DomainChanged",
      "inputs": [],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "EmergencyTriggered",
      "inputs": [
        {
          "name": "index",
          "type": "uint64",
          "indexed": true,
          "internalType": "uint64"
        },
        {
          "name": "root1",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "root2",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "GlobalRootSaved",
      "inputs": [
        {
          "name": "aggSeq",
          "type": "uint64",
          "indexed": true,
          "internalType": "uint64"
        },
        {
          "name": "root",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "HashChainReserved",
      "inputs": [
        {
          "name": "index",
          "type": "uint64",
          "indexed": true,
          "internalType": "uint64"
        },
        {
          "name": "hashChain",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Initialized",
      "inputs": [
        {
          "name": "version",
          "type": "uint64",
          "indexed": false,
          "internalType": "uint64"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "OwnershipTransferred",
      "inputs": [
        {
          "name": "previousOwner",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "newOwner",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Paused",
      "inputs": [
        {
          "name": "account",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "PeerSet",
      "inputs": [
        {
          "name": "eid",
          "type": "uint32",
          "indexed": false,
          "internalType": "uint32"
        },
        {
          "name": "peer",
          "type": "bytes32",
          "indexed": false,
          "internalType": "bytes32"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "ProverAllowed",
      "inputs": [
        {
          "name": "prover",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "ProverRemoved",
      "inputs": [
        {
          "name": "prover",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Teleport",
      "inputs": [
        {
          "name": "to",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "value",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "isGlobal",
          "type": "bool",
          "indexed": false,
          "internalType": "bool"
        },
        {
          "name": "rootHint",
          "type": "uint64",
          "indexed": false,
          "internalType": "uint64"
        },
        {
          "name": "transferRoot",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "gr",
          "type": "tuple",
          "indexed": false,
          "internalType": "struct GeneralRecipientLib.GeneralRecipient",
          "components": [
            {
              "name": "chainId",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "recipient",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "tweak",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ]
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "TeleportWithRelayerFee",
      "inputs": [
        {
          "name": "to",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "relayer",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "recipientValue",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "relayerFee",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "isGlobal",
          "type": "bool",
          "indexed": false,
          "internalType": "bool"
        },
        {
          "name": "rootHint",
          "type": "uint64",
          "indexed": false,
          "internalType": "uint64"
        },
        {
          "name": "transferRoot",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "gr",
          "type": "tuple",
          "indexed": false,
          "internalType": "struct GeneralRecipientLib.GeneralRecipient",
          "components": [
            {
              "name": "chainId",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "recipient",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "tweak",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ]
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "TransferRootProved",
      "inputs": [
        {
          "name": "index",
          "type": "uint64",
          "indexed": true,
          "internalType": "uint64"
        },
        {
          "name": "root",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "TransferRootRelayed",
      "inputs": [
        {
          "name": "index",
          "type": "uint64",
          "indexed": true,
          "internalType": "uint64"
        },
        {
          "name": "root",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "lzMsgId",
          "type": "bytes",
          "indexed": false,
          "internalType": "bytes"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Unpaused",
      "inputs": [
        {
          "name": "account",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Upgraded",
      "inputs": [
        {
          "name": "implementation",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "VerifiersSet",
      "inputs": [
        {
          "name": "rootDecider",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        },
        {
          "name": "withdrawGlobalDecider",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        },
        {
          "name": "withdrawLocalDecider",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        },
        {
          "name": "singleWithdrawGlobalVerifier",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        },
        {
          "name": "singleWithdrawLocalVerifier",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "error",
      "name": "AddressEmptyCode",
      "inputs": [
        {
          "name": "target",
          "type": "address",
          "internalType": "address"
        }
      ]
    },
    {
      "type": "error",
      "name": "ERC1967InvalidImplementation",
      "inputs": [
        {
          "name": "implementation",
          "type": "address",
          "internalType": "address"
        }
      ]
    },
    {
      "type": "error",
      "name": "ERC1967NonPayable",
      "inputs": []
    },
    {
      "type": "error",
      "name": "EndpointMismatch",
      "inputs": [
        {
          "name": "expected",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "actual",
          "type": "address",
          "internalType": "address"
        }
      ]
    },
    {
      "type": "error",
      "name": "EnforcedPause",
      "inputs": []
    },
    {
      "type": "error",
      "name": "ExpectedPause",
      "inputs": []
    },
    {
      "type": "error",
      "name": "ExpectedRootZero",
      "inputs": [
        {
          "name": "rootHint",
          "type": "uint64",
          "internalType": "uint64"
        }
      ]
    },
    {
      "type": "error",
      "name": "FailedCall",
      "inputs": []
    },
    {
      "type": "error",
      "name": "FinalRecipientMismatch",
      "inputs": [
        {
          "name": "expected",
          "type": "uint256",
          "internalType": "uint256"
        },
        {
          "name": "actual",
          "type": "uint256",
          "internalType": "uint256"
        }
      ]
    },
    {
      "type": "error",
      "name": "FinalTransferRootMismatch",
      "inputs": [
        {
          "name": "expected",
          "type": "uint256",
          "internalType": "uint256"
        },
        {
          "name": "actual",
          "type": "uint256",
          "internalType": "uint256"
        }
      ]
    },
    {
      "type": "error",
      "name": "InsufficientMsgValue",
      "inputs": [
        {
          "name": "required",
          "type": "uint256",
          "internalType": "uint256"
        },
        {
          "name": "provided",
          "type": "uint256",
          "internalType": "uint256"
        }
      ]
    },
    {
      "type": "error",
      "name": "InvalidDelegate",
      "inputs": []
    },
    {
      "type": "error",
      "name": "InvalidEndpointCall",
      "inputs": []
    },
    {
      "type": "error",
      "name": "InvalidHubSource",
      "inputs": [
        {
          "name": "srcEid",
          "type": "uint32",
          "internalType": "uint32"
        }
      ]
    },
    {
      "type": "error",
      "name": "InvalidInitialLastLeafIndex",
      "inputs": [
        {
          "name": "value",
          "type": "uint256",
          "internalType": "uint256"
        }
      ]
    },
    {
      "type": "error",
      "name": "InvalidInitialTotalValue",
      "inputs": [
        {
          "name": "value",
          "type": "uint256",
          "internalType": "uint256"
        }
      ]
    },
    {
      "type": "error",
      "name": "InvalidInitialization",
      "inputs": []
    },
    {
      "type": "error",
      "name": "InvalidProof",
      "inputs": []
    },
    {
      "type": "error",
      "name": "InvalidRecipientChainId",
      "inputs": [
        {
          "name": "provided",
          "type": "uint64",
          "internalType": "uint64"
        },
        {
          "name": "expected",
          "type": "uint64",
          "internalType": "uint64"
        }
      ]
    },
    {
      "type": "error",
      "name": "InvalidRelayerFeeSignature",
      "inputs": []
    },
    {
      "type": "error",
      "name": "LzTokenUnavailable",
      "inputs": []
    },
    {
      "type": "error",
      "name": "NewHashChainMismatch",
      "inputs": [
        {
          "name": "index",
          "type": "uint64",
          "internalType": "uint64"
        },
        {
          "name": "expected",
          "type": "uint256",
          "internalType": "uint256"
        },
        {
          "name": "actual",
          "type": "uint256",
          "internalType": "uint256"
        }
      ]
    },
    {
      "type": "error",
      "name": "NoPeer",
      "inputs": [
        {
          "name": "eid",
          "type": "uint32",
          "internalType": "uint32"
        }
      ]
    },
    {
      "type": "error",
      "name": "NoProvedRoot",
      "inputs": []
    },
    {
      "type": "error",
      "name": "NotEnoughNative",
      "inputs": [
        {
          "name": "msgValue",
          "type": "uint256",
          "internalType": "uint256"
        }
      ]
    },
    {
      "type": "error",
      "name": "NotInitializing",
      "inputs": []
    },
    {
      "type": "error",
      "name": "NothingToWithdraw",
      "inputs": [
        {
          "name": "currentTotal",
          "type": "uint256",
          "internalType": "uint256"
        },
        {
          "name": "totalValue",
          "type": "uint256",
          "internalType": "uint256"
        }
      ]
    },
    {
      "type": "error",
      "name": "OldRootMismatch",
      "inputs": [
        {
          "name": "index",
          "type": "uint64",
          "internalType": "uint64"
        },
        {
          "name": "expected",
          "type": "uint256",
          "internalType": "uint256"
        },
        {
          "name": "actual",
          "type": "uint256",
          "internalType": "uint256"
        }
      ]
    },
    {
      "type": "error",
      "name": "OldRootZero",
      "inputs": [
        {
          "name": "index",
          "type": "uint64",
          "internalType": "uint64"
        }
      ]
    },
    {
      "type": "error",
      "name": "OnlyEndpoint",
      "inputs": [
        {
          "name": "addr",
          "type": "address",
          "internalType": "address"
        }
      ]
    },
    {
      "type": "error",
      "name": "OnlyPeer",
      "inputs": [
        {
          "name": "eid",
          "type": "uint32",
          "internalType": "uint32"
        },
        {
          "name": "sender",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ]
    },
    {
      "type": "error",
      "name": "OwnableInvalidOwner",
      "inputs": [
        {
          "name": "owner",
          "type": "address",
          "internalType": "address"
        }
      ]
    },
    {
      "type": "error",
      "name": "OwnableUnauthorizedAccount",
      "inputs": [
        {
          "name": "account",
          "type": "address",
          "internalType": "address"
        }
      ]
    },
    {
      "type": "error",
      "name": "RecipientMismatch",
      "inputs": [
        {
          "name": "expected",
          "type": "uint256",
          "internalType": "uint256"
        },
        {
          "name": "actual",
          "type": "uint256",
          "internalType": "uint256"
        }
      ]
    },
    {
      "type": "error",
      "name": "ReentrancyGuardReentrantCall",
      "inputs": []
    },
    {
      "type": "error",
      "name": "RelayerFeeAuthorizationExpired",
      "inputs": [
        {
          "name": "deadline",
          "type": "uint64",
          "internalType": "uint64"
        },
        {
          "name": "currentTimestamp",
          "type": "uint256",
          "internalType": "uint256"
        }
      ]
    },
    {
      "type": "error",
      "name": "RelayerFeeExceedsDiff",
      "inputs": [
        {
          "name": "relayerFee",
          "type": "uint256",
          "internalType": "uint256"
        },
        {
          "name": "diff",
          "type": "uint256",
          "internalType": "uint256"
        }
      ]
    },
    {
      "type": "error",
      "name": "RelayerFeeExceedsMax",
      "inputs": [
        {
          "name": "relayerFee",
          "type": "uint256",
          "internalType": "uint256"
        },
        {
          "name": "maxFee",
          "type": "uint256",
          "internalType": "uint256"
        }
      ]
    },
    {
      "type": "error",
      "name": "ReserveHashChainNotFound",
      "inputs": [
        {
          "name": "index",
          "type": "uint64",
          "internalType": "uint64"
        }
      ]
    },
    {
      "type": "error",
      "name": "SafeERC20FailedOperation",
      "inputs": [
        {
          "name": "token",
          "type": "address",
          "internalType": "address"
        }
      ]
    },
    {
      "type": "error",
      "name": "TransferRootMismatch",
      "inputs": [
        {
          "name": "expected",
          "type": "uint256",
          "internalType": "uint256"
        },
        {
          "name": "actual",
          "type": "uint256",
          "internalType": "uint256"
        }
      ]
    },
    {
      "type": "error",
      "name": "UUPSUnauthorizedCallContext",
      "inputs": []
    },
    {
      "type": "error",
      "name": "UUPSUnsupportedProxiableUUID",
      "inputs": [
        {
          "name": "slot",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ]
    },
    {
      "type": "error",
      "name": "UnauthorizedProver",
      "inputs": [
        {
          "name": "caller",
          "type": "address",
          "internalType": "address"
        }
      ]
    },
    {
      "type": "error",
      "name": "ZeroAddress",
      "inputs": []
    },
    {
      "type": "error",
      "name": "ZeroHashChain",
      "inputs": [
        {
          "name": "index",
          "type": "uint64",
          "internalType": "uint64"
        }
      ]
    },
    {
      "type": "error",
      "name": "ZeroRefundAddress",
      "inputs": []
    },
    {
      "type": "error",
      "name": "ZeroToken",
      "inputs": []
    }
  ]
}
