import { SymbolLocationInformation, WorkspaceReferenceParams } from 'javascript-typescript-langserver/lib/request-type';
import { Observable } from 'rxjs';
import { Location } from 'sourcegraph/module/protocol/plainTypes';
import { ServerCapabilities } from 'vscode-languageserver/lib/main';
import { AbsoluteRepo, FileSpec, PositionSpec } from '../repo';
import { HoverMerged, ModeSpec } from './features';
/**
 * Contains the fields necessary to route the request to the correct logical LSP server process and construct the
 * correct initialization request.
 */
export interface LSPSelector extends AbsoluteRepo, ModeSpec {
}
/**
 * Contains the fields necessary to construct an LSP TextDocumentPositionParams value.
 */
export interface LSPTextDocumentPositionParams extends LSPSelector, PositionSpec, FileSpec {
}
export declare const isEmptyHover: (hover: HoverMerged | null) => boolean;
/** LSP proxy error code for unsupported modes */
export declare const EMODENOTFOUND = -32000;
export declare function sendLSPHTTPRequests(requests: any[], urlPathHint?: string): Observable<any>;
/**
 * Query the server's capabilities.
 */
export declare const fetchServerCapabilities: (params: LSPSelector & {
    filePath: string;
}, force?: boolean | undefined) => Observable<ServerCapabilities>;
/** Callers should use features.getXdefinition instead. */
export declare const fetchXdefinition: (params: LSPTextDocumentPositionParams & LSPSelector, force?: boolean | undefined) => Observable<SymbolLocationInformation | undefined>;
export interface LSPReferencesParams {
    includeDeclaration?: boolean;
}
export interface XReferenceOptions extends WorkspaceReferenceParams {
    /**
     * This is not in the spec, but Go and possibly others support it
     * https://github.com/sourcegraph/go-langserver/blob/885ad3639de0e1e6c230db5395ea0f682534b458/pkg/lspext/lspext.go#L32
     */
    limit: number;
}
/** Callers should use features.getXreferences instead. */
export declare const fetchXreferences: (params: XReferenceOptions & LSPSelector, force?: boolean | undefined) => Observable<Location[]>;
//# sourceMappingURL=lsp.d.ts.map