diff --git a/evm/src/NttManager/NttManager.sol b/evm/src/NttManager/NttManager.sol index 30df33805..46276f3e1 100644 --- a/evm/src/NttManager/NttManager.sol +++ b/evm/src/NttManager/NttManager.sol @@ -41,7 +41,7 @@ contract NttManager is INttManager, RateLimiter, ManagerBase { using TrimmedAmountLib for uint256; using TrimmedAmountLib for TrimmedAmount; - string public constant NTT_MANAGER_VERSION = "1.3.1"; + string public constant NTT_MANAGER_VERSION = "2.0.0"; // =============== Setup ================================================================= diff --git a/evm/src/Transceiver/WormholeTransceiver/WormholeTransceiver.sol b/evm/src/Transceiver/WormholeTransceiver/WormholeTransceiver.sol index 232fa393b..dbc00b579 100644 --- a/evm/src/Transceiver/WormholeTransceiver/WormholeTransceiver.sol +++ b/evm/src/Transceiver/WormholeTransceiver/WormholeTransceiver.sol @@ -29,7 +29,7 @@ import "./WormholeTransceiverState.sol"; contract WormholeTransceiver is IWormholeTransceiver, WormholeTransceiverState { using BytesParsing for bytes; - string public constant WORMHOLE_TRANSCEIVER_VERSION = "1.4.0"; + string public constant WORMHOLE_TRANSCEIVER_VERSION = "2.0.0"; constructor( address nttManager, diff --git a/evm/ts/__tests__/versions.test.ts b/evm/ts/__tests__/versions.test.ts index 1992adfea..5790fd5a2 100644 --- a/evm/ts/__tests__/versions.test.ts +++ b/evm/ts/__tests__/versions.test.ts @@ -2,7 +2,26 @@ import { Wormhole } from "@wormhole-foundation/sdk"; import { EvmPlatform } from "@wormhole-foundation/sdk-evm"; import { EvmNtt } from "../src/index.js"; -const wh = new Wormhole("Testnet", [EvmPlatform]); +const fallbackRpc = "https://sepolia.drpc.org"; + +// Try default SDK RPC first, fallback to drpc if it fails +async function getWormholeInstance() { + const wh = new Wormhole("Testnet", [EvmPlatform]); + try { + const ctx = wh.getChain("Sepolia"); + const rpc = await ctx.getRpc(); + await rpc.getBlockNumber(); + return wh; + } catch { + return new Wormhole("Testnet", [EvmPlatform], { + chains: { + Sepolia: { + rpc: fallbackRpc, + }, + }, + }); + } +} const overrides = { Sepolia: { @@ -15,8 +34,9 @@ const overrides = { }; describe("ABI Versions Test", function () { - const ctx = wh.getChain("Sepolia"); test("It initializes from Rpc", async function () { + const wh = await getWormholeInstance(); + const ctx = wh.getChain("Sepolia"); const ntt = await EvmNtt.fromRpc(await ctx.getRpc(), { Sepolia: { ...ctx.config, @@ -27,6 +47,8 @@ describe("ABI Versions Test", function () { }); test("It initializes from constructor", async function () { + const wh = await getWormholeInstance(); + const ctx = wh.getChain("Sepolia"); const ntt = new EvmNtt("Testnet", "Sepolia", await ctx.getRpc(), { ...ctx.config.contracts, ...{ ntt: overrides["Sepolia"] }, @@ -35,6 +57,8 @@ describe("ABI Versions Test", function () { }); test("It gets the correct version", async function () { + const wh = await getWormholeInstance(); + const ctx = wh.getChain("Sepolia"); const version = await EvmNtt.getVersion(await ctx.getRpc(), { ntt: overrides["Sepolia"], }); diff --git a/evm/ts/src/bindings.ts b/evm/ts/src/bindings.ts index 40beff958..193c4c3dd 100644 --- a/evm/ts/src/bindings.ts +++ b/evm/ts/src/bindings.ts @@ -1,27 +1,30 @@ import { Provider } from "ethers"; -import { _0_1_0, _1_0_0, _1_1_0 } from "./ethers-contracts/index.js"; +import { _0_1_0, _1_0_0, _1_1_0, _2_0_0 } from "./ethers-contracts/index.js"; import { Ntt } from "@wormhole-foundation/sdk-definitions-ntt"; // This is a descending list of all ABI versions the SDK is aware of. // We check for the first match in descending order, allowing for higher minor and patch versions // being used by the live contract (these are supposed to still be compatible with older ABIs). export const abiVersions = [ + ["2.0.0", _2_0_0], ["1.1.0", _1_1_0], ["1.0.0", _1_0_0], ["0.1.0", _0_1_0], ] as const; export type AbiVersion = (typeof abiVersions)[number][0]; +type AbiBindings = (typeof abiVersions)[number][1]; + export interface NttBindings { NttManager: NttManagerBindings; NttTransceiver: NttTransceiverBindings; } export namespace NttTransceiverBindings { - // Note: this is hardcoded to 0.1.0 so we should be warned if there are changes - // that would affect the interface - export type NttTransceiver = ReturnType; + export type NttTransceiver = ReturnType< + AbiBindings["NttTransceiver"]["connect"] + >; } export interface NttTransceiverBindings { @@ -32,14 +35,14 @@ export interface NttTransceiverBindings { } export namespace NttManagerBindings { - export type NttManager = ReturnType; + export type NttManager = ReturnType; } export interface NttManagerBindings { connect(address: string, provider: Provider): NttManagerBindings.NttManager; } -export function loadAbiVersion(targetVersion: string) { +export function loadAbiVersion(targetVersion: string): NttBindings { for (const [abiVersion, abi] of abiVersions) { if (Ntt.abiVersionMatches(targetVersion, abiVersion)) { return abi; diff --git a/evm/ts/src/ethers-contracts/2_0_0/NttManager.ts b/evm/ts/src/ethers-contracts/2_0_0/NttManager.ts new file mode 100644 index 000000000..f77f28ea2 --- /dev/null +++ b/evm/ts/src/ethers-contracts/2_0_0/NttManager.ts @@ -0,0 +1,1792 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common.js"; + +export declare namespace TransceiverStructs { + export type NttManagerMessageStruct = { + id: BytesLike; + sender: BytesLike; + payload: BytesLike; + }; + + export type NttManagerMessageStructOutput = [ + id: string, + sender: string, + payload: string + ] & { id: string; sender: string; payload: string }; +} + +export declare namespace IRateLimiter { + export type RateLimitParamsStruct = { + limit: BigNumberish; + currentCapacity: BigNumberish; + lastTxTimestamp: BigNumberish; + }; + + export type RateLimitParamsStructOutput = [ + limit: bigint, + currentCapacity: bigint, + lastTxTimestamp: bigint + ] & { limit: bigint; currentCapacity: bigint; lastTxTimestamp: bigint }; + + export type InboundQueuedTransferStruct = { + amount: BigNumberish; + txTimestamp: BigNumberish; + recipient: AddressLike; + }; + + export type InboundQueuedTransferStructOutput = [ + amount: bigint, + txTimestamp: bigint, + recipient: string + ] & { amount: bigint; txTimestamp: bigint; recipient: string }; + + export type OutboundQueuedTransferStruct = { + recipient: BytesLike; + refundAddress: BytesLike; + amount: BigNumberish; + txTimestamp: BigNumberish; + recipientChain: BigNumberish; + sender: AddressLike; + transceiverInstructions: BytesLike; + }; + + export type OutboundQueuedTransferStructOutput = [ + recipient: string, + refundAddress: string, + amount: bigint, + txTimestamp: bigint, + recipientChain: bigint, + sender: string, + transceiverInstructions: string + ] & { + recipient: string; + refundAddress: string; + amount: bigint; + txTimestamp: bigint; + recipientChain: bigint; + sender: string; + transceiverInstructions: string; + }; +} + +export declare namespace INttManager { + export type NttManagerPeerStruct = { + peerAddress: BytesLike; + tokenDecimals: BigNumberish; + }; + + export type NttManagerPeerStructOutput = [ + peerAddress: string, + tokenDecimals: bigint + ] & { peerAddress: string; tokenDecimals: bigint }; +} + +export declare namespace TransceiverRegistry { + export type TransceiverInfoStruct = { + registered: boolean; + enabled: boolean; + index: BigNumberish; + }; + + export type TransceiverInfoStructOutput = [ + registered: boolean, + enabled: boolean, + index: bigint + ] & { registered: boolean; enabled: boolean; index: bigint }; +} + +export interface NttManagerInterface extends Interface { + getFunction( + nameOrSignature: + | "NTT_MANAGER_VERSION" + | "attestationReceived" + | "cancelOutboundQueuedTransfer" + | "chainId" + | "completeInboundQueuedTransfer" + | "completeOutboundQueuedTransfer" + | "executeMsg" + | "getCurrentInboundCapacity" + | "getCurrentOutboundCapacity" + | "getInboundLimitParams" + | "getInboundQueuedTransfer" + | "getMigratesImmutables" + | "getMode" + | "getOutboundLimitParams" + | "getOutboundQueuedTransfer" + | "getPeer" + | "getThreshold" + | "getTransceiverInfo" + | "getTransceivers" + | "initialize" + | "isMessageApproved" + | "isMessageExecuted" + | "isPaused" + | "messageAttestations" + | "migrate" + | "mode" + | "nextMessageSequence" + | "owner" + | "pause" + | "pauser" + | "quoteDeliveryPrice" + | "rateLimitDuration" + | "removeTransceiver" + | "setInboundLimit" + | "setOutboundLimit" + | "setPeer" + | "setThreshold" + | "setTransceiver" + | "token" + | "tokenDecimals" + | "transceiverAttestedToMessage" + | "transfer(uint256,uint16,bytes32)" + | "transfer(uint256,uint16,bytes32,bytes32,bool,bytes)" + | "transferOwnership" + | "transferPauserCapability" + | "unpause" + | "upgrade" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "AdminChanged" + | "BeaconUpgraded" + | "InboundTransferLimitUpdated" + | "InboundTransferQueued" + | "Initialized" + | "MessageAlreadyExecuted" + | "MessageAttestedTo" + | "NotPaused" + | "OutboundTransferCancelled" + | "OutboundTransferLimitUpdated" + | "OutboundTransferQueued" + | "OutboundTransferRateLimited" + | "OwnershipTransferred" + | "Paused" + | "PauserTransferred" + | "PeerUpdated" + | "ThresholdChanged" + | "TransceiverAdded" + | "TransceiverRemoved" + | "TransferRedeemed" + | "TransferSent(bytes32,bytes32,uint256,uint256,uint16,uint64)" + | "TransferSent(bytes32)" + | "Upgraded" + ): EventFragment; + + encodeFunctionData( + functionFragment: "NTT_MANAGER_VERSION", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "attestationReceived", + values: [ + BigNumberish, + BytesLike, + TransceiverStructs.NttManagerMessageStruct + ] + ): string; + encodeFunctionData( + functionFragment: "cancelOutboundQueuedTransfer", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "chainId", values?: undefined): string; + encodeFunctionData( + functionFragment: "completeInboundQueuedTransfer", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "completeOutboundQueuedTransfer", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "executeMsg", + values: [ + BigNumberish, + BytesLike, + TransceiverStructs.NttManagerMessageStruct + ] + ): string; + encodeFunctionData( + functionFragment: "getCurrentInboundCapacity", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getCurrentOutboundCapacity", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getInboundLimitParams", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getInboundQueuedTransfer", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "getMigratesImmutables", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "getMode", values?: undefined): string; + encodeFunctionData( + functionFragment: "getOutboundLimitParams", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getOutboundQueuedTransfer", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getPeer", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getThreshold", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getTransceiverInfo", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getTransceivers", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "initialize", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "isMessageApproved", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "isMessageExecuted", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "isPaused", values?: undefined): string; + encodeFunctionData( + functionFragment: "messageAttestations", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "migrate", values?: undefined): string; + encodeFunctionData(functionFragment: "mode", values?: undefined): string; + encodeFunctionData( + functionFragment: "nextMessageSequence", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "pause", values?: undefined): string; + encodeFunctionData(functionFragment: "pauser", values?: undefined): string; + encodeFunctionData( + functionFragment: "quoteDeliveryPrice", + values: [BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "rateLimitDuration", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "removeTransceiver", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "setInboundLimit", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setOutboundLimit", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setPeer", + values: [BigNumberish, BytesLike, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setThreshold", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setTransceiver", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "token", values?: undefined): string; + encodeFunctionData( + functionFragment: "tokenDecimals", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transceiverAttestedToMessage", + values: [BytesLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transfer(uint256,uint16,bytes32)", + values: [BigNumberish, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "transfer(uint256,uint16,bytes32,bytes32,bool,bytes)", + values: [ + BigNumberish, + BigNumberish, + BytesLike, + BytesLike, + boolean, + BytesLike + ] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "transferPauserCapability", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "unpause", values?: undefined): string; + encodeFunctionData( + functionFragment: "upgrade", + values: [AddressLike] + ): string; + + decodeFunctionResult( + functionFragment: "NTT_MANAGER_VERSION", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "attestationReceived", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "cancelOutboundQueuedTransfer", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "chainId", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "completeInboundQueuedTransfer", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "completeOutboundQueuedTransfer", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "executeMsg", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getCurrentInboundCapacity", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getCurrentOutboundCapacity", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getInboundLimitParams", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getInboundQueuedTransfer", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getMigratesImmutables", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getMode", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getOutboundLimitParams", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getOutboundQueuedTransfer", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getPeer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getThreshold", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getTransceiverInfo", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getTransceivers", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isMessageApproved", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isMessageExecuted", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "isPaused", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "messageAttestations", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "migrate", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "mode", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "nextMessageSequence", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "pauser", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "quoteDeliveryPrice", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "rateLimitDuration", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "removeTransceiver", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setInboundLimit", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setOutboundLimit", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "setPeer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setThreshold", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTransceiver", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "tokenDecimals", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transceiverAttestedToMessage", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transfer(uint256,uint16,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transfer(uint256,uint16,bytes32,bytes32,bool,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferPauserCapability", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "upgrade", data: BytesLike): Result; +} + +export namespace AdminChangedEvent { + export type InputTuple = [previousAdmin: AddressLike, newAdmin: AddressLike]; + export type OutputTuple = [previousAdmin: string, newAdmin: string]; + export interface OutputObject { + previousAdmin: string; + newAdmin: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace BeaconUpgradedEvent { + export type InputTuple = [beacon: AddressLike]; + export type OutputTuple = [beacon: string]; + export interface OutputObject { + beacon: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace InboundTransferLimitUpdatedEvent { + export type InputTuple = [ + chainId: BigNumberish, + oldLimit: BigNumberish, + newLimit: BigNumberish + ]; + export type OutputTuple = [ + chainId: bigint, + oldLimit: bigint, + newLimit: bigint + ]; + export interface OutputObject { + chainId: bigint; + oldLimit: bigint; + newLimit: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace InboundTransferQueuedEvent { + export type InputTuple = [digest: BytesLike]; + export type OutputTuple = [digest: string]; + export interface OutputObject { + digest: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace InitializedEvent { + export type InputTuple = [version: BigNumberish]; + export type OutputTuple = [version: bigint]; + export interface OutputObject { + version: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace MessageAlreadyExecutedEvent { + export type InputTuple = [sourceNttManager: BytesLike, msgHash: BytesLike]; + export type OutputTuple = [sourceNttManager: string, msgHash: string]; + export interface OutputObject { + sourceNttManager: string; + msgHash: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace MessageAttestedToEvent { + export type InputTuple = [ + digest: BytesLike, + transceiver: AddressLike, + index: BigNumberish + ]; + export type OutputTuple = [ + digest: string, + transceiver: string, + index: bigint + ]; + export interface OutputObject { + digest: string; + transceiver: string; + index: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace NotPausedEvent { + export type InputTuple = [notPaused: boolean]; + export type OutputTuple = [notPaused: boolean]; + export interface OutputObject { + notPaused: boolean; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OutboundTransferCancelledEvent { + export type InputTuple = [ + sequence: BigNumberish, + recipient: AddressLike, + amount: BigNumberish + ]; + export type OutputTuple = [ + sequence: bigint, + recipient: string, + amount: bigint + ]; + export interface OutputObject { + sequence: bigint; + recipient: string; + amount: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OutboundTransferLimitUpdatedEvent { + export type InputTuple = [oldLimit: BigNumberish, newLimit: BigNumberish]; + export type OutputTuple = [oldLimit: bigint, newLimit: bigint]; + export interface OutputObject { + oldLimit: bigint; + newLimit: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OutboundTransferQueuedEvent { + export type InputTuple = [queueSequence: BigNumberish]; + export type OutputTuple = [queueSequence: bigint]; + export interface OutputObject { + queueSequence: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OutboundTransferRateLimitedEvent { + export type InputTuple = [ + sender: AddressLike, + sequence: BigNumberish, + amount: BigNumberish, + currentCapacity: BigNumberish + ]; + export type OutputTuple = [ + sender: string, + sequence: bigint, + amount: bigint, + currentCapacity: bigint + ]; + export interface OutputObject { + sender: string; + sequence: bigint; + amount: bigint; + currentCapacity: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OwnershipTransferredEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace PausedEvent { + export type InputTuple = [paused: boolean]; + export type OutputTuple = [paused: boolean]; + export interface OutputObject { + paused: boolean; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace PauserTransferredEvent { + export type InputTuple = [oldPauser: AddressLike, newPauser: AddressLike]; + export type OutputTuple = [oldPauser: string, newPauser: string]; + export interface OutputObject { + oldPauser: string; + newPauser: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace PeerUpdatedEvent { + export type InputTuple = [ + chainId_: BigNumberish, + oldPeerContract: BytesLike, + oldPeerDecimals: BigNumberish, + peerContract: BytesLike, + peerDecimals: BigNumberish + ]; + export type OutputTuple = [ + chainId_: bigint, + oldPeerContract: string, + oldPeerDecimals: bigint, + peerContract: string, + peerDecimals: bigint + ]; + export interface OutputObject { + chainId_: bigint; + oldPeerContract: string; + oldPeerDecimals: bigint; + peerContract: string; + peerDecimals: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ThresholdChangedEvent { + export type InputTuple = [ + oldThreshold: BigNumberish, + threshold: BigNumberish + ]; + export type OutputTuple = [oldThreshold: bigint, threshold: bigint]; + export interface OutputObject { + oldThreshold: bigint; + threshold: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransceiverAddedEvent { + export type InputTuple = [ + transceiver: AddressLike, + transceiversNum: BigNumberish, + threshold: BigNumberish + ]; + export type OutputTuple = [ + transceiver: string, + transceiversNum: bigint, + threshold: bigint + ]; + export interface OutputObject { + transceiver: string; + transceiversNum: bigint; + threshold: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransceiverRemovedEvent { + export type InputTuple = [transceiver: AddressLike, threshold: BigNumberish]; + export type OutputTuple = [transceiver: string, threshold: bigint]; + export interface OutputObject { + transceiver: string; + threshold: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferRedeemedEvent { + export type InputTuple = [digest: BytesLike]; + export type OutputTuple = [digest: string]; + export interface OutputObject { + digest: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferSent_bytes32_bytes32_uint256_uint256_uint16_uint64_Event { + export type InputTuple = [ + recipient: BytesLike, + refundAddress: BytesLike, + amount: BigNumberish, + fee: BigNumberish, + recipientChain: BigNumberish, + msgSequence: BigNumberish + ]; + export type OutputTuple = [ + recipient: string, + refundAddress: string, + amount: bigint, + fee: bigint, + recipientChain: bigint, + msgSequence: bigint + ]; + export interface OutputObject { + recipient: string; + refundAddress: string; + amount: bigint; + fee: bigint; + recipientChain: bigint; + msgSequence: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferSent_bytes32_Event { + export type InputTuple = [digest: BytesLike]; + export type OutputTuple = [digest: string]; + export interface OutputObject { + digest: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpgradedEvent { + export type InputTuple = [implementation: AddressLike]; + export type OutputTuple = [implementation: string]; + export interface OutputObject { + implementation: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface NttManager extends BaseContract { + connect(runner?: ContractRunner | null): NttManager; + waitForDeployment(): Promise; + + interface: NttManagerInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + NTT_MANAGER_VERSION: TypedContractMethod<[], [string], "view">; + + attestationReceived: TypedContractMethod< + [ + sourceChainId: BigNumberish, + sourceNttManagerAddress: BytesLike, + payload: TransceiverStructs.NttManagerMessageStruct + ], + [void], + "nonpayable" + >; + + cancelOutboundQueuedTransfer: TypedContractMethod< + [messageSequence: BigNumberish], + [void], + "nonpayable" + >; + + chainId: TypedContractMethod<[], [bigint], "view">; + + completeInboundQueuedTransfer: TypedContractMethod< + [digest: BytesLike], + [void], + "nonpayable" + >; + + completeOutboundQueuedTransfer: TypedContractMethod< + [messageSequence: BigNumberish], + [bigint], + "payable" + >; + + executeMsg: TypedContractMethod< + [ + sourceChainId: BigNumberish, + sourceNttManagerAddress: BytesLike, + message: TransceiverStructs.NttManagerMessageStruct + ], + [void], + "nonpayable" + >; + + getCurrentInboundCapacity: TypedContractMethod< + [chainId_: BigNumberish], + [bigint], + "view" + >; + + getCurrentOutboundCapacity: TypedContractMethod<[], [bigint], "view">; + + getInboundLimitParams: TypedContractMethod< + [chainId_: BigNumberish], + [IRateLimiter.RateLimitParamsStructOutput], + "view" + >; + + getInboundQueuedTransfer: TypedContractMethod< + [digest: BytesLike], + [IRateLimiter.InboundQueuedTransferStructOutput], + "view" + >; + + getMigratesImmutables: TypedContractMethod<[], [boolean], "view">; + + getMode: TypedContractMethod<[], [bigint], "view">; + + getOutboundLimitParams: TypedContractMethod< + [], + [IRateLimiter.RateLimitParamsStructOutput], + "view" + >; + + getOutboundQueuedTransfer: TypedContractMethod< + [queueSequence: BigNumberish], + [IRateLimiter.OutboundQueuedTransferStructOutput], + "view" + >; + + getPeer: TypedContractMethod< + [chainId_: BigNumberish], + [INttManager.NttManagerPeerStructOutput], + "view" + >; + + getThreshold: TypedContractMethod<[], [bigint], "view">; + + getTransceiverInfo: TypedContractMethod< + [], + [TransceiverRegistry.TransceiverInfoStructOutput[]], + "view" + >; + + getTransceivers: TypedContractMethod<[], [string[]], "view">; + + initialize: TypedContractMethod<[], [void], "payable">; + + isMessageApproved: TypedContractMethod< + [digest: BytesLike], + [boolean], + "view" + >; + + isMessageExecuted: TypedContractMethod< + [digest: BytesLike], + [boolean], + "view" + >; + + isPaused: TypedContractMethod<[], [boolean], "view">; + + messageAttestations: TypedContractMethod< + [digest: BytesLike], + [bigint], + "view" + >; + + migrate: TypedContractMethod<[], [void], "nonpayable">; + + mode: TypedContractMethod<[], [bigint], "view">; + + nextMessageSequence: TypedContractMethod<[], [bigint], "view">; + + owner: TypedContractMethod<[], [string], "view">; + + pause: TypedContractMethod<[], [void], "nonpayable">; + + pauser: TypedContractMethod<[], [string], "view">; + + quoteDeliveryPrice: TypedContractMethod< + [recipientChain: BigNumberish, transceiverInstructions: BytesLike], + [[bigint[], bigint]], + "view" + >; + + rateLimitDuration: TypedContractMethod<[], [bigint], "view">; + + removeTransceiver: TypedContractMethod< + [transceiver: AddressLike], + [void], + "nonpayable" + >; + + setInboundLimit: TypedContractMethod< + [limit: BigNumberish, chainId_: BigNumberish], + [void], + "nonpayable" + >; + + setOutboundLimit: TypedContractMethod< + [limit: BigNumberish], + [void], + "nonpayable" + >; + + setPeer: TypedContractMethod< + [ + peerChainId: BigNumberish, + peerContract: BytesLike, + decimals: BigNumberish, + inboundLimit: BigNumberish + ], + [void], + "nonpayable" + >; + + setThreshold: TypedContractMethod< + [threshold: BigNumberish], + [void], + "nonpayable" + >; + + setTransceiver: TypedContractMethod< + [transceiver: AddressLike], + [void], + "nonpayable" + >; + + token: TypedContractMethod<[], [string], "view">; + + tokenDecimals: TypedContractMethod<[], [bigint], "view">; + + transceiverAttestedToMessage: TypedContractMethod< + [digest: BytesLike, index: BigNumberish], + [boolean], + "view" + >; + + "transfer(uint256,uint16,bytes32)": TypedContractMethod< + [amount: BigNumberish, recipientChain: BigNumberish, recipient: BytesLike], + [bigint], + "payable" + >; + + "transfer(uint256,uint16,bytes32,bytes32,bool,bytes)": TypedContractMethod< + [ + amount: BigNumberish, + recipientChain: BigNumberish, + recipient: BytesLike, + refundAddress: BytesLike, + shouldQueue: boolean, + transceiverInstructions: BytesLike + ], + [bigint], + "payable" + >; + + transferOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + transferPauserCapability: TypedContractMethod< + [newPauser: AddressLike], + [void], + "nonpayable" + >; + + unpause: TypedContractMethod<[], [void], "nonpayable">; + + upgrade: TypedContractMethod< + [newImplementation: AddressLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "NTT_MANAGER_VERSION" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "attestationReceived" + ): TypedContractMethod< + [ + sourceChainId: BigNumberish, + sourceNttManagerAddress: BytesLike, + payload: TransceiverStructs.NttManagerMessageStruct + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "cancelOutboundQueuedTransfer" + ): TypedContractMethod<[messageSequence: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "chainId" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "completeInboundQueuedTransfer" + ): TypedContractMethod<[digest: BytesLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "completeOutboundQueuedTransfer" + ): TypedContractMethod<[messageSequence: BigNumberish], [bigint], "payable">; + getFunction( + nameOrSignature: "executeMsg" + ): TypedContractMethod< + [ + sourceChainId: BigNumberish, + sourceNttManagerAddress: BytesLike, + message: TransceiverStructs.NttManagerMessageStruct + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "getCurrentInboundCapacity" + ): TypedContractMethod<[chainId_: BigNumberish], [bigint], "view">; + getFunction( + nameOrSignature: "getCurrentOutboundCapacity" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "getInboundLimitParams" + ): TypedContractMethod< + [chainId_: BigNumberish], + [IRateLimiter.RateLimitParamsStructOutput], + "view" + >; + getFunction( + nameOrSignature: "getInboundQueuedTransfer" + ): TypedContractMethod< + [digest: BytesLike], + [IRateLimiter.InboundQueuedTransferStructOutput], + "view" + >; + getFunction( + nameOrSignature: "getMigratesImmutables" + ): TypedContractMethod<[], [boolean], "view">; + getFunction( + nameOrSignature: "getMode" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "getOutboundLimitParams" + ): TypedContractMethod< + [], + [IRateLimiter.RateLimitParamsStructOutput], + "view" + >; + getFunction( + nameOrSignature: "getOutboundQueuedTransfer" + ): TypedContractMethod< + [queueSequence: BigNumberish], + [IRateLimiter.OutboundQueuedTransferStructOutput], + "view" + >; + getFunction( + nameOrSignature: "getPeer" + ): TypedContractMethod< + [chainId_: BigNumberish], + [INttManager.NttManagerPeerStructOutput], + "view" + >; + getFunction( + nameOrSignature: "getThreshold" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "getTransceiverInfo" + ): TypedContractMethod< + [], + [TransceiverRegistry.TransceiverInfoStructOutput[]], + "view" + >; + getFunction( + nameOrSignature: "getTransceivers" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "initialize" + ): TypedContractMethod<[], [void], "payable">; + getFunction( + nameOrSignature: "isMessageApproved" + ): TypedContractMethod<[digest: BytesLike], [boolean], "view">; + getFunction( + nameOrSignature: "isMessageExecuted" + ): TypedContractMethod<[digest: BytesLike], [boolean], "view">; + getFunction( + nameOrSignature: "isPaused" + ): TypedContractMethod<[], [boolean], "view">; + getFunction( + nameOrSignature: "messageAttestations" + ): TypedContractMethod<[digest: BytesLike], [bigint], "view">; + getFunction( + nameOrSignature: "migrate" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "mode" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "nextMessageSequence" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "owner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "pause" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "pauser" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "quoteDeliveryPrice" + ): TypedContractMethod< + [recipientChain: BigNumberish, transceiverInstructions: BytesLike], + [[bigint[], bigint]], + "view" + >; + getFunction( + nameOrSignature: "rateLimitDuration" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "removeTransceiver" + ): TypedContractMethod<[transceiver: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "setInboundLimit" + ): TypedContractMethod< + [limit: BigNumberish, chainId_: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setOutboundLimit" + ): TypedContractMethod<[limit: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "setPeer" + ): TypedContractMethod< + [ + peerChainId: BigNumberish, + peerContract: BytesLike, + decimals: BigNumberish, + inboundLimit: BigNumberish + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setThreshold" + ): TypedContractMethod<[threshold: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "setTransceiver" + ): TypedContractMethod<[transceiver: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "token" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "tokenDecimals" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transceiverAttestedToMessage" + ): TypedContractMethod< + [digest: BytesLike, index: BigNumberish], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "transfer(uint256,uint16,bytes32)" + ): TypedContractMethod< + [amount: BigNumberish, recipientChain: BigNumberish, recipient: BytesLike], + [bigint], + "payable" + >; + getFunction( + nameOrSignature: "transfer(uint256,uint16,bytes32,bytes32,bool,bytes)" + ): TypedContractMethod< + [ + amount: BigNumberish, + recipientChain: BigNumberish, + recipient: BytesLike, + refundAddress: BytesLike, + shouldQueue: boolean, + transceiverInstructions: BytesLike + ], + [bigint], + "payable" + >; + getFunction( + nameOrSignature: "transferOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "transferPauserCapability" + ): TypedContractMethod<[newPauser: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "unpause" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "upgrade" + ): TypedContractMethod< + [newImplementation: AddressLike], + [void], + "nonpayable" + >; + + getEvent( + key: "AdminChanged" + ): TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + getEvent( + key: "BeaconUpgraded" + ): TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + getEvent( + key: "InboundTransferLimitUpdated" + ): TypedContractEvent< + InboundTransferLimitUpdatedEvent.InputTuple, + InboundTransferLimitUpdatedEvent.OutputTuple, + InboundTransferLimitUpdatedEvent.OutputObject + >; + getEvent( + key: "InboundTransferQueued" + ): TypedContractEvent< + InboundTransferQueuedEvent.InputTuple, + InboundTransferQueuedEvent.OutputTuple, + InboundTransferQueuedEvent.OutputObject + >; + getEvent( + key: "Initialized" + ): TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + getEvent( + key: "MessageAlreadyExecuted" + ): TypedContractEvent< + MessageAlreadyExecutedEvent.InputTuple, + MessageAlreadyExecutedEvent.OutputTuple, + MessageAlreadyExecutedEvent.OutputObject + >; + getEvent( + key: "MessageAttestedTo" + ): TypedContractEvent< + MessageAttestedToEvent.InputTuple, + MessageAttestedToEvent.OutputTuple, + MessageAttestedToEvent.OutputObject + >; + getEvent( + key: "NotPaused" + ): TypedContractEvent< + NotPausedEvent.InputTuple, + NotPausedEvent.OutputTuple, + NotPausedEvent.OutputObject + >; + getEvent( + key: "OutboundTransferCancelled" + ): TypedContractEvent< + OutboundTransferCancelledEvent.InputTuple, + OutboundTransferCancelledEvent.OutputTuple, + OutboundTransferCancelledEvent.OutputObject + >; + getEvent( + key: "OutboundTransferLimitUpdated" + ): TypedContractEvent< + OutboundTransferLimitUpdatedEvent.InputTuple, + OutboundTransferLimitUpdatedEvent.OutputTuple, + OutboundTransferLimitUpdatedEvent.OutputObject + >; + getEvent( + key: "OutboundTransferQueued" + ): TypedContractEvent< + OutboundTransferQueuedEvent.InputTuple, + OutboundTransferQueuedEvent.OutputTuple, + OutboundTransferQueuedEvent.OutputObject + >; + getEvent( + key: "OutboundTransferRateLimited" + ): TypedContractEvent< + OutboundTransferRateLimitedEvent.InputTuple, + OutboundTransferRateLimitedEvent.OutputTuple, + OutboundTransferRateLimitedEvent.OutputObject + >; + getEvent( + key: "OwnershipTransferred" + ): TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + getEvent( + key: "Paused" + ): TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + getEvent( + key: "PauserTransferred" + ): TypedContractEvent< + PauserTransferredEvent.InputTuple, + PauserTransferredEvent.OutputTuple, + PauserTransferredEvent.OutputObject + >; + getEvent( + key: "PeerUpdated" + ): TypedContractEvent< + PeerUpdatedEvent.InputTuple, + PeerUpdatedEvent.OutputTuple, + PeerUpdatedEvent.OutputObject + >; + getEvent( + key: "ThresholdChanged" + ): TypedContractEvent< + ThresholdChangedEvent.InputTuple, + ThresholdChangedEvent.OutputTuple, + ThresholdChangedEvent.OutputObject + >; + getEvent( + key: "TransceiverAdded" + ): TypedContractEvent< + TransceiverAddedEvent.InputTuple, + TransceiverAddedEvent.OutputTuple, + TransceiverAddedEvent.OutputObject + >; + getEvent( + key: "TransceiverRemoved" + ): TypedContractEvent< + TransceiverRemovedEvent.InputTuple, + TransceiverRemovedEvent.OutputTuple, + TransceiverRemovedEvent.OutputObject + >; + getEvent( + key: "TransferRedeemed" + ): TypedContractEvent< + TransferRedeemedEvent.InputTuple, + TransferRedeemedEvent.OutputTuple, + TransferRedeemedEvent.OutputObject + >; + getEvent( + key: "TransferSent(bytes32,bytes32,uint256,uint256,uint16,uint64)" + ): TypedContractEvent< + TransferSent_bytes32_bytes32_uint256_uint256_uint16_uint64_Event.InputTuple, + TransferSent_bytes32_bytes32_uint256_uint256_uint16_uint64_Event.OutputTuple, + TransferSent_bytes32_bytes32_uint256_uint256_uint16_uint64_Event.OutputObject + >; + getEvent( + key: "TransferSent(bytes32)" + ): TypedContractEvent< + TransferSent_bytes32_Event.InputTuple, + TransferSent_bytes32_Event.OutputTuple, + TransferSent_bytes32_Event.OutputObject + >; + getEvent( + key: "Upgraded" + ): TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + + filters: { + "AdminChanged(address,address)": TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + AdminChanged: TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + + "BeaconUpgraded(address)": TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + BeaconUpgraded: TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + + "InboundTransferLimitUpdated(uint16,uint256,uint256)": TypedContractEvent< + InboundTransferLimitUpdatedEvent.InputTuple, + InboundTransferLimitUpdatedEvent.OutputTuple, + InboundTransferLimitUpdatedEvent.OutputObject + >; + InboundTransferLimitUpdated: TypedContractEvent< + InboundTransferLimitUpdatedEvent.InputTuple, + InboundTransferLimitUpdatedEvent.OutputTuple, + InboundTransferLimitUpdatedEvent.OutputObject + >; + + "InboundTransferQueued(bytes32)": TypedContractEvent< + InboundTransferQueuedEvent.InputTuple, + InboundTransferQueuedEvent.OutputTuple, + InboundTransferQueuedEvent.OutputObject + >; + InboundTransferQueued: TypedContractEvent< + InboundTransferQueuedEvent.InputTuple, + InboundTransferQueuedEvent.OutputTuple, + InboundTransferQueuedEvent.OutputObject + >; + + "Initialized(uint64)": TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + Initialized: TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + + "MessageAlreadyExecuted(bytes32,bytes32)": TypedContractEvent< + MessageAlreadyExecutedEvent.InputTuple, + MessageAlreadyExecutedEvent.OutputTuple, + MessageAlreadyExecutedEvent.OutputObject + >; + MessageAlreadyExecuted: TypedContractEvent< + MessageAlreadyExecutedEvent.InputTuple, + MessageAlreadyExecutedEvent.OutputTuple, + MessageAlreadyExecutedEvent.OutputObject + >; + + "MessageAttestedTo(bytes32,address,uint8)": TypedContractEvent< + MessageAttestedToEvent.InputTuple, + MessageAttestedToEvent.OutputTuple, + MessageAttestedToEvent.OutputObject + >; + MessageAttestedTo: TypedContractEvent< + MessageAttestedToEvent.InputTuple, + MessageAttestedToEvent.OutputTuple, + MessageAttestedToEvent.OutputObject + >; + + "NotPaused(bool)": TypedContractEvent< + NotPausedEvent.InputTuple, + NotPausedEvent.OutputTuple, + NotPausedEvent.OutputObject + >; + NotPaused: TypedContractEvent< + NotPausedEvent.InputTuple, + NotPausedEvent.OutputTuple, + NotPausedEvent.OutputObject + >; + + "OutboundTransferCancelled(uint256,address,uint256)": TypedContractEvent< + OutboundTransferCancelledEvent.InputTuple, + OutboundTransferCancelledEvent.OutputTuple, + OutboundTransferCancelledEvent.OutputObject + >; + OutboundTransferCancelled: TypedContractEvent< + OutboundTransferCancelledEvent.InputTuple, + OutboundTransferCancelledEvent.OutputTuple, + OutboundTransferCancelledEvent.OutputObject + >; + + "OutboundTransferLimitUpdated(uint256,uint256)": TypedContractEvent< + OutboundTransferLimitUpdatedEvent.InputTuple, + OutboundTransferLimitUpdatedEvent.OutputTuple, + OutboundTransferLimitUpdatedEvent.OutputObject + >; + OutboundTransferLimitUpdated: TypedContractEvent< + OutboundTransferLimitUpdatedEvent.InputTuple, + OutboundTransferLimitUpdatedEvent.OutputTuple, + OutboundTransferLimitUpdatedEvent.OutputObject + >; + + "OutboundTransferQueued(uint64)": TypedContractEvent< + OutboundTransferQueuedEvent.InputTuple, + OutboundTransferQueuedEvent.OutputTuple, + OutboundTransferQueuedEvent.OutputObject + >; + OutboundTransferQueued: TypedContractEvent< + OutboundTransferQueuedEvent.InputTuple, + OutboundTransferQueuedEvent.OutputTuple, + OutboundTransferQueuedEvent.OutputObject + >; + + "OutboundTransferRateLimited(address,uint64,uint256,uint256)": TypedContractEvent< + OutboundTransferRateLimitedEvent.InputTuple, + OutboundTransferRateLimitedEvent.OutputTuple, + OutboundTransferRateLimitedEvent.OutputObject + >; + OutboundTransferRateLimited: TypedContractEvent< + OutboundTransferRateLimitedEvent.InputTuple, + OutboundTransferRateLimitedEvent.OutputTuple, + OutboundTransferRateLimitedEvent.OutputObject + >; + + "OwnershipTransferred(address,address)": TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + OwnershipTransferred: TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + + "Paused(bool)": TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + Paused: TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + + "PauserTransferred(address,address)": TypedContractEvent< + PauserTransferredEvent.InputTuple, + PauserTransferredEvent.OutputTuple, + PauserTransferredEvent.OutputObject + >; + PauserTransferred: TypedContractEvent< + PauserTransferredEvent.InputTuple, + PauserTransferredEvent.OutputTuple, + PauserTransferredEvent.OutputObject + >; + + "PeerUpdated(uint16,bytes32,uint8,bytes32,uint8)": TypedContractEvent< + PeerUpdatedEvent.InputTuple, + PeerUpdatedEvent.OutputTuple, + PeerUpdatedEvent.OutputObject + >; + PeerUpdated: TypedContractEvent< + PeerUpdatedEvent.InputTuple, + PeerUpdatedEvent.OutputTuple, + PeerUpdatedEvent.OutputObject + >; + + "ThresholdChanged(uint8,uint8)": TypedContractEvent< + ThresholdChangedEvent.InputTuple, + ThresholdChangedEvent.OutputTuple, + ThresholdChangedEvent.OutputObject + >; + ThresholdChanged: TypedContractEvent< + ThresholdChangedEvent.InputTuple, + ThresholdChangedEvent.OutputTuple, + ThresholdChangedEvent.OutputObject + >; + + "TransceiverAdded(address,uint256,uint8)": TypedContractEvent< + TransceiverAddedEvent.InputTuple, + TransceiverAddedEvent.OutputTuple, + TransceiverAddedEvent.OutputObject + >; + TransceiverAdded: TypedContractEvent< + TransceiverAddedEvent.InputTuple, + TransceiverAddedEvent.OutputTuple, + TransceiverAddedEvent.OutputObject + >; + + "TransceiverRemoved(address,uint8)": TypedContractEvent< + TransceiverRemovedEvent.InputTuple, + TransceiverRemovedEvent.OutputTuple, + TransceiverRemovedEvent.OutputObject + >; + TransceiverRemoved: TypedContractEvent< + TransceiverRemovedEvent.InputTuple, + TransceiverRemovedEvent.OutputTuple, + TransceiverRemovedEvent.OutputObject + >; + + "TransferRedeemed(bytes32)": TypedContractEvent< + TransferRedeemedEvent.InputTuple, + TransferRedeemedEvent.OutputTuple, + TransferRedeemedEvent.OutputObject + >; + TransferRedeemed: TypedContractEvent< + TransferRedeemedEvent.InputTuple, + TransferRedeemedEvent.OutputTuple, + TransferRedeemedEvent.OutputObject + >; + + "TransferSent(bytes32,bytes32,uint256,uint256,uint16,uint64)": TypedContractEvent< + TransferSent_bytes32_bytes32_uint256_uint256_uint16_uint64_Event.InputTuple, + TransferSent_bytes32_bytes32_uint256_uint256_uint16_uint64_Event.OutputTuple, + TransferSent_bytes32_bytes32_uint256_uint256_uint16_uint64_Event.OutputObject + >; + "TransferSent(bytes32)": TypedContractEvent< + TransferSent_bytes32_Event.InputTuple, + TransferSent_bytes32_Event.OutputTuple, + TransferSent_bytes32_Event.OutputObject + >; + + "Upgraded(address)": TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + Upgraded: TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + }; +} diff --git a/evm/ts/src/ethers-contracts/2_0_0/WormholeTransceiver.ts b/evm/ts/src/ethers-contracts/2_0_0/WormholeTransceiver.ts new file mode 100644 index 000000000..c9ff8fc40 --- /dev/null +++ b/evm/ts/src/ethers-contracts/2_0_0/WormholeTransceiver.ts @@ -0,0 +1,994 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common.js"; + +export declare namespace IWormholeTransceiver { + export type WormholeTransceiverInstructionStruct = { + shouldSkipRelayerSend: boolean; + }; + + export type WormholeTransceiverInstructionStructOutput = [ + shouldSkipRelayerSend: boolean + ] & { shouldSkipRelayerSend: boolean }; +} + +export declare namespace TransceiverStructs { + export type TransceiverInstructionStruct = { + index: BigNumberish; + payload: BytesLike; + }; + + export type TransceiverInstructionStructOutput = [ + index: bigint, + payload: string + ] & { index: bigint; payload: string }; + + export type TransceiverMessageStruct = { + sourceNttManagerAddress: BytesLike; + recipientNttManagerAddress: BytesLike; + nttManagerPayload: BytesLike; + transceiverPayload: BytesLike; + }; + + export type TransceiverMessageStructOutput = [ + sourceNttManagerAddress: string, + recipientNttManagerAddress: string, + nttManagerPayload: string, + transceiverPayload: string + ] & { + sourceNttManagerAddress: string; + recipientNttManagerAddress: string; + nttManagerPayload: string; + transceiverPayload: string; + }; +} + +export interface WormholeTransceiverInterface extends Interface { + getFunction( + nameOrSignature: + | "WORMHOLE_TRANSCEIVER_VERSION" + | "additionalBlocks" + | "consistencyLevel" + | "customConsistencyLevel" + | "customConsistencyLevelAddress" + | "encodeWormholeTransceiverInstruction" + | "getMigratesImmutables" + | "getNttManagerOwner" + | "getNttManagerToken" + | "getTransceiverType" + | "getWormholePeer" + | "initialize" + | "isPaused" + | "isVAAConsumed" + | "migrate" + | "nttManager" + | "nttManagerToken" + | "owner" + | "parseWormholeTransceiverInstruction" + | "pauser" + | "quoteDeliveryPrice" + | "receiveMessage" + | "sendMessage" + | "setWormholePeer" + | "transferOwnership" + | "transferPauserCapability" + | "transferTransceiverOwnership" + | "upgrade" + | "wormhole" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "AdminChanged" + | "BeaconUpgraded" + | "Initialized" + | "NotPaused" + | "OwnershipTransferred" + | "Paused" + | "PauserTransferred" + | "ReceivedMessage" + | "RelayingInfo" + | "SendTransceiverMessage" + | "SetWormholePeer" + | "Upgraded" + ): EventFragment; + + encodeFunctionData( + functionFragment: "WORMHOLE_TRANSCEIVER_VERSION", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "additionalBlocks", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "consistencyLevel", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "customConsistencyLevel", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "customConsistencyLevelAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "encodeWormholeTransceiverInstruction", + values: [IWormholeTransceiver.WormholeTransceiverInstructionStruct] + ): string; + encodeFunctionData( + functionFragment: "getMigratesImmutables", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getNttManagerOwner", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getNttManagerToken", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getTransceiverType", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getWormholePeer", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "isPaused", values?: undefined): string; + encodeFunctionData( + functionFragment: "isVAAConsumed", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "migrate", values?: undefined): string; + encodeFunctionData( + functionFragment: "nttManager", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "nttManagerToken", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "parseWormholeTransceiverInstruction", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "pauser", values?: undefined): string; + encodeFunctionData( + functionFragment: "quoteDeliveryPrice", + values: [BigNumberish, TransceiverStructs.TransceiverInstructionStruct] + ): string; + encodeFunctionData( + functionFragment: "receiveMessage", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "sendMessage", + values: [ + BigNumberish, + TransceiverStructs.TransceiverInstructionStruct, + BytesLike, + BytesLike, + BytesLike + ] + ): string; + encodeFunctionData( + functionFragment: "setWormholePeer", + values: [BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "transferPauserCapability", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "transferTransceiverOwnership", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "upgrade", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "wormhole", values?: undefined): string; + + decodeFunctionResult( + functionFragment: "WORMHOLE_TRANSCEIVER_VERSION", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "additionalBlocks", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "consistencyLevel", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "customConsistencyLevel", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "customConsistencyLevelAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "encodeWormholeTransceiverInstruction", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getMigratesImmutables", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getNttManagerOwner", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getNttManagerToken", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getTransceiverType", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getWormholePeer", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "isPaused", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isVAAConsumed", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "migrate", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "nttManager", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "nttManagerToken", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "parseWormholeTransceiverInstruction", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "pauser", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "quoteDeliveryPrice", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "receiveMessage", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sendMessage", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setWormholePeer", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferPauserCapability", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferTransceiverOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "upgrade", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "wormhole", data: BytesLike): Result; +} + +export namespace AdminChangedEvent { + export type InputTuple = [previousAdmin: AddressLike, newAdmin: AddressLike]; + export type OutputTuple = [previousAdmin: string, newAdmin: string]; + export interface OutputObject { + previousAdmin: string; + newAdmin: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace BeaconUpgradedEvent { + export type InputTuple = [beacon: AddressLike]; + export type OutputTuple = [beacon: string]; + export interface OutputObject { + beacon: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace InitializedEvent { + export type InputTuple = [version: BigNumberish]; + export type OutputTuple = [version: bigint]; + export interface OutputObject { + version: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace NotPausedEvent { + export type InputTuple = [notPaused: boolean]; + export type OutputTuple = [notPaused: boolean]; + export interface OutputObject { + notPaused: boolean; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OwnershipTransferredEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace PausedEvent { + export type InputTuple = [paused: boolean]; + export type OutputTuple = [paused: boolean]; + export interface OutputObject { + paused: boolean; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace PauserTransferredEvent { + export type InputTuple = [oldPauser: AddressLike, newPauser: AddressLike]; + export type OutputTuple = [oldPauser: string, newPauser: string]; + export interface OutputObject { + oldPauser: string; + newPauser: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ReceivedMessageEvent { + export type InputTuple = [ + digest: BytesLike, + emitterChainId: BigNumberish, + emitterAddress: BytesLike, + sequence: BigNumberish + ]; + export type OutputTuple = [ + digest: string, + emitterChainId: bigint, + emitterAddress: string, + sequence: bigint + ]; + export interface OutputObject { + digest: string; + emitterChainId: bigint; + emitterAddress: string; + sequence: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RelayingInfoEvent { + export type InputTuple = [ + relayingType: BigNumberish, + refundAddress: BytesLike, + deliveryPayment: BigNumberish + ]; + export type OutputTuple = [ + relayingType: bigint, + refundAddress: string, + deliveryPayment: bigint + ]; + export interface OutputObject { + relayingType: bigint; + refundAddress: string; + deliveryPayment: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace SendTransceiverMessageEvent { + export type InputTuple = [ + recipientChain: BigNumberish, + message: TransceiverStructs.TransceiverMessageStruct + ]; + export type OutputTuple = [ + recipientChain: bigint, + message: TransceiverStructs.TransceiverMessageStructOutput + ]; + export interface OutputObject { + recipientChain: bigint; + message: TransceiverStructs.TransceiverMessageStructOutput; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace SetWormholePeerEvent { + export type InputTuple = [chainId: BigNumberish, peerContract: BytesLike]; + export type OutputTuple = [chainId: bigint, peerContract: string]; + export interface OutputObject { + chainId: bigint; + peerContract: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpgradedEvent { + export type InputTuple = [implementation: AddressLike]; + export type OutputTuple = [implementation: string]; + export interface OutputObject { + implementation: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface WormholeTransceiver extends BaseContract { + connect(runner?: ContractRunner | null): WormholeTransceiver; + waitForDeployment(): Promise; + + interface: WormholeTransceiverInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + WORMHOLE_TRANSCEIVER_VERSION: TypedContractMethod<[], [string], "view">; + + additionalBlocks: TypedContractMethod<[], [bigint], "view">; + + consistencyLevel: TypedContractMethod<[], [bigint], "view">; + + customConsistencyLevel: TypedContractMethod<[], [bigint], "view">; + + customConsistencyLevelAddress: TypedContractMethod<[], [string], "view">; + + encodeWormholeTransceiverInstruction: TypedContractMethod< + [instruction: IWormholeTransceiver.WormholeTransceiverInstructionStruct], + [string], + "view" + >; + + getMigratesImmutables: TypedContractMethod<[], [boolean], "view">; + + getNttManagerOwner: TypedContractMethod<[], [string], "view">; + + getNttManagerToken: TypedContractMethod<[], [string], "view">; + + getTransceiverType: TypedContractMethod<[], [string], "view">; + + getWormholePeer: TypedContractMethod< + [chainId: BigNumberish], + [string], + "view" + >; + + initialize: TypedContractMethod<[], [void], "payable">; + + isPaused: TypedContractMethod<[], [boolean], "view">; + + isVAAConsumed: TypedContractMethod<[hash: BytesLike], [boolean], "view">; + + migrate: TypedContractMethod<[], [void], "nonpayable">; + + nttManager: TypedContractMethod<[], [string], "view">; + + nttManagerToken: TypedContractMethod<[], [string], "view">; + + owner: TypedContractMethod<[], [string], "view">; + + parseWormholeTransceiverInstruction: TypedContractMethod< + [encoded: BytesLike], + [IWormholeTransceiver.WormholeTransceiverInstructionStructOutput], + "view" + >; + + pauser: TypedContractMethod<[], [string], "view">; + + quoteDeliveryPrice: TypedContractMethod< + [ + targetChain: BigNumberish, + instruction: TransceiverStructs.TransceiverInstructionStruct + ], + [bigint], + "view" + >; + + receiveMessage: TypedContractMethod< + [encodedMessage: BytesLike], + [void], + "nonpayable" + >; + + sendMessage: TypedContractMethod< + [ + recipientChain: BigNumberish, + instruction: TransceiverStructs.TransceiverInstructionStruct, + nttManagerMessage: BytesLike, + recipientNttManagerAddress: BytesLike, + refundAddress: BytesLike + ], + [void], + "payable" + >; + + setWormholePeer: TypedContractMethod< + [peerChainId: BigNumberish, peerContract: BytesLike], + [void], + "payable" + >; + + transferOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + transferPauserCapability: TypedContractMethod< + [newPauser: AddressLike], + [void], + "nonpayable" + >; + + transferTransceiverOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + upgrade: TypedContractMethod< + [newImplementation: AddressLike], + [void], + "nonpayable" + >; + + wormhole: TypedContractMethod<[], [string], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "WORMHOLE_TRANSCEIVER_VERSION" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "additionalBlocks" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "consistencyLevel" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "customConsistencyLevel" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "customConsistencyLevelAddress" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "encodeWormholeTransceiverInstruction" + ): TypedContractMethod< + [instruction: IWormholeTransceiver.WormholeTransceiverInstructionStruct], + [string], + "view" + >; + getFunction( + nameOrSignature: "getMigratesImmutables" + ): TypedContractMethod<[], [boolean], "view">; + getFunction( + nameOrSignature: "getNttManagerOwner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getNttManagerToken" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getTransceiverType" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getWormholePeer" + ): TypedContractMethod<[chainId: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "initialize" + ): TypedContractMethod<[], [void], "payable">; + getFunction( + nameOrSignature: "isPaused" + ): TypedContractMethod<[], [boolean], "view">; + getFunction( + nameOrSignature: "isVAAConsumed" + ): TypedContractMethod<[hash: BytesLike], [boolean], "view">; + getFunction( + nameOrSignature: "migrate" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "nttManager" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "nttManagerToken" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "owner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "parseWormholeTransceiverInstruction" + ): TypedContractMethod< + [encoded: BytesLike], + [IWormholeTransceiver.WormholeTransceiverInstructionStructOutput], + "view" + >; + getFunction( + nameOrSignature: "pauser" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "quoteDeliveryPrice" + ): TypedContractMethod< + [ + targetChain: BigNumberish, + instruction: TransceiverStructs.TransceiverInstructionStruct + ], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "receiveMessage" + ): TypedContractMethod<[encodedMessage: BytesLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "sendMessage" + ): TypedContractMethod< + [ + recipientChain: BigNumberish, + instruction: TransceiverStructs.TransceiverInstructionStruct, + nttManagerMessage: BytesLike, + recipientNttManagerAddress: BytesLike, + refundAddress: BytesLike + ], + [void], + "payable" + >; + getFunction( + nameOrSignature: "setWormholePeer" + ): TypedContractMethod< + [peerChainId: BigNumberish, peerContract: BytesLike], + [void], + "payable" + >; + getFunction( + nameOrSignature: "transferOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "transferPauserCapability" + ): TypedContractMethod<[newPauser: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "transferTransceiverOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "upgrade" + ): TypedContractMethod< + [newImplementation: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "wormhole" + ): TypedContractMethod<[], [string], "view">; + + getEvent( + key: "AdminChanged" + ): TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + getEvent( + key: "BeaconUpgraded" + ): TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + getEvent( + key: "Initialized" + ): TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + getEvent( + key: "NotPaused" + ): TypedContractEvent< + NotPausedEvent.InputTuple, + NotPausedEvent.OutputTuple, + NotPausedEvent.OutputObject + >; + getEvent( + key: "OwnershipTransferred" + ): TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + getEvent( + key: "Paused" + ): TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + getEvent( + key: "PauserTransferred" + ): TypedContractEvent< + PauserTransferredEvent.InputTuple, + PauserTransferredEvent.OutputTuple, + PauserTransferredEvent.OutputObject + >; + getEvent( + key: "ReceivedMessage" + ): TypedContractEvent< + ReceivedMessageEvent.InputTuple, + ReceivedMessageEvent.OutputTuple, + ReceivedMessageEvent.OutputObject + >; + getEvent( + key: "RelayingInfo" + ): TypedContractEvent< + RelayingInfoEvent.InputTuple, + RelayingInfoEvent.OutputTuple, + RelayingInfoEvent.OutputObject + >; + getEvent( + key: "SendTransceiverMessage" + ): TypedContractEvent< + SendTransceiverMessageEvent.InputTuple, + SendTransceiverMessageEvent.OutputTuple, + SendTransceiverMessageEvent.OutputObject + >; + getEvent( + key: "SetWormholePeer" + ): TypedContractEvent< + SetWormholePeerEvent.InputTuple, + SetWormholePeerEvent.OutputTuple, + SetWormholePeerEvent.OutputObject + >; + getEvent( + key: "Upgraded" + ): TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + + filters: { + "AdminChanged(address,address)": TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + AdminChanged: TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + + "BeaconUpgraded(address)": TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + BeaconUpgraded: TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + + "Initialized(uint64)": TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + Initialized: TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + + "NotPaused(bool)": TypedContractEvent< + NotPausedEvent.InputTuple, + NotPausedEvent.OutputTuple, + NotPausedEvent.OutputObject + >; + NotPaused: TypedContractEvent< + NotPausedEvent.InputTuple, + NotPausedEvent.OutputTuple, + NotPausedEvent.OutputObject + >; + + "OwnershipTransferred(address,address)": TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + OwnershipTransferred: TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + + "Paused(bool)": TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + Paused: TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + + "PauserTransferred(address,address)": TypedContractEvent< + PauserTransferredEvent.InputTuple, + PauserTransferredEvent.OutputTuple, + PauserTransferredEvent.OutputObject + >; + PauserTransferred: TypedContractEvent< + PauserTransferredEvent.InputTuple, + PauserTransferredEvent.OutputTuple, + PauserTransferredEvent.OutputObject + >; + + "ReceivedMessage(bytes32,uint16,bytes32,uint64)": TypedContractEvent< + ReceivedMessageEvent.InputTuple, + ReceivedMessageEvent.OutputTuple, + ReceivedMessageEvent.OutputObject + >; + ReceivedMessage: TypedContractEvent< + ReceivedMessageEvent.InputTuple, + ReceivedMessageEvent.OutputTuple, + ReceivedMessageEvent.OutputObject + >; + + "RelayingInfo(uint8,bytes32,uint256)": TypedContractEvent< + RelayingInfoEvent.InputTuple, + RelayingInfoEvent.OutputTuple, + RelayingInfoEvent.OutputObject + >; + RelayingInfo: TypedContractEvent< + RelayingInfoEvent.InputTuple, + RelayingInfoEvent.OutputTuple, + RelayingInfoEvent.OutputObject + >; + + "SendTransceiverMessage(uint16,tuple)": TypedContractEvent< + SendTransceiverMessageEvent.InputTuple, + SendTransceiverMessageEvent.OutputTuple, + SendTransceiverMessageEvent.OutputObject + >; + SendTransceiverMessage: TypedContractEvent< + SendTransceiverMessageEvent.InputTuple, + SendTransceiverMessageEvent.OutputTuple, + SendTransceiverMessageEvent.OutputObject + >; + + "SetWormholePeer(uint16,bytes32)": TypedContractEvent< + SetWormholePeerEvent.InputTuple, + SetWormholePeerEvent.OutputTuple, + SetWormholePeerEvent.OutputObject + >; + SetWormholePeer: TypedContractEvent< + SetWormholePeerEvent.InputTuple, + SetWormholePeerEvent.OutputTuple, + SetWormholePeerEvent.OutputObject + >; + + "Upgraded(address)": TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + Upgraded: TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + }; +} diff --git a/evm/ts/src/ethers-contracts/2_0_0/common.ts b/evm/ts/src/ethers-contracts/2_0_0/common.ts new file mode 100644 index 000000000..56b5f21e9 --- /dev/null +++ b/evm/ts/src/ethers-contracts/2_0_0/common.ts @@ -0,0 +1,131 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + FunctionFragment, + Typed, + EventFragment, + ContractTransaction, + ContractTransactionResponse, + DeferredTopicFilter, + EventLog, + TransactionRequest, + LogDescription, +} from "ethers"; + +export interface TypedDeferredTopicFilter<_TCEvent extends TypedContractEvent> + extends DeferredTopicFilter {} + +export interface TypedContractEvent< + InputTuple extends Array = any, + OutputTuple extends Array = any, + OutputObject = any +> { + (...args: Partial): TypedDeferredTopicFilter< + TypedContractEvent + >; + name: string; + fragment: EventFragment; + getFragment(...args: Partial): EventFragment; +} + +type __TypechainAOutputTuple = T extends TypedContractEvent< + infer _U, + infer W +> + ? W + : never; +type __TypechainOutputObject = T extends TypedContractEvent< + infer _U, + infer _W, + infer V +> + ? V + : never; + +export interface TypedEventLog + extends Omit { + args: __TypechainAOutputTuple & __TypechainOutputObject; +} + +export interface TypedLogDescription + extends Omit { + args: __TypechainAOutputTuple & __TypechainOutputObject; +} + +export type TypedListener = ( + ...listenerArg: [ + ...__TypechainAOutputTuple, + TypedEventLog, + ...undefined[] + ] +) => void; + +export type MinEthersFactory = { + deploy(...a: ARGS[]): Promise; +}; + +export type GetContractTypeFromFactory = F extends MinEthersFactory< + infer C, + any +> + ? C + : never; +export type GetARGsTypeFromFactory = F extends MinEthersFactory + ? Parameters + : never; + +export type StateMutability = "nonpayable" | "payable" | "view"; + +export type BaseOverrides = Omit; +export type NonPayableOverrides = Omit< + BaseOverrides, + "value" | "blockTag" | "enableCcipRead" +>; +export type PayableOverrides = Omit< + BaseOverrides, + "blockTag" | "enableCcipRead" +>; +export type ViewOverrides = Omit; +export type Overrides = S extends "nonpayable" + ? NonPayableOverrides + : S extends "payable" + ? PayableOverrides + : ViewOverrides; + +export type PostfixOverrides, S extends StateMutability> = + | A + | [...A, Overrides]; +export type ContractMethodArgs< + A extends Array, + S extends StateMutability +> = PostfixOverrides<{ [I in keyof A]-?: A[I] | Typed }, S>; + +export type DefaultReturnType = R extends Array ? R[0] : R; + +// export interface ContractMethod = Array, R = any, D extends R | ContractTransactionResponse = R | ContractTransactionResponse> { +export interface TypedContractMethod< + A extends Array = Array, + R = any, + S extends StateMutability = "payable" +> { + (...args: ContractMethodArgs): S extends "view" + ? Promise> + : Promise; + + name: string; + + fragment: FunctionFragment; + + getFragment(...args: ContractMethodArgs): FunctionFragment; + + populateTransaction( + ...args: ContractMethodArgs + ): Promise; + staticCall( + ...args: ContractMethodArgs + ): Promise>; + send(...args: ContractMethodArgs): Promise; + estimateGas(...args: ContractMethodArgs): Promise; + staticCallResult(...args: ContractMethodArgs): Promise; +} diff --git a/evm/ts/src/ethers-contracts/2_0_0/factories/NttManager__factory.ts b/evm/ts/src/ethers-contracts/2_0_0/factories/NttManager__factory.ts new file mode 100644 index 000000000..d1cbec448 --- /dev/null +++ b/evm/ts/src/ethers-contracts/2_0_0/factories/NttManager__factory.ts @@ -0,0 +1,2038 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + BigNumberish, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../common.js"; +import type { NttManager, NttManagerInterface } from "../NttManager.js"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "_token", + type: "address", + internalType: "address", + }, + { + name: "_mode", + type: "uint8", + internalType: "enum IManagerBase.Mode", + }, + { + name: "_chainId", + type: "uint16", + internalType: "uint16", + }, + { + name: "_rateLimitDuration", + type: "uint64", + internalType: "uint64", + }, + { + name: "_skipRateLimiting", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "NTT_MANAGER_VERSION", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "attestationReceived", + inputs: [ + { + name: "sourceChainId", + type: "uint16", + internalType: "uint16", + }, + { + name: "sourceNttManagerAddress", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "payload", + type: "tuple", + internalType: "struct TransceiverStructs.NttManagerMessage", + components: [ + { + name: "id", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "sender", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "payload", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "cancelOutboundQueuedTransfer", + inputs: [ + { + name: "messageSequence", + type: "uint64", + internalType: "uint64", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "chainId", + inputs: [], + outputs: [ + { + name: "", + type: "uint16", + internalType: "uint16", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "completeInboundQueuedTransfer", + inputs: [ + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "completeOutboundQueuedTransfer", + inputs: [ + { + name: "messageSequence", + type: "uint64", + internalType: "uint64", + }, + ], + outputs: [ + { + name: "", + type: "uint64", + internalType: "uint64", + }, + ], + stateMutability: "payable", + }, + { + type: "function", + name: "executeMsg", + inputs: [ + { + name: "sourceChainId", + type: "uint16", + internalType: "uint16", + }, + { + name: "sourceNttManagerAddress", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "message", + type: "tuple", + internalType: "struct TransceiverStructs.NttManagerMessage", + components: [ + { + name: "id", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "sender", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "payload", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "getCurrentInboundCapacity", + inputs: [ + { + name: "chainId_", + type: "uint16", + internalType: "uint16", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getCurrentOutboundCapacity", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getInboundLimitParams", + inputs: [ + { + name: "chainId_", + type: "uint16", + internalType: "uint16", + }, + ], + outputs: [ + { + name: "", + type: "tuple", + internalType: "struct IRateLimiter.RateLimitParams", + components: [ + { + name: "limit", + type: "uint72", + internalType: "TrimmedAmount", + }, + { + name: "currentCapacity", + type: "uint72", + internalType: "TrimmedAmount", + }, + { + name: "lastTxTimestamp", + type: "uint64", + internalType: "uint64", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getInboundQueuedTransfer", + inputs: [ + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "tuple", + internalType: "struct IRateLimiter.InboundQueuedTransfer", + components: [ + { + name: "amount", + type: "uint72", + internalType: "TrimmedAmount", + }, + { + name: "txTimestamp", + type: "uint64", + internalType: "uint64", + }, + { + name: "recipient", + type: "address", + internalType: "address", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getMigratesImmutables", + inputs: [], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getMode", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "uint8", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getOutboundLimitParams", + inputs: [], + outputs: [ + { + name: "", + type: "tuple", + internalType: "struct IRateLimiter.RateLimitParams", + components: [ + { + name: "limit", + type: "uint72", + internalType: "TrimmedAmount", + }, + { + name: "currentCapacity", + type: "uint72", + internalType: "TrimmedAmount", + }, + { + name: "lastTxTimestamp", + type: "uint64", + internalType: "uint64", + }, + ], + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "getOutboundQueuedTransfer", + inputs: [ + { + name: "queueSequence", + type: "uint64", + internalType: "uint64", + }, + ], + outputs: [ + { + name: "", + type: "tuple", + internalType: "struct IRateLimiter.OutboundQueuedTransfer", + components: [ + { + name: "recipient", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "refundAddress", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "amount", + type: "uint72", + internalType: "TrimmedAmount", + }, + { + name: "txTimestamp", + type: "uint64", + internalType: "uint64", + }, + { + name: "recipientChain", + type: "uint16", + internalType: "uint16", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "transceiverInstructions", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getPeer", + inputs: [ + { + name: "chainId_", + type: "uint16", + internalType: "uint16", + }, + ], + outputs: [ + { + name: "", + type: "tuple", + internalType: "struct INttManager.NttManagerPeer", + components: [ + { + name: "peerAddress", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "tokenDecimals", + type: "uint8", + internalType: "uint8", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getThreshold", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "uint8", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getTransceiverInfo", + inputs: [], + outputs: [ + { + name: "", + type: "tuple[]", + internalType: "struct TransceiverRegistry.TransceiverInfo[]", + components: [ + { + name: "registered", + type: "bool", + internalType: "bool", + }, + { + name: "enabled", + type: "bool", + internalType: "bool", + }, + { + name: "index", + type: "uint8", + internalType: "uint8", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getTransceivers", + inputs: [], + outputs: [ + { + name: "result", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "initialize", + inputs: [], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "isMessageApproved", + inputs: [ + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "isMessageExecuted", + inputs: [ + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "isPaused", + inputs: [], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "messageAttestations", + inputs: [ + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "count", + type: "uint8", + internalType: "uint8", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "migrate", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "mode", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "enum IManagerBase.Mode", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "nextMessageSequence", + inputs: [], + outputs: [ + { + name: "", + type: "uint64", + internalType: "uint64", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "owner", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "pause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "pauser", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "quoteDeliveryPrice", + inputs: [ + { + name: "recipientChain", + type: "uint16", + internalType: "uint16", + }, + { + name: "transceiverInstructions", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "uint256[]", + internalType: "uint256[]", + }, + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "rateLimitDuration", + inputs: [], + outputs: [ + { + name: "", + type: "uint64", + internalType: "uint64", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "removeTransceiver", + inputs: [ + { + name: "transceiver", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setInboundLimit", + inputs: [ + { + name: "limit", + type: "uint256", + internalType: "uint256", + }, + { + name: "chainId_", + type: "uint16", + internalType: "uint16", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setOutboundLimit", + inputs: [ + { + name: "limit", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setPeer", + inputs: [ + { + name: "peerChainId", + type: "uint16", + internalType: "uint16", + }, + { + name: "peerContract", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "decimals", + type: "uint8", + internalType: "uint8", + }, + { + name: "inboundLimit", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setThreshold", + inputs: [ + { + name: "threshold", + type: "uint8", + internalType: "uint8", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setTransceiver", + inputs: [ + { + name: "transceiver", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "token", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "tokenDecimals", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "uint8", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transceiverAttestedToMessage", + inputs: [ + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "index", + type: "uint8", + internalType: "uint8", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "recipientChain", + type: "uint16", + internalType: "uint16", + }, + { + name: "recipient", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "uint64", + internalType: "uint64", + }, + ], + stateMutability: "payable", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "recipientChain", + type: "uint16", + internalType: "uint16", + }, + { + name: "recipient", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "refundAddress", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "shouldQueue", + type: "bool", + internalType: "bool", + }, + { + name: "transceiverInstructions", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "uint64", + internalType: "uint64", + }, + ], + stateMutability: "payable", + }, + { + type: "function", + name: "transferOwnership", + inputs: [ + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferPauserCapability", + inputs: [ + { + name: "newPauser", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "unpause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "upgrade", + inputs: [ + { + name: "newImplementation", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "AdminChanged", + inputs: [ + { + name: "previousAdmin", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "newAdmin", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "BeaconUpgraded", + inputs: [ + { + name: "beacon", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "InboundTransferLimitUpdated", + inputs: [ + { + name: "chainId", + type: "uint16", + indexed: true, + internalType: "uint16", + }, + { + name: "oldLimit", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "newLimit", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "InboundTransferQueued", + inputs: [ + { + name: "digest", + type: "bytes32", + indexed: false, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Initialized", + inputs: [ + { + name: "version", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "MessageAlreadyExecuted", + inputs: [ + { + name: "sourceNttManager", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "msgHash", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "MessageAttestedTo", + inputs: [ + { + name: "digest", + type: "bytes32", + indexed: false, + internalType: "bytes32", + }, + { + name: "transceiver", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "index", + type: "uint8", + indexed: false, + internalType: "uint8", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "NotPaused", + inputs: [ + { + name: "notPaused", + type: "bool", + indexed: false, + internalType: "bool", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OutboundTransferCancelled", + inputs: [ + { + name: "sequence", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "recipient", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OutboundTransferLimitUpdated", + inputs: [ + { + name: "oldLimit", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "newLimit", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OutboundTransferQueued", + inputs: [ + { + name: "queueSequence", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OutboundTransferRateLimited", + inputs: [ + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sequence", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "currentCapacity", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + 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: "paused", + type: "bool", + indexed: false, + internalType: "bool", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "PauserTransferred", + inputs: [ + { + name: "oldPauser", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "newPauser", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "PeerUpdated", + inputs: [ + { + name: "chainId_", + type: "uint16", + indexed: true, + internalType: "uint16", + }, + { + name: "oldPeerContract", + type: "bytes32", + indexed: false, + internalType: "bytes32", + }, + { + name: "oldPeerDecimals", + type: "uint8", + indexed: false, + internalType: "uint8", + }, + { + name: "peerContract", + type: "bytes32", + indexed: false, + internalType: "bytes32", + }, + { + name: "peerDecimals", + type: "uint8", + indexed: false, + internalType: "uint8", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ThresholdChanged", + inputs: [ + { + name: "oldThreshold", + type: "uint8", + indexed: false, + internalType: "uint8", + }, + { + name: "threshold", + type: "uint8", + indexed: false, + internalType: "uint8", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "TransceiverAdded", + inputs: [ + { + name: "transceiver", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "transceiversNum", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "threshold", + type: "uint8", + indexed: false, + internalType: "uint8", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "TransceiverRemoved", + inputs: [ + { + name: "transceiver", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "threshold", + type: "uint8", + indexed: false, + internalType: "uint8", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "TransferRedeemed", + inputs: [ + { + name: "digest", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "TransferSent", + inputs: [ + { + name: "recipient", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "refundAddress", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "fee", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "recipientChain", + type: "uint16", + indexed: false, + internalType: "uint16", + }, + { + name: "msgSequence", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "TransferSent", + inputs: [ + { + name: "digest", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Upgraded", + inputs: [ + { + name: "implementation", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "BurnAmountDifferentThanBalanceDiff", + inputs: [ + { + name: "burnAmount", + type: "uint256", + internalType: "uint256", + }, + { + name: "balanceDiff", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "CallerNotTransceiver", + inputs: [ + { + name: "caller", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "CancellerNotSender", + inputs: [ + { + name: "canceller", + type: "address", + internalType: "address", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "CapacityCannotExceedLimit", + inputs: [ + { + name: "newCurrentCapacity", + type: "uint72", + internalType: "TrimmedAmount", + }, + { + name: "newLimit", + type: "uint72", + internalType: "TrimmedAmount", + }, + ], + }, + { + type: "error", + name: "DeliveryPaymentTooLow", + inputs: [ + { + name: "requiredPayment", + type: "uint256", + internalType: "uint256", + }, + { + name: "providedPayment", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "DisabledTransceiver", + inputs: [ + { + name: "transceiver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "InboundQueuedTransferNotFound", + inputs: [ + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "InboundQueuedTransferStillQueued", + inputs: [ + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "transferTimestamp", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "InvalidFork", + inputs: [ + { + name: "evmChainId", + type: "uint256", + internalType: "uint256", + }, + { + name: "blockChainId", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "InvalidInitialization", + inputs: [], + }, + { + type: "error", + name: "InvalidMode", + inputs: [ + { + name: "mode", + type: "uint8", + internalType: "uint8", + }, + ], + }, + { + type: "error", + name: "InvalidPauser", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "InvalidPeer", + inputs: [ + { + name: "chainId", + type: "uint16", + internalType: "uint16", + }, + { + name: "peerAddress", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "InvalidPeerChainIdZero", + inputs: [], + }, + { + type: "error", + name: "InvalidPeerDecimals", + inputs: [], + }, + { + type: "error", + name: "InvalidPeerSameChainId", + inputs: [], + }, + { + type: "error", + name: "InvalidPeerZeroAddress", + inputs: [], + }, + { + type: "error", + name: "InvalidRecipient", + inputs: [], + }, + { + type: "error", + name: "InvalidRefundAddress", + inputs: [], + }, + { + type: "error", + name: "InvalidTargetChain", + inputs: [ + { + name: "targetChain", + type: "uint16", + internalType: "uint16", + }, + { + name: "thisChain", + type: "uint16", + internalType: "uint16", + }, + ], + }, + { + type: "error", + name: "InvalidTransceiverZeroAddress", + inputs: [], + }, + { + type: "error", + name: "MessageNotApproved", + inputs: [ + { + name: "msgHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "NoEnabledTransceivers", + inputs: [], + }, + { + type: "error", + name: "NonRegisteredTransceiver", + inputs: [ + { + name: "transceiver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "NotAnEvmAddress", + inputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "NotEnoughCapacity", + inputs: [ + { + name: "currentCapacity", + type: "uint256", + internalType: "uint256", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "NotImplemented", + inputs: [], + }, + { + type: "error", + name: "NotInitializing", + inputs: [], + }, + { + type: "error", + name: "NotMigrating", + inputs: [], + }, + { + type: "error", + name: "NumberOfDecimalsNotEqual", + inputs: [ + { + name: "decimals", + type: "uint8", + internalType: "uint8", + }, + { + name: "decimalsOther", + type: "uint8", + internalType: "uint8", + }, + ], + }, + { + type: "error", + name: "OnlyDelegateCall", + inputs: [], + }, + { + type: "error", + name: "OutboundQueuedTransferNotFound", + inputs: [ + { + name: "queueSequence", + type: "uint64", + internalType: "uint64", + }, + ], + }, + { + type: "error", + name: "OutboundQueuedTransferStillQueued", + inputs: [ + { + name: "queueSequence", + type: "uint64", + internalType: "uint64", + }, + { + name: "transferTimestamp", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + 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: "PeerNotRegistered", + inputs: [ + { + name: "chainId", + type: "uint16", + internalType: "uint16", + }, + ], + }, + { + type: "error", + name: "ReentrancyGuardReentrantCall", + inputs: [], + }, + { + type: "error", + name: "RefundFailed", + inputs: [ + { + name: "refundAmount", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "RequireContractIsNotPaused", + inputs: [], + }, + { + type: "error", + name: "RequireContractIsPaused", + inputs: [], + }, + { + type: "error", + name: "RetrievedIncorrectRegisteredTransceivers", + inputs: [ + { + name: "retrieved", + type: "uint256", + internalType: "uint256", + }, + { + name: "registered", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "StaticcallFailed", + inputs: [], + }, + { + type: "error", + name: "ThresholdTooHigh", + inputs: [ + { + name: "threshold", + type: "uint256", + internalType: "uint256", + }, + { + name: "transceivers", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "TooManyTransceivers", + inputs: [], + }, + { + type: "error", + name: "TransceiverAlreadyAttestedToMessage", + inputs: [ + { + name: "nttManagerMessageHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "TransceiverAlreadyEnabled", + inputs: [ + { + name: "transceiver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "TransferAmountHasDust", + inputs: [ + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "dust", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "UndefinedRateLimiting", + inputs: [], + }, + { + type: "error", + name: "UnexpectedDeployer", + inputs: [ + { + name: "expectedOwner", + type: "address", + internalType: "address", + }, + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "UnexpectedMsgValue", + inputs: [], + }, + { + type: "error", + name: "ZeroAmount", + inputs: [], + }, + { + type: "error", + name: "ZeroThreshold", + inputs: [], + }, +] as const; + +const _bytecode = + "0x6101606040523480156200001257600080fd5b50604051620073cb380380620073cb8339810160408190526200003591620005a6565b84848484846001600160401b03821615801562000050575080155b806200006d57506001600160401b038216158015906200006d5750805b156200008c5760405163e543ef0560e01b815260040160405180910390fd5b506001600160401b0316608052620000a36200010d565b620000ad62000279565b3060a0526001600160a01b03831660c052816001811115620000d357620000d362000640565b610100816001811115620000eb57620000eb62000640565b90525061ffff16610120525050466101405250503360e05250620006e0915050565b6000620001196200032d565b905060006200012762000363565b82548154919250610100900460ff1690811462000148576200014862000656565b60005b818110156200019d57620001888382815481106200016d576200016d6200066c565b6000918252602090912001546001600160a01b031662000392565b80620001948162000698565b9150506200014b565b5060005b8181101562000259576000620001b9826001620006b4565b90505b828110156200024357838181548110620001da57620001da6200066c565b60009182526020909120015484546001600160a01b03909116908590849081106200020957620002096200066c565b6000918252602090912001546001600160a01b0316036200022e576200022e62000656565b806200023a8162000698565b915050620001bc565b5080620002508162000698565b915050620001a1565b508254604060ff909116111562000274576200027462000656565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620002ca5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146200032a5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000806200035d60017f8561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d8a620006ca565b92915050565b6000806200035d60017e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e2620006ca565b60006200039e62000530565b90506000620003ac62000560565b90506000620003ba6200032d565b90506000620003c862000363565b6001600160a01b038616600090815260208681526040918290208251606081018452905460ff80821615158084526101008304821615159484019490945262010000909104169281019290925291925090806200043857508060200151158015620004385750604081015160ff16155b62000447576200044762000656565b604081015184546020830151600160ff9093169290921b166001600160401b03161515906000805b8654610100900460ff16811015620004da57896001600160a01b0316868281548110620004a057620004a06200066c565b6000918252602090912001546001600160a01b031603620004c55760019150620004da565b80620004d18162000698565b9150506200046f565b5081151583151514620004f157620004f162000656565b8115158115151462000507576200050762000656565b8554604085015160ff91821691161062000525576200052562000656565b505050505050505050565b6000806200035d60017f49bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a80620006ca565b6000806200035d60017ffd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb120620006ca565b80518015158114620005a157600080fd5b919050565b600080600080600060a08688031215620005bf57600080fd5b85516001600160a01b0381168114620005d757600080fd5b602087015190955060028110620005ed57600080fd5b604087015190945061ffff811681146200060657600080fd5b60608701519093506001600160401b03811681146200062457600080fd5b9150620006346080870162000590565b90509295509295909350565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201620006ad57620006ad62000682565b5060010190565b808201808211156200035d576200035d62000682565b818103818111156200035d576200035d62000682565b60805160a05160c05160e051610100516101205161014051616b9b6200083060003960008181612b920152818161331e015261446101526000818161067a01528181610e740152818161354001528181614bbf01528181614c0f0152614f2d0152600081816103fe01528181610dbb01528181612c5901528181612ca101528181612d5f015281816131b10152614e7b01526000818161407901526140b50152600081816108c801528181610cfc01528181612cfc015281816131170152818161314b0152818161317a015281816131fc0152818161326701528181614162015281816146f90152614dd901526000612ad00152600081816104c50152818161113c0152818161171d0152818161215e015281816121bf01528181613d110152818161525701528181615469015281816154b901528181615781015281816158a7015261590d0152616b9b6000f3fe6080604052600436106102885760003560e01c80638e3ba8c91161015a578063b4d591bb116100c1578063e75235b81161007a578063e75235b81461084c578063f2fde38b14610861578063f5cfec1814610881578063f7514fbc14610896578063fc0c546a146108b6578063fd96063c146108ea57600080fd5b8063b4d591bb1461074e578063c0b07bde14610770578063c128d170146107ae578063d788c147146107ec578063da4856a11461080c578063e5a986031461082c57600080fd5b80639d782454116101135780639d782454146106af5780639f86029c146106cf5780639fd0506d146106ef578063b150fc5514610704578063b187bd2614610726578063b293f97f1461073b57600080fd5b80638e3ba8c9146105df5780638fd3ab80146105ff5780639057412d14610614578063961b94d01461064257806397c35146146106555780639a8a05921461066857600080fd5b80633b97e856116101fe5780638129fc1c116101b75780638129fc1c146105075780638413bcba1461050f5780638456cb591461052f57806386e11ffa1461054457806389c619dd146105925780638da5cb5b146105b257600080fd5b80633b97e8561461044d5780633f4ba83a146104745780634b4fd03b14610489578063689f90c31461049e57806374aa7bfc146104b35780637c918634146104e757600080fd5b8063190171751161025057806319017175146103525780631f97c9a814610372578063203e4a9b1461039f57806323d75e31146103bf578063295a5212146103ec578063396c16b71461042d57600080fd5b8063027172501461028d578063036de8af146102c05780630677df54146102e25780630900f01014610312578063186ce61214610332575b600080fd5b34801561029957600080fd5b506102ad6102a8366004615c64565b610947565b6040519081526020015b60405180910390f35b3480156102cc57600080fd5b506102e06102db366004615c96565b610984565b005b3480156102ee57600080fd5b506103026102fd366004615cb3565b6109f0565b60405190151581526020016102b7565b34801561031e57600080fd5b506102e061032d366004615c96565b610a25565b34801561033e57600080fd5b506102e061034d366004615ccc565b610a39565b34801561035e57600080fd5b506102e061036d366004615cb3565b610a66565b34801561037e57600080fd5b5061039261038d366004615d11565b610a91565b6040516102b79190615d7e565b3480156103ab57600080fd5b506102e06103ba366004615c96565b610bed565b3480156103cb57600080fd5b506103d4610c8a565b6040516001600160401b0390911681526020016102b7565b3480156103f857600080fd5b506104207f000000000000000000000000000000000000000000000000000000000000000081565b6040516102b79190615e0a565b34801561043957600080fd5b50610302610448366004615cb3565b610ca3565b34801561045957600080fd5b50610462610cc1565b60405160ff90911681526020016102b7565b34801561048057600080fd5b506102e0610da5565b34801561049557600080fd5b50610462610db7565b3480156104aa57600080fd5b50610302610df0565b3480156104bf57600080fd5b506103d47f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f357600080fd5b506102e0610502366004615e41565b610e03565b6102e0610fc7565b34801561051b57600080fd5b506102e061052a366004615cb3565b6110c9565b34801561053b57600080fd5b506102e0611215565b34801561055057600080fd5b50610559611228565b6040805182516001600160481b03908116825260208085015190911690820152918101516001600160401b0316908201526060016102b7565b34801561059e57600080fd5b506104626105ad366004615cb3565b61128c565b3480156105be57600080fd5b506105c76112a5565b6040516001600160a01b0390911681526020016102b7565b3480156105eb57600080fd5b506103026105fa366004615e89565b6112d3565b34801561060b57600080fd5b506102e061130d565b34801561062057600080fd5b5061063461062f366004615fbb565b611417565b6040516102b792919061600a565b6103d4610650366004616052565b61151a565b6103d4610663366004615d11565b611594565b34801561067457600080fd5b5061069c7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff90911681526020016102b7565b3480156106bb57600080fd5b506102e06106ca36600461608a565b61183b565b3480156106db57600080fd5b506102e06106ea366004615c96565b6118d8565b3480156106fb57600080fd5b506105c7611973565b34801561071057600080fd5b5061071961198c565b6040516102b79190616140565b34801561073257600080fd5b50610302611b16565b6103d46107493660046161ae565b611b2b565b34801561075a57600080fd5b50610763611b8c565b6040516102b7919061622b565b34801561077c57600080fd5b506107a160405180604001604052806005815260200164312e332e3160d81b81525081565b6040516102b79190616278565b3480156107ba57600080fd5b506107ce6107c9366004615c64565b611bf4565b604080518251815260209283015160ff1692810192909252016102b7565b3480156107f857600080fd5b50610559610807366004615c64565b611c44565b34801561081857600080fd5b506102e061082736600461608a565b611cbf565b34801561083857600080fd5b506102e061084736600461628b565b611d10565b34801561085857600080fd5b50610462611da4565b34801561086d57600080fd5b506102e061087c366004615c96565b611dae565b34801561088d57600080fd5b506102ad611e6c565b3480156108a257600080fd5b506102e06108b1366004615d11565b611e9b565b3480156108c257600080fd5b506105c77f000000000000000000000000000000000000000000000000000000000000000081565b3480156108f657600080fd5b5061090a610905366004615cb3565b6120e0565b6040805182516001600160481b031681526020808401516001600160401b031690820152918101516001600160a01b0316908201526060016102b7565b60008061095b61095684611c44565b61215a565b90506000610967610cc1565b905061097c6001600160481b03831682612268565b949350505050565b61099461098f6112a5565b612288565b600061099e6122d1565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef690600090a3505050565b6000806109fb611da4565b90508060ff16610a0a8461128c565b60ff1610158015610a1e575060008160ff16115b9392505050565b610a2d6122ff565b610a3681612331565b50565b610a416122ff565b6000610a4b610cc1565b9050610a61610a5b84838061243f565b8361248c565b505050565b610a6e6122ff565b6000610a78610cc1565b9050610a8d610a8883838061243f565b612538565b5050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152610ad46125cb565b6001600160401b0383811660009081526020928352604090819020815160e0810183528154815260018201549481019490945260028101546001600160481b03811692850192909252600160481b82049092166060840152600160881b900461ffff16608083015260038101546001600160a01b031660a083015260048101805460c084019190610b64906162a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610b90906162a8565b8015610bdd5780601f10610bb257610100808354040283529160200191610bdd565b820191906000526020600020905b815481529060010190602001808311610bc057829003601f168201915b5050505050815250509050919050565b610bf56122ff565b610bfe816125f9565b506000610c096128ab565b805490915060ff16600003610c2457805460ff191660011781555b7ff05962b5774c658e85ed80c91a75af9d66d2af2253dda480f90bce78aff5eda582610c4e6128d9565b548354604080516001600160a01b03909416845261010090920460ff9081166020850152169082015260600160405180910390a1610a8d612907565b6000610c946129a8565b546001600160401b0316919050565b6000610cad6129d6565b600092835260205250604090205460ff1690565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1790529051600091829182916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691610d2791906162e2565b600060405180830381855afa9150503d8060008114610d62576040519150601f19603f3d011682016040523d82523d6000602084013e610d67565b606091505b509150915081610d8a57604051631222cd8360e01b815260040160405180910390fd5b80806020019051810190610d9e91906162fe565b9250505090565b610dad6122ff565b610db5612a04565b565b60007f00000000000000000000000000000000000000000000000000000000000000006001811115610deb57610deb615df4565b905090565b6000610dfa612a6a565b5460ff16919050565b610e0b6122ff565b8361ffff16600003610e305760405163100b0f2760e11b815260040160405180910390fd5b82610e4e5760405163f839a0cb60e01b815260040160405180910390fd5b8160ff16600003610e725760405163ade64f0b60e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061ffff168461ffff1603610eba5760405163101b8f9560e11b815260040160405180910390fd5b6000610ec4612a98565b61ffff8616600090815260209182526040908190208151808301909252805482526001015460ff1691810191909152905083610efe612a98565b61ffff87166000908152602091909152604090205582610f1c612a98565b61ffff8716600090815260209190915260408120600101805460ff191660ff9390931692909217909155610f4e610cc1565b9050610f64610f5e84838061243f565b8761248c565b81516020808401516040805193845260ff918216928401929092529082018790528516606082015261ffff8716907f1456404e7f41f35c3daac941bb50bad417a66275c3040061b4287d787719599d9060800160405180910390a2505050505050565b610fcf612ac6565b600080516020616b468339815191528054600160401b810460ff1615906001600160401b03166000811580156110025750825b90506000826001600160401b0316600114801561101e5750303b155b90508115801561102c575080155b1561104a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561107457845460ff60401b1916600160401b1785555b61107c612b0f565b83156110c257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6110d1612b27565b6110d9611b16565b156110f7576040516309e3d0f360e11b815260040160405180910390fd5b6000611102826120e0565b905080602001516001600160401b031660000361113a57604051630301bcaf60e61b8152600481018390526024015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b031681602001516001600160401b03164261117d9190616331565b10156111b45760208101516040516301cb739d60e71b8152600481018490526001600160401b039091166024820152604401611131565b6111bc612b5f565b6000838152602091909152604080822080546001600160881b031916815560010180546001600160a01b031916905582015182516111fd9285929190612b8d565b50610a366001600080516020616b2683398151915255565b61122061098f6112a5565b610db5612dc2565b604080516060810182526000808252602082018190529181019190915261124d612e23565b6040805160608101825291546001600160481b038082168452600160481b8204166020840152600160901b90046001600160401b031690820152919050565b600061129f61129a83612e51565b612e8d565b92915050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b600080600160ff84161b6112e56129d6565b600086815260209190915260409020546101009004166001600160401b031611905092915050565b611315612ac6565b61131d612ec0565b611328906001616344565b600080516020616b468339815191528054600160401b900460ff168061135b575080546001600160401b03808416911610155b156113795760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556113a2612ed6565b5460ff166113c357604051632866815360e11b815260040160405180910390fd5b6113cb612b17565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050565b6060600080611424612f04565b80548060200260200160405190810160405280929190818152602001828054801561147857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161145a575b50505050509050600073__$93083e246e55d56d98f3df2872cd16bfd0$__63b620e8728684516040518363ffffffff1660e01b81526004016114bb92919061636b565b600060405180830381865af41580156114d8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261150091908101906163d2565b905061150d868284612f31565b9350935050509250929050565b6000611524612b27565b61152c611b16565b1561154a576040516309e3d0f360e11b815260040160405180910390fd5b60408051600180825281830190925261157b91869186918691829160009190602082018180368337019050506130b1565b9050610a1e6001600080516020616b2683398151915255565b600061159e612b27565b6115a6611b16565b156115c4576040516309e3d0f360e11b815260040160405180910390fd5b60006115ce6125cb565b6001600160401b0384811660009081526020928352604090819020815160e0810183528154815260018201549481019490945260028101546001600160481b03811692850192909252600160481b82049092166060840152600160881b900461ffff16608083015260038101546001600160a01b031660a083015260048101805460c08401919061165e906162a8565b80601f016020809104026020016040519081016040528092919081815260200182805461168a906162a8565b80156116d75780601f106116ac576101008083540402835291602001916116d7565b820191906000526020600020905b8154815290600101906020018083116116ba57829003601f168201915b505050505081525050905080606001516001600160401b031660000361171b57604051635feafa3160e11b81526001600160401b0384166004820152602401611131565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b031681606001516001600160401b03164261175e9190616331565b101561179657606081015160405163c06cf05f60e01b81526001600160401b0380861660048301529091166024820152604401611131565b61179e6125cb565b6001600160401b038416600090815260209190915260408120818155600181018290556002810180546001600160981b03191690556003810180546001600160a01b0319169055906117f36004830182615c0a565b505061181c8382604001518360800151846000015185602001518660a001518760c00151613317565b9150506118366001600080516020616b2683398151915255565b919050565b6118436135a3565b3360009081526020919091526040902054610100900460ff1661187b5760405163a0ae911d60e01b8152336004820152602401611131565b611883611b16565b156118a1576040516309e3d0f360e11b815260040160405180910390fd5b6118ab83836135d1565b60006118b7848361361a565b90506118c2816109f0565b156118d2576118d2848484611cbf565b50505050565b6118e06122ff565b6118e9816136ef565b60006118f36128ab565b905060006118ff6128d9565b54825460ff610100909204821692501681101561192457815460ff191660ff82161782555b8154604080516001600160a01b038616815260ff90921660208301527f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f910160405180910390a1610a61612907565b600061197d6122d1565b546001600160a01b0316919050565b60606000611998612f04565b8054806020026020016040519081016040528092919081815260200182805480156119ec57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116119ce575b505050505090506000815190506000816001600160401b03811115611a1357611a13615eae565b604051908082528060200260200182016040528015611a5e57816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181611a315790505b50905060005b82811015611b0e57611a746135a3565b6000858381518110611a8857611a886164db565b6020908102919091018101516001600160a01b031682528181019290925260409081016000208151606081018352905460ff8082161515835261010082048116151594830194909452620100009004909216908201528251839083908110611af257611af26164db565b602002602001018190525080611b07906164f1565b9050611a64565b509392505050565b600080611b216139b7565b5460021492915050565b6000611b35612b27565b611b3d611b16565b15611b5b576040516309e3d0f360e11b815260040160405180910390fd5b611b698787878787876130b1565b9050611b826001600080516020616b2683398151915255565b9695505050505050565b6060611b96612f04565b805480602002602001604051908101604052809291908181526020018280548015611bea57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611bcc575b5050505050905090565b6040805180820190915260008082526020820152611c10612a98565b61ffff909216600090815260209283526040908190208151808301909252805482526001015460ff16928101929092525090565b6040805160608101825260008082526020820181905291810191909152611c696139e5565b61ffff9290921660009081526020928352604090819020815160608101835290546001600160481b038082168352600160481b82041694820194909452600160901b9093046001600160401b0316908301525090565b611cc7611b16565b15611ce5576040516309e3d0f360e11b815260040160405180910390fd5b600080611cf3858585613a13565b915091508015611d04575050505050565b6110c285858585613b16565b611d186122ff565b8060ff16600003611d3c5760405163831761d760e01b815260040160405180910390fd5b6000611d466128ab565b805460ff84811660ff19831617835591925016611d61612907565b6040805160ff8084168252851660208201527f2a855b929b9a53c6fb5b5ed248b27e502b709c088e036a5aa17620c8fc5085a991015b60405180910390a1505050565b6000610dfa6128ab565b611db66122ff565b611dbf81613b22565b6000611dc9613b5d565b9050611dd3613b8b565b60005b8154811015610a6157818181548110611df157611df16164db565b600091825260209091200154604051632c7b84dd60e11b81526001600160a01b038581166004830152909116906358f709ba90602401600060405180830381600087803b158015611e4157600080fd5b505af1158015611e55573d6000803e3d6000fd5b505050508080611e64906164f1565b915050611dd6565b600080611e7a610956611228565b90506000611e86610cc1565b9050610d9e6001600160481b03831682612268565b611ea3612b27565b611eab611b16565b15611ec9576040516309e3d0f360e11b815260040160405180910390fd5b6000611ed36125cb565b6001600160401b0383811660009081526020928352604090819020815160e0810183528154815260018201549481019490945260028101546001600160481b03811692850192909252600160481b82049092166060840152600160881b900461ffff16608083015260038101546001600160a01b031660a083015260048101805460c084019190611f63906162a8565b80601f0160208091040260200160405190810160405280929190818152602001828054611f8f906162a8565b8015611fdc5780601f10611fb157610100808354040283529160200191611fdc565b820191906000526020600020905b815481529060010190602001808311611fbf57829003601f168201915b505050505081525050905080606001516001600160401b031660000361202057604051635feafa3160e11b81526001600160401b0383166004820152602401611131565b60a08101516001600160a01b031633146120645760a081015160405163ceb40a8560e01b81523360048201526001600160a01b039091166024820152604401611131565b61206c6125cb565b6001600160401b038316600090815260209190915260408120818155600181018290556002810180546001600160981b03191690556003810180546001600160a01b0319169055906120c16004830182615c0a565b50506111fd826001600160401b031660001b3383604001516001612b8d565b6040805160608101825260008082526020820181905291810191909152612105612b5f565b60009283526020908152604092839020835160608101855281546001600160481b0381168252600160481b90046001600160401b031692810192909252600101546001600160a01b0316928101929092525090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160401b03166000036121a557602082015160ff1668ffffffffffffffff001761129f565b604082015182516001600160401b039182164203916000917f0000000000000000000000000000000000000000000000000000000000000000821691849160081c166001600160401b031602816121fe576121fe61650a565b602086015186516001600160401b03600892831c8116949093049390930193506000926122319285929190911c16613bdc565b905061225f61223f82613bf2565b602087015160ff1660ff1660089190911b68ffffffffffffffff00161790565b95945050505050565b60006001600160401b03600884901c1660ff841682611b82838387613c5e565b33612291611973565b6001600160a01b0316141580156122b157506001600160a01b0381163314155b15610a365760405163e2a08e5d60e01b8152336004820152602401611131565b60008061129f60017fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124a616331565b336123086112a5565b6001600160a01b031614610db55760405163118cdaa760e01b8152336004820152602401611131565b612339612ac6565b61234281613cc7565b600061234c612ed6565b805490915060ff161561236157612361616520565b805460ff191660011781556040805163011fa75760e71b815290513091638fd3ab8091600480830192600092919082900301818387803b1580156123a457600080fd5b505af11580156123b8573d6000803e3d6000fd5b50505050306001600160a01b031663689f90c36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241e9190616536565b61242a5761242a613d07565b6124346000613db1565b805460ff1916905550565b600080612456612450600886613dcc565b84613dcc565b90506000612465868684613c5e565b9050611b8261247382613bf2565b8360ff1660089190911b68ffffffffffffffff00161790565b60006124966139e5565b61ffff831660009081526020919091526040812080549092506001600160481b0316906124c1610cc1565b90506124cd8584613de1565b61ffff84167f739ed886fd81a3ddc9f4b327ab69152e513cd45b26fda0c73660eaca8e1193016125066001600160481b03851684612268565b6125196001600160481b03891685612268565b6040805192835260208301919091520160405180910390a25050505050565b6000612542612e23565b80549091506001600160481b0316600061255a610cc1565b90506125668484613de1565b7f7e3b0fc388be9d36273f66210aed83be975df3a9adfffa4c734033f498f362cd61259a6001600160481b03841683612268565b6125ad6001600160481b03871684612268565b6040805192835260208301919091520160405180910390a150505050565b60008061129f60017f852fa0677fef8612c6c15b518c9fa56761e9ed15cfd5c6e5399e5467985ac7ee616331565b6000806126046135a3565b90506000612610613eea565b9050600061261c612f04565b905060006126286128d9565b90506001600160a01b03861661265157604051632f44bd7760e01b815260040160405180910390fd5b6001600160a01b03861660009081526020859052604090205460ff161561269c576001600160a01b0386166000908152602085905260409020805461ff001916610100179055612799565b8054604060ff909116106126c35760405163891684c360e01b815260040160405180910390fd5b6040805160608101825260018082526020808301918252845460ff9081168486019081526001600160a01b038c166000908152928a905294822093518454935195518216620100000262ff0000199615156101000261ff00199215159290921661ffff1990951694909417179490941691909117909155825490911690829061274b83616553565b91906101000a81548160ff021916908360ff1602179055505061276c613b5d565b8054600181018255600091825260209091200180546001600160a01b0319166001600160a01b0388161790555b81546001808201845560008481526020902090910180546001600160a01b0319166001600160a01b0389161790558154610100900460ff169082906127dd83616553565b82546101009290920a60ff8181021990931691831602179091556001600160a01b03881660009081526020879052604090205485546001620100009092049092161b6001600160401b039182168181179350911681170361285c57604051638d68f84d60e01b81526001600160a01b0388166004820152602401611131565b835467ffffffffffffffff19166001600160401b03821617845561287e613f18565b505050506001600160a01b0392909216600090815260209290925250604090205462010000900460ff1690565b60008061129f60017f47028352a8b3feae1a85fba43bc13f990568bb1637dce33d3dbfd791a0808b80616331565b60008061129f60017f8561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d8a616331565b60006129116128ab565b5460ff16905060006129216128d9565b60408051808201909152905460ff80821683526101009091048116602083018190529192508316111561297a5760208101516040516313c3d1b160e01b815260ff80851660048301529091166024820152604401611131565b805160ff1615610a8d578160ff16600003610a8d5760405163831761d760e01b815260040160405180910390fd5b60008061129f60017fad78307a8b51804c575f26039dcb87c58925afb3b7c08732f3b21b942aed7a77616331565b60008061129f60017f68dfeeddfa5e4e9adceec01a3aba274bdcbab3f6ac9956417a4332f2b08abddb616331565b612a0c611b16565b612a2957604051637e38d1d360e11b815260040160405180910390fd5b612a336001614059565b604051600081527fe11c2112add17fb763d3bd59f63b10429c3e11373da4fb8ef6725107a2fdc4b0906020015b60405180910390a1565b60008061129f60017f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cc616331565b60008061129f60017febcc9f646b0f459ff8f387587d536b0af3484cf442e1577400f322334e7d1ef1616331565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610db557604051633c64f99360e21b815260040160405180910390fd5b612b17614066565b612b1f612907565b610db5613f18565b600080516020616b26833981519152805460011901612b5957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60008061129f60017f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b9616331565b612bb67f000000000000000000000000000000000000000000000000000000000000000061412c565b6000612bd3612bc3610cc1565b6001600160481b03851690612268565b90508115612c2957604080518681526001600160a01b03861660208201529081018290527ff80e572ae1b63e2449629b6c7d783add85c36473926f216077f17ee002bcfd079060600160405180910390a1612c55565b60405185907f504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a9190600090a25b60007f00000000000000000000000000000000000000000000000000000000000000006001811115612c8957612c89615df4565b03612c9d57612c988482614155565b6110c2565b60017f00000000000000000000000000000000000000000000000000000000000000006001811115612cd157612cd1615df4565b03612d5d576040516340c10f1960e01b81526001600160a01b038581166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b158015612d4057600080fd5b505af1158015612d54573d6000803e3d6000fd5b505050506110c2565b7f00000000000000000000000000000000000000000000000000000000000000006001811115612d8f57612d8f615df4565b6040516366001a8960e01b815260ff9091166004820152602401611131565b6001600080516020616b2683398151915255565b612dca611b16565b15612de8576040516309e3d0f360e11b815260040160405180910390fd5b612df26002614059565b604051600181527f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd290602001612a60565b60008061129f60017f7c25289a27ec8c9be54d4a154cf80490d69bda989cdb8328232e08fea9220421616331565b600080612e5c614189565b905080612e676129d6565b60009485526020526040909320546101009004929092166001600160401b031692915050565b60005b6001600160401b0382161561183657612eaa600183616572565b9091169080612eb881616553565b915050612e90565b6000600080516020616b46833981519152610c94565b60008061129f60017f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4f616331565b60008061129f60017e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e2616331565b805160609060009081612f426135a3565b90506000826001600160401b03811115612f5e57612f5e615eae565b604051908082528060200260200182016040528015612f87578160200160208202803683370190505b5090506000805b848110156130a0576000888281518110612faa57612faa6164db565b6020908102919091018101516001600160a01b03811660008181529288905260408320548d5192945062010000900460ff16929163b5634c73908f908f9086908110612ff857612ff86164db565b60200260200101516040518363ffffffff1660e01b815260040161301d9291906165b4565b602060405180830381865afa15801561303a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305e91906165d1565b905080868581518110613073576130736164db565b602090810291909101015261308881866165ea565b94505050508080613098906164f1565b915050612f8e565b50909450925050505b935093915050565b6000866000036130d457604051631f2a200560e01b815260040160405180910390fd5b846130f257604051634e46966960e11b815260040160405180910390fd5b836131105760405163717f139360e11b815260040160405180910390fd5b600061313c7f000000000000000000000000000000000000000000000000000000000000000030614193565b90506131736001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308b614264565b600061319f7f000000000000000000000000000000000000000000000000000000000000000030614193565b90506131ab8282616331565b985060017f000000000000000000000000000000000000000000000000000000000000000060018111156131e1576131e1615df4565b036132ba57604051630852cd8d60e31b8152600481018a90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342966c6890602401600060405180830381600087803b15801561324857600080fd5b505af115801561325c573d6000803e3d6000fd5b50505050600061328c7f000000000000000000000000000000000000000000000000000000000000000030614193565b90508083146132b8576040516302156a8f60e01b81526004810184905260248101829052604401611131565b505b505060006132c888886142cf565b905060006132d4614387565b905060006132e88a8a8a8a8a8a89896143e4565b905080156132fa57509150611b829050565b61330982848b8b8b338b613317565b9a9950505050505050505050565b60006133427f000000000000000000000000000000000000000000000000000000000000000061412c565b6000806000806133528a87614522565b929650909450925090508b600061336d8d8c8e858d8f6146ad565b9050600073__$93083e246e55d56d98f3df2872cd16bfd0$__638b4979b86040518060600160405280866001600160401b031660001b81526020016133b88e6001600160a01b031690565b815260200173__$93083e246e55d56d98f3df2872cd16bfd0$__632b9f4796876040518263ffffffff1660e01b81526004016133f491906165fd565b600060405180830381865af4158015613411573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613439919081019061664d565b8152506040518263ffffffff1660e01b815260040161345891906166aa565b600060405180830381865af4158015613475573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261349d919081019061664d565b90508c6134cb818d6134ad612a98565b61ffff851660009081526020919091526040902054898b8d88614758565b8e8c8e7fe54e51e42099622516fa3b48e9733581c9dbdcb771cafb093f745a0532a3598261350a6134fa610cc1565b6001600160481b03861690612268565b60408051918252602082018b905261ffff8716908201526001600160401b038916606082015260800160405180910390a36135657f0000000000000000000000000000000000000000000000000000000000000000846148a5565b6040517f3e6ae56314c6da8b461d872f41c6d0bb69317b9d0232805aaccfa45df1a16fa090600090a250929f9e505050505050505050505050505050565b60008061129f60017f49bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a80616331565b806135da612a98565b61ffff84166000908152602091909152604090205414610a8d57604051635788c0fd60e11b815261ffff8316600482015260248101829052604401611131565b60008073__$93083e246e55d56d98f3df2872cd16bfd0$__63b3f07bbd85856040518363ffffffff1660e01b81526004016136569291906166bd565b602060405180830381865af4158015613673573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061369791906165d1565b90506136c4816136a56135a3565b336000908152602091909152604090205462010000900460ff166112d3565b156136e557604051631089c4a160e11b815260048101829052602401611131565b610a1e81336148d8565b60006136f96135a3565b90506000613705613eea565b90506000613711612f04565b90506001600160a01b03841661373a57604051632f44bd7760e01b815260040160405180910390fd5b6001600160a01b03841660009081526020849052604090205460ff1661377e57604051630d583f4760e41b81526001600160a01b0385166004820152602401611131565b6001600160a01b038416600090815260208490526040902054610100900460ff166137c7576040516307d86e9160e21b81526001600160a01b0385166004820152602401611131565b6001600160a01b0384166000908152602084905260409020805461ff00191690556137f06128d9565b8054610100900460ff16906001613806836166da565b82546101009290920a60ff8181021990931691831602179091556001600160a01b03861660009081526020869052604090205484546001600160401b036001620100009093049093169190911b1981168216925016811061386957613869616520565b825467ffffffffffffffff19166001600160401b0382161783558154600090815b8181101561398f57876001600160a01b03168582815481106138ae576138ae6164db565b6000918252602090912001546001600160a01b03160361397d57846138d4600184616331565b815481106138e4576138e46164db565b9060005260206000200160009054906101000a90046001600160a01b0316858281548110613914576139146164db565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555084805480613952576139526166f7565b600082815260209020810160001990810180546001600160a01b03191690550190556001925061398f565b80613987816164f1565b91505061388a565b508161399d5761399d616520565b6139a5613f18565b6139ae87614979565b50505050505050565b60008061129f60017f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258023616331565b60008061129f60017fefb21dcaedea63b55c44882f329622e13a8d0f5b947b3a372826208a9003da16616331565b600080600073__$93083e246e55d56d98f3df2872cd16bfd0$__63b3f07bbd87866040518363ffffffff1660e01b8152600401613a519291906166bd565b602060405180830381865af4158015613a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a9291906165d1565b9050613a9d816109f0565b613abd57604051630451c4fb60e41b815260048101829052602401611131565b6000613ac882614af8565b90508015613b0a57604051829087907f4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef290600090a36000935091506130a99050565b90969095509350505050565b6118d284848484614b39565b613b2a6122ff565b6001600160a01b038116613b5457604051631e4fbdf760e01b815260006004820152602401611131565b610a3681614cb8565b60008061129f60017f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed979616331565b613b936128d9565b5460ff16613b9f613b5d565b5414610db557613bad613b5d565b54613bb66128d9565b5460405163d2a13a2960e01b8152600481019290925260ff166024820152604401611131565b6000818310613beb5781610a1e565b5090919050565b60006001600160401b03821115613c5a5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401611131565b5090565b60008160ff168360ff1603613c74575082610a1e565b8160ff168360ff161115613ca857613c8c828461670d565b613c9790600a61680a565b613ca19085616819565b9050610a1e565b613cb2838361670d565b613cbd90600a61680a565b613ca1908561683b565b613cd081614d29565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b613d0f614dd7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316306001600160a01b03166374aa7bfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d9b9190616852565b6001600160401b031614610db557610db5616520565b80613dba612a6a565b805460ff191691151591909117905550565b60008160ff168360ff1610613beb5781610a1e565b80546001600160481b0316613df581614fc3565b15613e2357815468ffffffffffffffffff60481b1916600160481b6001600160481b03851602178255613ea3565b6040805160608101825283546001600160481b038082168352600160481b8204166020830152600160901b90046001600160401b031691810191909152600090613e6c9061215a565b9050613e79848383614fe3565b83546001600160481b0391909116600160481b0268ffffffffffffffffff60481b19909116178355505b5080546001600160481b039290921679ffffffffffffffff000000000000000000ffffffffffffffffff1990921691909117600160901b426001600160401b031602179055565b60008061129f60017ffd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb120616331565b6000613f226128d9565b90506000613f2e612f04565b82548154919250610100900460ff16908114613f4c57613f4c616520565b60005b81811015613f9857613f86838281548110613f6c57613f6c6164db565b6000918252602090912001546001600160a01b0316614979565b80613f90816164f1565b915050613f4f565b5060005b81811015614041576000613fb18260016165ea565b90505b8281101561402e57838181548110613fce57613fce6164db565b60009182526020909120015484546001600160a01b0390911690859084908110613ffa57613ffa6164db565b6000918252602090912001546001600160a01b03160361401c5761401c616520565b80614026816164f1565b915050613fb4565b5080614039816164f1565b915050613f9c565b508254604060ff9091161115610a6157610a61616520565b806140626139b7565b5550565b61406e61507d565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146140e857604051636345072160e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152336024820152604401611131565b34156141075760405163bd28e88960e01b815260040160405180910390fd5b61411133336150b4565b6141196150ce565b610db5610a88614127610cc1565b6150de565b468114610a36576040516377d879fb60e01b815260048101829052466024820152604401611131565b610a8d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168383615102565b6000610c94613eea565b604080516001600160a01b0383811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b179052915160009283928392918716916141ed91906162e2565b600060405180830381855afa9150503d8060008114614228576040519150601f19603f3d011682016040523d82523d6000602084013e61422d565b606091505b50915091508161425057604051631222cd8360e01b815260040160405180910390fd5b8080602001905181019061225f91906165d1565b6040516001600160a01b03808516602483015283166044820152606481018290526118d29085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152615132565b6000806142da612a98565b61ffff84166000908152602091909152604081206001015460ff1691508190036143175760405163ade64f0b60e01b815260040160405180910390fd5b600080614322610cc1565b905061432f86828561243f565b915060006143466001600160481b03841683612268565b905080871461437c578661435a8282616331565b6040516338f831a560e11b815260048101929092526024820152604401611131565b509095945050505050565b60006143916129a8565b546001600160401b031690506143a56129a8565b80546001600160401b03169060006143bc8361686f565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505090565b6000806144026143f2610cc1565b6001600160481b03861690615204565b9050600061440f82615253565b90508615801561441c5750805b1561444d57614429611e6c565b6040516326fb55dd60e01b81526004810191909152602481018c9052604401611131565b8680156144575750805b156144fc576144857f000000000000000000000000000000000000000000000000000000000000000061412c565b337ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a858d6144b1611e6c565b604080516001600160401b03909416845260208401929092529082015260600160405180910390a26144e884868c8c8c338c6152a1565b6144f1346153fb565b600192505050614516565b61450582615467565b61450f828b6154b7565b6000925050505b98975050505050505050565b6060806060600080614532612f04565b80548060200260200160405190810160405280929190818152602001828054801561458657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311614568575b5050505050905060606000614599613b5d565b54835190915060008190036145c1576040516334e7b19560e11b815260040160405180910390fd5b604051635b10743960e11b815273__$93083e246e55d56d98f3df2872cd16bfd0$__9063b620e872906145fa908c90869060040161636b565b600060405180830381865af4158015614617573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261463f91908101906163d2565b925050506000806146518a8486612f31565b915091508034101561467f576040516306a91e3760e51b815260048101829052346024820152604401611131565b600061468b8234616331565b9050801561469c5761469c816153fb565b509299919850965090945092505050565b6040805160a08101825260008082526020820181905291810182905260608082019290925260808101919091526040518060a00160405280886001600160481b031681526020016147247f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690565b81526020018781526020018661ffff1681526020016040518060200160405280600081525081525090509695505050505050565b815160006147646135a3565b90508661478a57604051630ebc95af60e21b815261ffff8a166004820152602401611131565b8760005b838110156148985760008682815181106147aa576147aa6164db565b60200260200101519050806001600160a01b0316634b5b05058a84815181106147d5576147d56164db565b60200260200101518e8b886000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160029054906101000a900460ff1660ff1681518110614827576148276164db565b60200260200101518a8f896040518763ffffffff1660e01b8152600401614852959493929190616895565b6000604051808303818588803b15801561486b57600080fd5b505af115801561487f573d6000803e3d6000fd5b5050505050508080614890906164f1565b91505061478e565b5050505050505050505050565b600082826040516020016148ba9291906168d9565b60405160208183030381529060405280519060200120905092915050565b61490c826148e46135a3565b6001600160a01b0384166000908152602091909152604090205462010000900460ff1661551d565b7f35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e582826149376135a3565b6001600160a01b038581166000908152602092835260409081902054815195865293909116918401919091526201000090910460ff169082015260600161140b565b60006149836135a3565b9050600061498f613eea565b9050600061499b6128d9565b905060006149a7612f04565b6001600160a01b038616600090815260208681526040918290208251606081018452905460ff8082161515808452610100830482161515948401949094526201000090910416928101929092529192509080614a1557508060200151158015614a155750604081015160ff16155b614a2157614a21616520565b604081015184546020830151600160ff9093169290921b166001600160401b03161515906000805b8654610100900460ff16811015614aab57896001600160a01b0316868281548110614a7657614a766164db565b6000918252602090912001546001600160a01b031603614a995760019150614aab565b80614aa3816164f1565b915050614a49565b5081151583151514614abf57614abf616520565b81151581151514614ad257614ad2616520565b8554604085015160ff918216911610614aed57614aed616520565b505050505050505050565b6000614b0382610ca3565b15614b1057506001919050565b6001614b1a6129d6565b600093845260205260408320805460ff19169115159190911790555090565b6040808301519051635399ded560e11b815260009173__$93083e246e55d56d98f3df2872cd16bfd0$__9163a733bdaa91614b7691600401616278565b600060405180830381865af4158015614b93573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614bbb9190810190616909565b90507f000000000000000000000000000000000000000000000000000000000000000061ffff16816060015161ffff1614614c3e576060810151604051631ee5902560e11b815261ffff91821660048201527f00000000000000000000000000000000000000000000000000000000000000009091166024820152604401611131565b6000614c48610cc1565b90506000614c788283614c718587600001516001600160481b031661226890919063ffffffff16565b919061243f565b90506000614c89846040015161556b565b90506000614c99868a8585615593565b90508015614cab5750505050506118d2565b614aed8683856000612b8d565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6001600160a01b0381163b614d965760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401611131565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316306001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614e3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e6391906169bd565b6001600160a01b031614614e7957614e79616520565b7f00000000000000000000000000000000000000000000000000000000000000006001811115614eab57614eab615df4565b306001600160a01b031663295a52126040518163ffffffff1660e01b8152600401602060405180830381865afa158015614ee9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f0d91906169da565b6001811115614f1e57614f1e615df4565b14614f2b57614f2b616520565b7f000000000000000000000000000000000000000000000000000000000000000061ffff16306001600160a01b0316639a8a05926040518163ffffffff1660e01b8152600401602060405180830381865afa158015614f8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fb291906169fb565b61ffff1614610db557610db5616520565b60006001600160401b03600883901c1615801561129f57505060ff161590565b600080614ff084866155dc565b1561502957614fff8486615601565b905061500b83826155dc565b6150185760ff8316615022565b6150228382615601565b9150615042565b6150338585615601565b905061503f8382615646565b91505b61504c82866155dc565b15611b0e57604051631e74e8fb60e31b81526001600160481b03808416600483015286166024820152604401611131565b600080516020616b4683398151915254600160401b900460ff16610db557604051631afcd79f60e31b815260040160405180910390fd5b6150bc61507d565b6150c58261568b565b610a8d8161569c565b6150d661507d565b610db56156ad565b6000806150ec600884613dcc565b905068ffffffffffffffff0060ff821617610a1e565b6040516001600160a01b038316602482015260448101829052610a6190849063a9059cbb60e01b90606401614298565b6000615187826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166156b59092919063ffffffff16565b805190915015610a6157808060200190518101906151a59190616536565b610a615760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611131565b600080615212600884613dcc565b905061097c61523a6152356001600160401b03600888901c1660ff881685613c5e565b613bf2565b8260ff1660089190911b68ffffffffffffffff00161790565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160401b031660000361528d57600061129f565b61129f61529b610956611228565b836156c4565b6040518060e00160405280858152602001848152602001876001600160481b03168152602001426001600160401b031681526020018661ffff168152602001836001600160a01b03168152602001828152506152fb6125cb565b6001600160401b03808a1660009081526020928352604090819020845181559284015160018401558301516002830180546060860151608087015161ffff16600160881b0261ffff60881b1991909516600160481b026001600160881b03199092166001600160481b0390941693909317179190911691909117905560a08201516003820180546001600160a01b039092166001600160a01b031990921691909117905560c082015160048201906153b39082616a66565b50506040516001600160401b03891681527f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f915060200160405180910390a150505050505050565b604051600090339083908381818185875af1925050503d806000811461543d576040519150601f19603f3d011682016040523d82523d6000602084013e615442565b606091505b5050905080610a8d57604051630b288dc560e21b815260048101839052602401611131565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b031660000361549b5750565b610a36816154aa610956611228565b6154b2612e23565b6156d0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b03166000036154ec575050565b610a8d826154fc61095684611c44565b6155046139e5565b61ffff8516600090815260209190915260409020615729565b600160ff82161b61552c6129d6565b60009384526020526040909220805468ffffffffffffffff00198116610100918290046001600160401b03908116951694909417029290921790915550565b600060a082901c15613c5a5760405163033b960d60e41b815260048101839052602401611131565b6000806155a0848661577d565b905080156155bd576155b38685856157cc565b600191505061097c565b6155c784866158a5565b6155d08461590b565b50600095945050505050565b60006155e8838361595b565b506001600160401b03600891821c81169290911c161190565b600061560d838361595b565b610a1e61562d6001600160401b03600885811c8216919087901c16616572565b68ffffffffffffffff0060089190911b1660ff85161790565b6000615652838361595b565b610a1e6156726001600160401b03600885811c8216919087901c16616344565b68ffffffffffffffff0060089190911b1660ff84161790565b61569361507d565b610a3681615990565b6156a461507d565b610a36816159d5565b612dae61507d565b606061097c84846000856159dd565b6000610a1e8383615ab8565b805467ffffffffffffffff60901b1916600160901b426001600160401b0316021781556156fd8284615601565b81546001600160481b0391909116600160481b0268ffffffffffffffffff60481b199091161790555050565b80546001600160401b034216600160901b0267ffffffffffffffff60901b198216811783556156fd916001600160481b03918216908216179061576e90851686615add565b6001600160481b031690615b40565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160401b03166000036157b7576000610a1e565b610a1e6157c661095684611c44565b846156c4565b6040518060600160405280836001600160481b03168152602001426001600160401b03168152602001826001600160a01b031681525061580a612b5f565b6000858152602091825260409081902083518154858501516001600160481b039092166001600160881b031990911617600160481b6001600160401b039092169190910217815592810151600190930180546001600160a01b0319166001600160a01b039094169390931790925590518481527f7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f31629101611d97565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b03166000036158da575050565b610a8d826158ea61095684611c44565b6158f26139e5565b61ffff85166000908152602091909152604090206156d0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b031660000361593f5750565b610a368161594e610956611228565b615956612e23565b615729565b60ff8281169082168082146118d257604051635ce6db6160e11b815260ff808416600483015282166024820152604401611131565b61599861507d565b60006159a26139b7565b60018155905060006159b26122d1565b80546001600160a01b0319166001600160a01b0394909416939093179092555050565b613b2a61507d565b606082471015615a3e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611131565b600080866001600160a01b03168587604051615a5a91906162e2565b60006040518083038185875af1925050503d8060008114615a97576040519150601f19603f3d011682016040523d82523d6000602084013e615a9c565b606091505b5091509150615aad87838387615b6c565b979650505050505050565b6000615ac4838361595b565b506001600160401b03600891821c81169290911c161090565b6000615ae9838361595b565b600883811c6001600160401b039081169184901c811682810192918311615b105782615b19565b6001600160401b035b9250611b82615b2784613bf2565b68ffffffffffffffff0060089190911b1660ff88161790565b6000615b4c838361595b565b600882811c6001600160401b039081169185901c1610613beb5781610a1e565b60608315615bdb578251600003615bd4576001600160a01b0385163b615bd45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611131565b508161097c565b61097c8383815115615bf05781518083602001fd5b8060405162461bcd60e51b81526004016111319190616278565b508054615c16906162a8565b6000825580601f10615c26575050565b601f016020900490600052602060002090810190610a3691905b80821115613c5a5760008155600101615c40565b61ffff81168114610a3657600080fd5b600060208284031215615c7657600080fd5b8135610a1e81615c54565b6001600160a01b0381168114610a3657600080fd5b600060208284031215615ca857600080fd5b8135610a1e81615c81565b600060208284031215615cc557600080fd5b5035919050565b60008060408385031215615cdf57600080fd5b823591506020830135615cf181615c54565b809150509250929050565b6001600160401b0381168114610a3657600080fd5b600060208284031215615d2357600080fd5b8135610a1e81615cfc565b60005b83811015615d49578181015183820152602001615d31565b50506000910152565b60008151808452615d6a816020860160208601615d2e565b601f01601f19169290920160200192915050565b6020815281516020820152602082015160408201526001600160481b0360408301511660608201526001600160401b03606083015116608082015261ffff60808301511660a082015260018060a01b0360a08301511660c0820152600060c083015160e08084015261097c610100840182615d52565b634e487b7160e01b600052602160045260246000fd5b6020810160028310615e2c57634e487b7160e01b600052602160045260246000fd5b91905290565b60ff81168114610a3657600080fd5b60008060008060808587031215615e5757600080fd5b8435615e6281615c54565b9350602085013592506040850135615e7981615e32565b9396929550929360600135925050565b60008060408385031215615e9c57600080fd5b823591506020830135615cf181615e32565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715615ee657615ee6615eae565b60405290565b60405160a081016001600160401b0381118282101715615ee657615ee6615eae565b604051601f8201601f191681016001600160401b0381118282101715615f3657615f36615eae565b604052919050565b60006001600160401b03821115615f5757615f57615eae565b50601f01601f191660200190565b600082601f830112615f7657600080fd5b8135615f89615f8482615f3e565b615f0e565b818152846020838601011115615f9e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215615fce57600080fd5b8235615fd981615c54565b915060208301356001600160401b03811115615ff457600080fd5b61600085828601615f65565b9150509250929050565b604080825283519082018190526000906020906060840190828701845b8281101561604357815184529284019290840190600101616027565b50505092019290925292915050565b60008060006060848603121561606757600080fd5b83359250602084013561607981615c54565b929592945050506040919091013590565b60008060006060848603121561609f57600080fd5b83356160aa81615c54565b92506020840135915060408401356001600160401b03808211156160cd57600080fd5b90850190606082880312156160e157600080fd5b6040516060810181811083821117156160fc576160fc615eae565b8060405250823581526020830135602082015260408301358281111561612157600080fd5b61612d89828601615f65565b6040830152508093505050509250925092565b602080825282518282018190526000919060409081850190868401855b828110156161935781518051151585528681015115158786015285015160ff16858501526060909301929085019060010161615d565b5091979650505050505050565b8015158114610a3657600080fd5b60008060008060008060c087890312156161c757600080fd5b8635955060208701356161d981615c54565b9450604087013593506060870135925060808701356161f7816161a0565b915060a08701356001600160401b0381111561621257600080fd5b61621e89828a01615f65565b9150509295509295509295565b6020808252825182820181905260009190848201906040850190845b8181101561626c5783516001600160a01b031683529284019291840191600101616247565b50909695505050505050565b602081526000610a1e6020830184615d52565b60006020828403121561629d57600080fd5b8135610a1e81615e32565b600181811c908216806162bc57607f821691505b6020821081036162dc57634e487b7160e01b600052602260045260246000fd5b50919050565b600082516162f4818460208701615d2e565b9190910192915050565b60006020828403121561631057600080fd5b8151610a1e81615e32565b634e487b7160e01b600052601160045260246000fd5b8181038181111561129f5761129f61631b565b6001600160401b038181168382160190808211156163645761636461631b565b5092915050565b60408152600061637e6040830185615d52565b90508260208301529392505050565b600082601f83011261639e57600080fd5b81516163ac615f8482615f3e565b8181528460208386010111156163c157600080fd5b61097c826020830160208701615d2e565b600060208083850312156163e557600080fd5b82516001600160401b03808211156163fc57600080fd5b818501915085601f83011261641057600080fd5b81518181111561642257616422615eae565b8060051b616431858201615f0e565b918252838101850191858101908984111561644b57600080fd5b86860192505b838310156164ce578251858111156164695760008081fd5b86016040818c03601f19018113156164815760008081fd5b616489615ec4565b8983015161649681615e32565b81529082015190878211156164ab5760008081fd5b6164b98d8b8486010161638d565b818b0152845250509186019190860190616451565b9998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600182016165035761650361631b565b5060010190565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60006020828403121561654857600080fd5b8151610a1e816161a0565b600060ff821660ff81036165695761656961631b565b60010192915050565b6001600160401b038281168282160390808211156163645761636461631b565b60ff8151168252600060208201516040602085015261097c6040850182615d52565b61ffff8316815260406020820152600061097c6040830184616592565b6000602082840312156165e357600080fd5b5051919050565b8082018082111561129f5761129f61631b565b602081526001600160481b038251166020820152602082015160408201526040820151606082015261ffff60608301511660808201526000608083015160a08084015261097c60c0840182615d52565b60006020828403121561665f57600080fd5b81516001600160401b0381111561667557600080fd5b61097c8482850161638d565b8051825260208101516020830152600060408201516060604085015261097c6060850182615d52565b602081526000610a1e6020830184616681565b61ffff8316815260406020820152600061097c6040830184616681565b600060ff8216806166ed576166ed61631b565b6000190192915050565b634e487b7160e01b600052603160045260246000fd5b60ff828116828216039081111561129f5761129f61631b565b600181815b808511156167615781600019048211156167475761674761631b565b8085161561675457918102915b93841c939080029061672b565b509250929050565b6000826167785750600161129f565b816167855750600061129f565b816001811461679b57600281146167a5576167c1565b600191505061129f565b60ff8411156167b6576167b661631b565b50506001821b61129f565b5060208310610133831016604e8410600b84101617156167e4575081810a61129f565b6167ee8383616726565b80600019048211156168025761680261631b565b029392505050565b6000610a1e60ff841683616769565b60008261683657634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761129f5761129f61631b565b60006020828403121561686457600080fd5b8151610a1e81615cfc565b60006001600160401b0380831681810361688b5761688b61631b565b6001019392505050565b61ffff8616815260a0602082015260006168b260a0830187616592565b82810360408401526168c48187615d52565b60608401959095525050608001529392505050565b61ffff60f01b8360f01b168152600082516168fb816002850160208701615d2e565b919091016002019392505050565b60006020828403121561691b57600080fd5b81516001600160401b038082111561693257600080fd5b9083019060a0828603121561694657600080fd5b61694e615eec565b82516001600160481b038116811461696557600080fd5b808252506020830151602082015260408301516040820152606083015161698b81615c54565b60608201526080830151828111156169a257600080fd5b6169ae8782860161638d565b60808301525095945050505050565b6000602082840312156169cf57600080fd5b8151610a1e81615c81565b6000602082840312156169ec57600080fd5b815160028110610a1e57600080fd5b600060208284031215616a0d57600080fd5b8151610a1e81615c54565b601f821115610a6157600081815260208120601f850160051c81016020861015616a3f5750805b601f850160051c820191505b81811015616a5e57828155600101616a4b565b505050505050565b81516001600160401b03811115616a7f57616a7f615eae565b616a9381616a8d84546162a8565b84616a18565b602080601f831160018114616ac85760008415616ab05750858301515b600019600386901b1c1916600185901b178555616a5e565b600085815260208120601f198616915b82811015616af757888601518255948401946001909101908401616ad8565b5085821015616b155787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122056d2462e558fcf95103cbb7f7f9ce9556b81553a6c4493b19395ab8f104d8a7364736f6c63430008130033"; + +type NttManagerConstructorParams = + | [linkLibraryAddresses: NttManagerLibraryAddresses, signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: NttManagerConstructorParams +): xs is ConstructorParameters => { + return ( + typeof xs[0] === "string" || + (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) || + "_isInterface" in xs[0] + ); +}; + +export class NttManager__factory extends ContractFactory { + constructor(...args: NttManagerConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + const [linkLibraryAddresses, signer] = args; + super( + _abi, + NttManager__factory.linkBytecode(linkLibraryAddresses), + signer + ); + } + } + + static linkBytecode( + linkLibraryAddresses: NttManagerLibraryAddresses + ): string { + let linkedBytecode = _bytecode; + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__", "g"), + linkLibraryAddresses[ + "src/libraries/TransceiverStructs.sol:TransceiverStructs" + ] + .replace(/^0x/, "") + .toLowerCase() + ); + + return linkedBytecode; + } + + override getDeployTransaction( + _token: AddressLike, + _mode: BigNumberish, + _chainId: BigNumberish, + _rateLimitDuration: BigNumberish, + _skipRateLimiting: boolean, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction( + _token, + _mode, + _chainId, + _rateLimitDuration, + _skipRateLimiting, + overrides || {} + ); + } + override deploy( + _token: AddressLike, + _mode: BigNumberish, + _chainId: BigNumberish, + _rateLimitDuration: BigNumberish, + _skipRateLimiting: boolean, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy( + _token, + _mode, + _chainId, + _rateLimitDuration, + _skipRateLimiting, + overrides || {} + ) as Promise< + NttManager & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): NttManager__factory { + return super.connect(runner) as NttManager__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): NttManagerInterface { + return new Interface(_abi) as NttManagerInterface; + } + static connect(address: string, runner?: ContractRunner | null): NttManager { + return new Contract(address, _abi, runner) as unknown as NttManager; + } +} + +export interface NttManagerLibraryAddresses { + ["src/libraries/TransceiverStructs.sol:TransceiverStructs"]: string; +} diff --git a/evm/ts/src/ethers-contracts/2_0_0/factories/WormholeTransceiver__factory.ts b/evm/ts/src/ethers-contracts/2_0_0/factories/WormholeTransceiver__factory.ts new file mode 100644 index 000000000..ec777c5a3 --- /dev/null +++ b/evm/ts/src/ethers-contracts/2_0_0/factories/WormholeTransceiver__factory.ts @@ -0,0 +1,1141 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + BigNumberish, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../common.js"; +import type { + WormholeTransceiver, + WormholeTransceiverInterface, +} from "../WormholeTransceiver.js"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "nttManager", + type: "address", + internalType: "address", + }, + { + name: "wormholeCoreBridge", + type: "address", + internalType: "address", + }, + { + name: "_consistencyLevel", + type: "uint8", + internalType: "uint8", + }, + { + name: "_customConsistencyLevel", + type: "uint8", + internalType: "uint8", + }, + { + name: "_additionalBlocks", + type: "uint16", + internalType: "uint16", + }, + { + name: "_customConsistencyLevelAddress", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "WORMHOLE_TRANSCEIVER_VERSION", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "additionalBlocks", + inputs: [], + outputs: [ + { + name: "", + type: "uint16", + internalType: "uint16", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "consistencyLevel", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "uint8", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "customConsistencyLevel", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "uint8", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "customConsistencyLevelAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "encodeWormholeTransceiverInstruction", + inputs: [ + { + name: "instruction", + type: "tuple", + internalType: + "struct IWormholeTransceiver.WormholeTransceiverInstruction", + components: [ + { + name: "shouldSkipRelayerSend", + type: "bool", + internalType: "bool", + }, + ], + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "getMigratesImmutables", + inputs: [], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getNttManagerOwner", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getNttManagerToken", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getTransceiverType", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "getWormholePeer", + inputs: [ + { + name: "chainId", + type: "uint16", + internalType: "uint16", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "initialize", + inputs: [], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "isPaused", + inputs: [], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "isVAAConsumed", + inputs: [ + { + name: "hash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "migrate", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "nttManager", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "nttManagerToken", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "owner", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "parseWormholeTransceiverInstruction", + inputs: [ + { + name: "encoded", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "instruction", + type: "tuple", + internalType: + "struct IWormholeTransceiver.WormholeTransceiverInstruction", + components: [ + { + name: "shouldSkipRelayerSend", + type: "bool", + internalType: "bool", + }, + ], + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "pauser", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "quoteDeliveryPrice", + inputs: [ + { + name: "targetChain", + type: "uint16", + internalType: "uint16", + }, + { + name: "instruction", + type: "tuple", + internalType: "struct TransceiverStructs.TransceiverInstruction", + components: [ + { + name: "index", + type: "uint8", + internalType: "uint8", + }, + { + name: "payload", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "receiveMessage", + inputs: [ + { + name: "encodedMessage", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "sendMessage", + inputs: [ + { + name: "recipientChain", + type: "uint16", + internalType: "uint16", + }, + { + name: "instruction", + type: "tuple", + internalType: "struct TransceiverStructs.TransceiverInstruction", + components: [ + { + name: "index", + type: "uint8", + internalType: "uint8", + }, + { + name: "payload", + type: "bytes", + internalType: "bytes", + }, + ], + }, + { + name: "nttManagerMessage", + type: "bytes", + internalType: "bytes", + }, + { + name: "recipientNttManagerAddress", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "refundAddress", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "setWormholePeer", + inputs: [ + { + name: "peerChainId", + type: "uint16", + internalType: "uint16", + }, + { + name: "peerContract", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "transferOwnership", + inputs: [ + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferPauserCapability", + inputs: [ + { + name: "newPauser", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferTransceiverOwnership", + inputs: [ + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "upgrade", + inputs: [ + { + name: "newImplementation", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "wormhole", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "contract IWormhole", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "AdminChanged", + inputs: [ + { + name: "previousAdmin", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "newAdmin", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "BeaconUpgraded", + inputs: [ + { + name: "beacon", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Initialized", + inputs: [ + { + name: "version", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "NotPaused", + inputs: [ + { + name: "notPaused", + type: "bool", + indexed: false, + internalType: "bool", + }, + ], + 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: "paused", + type: "bool", + indexed: false, + internalType: "bool", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "PauserTransferred", + inputs: [ + { + name: "oldPauser", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "newPauser", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ReceivedMessage", + inputs: [ + { + name: "digest", + type: "bytes32", + indexed: false, + internalType: "bytes32", + }, + { + name: "emitterChainId", + type: "uint16", + indexed: false, + internalType: "uint16", + }, + { + name: "emitterAddress", + type: "bytes32", + indexed: false, + internalType: "bytes32", + }, + { + name: "sequence", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RelayingInfo", + inputs: [ + { + name: "relayingType", + type: "uint8", + indexed: false, + internalType: "uint8", + }, + { + name: "refundAddress", + type: "bytes32", + indexed: false, + internalType: "bytes32", + }, + { + name: "deliveryPayment", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "SendTransceiverMessage", + inputs: [ + { + name: "recipientChain", + type: "uint16", + indexed: false, + internalType: "uint16", + }, + { + name: "message", + type: "tuple", + indexed: false, + internalType: "struct TransceiverStructs.TransceiverMessage", + components: [ + { + name: "sourceNttManagerAddress", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "recipientNttManagerAddress", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "nttManagerPayload", + type: "bytes", + internalType: "bytes", + }, + { + name: "transceiverPayload", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + anonymous: false, + }, + { + type: "event", + name: "SetWormholePeer", + inputs: [ + { + name: "chainId", + type: "uint16", + indexed: false, + internalType: "uint16", + }, + { + name: "peerContract", + type: "bytes32", + indexed: false, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Upgraded", + inputs: [ + { + name: "implementation", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "CallerNotNttManager", + inputs: [ + { + name: "caller", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "CallerNotRelayer", + inputs: [ + { + name: "caller", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "CannotRenounceTransceiverOwnership", + inputs: [ + { + name: "currentOwner", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "CannotTransferTransceiverOwnership", + inputs: [ + { + name: "currentOwner", + type: "address", + internalType: "address", + }, + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "InvalidBoolVal", + inputs: [ + { + name: "val", + type: "uint8", + internalType: "uint8", + }, + ], + }, + { + type: "error", + name: "InvalidFork", + inputs: [ + { + name: "evmChainId", + type: "uint256", + internalType: "uint256", + }, + { + name: "blockChainId", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "InvalidInitialization", + inputs: [], + }, + { + type: "error", + name: "InvalidPauser", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "InvalidVaa", + inputs: [ + { + name: "reason", + type: "string", + internalType: "string", + }, + ], + }, + { + type: "error", + name: "InvalidWormholeChainIdZero", + inputs: [], + }, + { + type: "error", + name: "InvalidWormholePeer", + inputs: [ + { + name: "chainId", + type: "uint16", + internalType: "uint16", + }, + { + name: "peerAddress", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "InvalidWormholePeerZeroAddress", + inputs: [], + }, + { + type: "error", + name: "LengthMismatch", + inputs: [ + { + name: "encodedLength", + type: "uint256", + internalType: "uint256", + }, + { + name: "expectedLength", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "NotInitializing", + inputs: [], + }, + { + type: "error", + name: "NotMigrating", + inputs: [], + }, + { + type: "error", + name: "OnlyDelegateCall", + inputs: [], + }, + { + 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: "PeerAlreadySet", + inputs: [ + { + name: "chainId", + type: "uint16", + internalType: "uint16", + }, + { + name: "peerAddress", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "ReentrancyGuardReentrantCall", + inputs: [], + }, + { + type: "error", + name: "RequireContractIsNotPaused", + inputs: [], + }, + { + type: "error", + name: "RequireContractIsPaused", + inputs: [], + }, + { + type: "error", + name: "TransferAlreadyCompleted", + inputs: [ + { + name: "vaaHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "UnexpectedAdditionalMessages", + inputs: [], + }, + { + type: "error", + name: "UnexpectedDeployer", + inputs: [ + { + name: "deployer", + type: "address", + internalType: "address", + }, + { + name: "caller", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "UnexpectedRecipientNttManagerAddress", + inputs: [ + { + name: "recipientNttManagerAddress", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "expectedRecipientNttManagerAddress", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, +] as const; + +const _bytecode = + "0x6101c06040523480156200001257600080fd5b506040516200317e3803806200317e8339810160408190526200003591620001eb565b858585858585856200004662000108565b306080526001600160a01b03811660a081905260408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa15801562000095573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000bb919062000274565b6001600160a01b0390811660c0523360e0529586166101805250466101a05260ff93841661010052919092166101205261ffff909116610140521661016052506200029995505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620001595760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001b95780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b80516001600160a01b0381168114620001d457600080fd5b919050565b805160ff81168114620001d457600080fd5b60008060008060008060c087890312156200020557600080fd5b6200021087620001bc565b95506200022060208801620001bc565b94506200023060408801620001d9565b93506200024060608801620001d9565b9250608087015161ffff811681146200025857600080fd5b91506200026860a08801620001bc565b90509295509295509295565b6000602082840312156200028757600080fd5b6200029282620001bc565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051612da5620003d96000396000611ea101526000818161045a0152818161091f0152818161122001528181611533015281816115be015281816118c60152611d880152600081816105880152611ccc0152600081816104e60152611c8f01526000818161026c0152611c6e0152600081816105f1015281816109b7015281816112530152818161196801528181611c400152611e1a015260008181611a220152611a5e01526000818161021b015281816103b801528181611b8901526120580152600081816102b20152818161072a015281816107b901528181610d4501528181611783015281816117b80152818161180b01528181611ad001528181611af701528181611bb00152611fb6015260006114840152612da56000f3fe6080604052600436106101c25760003560e01c806381e8ec7f116100f7578063a0926b2a11610095578063d8d2841811610064578063d8d28418146105ca578063e8dfd508146105df578063f2fde38b14610613578063f953cec71461063357600080fd5b8063a0926b2a14610530578063b187bd2614610561578063b25b2f7514610576578063b5634c73146105aa57600080fd5b80638fd3ab80116100d15780638fd3ab8014610491578063935dec07146104a65780639d592c4c146104d45780639fd0506d1461051b57600080fd5b806381e8ec7f1461041757806384acd1bb146104485780638da5cb5b1461047c57600080fd5b806358f709ba11610164578063694977d71161013e578063694977d7146103a95780637ab56403146103dc57806380eb3239146103ef5780638129fc1c1461040f57600080fd5b806358f709ba1461031857806366152efc14610338578063689f90c31461038457600080fd5b806324cf2586116101a057806324cf25861461025a57806324fb21db146102a057806348b330d6146102d45780634b5b05051461030557600080fd5b8063036de8af146101c75780630900f010146101e95780630b4a1e8914610209575b600080fd5b3480156101d357600080fd5b506101e76101e23660046122a0565b610653565b005b3480156101f557600080fd5b506101e76102043660046122a0565b6106bf565b34801561021557600080fd5b5061023d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561026657600080fd5b5061028e7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610251565b3480156102ac57600080fd5b5061023d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e057600080fd5b506102f46102ef3660046123d2565b6106d3565b604051905115158152602001610251565b6101e76103133660046124a6565b610717565b34801561032457600080fd5b506101e76103333660046122a0565b6107ae565b34801561034457600080fd5b5061037761035336600461253b565b516040805191151560f81b6020830152805160018184030181526021909201905290565b60405161025191906125d6565b34801561039057600080fd5b50610399610802565b6040519015158152602001610251565b3480156103b557600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061023d565b6101e76103ea3660046125e9565b610815565b3480156103fb57600080fd5b5061039961040a366004612615565b610a7b565b6101e7610a99565b34801561042357600080fd5b50610377604051806040016040528060058152602001640312e342e360dc1b81525081565b34801561045457600080fd5b5061023d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048857600080fd5b5061023d610b9a565b34801561049d57600080fd5b506101e7610bc8565b3480156104b257600080fd5b506104c66104c136600461262e565b610cda565b604051908152602001610251565b3480156104e057600080fd5b506105087f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610251565b34801561052757600080fd5b5061023d610cfe565b34801561053c57600080fd5b50604080518082019091526008815267776f726d686f6c6560c01b6020820152610377565b34801561056d57600080fd5b50610399610d17565b34801561058257600080fd5b5061023d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b657600080fd5b506104c66105c536600461264b565b610d2c565b3480156105d657600080fd5b5061023d610d41565b3480156105eb57600080fd5b5061028e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561061f57600080fd5b506101e761062e3660046122a0565b610dca565b34801561063f57600080fd5b506101e761064e3660046123d2565b610dfc565b61066361065e610b9a565b610eec565b600061066d610f35565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef690600090a3505050565b6106c7610f63565b6106d081610f97565b50565b60408051602081019091526000815281516000036106f45760008152919050565b600061070083826110a5565b9015158352905061071183826110fa565b50919050565b61071f61112c565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461076f5760405163c5aa615360e01b81523360048201526024015b60405180910390fd5b61077e85343385858989611176565b6107a760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107f95760405163c5aa615360e01b8152336004820152602401610766565b6106d08161137f565b600061080c6113f0565b5460ff16919050565b61081d610f63565b8161ffff1660000361084257604051630f7662c960e21b815260040160405180910390fd5b806108605760405163137063ef60e11b815260040160405180910390fd5b600061086a61141e565b61ffff841660009081526020919091526040902054905080156108ad5760405163b55eeae960e01b815261ffff8416600482015260248101829052604401610766565b816108b661141e565b61ffff858116600081815260209384526040808220959095558451606081018652630c7e33e160e11b8152938401918252838501878152945163077650fb60e51b815284516001600160e01b0319166004820152915190921660248201529251604484015290917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169163b19a437e9134919073__$93083e246e55d56d98f3df2872cd16bfd0$__9063eeca1f6090606401600060405180830381865af415801561098d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109b591908101906126df565b7f00000000000000000000000000000000000000000000000000000000000000006040518563ffffffff1660e01b81526004016109f493929190612713565b60206040518083038185885af1158015610a12573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a379190612761565b506040805161ffff86168152602081018590527fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d326466910160405180910390a150505050565b6000610a8561144c565b600092835260205250604090205460ff1690565b610aa161147a565b600080516020612d508339815191528054600160401b810460ff1615906001600160401b0316600081158015610ad45750825b90506000826001600160401b03166001148015610af05750303b155b905081158015610afe575080155b15610b1c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b4657845460ff60401b1916600160401b1785555b610b4e6114c3565b83156107a757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b610bd061147a565b600080516020612d50833981519152546001600160401b0316610bf4906001612792565b600080516020612d508339815191528054600160401b900460ff1680610c27575080546001600160401b03808416911610155b15610c455760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610c6e6114d3565b5460ff16610c8f57604051632866815360e11b815260040160405180910390fd5b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b6000610ce461141e565b61ffff909216600090815260209290925250604090205490565b6000610d08610f35565b546001600160a01b0316919050565b600080610d22611501565b5460021492915050565b6000610d38838361152f565b90505b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc591906127b9565b905090565b610dd2610f63565b6001600160a01b0381166107f957604051631e4fbdf760e01b815260006004820152602401610766565b60006060610e09836115b3565b6040805160808101825260008082526020820152606091810182905281810191909152919350915060408051606080820183526000808352602083015291810191909152604051630453806b60e11b815273__$93083e246e55d56d98f3df2872cd16bfd0$__906308a700d690610e8d906309945ff160e41b9087906004016127d6565b600060405180830381865af4158015610eaa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ed2919081019061287a565b815160208301519294509092506107a79186919084611779565b33610ef5610cfe565b6001600160a01b031614158015610f1557506001600160a01b0381163314155b156106d05760405163e2a08e5d60e01b8152336004820152602401610766565b600080610d3b60017fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124a612939565b33610f6c610b9a565b6001600160a01b031614610f955760405163118cdaa760e01b8152336004820152602401610766565b565b610f9f61147a565b610fa88161187c565b6000610fb26114d3565b805490915060ff1615610fc757610fc761294c565b805460ff191660011781556040805163011fa75760e71b815290513091638fd3ab8091600480830192600092919082900301818387803b15801561100a57600080fd5b505af115801561101e573d6000803e3d6000fd5b50505050306001600160a01b031663689f90c36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611084919061296d565b611090576110906118bc565b61109a60006119fc565b805460ff1916905550565b6000806000806110be8686600191810182015192910190565b909250905060fe8216156110ea5760405163f7a37b0760e01b815260ff83166004820152602401610766565b60ff909116925090509250929050565b808251146111285781516040516355c5b3e360e11b8152600481019190915260248101829052604401610766565b5050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161117057604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60408051600080825260208201928390526304616c8f60e21b909252819073__$93083e246e55d56d98f3df2872cd16bfd0$__90631185b23c906111d5906309945ff160e41b906001600160a01b038c16908b9089906024810161298a565b600060405180830381865af41580156111f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261121a91908101906129d6565b915091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b19a437e896000847f00000000000000000000000000000000000000000000000000000000000000006040518563ffffffff1660e01b815260040161129093929190612713565b60206040518083038185885af11580156112ae573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112d39190612761565b5060408051600080825260208201529081018990527fc3192e083c87c556db539f071d8a298869f487e951327b5616a6f85ae3da958e9060600160405180910390a17f79376a0dc6cbfe6f6f8f89ad24c262a8c6233f8df181d3fe5abb2e2442e8c7388983604051611346929190612a2f565b60405180910390a1505050505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b600080610d3b60017f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cc612939565b600080610d3b60017f48c66ef0992b4bcc14f2551075db9459fc23bf706abb76034f1c66c1ba284685612939565b600080610d3b60017f5e6aacb3f16e5b01c8b072a0ab4c38e919266014a45db863ee64a4580fb3e7e3612939565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f9557604051633c64f99360e21b815260040160405180910390fd5b6114cb611a17565b610f95611aaa565b600080610d3b60017f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4f612939565b600080610d3b60017f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258023612939565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631a90a2196040518163ffffffff1660e01b8152600401602060405180830381865afa15801561158f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190612a8f565b6000606060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c0fd8bde876040518263ffffffff1660e01b815260040161160891906125d6565b600060405180830381865afa158015611625573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261164d9190810190612b9b565b925092509250816116735780604051634771719b60e11b815260040161076691906125d6565b61167c83611e9a565b6116af5760608301516080840151604051633cd8e72b60e11b815261ffff90921660048301526024820152604401610766565b6116bd836101400151610a7b565b156116e457826101400151604051632d30ec0360e21b815260040161076691815260200190565b6116f2836101400151611ede565b7ff6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0836101400151846060015185608001518660a0015160405161175b949392919093845261ffff92909216602084015260408301526001600160401b0316606082015260800190565b60405180910390a182606001518360e0015194509450505050915091565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682146117f4576040516339dee99160e11b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600482015260248101839052604401610766565b60405163275e091560e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639d7824549061184490879087908690600401612cf2565b600060405180830381600087803b15801561185e57600080fd5b505af1158015611872573d6000803e3d6000fd5b5050505050505050565b61188581611f06565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6118c4611fb4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316306001600160a01b03166384acd1bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561192c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195091906127b9565b6001600160a01b0316146119665761196661294c565b7f000000000000000000000000000000000000000000000000000000000000000060ff16306001600160a01b031663e8dfd5086040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ec9190612d32565b60ff1614610f9557610f9561294c565b80611a056113f0565b805460ff191691151591909117905550565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a9157604051636345072160e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152336024820152604401610766565b611a996120f8565b610f9533611aa5610d41565b612108565b6040805160a08101909152639c23bd3b60e01b8152600090602081016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634b4fd03b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b779190612d32565b60ff1681526020016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633b97e8566040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c309190612d32565b60ff16815250905060cb61ffff167f000000000000000000000000000000000000000000000000000000000000000060ff1603611d32576000611cb37f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612122565b60405163ca23addf60e01b8152600481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ca23addf90602401600060405180830381600087803b158015611d1857600080fd5b505af1158015611d2c573d6000803e3d6000fd5b50505050505b604080516301529f6160e21b815282516001600160e01b0319166004820152602083015160248201529082015160ff90811660448301526060830151606483015260808301511660848201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b19a437e90349060009073__$93083e246e55d56d98f3df2872cd16bfd0$__9063054a7d849060a401600060405180830381865af4158015611df0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e1891908101906126df565b7f00000000000000000000000000000000000000000000000000000000000000006040518563ffffffff1660e01b8152600401611e5793929190612713565b60206040518083038185885af1158015611e75573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111289190612761565b6000611ec57f000000000000000000000000000000000000000000000000000000000000000061218e565b8160800151611ed78360600151610cda565b1492915050565b6001611ee861144c565b60009283526020526040909120805460ff1916911515919091179055565b6001600160a01b0381163b611f735760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610766565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316306001600160a01b03166324fb21db6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561201c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204091906127b9565b6001600160a01b0316146120565761205661294c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316306001600160a01b0316630b4a1e896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e291906127b9565b6001600160a01b031614610f9557610f9561294c565b6121006121b7565b610f956121ee565b6121106121b7565b612119826121f6565b61112881612207565b60408051600160f81b602082015260f884901b6001600160f81b03191660218201526001600160f01b031960f084901b16602282015260006024820181905291829182910160408051601f198184030181529190529050612184816000612218565b5095945050505050565b4681146106d0576040516377d879fb60e01b815260048101829052466024820152604401610766565b600080516020612d5083398151915254600160401b900460ff16610f9557604051631afcd79f60e31b815260040160405180910390fd5b6113596121b7565b6121fe6121b7565b6106d08161223e565b61220f6121b7565b6106d081612283565b6000806000806122318686602091810182015192910190565b9097909650945050505050565b6122466121b7565b6000612250611501565b6001815590506000612260610f35565b80546001600160a01b0319166001600160a01b0394909416939093179092555050565b610dd26121b7565b6001600160a01b03811681146106d057600080fd5b6000602082840312156122b257600080fd5b81356122bd8161228b565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156122fc576122fc6122c4565b60405290565b60405161016081016001600160401b03811182821017156122fc576122fc6122c4565b604051601f8201601f191681016001600160401b038111828210171561234d5761234d6122c4565b604052919050565b60006001600160401b0382111561236e5761236e6122c4565b50601f01601f191660200190565b600082601f83011261238d57600080fd5b81356123a061239b82612355565b612325565b8181528460208386010111156123b557600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156123e457600080fd5b81356001600160401b038111156123fa57600080fd5b6124068482850161237c565b949350505050565b61ffff811681146106d057600080fd5b60ff811681146106d057600080fd5b60006040828403121561243f57600080fd5b604051604081016001600160401b038282108183111715612462576124626122c4565b81604052829350843591506124768261241e565b9082526020840135908082111561248c57600080fd5b506124998582860161237c565b6020830152505092915050565b600080600080600060a086880312156124be57600080fd5b85356124c98161240e565b945060208601356001600160401b03808211156124e557600080fd5b6124f189838a0161242d565b9550604088013591508082111561250757600080fd5b506125148882890161237c565b9598949750949560608101359550608001359392505050565b80151581146106d057600080fd5b60006020828403121561254d57600080fd5b604051602081018181106001600160401b038211171561256f5761256f6122c4565b604052823561257d8161252d565b81529392505050565b60005b838110156125a1578181015183820152602001612589565b50506000910152565b600081518084526125c2816020860160208601612586565b601f01601f19169290920160200192915050565b602081526000610d3860208301846125aa565b600080604083850312156125fc57600080fd5b82356126078161240e565b946020939093013593505050565b60006020828403121561262757600080fd5b5035919050565b60006020828403121561264057600080fd5b81356122bd8161240e565b6000806040838503121561265e57600080fd5b82356126698161240e565b915060208301356001600160401b0381111561268457600080fd5b6126908582860161242d565b9150509250929050565b600082601f8301126126ab57600080fd5b81516126b961239b82612355565b8181528460208386010111156126ce57600080fd5b612406826020830160208701612586565b6000602082840312156126f157600080fd5b81516001600160401b0381111561270757600080fd5b6124068482850161269a565b63ffffffff8416815260606020820152600061273260608301856125aa565b905060ff83166040830152949350505050565b80516001600160401b038116811461275c57600080fd5b919050565b60006020828403121561277357600080fd5b610d3882612745565b634e487b7160e01b600052601160045260246000fd5b6001600160401b038181168382160190808211156127b2576127b261277c565b5092915050565b6000602082840312156127cb57600080fd5b81516122bd8161228b565b63ffffffff60e01b8316815260406020820152600061240660408301846125aa565b60006080828403121561280a57600080fd5b6128126122da565b9050815181526020820151602082015260408201516001600160401b038082111561283c57600080fd5b6128488583860161269a565b6040840152606084015191508082111561286157600080fd5b5061286e8482850161269a565b60608301525092915050565b6000806040838503121561288d57600080fd5b82516001600160401b03808211156128a457600080fd5b6128b0868387016127f8565b935060208501519150808211156128c657600080fd5b90840190606082870312156128da57600080fd5b6040516060810181811083821117156128f5576128f56122c4565b8060405250825181526020830151602082015260408301518281111561291a57600080fd5b6129268882860161269a565b6040830152508093505050509250929050565b81810381811115610d3b57610d3b61277c565b634e487b7160e01b600052600160045260246000fd5b805161275c8161252d565b60006020828403121561297f57600080fd5b81516122bd8161252d565b63ffffffff60e01b8616815284602082015283604082015260a0606082015260006129b860a08301856125aa565b82810360808401526129ca81856125aa565b98975050505050505050565b600080604083850312156129e957600080fd5b82516001600160401b0380821115612a0057600080fd5b612a0c868387016127f8565b93506020850151915080821115612a2257600080fd5b506126908582860161269a565b61ffff8316815260406020820152815160408201526020820151606082015260006040830151608080840152612a6860c08401826125aa565b90506060840151603f198483030160a0850152612a8582826125aa565b9695505050505050565b600060208284031215612aa157600080fd5b5051919050565b805161275c8161241e565b805163ffffffff8116811461275c57600080fd5b805161275c8161240e565b600082601f830112612ae357600080fd5b815160206001600160401b03821115612afe57612afe6122c4565b612b0c818360051b01612325565b82815260079290921b84018101918181019086841115612b2b57600080fd5b8286015b84811015612b905760808189031215612b485760008081fd5b612b506122da565b815181528482015185820152604080830151612b6b8161241e565b90820152606082810151612b7e8161241e565b90820152835291830191608001612b2f565b509695505050505050565b600080600060608486031215612bb057600080fd5b83516001600160401b0380821115612bc757600080fd5b908501906101608288031215612bdc57600080fd5b612be4612302565b612bed83612aa8565b8152612bfb60208401612ab3565b6020820152612c0c60408401612ab3565b6040820152612c1d60608401612ac7565b606082015260808301516080820152612c3860a08401612745565b60a0820152612c4960c08401612aa8565b60c082015260e083015182811115612c6057600080fd5b612c6c8982860161269a565b60e083015250610100612c80818501612ab3565b908201526101208381015183811115612c9857600080fd5b612ca48a828701612ad2565b918301919091525061014083810151908201529450612cc560208701612962565b93506040860151915080821115612cdb57600080fd5b50612ce88682870161269a565b9150509250925092565b61ffff8416815282602082015260606040820152815160608201526020820151608082015260006040830151606060a0840152612a8560c08401826125aa565b600060208284031215612d4457600080fd5b81516122bd8161241e56fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201f5ad70c78f34aae9c68ddc35ca758f248d0ae9ec993dd5e35a3362c1478dcd264736f6c63430008130033"; + +type WormholeTransceiverConstructorParams = + | [linkLibraryAddresses: WormholeTransceiverLibraryAddresses, signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: WormholeTransceiverConstructorParams +): xs is ConstructorParameters => { + return ( + typeof xs[0] === "string" || + (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) || + "_isInterface" in xs[0] + ); +}; + +export class WormholeTransceiver__factory extends ContractFactory { + constructor(...args: WormholeTransceiverConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + const [linkLibraryAddresses, signer] = args; + super( + _abi, + WormholeTransceiver__factory.linkBytecode(linkLibraryAddresses), + signer + ); + } + } + + static linkBytecode( + linkLibraryAddresses: WormholeTransceiverLibraryAddresses + ): string { + let linkedBytecode = _bytecode; + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__", "g"), + linkLibraryAddresses[ + "src/libraries/TransceiverStructs.sol:TransceiverStructs" + ] + .replace(/^0x/, "") + .toLowerCase() + ); + + return linkedBytecode; + } + + override getDeployTransaction( + nttManager: AddressLike, + wormholeCoreBridge: AddressLike, + _consistencyLevel: BigNumberish, + _customConsistencyLevel: BigNumberish, + _additionalBlocks: BigNumberish, + _customConsistencyLevelAddress: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction( + nttManager, + wormholeCoreBridge, + _consistencyLevel, + _customConsistencyLevel, + _additionalBlocks, + _customConsistencyLevelAddress, + overrides || {} + ); + } + override deploy( + nttManager: AddressLike, + wormholeCoreBridge: AddressLike, + _consistencyLevel: BigNumberish, + _customConsistencyLevel: BigNumberish, + _additionalBlocks: BigNumberish, + _customConsistencyLevelAddress: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy( + nttManager, + wormholeCoreBridge, + _consistencyLevel, + _customConsistencyLevel, + _additionalBlocks, + _customConsistencyLevelAddress, + overrides || {} + ) as Promise< + WormholeTransceiver & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect( + runner: ContractRunner | null + ): WormholeTransceiver__factory { + return super.connect(runner) as WormholeTransceiver__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): WormholeTransceiverInterface { + return new Interface(_abi) as WormholeTransceiverInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): WormholeTransceiver { + return new Contract( + address, + _abi, + runner + ) as unknown as WormholeTransceiver; + } +} + +export interface WormholeTransceiverLibraryAddresses { + ["src/libraries/TransceiverStructs.sol:TransceiverStructs"]: string; +} diff --git a/evm/ts/src/ethers-contracts/2_0_0/factories/index.ts b/evm/ts/src/ethers-contracts/2_0_0/factories/index.ts new file mode 100644 index 000000000..719b3f2b8 --- /dev/null +++ b/evm/ts/src/ethers-contracts/2_0_0/factories/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { NttManager__factory } from "./NttManager__factory.js"; +export { WormholeTransceiver__factory } from "./WormholeTransceiver__factory.js"; diff --git a/evm/ts/src/ethers-contracts/2_0_0/index.ts b/evm/ts/src/ethers-contracts/2_0_0/index.ts new file mode 100644 index 000000000..48078a607 --- /dev/null +++ b/evm/ts/src/ethers-contracts/2_0_0/index.ts @@ -0,0 +1,8 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { NttManager } from "./NttManager.js"; +export type { WormholeTransceiver } from "./WormholeTransceiver.js"; +export * as factories from "./factories/index.js"; +export { NttManager__factory } from "./factories/NttManager__factory.js"; +export { WormholeTransceiver__factory } from "./factories/WormholeTransceiver__factory.js"; diff --git a/evm/ts/src/ethers-contracts/index.ts b/evm/ts/src/ethers-contracts/index.ts index 2e32dc983..5ef4aa26e 100644 --- a/evm/ts/src/ethers-contracts/index.ts +++ b/evm/ts/src/ethers-contracts/index.ts @@ -1,6 +1,7 @@ import * as __0_1_0 from "./0_1_0/index.js"; import * as __1_0_0 from "./1_0_0/index.js"; import * as __1_1_0 from "./1_1_0/index.js"; +import * as __2_0_0 from "./2_0_0/index.js"; const _0_1_0 = { NttManager: { @@ -29,4 +30,13 @@ const _1_1_0 = { }, }; -export { _0_1_0, _1_0_0, _1_1_0 }; +const _2_0_0 = { + NttManager: { + connect: __2_0_0.NttManager__factory.connect, + }, + NttTransceiver: { + connect: __2_0_0.WormholeTransceiver__factory.connect, + }, +}; + +export { _0_1_0, _1_0_0, _1_1_0, _2_0_0 }; diff --git a/evm/ts/src/ntt.ts b/evm/ts/src/ntt.ts index 6540b3f60..12ee91877 100644 --- a/evm/ts/src/ntt.ts +++ b/evm/ts/src/ntt.ts @@ -134,10 +134,16 @@ export class EvmNttWormholeTranceiver } async isEvmChain(chain: Chain): Promise { + if (!("isWormholeEvmChain" in this.transceiver)) return false; return await this.transceiver.isWormholeEvmChain(toChainId(chain)); } async *setIsEvmChain(chain: Chain, isEvm: boolean) { + if (!("setIsWormholeEvmChain" in this.transceiver)) { + throw new Error( + "setIsWormholeEvmChain is not supported by this ABI version" + ); + } const tx = await this.transceiver.setIsWormholeEvmChain.populateTransaction( toChainId(chain), isEvm @@ -159,12 +165,18 @@ export class EvmNttWormholeTranceiver } async isWormholeRelayingEnabled(destChain: Chain): Promise { + if (!("isWormholeRelayingEnabled" in this.transceiver)) return false; return await this.transceiver.isWormholeRelayingEnabled( toChainId(destChain) ); } async *setIsWormholeRelayingEnabled(destChain: Chain, enabled: boolean) { + if (!("setIsWormholeRelayingEnabled" in this.transceiver)) { + throw new Error( + "setIsWormholeRelayingEnabled is not supported by this ABI version" + ); + } const tx = await this.transceiver.setIsWormholeRelayingEnabled.populateTransaction( toChainId(destChain), @@ -177,12 +189,18 @@ export class EvmNttWormholeTranceiver } async isSpecialRelayingEnabled(destChain: Chain): Promise { + if (!("isSpecialRelayingEnabled" in this.transceiver)) return false; return await this.transceiver.isSpecialRelayingEnabled( toChainId(destChain) ); } async *setIsSpecialRelayingEnabled(destChain: Chain, enabled: boolean) { + if (!("setIsSpecialRelayingEnabled" in this.transceiver)) { + throw new Error( + "setIsSpecialRelayingEnabled is not supported by this ABI version" + ); + } const tx = await this.transceiver.setIsSpecialRelayingEnabled.populateTransaction( toChainId(destChain),