import type { Database } from "bun:sqlite";
import type { TaskStatus } from "../types/index.js";
export declare const RETENTION_CLEANUP_CONFIRMATION = "delete-local-retention-data";
export type RetentionCleanupScope = "comments" | "runs" | "verifications" | "expired_artifacts";
export type RetentionCleanupRunStatus = "running" | "completed" | "failed" | "cancelled";
export interface RetentionCleanupInput {
    older_than_days: number;
    project_id?: string;
    task_statuses?: TaskStatus[];
    run_statuses?: RetentionCleanupRunStatus[];
    include?: RetentionCleanupScope[];
    now?: string;
}
export interface ApplyRetentionCleanupInput extends RetentionCleanupInput {
    confirm?: string;
}
export interface RetentionCleanupRecordCandidate {
    id: string;
    task_id: string;
    project_id: string | null;
    task_status: string;
    created_at: string;
    status?: string;
}
export interface RetentionCleanupArtifactFileCandidate {
    relative_path: string;
    artifact_ids: string[];
    expires_at: string;
    size_bytes: number | null;
}
export interface RetentionCleanupCounts {
    comments: number;
    runs: number;
    verifications: number;
    artifact_files: number;
}
export interface RetentionCleanupReport {
    schema_version: 1;
    local_only: true;
    dry_run: boolean;
    generated_at: string;
    cutoff_at: string;
    confirmation_required: typeof RETENTION_CLEANUP_CONFIRMATION;
    filters: {
        older_than_days: number;
        project_id: string | null;
        task_statuses: string[];
        run_statuses: string[];
        include: RetentionCleanupScope[];
    };
    candidate_counts: RetentionCleanupCounts;
    deleted_counts: RetentionCleanupCounts;
    candidates: {
        comments: RetentionCleanupRecordCandidate[];
        runs: RetentionCleanupRecordCandidate[];
        verifications: RetentionCleanupRecordCandidate[];
        artifact_files: RetentionCleanupArtifactFileCandidate[];
    };
    warnings: string[];
}
export declare function previewRetentionCleanup(input: RetentionCleanupInput, db?: Database): RetentionCleanupReport;
export declare function applyRetentionCleanup(input: ApplyRetentionCleanupInput, db?: Database): RetentionCleanupReport;
//# sourceMappingURL=retention-cleanup.d.ts.map