/**
 * Auto-Lint Integration Module
 *
 * Automatically runs linters after file changes and feeds errors back to the LLM.
 * Research shows this improves code quality and reduces iteration cycles.
 *
 * Supported linters:
 * - ESLint (JavaScript/TypeScript)
 * - Prettier (formatting)
 * - Ruff (Python)
 * - Clippy (Rust)
 * - golangci-lint (Go)
 * - RuboCop (Ruby)
 */
import { EventEmitter } from "events";
/**
 * Lint error structure
 */
export interface LintError {
    file: string;
    line: number;
    column: number;
    message: string;
    rule: string;
    severity: "error" | "warning" | "info";
    fixable: boolean;
}
/**
 * Lint result
 */
export interface LintResult {
    success: boolean;
    errors: LintError[];
    warnings: LintError[];
    fixedCount: number;
    duration: number;
    linter: string;
}
/**
 * Linter configuration
 */
export interface LinterConfig {
    name: string;
    command: string;
    args: string[];
    extensions: string[];
    parseOutput: (output: string, file: string) => LintError[];
    fixArgs?: string[];
    configFiles?: string[];
}
/**
 * Auto-lint configuration
 */
export interface AutoLintConfig {
    enabled: boolean;
    autoFix: boolean;
    failOnError: boolean;
    maxErrors: number;
    timeout: number;
    linters: LinterConfig[];
}
/**
 * Default auto-lint configuration
 */
export declare const DEFAULT_AUTOLINT_CONFIG: AutoLintConfig;
/**
 * Built-in linter configurations
 */
export declare const BUILTIN_LINTERS: Record<string, LinterConfig>;
/**
 * Auto-Lint Manager
 *
 * Manages automatic linting of files after changes.
 */
export declare class AutoLintManager extends EventEmitter {
    private config;
    private detectedLinters;
    private workingDirectory;
    constructor(workingDirectory: string, config?: Partial<AutoLintConfig>);
    /**
     * Detect available linters in the project
     */
    private detectLinters;
    /**
     * Run linter on a file
     */
    private runLinter;
    /**
     * Get linter for file extension
     */
    private getLinterForFile;
    /**
     * Lint a single file
     */
    lintFile(file: string, autoFix?: boolean): Promise<LintResult | null>;
    /**
     * Lint multiple files
     */
    lintFiles(files: string[], autoFix?: boolean): Promise<LintResult[]>;
    /**
     * Format lint results for LLM context
     */
    formatResultsForLLM(results: LintResult[]): string;
    /**
     * Get detected linters
     */
    getDetectedLinters(): string[];
    /**
     * Get configuration
     */
    getConfig(): AutoLintConfig;
    /**
     * Update configuration
     */
    updateConfig(config: Partial<AutoLintConfig>): void;
    /**
     * Re-detect linters
     */
    refresh(): void;
}
/**
 * Get or create auto-lint manager instance
 */
export declare function getAutoLintManager(workingDirectory?: string, config?: Partial<AutoLintConfig>): AutoLintManager;
/**
 * Initialize auto-lint manager
 */
export declare function initializeAutoLint(workingDirectory: string, config?: Partial<AutoLintConfig>): AutoLintManager;
