import { NullifierEvent } from '../../../types/commitments.types';
import { AbstractSolanaSnapshotService, SolanaSnapshot } from './AbstractSolanaSnapshotService';
import { SolanaBlockchainEventEmitter } from './SolanaBlockchainEventEmitter';
import { BlockchainEvent } from '../../BlockchainEvent/BlockchainEvent';
export type SolanaNullifierSnapshotPayload = {
    readonly nullifiers: Set<string>;
};
export type SolanaNullifierSerializedSnapshot = {
    latestBlockNumber?: number;
    nullifiers?: string[];
};
export declare abstract class AbstractSolanaNullifierSnapshotService extends AbstractSolanaSnapshotService<NullifierEvent<string>, SolanaNullifierSnapshotPayload, SolanaNullifierSerializedSnapshot> {
    constructor(solanaEventEmitter: SolanaBlockchainEventEmitter);
    private _nullifiers;
    get nullifiers(): Set<string>;
    protected serializeSnapshot(snapshot: SolanaSnapshot<SolanaNullifierSnapshotPayload>): SolanaNullifierSerializedSnapshot;
    protected deserializeSnapshot(serializedSnapshot: SolanaNullifierSerializedSnapshot): SolanaSnapshot<SolanaNullifierSnapshotPayload>;
    protected acceptEvent(event: NullifierEvent<string>, _slot: number): boolean;
    protected mapEvent(event: BlockchainEvent): NullifierEvent<string>;
    protected getSnapshotPayload(): SolanaNullifierSnapshotPayload;
    protected populateSnapshot({ payload: { nullifiers } }: SolanaSnapshot<SolanaNullifierSnapshotPayload>): void;
}
