/**
 * Approval Flow
 *
 * Manages the approval workflow for bash commands:
 * 1. Check against stored patterns
 * 2. Prompt user if no match
 * 3. Optionally save approval as pattern
 *
 * Integrates with ConfirmationService for UI interaction.
 */
import { EventEmitter } from 'events';
import type { ApprovalPattern, ApprovalPromptOptions, AllowlistCheckResult } from './types.js';
import { AllowlistStore } from './allowlist-store.js';
import { ConfirmationService } from '../../utils/confirmation-service.js';
/**
 * Manages the approval flow for bash commands
 */
export declare class ApprovalFlowManager extends EventEmitter {
    private store;
    private confirmationService;
    private initialized;
    constructor(store?: AllowlistStore, confirmationService?: ConfirmationService);
    /**
     * Initialize the approval flow
     */
    initialize(): Promise<void>;
    /**
     * Check a command and get approval
     * @param command Command to check
     * @param options Prompt options
     * @returns Whether the command is approved
     */
    checkAndApprove(command: string, options?: Partial<ApprovalPromptOptions>): Promise<{
        approved: boolean;
        reason: string;
        pattern?: ApprovalPattern;
    }>;
    /**
     * Quick check without prompting
     * @param command Command to check
     * @returns Check result
     */
    quickCheck(command: string): AllowlistCheckResult;
    /**
     * Prompt the user for approval
     */
    private promptUser;
    /**
     * Format content for the approval prompt
     */
    private formatPromptContent;
    /**
     * Add a pattern
     */
    addPattern(...args: Parameters<AllowlistStore['addPattern']>): ReturnType<AllowlistStore['addPattern']>;
    /**
     * Remove a pattern
     */
    removePattern(id: string): boolean;
    /**
     * Get all patterns
     */
    getAllPatterns(): ApprovalPattern[];
    /**
     * Get store instance
     */
    getStore(): AllowlistStore;
    /**
     * Get statistics
     */
    getStats(): {
        totalChecks: number;
        allowed: number;
        denied: number;
        prompted: number;
    };
    /**
     * Format status for display
     */
    formatStatus(): string;
    /**
     * List patterns formatted for display
     */
    formatPatternList(options?: {
        decision?: 'allow' | 'deny';
        enabled?: boolean;
    }): string;
}
/**
 * Get or create the ApprovalFlowManager singleton
 */
export declare function getApprovalFlowManager(): ApprovalFlowManager;
/**
 * Reset the ApprovalFlowManager singleton
 */
export declare function resetApprovalFlowManager(): void;
