/**
 * OwlCoda Native LSP Provider
 *
 * A real Language Server Protocol client over stdio JSON-RPC, wired into the
 * LSP tool (see lsp.ts). Before this, the LSP tool was registered with a
 * permanent no-op provider (`isAvailable() => false`) and the only documented
 * activation path ("plugin with lspServers config") was never implemented —
 * so the tool was dead weight that misled the model into wasting a turn
 * calling it.
 *
 * This provider lazily spawns a language server per workspace root, performs
 * the initialize handshake, and routes the six LSP tool actions
 * (diagnostics / hover / definition / references / symbols / completion) to
 * the corresponding `textDocument/*` requests. Diagnostics are collected from
 * the server-pushed `textDocument/publishDiagnostics` notification within a
 * settle window.
 *
 * Server selection is by file extension + binary availability on PATH:
 *   - .ts/.tsx/.js/.jsx/.mts/.cts → typescript-language-server --stdio
 *   - (extensible: add more rows to LANGUAGE_SERVERS)
 *
 * When no server binary is available for a file, the provider reports
 * unavailable gracefully (same shape the old no-op default produced), so
 * non-TS/JS files don't error in a confusing way.
 */
import type { LSPProvider } from './lsp.js';
/**
 * The native LSP provider. Manages one LspSession per (root × server) and
 * routes tool actions to the right textDocument request.
 */
export declare class NativeLspProvider implements LSPProvider {
    private sessions;
    isAvailable(): boolean;
    private sessionFor;
    execute(action: string, params: Record<string, unknown>): Promise<{
        content: string;
        isError?: boolean;
    }>;
    disposeAll(): void;
}
/** Lazy singleton — one provider process-wide, sessions reused across calls. */
export declare function getNativeLspProvider(): NativeLspProvider;
