[
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_l1ChainId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_aliasedOwner",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "_l2TokenProxyBytecodeHash",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "_legacySharedBridge",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_bridgedTokenBeacon",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "_contractsDeployedAlready",
        "type": "bool"
      },
      {
        "internalType": "address",
        "name": "_wethToken",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "_baseTokenAssetId",
        "type": "bytes32"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "expected",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "supplied",
        "type": "address"
      }
    ],
    "name": "AddressMismatch",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "AmountMustBeGreaterThanZero",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "AssetIdAlreadyRegistered",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "expected",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "supplied",
        "type": "bytes32"
      }
    ],
    "name": "AssetIdMismatch",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "assetId",
        "type": "bytes32"
      }
    ],
    "name": "AssetIdNotSupported",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "BurningNativeWETHNotSupported",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "DeployFailed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "DeployingBridgedTokenForNativeToken",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "EmptyAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "EmptyBytes32",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "EmptyDeposit",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "EmptyToken",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidNTVBurnData",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NoLegacySharedBridge",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NonEmptyMsgValue",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TokenIsLegacy",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TokenNotLegacy",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      }
    ],
    "name": "TokenNotSupported",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TokensWithFeesNotSupported",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "U32CastOverflow",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "caller",
        "type": "address"
      }
    ],
    "name": "Unauthorized",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "UnsupportedEncodingVersion",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "expected",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "actual",
        "type": "uint256"
      }
    ],
    "name": "ValueMismatch",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroAddress",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "chainId",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "assetId",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "BridgeBurn",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "chainId",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "assetId",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "BridgeMint",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "bridgedTokenBeacon",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "bridgedTokenProxyBytecodeHash",
        "type": "bytes32"
      }
    ],
    "name": "BridgedTokenBeaconUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "l1Sender",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "l2Receiver",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "l2Token",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "FinalizeDeposit",
    "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": "l2TokenBeacon",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "l2TokenProxyBytecodeHash",
        "type": "bytes32"
      }
    ],
    "name": "L2TokenBeaconUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferStarted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Paused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Unpaused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "l2Sender",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "l1Receiver",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "l2Token",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "WithdrawalInitiated",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "ASSET_ROUTER",
    "outputs": [
      {
        "internalType": "contract IAssetRouterBase",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "BASE_TOKEN_ASSET_ID",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "L1_CHAIN_ID",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "L2_LEGACY_SHARED_BRIDGE",
    "outputs": [
      {
        "internalType": "contract IL2SharedBridgeLegacy",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "WETH_TOKEN",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "acceptOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tokenAddress",
        "type": "address"
      }
    ],
    "name": "assetId",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "assetId",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_chainId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_l2MsgValue",
        "type": "uint256"
      },
      {
        "internalType": "bytes32",
        "name": "_assetId",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "_originalCaller",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "_data",
        "type": "bytes"
      }
    ],
    "name": "bridgeBurn",
    "outputs": [
      {
        "internalType": "bytes",
        "name": "_bridgeMintData",
        "type": "bytes"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_chainId",
        "type": "uint256"
      },
      {
        "internalType": "bytes32",
        "name": "_assetId",
        "type": "bytes32"
      },
      {
        "internalType": "bytes",
        "name": "_data",
        "type": "bytes"
      }
    ],
    "name": "bridgeMint",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "bridgedTokenBeacon",
    "outputs": [
      {
        "internalType": "contract IBeacon",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenOriginChainId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_nonNativeToken",
        "type": "address"
      }
    ],
    "name": "calculateCreate2TokenAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_nativeToken",
        "type": "address"
      }
    ],
    "name": "ensureTokenIsRegistered",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "tokenAssetId",
        "type": "bytes32"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_token",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_originChainId",
        "type": "uint256"
      }
    ],
    "name": "getERC20Getters",
    "outputs": [
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_l1Token",
        "type": "address"
      }
    ],
    "name": "l2TokenAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "expectedToken",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "assetId",
        "type": "bytes32"
      }
    ],
    "name": "originChainId",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "originChainId",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "paused",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pendingOwner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_nativeToken",
        "type": "address"
      }
    ],
    "name": "registerToken",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_l2TokenAddress",
        "type": "address"
      }
    ],
    "name": "setLegacyTokenAssetId",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "assetId",
        "type": "bytes32"
      }
    ],
    "name": "tokenAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "tokenAddress",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes",
        "name": "_erc20Data",
        "type": "bytes"
      }
    ],
    "name": "tokenDataOriginChainId",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "tokenOriginChainId",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes",
        "name": "_burnData",
        "type": "bytes"
      },
      {
        "internalType": "bytes32",
        "name": "_expectedAssetId",
        "type": "bytes32"
      }
    ],
    "name": "tryRegisterTokenFromBurnData",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "unpause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]
