export interface FileOperation {
    /** Absolute resolved path to the file. */
    path: string;
    /** File content before the operation. Null if the file did not exist. */
    beforeContent: string | null;
    /** File content after the operation. */
    afterContent: string;
    /** Human-readable label, e.g. "write" or "edit". */
    tool: 'write' | 'edit';
    /** ISO timestamp of the operation. */
    timestamp: string;
}
export declare class FileUndoManager {
    private undoStack;
    private redoStack;
    /**
     * Record a completed file operation for potential undo/redo.
     * beforeContent is null when the file was newly created.
     */
    snapshot(op: Omit<FileOperation, 'timestamp'>): void;
    /**
     * Revert the most recent file operation.
     * Returns `{ path }` on success, or `null` if nothing to undo.
     */
    undo(): {
        path: string;
        tool: string;
    } | null;
    /**
     * Re-apply the most recently undone file operation.
     * Returns `{ path }` on success, or `null` if nothing to redo.
     */
    redo(): {
        path: string;
        tool: string;
    } | null;
    /** Number of operations that can be undone. */
    undoDepth(): number;
    /** Number of operations that can be redone. */
    redoDepth(): number;
    /** Peek at the most recent undoable operation without popping. */
    peekUndo(): FileOperation | undefined;
    /** Clear both stacks (e.g., on session reset). */
    clear(): void;
}
//# sourceMappingURL=file-undo.d.ts.map