import { ChildProcess } from "child_process";
import { LspServerConfig, ILspManager } from "../types/index.js";
import { Container } from "../utils/container.js";
interface LspProcess {
    process: ChildProcess;
    config: LspServerConfig;
    language: string;
    initialized: boolean;
    requestId: number;
    pendingRequests: Map<number, {
        resolve: (value: unknown) => void;
        reject: (reason?: unknown) => void;
    }>;
    openedFiles: Set<string>;
}
export declare class LspManager implements ILspManager {
    private container;
    private processes;
    private workdir;
    private config;
    constructor(container: Container);
    initialize(workdir: string): Promise<void>;
    registerServer(language: string, config: LspServerConfig): void;
    private loadConfig;
    getProcessForFile(filePath: string): Promise<LspProcess | null>;
    private startServer;
    private handleMessage;
    private sendRequest;
    private sendNotification;
    execute(args: {
        operation: string;
        filePath: string;
        line: number;
        character: number;
    }): Promise<{
        success: boolean;
        content: string;
    }>;
    cleanup(): Promise<void>;
}
export {};
//# sourceMappingURL=lspManager.d.ts.map