import type { FileSystem } from "./file-system.js";
export type DryRunOperation = {
    type: "writeFile";
    path: string;
    nextContent: string;
    previousContent: string | null;
} | {
    type: "mkdir";
    path: string;
    options?: {
        recursive?: boolean;
    };
} | {
    type: "unlink";
    path: string;
} | {
    type: "rm";
    path: string;
    options?: {
        recursive?: boolean;
        force?: boolean;
    };
} | {
    type: "copyFile";
    from: string;
    to: string;
} | {
    type: "chmod";
    path: string;
    mode: number;
} | {
    type: "symlink";
    target: string;
    path: string;
} | {
    type: "rename";
    from: string;
    to: string;
};
export declare class DryRunRecorder {
    private operations;
    record(operation: DryRunOperation): void;
    drain(): DryRunOperation[];
}
export declare function createDryRunFileSystem(base: FileSystem, recorder: DryRunRecorder): FileSystem;
export declare function formatDryRunOperations(operations: DryRunOperation[]): string[];
export declare function renderUnifiedDiff(targetPath: string, previousContent: string | null, nextContent: string): string[];
