///
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