import { Address, Log, BlockHeader } from '../types'; import { AsyncOrSync } from 'ts-essentials'; export interface EventSubscriber { readonly parentName: string; readonly name: string; isTracking: () => boolean; restart(blockNumber: number): void; update(logs: Readonly[], blockHeaders: Readonly<{ [blockNumber: number]: Readonly; }>, blockNumberForMissingStateRegen?: number): AsyncOrSync; rollback(blockNumber: number): void; invalidate(): void; } export interface IBlockManager { subscribeToLogs(subscriber: EventSubscriber, contractAddress: Address | Address[], afterBlockNumber: number): void; getLatestBlockNumber(): number; getActiveChainHead(): Readonly | undefined; }