///
import { Worker } from '@zkopru/utils';
import { DB, Deposit as DepositSql, Utxo as UtxoSql, MassDeposit as MassDepositSql, BlockCache } from '@zkopru/database';
import { EventEmitter } from 'events';
import { ZkAddress } from '@zkopru/transaction';
import { L1Contract } from '../context/layer1';
export declare enum NetworkStatus {
STOPPED = "stopped",
ON_SYNCING = "on syncing",
ON_FETCHED = "onFetched",
ON_PROCESSING = "processing",
SYNCED = "synced",
FULLY_SYNCED = "fully synced",
ON_ERROR = "on error"
}
export declare class Synchronizer extends EventEmitter {
db: DB;
blockCache: BlockCache;
l1Contract: L1Contract;
depositSubscriber?: EventEmitter;
depositUtxoSubscriber?: EventEmitter;
massDepositCommitSubscriber?: EventEmitter;
proposalSubscriber?: EventEmitter;
slashSubscriber?: EventEmitter;
finalizationSubscriber?: EventEmitter;
erc20RegistrationSubscriber?: EventEmitter;
erc721RegistrationSubscriber?: EventEmitter;
isListening: boolean;
latestProcessed?: number;
status: NetworkStatus;
workers: {
statusUpdater: Worker;
blockFetcher: Worker;
};
fetching: {
[proposalTx: string]: boolean;
};
_genesisPromise: undefined | Promise;
constructor(db: DB, l1Contract: L1Contract, blockCache: BlockCache);
sync(accounts?: ZkAddress[], proposalCB?: (hash: string) => void, finalizationCB?: (hash: string) => void): void;
stop(): Promise;
isSynced(): boolean;
updateStatus(): Promise;
setLatestProcessed(proposalNum: number): void;
private setStatus;
loadGenesis(): Promise;
loadGenesisIfNeeded(): Promise;
private _loadGenesis;
listenTokenRegistry(): Promise;
listenDeposits(cb?: (deposit: DepositSql) => void): Promise;
listenDepositUtxos(addresses: ZkAddress[], cb?: (utxo: UtxoSql) => void): Promise;
listenMassDepositCommit(cb?: (commit: MassDepositSql) => void): Promise;
listenNewProposals(cb?: (hash: string) => void): Promise;
listenSlash(cb?: (hash: string) => void): Promise;
listenFinalization(cb?: (hash: string) => void): Promise;
fetchUnfetchedProposals(): Promise;
fetch(proposalTx: string): Promise;
}
//# sourceMappingURL=synchronizer.d.ts.map