@tokamak-network/thanos-sdk
Version:
Tools for working with Thanos
88 lines (87 loc) • 4.81 kB
TypeScript
import { Provider, TransactionResponse, TransactionRequest, TransactionReceipt } from '@ethersproject/abstract-provider';
import { Signer } from '@ethersproject/abstract-signer';
import { BigNumber, PayableOverrides, ethers } from 'ethers';
import { BedrockOutputData, BedrockCrossChainMessageProof } from '@tokamak-network/core-utils';
import { DepositTransactionRequest, OEContracts, OEContractsLike, NumberLike, SignerOrProviderLike, ProvenWithdrawal, WithdrawalMessageInfo, WithdrawalTransactionRequest, MessageStatus, StateRoot, StateRootBatch } from './interfaces';
import { DeepPartial } from './utils';
export declare class Portals {
l1SignerOrProvider: Signer | Provider;
l2SignerOrProvider: Signer | Provider;
l1ChainId: number;
l2ChainId: number;
contracts: OEContracts;
depositConfirmationBlocks: number;
l1BlockTimeSeconds: number;
bedrock: boolean;
private _outputCache;
constructor(opts: {
l1SignerOrProvider: SignerOrProviderLike;
l2SignerOrProvider: SignerOrProviderLike;
l1ChainId: NumberLike;
l2ChainId: NumberLike;
depositConfirmationBlocks?: NumberLike;
l1BlockTimeSeconds?: NumberLike;
contracts?: DeepPartial<OEContractsLike>;
bedrock?: boolean;
});
get l1Provider(): Provider;
get l2Provider(): Provider;
get l1Signer(): Signer;
get l2Signer(): Signer;
getL1BlockNumber(): Promise<number>;
getMessageStatus(txReceipt: TransactionReceipt): Promise<MessageStatus>;
getL1ToL2MessageStatusByReceipt(txReceipt: TransactionReceipt): Promise<MessageStatus>;
getStateBatchAppendedEventByBatchIndex(batchIndex: number): Promise<ethers.Event | null>;
getStateBatchAppendedEventByTransactionIndex(transactionIndex: number): Promise<ethers.Event | null>;
getStateRootBatchByTransactionIndex(transactionIndex: number): Promise<StateRootBatch | null>;
getMessageStateRoot(transactionHash: string): Promise<StateRoot | null>;
getMessageBedrockOutput(l2BlockNumber: number): Promise<BedrockOutputData | null>;
getL2ToL1MessageStatusByReceipt(txReceipt: TransactionReceipt): Promise<MessageStatus>;
calculateRelayedDepositTxID(txReceipt: TransactionReceipt): Promise<string>;
calculateWithdrawalMessage(txReceipt: TransactionReceipt): Promise<WithdrawalMessageInfo>;
calculateWithdrawalMessageByL2TxHash(transactionHash: string): Promise<WithdrawalMessageInfo>;
waitForMessageStatus(txReceipt: TransactionReceipt, status: MessageStatus, opts?: {
pollIntervalMs?: number;
timeoutMs?: number;
}): Promise<void>;
getChallengePeriodSeconds(): Promise<number>;
getBedrockMessageProof(withdrawalMessageInfo: WithdrawalMessageInfo): Promise<BedrockCrossChainMessageProof>;
getProvenWithdrawal(withdrawalHash: string): Promise<ProvenWithdrawal>;
isValidOutputRoot(outputRoot: string, l2BlockNumber: number): Promise<boolean>;
getFinalizedWithdrawalStatus(withdrawalHash: string): Promise<boolean>;
depositTransaction(request: DepositTransactionRequest, opts?: {
signer?: Signer;
}): Promise<TransactionResponse>;
initiateWithdrawal(request: WithdrawalTransactionRequest, opts?: {
signer?: Signer;
}): Promise<TransactionResponse>;
proveWithdrawalTransaction(message: WithdrawalMessageInfo, opts?: {
signer?: Signer;
}): Promise<TransactionResponse>;
proveWithdrawalTransactionUsingL2Tx(transactionHash: string, opts?: {
signer?: Signer;
}): Promise<TransactionResponse>;
finalizeWithdrawalTransaction(message: WithdrawalMessageInfo, opts?: {
signer?: Signer;
}): Promise<TransactionResponse>;
finalizeWithdrawalTransactionUsingL2Tx(transactionHash: string, opts?: {
signer?: Signer;
}): Promise<TransactionResponse>;
fpac(): Promise<boolean>;
populateTransaction: {
depositTransaction: (request: DepositTransactionRequest) => Promise<TransactionRequest>;
initiateWithdrawal: (request: WithdrawalTransactionRequest) => Promise<TransactionRequest>;
proveWithdrawalTransaction: (message: WithdrawalMessageInfo, opts?: {
overrides?: PayableOverrides;
}) => Promise<TransactionRequest>;
finalizeWithdrawalTransaction: (message: WithdrawalMessageInfo) => Promise<TransactionRequest>;
};
estimateGas: {
depositTransaction: (request: DepositTransactionRequest) => Promise<BigNumber>;
initiateWithdrawal: (request: WithdrawalTransactionRequest) => Promise<BigNumber>;
proveWithdrawalTransaction: (message: WithdrawalMessageInfo, opts?: {
overrides?: PayableOverrides;
}) => Promise<BigNumber>;
finalizeWithdrawalTransaction: (message: WithdrawalMessageInfo) => Promise<BigNumber>;
};
}