/**
 * Multi-File Atomic Editor
 *
 * Provides transactional file operations with rollback support.
 * Enables atomic multi-file edits that either all succeed or all fail.
 *
 * Inspired by hurry-mode's multi-file editing capabilities.
 */
import { FileOperation, EditOperation, Transaction, TransactionResult, ValidationResult, ChangePreview } from "./types.js";
/**
 * Multi-File Editor
 */
export declare class MultiFileEditor {
    private transactions;
    private activeTransaction;
    private vfs;
    /**
     * Begin a new transaction
     */
    beginTransaction(description?: string): string;
    /**
     * Add an operation to the active transaction
     */
    addOperation(operation: Omit<FileOperation, "id" | "timestamp">): string;
    /**
     * Add a create file operation
     */
    addCreateFile(filePath: string, content: string): string;
    /**
     * Add an edit file operation
     */
    addEditFile(filePath: string, edits: EditOperation[]): string;
    /**
     * Add a replace operation (convenience method)
     */
    addReplace(filePath: string, oldText: string, newText: string): string;
    /**
     * Add an insert operation
     */
    addInsert(filePath: string, line: number, text: string): string;
    /**
     * Add a delete lines operation
     */
    addDeleteLines(filePath: string, startLine: number, endLine: number): string;
    /**
     * Add a delete file operation
     */
    addDeleteFile(filePath: string): string;
    /**
     * Add a rename/move file operation
     */
    addRenameFile(oldPath: string, newPath: string): string;
    /**
     * Preview all changes in the transaction (async)
     */
    preview(): Promise<ChangePreview[]>;
    /**
     * Validate all operations before commit
     */
    validate(): Promise<ValidationResult>;
    /**
     * Commit the transaction
     */
    commit(force?: boolean): Promise<TransactionResult>;
    /**
     * Rollback the active transaction
     */
    rollback(): Promise<void>;
    /**
     * Execute a single file operation (async)
     */
    private executeOperation;
    /**
     * Apply a single edit to content
     */
    private applyEdit;
    /**
     * Capture rollback data for an operation (async)
     */
    private captureRollbackData;
    /**
     * Rollback a transaction (async)
     */
    private rollbackTransaction;
    /**
     * Execute a multi-file operation atomically
     */
    executeMultiFileOperation(operations: Array<Omit<FileOperation, "id" | "timestamp">>, description?: string): Promise<TransactionResult>;
    /**
     * Get transaction by ID
     */
    getTransaction(transactionId: string): Transaction | undefined;
    /**
     * Get all transactions
     */
    getAllTransactions(): Transaction[];
    /**
     * Check if there's an active transaction
     */
    hasActiveTransaction(): boolean;
    /**
     * Get active transaction ID
     */
    getActiveTransactionId(): string | null;
    /**
     * Clear transaction history
     */
    clearHistory(): void;
    /**
     * Create unique ID
     */
    private createId;
}
/**
 * Create a multi-file editor
 */
export declare function createMultiFileEditor(): MultiFileEditor;
export declare function getMultiFileEditor(): MultiFileEditor;
export declare function resetMultiFileEditor(): void;
