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 declare namespace OpenMulticall { type Slot0Struct = { sqrtPriceX96: BigNumberish; tick: BigNumberish; }; type Slot0StructOutput = [sqrtPriceX96: bigint, tick: bigint] & { sqrtPriceX96: bigint; tick: bigint; }; type TickDataStruct = { tick: BigNumberish; liquidityNet: BigNumberish; }; type TickDataStructOutput = [tick: bigint, liquidityNet: bigint] & { tick: bigint; liquidityNet: bigint; }; type CallStruct = { target: AddressLike; callData: BytesLike; }; type CallStructOutput = [target: string, callData: string] & { target: string; callData: string; }; type ResultStruct = { success: boolean; gasUsed: BigNumberish; returnData: BytesLike; }; type ResultStructOutput = [ success: boolean, gasUsed: bigint, returnData: string ] & { success: boolean; gasUsed: bigint; returnData: string; }; } export interface OpenMulticallInterface extends Interface { getFunction(nameOrSignature: "createBlock" | "getBalance" | "getGasLeft" | "getV3PoolData" | "tryAggregate"): FunctionFragment; getEvent(nameOrSignatureOrTopic: "Create"): EventFragment; encodeFunctionData(functionFragment: "createBlock", values?: undefined): string; encodeFunctionData(functionFragment: "getBalance", values: [AddressLike]): string; encodeFunctionData(functionFragment: "getGasLeft", values?: undefined): string; encodeFunctionData(functionFragment: "getV3PoolData", values: [AddressLike, BigNumberish, BigNumberish]): string; encodeFunctionData(functionFragment: "tryAggregate", values: [boolean, BigNumberish, OpenMulticall.CallStruct[]]): string; decodeFunctionResult(functionFragment: "createBlock", data: BytesLike): Result; decodeFunctionResult(functionFragment: "getBalance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "getGasLeft", data: BytesLike): Result; decodeFunctionResult(functionFragment: "getV3PoolData", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tryAggregate", data: BytesLike): Result; } export declare namespace CreateEvent { type InputTuple = []; type OutputTuple = []; interface OutputObject { } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export interface OpenMulticall extends BaseContract { connect(runner?: ContractRunner | null): OpenMulticall; waitForDeployment(): Promise; interface: OpenMulticallInterface; 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; createBlock: TypedContractMethod<[], [bigint], "view">; getBalance: TypedContractMethod<[target: AddressLike], [bigint], "view">; getGasLeft: TypedContractMethod<[], [bigint], "view">; getV3PoolData: TypedContractMethod<[ poolAddress: AddressLike, start: BigNumberish, end: BigNumberish ], [ [ OpenMulticall.Slot0StructOutput, OpenMulticall.TickDataStructOutput[], bigint, bigint ] & { slot0: OpenMulticall.Slot0StructOutput; tickDatas: OpenMulticall.TickDataStructOutput[]; liquidity: bigint; fee: bigint; } ], "view">; tryAggregate: TypedContractMethod<[ requireSuccess: boolean, gasLimit: BigNumberish, calls: OpenMulticall.CallStruct[] ], [ OpenMulticall.ResultStructOutput[] ], "payable">; getFunction(key: string | FunctionFragment): T; getFunction(nameOrSignature: "createBlock"): TypedContractMethod<[], [bigint], "view">; getFunction(nameOrSignature: "getBalance"): TypedContractMethod<[target: AddressLike], [bigint], "view">; getFunction(nameOrSignature: "getGasLeft"): TypedContractMethod<[], [bigint], "view">; getFunction(nameOrSignature: "getV3PoolData"): TypedContractMethod<[ poolAddress: AddressLike, start: BigNumberish, end: BigNumberish ], [ [ OpenMulticall.Slot0StructOutput, OpenMulticall.TickDataStructOutput[], bigint, bigint ] & { slot0: OpenMulticall.Slot0StructOutput; tickDatas: OpenMulticall.TickDataStructOutput[]; liquidity: bigint; fee: bigint; } ], "view">; getFunction(nameOrSignature: "tryAggregate"): TypedContractMethod<[ requireSuccess: boolean, gasLimit: BigNumberish, calls: OpenMulticall.CallStruct[] ], [ OpenMulticall.ResultStructOutput[] ], "payable">; getEvent(key: "Create"): TypedContractEvent; filters: { "Create()": TypedContractEvent; Create: TypedContractEvent; }; }