UNPKG

@tokamak-network/thanos-sdk

Version:
239 lines (238 loc) 11.6 kB
import { Provider, BlockTag, TransactionResponse, TransactionRequest } from '@ethersproject/abstract-provider'; import { Signer } from '@ethersproject/abstract-signer'; import { ethers, BigNumber, Overrides, CallOverrides, PayableOverrides } from 'ethers'; import { BedrockOutputData, BedrockCrossChainMessageProof } from '@tokamak-network/core-utils'; import { OEContracts, OEContractsLike, MessageLike, MessageRequestLike, TransactionLike, AddressLike, NumberLike, SignerOrProviderLike, CrossChainMessage, CrossChainMessageRequest, CrossChainMessageProof, MessageDirection, MessageStatus, TokenBridgeMessage, MessageReceipt, BridgeAdapterData, BridgeAdapters, StateRoot, StateRootBatch, IBridgeAdapter, ProvenWithdrawal, LowLevelMessage } from './interfaces'; import { DeepPartial } from './utils'; export declare class CrossChainMessenger { l1SignerOrProvider: Signer | Provider; l2SignerOrProvider: Signer | Provider; l1ChainId: number; l2ChainId: number; nativeTokenAddress: string; contracts: OEContracts; bridges: BridgeAdapters; depositConfirmationBlocks: number; l1BlockTimeSeconds: number; bedrock: boolean; private _outputCache; constructor(opts: { l1SignerOrProvider: SignerOrProviderLike; l2SignerOrProvider: SignerOrProviderLike; l1ChainId: NumberLike; l2ChainId: NumberLike; nativeTokenAddress?: AddressLike; depositConfirmationBlocks?: NumberLike; l1BlockTimeSeconds?: NumberLike; contracts?: DeepPartial<OEContractsLike>; bridges?: BridgeAdapterData; bedrock?: boolean; }); get l1Provider(): Provider; get l2Provider(): Provider; get l1Signer(): Signer; get l2Signer(): Signer; fpac(): Promise<boolean>; getMessagesByTransaction(transaction: TransactionLike, opts?: { direction?: MessageDirection; }): Promise<CrossChainMessage[]>; toBedrockCrossChainMessage(message: MessageLike, messageIndex?: number): Promise<CrossChainMessage>; toLowLevelMessage(message: MessageLike, messageIndex?: number): Promise<LowLevelMessage>; getBridgeForTokenPair(l1Token: AddressLike, l2Token: AddressLike): Promise<IBridgeAdapter>; getDepositsByAddress(address: AddressLike, opts?: { fromBlock?: BlockTag; toBlock?: BlockTag; }): Promise<TokenBridgeMessage[]>; getWithdrawalsByAddress(address: AddressLike, opts?: { fromBlock?: BlockTag; toBlock?: BlockTag; }): Promise<TokenBridgeMessage[]>; toCrossChainMessage(message: MessageLike, messageIndex?: number): Promise<CrossChainMessage>; getMessageStatus(message: MessageLike, messageIndex?: number, fromBlockOrBlockHash?: BlockTag, toBlockOrBlockHash?: BlockTag): Promise<MessageStatus>; getMessageReceipt(message: MessageLike, messageIndex?: number, fromBlockOrBlockHash?: BlockTag, toBlockOrHash?: BlockTag): Promise<MessageReceipt>; waitForMessageReceipt(message: MessageLike, opts?: { fromBlockOrBlockHash?: BlockTag; toBlockOrHash?: BlockTag; confirmations?: number; pollIntervalMs?: number; timeoutMs?: number; }, messageIndex?: number): Promise<MessageReceipt>; waitForMessageStatus(message: MessageLike, status: MessageStatus, opts?: { fromBlockOrBlockHash?: BlockTag; toBlockOrBlockHash?: BlockTag; pollIntervalMs?: number; timeoutMs?: number; }, messageIndex?: number): Promise<void>; estimateL2MessageGasLimit(message: MessageRequestLike, opts?: { bufferPercent?: number; from?: string; }, messageIndex?: number): Promise<BigNumber>; estimateMessageWaitTimeSeconds(message: MessageLike, messageIndex?: number, fromBlockOrBlockHash?: BlockTag, toBlockOrBlockHash?: BlockTag): Promise<number>; getChallengePeriodSeconds(): Promise<number>; getProvenWithdrawal(withdrawalHash: string): Promise<ProvenWithdrawal | null>; isValidOutputRoot(outputRoot: string, l2BlockNumber: number): Promise<boolean>; getMessageBedrockOutput(message: MessageLike, messageIndex?: number): Promise<BedrockOutputData | null>; getMessageStateRoot(message: MessageLike, messageIndex?: number): Promise<StateRoot | null>; getStateBatchAppendedEventByBatchIndex(batchIndex: number): Promise<ethers.Event | null>; getStateBatchAppendedEventByTransactionIndex(transactionIndex: number): Promise<ethers.Event | null>; getStateRootBatchByTransactionIndex(transactionIndex: number): Promise<StateRootBatch | null>; getMessageProof(message: MessageLike, messageIndex?: number): Promise<CrossChainMessageProof>; getBedrockMessageProof(message: MessageLike, messageIndex?: number): Promise<BedrockCrossChainMessageProof>; sendMessage(message: CrossChainMessageRequest, opts?: { signer?: Signer; l2GasLimit?: NumberLike; overrides?: Overrides; }): Promise<TransactionResponse>; resendMessage(message: MessageLike, messageGasLimit: NumberLike, opts?: { signer?: Signer; overrides?: Overrides; }): Promise<TransactionResponse>; proveMessage(message: MessageLike, opts?: { signer?: Signer; overrides?: Overrides; }, messageIndex?: number): Promise<TransactionResponse>; finalizeMessage(message: MessageLike, opts?: { signer?: Signer; overrides?: PayableOverrides; }, messageIndex?: number): Promise<TransactionResponse>; bridgeETH(amount: NumberLike, opts?: { recipient?: AddressLike; signer?: Signer; l2GasLimit?: NumberLike; overrides?: Overrides; }): Promise<TransactionResponse>; withdrawETH(amount: NumberLike, opts?: { recipient?: AddressLike; signer?: Signer; overrides?: Overrides; }): Promise<TransactionResponse>; bridgeNativeToken(amount: NumberLike, opts?: { recipient?: AddressLike; signer?: Signer; l2GasLimit?: NumberLike; overrides?: Overrides; }): Promise<TransactionResponse>; withdrawNativeToken(amount: NumberLike, opts?: { recipient?: AddressLike; signer?: Signer; overrides?: Overrides; }): Promise<TransactionResponse>; approveNativeToken(amount: NumberLike, opts?: { signer?: Signer; overrides?: Overrides; }): Promise<TransactionResponse>; approval(l1Token: AddressLike, l2Token: AddressLike, opts?: { signer?: Signer; }): Promise<BigNumber>; approveERC20(l1Token: AddressLike, l2Token: AddressLike, amount: NumberLike, opts?: { signer?: Signer; overrides?: Overrides; }): Promise<TransactionResponse>; bridgeERC20(l1Token: AddressLike, l2Token: AddressLike, amount: NumberLike, opts?: { recipient?: AddressLike; signer?: Signer; l2GasLimit?: NumberLike; overrides?: CallOverrides; }): Promise<TransactionResponse>; withdrawERC20(l1Token: AddressLike, l2Token: AddressLike, amount: NumberLike, opts?: { recipient?: AddressLike; signer?: Signer; overrides?: Overrides; }): Promise<TransactionResponse>; populateTransaction: { sendMessage: (message: CrossChainMessageRequest, opts?: { l2GasLimit?: NumberLike; overrides?: Overrides; }) => Promise<TransactionRequest>; resendMessage: (message: MessageLike, messageGasLimit: NumberLike, opts?: { overrides?: Overrides; }, messageIndex?: number) => Promise<TransactionRequest>; proveMessage: (message: MessageLike, opts?: { overrides?: PayableOverrides; }, messageIndex?: number) => Promise<TransactionRequest>; finalizeMessage: (message: MessageLike, opts?: { overrides?: PayableOverrides; }, messageIndex?: number) => Promise<TransactionRequest>; bridgeETH: (amount: NumberLike, opts?: { recipient?: AddressLike; l2GasLimit?: NumberLike; overrides?: CallOverrides; }, isEstimatingGas?: boolean) => Promise<TransactionRequest>; withdrawETH: (amount: NumberLike, opts?: { recipient?: AddressLike; overrides?: Overrides; }) => Promise<TransactionRequest>; bridgeNativeToken: (amount: NumberLike, opts?: { recipient?: AddressLike; l2GasLimit?: NumberLike; overrides?: CallOverrides; }, isEstimatingGas?: boolean) => Promise<TransactionRequest>; withdrawNativeToken: (amount: NumberLike, opts?: { recipient?: AddressLike; overrides?: Overrides; }) => Promise<TransactionRequest>; approveNativeToken: (amount: NumberLike, opts?: { overrides?: Overrides; }) => Promise<TransactionRequest>; approveERC20: (l1Token: AddressLike, l2Token: AddressLike, amount: NumberLike, opts?: { overrides?: Overrides; }) => Promise<TransactionRequest>; bridgeERC20: (l1Token: AddressLike, l2Token: AddressLike, amount: NumberLike, opts?: { recipient?: AddressLike; l2GasLimit?: NumberLike; overrides?: CallOverrides; }, isEstimatingGas?: boolean) => Promise<TransactionRequest>; withdrawERC20: (l1Token: AddressLike, l2Token: AddressLike, amount: NumberLike, opts?: { recipient?: AddressLike; overrides?: Overrides; }) => Promise<TransactionRequest>; }; estimateGas: { sendMessage: (message: CrossChainMessageRequest, opts?: { l2GasLimit?: NumberLike; overrides?: CallOverrides; }) => Promise<BigNumber>; resendMessage: (message: MessageLike, messageGasLimit: NumberLike, opts?: { overrides?: CallOverrides; }) => Promise<BigNumber>; proveMessage: (message: MessageLike, opts?: { overrides?: CallOverrides; }, messageIndex?: number) => Promise<BigNumber>; finalizeMessage: (message: MessageLike, opts?: { overrides?: CallOverrides; }, messageIndex?: number) => Promise<BigNumber>; bridgeETH: (amount: NumberLike, opts?: { recipient?: AddressLike; l2GasLimit?: NumberLike; overrides?: CallOverrides; }) => Promise<BigNumber>; withdrawETH: (amount: NumberLike, opts?: { recipient?: AddressLike; overrides?: CallOverrides; }) => Promise<BigNumber>; bridgeNativeToken: (amount: NumberLike, opts?: { recipient?: AddressLike; l2GasLimit?: NumberLike; overrides?: CallOverrides; }) => Promise<BigNumber>; withdrawNativeToken: (amount: NumberLike, opts?: { recipient?: AddressLike; overrides?: CallOverrides; }) => Promise<BigNumber>; approveNativeToken: (amount: NumberLike, opts?: { overrides?: CallOverrides; }) => Promise<BigNumber>; approveERC20: (l1Token: AddressLike, l2Token: AddressLike, amount: NumberLike, opts?: { overrides?: CallOverrides; }) => Promise<BigNumber>; bridgeERC20: (l1Token: AddressLike, l2Token: AddressLike, amount: NumberLike, opts?: { recipient?: AddressLike; l2GasLimit?: NumberLike; overrides?: CallOverrides; }) => Promise<BigNumber>; withdrawERC20: (l1Token: AddressLike, l2Token: AddressLike, amount: NumberLike, opts?: { recipient?: AddressLike; overrides?: CallOverrides; }) => Promise<BigNumber>; }; }