export interface PrepareOptions {
    /**
     * Where to archive the existing target dir before wiping. If unset,
     * the wipe still happens but no archive is taken — only do this when
     * you have an external recovery path.
     */
    archiveDir?: string;
    /** How many archives to retain. Defaults to 3. */
    archiveKeep?: number;
}
export interface PrepareResult {
    /** True when the existing target dir was wiped. */
    wiped: boolean;
    /** Path to the archive snapshot, when one was taken. */
    archivePath?: string;
    /** Reason wiping was skipped (when applicable). */
    skipped?: 'no-existing-tree' | 'empty-manifest';
}
/**
 * Archive then wipe the target dir, in preparation for a fresh write.
 *
 * `manifest` is the full set of paths the compiler intends to write
 * (relative to outputDir). It's used as a sanity check — if the
 * manifest contains *no* files under targetDir we treat that as a
 * compile bug and skip the destructive step.
 *
 * The wipe itself is a single fs.rm({recursive:true}) — fast, total,
 * and matches the documented contract that src/ is compiler-owned.
 */
export declare function prepareGeneratedDir(outputDir: string, targetDir: string, manifest: Iterable<string>, options?: PrepareOptions): Promise<PrepareResult>;
//# sourceMappingURL=prepare-output.d.ts.map