@tokamak-network/thanos-sdk
Version:
Tools for working with Thanos
212 lines (211 loc) • 5.98 kB
TypeScript
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;