import type { LspOperation, LspRequestParams, LspResult } from "./lsp.js";
/**
 * file:// URI for an absolute path (verified on a Windows host): this serves TWO lanes —
 * TOC host files (NodeLspManager, host semantics correct) AND remote WS-lane container paths
 * (E2B/kata sidecar, Linux form). `pathToFileURL` is HOST-platform-semantic: on a win32 host it
 * parses a remote `/home/user/x.ts` as drive-relative → `file:///C:/home/user/x.ts` → the remote
 * LSP server gets a nonexistent URI (breaking the remote lane on a win32 host entirely). Structural
 * form detection instead (same philosophy as the fs-safety dual-family fix — paths come from the
 * ExecutionEnv and may be of the OTHER family than the host, so never key on process.platform):
 * POSIX-form absolutes are hand-assembled (percent-encoded per segment, no host path module);
 * drive-letter form keeps `pathToFileURL` (CC parity for Windows files). On a POSIX host the
 * hand-assembled branch matches `pathToFileURL(p).href` for typical paths (common characters like
 * spaces encode identically; exotic characters follow the stricter encodeURIComponent form, and LSP
 * servers accept both).
 */
export declare function pathToUri(p: string): string;
/**
 * [K-PLATFORM-SWEEP] MINOR#5: structural inverse of {@link pathToUri} — the naive `file://` prefix strip
 * left win-form URIs as `/C:/x` (never matching the didOpen keys) and never percent-decoded (a space in a
 * filename broke the staleness map). Form-detected, never host `fileURLToPath` (cross-family lanes).
 */
export declare function uriToPath(uri: string): string;
/** The follow-up method for the 2-step call ops (issued by the session after prepareCallHierarchy). */
export declare function callHierarchyMethod(op: "incomingCalls" | "outgoingCalls"): string;
/** The LSP method + params for an op (incoming/outgoing FIRST issue prepareCallHierarchy — the session 2-steps). */
export declare function buildRequest(op: LspOperation, params: LspRequestParams): {
    method: string;
    params: unknown;
} | undefined;
/**
 * @param fallbackUri the QUERIED document's URI — required for `documentSymbol`, whose standard reply shape
 * (`DocumentSymbol[]`: name/range/selectionRange/children, NO uri and NO location) carries no location of its
 * own. Without it every symbol of that shape was dropped and a perfectly good reply rendered as "No results."
 * (HRD-LSP-6 — gopls/rust-analyzer/pyright all answer in that shape). Deliberately NOT applied to
 * `workspaceSymbol`/call-hierarchy: those shapes always carry their own uri, and substituting the queried
 * file's would attribute a symbol to the wrong file.
 */
export declare function parseResult(op: LspOperation, raw: unknown, fallbackUri?: string): LspResult;
