/// import { DB, BlockCache } from '@zkopru/database'; import { Worker } from '@zkopru/utils'; import { EventEmitter } from 'events'; import AsyncLock from 'async-lock'; import { L2Chain } from '../context/layer2'; import { Block } from '../block'; import { ValidatorBase as Validator } from '../validator'; import { Tracker } from './tracker'; import { Validation } from '../validator/types'; interface BlockProcessorEvents { slash: (challenge: Validation & { block: Block; }) => void; processed: (proposal: { proposalNum: number; block?: Block; }) => void; } export declare interface BlockProcessor { on(event: U, listener: BlockProcessorEvents[U]): this; emit(event: U, ...args: Parameters): boolean; } export declare class BlockProcessor extends EventEmitter { db: DB; blockCache: BlockCache; layer2: L2Chain; tracker: Tracker; validator: Validator; worker: Worker; canonicalLock: AsyncLock; lastEmittedProposalNum: number; constructor({ db, blockCache, l2Chain, tracker, validator, }: { db: DB; blockCache: BlockCache; l2Chain: L2Chain; tracker: Tracker; validator: Validator; }); isRunning(): boolean; start(): void; stop(): Promise; private processBlocks; private processBlock; private decryptMyUtxos; private determineTxOwnership; private saveTransactions; private saveWithdrawals; private makePatch; private applyPatch; private markMassDepositsAsIncludedIn; private static markUsedUtxosAsNullified; private static markNewUtxosAsUnspent; private static markNewWithdrawalsAsUnfinalized; private updateMyUtxos; private updateMyWithdrawals; private calcCanonicalBlockHeights; private calcCanonicalBlockHeight; } export {}; //# sourceMappingURL=block-processor.d.ts.map