import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, EventFragment, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers"; import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedLogDescription, TypedListener, TypedContractMethod } from "./common"; export type L2ToL1LogStruct = { l2ShardId: BigNumberish; isService: boolean; txNumberInBlock: BigNumberish; sender: AddressLike; key: BytesLike; value: BytesLike; }; export type L2ToL1LogStructOutput = [ l2ShardId: bigint, isService: boolean, txNumberInBlock: bigint, sender: string, key: string, value: string ] & { l2ShardId: bigint; isService: boolean; txNumberInBlock: bigint; sender: string; key: string; value: string; }; export interface IL1MessengerInterface extends Interface { getFunction(nameOrSignature: "requestBytecodeL1Publication" | "sendL2ToL1Log" | "sendToL1"): FunctionFragment; getEvent(nameOrSignatureOrTopic: "BytecodeL1PublicationRequested" | "L1MessageSent" | "L2ToL1LogSent"): EventFragment; encodeFunctionData(functionFragment: "requestBytecodeL1Publication", values: [BytesLike]): string; encodeFunctionData(functionFragment: "sendL2ToL1Log", values: [boolean, BytesLike, BytesLike]): string; encodeFunctionData(functionFragment: "sendToL1", values: [BytesLike]): string; decodeFunctionResult(functionFragment: "requestBytecodeL1Publication", data: BytesLike): Result; decodeFunctionResult(functionFragment: "sendL2ToL1Log", data: BytesLike): Result; decodeFunctionResult(functionFragment: "sendToL1", data: BytesLike): Result; } export declare namespace BytecodeL1PublicationRequestedEvent { type InputTuple = [_bytecodeHash: BytesLike]; type OutputTuple = [_bytecodeHash: string]; interface OutputObject { _bytecodeHash: string; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace L1MessageSentEvent { type InputTuple = [ _sender: AddressLike, _hash: BytesLike, _message: BytesLike ]; type OutputTuple = [_sender: string, _hash: string, _message: string]; interface OutputObject { _sender: string; _hash: string; _message: string; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace L2ToL1LogSentEvent { type InputTuple = [_l2log: L2ToL1LogStruct]; type OutputTuple = [_l2log: L2ToL1LogStructOutput]; interface OutputObject { _l2log: L2ToL1LogStructOutput; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export interface IL1Messenger extends BaseContract { connect(runner?: ContractRunner | null): IL1Messenger; waitForDeployment(): Promise; interface: IL1MessengerInterface; queryFilter(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise>>; queryFilter(filter: TypedDeferredTopicFilter, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise>>; on(event: TCEvent, listener: TypedListener): Promise; on(filter: TypedDeferredTopicFilter, listener: TypedListener): Promise; once(event: TCEvent, listener: TypedListener): Promise; once(filter: TypedDeferredTopicFilter, listener: TypedListener): Promise; listeners(event: TCEvent): Promise>>; listeners(eventName?: string): Promise>; removeAllListeners(event?: TCEvent): Promise; requestBytecodeL1Publication: TypedContractMethod<[ _bytecodeHash: BytesLike ], [ void ], "nonpayable">; sendL2ToL1Log: TypedContractMethod<[ _isService: boolean, _key: BytesLike, _value: BytesLike ], [ bigint ], "nonpayable">; sendToL1: TypedContractMethod<[_message: BytesLike], [string], "nonpayable">; getFunction(key: string | FunctionFragment): T; getFunction(nameOrSignature: "requestBytecodeL1Publication"): TypedContractMethod<[_bytecodeHash: BytesLike], [void], "nonpayable">; getFunction(nameOrSignature: "sendL2ToL1Log"): TypedContractMethod<[ _isService: boolean, _key: BytesLike, _value: BytesLike ], [ bigint ], "nonpayable">; getFunction(nameOrSignature: "sendToL1"): TypedContractMethod<[_message: BytesLike], [string], "nonpayable">; getEvent(key: "BytecodeL1PublicationRequested"): TypedContractEvent; getEvent(key: "L1MessageSent"): TypedContractEvent; getEvent(key: "L2ToL1LogSent"): TypedContractEvent; filters: { "BytecodeL1PublicationRequested(bytes32)": TypedContractEvent; BytecodeL1PublicationRequested: TypedContractEvent; "L1MessageSent(address,bytes32,bytes)": TypedContractEvent; L1MessageSent: TypedContractEvent; "L2ToL1LogSent(tuple)": TypedContractEvent; L2ToL1LogSent: TypedContractEvent; }; }