import { class_Dfr } from 'atma-utils'; import type { TAbiItem } from '../types/TAbi'; import type { TLogsRangeProgress, Web3Client } from '../clients/Web3Client'; import { TAddress } from '../models/TAddress'; import { ITxLogItem } from '../txs/receipt/ITxLogItem'; import { RpcTypes } from '../rpc/Rpc'; import { TEth } from '../models/TEth'; import { WClient } from '../clients/ClientPool'; export interface IContractReader { forBlock(mix: number | Date | undefined): IContractReader; forBlockNumber(blockNumber: number | undefined): IContractReader; forBlockAt(date: Date | undefined): IContractReader; readAsync(address: string, methodAbi: string | TAbiItem, ...params: any[]): Promise; } export declare class ContractReader implements IContractReader { client: Web3Client; private ctx?; private blockNumberTask; private options; constructor(client?: Web3Client, ctx?: { name?: string; }); forBlock(mix: number | Date | undefined): any; forBlockNumber(blockNumber: number | undefined): IContractReader; forBlockAt(date: Date | undefined): IContractReader; withAddress(address: TAddress): IContractReader; getStorageAt(address: TAddress, position: TEth.Hex | number | bigint): Promise<`0x${string}`>; readAsync(address: TEth.Address, methodAbi: string | TAbiItem, ...params: any[]): Promise; executeBatch(requestArr: T): Promise<{ -readonly [P in keyof T]: ContractReaderUtils.TIContractReadParamsInferred; }>; getLogsParsed(...args: Parameters): Promise; getLogs(filters: RpcTypes.Filter, options?: { streamed?: boolean; blockRangeLimits?: WClient['blockRangeLimits']; onProgress?(info: TLogsRangeProgress): any; }): Promise; getLogsFilter(abi: TAbiItem | string | '*' | TAbiItem[], options: { /** Can be UNDEFINED, then the logs will be searched globally */ address?: TAddress | TAddress[]; /** * "deployment": get the contracts deployment date to skip lots of blocks (in case we use pagination to fetch logs) */ fromBlock?: number | Date | 'deployment'; toBlock?: number | Date; params?: { [key: string]: any; } | any[]; }): Promise; static read(client: Web3Client, address: TAddress, methodAbi: string): Promise; } export declare namespace ContractReaderUtils { class DeferredRequest { request: { address: TAddress; abi: string | TAbiItem; params: any[]; blockNumber?: Date | number; options?: { from?: TAddress; }; }; promise: class_Dfr & { request: DeferredRequest; }; constructor(request: { address: TAddress; abi: string | TAbiItem; params: any[]; blockNumber?: Date | number; options?: { from?: TAddress; }; }); } interface IContractReadParams { address: TAddress; abi: string | TAbiItem; params?: any[]; blockNumber?: number | Date; options?: { from?: TAddress; }; } type TIContractReadParamsInferred = T extends IContractReadParams ? P : never; type TIContractReadParamsInferredMany = { [P in keyof T]: T[P] extends IContractReadParams ? P : never; }; function readAsyncBatch(client: Web3Client, requests: (IContractReadParams | null)[]): Promise; }