/**
 * User Preferences Learning
 *
 * Learns and adapts to user preferences:
 * - Coding style detection
 * - Common patterns recognition
 * - Tool usage preferences
 * - Communication style adaptation
 */
export interface CodingStyle {
    /** Indentation: spaces or tabs */
    indentation: 'spaces' | 'tabs';
    /** Indentation size */
    indentSize: number;
    /** Quote style */
    quotes: 'single' | 'double';
    /** Semicolons */
    semicolons: boolean;
    /** Trailing commas */
    trailingCommas: 'none' | 'es5' | 'all';
    /** Line length preference */
    maxLineLength: number;
    /** Brace style */
    braceStyle: 'same-line' | 'next-line';
}
export interface ToolPreference {
    name: string;
    usageCount: number;
    successRate: number;
    avgResponseTime: number;
    preferredOptions?: Record<string, unknown>;
}
export interface CommunicationStyle {
    /** Verbosity level: concise, normal, detailed */
    verbosity: 'concise' | 'normal' | 'detailed';
    /** Include explanations */
    includeExplanations: boolean;
    /** Show code comments */
    showCodeComments: boolean;
    /** Preferred response format */
    responseFormat: 'markdown' | 'plain' | 'structured';
    /** Language preference */
    language: string;
}
export interface UserPreferences {
    codingStyle: CodingStyle;
    tools: ToolPreference[];
    communication: CommunicationStyle;
    patterns: LearnedPattern[];
    customRules: CustomRule[];
    lastUpdated: Date;
}
export interface LearnedPattern {
    id: string;
    type: 'naming' | 'structure' | 'import' | 'error-handling' | 'other';
    pattern: string;
    description: string;
    frequency: number;
    confidence: number;
    examples: string[];
}
export interface CustomRule {
    id: string;
    name: string;
    condition: string;
    action: string;
    enabled: boolean;
}
/**
 * User Preferences Manager
 */
export declare class PreferencesManager {
    private preferences;
    private configPath;
    private learningEnabled;
    constructor(configPath?: string);
    /**
     * Get current preferences
     */
    getPreferences(): UserPreferences;
    /**
     * Get coding style
     */
    getCodingStyle(): CodingStyle;
    /**
     * Get communication style
     */
    getCommunicationStyle(): CommunicationStyle;
    /**
     * Update coding style preference
     */
    updateCodingStyle(updates: Partial<CodingStyle>): void;
    /**
     * Update communication style
     */
    updateCommunicationStyle(updates: Partial<CommunicationStyle>): void;
    /**
     * Learn from code sample
     */
    learnFromCode(code: string): void;
    /**
     * Record tool usage
     */
    recordToolUsage(toolName: string, success: boolean, responseTime: number, options?: Record<string, unknown>): void;
    /**
     * Get preferred tool options
     */
    getToolPreferences(toolName: string): ToolPreference | undefined;
    /**
     * Get most used tools
     */
    getMostUsedTools(limit?: number): ToolPreference[];
    /**
     * Add learned pattern
     */
    addPattern(pattern: Omit<LearnedPattern, 'id'>): void;
    /**
     * Get patterns by type
     */
    getPatterns(type?: LearnedPattern['type']): LearnedPattern[];
    /**
     * Add custom rule
     */
    addCustomRule(rule: Omit<CustomRule, 'id'>): string;
    /**
     * Remove custom rule
     */
    removeCustomRule(id: string): boolean;
    /**
     * Get active custom rules
     */
    getActiveRules(): CustomRule[];
    /**
     * Enable/disable learning
     */
    setLearningEnabled(enabled: boolean): void;
    /**
     * Reset preferences to defaults
     */
    reset(): void;
    /**
     * Export preferences
     */
    export(): string;
    /**
     * Import preferences
     */
    import(json: string): boolean;
    /**
     * Format preferences summary
     */
    formatSummary(): string;
    /**
     * Detect patterns in code
     */
    private detectPatterns;
    /**
     * Update or add pattern
     */
    private updateOrAddPattern;
    /**
     * Load preferences from file
     */
    private loadPreferences;
    /**
     * Save preferences to file
     */
    private savePreferences;
}
/**
 * Get or create preferences manager
 */
export declare function getPreferencesManager(): PreferencesManager;
export default PreferencesManager;
