@lightlink-network/ll-sdk
Version:
[LightLink] Tools for working with LightLink
204 lines (203 loc) • 10.3 kB
TypeScript
import type { BedrockCrossChainMessageProof, BedrockOutputData } from '@eth-optimism/core-utils';
import type { BlockTag, TransactionRequest, TransactionResponse } from '@ethersproject/abstract-provider';
import { Provider } from '@ethersproject/abstract-provider';
import type { Signer } from '@ethersproject/abstract-signer';
import type { CallOverrides, Overrides, PayableOverrides } from 'ethers';
import { BigNumber, ethers } from 'ethers';
import type { AddressLike, BridgeAdapterData, BridgeAdapters, CrossChainMessage, CrossChainMessageProof, CrossChainMessageRequest, IBridgeAdapter, LowLevelMessage, MessageLike, MessageReceipt, MessageRequestLike, NumberLike, OEContracts, OEContractsLike, ProvenWithdrawal, SignerOrProviderLike, StateRoot, StateRootBatch, TokenBridgeMessage, TransactionLike } from './interfaces';
import { MessageDirection, MessageStatus } from './interfaces';
import type { DeepPartial } from './utils';
export declare class CrossChainMessenger {
l1SignerOrProvider: Signer | Provider;
l2SignerOrProvider: Signer | Provider;
l1ChainId: number;
l2ChainId: number;
contracts: OEContracts;
bridges: BridgeAdapters;
depositConfirmationBlocks: number;
l1BlockTimeSeconds: number;
bedrock: boolean;
lightlink: boolean;
private _outputCache;
constructor(opts: {
l1SignerOrProvider: SignerOrProviderLike;
l2SignerOrProvider: SignerOrProviderLike;
l1ChainId: NumberLike;
l2ChainId: NumberLike;
depositConfirmationBlocks?: NumberLike;
l1BlockTimeSeconds?: NumberLike;
contracts?: DeepPartial<OEContractsLike>;
bridges?: BridgeAdapterData;
bedrock?: boolean;
lightlink?: 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>;
getMessageLightLinkOutput(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>;
depositETH(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>;
approval(l1Token: AddressLike, l2Token: AddressLike, opts?: {
signer?: Signer;
}): Promise<BigNumber>;
approveERC20(l1Token: AddressLike, l2Token: AddressLike, amount: NumberLike, opts?: {
signer?: Signer;
overrides?: Overrides;
}): Promise<TransactionResponse>;
depositERC20(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>;
depositETH: (amount: NumberLike, opts?: {
recipient?: AddressLike;
l2GasLimit?: NumberLike;
overrides?: PayableOverrides;
}, isEstimatingGas?: boolean) => Promise<TransactionRequest>;
withdrawETH: (amount: NumberLike, opts?: {
recipient?: AddressLike;
overrides?: Overrides;
}) => Promise<TransactionRequest>;
approveERC20: (l1Token: AddressLike, l2Token: AddressLike, amount: NumberLike, opts?: {
overrides?: Overrides;
}) => Promise<TransactionRequest>;
depositERC20: (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>;
depositETH: (amount: NumberLike, opts?: {
recipient?: AddressLike;
l2GasLimit?: NumberLike;
overrides?: CallOverrides;
}) => Promise<BigNumber>;
withdrawETH: (amount: NumberLike, opts?: {
recipient?: AddressLike;
overrides?: CallOverrides;
}) => Promise<BigNumber>;
approveERC20: (l1Token: AddressLike, l2Token: AddressLike, amount: NumberLike, opts?: {
overrides?: CallOverrides;
}) => Promise<BigNumber>;
depositERC20: (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>;
};
}