import type { Diagnostic, ResolvedServer } from "./types"; declare class LSPServerManager { private static instance; private clients; private cleanupInterval; private readonly IDLE_TIMEOUT; private constructor(); private registerProcessCleanup; static getInstance(): LSPServerManager; private getKey; private startCleanupTimer; private cleanupIdleClients; getClient(root: string, server: ResolvedServer): Promise; warmupClient(root: string, server: ResolvedServer): void; releaseClient(root: string, serverId: string): void; isServerInitializing(root: string, serverId: string): boolean; stopAll(): Promise; } export declare const lspManager: LSPServerManager; export declare class LSPClient { private root; private server; private proc; private buffer; private pending; private requestIdCounter; private openedFiles; private stderrBuffer; private processExited; private diagnosticsStore; constructor(root: string, server: ResolvedServer); start(): Promise; private startReading; private startStderrReading; private rejectAllPending; private findSequence; private processBuffer; private send; private notify; private respond; private handleServerRequest; initialize(): Promise; openFile(filePath: string): Promise; hover(filePath: string, line: number, character: number): Promise; definition(filePath: string, line: number, character: number): Promise; references(filePath: string, line: number, character: number, includeDeclaration?: boolean): Promise; documentSymbols(filePath: string): Promise; workspaceSymbols(query: string): Promise; diagnostics(filePath: string): Promise<{ items: Diagnostic[]; }>; prepareRename(filePath: string, line: number, character: number): Promise; rename(filePath: string, line: number, character: number, newName: string): Promise; codeAction(filePath: string, startLine: number, startChar: number, endLine: number, endChar: number, only?: string[]): Promise; codeActionResolve(codeAction: unknown): Promise; isAlive(): boolean; stop(): Promise; } export {};