@mantleio/sdk
Version:
[Mantle] Tools for working with Mantle
179 lines (178 loc) • 5.18 kB
TypeScript
import { Provider, TransactionReceipt, TransactionResponse } from '@ethersproject/abstract-provider';
import { Signer } from '@ethersproject/abstract-signer';
import { Contract, BigNumber } from 'ethers';
import { CrossChainMessenger } from '../cross-chain-messenger';
import { IBridgeAdapter } from './bridge-adapter';
import { IERC721BridgeAdapter } from './erc721-bridge-adapter';
export declare enum L1ChainID {
MAINNET = 1,
GOERLI = 5,
SEPOLIA = 11155111,
HARDHAT_LOCAL = 31337,
BEDROCK_LOCAL_DEVNET = 900
}
export declare enum L2ChainID {
MANTLE = 5000,
MANTLE_TESTNET = 5001,
MANTLE_GOERLIQA = 1705003,
MANTLE_KOVAN = 69,
MANTLE_HARDHAT_LOCAL = 31337,
MANTLE_HARDHAT_DEVNET = 17,
MANTLE_V2_LOCAL_DEVNET = 901,
MANTLE_SEPOLIA_TESTNET = 5003
}
export interface OEL1Contracts {
AddressManager: Contract;
L1CrossDomainMessenger: Contract;
L1StandardBridge: Contract;
L1ERC721Bridge: Contract;
StateCommitmentChain: Contract;
CanonicalTransactionChain: Contract;
BondManager: Contract;
Rollup: Contract;
OptimismPortal: Contract;
L2OutputOracle: Contract;
}
export interface OEL2Contracts {
L2CrossDomainMessenger: Contract;
L2StandardBridge: Contract;
L2ERC721Bridge: Contract;
L2ToL1MessagePasser: Contract;
BVM_L1BlockNumber: Contract;
BVM_L2ToL1MessagePasser: Contract;
BVM_DeployerWhitelist: Contract;
BVM_ETH: Contract;
BVM_GasPriceOracle: Contract;
BVM_SequencerFeeVault: Contract;
WETH: Contract;
BVM_MANTLE: Contract;
TssRewardContract: Contract;
BedrockMessagePasser: 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 | IERC721BridgeAdapter;
l1Bridge: AddressLike;
l2Bridge: AddressLike;
};
}
export interface BridgeAdapters {
[name: string]: IBridgeAdapter | IERC721BridgeAdapter;
}
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 CrossChainMessageRequest {
direction: MessageDirection;
target: string;
message: string;
}
export interface CoreCrossChainMessage {
sender: string;
target: string;
message: string;
messageNonce: BigNumber;
mntValue: BigNumber;
ethValue: 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;
tokenId?: 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 ProvenWithdrawal {
outputRoot: string;
timestamp: BigNumber;
l2BlockNumber: BigNumber;
}
export interface StateRootBatchHeader {
batchIndex: BigNumber;
batchRoot: string;
batchSize: BigNumber;
prevTotalElements: BigNumber;
signature: string;
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;