export type GcReason = 'test-named' | 'inactive' | 'orphaned';
export interface GcProjectEntry {
    /** Directory name (hash or human name) */
    name: string;
    /** Full absolute path to the directory */
    fullPath: string;
    /** Why this entry is a GC candidate */
    reason: GcReason;
    /** Most-recent file mtime (ms since epoch). Present for inactive entries. */
    lastModifiedMs?: number;
}
export interface GcScanOptions {
    /** Days of inactivity before a dir is considered stale (default: 90) */
    inactiveDays?: number;
    /** Set of 16-char hex hashes from the global registry.  Required when includeOrphans=true. */
    registeredHashes?: Set<string>;
    /** Include dirs whose hash is not in the registry (default: false) */
    includeOrphans?: boolean;
}
export interface GcScanResult {
    testNamed: GcProjectEntry[];
    inactive: GcProjectEntry[];
    orphaned: GcProjectEntry[];
    /** Total dirs scanned (before classification) */
    total: number;
}
export interface GcRunOptions extends GcScanOptions {
    /** Absolute path to data/projects/ */
    dataProjectsDir: string;
    /** When true, actually delete candidates; when false (default), dry-run only */
    apply?: boolean;
}
export interface GcRunResult {
    /** True when no deletions were performed */
    dryRun: boolean;
    scannedTotal: number;
    testNamed: GcProjectEntry[];
    inactive: GcProjectEntry[];
    orphaned: GcProjectEntry[];
    /** Total candidates found (test-named + inactive + orphaned) */
    candidateCount: number;
    /** Names of dirs actually deleted (empty in dry-run) */
    deleted: string[];
    /** Any errors encountered during deletion */
    errors: string[];
    /** inactiveDays setting used for this run */
    inactiveDays: number;
}
export interface GcDataProjectsInput {
    /** Absolute path to the project root (used to resolve data/projects/) */
    projectPath?: string;
    /** Days of inactivity threshold (default: 90) */
    inactiveDays?: number;
    /** Set to true to actually delete; default is dry-run */
    apply?: boolean;
    /** Include orphaned hash dirs (not in registry) — default false */
    includeOrphans?: boolean;
}
//# sourceMappingURL=data-gc.d.ts.map