interface SnapshotFile {
    /** Path relative to the project dir, with forward slashes. */
    path: string;
    /** UTF-8 file content. Binary files are out of scope (text-only project). */
    content: string;
    sha1: string;
}
interface SnapshotPayload {
    version: 1;
    files: SnapshotFile[];
}
export interface SnapshotMeta {
    id: string;
    createdAt: string;
    reason: string;
    fileCount: number;
    totalBytes: number;
    /** Filled by `list()`; absent on the meta JSON to keep it small. */
    payloadPath?: string;
}
export interface SnapshotDiff {
    added: string[];
    modified: string[];
    removed: string[];
}
export declare function take(projectDir: string, reason?: string): Promise<SnapshotMeta>;
export declare function list(projectDir: string): Promise<SnapshotMeta[]>;
export declare function get(projectDir: string, id: string): Promise<SnapshotPayload | null>;
export declare function diff(projectDir: string, id: string): Promise<SnapshotDiff | null>;
export declare function restore(projectDir: string, id: string): Promise<{
    restoredFiles: number;
    safetySnapshotId: string;
} | null>;
export declare function remove(projectDir: string, id: string): Promise<boolean>;
export {};
//# sourceMappingURL=snapshots.d.ts.map