import type { Violation } from '../domain/Violation.js';
import type { CustomRule } from '../domain/CustomRule.js';
/**
 * User action choices for interactive fixing
 */
export type FixAction = 'yes' | 'no' | 'all' | 'quit';
/**
 * Result of an interactive fix session
 */
export interface InteractiveFixResult {
    /** Whether any fixes were applied */
    fixed: boolean;
    /** Updated content after fixes */
    content: string;
    /** Number of fixes applied */
    appliedCount: number;
    /** Number of fixes skipped */
    skippedCount: number;
    /** Whether the session was quit early */
    quitEarly: boolean;
}
/**
 * Options for interactive fixing
 */
export interface InteractiveFixOptions {
    /** Custom prompt function (for testing) */
    promptFn?: (question: string) => Promise<string>;
    /** Custom output function (for testing) */
    outputFn?: (message: string) => void;
    /** Number of context lines to show in diff */
    contextLines?: number;
}
/**
 * Interactive fixer that prompts user for each fix.
 */
export declare class InteractiveFixer {
    private promptFn;
    private outputFn;
    private contextLines;
    constructor(options?: InteractiveFixOptions);
    /**
     * Run interactive fix session for violations
     */
    fix(content: string, violations: Violation[], customRules?: CustomRule[]): Promise<InteractiveFixResult>;
    /**
     * Show a preview of the fix with diff
     */
    private showFixPreview;
    /**
     * Prompt user for action
     */
    private promptForAction;
    /**
     * Show summary of the fix session
     */
    private showSummary;
    /**
     * Pad line number for consistent display
     */
    private padLineNumber;
    /**
     * Visualize whitespace characters for clarity
     */
    private visualizeWhitespace;
    /**
     * Adjust fix position for content changes
     */
    private adjustFixForContent;
    /**
     * Create default readline prompt
     */
    private createDefaultPrompt;
}
//# sourceMappingURL=InteractiveFixer.d.ts.map