import { type Draft } from "../draft.js"; import { type Flags } from "../utils/cli.js"; export interface GcPlan { texts: string[]; videos: string[]; audios: string[]; /** Texts skipped because their text_to_audio_ids names other-material ids — * the one documented out-of-sample cross-ref; conservative do-not-delete. */ skipped_cross_ref: string[]; total: number; } /** Pure: the removal plan. Orphans come from validate's shared definition; a * text carrying a non-empty text_to_audio_ids is moved to skipped_cross_ref. */ export declare function planGc(draft: Draft): GcPlan; /** Mutate the draft: rebuild each of the three slots without the planned ids. * Sound because duplicate ids are pre-excluded (gc refuses on hasBlockingErrors), * so an id-based filter can never remove a referenced twin. */ export declare function applyGc(draft: Draft, plan: GcPlan): void; export declare function cmdGc(draft: Draft, filePath: string, _positional: string[], flags: Flags): void;