///
import { IAbiProvider, IBlockProcessor } from '../types/interfaces';
import { FullShipBlock, IBlockListener, IDeltaListener, IDeserializer, IExtractedShipDelta, IExtractedShipTrace, ITraceListener } from '../types/ship';
import { EventEmitter } from 'events';
interface IProcessorParams {
deserializer: IDeserializer;
abiProvider: IAbiProvider;
failOnDeserializationError: boolean;
traceListeners?: ITraceListener[];
deltaListeners?: IDeltaListener[];
blockListeners?: IBlockListener[];
preBlockHook?: IBlockListener[];
postBlockHook?: IBlockListener[];
}
export declare class BlockProcessor extends EventEmitter implements IBlockProcessor {
private readonly traceListeners;
private readonly deltaListeners;
private readonly blockListeners;
private readonly preBlockHooks?;
private readonly postBlockHooks?;
private readonly deserializer;
private readonly abiProvider;
private readonly failOnDeserializationError;
constructor(params: IProcessorParams);
onBlockStart(data: {
block: FullShipBlock;
}): Promise;
onBlockFinished(data: {
block: FullShipBlock;
}): Promise;
processBlock({ block, traces, deltas, }: {
block: FullShipBlock;
traces: IExtractedShipTrace[];
deltas: IExtractedShipDelta[];
}): Promise;
private findDeltaProcessors;
private findAndDeserializeDeltas;
private findTraceProcessors;
private findAndDeserializeTraces;
addDeltaListener(listener: IDeltaListener): () => void;
addTraceListener(listener: ITraceListener): () => void;
addBlockListener(listener: IBlockListener): () => void;
addPreBlockHook(listener: IBlockListener): () => void;
addPostBlockHook(listener: IBlockListener): () => void;
private processABIUpdates;
}
export {};