import { BlockWithTransactions } from '@ethersproject/abstract-provider'; import { ethers } from 'ethers'; import { IEVMEnrichedEvent, IEVMEvent } from '../../misc'; export interface IRPCDescriptor { rpcUrlOrProvider: string | ethers.providers.Provider; blockLimit: number; latestNotSupported?: boolean; batchNotSupported?: boolean; } export interface IInternalRPCDescriptor { rpcUrl?: string; provider: ethers.providers.Provider; blockLimit: number; latestNotSupported: boolean; batchNotSupported: boolean; } export declare class EthereumBlockchainReader { private readonly rpcs; private blocksCache; static createEthereumBlockchainReader(rpcs: IRPCDescriptor[]): EthereumBlockchainReader; private constructor(); init(): Promise; retryableOperation(callback: (provider: ethers.providers.Provider, blockLimit: number, latestNotSupported: boolean, batchNotSupported: boolean, stopTrying: () => void) => Promise): Promise; getBlockByHash(hash: string): Promise; getBalance(address: string): Promise<{ original: string; numeric: number; textual: string; e18: string; }>; enrichEvents(msgs: IEVMEvent[]): Promise[]>; isAddressValid(address: string): boolean; }