import { FileSnapshot } from "../types/reversion.js";
import { Container } from "../utils/container.js";
export declare class ReversionManager {
    private container;
    private buffer;
    constructor(container: Container);
    private get reversionService();
    /**
     * Records the current state of a file into a temporary buffer.
     * Returns a snapshotId.
     */
    recordSnapshot(messageId: string, filePath: string, operation: "create" | "modify" | "delete"): Promise<string>;
    /**
     * Records the current state of a file into a temporary buffer.
     * Returns a snapshotId.
     */
    recordSnapshotWithId(messageId: string, filePath: string, operation: "create" | "modify" | "delete"): Promise<string>;
    /**
     * Moves the buffered snapshot to the permanent session log.
     * Called only if the tool succeeds.
     */
    commitSnapshot(snapshotId: string): Promise<void>;
    private committedSnapshots;
    /**
     * Gets and clears committed snapshots for the current turn.
     */
    getAndClearCommittedSnapshots(): FileSnapshot[];
    /**
     * Discards the buffered snapshot.
     * Called if the tool fails.
     */
    discardSnapshot(snapshotId: string): void;
    /**
     * Reverts all file changes associated with messages from the end of history
     * down to (and including) the specified message index.
     * This should be called by MessageManager.
     */
    revertTo(messageIds: string[], allMessages: import("../types/index.js").Message[]): Promise<number>;
}
//# sourceMappingURL=reversionManager.d.ts.map