import { LoggerNode } from "@lodestar/logger/node";
import { Checkpoint } from "@lodestar/types/phase0";
import { IBeaconDb } from "../../db/index.js";
import { Metrics } from "../../metrics/metrics.js";
import { IBeaconChain } from "../interface.js";
import { ArchiveStoreOpts } from "./interface.js";
type ArchiveStoreModules = {
    chain: IBeaconChain;
    db: IBeaconDb;
    logger: LoggerNode;
    metrics: Metrics | null;
};
type ArchiveStoreInitOpts = ArchiveStoreOpts & {
    dbName: string;
    anchorState: {
        finalizedCheckpoint: Checkpoint;
    };
};
export declare enum ArchiveStoreTask {
    ArchiveBlocks = "archive_blocks",
    PruneHistory = "prune_history",
    OnFinalizedCheckpoint = "on_finalized_checkpoint",
    MaybeArchiveState = "maybe_archive_state",
    RegenPruneOnFinalized = "regen_prune_on_finalized",
    ForkchoicePrune = "forkchoice_prune",
    UpdateBackfillRange = "update_backfill_range"
}
/**
 * Used for running tasks that depends on some events or are executed
 * periodically.
 */
export declare class ArchiveStore {
    private archiveMode;
    private jobQueue;
    private archiveDataEpochs?;
    private readonly statesArchiverStrategy;
    private readonly chain;
    private readonly db;
    private readonly logger;
    private readonly metrics;
    private readonly opts;
    private readonly signal;
    private historicalStateRegen?;
    constructor(modules: ArchiveStoreModules, opts: ArchiveStoreInitOpts, signal: AbortSignal);
    init(): Promise<void>;
    close(): Promise<void>;
    scrapeMetrics(): Promise<string>;
    getHistoricalStateBySlot(slot: number): Promise<{
        state: Uint8Array;
        executionOptimistic: boolean;
        finalized: boolean;
    } | null>;
    /**
     * Archive latest finalized state
     * */
    persistToDisk(): Promise<void>;
    private onFinalizedCheckpoint;
    private onCheckpoint;
    private processFinalizedCheckpoint;
}
export {};
//# sourceMappingURL=archiveStore.d.ts.map