import { type CommandContext, type GlobalOptions } from '../../../app/command-context.js';
import { type MultiSelectChoice, type PromptContext } from '../../shared/shared.prompts.js';
import { Command } from 'commander';
import type { CleanupActionRecord, CleanupJsonPayload } from '../cleanup.types.js';
import type { ArtifactCleanupCandidate } from './artifacts.types.js';
export interface CleanupArtifactsRunOptions {
    repoRoot: string;
    dryRun?: boolean;
    allCandidates?: boolean;
    yes?: boolean;
    interactive?: boolean;
    timestamp?: string;
}
interface CleanupArtifactsCommandDependencies {
    buildCommandContext: (options: GlobalOptions) => CommandContext;
    resolveProjectRoot: (cwd: string) => Promise<string>;
    runCleanupArtifacts: (options: CleanupArtifactsRunOptions) => Promise<CleanupJsonPayload>;
}
interface CleanupArtifactsRunDependencies {
    runInteractiveStaleTriage: typeof runInteractiveStaleTriage;
}
export declare function planDuplicatePruneActions(candidates: string[]): CleanupActionRecord[];
export declare function discoverArtifactCandidates(repoRoot: string, excludedTargets?: string[]): Promise<string[]>;
export declare function findReferencedArtifactCandidates(repoRoot: string, candidates: string[]): Promise<Set<string>>;
export interface NonInteractiveDeleteOptions {
    allCandidates: boolean;
    yes: boolean;
}
export declare function planNonInteractiveArtifactActions(candidates: ArtifactCleanupCandidate[], options: NonInteractiveDeleteOptions): CleanupActionRecord[];
export declare function planArchiveActions(targets: string[], existingTargets: Set<string>, timestamp: string): CleanupActionRecord[];
export interface InteractiveTriageResult {
    keep: string[];
    archive: string[];
    delete: string[];
}
interface InteractiveTriageDependencies {
    selectManyOrEmpty: <T extends string>(message: string, choices: MultiSelectChoice<T>[], ctx: PromptContext) => Promise<T[]>;
    confirmAction: (message: string, ctx: PromptContext) => Promise<boolean>;
}
export declare function runInteractiveStaleTriage(candidates: ArtifactCleanupCandidate[], ctx: PromptContext, overrides?: Partial<InteractiveTriageDependencies>): Promise<InteractiveTriageResult>;
export declare function runCleanupArtifacts({ repoRoot, dryRun, allCandidates, yes, interactive, timestamp, }: CleanupArtifactsRunOptions, overrides?: Partial<CleanupArtifactsRunDependencies>): Promise<CleanupJsonPayload>;
export declare function createCleanupArtifactsCommand(overrides?: Partial<CleanupArtifactsCommandDependencies>): Command;
export {};
//# sourceMappingURL=artifacts.d.ts.map