import { class_Dfr } from 'atma-utils'; import { Web3Client } from '../clients/Web3Client'; import { TPlatform } from '../models/TPlatform'; import { TEth } from '../models/TEth'; export interface IBlocksTxIndexerOptions { /** Name of the indexer */ name?: string; /** Save indexer progress (visited blocks) to a file */ persistence?: boolean; /** Load transactions from the block and provide them to the visitor method */ loadTransactions?: boolean; /** Load receipts from the block and provide them to the visitor method */ loadReceipts?: boolean; client?: Web3Client; logProgress?: boolean; } export type TBlockListener = (client: Web3Client, block: TEth.Block, data?: { txs?: TEth.Tx[]; receipts?: TEth.TxReceipt[]; }) => Promise; export declare class BlocksTxIndexer { platform: TPlatform; opts?: IBlocksTxIndexerOptions; private client; private walker; private listeners; onStarted: class_Dfr; constructor(platform: TPlatform, opts?: IBlocksTxIndexerOptions); onBlock(cb: TBlockListener): this; stats(): { blockLoadTime: number; busy?: { nr: number; startedAt: number; }[]; errors?: { nr: number; startedAt: number; duration: number; error: Error; }[]; from?: number; to?: number; totalLeft?: number; totalTimeLeft?: string; processed?: number; avgTime?: number; }; start(from?: Date | number, to?: Date | number): Promise; private startInner; private indexTransactions; }