import { Operation, OperationResult } from "@myycontext/core";
import { ValidationReport } from "./OperationValidator";
/**
 * Enhanced execution result with validation and caching metadata
 */
export interface EnhancedOperationResult extends OperationResult {
    validation?: {
        preFlight: ValidationReport;
        postFlight?: ValidationReport;
    };
    caching?: {
        cacheHit: boolean;
        fingerprint: string;
        replayed: boolean;
    };
    idempotency?: {
        skipped: boolean;
        reason: string;
    };
    executionTimeMs: number;
}
/**
 * Execution options
 */
export interface ExecutionOptions {
    enableValidation?: boolean;
    enableCaching?: boolean;
    enableIdempotencyCheck?: boolean;
    dryRun?: boolean;
    skipIfApplied?: boolean;
}
export declare class OperationExecutor {
    private historyDir;
    private baseDir;
    private validator?;
    private cache?;
    private fingerprint?;
    private replay?;
    constructor(baseDir?: string, options?: {
        enableValidation?: boolean;
        enableCaching?: boolean;
    });
    /**
     * Initialize enhanced services
     */
    init(): Promise<void>;
    /**
     * Enhanced execute with validation, caching, and idempotency
     */
    executeEnhanced(op: Operation, options?: ExecutionOptions): Promise<EnhancedOperationResult>;
    /**
     * Original execute method (preserved for backward compatibility)
     */
    execute(op: Operation): Promise<OperationResult>;
    executeBatch(ops: Operation[]): Promise<OperationResult[]>;
    rollback(op: Operation): Promise<boolean>;
    rollbackBatch(ops: Operation[]): Promise<boolean>;
    private createFile;
    private patchFile;
    private renameFile;
    private deleteFile;
    private addImport;
    private addExport;
    private addClassname;
    private addI18nKey;
    private removeImport;
    private addServerAction;
    private addPermission;
    private addTest;
    private addRoute;
    private addComponent;
    private addAction;
    private addModel;
    private recordOperation;
}
//# sourceMappingURL=OperationExecutor.d.ts.map