import { NullifierEvent } from '../../../types/commitments.types';
import { AbstractSnapshotService, Snapshot } from './AbstractSnapshotService';
import { BlockchainEventEmitter } from './BlockchainEventEmitter';
import { BlockchainEvent } from '../../BlockchainEvent/BlockchainEvent';
export type NullifierSnapshotPayload = {
    readonly nullifiers: Set<string>;
};
export type NullifierSerializedSnapshot = {
    latestBlockNumber?: number;
    nullifiers?: string[];
};
export declare abstract class AbstractNullifierSnapshotService extends AbstractSnapshotService<NullifierEvent<string>, NullifierSnapshotPayload, NullifierSerializedSnapshot> {
    constructor(hinkalEventEmitter: BlockchainEventEmitter);
    private _nullifiers;
    get nullifiers(): Set<string>;
    protected serializeSnapshot(snapshot: Snapshot<NullifierSnapshotPayload>): NullifierSerializedSnapshot;
    protected deserializeSnapshot(serializedSnapshot: NullifierSerializedSnapshot): Snapshot<NullifierSnapshotPayload>;
    protected acceptEvent(event: NullifierEvent<string>, _blockNumber: number): boolean;
    protected mapEvent(event: BlockchainEvent): NullifierEvent<string>;
    protected getSnapshotPayload(): NullifierSnapshotPayload;
    protected populateSnapshot({ payload: { nullifiers } }: Snapshot<NullifierSnapshotPayload>): void;
}
