/** * [WHO]: Provides createLSPClient(), LSPClient type * [FROM]: Depends on node:child_process, vscode-jsonrpc/node.js * [TO]: Consumed by ./lsp-server-instance.ts * [HERE]: extensions/builtin/lsp/lsp-client.ts - stdio JSON-RPC client for LSP servers */ import type { InitializeParams, InitializeResult, ServerCapabilities } from "vscode-languageserver-protocol"; export interface LSPClient { readonly capabilities: ServerCapabilities | undefined; readonly isInitialized: boolean; start(command: string, args: string[], options?: { env?: Record; cwd?: string; }): Promise; initialize(params: InitializeParams): Promise; sendRequest(method: string, params: unknown): Promise; sendNotification(method: string, params: unknown): Promise; onNotification(method: string, handler: (params: unknown) => void): void; onRequest(method: string, handler: (params: TParams) => TResult | Promise): void; stop(): Promise; } export declare function createLSPClient(serverName: string, onCrash?: (error: Error) => void): LSPClient;