import { EventEmitter } from 'events';
export interface ConfirmationOptions {
    operation: string;
    filename: string;
    showVSCodeOpen?: boolean;
    content?: string;
}
export interface ConfirmationResult {
    confirmed: boolean;
    dontAskAgain?: boolean;
    feedback?: string;
}
export declare class ConfirmationService extends EventEmitter {
    private static instance;
    private pendingConfirmation;
    private resolveConfirmation;
    private sessionFlags;
    private dryRunMode;
    private dryRunLog;
    static getInstance(): ConfirmationService;
    constructor();
    /**
     * Enable or disable dry-run mode
     */
    setDryRunMode(enabled: boolean): void;
    /**
     * Check if dry-run mode is enabled
     */
    isDryRunMode(): boolean;
    /**
     * Get dry-run log
     */
    getDryRunLog(): Array<{
        operation: string;
        content: string;
        timestamp: Date;
    }>;
    /**
     * Clear dry-run log
     */
    clearDryRunLog(): void;
    /**
     * Format dry-run log for display
     */
    formatDryRunLog(): string;
    requestConfirmation(options: ConfirmationOptions, operationType?: 'file' | 'bash'): Promise<ConfirmationResult>;
    confirmOperation(confirmed: boolean, dontAskAgain?: boolean): void;
    rejectOperation(feedback?: string): void;
    /**
     * Open a file in VS Code safely using spawn with separate arguments
     * This prevents command injection by not using shell interpolation
     */
    private openInVSCode;
    isPending(): boolean;
    resetSession(): void;
    getSessionFlags(): {
        fileOperations: boolean;
        bashCommands: boolean;
        allOperations: boolean;
    };
    setSessionFlag(flagType: 'fileOperations' | 'bashCommands' | 'allOperations', value: boolean): void;
    /**
     * Dispose and cleanup resources
     */
    dispose(): void;
}
