import * as lsp from 'vscode-languageserver-protocol'; import { LSPAny, TextDocumentIdentifier, TextDocumentItem } from 'vscode-languageserver-protocol'; import { TextDocument } from 'vscode-languageserver-textdocument'; export interface LanguageService { documents: { [documentUri: string]: TextDocument; }; serviceName: string; mode: string; globalOptions: ServiceOptions; serviceData: LanguageClientConfig | ServiceConfig; serviceCapabilities: lsp.ServerCapabilities; workspaceUri?: string; format(document: lsp.TextDocumentIdentifier, range: lsp.Range, options: lsp.FormattingOptions): Promise; doHover(document: lsp.TextDocumentIdentifier, position: lsp.Position): Promise; doValidation(document: lsp.TextDocumentIdentifier): Promise; doComplete(document: lsp.TextDocumentIdentifier, position: lsp.Position): Promise; doInlineComplete(document: lsp.VersionedTextDocumentIdentifier, position: lsp.Position): Promise; doResolve(item: lsp.CompletionItem): Promise; setValue(identifier: lsp.VersionedTextDocumentIdentifier, value: string): void; applyDeltas(identifier: lsp.VersionedTextDocumentIdentifier, deltas: lsp.TextDocumentContentChangeEvent[]): void; addDocument(document: TextDocumentItem): void; setOptions(documentUri: string, options: ServiceOptions, merge?: boolean): void; setGlobalOptions(options: ServiceOptions): void; getDocument(uri: string): TextDocument; removeDocument(document: TextDocumentIdentifier): void; renameDocument(document: TextDocumentIdentifier, newDocumentUri: string): void; getDocumentValue(uri: string): string | undefined; provideSignatureHelp(document: lsp.TextDocumentIdentifier, position: lsp.Position): Promise; findDocumentHighlights(document: lsp.TextDocumentIdentifier, position: lsp.Position): Promise; getSemanticTokens(document: lsp.TextDocumentIdentifier, range: lsp.Range): Promise; getCodeActions(document: lsp.TextDocumentIdentifier, range: lsp.Range, context: lsp.CodeActionContext): Promise<(lsp.Command | lsp.CodeAction)[] | null>; executeCommand(command: string, args?: lsp.LSPAny[]): Promise; sendAppliedResult(result: lsp.ApplyWorkspaceEditResult, callbackId: number): void; dispose(): Promise; closeConnection(): Promise; setWorkspace(workspaceUri: string): void; sendRequest(name: string, args?: lsp.LSPAny): Promise; sendResponse(callbackId: number, args?: lsp.LSPAny): void; } export interface ServiceOptions { [name: string]: any; } export type ServiceFeatures = { [feature in SupportedFeatures]?: boolean; }; export type SupportedFeatures = "hover" | "completion" | "completionResolve" | "format" | "diagnostics" | "signatureHelp" | "documentHighlight" | "semanticTokens" | "codeAction" | "executeCommand" | "inlineCompletion"; export interface ServiceConfig extends BaseConfig { className: string; options?: ServiceOptions; } export interface BaseConfig { serviceName?: string; initializationOptions?: ServiceOptions; options?: ServiceOptions; serviceInstance?: LanguageService; /** * language modes separated with |; * means all available languages */ modes: string; className?: string; features?: ServiceFeatures; module: () => any; id?: string; } export interface WebWorkerConnection { type: "webworker"; worker: Worker; } export interface SocketConnection { type: "socket"; socket: WebSocket; } export interface StdioConnection { type: "stdio"; command: string; } export interface IpcConnection { type: "ipc"; ipcPath: string; } export type ConnectionType = WebWorkerConnection | SocketConnection | StdioConnection | IpcConnection; export type LanguageClientConfig = BaseConfig & ConnectionType; export interface FilterDiagnosticsOptions { errorCodesToIgnore?: string[]; errorCodesToTreatAsWarning?: string[]; errorCodesToTreatAsInfo?: string[]; errorMessagesToIgnore?: RegExp[]; errorMessagesToTreatAsWarning?: RegExp[]; errorMessagesToTreatAsInfo?: RegExp[]; } export declare abstract class BaseService implements LanguageService { serviceName: string; mode: string; documents: { [documentUri: lsp.DocumentUri]: TextDocument; }; options: { [documentUri: string]: OptionsType; }; globalOptions: OptionsType; serviceData: ServiceConfig; serviceCapabilities: lsp.ServerCapabilities; workspaceUri?: string; clientCapabilities: lsp.ClientCapabilities; protected constructor(mode: string, workspaceUri?: string); addDocument(document: lsp.TextDocumentItem): void; getDocument(uri: string): TextDocument; removeDocument(document: lsp.TextDocumentIdentifier): void; renameDocument(document: lsp.TextDocumentIdentifier, newDocumentUri: string): void; getDocumentValue(uri: string): string | undefined; setValue(identifier: lsp.VersionedTextDocumentIdentifier, value: string): void; setGlobalOptions(options: OptionsType): void; setWorkspace(workspaceUri: string): void; setOptions(documentUri: string, options: OptionsType, merge?: boolean): void; getOption(documentUri: string, optionName: T): OptionsType[T]; applyDeltas(identifier: lsp.VersionedTextDocumentIdentifier, deltas: lsp.TextDocumentContentChangeEvent[]): void; doComplete(document: lsp.TextDocumentIdentifier, position: lsp.Position): Promise; doInlineComplete(document: lsp.TextDocumentIdentifier, position: lsp.Position): Promise; doHover(document: lsp.TextDocumentIdentifier, position: lsp.Position): Promise; doResolve(item: lsp.CompletionItem): Promise; doValidation(document: lsp.TextDocumentIdentifier): Promise; format(document: lsp.TextDocumentIdentifier, range: lsp.Range, options: lsp.FormattingOptions): Promise; provideSignatureHelp(document: lsp.TextDocumentIdentifier, position: lsp.Position): Promise; findDocumentHighlights(document: lsp.TextDocumentIdentifier, position: lsp.Position): Promise; get optionsToFilterDiagnostics(): FilterDiagnosticsOptions; getSemanticTokens(document: lsp.TextDocumentIdentifier, range: lsp.Range): Promise; dispose(): Promise; closeConnection(): Promise; getCodeActions(document: lsp.TextDocumentIdentifier, range: lsp.Range, context: lsp.CodeActionContext): Promise<(lsp.Command | lsp.CodeAction)[] | null>; executeCommand(command: string, args?: any[]): Promise; sendAppliedResult(result: lsp.ApplyWorkspaceEditResult, callbackId: number): void; sendRequest(name: string, args?: LSPAny): Promise; sendResponse(callbackId: number, args?: LSPAny): void; } export {};