UNPKG

@tokamak-network/thanos-sdk

Version:
212 lines (211 loc) 5.98 kB
import { Provider, TransactionReceipt, TransactionResponse } from '@ethersproject/abstract-provider'; import { Signer } from '@ethersproject/abstract-signer'; import { BigNumber, Contract } from 'ethers'; import { CrossChainMessenger } from '../cross-chain-messenger'; import { IBridgeAdapter } from './bridge-adapter'; export declare enum L1ChainID { MAINNET = 1, GOERLI = 5, SEPOLIA = 11155111, HARDHAT_LOCAL = 31337, BEDROCK_LOCAL_DEVNET = 900 } export declare enum L2ChainID { OPTIMISM = 10, OPTIMISM_GOERLI = 420, OPTIMISM_SEPOLIA = 11155420, OPTIMISM_HARDHAT_LOCAL = 31337, OPTIMISM_HARDHAT_DEVNET = 17, OPTIMISM_LOCAL_DEVNET = 901, OPTIMISM_BEDROCK_ALPHA_TESTNET = 28528, BASE_GOERLI = 84531, BASE_SEPOLIA = 84532, BASE_MAINNET = 8453, ZORA_GOERLI = 999, ZORA_MAINNET = 7777777, MODE_SEPOLIA = 919, MODE_MAINNET = 34443, THANOS_SEPOLIA = 111551119090 } export interface OEL1Contracts { AddressManager: Contract; L1CrossDomainMessenger: Contract; L1StandardBridge: Contract; StateCommitmentChain: Contract; CanonicalTransactionChain: Contract; BondManager: Contract; OptimismPortal: Contract; L2OutputOracle: Contract; OptimismPortal2?: Contract; DisputeGameFactory?: Contract; FaultDisputeGame?: Contract; L1UsdcBridge?: Contract; } export interface OEL2Contracts { L2CrossDomainMessenger: Contract; L2StandardBridge: Contract; L2ToL1MessagePasser: Contract; OVM_L1BlockNumber: Contract; OVM_L2ToL1MessagePasser: Contract; OVM_DeployerWhitelist: Contract; OVM_ETH: Contract; OVM_GasPriceOracle: Contract; OVM_SequencerFeeVault: Contract; WETH: Contract; BedrockMessagePasser: Contract; L2UsdcBridge: Contract; } export interface OEContracts { l1: OEL1Contracts; l2: OEL2Contracts; } export type OEL1ContractsLike = { [K in keyof OEL1Contracts]: AddressLike; }; export type OEL2ContractsLike = { [K in keyof OEL2Contracts]: AddressLike; }; export interface OEContractsLike { l1: OEL1ContractsLike; l2: OEL2ContractsLike; } export interface BridgeAdapterData { [name: string]: { Adapter: new (opts: { messenger: CrossChainMessenger; l1Bridge: AddressLike; l2Bridge: AddressLike; }) => IBridgeAdapter; l1Bridge: AddressLike; l2Bridge: AddressLike; }; } export interface BridgeAdapters { [name: string]: IBridgeAdapter; } export declare enum MessageStatus { UNCONFIRMED_L1_TO_L2_MESSAGE = 0, FAILED_L1_TO_L2_MESSAGE = 1, STATE_ROOT_NOT_PUBLISHED = 2, READY_TO_PROVE = 3, IN_CHALLENGE_PERIOD = 4, READY_FOR_RELAY = 5, RELAYED = 6 } export declare enum MessageDirection { L1_TO_L2 = 0, L2_TO_L1 = 1 } export interface DepositTransactionRequest { to: AddressLike; mint: BigNumber; value: BigNumber; gasLimit: BigNumber; isCreation: boolean; data: string; } export interface WithdrawalTransactionRequest { target: AddressLike; value: BigNumber; gasLimit: BigNumber; data: string; } export interface WithdrawalMessageInfo { sender: string; target: string; message: string; messageNonce: BigNumber; value: BigNumber; minGasLimit: BigNumber; withdrawalHash: string; l2BlockNumber: number; } export interface CrossChainMessageRequest { direction: MessageDirection; target: string; message: string; } export interface CoreCrossChainMessage { sender: string; target: string; message: string; messageNonce: BigNumber; value: BigNumber; minGasLimit: BigNumber; } export interface CrossChainMessage extends CoreCrossChainMessage { direction: MessageDirection; logIndex: number; blockNumber: number; transactionHash: string; } export type LowLevelMessage = CoreCrossChainMessage; export interface TokenBridgeMessage { direction: MessageDirection; from: string; to: string; l1Token: string; l2Token: string; amount: BigNumber; data: string; logIndex: number; blockNumber: number; transactionHash: string; } export interface WithdrawalEntry { MessagePassed: any; } export declare enum MessageReceiptStatus { RELAYED_FAILED = 0, RELAYED_SUCCEEDED = 1 } export interface MessageReceipt { receiptStatus: MessageReceiptStatus; transactionReceipt: TransactionReceipt; } export interface LegacyProvenWithdrawal { outputRoot: string; timestamp: BigNumber; l2BlockNumber: BigNumber; } export interface FPACProvenWithdrawal { proofSubmitter: string; disputeGameProxy: string; timestamp: BigNumber; } export type ProvenWithdrawal = LegacyProvenWithdrawal | FPACProvenWithdrawal; export interface StateRootBatchHeader { batchIndex: BigNumber; batchRoot: string; batchSize: BigNumber; prevTotalElements: BigNumber; extraData: string; } export interface StateRoot { stateRoot: string; stateRootIndexInBatch: number; batch: StateRootBatch; } export interface StateRootBatch { blockNumber: number; header: StateRootBatchHeader; stateRoots: string[]; } export interface CrossChainMessageProof { stateRoot: string; stateRootBatchHeader: StateRootBatchHeader; stateRootProof: { index: number; siblings: string[]; }; stateTrieWitness: string; storageTrieWitness: string; } export type TransactionLike = string | TransactionReceipt | TransactionResponse; export type MessageLike = CrossChainMessage | TransactionLike | TokenBridgeMessage; export type MessageRequestLike = CrossChainMessageRequest | CrossChainMessage | TransactionLike | TokenBridgeMessage; export type ProviderLike = string | Provider; export type SignerLike = string | Signer; export type SignerOrProviderLike = SignerLike | ProviderLike; export type AddressLike = string | Contract; export type NumberLike = string | number | BigNumber;