import type * as vscode from "vscode"; import * as lsp from "vscode-languageserver-protocol"; import { URI } from "vscode-uri"; import { TSLanguageServiceDelegate } from "../service/delegate"; import { Barrier } from "../utils/barrier"; import { Disposable } from "../utils/dispose"; import { DiagnosticsShimService } from "./diagnostics"; export type ProviderEntry = { provider: T; selector: vscode.DocumentSelector; } & Args; declare class LanguageFeatureRegistry extends Disposable { featureId: string; private entries; constructor(featureId: string); register(id: number, registry: ProviderEntry): lsp.Disposable; [Symbol.iterator](): MapIterator<[number, ProviderEntry]>; } export declare class CodeActionProviderRegistry extends LanguageFeatureRegistry { constructor(); } export declare class CompletionProviderRegistry extends LanguageFeatureRegistry { constructor(); } interface ProviderWithScore { id: number; provider: T; args: Args; score: number; } export interface LanguageFeatureRegistryHandle { getProviders(doc: vscode.TextDocument): ProviderWithScore[]; getProviderById(id: number): ProviderEntry; getHighestProvider(doc: vscode.TextDocument): ProviderWithScore; } type InferRegistryHandle> = R extends LanguageFeatureRegistry ? LanguageFeatureRegistryHandle : never; export type CodeActionRegistryHandle = InferRegistryHandle; export type CompletionRegistryHandle = InferRegistryHandle; export declare class ProviderNotFoundError extends Error { providerFeature: string; constructor(providerFeature: string); } declare class LanguageFeaturesRegistryStore extends Disposable { readonly callHierarchy: LanguageFeatureRegistry; readonly codeActions: CodeActionProviderRegistry; readonly codeLens: LanguageFeatureRegistry, unknown>; readonly completionItem: CompletionProviderRegistry; readonly declaration: LanguageFeatureRegistry; readonly definition: LanguageFeatureRegistry; readonly documentFormattingEdit: LanguageFeatureRegistry; readonly documentHighlight: LanguageFeatureRegistry; readonly documentLink: LanguageFeatureRegistry, unknown>; readonly documentRangeFormattingEdit: LanguageFeatureRegistry; readonly documentRangeSemanticTokens: LanguageFeatureRegistry; readonly documentSymbol: LanguageFeatureRegistry; readonly documentSemanticTokens: LanguageFeatureRegistry; readonly foldingRange: LanguageFeatureRegistry; readonly hover: LanguageFeatureRegistry; readonly implementation: LanguageFeatureRegistry; readonly inlayHints: LanguageFeatureRegistry, unknown>; readonly onTypeFormatting: LanguageFeatureRegistry; readonly linkedEditingRange: LanguageFeatureRegistry; readonly reference: LanguageFeatureRegistry; readonly rename: LanguageFeatureRegistry; readonly selectionRange: LanguageFeatureRegistry; readonly signatureHelp: LanguageFeatureRegistry; readonly typeDefinition: LanguageFeatureRegistry; readonly typeHierarchy: LanguageFeatureRegistry; readonly workspaceSymbol: LanguageFeatureRegistry, unknown>; $getProviders(doc: vscode.TextDocument, providers: LanguageFeatureRegistry): ProviderWithScore[]; $getHighestProvider(doc: vscode.TextDocument, providers: LanguageFeatureRegistry): ProviderWithScore; $getProviderById>(id: number, providers: Registry): Registry extends LanguageFeatureRegistry ? ProviderEntry : never; $getProviderWithoutSelector(providers: LanguageFeatureRegistry): { id: number; } & { provider: T; selector: vscode.DocumentSelector; } & Args; $withRegistry(registry: LanguageFeatureRegistry): LanguageFeatureRegistryHandle; } export declare class LanguageFeaturesShimService extends Disposable { private readonly diagnostics; private _registryStore; readonly onDidChangeDiagnostics: lsp.Event; constructor(delegate: TSLanguageServiceDelegate, diagnostics: DiagnosticsShimService); $staticFeaturesRegistered: Barrier; $triggerStaticFeaturesRegistered(): void; createDiagnosticCollection(name?: string): import("./diagnostics").DiagnosticCollection; getDiagnostics(resource: URI): vscode.Diagnostic[]; get $providers(): LanguageFeaturesRegistryStore; private _idGen; private registerProvider; registerCompletionItemProvider(selector: vscode.DocumentSelector, provider: vscode.CompletionItemProvider, ...triggerCharacters: string[]): lsp.Disposable; registerCodeActionsProvider(selector: vscode.DocumentSelector, provider: vscode.CodeActionProvider, metadata?: vscode.CodeActionProviderMetadata): lsp.Disposable; registerCodeLensProvider(selector: vscode.DocumentSelector, provider: vscode.CodeLensProvider): lsp.Disposable; registerDefinitionProvider(selector: vscode.DocumentSelector, provider: vscode.DefinitionProvider): lsp.Disposable; registerImplementationProvider(selector: vscode.DocumentSelector, provider: vscode.ImplementationProvider): lsp.Disposable; registerTypeDefinitionProvider(selector: vscode.DocumentSelector, provider: vscode.TypeDefinitionProvider): lsp.Disposable; registerDeclarationProvider(selector: vscode.DocumentSelector, provider: vscode.DeclarationProvider): lsp.Disposable; registerHoverProvider(selector: vscode.DocumentSelector, provider: vscode.HoverProvider): lsp.Disposable; registerDocumentHighlightProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentHighlightProvider): lsp.Disposable; registerMultiDocumentHighlightProvider(): void; registerDocumentSymbolProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentSymbolProvider): lsp.Disposable; registerWorkspaceSymbolProvider(provider: vscode.WorkspaceSymbolProvider): lsp.Disposable; registerReferenceProvider(selector: vscode.DocumentSelector, provider: vscode.ReferenceProvider): lsp.Disposable; registerRenameProvider(selector: vscode.DocumentSelector, provider: vscode.RenameProvider): lsp.Disposable; registerDocumentSemanticTokensProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentSemanticTokensProvider): lsp.Disposable; registerDocumentRangeSemanticTokensProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentRangeSemanticTokensProvider): lsp.Disposable; registerDocumentFormattingEditProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentFormattingEditProvider): lsp.Disposable; registerDocumentRangeFormattingEditProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentRangeFormattingEditProvider): lsp.Disposable; registerSignatureHelpProvider(selector: vscode.DocumentSelector, provider: vscode.SignatureHelpProvider, metadata: vscode.SignatureHelpProviderMetadata): lsp.Disposable; registerDocumentLinkProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentLinkProvider): lsp.Disposable; registerInlayHintsProvider(selector: vscode.DocumentSelector, provider: vscode.InlayHintsProvider): lsp.Disposable; registerOnTypeFormattingEditProvider(selector: vscode.DocumentSelector, provider: vscode.OnTypeFormattingEditProvider, firstTriggerCharacter: string, ...moreTriggerCharacter: string[]): lsp.Disposable; registerFoldingRangeProvider(selector: vscode.DocumentSelector, provider: vscode.FoldingRangeProvider): lsp.Disposable; registerSelectionRangeProvider(selector: vscode.DocumentSelector, provider: vscode.SelectionRangeProvider): lsp.Disposable; registerCallHierarchyProvider(selector: vscode.DocumentSelector, provider: vscode.CallHierarchyProvider): lsp.Disposable; registerTypeHierarchyProvider(selector: vscode.DocumentSelector, provider: vscode.TypeHierarchyProvider): lsp.Disposable; registerLinkedEditingRangeProvider(selector: vscode.DocumentSelector, provider: vscode.LinkedEditingRangeProvider): lsp.Disposable; match(selector: vscode.DocumentSelector, doc: vscode.TextDocument): number; } export {}; //# sourceMappingURL=languageFeatures.d.ts.map