/**
 * LSP Client - Language Server Protocol integration
 *
 * Provides a client that can connect to LSP servers for various languages,
 * enabling go-to-definition, find-references, hover, symbols, and diagnostics.
 */
export type LSPOperation = 'goToDefinition' | 'findReferences' | 'hover' | 'documentSymbol' | 'getDiagnostics';
export type LSPLanguage = 'python' | 'typescript' | 'javascript' | 'go' | 'rust' | 'java' | 'c' | 'cpp' | 'csharp' | 'php' | 'kotlin' | 'ruby' | 'html' | 'css';
export interface LSPServerConfig {
    language: LSPLanguage;
    command: string;
    args: string[];
    initOptions?: Record<string, unknown>;
}
export interface LSPLocation {
    file: string;
    line: number;
    column: number;
    endLine?: number;
    endColumn?: number;
}
export interface LSPSymbol {
    name: string;
    kind: string;
    location: LSPLocation;
    children?: LSPSymbol[];
}
export interface LSPDiagnostic {
    file: string;
    line: number;
    column: number;
    severity: 'error' | 'warning' | 'info' | 'hint';
    message: string;
    source?: string;
}
export interface LSPHoverInfo {
    content: string;
    language?: string;
    range?: LSPLocation;
}
export declare class LSPClient {
    private servers;
    private activeServers;
    private configPath;
    private stats;
    constructor(configPath?: string);
    registerServer(config: LSPServerConfig): void;
    getRegisteredLanguages(): LSPLanguage[];
    isLanguageSupported(lang: LSPLanguage): boolean;
    static getDefaultConfig(language: LSPLanguage): LSPServerConfig | null;
    static getSupportedLanguages(): LSPLanguage[];
    goToDefinition(file: string, line: number, column: number): Promise<LSPLocation[]>;
    findReferences(file: string, line: number, column: number): Promise<LSPLocation[]>;
    hover(file: string, line: number, column: number): Promise<LSPHoverInfo | null>;
    getDocumentSymbols(file: string): Promise<LSPSymbol[]>;
    getDiagnostics(file: string): Promise<LSPDiagnostic[]>;
    detectLanguage(filePath: string): LSPLanguage | null;
    startServer(language: LSPLanguage): Promise<boolean>;
    stopServer(language: LSPLanguage): Promise<void>;
    stopAll(): Promise<void>;
    getActiveServerCount(): number;
    getStats(): {
        queriesExecuted: number;
        avgResponseMs: number;
        cacheHits: number;
    };
    private recordQuery;
}
