import { type QualityIntelligenceLoadOptions, type QualityIntelligenceLocalStore } from "./store.js";
export interface QualityIntelligenceRunSnapshotEntry {
    readonly runId: string;
    readonly recordedAt: number;
    readonly retentionPolicyId: string;
}
export interface QualityIntelligenceRetentionDecisionInput {
    readonly snapshot: readonly QualityIntelligenceRunSnapshotEntry[];
    readonly now: number;
}
export interface QualityIntelligenceRetentionDecision {
    readonly runId: string;
    readonly reason: "age-exceeded" | "count-exceeded";
}
export interface QualityIntelligenceRetentionResult {
    readonly expiredRunIds: readonly string[];
    readonly retainedRunIds: readonly string[];
    readonly decisions: readonly QualityIntelligenceRetentionDecision[];
}
export declare function applyQualityIntelligenceRetention(input: QualityIntelligenceRetentionDecisionInput): QualityIntelligenceRetentionResult;
export type QualityIntelligenceDeletionStatus = "deleted" | "absent";
export interface QualityIntelligenceDeletionReceipt {
    readonly runId: string;
    readonly status: QualityIntelligenceDeletionStatus;
    readonly auditEvent: QualityIntelligenceRunDeletedEvent;
}
export interface QualityIntelligenceRunDeletedEvent {
    readonly type: "qi:run:deleted";
    readonly runId: string;
    readonly status: QualityIntelligenceDeletionStatus;
    readonly at: string;
}
export interface QualityIntelligenceDeleteOptions extends QualityIntelligenceLoadOptions {
    readonly now?: (() => number) | undefined;
    readonly sideFileRoot?: string | undefined;
}
export declare function deleteQualityIntelligenceRun(runId: string, options?: QualityIntelligenceDeleteOptions): QualityIntelligenceDeletionReceipt;
export interface QualityIntelligenceQuarantineOptions {
    readonly now?: (() => number) | undefined;
}
export interface QualityIntelligenceQuarantineReceipt {
    readonly originalPath: string;
    readonly quarantinedPath: string;
    readonly status: "quarantined" | "absent";
}
export declare function quarantineCorruptQualityIntelligenceManifest(evidenceDir: string, runId: string, options?: QualityIntelligenceQuarantineOptions): QualityIntelligenceQuarantineReceipt;
export interface QualityIntelligenceRecoverySnapshot {
    readonly loadedRunIds: readonly string[];
    readonly skippedRunIds: readonly string[];
}
export declare function snapshotQualityIntelligenceRunsForRecovery(store: QualityIntelligenceLocalStore): QualityIntelligenceRecoverySnapshot;
//# sourceMappingURL=retention.d.ts.map