import { TAddress } from '../../models/TAddress'; import { TAccount } from '../../models/TAccount'; import { ClientEventsStream, TClientEventsStreamData } from '../../clients/ClientEventsStream'; import { ContractBase } from '../../contracts/ContractBase'; import { TxWriter } from '../../txs/TxWriter'; import { ITxLogItem } from '../../txs/receipt/ITxLogItem'; import { Web3Client } from '../../clients/Web3Client'; import { IBlockchainExplorer } from '../../explorer/IBlockchainExplorer'; import { SubjectStream } from '../../class/SubjectStream'; import type { TAbiItem } from '../../types/TAbi'; import type { TEth } from '../../models/TEth'; import type { TOverrideReturns } from '../../utils/types'; export declare class IOutbox extends ContractBase { address: TEth.Address; client: Web3Client; explorer: IBlockchainExplorer; constructor(address?: TEth.Address, client?: Web3Client, explorer?: IBlockchainExplorer); Types: TIOutboxTypes; $meta: { class: string; }; OUTBOX_VERSION(): Promise; bridge(): Promise; calculateItemHash(l2Sender: TAddress, to: TAddress, l2Block: bigint, l1Block: bigint, l2Timestamp: bigint, value: bigint, data: TEth.Hex): Promise; calculateMerkleRoot(proof: TEth.Hex[], path: bigint, item: TEth.Hex): Promise; executeTransaction(sender: TSender, proof: TEth.Hex[], index: bigint, l2Sender: TAddress, to: TAddress, l2Block: bigint, l1Block: bigint, l2Timestamp: bigint, value: bigint, data: TEth.Hex): Promise; executeTransactionSimulation(sender: TSender, index: bigint, l2Sender: TAddress, to: TAddress, l2Block: bigint, l1Block: bigint, l2Timestamp: bigint, value: bigint, data: TEth.Hex): Promise; isSpent(index: bigint): Promise; l2ToL1Block(): Promise; l2ToL1EthBlock(): Promise; l2ToL1OutputId(): Promise; l2ToL1Sender(): Promise; l2ToL1Timestamp(): Promise; rollup(): Promise; roots(input0: TEth.Hex): Promise; spent(input0: bigint): Promise; updateSendRoot(sender: TSender, sendRoot: TEth.Hex, l2BlockHash: TEth.Hex): Promise; $call(): IIOutboxTxCaller; $signed(): TOverrideReturns>; $data(): IIOutboxTxData; $gas(): TOverrideReturns>; onTransaction(method: TMethod, options: Parameters[0]): SubjectStream<{ tx: TEth.Tx; block: TEth.Block; calldata: { method: TMethod; arguments: TIOutboxTypes['Methods'][TMethod]['arguments']; }; }>; onLog(event: keyof TEvents, cb?: (event: TClientEventsStreamData) => void): ClientEventsStream; getPastLogs(events: TEventName[], options?: TEventLogOptions>): Promise, TEventName>[]>; getPastLogs(event: TEventName, options?: TEventLogOptions>): Promise, TEventName>[]>; onOutBoxTransactionExecuted(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; onSendRootUpdated(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; extractLogsOutBoxTransactionExecuted(tx: TEth.TxReceipt): ITxLogItem>[]; extractLogsSendRootUpdated(tx: TEth.TxReceipt): ITxLogItem>[]; getPastLogsOutBoxTransactionExecuted(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: { to?: TAddress; l2Sender?: TAddress; zero?: bigint; }; }): Promise>[]>; getPastLogsSendRootUpdated(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: { blockHash?: TEth.Hex; outputRoot?: TEth.Hex; }; }): Promise>[]>; abi: TAbiItem[]; } type TSender = TAccount & { value?: string | number | bigint; }; type TEventLogOptions = { fromBlock?: number | Date; toBlock?: number | Date; params?: TParams; }; export type TIOutboxTypes = { Events: { OutBoxTransactionExecuted: { outputParams: { to: TAddress; l2Sender: TAddress; zero: bigint; transactionIndex: bigint; }; outputArgs: [to: TAddress, l2Sender: TAddress, zero: bigint, transactionIndex: bigint]; }; SendRootUpdated: { outputParams: { blockHash: TEth.Hex; outputRoot: TEth.Hex; }; outputArgs: [blockHash: TEth.Hex, outputRoot: TEth.Hex]; }; }; Methods: { OUTBOX_VERSION: { method: "OUTBOX_VERSION"; arguments: []; }; bridge: { method: "bridge"; arguments: []; }; calculateItemHash: { method: "calculateItemHash"; arguments: [l2Sender: TAddress, to: TAddress, l2Block: bigint, l1Block: bigint, l2Timestamp: bigint, value: bigint, data: TEth.Hex]; }; calculateMerkleRoot: { method: "calculateMerkleRoot"; arguments: [proof: TEth.Hex[], path: bigint, item: TEth.Hex]; }; executeTransaction: { method: "executeTransaction"; arguments: [proof: TEth.Hex[], index: bigint, l2Sender: TAddress, to: TAddress, l2Block: bigint, l1Block: bigint, l2Timestamp: bigint, value: bigint, data: TEth.Hex]; }; executeTransactionSimulation: { method: "executeTransactionSimulation"; arguments: [index: bigint, l2Sender: TAddress, to: TAddress, l2Block: bigint, l1Block: bigint, l2Timestamp: bigint, value: bigint, data: TEth.Hex]; }; isSpent: { method: "isSpent"; arguments: [index: bigint]; }; l2ToL1Block: { method: "l2ToL1Block"; arguments: []; }; l2ToL1EthBlock: { method: "l2ToL1EthBlock"; arguments: []; }; l2ToL1OutputId: { method: "l2ToL1OutputId"; arguments: []; }; l2ToL1Sender: { method: "l2ToL1Sender"; arguments: []; }; l2ToL1Timestamp: { method: "l2ToL1Timestamp"; arguments: []; }; rollup: { method: "rollup"; arguments: []; }; roots: { method: "roots"; arguments: [input0: TEth.Hex]; }; spent: { method: "spent"; arguments: [input0: bigint]; }; updateSendRoot: { method: "updateSendRoot"; arguments: [sendRoot: TEth.Hex, l2BlockHash: TEth.Hex]; }; }; }; interface IIOutboxTxCaller { executeTransaction(sender: TSender, proof: TEth.Hex[], index: bigint, l2Sender: TAddress, to: TAddress, l2Block: bigint, l1Block: bigint, l2Timestamp: bigint, value: bigint, data: TEth.Hex): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; executeTransactionSimulation(sender: TSender, index: bigint, l2Sender: TAddress, to: TAddress, l2Block: bigint, l1Block: bigint, l2Timestamp: bigint, value: bigint, data: TEth.Hex): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; updateSendRoot(sender: TSender, sendRoot: TEth.Hex, l2BlockHash: TEth.Hex): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; } interface IIOutboxTxData { executeTransaction(sender: TSender, proof: TEth.Hex[], index: bigint, l2Sender: TAddress, to: TAddress, l2Block: bigint, l1Block: bigint, l2Timestamp: bigint, value: bigint, data: TEth.Hex): Promise; executeTransactionSimulation(sender: TSender, index: bigint, l2Sender: TAddress, to: TAddress, l2Block: bigint, l1Block: bigint, l2Timestamp: bigint, value: bigint, data: TEth.Hex): Promise; updateSendRoot(sender: TSender, sendRoot: TEth.Hex, l2BlockHash: TEth.Hex): Promise; } type TEvents = TIOutboxTypes['Events']; type TEventParams = Partial; type TEventArguments = Partial; export {};