import type Database from "better-sqlite3"; import { StateDatabase } from "./database.js"; export declare const AUTOMATIC_STATE_RETENTION_MS: number; export declare const AUTOMATIC_STATE_PRUNE_INTERVAL_MS: number; export declare const AUTOMATIC_STATE_VACUUM_MIN_BYTES: number; export declare const AUTOMATIC_STATE_VACUUM_MIN_FREE_RATIO = 0.2; export type StatePruneOptions = { before: string; apply: boolean; backupPath?: string; }; export type StatePruneReport = { cutoff: string; candidateTrees: number; blockedTrees: number; selectedRuns: number; deletedRows: number; deletedBlobs: number; deletedBlobBytes: number; databaseBytesBefore: number; databaseBytesAfter: number; applied: boolean; }; export type AutomaticStatePruneOptions = { now?: number; activeBlobHashes?: () => readonly Buffer[]; shouldContinue?: () => boolean; yieldControl?: () => Promise; vacuumMinBytes?: number; vacuumMinFreeRatio?: number; vacuum?: (database: Database.Database) => void; }; export type AutomaticStatePruneReport = StatePruneReport & { completed: boolean; compacted: boolean; pageCount: number; freePageCount: number; pageSize: number; reclaimableBytes: number; freePageRatio: number; compactionError?: string; }; type DatabasePageMetrics = Pick; export declare function validateStatePruneOptions(options: StatePruneOptions): void; export declare function pruneState(state: StateDatabase, databasePath: string, options: StatePruneOptions, activeBlobHashes?: () => readonly Buffer[]): Promise; export declare function pruneStateAutomatically(state: StateDatabase, databasePath: string, options?: AutomaticStatePruneOptions): Promise; export declare function shouldVacuumStateAutomatically(metrics: DatabasePageMetrics, minimumBytes?: number, minimumFreeRatio?: number): boolean; export {};