{
  "_format": "hh-sol-artifact-1",
  "contractName": "TokenBridge",
  "sourceName": "contracts/tokenBridge/TokenBridge.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "AlreadyBridgedToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "AlreadyBrigedToNativeTokenSet",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ArrayLengthsDoNotMatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallerIsNotMessageService",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "DecimalsAreUnknown",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "permitData",
          "type": "bytes4"
        },
        {
          "internalType": "bytes4",
          "name": "permitSelector",
          "type": "bytes4"
        }
      ],
      "name": "InvalidPermitData",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "enum IPauseManager.PauseType",
          "name": "pauseType",
          "type": "uint8"
        }
      ],
      "name": "IsNotPaused",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "enum IPauseManager.PauseType",
          "name": "pauseType",
          "type": "uint8"
        }
      ],
      "name": "IsPaused",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "NativeToBridgedTokenAlreadySet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "NotReserved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PauseTypeNotUsed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "PermitNotAllowingBridge",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "PermitNotFromSender",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "remoteTokenBridge",
          "type": "address"
        }
      ],
      "name": "RemoteTokenBridgeAlreadySet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "ReservedToken",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RolesNotDifferent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "SenderNotAuthorized",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "SourceChainSameAsTargetChain",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "StatusAddressNotAllowed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenListEmpty",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "TokenNotDeployed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroAddressNotAllowed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "ZeroAmountNotAllowed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroChainIdNotAllowed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroHashNotAllowed",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "nativeToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "bridgedToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "BridgingFinalized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "nativeToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "bridgedToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "BridgingFinalizedV2",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "BridgingInitiated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "BridgingInitiatedV2",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "nativeToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "customContract",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "setBy",
          "type": "address"
        }
      ],
      "name": "CustomContractSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "confirmedBy",
          "type": "address"
        }
      ],
      "name": "DeploymentConfirmed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newMessageService",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldMessageService",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "setBy",
          "type": "address"
        }
      ],
      "name": "MessageServiceUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "NewToken",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "bridgedToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "nativeToken",
          "type": "address"
        }
      ],
      "name": "NewTokenDeployed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "enum IPauseManager.PauseType",
          "name": "pauseType",
          "type": "uint8"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "PauseTypeRoleSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "enum IPauseManager.PauseType",
          "name": "pauseType",
          "type": "uint8"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousRole",
          "type": "bytes32"
        }
      ],
      "name": "PauseTypeRoleUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "messageSender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "enum IPauseManager.PauseType",
          "name": "pauseType",
          "type": "uint8"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "remoteSender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "setter",
          "type": "address"
        }
      ],
      "name": "RemoteSenderSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "remoteTokenBridge",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "setBy",
          "type": "address"
        }
      ],
      "name": "RemoteTokenBridgeSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "ReservationRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "TokenDeployed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "TokenReserved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "enum IPauseManager.PauseType",
          "name": "unPauseType",
          "type": "uint8"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "UnPauseTypeRoleSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "enum IPauseManager.PauseType",
          "name": "unPauseType",
          "type": "uint8"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousRole",
          "type": "bytes32"
        }
      ],
      "name": "UnPauseTypeRoleUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "messageSender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "enum IPauseManager.PauseType",
          "name": "pauseType",
          "type": "uint8"
        }
      ],
      "name": "UnPaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "CONTRACT_VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PAUSE_ALL_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PAUSE_COMPLETE_TOKEN_BRIDGING_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PAUSE_INITIATE_TOKEN_BRIDGING_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REMOVE_RESERVED_TOKEN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SET_CUSTOM_CONTRACT_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SET_MESSAGE_SERVICE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SET_REMOTE_TOKENBRIDGE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SET_RESERVED_TOKEN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UNPAUSE_ALL_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UNPAUSE_COMPLETE_TOKEN_BRIDGING_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UNPAUSE_INITIATE_TOKEN_BRIDGING_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_recipient",
          "type": "address"
        }
      ],
      "name": "bridgeToken",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_recipient",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_permitData",
          "type": "bytes"
        }
      ],
      "name": "bridgeTokenWithPermit",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "bridged",
          "type": "address"
        }
      ],
      "name": "bridgedToNativeToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "native",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_nativeToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_tokenMetadata",
          "type": "bytes"
        }
      ],
      "name": "completeBridging",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_tokens",
          "type": "address[]"
        }
      ],
      "name": "confirmDeployment",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "defaultAdmin",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "messageService",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenBeacon",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "sourceChainId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "targetChainId",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "reservedTokens",
              "type": "address[]"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "addressWithRole",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct IPermissionsManager.RoleAddress[]",
              "name": "roleAddresses",
              "type": "tuple[]"
            },
            {
              "components": [
                {
                  "internalType": "enum IPauseManager.PauseType",
                  "name": "pauseType",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct IPauseManager.PauseTypeRole[]",
              "name": "pauseTypeRoles",
              "type": "tuple[]"
            },
            {
              "components": [
                {
                  "internalType": "enum IPauseManager.PauseType",
                  "name": "pauseType",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "role",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct IPauseManager.PauseTypeRole[]",
              "name": "unpauseTypeRoles",
              "type": "tuple[]"
            }
          ],
          "internalType": "struct ITokenBridge.InitializationData",
          "name": "_initializationData",
          "type": "tuple"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum IPauseManager.PauseType",
          "name": "_pauseType",
          "type": "uint8"
        }
      ],
      "name": "isPaused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "pauseTypeIsPaused",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "messageService",
      "outputs": [
        {
          "internalType": "contract IMessageService",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "native",
          "type": "address"
        }
      ],
      "name": "nativeToBridgedToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "bridged",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum IPauseManager.PauseType",
          "name": "_pauseType",
          "type": "uint8"
        }
      ],
      "name": "pauseByType",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "pauseType",
          "type": "bytes32"
        }
      ],
      "name": "pauseTypeStatuses",
      "outputs": [
        {
          "internalType": "bool",
          "name": "pauseStatus",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_defaultAdmin",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "addressWithRole",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            }
          ],
          "internalType": "struct IPermissionsManager.RoleAddress[]",
          "name": "_roleAddresses",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "enum IPauseManager.PauseType",
              "name": "pauseType",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            }
          ],
          "internalType": "struct IPauseManager.PauseTypeRole[]",
          "name": "_pauseTypeRoles",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "enum IPauseManager.PauseType",
              "name": "pauseType",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            }
          ],
          "internalType": "struct IPauseManager.PauseTypeRole[]",
          "name": "_unpauseTypeRoles",
          "type": "tuple[]"
        }
      ],
      "name": "reinitializePauseTypesAndPermissions",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "remoteSender",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "removeReserved",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_nativeToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_targetContract",
          "type": "address"
        }
      ],
      "name": "setCustomContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_nativeTokens",
          "type": "address[]"
        }
      ],
      "name": "setDeployed",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_messageService",
          "type": "address"
        }
      ],
      "name": "setMessageService",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_remoteTokenBridge",
          "type": "address"
        }
      ],
      "name": "setRemoteTokenBridge",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "setReserved",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "sourceChainId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetChainId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenBeacon",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum IPauseManager.PauseType",
          "name": "_pauseType",
          "type": "uint8"
        }
      ],
      "name": "unPauseByType",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum IPauseManager.PauseType",
          "name": "_pauseType",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "_newRole",
          "type": "bytes32"
        }
      ],
      "name": "updatePauseTypeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum IPauseManager.PauseType",
          "name": "_pauseType",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "_newRole",
          "type": "bytes32"
        }
      ],
      "name": "updateUnpauseTypeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "[encoded data, 47054 characters]",
  "deployedBytecode": "[encoded data, 46568 characters]",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
