import { type SnapshotPolicy } from "./snapshot-policy.js";
import { SnapshotService } from "./snapshot-service.js";
import type { ChangeSet } from "./snapshot-types.js";
export type BeforeSnapshotStatus = "captured" | "missing" | "skipped" | "error";
export interface BeforeFileSnapshot {
    path: string;
    status: BeforeSnapshotStatus;
    beforeHash?: string;
    binary?: boolean;
    reason?: string;
}
export interface TurnSnapshotBaseline {
    turnId: string;
    createdAt: number;
    files: BeforeFileSnapshot[];
    errors: string[];
}
export interface TurnSnapshotTrackerOptions {
    cwd: string;
    sessionId: string;
    snapshotService?: SnapshotService;
    policy?: SnapshotPolicy;
}
export interface PersistChangeSetOptions {
    assistantMessageId?: string;
    userMessageId?: string;
    createdAt?: number;
}
export declare class TurnSnapshotTracker {
    private readonly cwd;
    private readonly sessionId;
    private readonly snapshotService;
    private readonly policy;
    private activeBaseline;
    private readonly snapshotsByPath;
    constructor(options: TurnSnapshotTrackerOptions);
    get baseline(): TurnSnapshotBaseline | undefined;
    beginTurn(turnId?: string): Promise<TurnSnapshotBaseline>;
    captureBeforePath(path: string): Promise<BeforeFileSnapshot>;
    listBeforeSnapshots(): BeforeFileSnapshot[];
    persistChangeSet(options?: PersistChangeSetOptions): Promise<ChangeSet | undefined>;
    finishTurn(): TurnSnapshotBaseline | undefined;
    private createChangedFile;
    private capturePath;
}
//# sourceMappingURL=turn-snapshot-tracker.d.ts.map