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 ICrossDomainMessenger extends ContractBase { address: TEth.Address; client: Web3Client; explorer: IBlockchainExplorer; constructor(address?: TEth.Address, client?: Web3Client, explorer?: IBlockchainExplorer); Types: TICrossDomainMessengerTypes; $meta: { class: string; }; sendMessage(sender: TSender, _target: TAddress, _message: TEth.Hex, _gasLimit: number): Promise; xDomainMessageSender(): Promise; $call(): IICrossDomainMessengerTxCaller; $signed(): TOverrideReturns>; $data(): IICrossDomainMessengerTxData; $gas(): TOverrideReturns>; onTransaction(method: TMethod, options: Parameters[0]): SubjectStream<{ tx: TEth.Tx; block: TEth.Block; calldata: { method: TMethod; arguments: TICrossDomainMessengerTypes['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>[]>; onFailedRelayedMessage(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; onRelayedMessage(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; onSentMessage(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; extractLogsFailedRelayedMessage(tx: TEth.TxReceipt): ITxLogItem>[]; extractLogsRelayedMessage(tx: TEth.TxReceipt): ITxLogItem>[]; extractLogsSentMessage(tx: TEth.TxReceipt): ITxLogItem>[]; getPastLogsFailedRelayedMessage(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: { msgHash?: TEth.Hex; }; }): Promise>[]>; getPastLogsRelayedMessage(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: { msgHash?: TEth.Hex; }; }): Promise>[]>; getPastLogsSentMessage(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: { target?: TAddress; }; }): Promise>[]>; abi: TAbiItem[]; } type TSender = TAccount & { value?: string | number | bigint; }; type TEventLogOptions = { fromBlock?: number | Date; toBlock?: number | Date; params?: TParams; }; export type TICrossDomainMessengerTypes = { Events: { FailedRelayedMessage: { outputParams: { msgHash: TEth.Hex; }; outputArgs: [msgHash: TEth.Hex]; }; RelayedMessage: { outputParams: { msgHash: TEth.Hex; }; outputArgs: [msgHash: TEth.Hex]; }; SentMessage: { outputParams: { target: TAddress; _sender: TAddress; message: TEth.Hex; messageNonce: bigint; gasLimit: bigint; }; outputArgs: [target: TAddress, _sender: TAddress, message: TEth.Hex, messageNonce: bigint, gasLimit: bigint]; }; }; Methods: { sendMessage: { method: "sendMessage"; arguments: [_target: TAddress, _message: TEth.Hex, _gasLimit: number]; }; xDomainMessageSender: { method: "xDomainMessageSender"; arguments: []; }; }; }; interface IICrossDomainMessengerTxCaller { sendMessage(sender: TSender, _target: TAddress, _message: TEth.Hex, _gasLimit: number): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; } interface IICrossDomainMessengerTxData { sendMessage(sender: TSender, _target: TAddress, _message: TEth.Hex, _gasLimit: number): Promise; } type TEvents = TICrossDomainMessengerTypes['Events']; type TEventParams = Partial; type TEventArguments = Partial; export {};