import { ProgressToken, RequestHandler, TraceValues } from 'vscode-jsonrpc'; import { MessageDirection, ProtocolRequestType, ProtocolRequestType0, ProtocolNotificationType, ProtocolNotificationType0 } from './messages'; import { Position, Range, Location, LocationLink, Diagnostic, Command, TextEdit, WorkspaceEdit, DocumentUri, TextDocumentIdentifier, VersionedTextDocumentIdentifier, TextDocumentItem, CompletionItem, CompletionList, Hover, SignatureHelp, Definition, ReferenceContext, DocumentHighlight, SymbolInformation, CodeLens, CodeActionContext, FormattingOptions, DocumentLink, MarkupKind, SymbolKind, CompletionItemKind, CodeAction, CodeActionKind, DocumentSymbol, CompletionItemTag, DiagnosticTag, SymbolTag, uinteger, integer, InsertTextMode, LSPAny, WorkspaceSymbol, URI, WorkspaceFolder } from 'vscode-languageserver-types'; import { ImplementationRequest, ImplementationClientCapabilities, ImplementationOptions, ImplementationRegistrationOptions, ImplementationParams } from './protocol.implementation'; import { TypeDefinitionRequest, TypeDefinitionClientCapabilities, TypeDefinitionOptions, TypeDefinitionRegistrationOptions, TypeDefinitionParams } from './protocol.typeDefinition'; import { WorkspaceFoldersRequest, DidChangeWorkspaceFoldersNotification, DidChangeWorkspaceFoldersParams, WorkspaceFoldersChangeEvent, WorkspaceFoldersInitializeParams, WorkspaceFoldersServerCapabilities } from './protocol.workspaceFolder'; import { ConfigurationRequest, ConfigurationParams, ConfigurationItem } from './protocol.configuration'; import { DocumentColorRequest, ColorPresentationRequest, DocumentColorOptions, DocumentColorParams, ColorPresentationParams, DocumentColorClientCapabilities, DocumentColorRegistrationOptions } from './protocol.colorProvider'; import { FoldingRangeClientCapabilities, FoldingRangeOptions, FoldingRangeRequest, FoldingRangeParams, FoldingRangeRegistrationOptions, FoldingRangeRefreshRequest, FoldingRangeWorkspaceClientCapabilities } from './protocol.foldingRange'; import { DeclarationClientCapabilities, DeclarationRequest, DeclarationOptions, DeclarationRegistrationOptions, DeclarationParams } from './protocol.declaration'; import { SelectionRangeClientCapabilities, SelectionRangeOptions, SelectionRangeRequest, SelectionRangeParams, SelectionRangeRegistrationOptions } from './protocol.selectionRange'; import { WorkDoneProgressBegin, WorkDoneProgressReport, WorkDoneProgressEnd, WorkDoneProgress, WorkDoneProgressCreateParams, WorkDoneProgressCreateRequest, WorkDoneProgressCancelParams, WorkDoneProgressCancelNotification } from './protocol.progress'; import { CallHierarchyClientCapabilities, CallHierarchyOptions, CallHierarchyRegistrationOptions, CallHierarchyIncomingCallsParams, CallHierarchyIncomingCallsRequest, CallHierarchyOutgoingCallsParams, CallHierarchyOutgoingCallsRequest, CallHierarchyPrepareParams, CallHierarchyPrepareRequest } from './protocol.callHierarchy'; import { SemanticTokensPartialResult, SemanticTokensDeltaPartialResult, TokenFormat, SemanticTokensClientCapabilities, SemanticTokensOptions, SemanticTokensRegistrationOptions, SemanticTokensParams, SemanticTokensRequest, SemanticTokensDeltaParams, SemanticTokensDeltaRequest, SemanticTokensRangeParams, SemanticTokensRangeRequest, SemanticTokensRefreshRequest, SemanticTokensWorkspaceClientCapabilities, SemanticTokensRegistrationType } from './protocol.semanticTokens'; import { ShowDocumentParams, ShowDocumentResult, ShowDocumentRequest, ShowDocumentClientCapabilities } from './protocol.showDocument'; import { LinkedEditingRangeClientCapabilities, LinkedEditingRanges, LinkedEditingRangeOptions, LinkedEditingRangeParams, LinkedEditingRangeRegistrationOptions, LinkedEditingRangeRequest } from './protocol.linkedEditingRange'; import { FileOperationOptions, FileOperationClientCapabilities, FileOperationRegistrationOptions, FileOperationPatternOptions, FileOperationPatternKind, DidCreateFilesNotification, CreateFilesParams, FileCreate, WillCreateFilesRequest, DidRenameFilesNotification, RenameFilesParams, FileRename, WillRenameFilesRequest, DidDeleteFilesNotification, DeleteFilesParams, FileDelete, WillDeleteFilesRequest } from './protocol.fileOperations'; import { UniquenessLevel, MonikerKind, Moniker, MonikerClientCapabilities, MonikerOptions, MonikerRegistrationOptions, MonikerParams, MonikerRequest } from './protocol.moniker'; import { TypeHierarchyClientCapabilities, TypeHierarchyOptions, TypeHierarchyRegistrationOptions, TypeHierarchyPrepareParams, TypeHierarchyPrepareRequest, TypeHierarchySubtypesParams, TypeHierarchySubtypesRequest, TypeHierarchySupertypesParams, TypeHierarchySupertypesRequest } from './protocol.typeHierarchy'; import { InlineValueClientCapabilities, InlineValueOptions, InlineValueRegistrationOptions, InlineValueWorkspaceClientCapabilities, InlineValueParams, InlineValueRequest, InlineValueRefreshRequest } from './protocol.inlineValue'; import { InlayHintClientCapabilities, InlayHintOptions, InlayHintRegistrationOptions, InlayHintWorkspaceClientCapabilities, InlayHintParams, InlayHintRequest, InlayHintResolveRequest, InlayHintRefreshRequest } from './protocol.inlayHint'; import { DiagnosticClientCapabilities, DiagnosticOptions, DiagnosticRegistrationOptions, DiagnosticServerCancellationData, DocumentDiagnosticParams, DocumentDiagnosticReportKind, FullDocumentDiagnosticReport, RelatedFullDocumentDiagnosticReport, UnchangedDocumentDiagnosticReport, RelatedUnchangedDocumentDiagnosticReport, DocumentDiagnosticReport, DocumentDiagnosticReportPartialResult, DocumentDiagnosticRequest, PreviousResultId, WorkspaceDiagnosticParams, WorkspaceFullDocumentDiagnosticReport, WorkspaceUnchangedDocumentDiagnosticReport, WorkspaceDocumentDiagnosticReport, WorkspaceDiagnosticReport, WorkspaceDiagnosticReportPartialResult, WorkspaceDiagnosticRequest, DiagnosticRefreshRequest, DiagnosticWorkspaceClientCapabilities } from './protocol.diagnostic'; import { NotebookDocumentSyncClientCapabilities, NotebookCellKind, ExecutionSummary, NotebookCell, NotebookDocument, NotebookDocumentIdentifier, VersionedNotebookDocumentIdentifier, NotebookDocumentSyncOptions, NotebookDocumentSyncRegistrationOptions, NotebookDocumentSyncRegistrationType, DidOpenNotebookDocumentParams, DidOpenNotebookDocumentNotification, NotebookCellArrayChange, NotebookDocumentChangeEvent, DidChangeNotebookDocumentParams, DidChangeNotebookDocumentNotification, DidSaveNotebookDocumentParams, DidSaveNotebookDocumentNotification, DidCloseNotebookDocumentParams, DidCloseNotebookDocumentNotification } from './protocol.notebook'; import { InlineCompletionClientCapabilities, InlineCompletionOptions, InlineCompletionParams, InlineCompletionRegistrationOptions, InlineCompletionRequest } from './protocol.inlineCompletion'; /** * A document filter denotes a document by different properties like * the {@link TextDocument.languageId language}, the {@link Uri.scheme scheme} of * its resource, or a glob-pattern that is applied to the {@link TextDocument.fileName path}. * * Glob patterns can have the following syntax: * - `*` to match one or more characters in a path segment * - `?` to match on one character in a path segment * - `**` to match any number of path segments, including none * - `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}` matches all TypeScript and JavaScript files) * - `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …) * - `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`) * * @sample A language filter that applies to typescript files on disk: `{ language: 'typescript', scheme: 'file' }` * @sample A language filter that applies to all package.json paths: `{ language: 'json', pattern: '**package.json' }` * * @since 3.17.0 */ export type TextDocumentFilter = { /** A language id, like `typescript`. */ language: string; /** A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. */ scheme?: string; /** A glob pattern, like **​/*.{ts,js}. See TextDocumentFilter for examples. */ pattern?: string; } | { /** A language id, like `typescript`. */ language?: string; /** A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. */ scheme: string; /** A glob pattern, like **​/*.{ts,js}. See TextDocumentFilter for examples. */ pattern?: string; } | { /** A language id, like `typescript`. */ language?: string; /** A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. */ scheme?: string; /** A glob pattern, like **​/*.{ts,js}. See TextDocumentFilter for examples. */ pattern: string; }; /** * The TextDocumentFilter namespace provides helper functions to work with * {@link TextDocumentFilter} literals. * * @since 3.17.0 */ export declare namespace TextDocumentFilter { function is(value: any): value is TextDocumentFilter; } /** * A notebook document filter denotes a notebook document by * different properties. The properties will be match * against the notebook's URI (same as with documents) * * @since 3.17.0 */ export type NotebookDocumentFilter = { /** The type of the enclosing notebook. */ notebookType: string; /** A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. */ scheme?: string; /** A glob pattern. */ pattern?: string; } | { /** The type of the enclosing notebook. */ notebookType?: string; /** A Uri {@link Uri.scheme scheme}, like `file` or `untitled`.*/ scheme: string; /** A glob pattern. */ pattern?: string; } | { /** The type of the enclosing notebook. */ notebookType?: string; /** A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. */ scheme?: string; /** A glob pattern. */ pattern: string; }; /** * The NotebookDocumentFilter namespace provides helper functions to work with * {@link NotebookDocumentFilter} literals. * * @since 3.17.0 */ export declare namespace NotebookDocumentFilter { function is(value: any): value is NotebookDocumentFilter; } /** * A notebook cell text document filter denotes a cell text * document by different properties. * * @since 3.17.0 */ export type NotebookCellTextDocumentFilter = { /** * A filter that matches against the notebook * containing the notebook cell. If a string * value is provided it matches against the * notebook type. '*' matches every notebook. */ notebook: string | NotebookDocumentFilter; /** * A language id like `python`. * * Will be matched against the language id of the * notebook cell document. '*' matches every language. */ language?: string; }; /** * The NotebookCellTextDocumentFilter namespace provides helper functions to work with * {@link NotebookCellTextDocumentFilter} literals. * * @since 3.17.0 */ export declare namespace NotebookCellTextDocumentFilter { function is(value: any): value is NotebookCellTextDocumentFilter; } /** * A document filter describes a top level text document or * a notebook cell document. * * @since 3.17.0 - proposed support for NotebookCellTextDocumentFilter. */ export type DocumentFilter = TextDocumentFilter | NotebookCellTextDocumentFilter; /** * A document selector is the combination of one or many document filters. * * @sample `let sel:DocumentSelector = [{ language: 'typescript' }, { language: 'json', pattern: '**∕tsconfig.json' }]`; * * The use of a string as a document filter is deprecated @since 3.16.0. */ export type DocumentSelector = (string | DocumentFilter)[]; /** * The DocumentSelector namespace provides helper functions to work with * {@link DocumentSelector}s. */ export declare namespace DocumentSelector { function is(value: any[] | undefined | null): value is DocumentSelector; } /** * General parameters to register for a notification or to register a provider. */ export interface Registration { /** * The id used to register the request. The id can be used to deregister * the request again. */ id: string; /** * The method / capability to register for. */ method: string; /** * Options necessary for the registration. */ registerOptions?: LSPAny; } export interface RegistrationParams { registrations: Registration[]; } /** * The `client/registerCapability` request is sent from the server to the client to register a new capability * handler on the client side. */ export declare namespace RegistrationRequest { const method: 'client/registerCapability'; const messageDirection: MessageDirection; const type: ProtocolRequestType; type HandlerSignature = RequestHandler; } /** * General parameters to unregister a request or notification. */ export interface Unregistration { /** * The id used to unregister the request or notification. Usually an id * provided during the register request. */ id: string; /** * The method to unregister for. */ method: string; } export interface UnregistrationParams { unregisterations: Unregistration[]; } /** * The `client/unregisterCapability` request is sent from the server to the client to unregister a previously registered capability * handler on the client side. */ export declare namespace UnregistrationRequest { const method: 'client/unregisterCapability'; const messageDirection: MessageDirection; const type: ProtocolRequestType; type HandlerSignature = RequestHandler; } export interface WorkDoneProgressParams { /** * An optional token that a server can use to report work done progress. */ workDoneToken?: ProgressToken; } export interface PartialResultParams { /** * An optional token that a server can use to report partial results (e.g. streaming) to * the client. */ partialResultToken?: ProgressToken; } /** * A parameter literal used in requests to pass a text document and a position inside that * document. */ export interface TextDocumentPositionParams { /** * The text document. */ textDocument: TextDocumentIdentifier; /** * The position inside the text document. */ position: Position; } /** * The kind of resource operations supported by the client. */ export type ResourceOperationKind = 'create' | 'rename' | 'delete'; export declare namespace ResourceOperationKind { /** * Supports creating new files and folders. */ const Create: ResourceOperationKind; /** * Supports renaming existing files and folders. */ const Rename: ResourceOperationKind; /** * Supports deleting existing files and folders. */ const Delete: ResourceOperationKind; } export type FailureHandlingKind = 'abort' | 'transactional' | 'undo' | 'textOnlyTransactional'; export declare namespace FailureHandlingKind { /** * Applying the workspace change is simply aborted if one of the changes provided * fails. All operations executed before the failing operation stay executed. */ const Abort: FailureHandlingKind; /** * All operations are executed transactional. That means they either all * succeed or no changes at all are applied to the workspace. */ const Transactional: FailureHandlingKind; /** * If the workspace edit contains only textual file changes they are executed transactional. * If resource changes (create, rename or delete file) are part of the change the failure * handling strategy is abort. */ const TextOnlyTransactional: FailureHandlingKind; /** * The client tries to undo the operations already executed. But there is no * guarantee that this is succeeding. */ const Undo: FailureHandlingKind; } /** * Workspace specific client capabilities. */ export interface WorkspaceClientCapabilities { /** * The client supports applying batch edits * to the workspace by supporting the request * 'workspace/applyEdit' */ applyEdit?: boolean; /** * Capabilities specific to `WorkspaceEdit`s. */ workspaceEdit?: WorkspaceEditClientCapabilities; /** * Capabilities specific to the `workspace/didChangeConfiguration` notification. */ didChangeConfiguration?: DidChangeConfigurationClientCapabilities; /** * Capabilities specific to the `workspace/didChangeWatchedFiles` notification. */ didChangeWatchedFiles?: DidChangeWatchedFilesClientCapabilities; /** * Capabilities specific to the `workspace/symbol` request. */ symbol?: WorkspaceSymbolClientCapabilities; /** * Capabilities specific to the `workspace/executeCommand` request. */ executeCommand?: ExecuteCommandClientCapabilities; /** * The client has support for workspace folders. * * @since 3.6.0 */ workspaceFolders?: boolean; /** * The client supports `workspace/configuration` requests. * * @since 3.6.0 */ configuration?: boolean; /** * Capabilities specific to the semantic token requests scoped to the * workspace. * * @since 3.16.0. */ semanticTokens?: SemanticTokensWorkspaceClientCapabilities; /** * Capabilities specific to the code lens requests scoped to the * workspace. * * @since 3.16.0. */ codeLens?: CodeLensWorkspaceClientCapabilities; /** * The client has support for file notifications/requests for user operations on files. * * Since 3.16.0 */ fileOperations?: FileOperationClientCapabilities; /** * Capabilities specific to the inline values requests scoped to the * workspace. * * @since 3.17.0. */ inlineValue?: InlineValueWorkspaceClientCapabilities; /** * Capabilities specific to the inlay hint requests scoped to the * workspace. * * @since 3.17.0. */ inlayHint?: InlayHintWorkspaceClientCapabilities; /** * Capabilities specific to the diagnostic requests scoped to the * workspace. * * @since 3.17.0. */ diagnostics?: DiagnosticWorkspaceClientCapabilities; /** * Capabilities specific to the folding range requests scoped to the workspace. * * @since 3.18.0 * @proposed */ foldingRange?: FoldingRangeWorkspaceClientCapabilities; } /** * Text document specific client capabilities. */ export interface TextDocumentClientCapabilities { /** * Defines which synchronization capabilities the client supports. */ synchronization?: TextDocumentSyncClientCapabilities; /** * Capabilities specific to the `textDocument/completion` request. */ completion?: CompletionClientCapabilities; /** * Capabilities specific to the `textDocument/hover` request. */ hover?: HoverClientCapabilities; /** * Capabilities specific to the `textDocument/signatureHelp` request. */ signatureHelp?: SignatureHelpClientCapabilities; /** * Capabilities specific to the `textDocument/declaration` request. * * @since 3.14.0 */ declaration?: DeclarationClientCapabilities; /** * Capabilities specific to the `textDocument/definition` request. */ definition?: DefinitionClientCapabilities; /** * Capabilities specific to the `textDocument/typeDefinition` request. * * @since 3.6.0 */ typeDefinition?: TypeDefinitionClientCapabilities; /** * Capabilities specific to the `textDocument/implementation` request. * * @since 3.6.0 */ implementation?: ImplementationClientCapabilities; /** * Capabilities specific to the `textDocument/references` request. */ references?: ReferenceClientCapabilities; /** * Capabilities specific to the `textDocument/documentHighlight` request. */ documentHighlight?: DocumentHighlightClientCapabilities; /** * Capabilities specific to the `textDocument/documentSymbol` request. */ documentSymbol?: DocumentSymbolClientCapabilities; /** * Capabilities specific to the `textDocument/codeAction` request. */ codeAction?: CodeActionClientCapabilities; /** * Capabilities specific to the `textDocument/codeLens` request. */ codeLens?: CodeLensClientCapabilities; /** * Capabilities specific to the `textDocument/documentLink` request. */ documentLink?: DocumentLinkClientCapabilities; /** * Capabilities specific to the `textDocument/documentColor` and the * `textDocument/colorPresentation` request. * * @since 3.6.0 */ colorProvider?: DocumentColorClientCapabilities; /** * Capabilities specific to the `textDocument/formatting` request. */ formatting?: DocumentFormattingClientCapabilities; /** * Capabilities specific to the `textDocument/rangeFormatting` request. */ rangeFormatting?: DocumentRangeFormattingClientCapabilities; /** * Capabilities specific to the `textDocument/onTypeFormatting` request. */ onTypeFormatting?: DocumentOnTypeFormattingClientCapabilities; /** * Capabilities specific to the `textDocument/rename` request. */ rename?: RenameClientCapabilities; /** * Capabilities specific to the `textDocument/foldingRange` request. * * @since 3.10.0 */ foldingRange?: FoldingRangeClientCapabilities; /** * Capabilities specific to the `textDocument/selectionRange` request. * * @since 3.15.0 */ selectionRange?: SelectionRangeClientCapabilities; /** * Capabilities specific to the `textDocument/publishDiagnostics` notification. */ publishDiagnostics?: PublishDiagnosticsClientCapabilities; /** * Capabilities specific to the various call hierarchy requests. * * @since 3.16.0 */ callHierarchy?: CallHierarchyClientCapabilities; /** * Capabilities specific to the various semantic token request. * * @since 3.16.0 */ semanticTokens?: SemanticTokensClientCapabilities; /** * Capabilities specific to the `textDocument/linkedEditingRange` request. * * @since 3.16.0 */ linkedEditingRange?: LinkedEditingRangeClientCapabilities; /** * Client capabilities specific to the `textDocument/moniker` request. * * @since 3.16.0 */ moniker?: MonikerClientCapabilities; /** * Capabilities specific to the various type hierarchy requests. * * @since 3.17.0 */ typeHierarchy?: TypeHierarchyClientCapabilities; /** * Capabilities specific to the `textDocument/inlineValue` request. * * @since 3.17.0 */ inlineValue?: InlineValueClientCapabilities; /** * Capabilities specific to the `textDocument/inlayHint` request. * * @since 3.17.0 */ inlayHint?: InlayHintClientCapabilities; /** * Capabilities specific to the diagnostic pull model. * * @since 3.17.0 */ diagnostic?: DiagnosticClientCapabilities; /** * Client capabilities specific to inline completions. * * @since 3.18.0 * @proposed */ inlineCompletion?: InlineCompletionClientCapabilities; } export interface WindowClientCapabilities { /** * It indicates whether the client supports server initiated * progress using the `window/workDoneProgress/create` request. * * The capability also controls Whether client supports handling * of progress notifications. If set servers are allowed to report a * `workDoneProgress` property in the request specific server * capabilities. * * @since 3.15.0 */ workDoneProgress?: boolean; /** * Capabilities specific to the showMessage request. * * @since 3.16.0 */ showMessage?: ShowMessageRequestClientCapabilities; /** * Capabilities specific to the showDocument request. * * @since 3.16.0 */ showDocument?: ShowDocumentClientCapabilities; } /** * Client capabilities specific to regular expressions. * * @since 3.16.0 */ export interface RegularExpressionsClientCapabilities { /** * The engine's name. */ engine: string; /** * The engine's version. */ version?: string; } /** * Client capabilities specific to the used markdown parser. * * @since 3.16.0 */ export interface MarkdownClientCapabilities { /** * The name of the parser. */ parser: string; /** * The version of the parser. */ version?: string; /** * A list of HTML tags that the client allows / supports in * Markdown. * * @since 3.17.0 */ allowedTags?: string[]; } /** * A set of predefined position encoding kinds. * * @since 3.17.0 */ export declare namespace PositionEncodingKind { /** * Character offsets count UTF-8 code units (e.g. bytes). */ const UTF8: PositionEncodingKind; /** * Character offsets count UTF-16 code units. * * This is the default and must always be supported * by servers */ const UTF16: PositionEncodingKind; /** * Character offsets count UTF-32 code units. * * Implementation note: these are the same as Unicode codepoints, * so this `PositionEncodingKind` may also be used for an * encoding-agnostic representation of character offsets. */ const UTF32: PositionEncodingKind; } /** * A type indicating how positions are encoded, * specifically what column offsets mean. * * @since 3.17.0 */ export type PositionEncodingKind = string; /** * General client capabilities. * * @since 3.16.0 */ export interface GeneralClientCapabilities { /** * Client capability that signals how the client * handles stale requests (e.g. a request * for which the client will not process the response * anymore since the information is outdated). * * @since 3.17.0 */ staleRequestSupport?: { /** * The client will actively cancel the request. */ cancel: boolean; /** * The list of requests for which the client * will retry the request if it receives a * response with error code `ContentModified` */ retryOnContentModified: string[]; }; /** * Client capabilities specific to regular expressions. * * @since 3.16.0 */ regularExpressions?: RegularExpressionsClientCapabilities; /** * Client capabilities specific to the client's markdown parser. * * @since 3.16.0 */ markdown?: MarkdownClientCapabilities; /** * The position encodings supported by the client. Client and server * have to agree on the same position encoding to ensure that offsets * (e.g. character position in a line) are interpreted the same on both * sides. * * To keep the protocol backwards compatible the following applies: if * the value 'utf-16' is missing from the array of position encodings * servers can assume that the client supports UTF-16. UTF-16 is * therefore a mandatory encoding. * * If omitted it defaults to ['utf-16']. * * Implementation considerations: since the conversion from one encoding * into another requires the content of the file / line the conversion * is best done where the file is read which is usually on the server * side. * * @since 3.17.0 */ positionEncodings?: PositionEncodingKind[]; } /** * Capabilities specific to the notebook document support. * * @since 3.17.0 */ export interface NotebookDocumentClientCapabilities { /** * Capabilities specific to notebook document synchronization * * @since 3.17.0 */ synchronization: NotebookDocumentSyncClientCapabilities; } /** * Defines the capabilities provided by the client. */ export interface ClientCapabilities { /** * Workspace specific client capabilities. */ workspace?: WorkspaceClientCapabilities; /** * Text document specific client capabilities. */ textDocument?: TextDocumentClientCapabilities; /** * Capabilities specific to the notebook document support. * * @since 3.17.0 */ notebookDocument?: NotebookDocumentClientCapabilities; /** * Window specific client capabilities. */ window?: WindowClientCapabilities; /** * General client capabilities. * * @since 3.16.0 */ general?: GeneralClientCapabilities; /** * Experimental client capabilities. */ experimental?: LSPAny; } /** * Static registration options to be returned in the initialize * request. */ export interface StaticRegistrationOptions { /** * The id used to register the request. The id can be used to deregister * the request again. See also Registration#id. */ id?: string; } /** * The StaticRegistrationOptions namespace provides helper functions to work with * {@link StaticRegistrationOptions} literals. */ export declare namespace StaticRegistrationOptions { function hasId(value: object): value is { id: string; }; } /** * General text document registration options. */ export interface TextDocumentRegistrationOptions { /** * A document selector to identify the scope of the registration. If set to null * the document selector provided on the client side will be used. */ documentSelector: DocumentSelector | null; } /** * The TextDocumentRegistrationOptions namespace provides helper functions to work with * {@link TextDocumentRegistrationOptions} literals. */ export declare namespace TextDocumentRegistrationOptions { function is(value: any): value is TextDocumentRegistrationOptions; } /** * Save options. */ export interface SaveOptions { /** * The client is supposed to include the content on save. */ includeText?: boolean; } export interface WorkDoneProgressOptions { workDoneProgress?: boolean; } /** * The WorkDoneProgressOptions namespace provides helper functions to work with * {@link WorkDoneProgressOptions} literals. */ export declare namespace WorkDoneProgressOptions { function is(value: any): value is WorkDoneProgressOptions; function hasWorkDoneProgress(value: any): value is { workDoneProgress: boolean; }; } /** * Defines the capabilities provided by a language * server. */ export interface ServerCapabilities { /** * The position encoding the server picked from the encodings offered * by the client via the client capability `general.positionEncodings`. * * If the client didn't provide any position encodings the only valid * value that a server can return is 'utf-16'. * * If omitted it defaults to 'utf-16'. * * @since 3.17.0 */ positionEncoding?: PositionEncodingKind; /** * Defines how text documents are synced. Is either a detailed structure * defining each notification or for backwards compatibility the * TextDocumentSyncKind number. */ textDocumentSync?: TextDocumentSyncOptions | TextDocumentSyncKind; /** * Defines how notebook documents are synced. * * @since 3.17.0 */ notebookDocumentSync?: NotebookDocumentSyncOptions | NotebookDocumentSyncRegistrationOptions; /** * The server provides completion support. */ completionProvider?: CompletionOptions; /** * The server provides hover support. */ hoverProvider?: boolean | HoverOptions; /** * The server provides signature help support. */ signatureHelpProvider?: SignatureHelpOptions; /** * The server provides Goto Declaration support. */ declarationProvider?: boolean | DeclarationOptions | DeclarationRegistrationOptions; /** * The server provides goto definition support. */ definitionProvider?: boolean | DefinitionOptions; /** * The server provides Goto Type Definition support. */ typeDefinitionProvider?: boolean | TypeDefinitionOptions | TypeDefinitionRegistrationOptions; /** * The server provides Goto Implementation support. */ implementationProvider?: boolean | ImplementationOptions | ImplementationRegistrationOptions; /** * The server provides find references support. */ referencesProvider?: boolean | ReferenceOptions; /** * The server provides document highlight support. */ documentHighlightProvider?: boolean | DocumentHighlightOptions; /** * The server provides document symbol support. */ documentSymbolProvider?: boolean | DocumentSymbolOptions; /** * The server provides code actions. CodeActionOptions may only be * specified if the client states that it supports * `codeActionLiteralSupport` in its initial `initialize` request. */ codeActionProvider?: boolean | CodeActionOptions; /** * The server provides code lens. */ codeLensProvider?: CodeLensOptions; /** * The server provides document link support. */ documentLinkProvider?: DocumentLinkOptions; /** * The server provides color provider support. */ colorProvider?: boolean | DocumentColorOptions | DocumentColorRegistrationOptions; /** * The server provides workspace symbol support. */ workspaceSymbolProvider?: boolean | WorkspaceSymbolOptions; /** * The server provides document formatting. */ documentFormattingProvider?: boolean | DocumentFormattingOptions; /** * The server provides document range formatting. */ documentRangeFormattingProvider?: boolean | DocumentRangeFormattingOptions; /** * The server provides document formatting on typing. */ documentOnTypeFormattingProvider?: DocumentOnTypeFormattingOptions; /** * The server provides rename support. RenameOptions may only be * specified if the client states that it supports * `prepareSupport` in its initial `initialize` request. */ renameProvider?: boolean | RenameOptions; /** * The server provides folding provider support. */ foldingRangeProvider?: boolean | FoldingRangeOptions | FoldingRangeRegistrationOptions; /** * The server provides selection range support. */ selectionRangeProvider?: boolean | SelectionRangeOptions | SelectionRangeRegistrationOptions; /** * The server provides execute command support. */ executeCommandProvider?: ExecuteCommandOptions; /** * The server provides call hierarchy support. * * @since 3.16.0 */ callHierarchyProvider?: boolean | CallHierarchyOptions | CallHierarchyRegistrationOptions; /** * The server provides linked editing range support. * * @since 3.16.0 */ linkedEditingRangeProvider?: boolean | LinkedEditingRangeOptions | LinkedEditingRangeRegistrationOptions; /** * The server provides semantic tokens support. * * @since 3.16.0 */ semanticTokensProvider?: SemanticTokensOptions | SemanticTokensRegistrationOptions; /** * The server provides moniker support. * * @since 3.16.0 */ monikerProvider?: boolean | MonikerOptions | MonikerRegistrationOptions; /** * The server provides type hierarchy support. * * @since 3.17.0 */ typeHierarchyProvider?: boolean | TypeHierarchyOptions | TypeHierarchyRegistrationOptions; /** * The server provides inline values. * * @since 3.17.0 */ inlineValueProvider?: boolean | InlineValueOptions | InlineValueRegistrationOptions; /** * The server provides inlay hints. * * @since 3.17.0 */ inlayHintProvider?: boolean | InlayHintOptions | InlayHintRegistrationOptions; /** * The server has support for pull model diagnostics. * * @since 3.17.0 */ diagnosticProvider?: DiagnosticOptions | DiagnosticRegistrationOptions; /** * Inline completion options used during static registration. * * @since 3.18.0 * @proposed */ inlineCompletionProvider?: boolean | InlineCompletionOptions; /** * Workspace specific server capabilities. */ workspace?: { /** * The server supports workspace folder. * * @since 3.6.0 */ workspaceFolders?: WorkspaceFoldersServerCapabilities; /** * The server is interested in notifications/requests for operations on files. * * @since 3.16.0 */ fileOperations?: FileOperationOptions; }; /** * Experimental server capabilities. */ experimental?: T; } /** * The initialize request is sent from the client to the server. * It is sent once as the request after starting up the server. * The requests parameter is of type {@link InitializeParams} * the response if of type {@link InitializeResult} of a Thenable that * resolves to such. */ export declare namespace InitializeRequest { const method: 'initialize'; const messageDirection: MessageDirection; const type: ProtocolRequestType, never, InitializeError, void>; } /** * The initialize parameters */ export interface _InitializeParams extends WorkDoneProgressParams { /** * The process Id of the parent process that started * the server. * * Is `null` if the process has not been started by another process. * If the parent process is not alive then the server should exit. */ processId: integer | null; /** * Information about the client * * @since 3.15.0 */ clientInfo?: { /** * The name of the client as defined by the client. */ name: string; /** * The client's version as defined by the client. */ version?: string; }; /** * The locale the client is currently showing the user interface * in. This must not necessarily be the locale of the operating * system. * * Uses IETF language tags as the value's syntax * (See https://en.wikipedia.org/wiki/IETF_language_tag) * * @since 3.16.0 */ locale?: string; /** * The rootPath of the workspace. Is null * if no folder is open. * * @deprecated in favour of rootUri. */ rootPath?: string | null; /** * The rootUri of the workspace. Is null if no * folder is open. If both `rootPath` and `rootUri` are set * `rootUri` wins. * * @deprecated in favour of workspaceFolders. */ rootUri: DocumentUri | null; /** * The capabilities provided by the client (editor or tool) */ capabilities: ClientCapabilities; /** * User provided initialization options. */ initializationOptions?: LSPAny; /** * The initial trace setting. If omitted trace is disabled ('off'). */ trace?: TraceValues; } export type InitializeParams = _InitializeParams & WorkspaceFoldersInitializeParams; /** * The result returned from an initialize request. */ export interface InitializeResult { /** * The capabilities the language server provides. */ capabilities: ServerCapabilities; /** * Information about the server. * * @since 3.15.0 */ serverInfo?: { /** * The name of the server as defined by the server. */ name: string; /** * The server's version as defined by the server. */ version?: string; }; /** * Custom initialization results. */ [custom: string]: LSPAny | ServerCapabilities | undefined; /** undefined is needed since serverInfo is optional */ } /** * Known error codes for an `InitializeErrorCodes`; */ export declare namespace InitializeErrorCodes { /** * If the protocol version provided by the client can't be handled by the server. * * @deprecated This initialize error got replaced by client capabilities. There is * no version handshake in version 3.0x */ const unknownProtocolVersion: 1; } export type InitializeErrorCodes = 1; /** * The data type of the ResponseError if the * initialize request fails. */ export interface InitializeError { /** * Indicates whether the client execute the following retry logic: * (1) show the message provided by the ResponseError to the user * (2) user selects retry or cancel * (3) if user selected retry the initialize method is sent again. */ retry: boolean; } export interface InitializedParams { } /** * The initialized notification is sent from the client to the * server after the client is fully initialized and the server * is allowed to send requests from the server to the client. */ export declare namespace InitializedNotification { const method: 'initialized'; const messageDirection: MessageDirection; const type: ProtocolNotificationType; } /** * A shutdown request is sent from the client to the server. * It is sent once when the client decides to shutdown the * server. The only notification that is sent after a shutdown request * is the exit event. */ export declare namespace ShutdownRequest { const method: 'shutdown'; const messageDirection: MessageDirection; const type: ProtocolRequestType0; } /** * The exit event is sent from the client to the server to * ask the server to exit its process. */ export declare namespace ExitNotification { const method: 'exit'; const messageDirection: MessageDirection; const type: ProtocolNotificationType0; } export interface DidChangeConfigurationClientCapabilities { /** * Did change configuration notification supports dynamic registration. */ dynamicRegistration?: boolean; } /** * The configuration change notification is sent from the client to the server * when the client's configuration has changed. The notification contains * the changed configuration as defined by the language client. */ export declare namespace DidChangeConfigurationNotification { const method: 'workspace/didChangeConfiguration'; const messageDirection: MessageDirection; const type: ProtocolNotificationType; } export interface DidChangeConfigurationRegistrationOptions { section?: string | string[]; } /** * The parameters of a change configuration notification. */ export interface DidChangeConfigurationParams { /** * The actual changed settings */ settings: LSPAny; } /** * The message type */ export declare namespace MessageType { /** * An error message. */ const Error = 1; /** * A warning message. */ const Warning = 2; /** * An information message. */ const Info = 3; /** * A log message. */ const Log = 4; /** * A debug message. * * @since 3.18.0 */ const Debug = 5; } export type MessageType = 1 | 2 | 3 | 4 | 5; /** * The parameters of a notification message. */ export interface ShowMessageParams { /** * The message type. See {@link MessageType} */ type: MessageType; /** * The actual message. */ message: string; } /** * The show message notification is sent from a server to a client to ask * the client to display a particular message in the user interface. */ export declare namespace ShowMessageNotification { const method: 'window/showMessage'; const messageDirection: MessageDirection; const type: ProtocolNotificationType; } /** * Show message request client capabilities */ export interface ShowMessageRequestClientCapabilities { /** * Capabilities specific to the `MessageActionItem` type. */ messageActionItem?: { /** * Whether the client supports additional attributes which * are preserved and send back to the server in the * request's response. */ additionalPropertiesSupport?: boolean; }; } export interface MessageActionItem { /** * A short title like 'Retry', 'Open Log' etc. */ title: string; /** * Additional attributes that the client preserves and * sends back to the server. This depends on the client * capability window.messageActionItem.additionalPropertiesSupport */ [key: string]: string | boolean | integer | object; } export interface ShowMessageRequestParams { /** * The message type. See {@link MessageType} */ type: MessageType; /** * The actual message. */ message: string; /** * The message action items to present. */ actions?: MessageActionItem[]; } /** * The show message request is sent from the server to the client to show a message * and a set of options actions to the user. */ export declare namespace ShowMessageRequest { const method: 'window/showMessageRequest'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * The log message notification is sent from the server to the client to ask * the client to log a particular message. */ export declare namespace LogMessageNotification { const method: 'window/logMessage'; const messageDirection: MessageDirection; const type: ProtocolNotificationType; } /** * The log message parameters. */ export interface LogMessageParams { /** * The message type. See {@link MessageType} */ type: MessageType; /** * The actual message. */ message: string; } /** * The telemetry event notification is sent from the server to the client to ask * the client to log telemetry data. */ export declare namespace TelemetryEventNotification { const method: 'telemetry/event'; const messageDirection: MessageDirection; const type: ProtocolNotificationType; } export interface TextDocumentSyncClientCapabilities { /** * Whether text document synchronization supports dynamic registration. */ dynamicRegistration?: boolean; /** * The client supports sending will save notifications. */ willSave?: boolean; /** * The client supports sending a will save request and * waits for a response providing text edits which will * be applied to the document before it is saved. */ willSaveWaitUntil?: boolean; /** * The client supports did save notifications. */ didSave?: boolean; } /** * Defines how the host (editor) should sync * document changes to the language server. */ export declare namespace TextDocumentSyncKind { /** * Documents should not be synced at all. */ const None = 0; /** * Documents are synced by always sending the full content * of the document. */ const Full = 1; /** * Documents are synced by sending the full content on open. * After that only incremental updates to the document are * send. */ const Incremental = 2; } export type TextDocumentSyncKind = 0 | 1 | 2; export interface TextDocumentSyncOptions { /** * Open and close notifications are sent to the server. If omitted open close notification should not * be sent. */ openClose?: boolean; /** * Change notifications are sent to the server. See TextDocumentSyncKind.None, TextDocumentSyncKind.Full * and TextDocumentSyncKind.Incremental. If omitted it defaults to TextDocumentSyncKind.None. */ change?: TextDocumentSyncKind; /** * If present will save notifications are sent to the server. If omitted the notification should not be * sent. */ willSave?: boolean; /** * If present will save wait until requests are sent to the server. If omitted the request should not be * sent. */ willSaveWaitUntil?: boolean; /** * If present save notifications are sent to the server. If omitted the notification should not be * sent. */ save?: boolean | SaveOptions; } /** * The parameters sent in an open text document notification */ export interface DidOpenTextDocumentParams { /** * The document that was opened. */ textDocument: TextDocumentItem; } /** * The document open notification is sent from the client to the server to signal * newly opened text documents. The document's truth is now managed by the client * and the server must not try to read the document's truth using the document's * uri. Open in this sense means it is managed by the client. It doesn't necessarily * mean that its content is presented in an editor. An open notification must not * be sent more than once without a corresponding close notification send before. * This means open and close notification must be balanced and the max open count * is one. */ export declare namespace DidOpenTextDocumentNotification { const method: 'textDocument/didOpen'; const messageDirection: MessageDirection; const type: ProtocolNotificationType; } /** * An event describing a change to a text document. If only a text is provided * it is considered to be the full content of the document. */ export type TextDocumentContentChangeEvent = { /** * The range of the document that changed. */ range: Range; /** * The optional length of the range that got replaced. * * @deprecated use range instead. */ rangeLength?: uinteger; /** * The new text for the provided range. */ text: string; } | { /** * The new text of the whole document. */ text: string; }; export declare namespace TextDocumentContentChangeEvent { /** * Checks whether the information describes a delta event. */ function isIncremental(event: TextDocumentContentChangeEvent): event is { range: Range; rangeLength?: uinteger; text: string; }; /** * Checks whether the information describes a full replacement event. */ function isFull(event: TextDocumentContentChangeEvent): event is { text: string; }; } /** * The change text document notification's parameters. */ export interface DidChangeTextDocumentParams { /** * The document that did change. The version number points * to the version after all provided content changes have * been applied. */ textDocument: VersionedTextDocumentIdentifier; /** * The actual content changes. The content changes describe single state changes * to the document. So if there are two content changes c1 (at array index 0) and * c2 (at array index 1) for a document in state S then c1 moves the document from * S to S' and c2 from S' to S''. So c1 is computed on the state S and c2 is computed * on the state S'. * * To mirror the content of a document using change events use the following approach: * - start with the same initial content * - apply the 'textDocument/didChange' notifications in the order you receive them. * - apply the `TextDocumentContentChangeEvent`s in a single notification in the order * you receive them. */ contentChanges: TextDocumentContentChangeEvent[]; } /** * Describe options to be used when registered for text document change events. */ export interface TextDocumentChangeRegistrationOptions extends TextDocumentRegistrationOptions { /** * How documents are synced to the server. */ syncKind: TextDocumentSyncKind; } /** * The document change notification is sent from the client to the server to signal * changes to a text document. */ export declare namespace DidChangeTextDocumentNotification { const method: 'textDocument/didChange'; const messageDirection: MessageDirection; const type: ProtocolNotificationType; } /** * The parameters sent in a close text document notification */ export interface DidCloseTextDocumentParams { /** * The document that was closed. */ textDocument: TextDocumentIdentifier; } /** * The document close notification is sent from the client to the server when * the document got closed in the client. The document's truth now exists where * the document's uri points to (e.g. if the document's uri is a file uri the * truth now exists on disk). As with the open notification the close notification * is about managing the document's content. Receiving a close notification * doesn't mean that the document was open in an editor before. A close * notification requires a previous open notification to be sent. */ export declare namespace DidCloseTextDocumentNotification { const method: 'textDocument/didClose'; const messageDirection: MessageDirection; const type: ProtocolNotificationType; } /** * The parameters sent in a save text document notification */ export interface DidSaveTextDocumentParams { /** * The document that was saved. */ textDocument: TextDocumentIdentifier; /** * Optional the content when saved. Depends on the includeText value * when the save notification was requested. */ text?: string; } /** * Save registration options. */ export interface TextDocumentSaveRegistrationOptions extends TextDocumentRegistrationOptions, SaveOptions { } /** * The document save notification is sent from the client to the server when * the document got saved in the client. */ export declare namespace DidSaveTextDocumentNotification { const method: 'textDocument/didSave'; const messageDirection: MessageDirection; const type: ProtocolNotificationType; } /** * Represents reasons why a text document is saved. */ export declare namespace TextDocumentSaveReason { /** * Manually triggered, e.g. by the user pressing save, by starting debugging, * or by an API call. */ const Manual: 1; /** * Automatic after a delay. */ const AfterDelay: 2; /** * When the editor lost focus. */ const FocusOut: 3; } export type TextDocumentSaveReason = 1 | 2 | 3; /** * The parameters sent in a will save text document notification. */ export interface WillSaveTextDocumentParams { /** * The document that will be saved. */ textDocument: TextDocumentIdentifier; /** * The 'TextDocumentSaveReason'. */ reason: TextDocumentSaveReason; } /** * A document will save notification is sent from the client to the server before * the document is actually saved. */ export declare namespace WillSaveTextDocumentNotification { const method: 'textDocument/willSave'; const messageDirection: MessageDirection; const type: ProtocolNotificationType; } /** * A document will save request is sent from the client to the server before * the document is actually saved. The request can return an array of TextEdits * which will be applied to the text document before it is saved. Please note that * clients might drop results if computing the text edits took too long or if a * server constantly fails on this request. This is done to keep the save fast and * reliable. */ export declare namespace WillSaveTextDocumentWaitUntilRequest { const method: 'textDocument/willSaveWaitUntil'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } export interface DidChangeWatchedFilesClientCapabilities { /** * Did change watched files notification supports dynamic registration. Please note * that the current protocol doesn't support static configuration for file changes * from the server side. */ dynamicRegistration?: boolean; /** * Whether the client has support for {@link RelativePattern relative pattern} * or not. * * @since 3.17.0 */ relativePatternSupport?: boolean; } /** * The watched files notification is sent from the client to the server when * the client detects changes to file watched by the language client. */ export declare namespace DidChangeWatchedFilesNotification { const method: 'workspace/didChangeWatchedFiles'; const messageDirection: MessageDirection; const type: ProtocolNotificationType; } /** * The watched files change notification's parameters. */ export interface DidChangeWatchedFilesParams { /** * The actual file events. */ changes: FileEvent[]; } /** * The file event type */ export declare namespace FileChangeType { /** * The file got created. */ const Created = 1; /** * The file got changed. */ const Changed = 2; /** * The file got deleted. */ const Deleted = 3; } export type FileChangeType = 1 | 2 | 3; /** * An event describing a file change. */ export interface FileEvent { /** * The file's uri. */ uri: DocumentUri; /** * The change type. */ type: FileChangeType; } /** * Describe options to be used when registered for text document change events. */ export interface DidChangeWatchedFilesRegistrationOptions { /** * The watchers to register. */ watchers: FileSystemWatcher[]; } /** * The glob pattern to watch relative to the base path. Glob patterns can have the following syntax: * - `*` to match one or more characters in a path segment * - `?` to match on one character in a path segment * - `**` to match any number of path segments, including none * - `{}` to group conditions (e.g. `**​/*.{ts,js}` matches all TypeScript and JavaScript files) * - `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …) * - `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`) * * @since 3.17.0 */ export type Pattern = string; /** * A relative pattern is a helper to construct glob patterns that are matched * relatively to a base URI. The common value for a `baseUri` is a workspace * folder root, but it can be another absolute URI as well. * * @since 3.17.0 */ export interface RelativePattern { /** * A workspace folder or a base URI to which this pattern will be matched * against relatively. */ baseUri: WorkspaceFolder | URI; /** * The actual glob pattern; */ pattern: Pattern; } export declare namespace RelativePattern { function is(value: any): value is RelativePattern; } /** * The glob pattern. Either a string pattern or a relative pattern. * * @since 3.17.0 */ export type GlobPattern = Pattern | RelativePattern; export interface FileSystemWatcher { /** * The glob pattern to watch. See {@link GlobPattern glob pattern} for more detail. * * @since 3.17.0 support for relative patterns. */ globPattern: GlobPattern; /** * The kind of events of interest. If omitted it defaults * to WatchKind.Create | WatchKind.Change | WatchKind.Delete * which is 7. */ kind?: WatchKind; } export declare namespace WatchKind { /** * Interested in create events. */ const Create: 1; /** * Interested in change events */ const Change: 2; /** * Interested in delete events */ const Delete: 4; } export type WatchKind = uinteger; /** * The publish diagnostic client capabilities. */ export interface PublishDiagnosticsClientCapabilities { /** * Whether the clients accepts diagnostics with related information. */ relatedInformation?: boolean; /** * Client supports the tag property to provide meta data about a diagnostic. * Clients supporting tags have to handle unknown tags gracefully. * * @since 3.15.0 */ tagSupport?: { /** * The tags supported by the client. */ valueSet: DiagnosticTag[]; }; /** * Whether the client interprets the version property of the * `textDocument/publishDiagnostics` notification's parameter. * * @since 3.15.0 */ versionSupport?: boolean; /** * Client supports a codeDescription property * * @since 3.16.0 */ codeDescriptionSupport?: boolean; /** * Whether code action supports the `data` property which is * preserved between a `textDocument/publishDiagnostics` and * `textDocument/codeAction` request. * * @since 3.16.0 */ dataSupport?: boolean; } /** * The publish diagnostic notification's parameters. */ export interface PublishDiagnosticsParams { /** * The URI for which diagnostic information is reported. */ uri: DocumentUri; /** * Optional the version number of the document the diagnostics are published for. * * @since 3.15.0 */ version?: integer; /** * An array of diagnostic information items. */ diagnostics: Diagnostic[]; } /** * Diagnostics notification are sent from the server to the client to signal * results of validation runs. */ export declare namespace PublishDiagnosticsNotification { const method: 'textDocument/publishDiagnostics'; const messageDirection: MessageDirection; const type: ProtocolNotificationType; } /** * Completion client capabilities */ export interface CompletionClientCapabilities { /** * Whether completion supports dynamic registration. */ dynamicRegistration?: boolean; /** * The client supports the following `CompletionItem` specific * capabilities. */ completionItem?: { /** * Client supports snippets as insert text. * * A snippet can define tab stops and placeholders with `$1`, `$2` * and `${3:foo}`. `$0` defines the final tab stop, it defaults to * the end of the snippet. Placeholders with equal identifiers are linked, * that is typing in one will update others too. */ snippetSupport?: boolean; /** * Client supports commit characters on a completion item. */ commitCharactersSupport?: boolean; /** * Client supports the following content formats for the documentation * property. The order describes the preferred format of the client. */ documentationFormat?: MarkupKind[]; /** * Client supports the deprecated property on a completion item. */ deprecatedSupport?: boolean; /** * Client supports the preselect property on a completion item. */ preselectSupport?: boolean; /** * Client supports the tag property on a completion item. Clients supporting * tags have to handle unknown tags gracefully. Clients especially need to * preserve unknown tags when sending a completion item back to the server in * a resolve call. * * @since 3.15.0 */ tagSupport?: { /** * The tags supported by the client. */ valueSet: CompletionItemTag[]; }; /** * Client support insert replace edit to control different behavior if a * completion item is inserted in the text or should replace text. * * @since 3.16.0 */ insertReplaceSupport?: boolean; /** * Indicates which properties a client can resolve lazily on a completion * item. Before version 3.16.0 only the predefined properties `documentation` * and `details` could be resolved lazily. * * @since 3.16.0 */ resolveSupport?: { /** * The properties that a client can resolve lazily. */ properties: string[]; }; /** * The client supports the `insertTextMode` property on * a completion item to override the whitespace handling mode * as defined by the client (see `insertTextMode`). * * @since 3.16.0 */ insertTextModeSupport?: { valueSet: InsertTextMode[]; }; /** * The client has support for completion item label * details (see also `CompletionItemLabelDetails`). * * @since 3.17.0 */ labelDetailsSupport?: boolean; }; completionItemKind?: { /** * The completion item kind values the client supports. When this * property exists the client also guarantees that it will * handle values outside its set gracefully and falls back * to a default value when unknown. * * If this property is not present the client only supports * the completion items kinds from `Text` to `Reference` as defined in * the initial version of the protocol. */ valueSet?: CompletionItemKind[]; }; /** * Defines how the client handles whitespace and indentation * when accepting a completion item that uses multi line * text in either `insertText` or `textEdit`. * * @since 3.17.0 */ insertTextMode?: InsertTextMode; /** * The client supports to send additional context information for a * `textDocument/completion` request. */ contextSupport?: boolean; /** * The client supports the following `CompletionList` specific * capabilities. * * @since 3.17.0 */ completionList?: { /** * The client supports the following itemDefaults on * a completion list. * * The value lists the supported property names of the * `CompletionList.itemDefaults` object. If omitted * no properties are supported. * * @since 3.17.0 */ itemDefaults?: string[]; }; } /** * How a completion was triggered */ export declare namespace CompletionTriggerKind { /** * Completion was triggered by typing an identifier (24x7 code * complete), manual invocation (e.g Ctrl+Space) or via API. */ const Invoked: 1; /** * Completion was triggered by a trigger character specified by * the `triggerCharacters` properties of the `CompletionRegistrationOptions`. */ const TriggerCharacter: 2; /** * Completion was re-triggered as current completion list is incomplete */ const TriggerForIncompleteCompletions: 3; } export type CompletionTriggerKind = 1 | 2 | 3; /** * Contains additional information about the context in which a completion request is triggered. */ export interface CompletionContext { /** * How the completion was triggered. */ triggerKind: CompletionTriggerKind; /** * The trigger character (a single character) that has trigger code complete. * Is undefined if `triggerKind !== CompletionTriggerKind.TriggerCharacter` */ triggerCharacter?: string; } /** * Completion parameters */ export interface CompletionParams extends TextDocumentPositionParams, WorkDoneProgressParams, PartialResultParams { /** * The completion context. This is only available it the client specifies * to send this using the client capability `textDocument.completion.contextSupport === true` */ context?: CompletionContext; } /** * Completion options. */ export interface CompletionOptions extends WorkDoneProgressOptions { /** * Most tools trigger completion request automatically without explicitly requesting * it using a keyboard shortcut (e.g. Ctrl+Space). Typically they do so when the user * starts to type an identifier. For example if the user types `c` in a JavaScript file * code complete will automatically pop up present `console` besides others as a * completion item. Characters that make up identifiers don't need to be listed here. * * If code complete should automatically be trigger on characters not being valid inside * an identifier (for example `.` in JavaScript) list them in `triggerCharacters`. */ triggerCharacters?: string[]; /** * The list of all possible characters that commit a completion. This field can be used * if clients don't support individual commit characters per completion item. See * `ClientCapabilities.textDocument.completion.completionItem.commitCharactersSupport` * * If a server provides both `allCommitCharacters` and commit characters on an individual * completion item the ones on the completion item win. * * @since 3.2.0 */ allCommitCharacters?: string[]; /** * The server provides support to resolve additional * information for a completion item. */ resolveProvider?: boolean; /** * The server supports the following `CompletionItem` specific * capabilities. * * @since 3.17.0 */ completionItem?: { /** * The server has support for completion item label * details (see also `CompletionItemLabelDetails`) when * receiving a completion item in a resolve call. * * @since 3.17.0 */ labelDetailsSupport?: boolean; }; } /** * Registration options for a {@link CompletionRequest}. */ export interface CompletionRegistrationOptions extends TextDocumentRegistrationOptions, CompletionOptions { } /** * Request to request completion at a given text document position. The request's * parameter is of type {@link TextDocumentPosition} the response * is of type {@link CompletionItem CompletionItem[]} or {@link CompletionList} * or a Thenable that resolves to such. * * The request can delay the computation of the {@link CompletionItem.detail `detail`} * and {@link CompletionItem.documentation `documentation`} properties to the `completionItem/resolve` * request. However, properties that are needed for the initial sorting and filtering, like `sortText`, * `filterText`, `insertText`, and `textEdit`, must not be changed during resolve. */ export declare namespace CompletionRequest { const method: 'textDocument/completion'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * Request to resolve additional information for a given completion item.The request's * parameter is of type {@link CompletionItem} the response * is of type {@link CompletionItem} or a Thenable that resolves to such. */ export declare namespace CompletionResolveRequest { const method: 'completionItem/resolve'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } export interface HoverClientCapabilities { /** * Whether hover supports dynamic registration. */ dynamicRegistration?: boolean; /** * Client supports the following content formats for the content * property. The order describes the preferred format of the client. */ contentFormat?: MarkupKind[]; } /** * Hover options. */ export interface HoverOptions extends WorkDoneProgressOptions { } /** * Parameters for a {@link HoverRequest}. */ export interface HoverParams extends TextDocumentPositionParams, WorkDoneProgressParams { } /** * Registration options for a {@link HoverRequest}. */ export interface HoverRegistrationOptions extends TextDocumentRegistrationOptions, HoverOptions { } /** * Request to request hover information at a given text document position. The request's * parameter is of type {@link TextDocumentPosition} the response is of * type {@link Hover} or a Thenable that resolves to such. */ export declare namespace HoverRequest { const method: 'textDocument/hover'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * Client Capabilities for a {@link SignatureHelpRequest}. */ export interface SignatureHelpClientCapabilities { /** * Whether signature help supports dynamic registration. */ dynamicRegistration?: boolean; /** * The client supports the following `SignatureInformation` * specific properties. */ signatureInformation?: { /** * Client supports the following content formats for the documentation * property. The order describes the preferred format of the client. */ documentationFormat?: MarkupKind[]; /** * Client capabilities specific to parameter information. */ parameterInformation?: { /** * The client supports processing label offsets instead of a * simple label string. * * @since 3.14.0 */ labelOffsetSupport?: boolean; }; /** * The client supports the `activeParameter` property on `SignatureInformation` * literal. * * @since 3.16.0 */ activeParameterSupport?: boolean; }; /** * The client supports to send additional context information for a * `textDocument/signatureHelp` request. A client that opts into * contextSupport will also support the `retriggerCharacters` on * `SignatureHelpOptions`. * * @since 3.15.0 */ contextSupport?: boolean; } /** * Server Capabilities for a {@link SignatureHelpRequest}. */ export interface SignatureHelpOptions extends WorkDoneProgressOptions { /** * List of characters that trigger signature help automatically. */ triggerCharacters?: string[]; /** * List of characters that re-trigger signature help. * * These trigger characters are only active when signature help is already showing. All trigger characters * are also counted as re-trigger characters. * * @since 3.15.0 */ retriggerCharacters?: string[]; } /** * How a signature help was triggered. * * @since 3.15.0 */ export declare namespace SignatureHelpTriggerKind { /** * Signature help was invoked manually by the user or by a command. */ const Invoked: 1; /** * Signature help was triggered by a trigger character. */ const TriggerCharacter: 2; /** * Signature help was triggered by the cursor moving or by the document content changing. */ const ContentChange: 3; } export type SignatureHelpTriggerKind = 1 | 2 | 3; /** * Additional information about the context in which a signature help request was triggered. * * @since 3.15.0 */ export interface SignatureHelpContext { /** * Action that caused signature help to be triggered. */ triggerKind: SignatureHelpTriggerKind; /** * Character that caused signature help to be triggered. * * This is undefined when `triggerKind !== SignatureHelpTriggerKind.TriggerCharacter` */ triggerCharacter?: string; /** * `true` if signature help was already showing when it was triggered. * * Retriggers occurs when the signature help is already active and can be caused by actions such as * typing a trigger character, a cursor move, or document content changes. */ isRetrigger: boolean; /** * The currently active `SignatureHelp`. * * The `activeSignatureHelp` has its `SignatureHelp.activeSignature` field updated based on * the user navigating through available signatures. */ activeSignatureHelp?: SignatureHelp; } /** * Parameters for a {@link SignatureHelpRequest}. */ export interface SignatureHelpParams extends TextDocumentPositionParams, WorkDoneProgressParams { /** * The signature help context. This is only available if the client specifies * to send this using the client capability `textDocument.signatureHelp.contextSupport === true` * * @since 3.15.0 */ context?: SignatureHelpContext; } /** * Registration options for a {@link SignatureHelpRequest}. */ export interface SignatureHelpRegistrationOptions extends TextDocumentRegistrationOptions, SignatureHelpOptions { } export declare namespace SignatureHelpRequest { const method: 'textDocument/signatureHelp'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * Client Capabilities for a {@link DefinitionRequest}. */ export interface DefinitionClientCapabilities { /** * Whether definition supports dynamic registration. */ dynamicRegistration?: boolean; /** * The client supports additional metadata in the form of definition links. * * @since 3.14.0 */ linkSupport?: boolean; } /** * Server Capabilities for a {@link DefinitionRequest}. */ export interface DefinitionOptions extends WorkDoneProgressOptions { } /** * Parameters for a {@link DefinitionRequest}. */ export interface DefinitionParams extends TextDocumentPositionParams, WorkDoneProgressParams, PartialResultParams { } /** * Registration options for a {@link DefinitionRequest}. */ export interface DefinitionRegistrationOptions extends TextDocumentRegistrationOptions, DefinitionOptions { } /** * A request to resolve the definition location of a symbol at a given text * document position. The request's parameter is of type {@link TextDocumentPosition} * the response is of either type {@link Definition} or a typed array of * {@link DefinitionLink} or a Thenable that resolves to such. */ export declare namespace DefinitionRequest { const method: 'textDocument/definition'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * Client Capabilities for a {@link ReferencesRequest}. */ export interface ReferenceClientCapabilities { /** * Whether references supports dynamic registration. */ dynamicRegistration?: boolean; } /** * Parameters for a {@link ReferencesRequest}. */ export interface ReferenceParams extends TextDocumentPositionParams, WorkDoneProgressParams, PartialResultParams { context: ReferenceContext; } /** * Reference options. */ export interface ReferenceOptions extends WorkDoneProgressOptions { } /** * Registration options for a {@link ReferencesRequest}. */ export interface ReferenceRegistrationOptions extends TextDocumentRegistrationOptions, ReferenceOptions { } /** * A request to resolve project-wide references for the symbol denoted * by the given text document position. The request's parameter is of * type {@link ReferenceParams} the response is of type * {@link Location Location[]} or a Thenable that resolves to such. */ export declare namespace ReferencesRequest { const method: 'textDocument/references'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * Client Capabilities for a {@link DocumentHighlightRequest}. */ export interface DocumentHighlightClientCapabilities { /** * Whether document highlight supports dynamic registration. */ dynamicRegistration?: boolean; } /** * Parameters for a {@link DocumentHighlightRequest}. */ export interface DocumentHighlightParams extends TextDocumentPositionParams, WorkDoneProgressParams, PartialResultParams { } /** * Provider options for a {@link DocumentHighlightRequest}. */ export interface DocumentHighlightOptions extends WorkDoneProgressOptions { } /** * Registration options for a {@link DocumentHighlightRequest}. */ export interface DocumentHighlightRegistrationOptions extends TextDocumentRegistrationOptions, DocumentHighlightOptions { } /** * Request to resolve a {@link DocumentHighlight} for a given * text document position. The request's parameter is of type {@link TextDocumentPosition} * the request response is an array of type {@link DocumentHighlight} * or a Thenable that resolves to such. */ export declare namespace DocumentHighlightRequest { const method: 'textDocument/documentHighlight'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * Client Capabilities for a {@link DocumentSymbolRequest}. */ export interface DocumentSymbolClientCapabilities { /** * Whether document symbol supports dynamic registration. */ dynamicRegistration?: boolean; /** * Specific capabilities for the `SymbolKind` in the * `textDocument/documentSymbol` request. */ symbolKind?: { /** * The symbol kind values the client supports. When this * property exists the client also guarantees that it will * handle values outside its set gracefully and falls back * to a default value when unknown. * * If this property is not present the client only supports * the symbol kinds from `File` to `Array` as defined in * the initial version of the protocol. */ valueSet?: SymbolKind[]; }; /** * The client supports hierarchical document symbols. */ hierarchicalDocumentSymbolSupport?: boolean; /** * The client supports tags on `SymbolInformation`. Tags are supported on * `DocumentSymbol` if `hierarchicalDocumentSymbolSupport` is set to true. * Clients supporting tags have to handle unknown tags gracefully. * * @since 3.16.0 */ tagSupport?: { /** * The tags supported by the client. */ valueSet: SymbolTag[]; }; /** * The client supports an additional label presented in the UI when * registering a document symbol provider. * * @since 3.16.0 */ labelSupport?: boolean; } /** * Parameters for a {@link DocumentSymbolRequest}. */ export interface DocumentSymbolParams extends WorkDoneProgressParams, PartialResultParams { /** * The text document. */ textDocument: TextDocumentIdentifier; } /** * Provider options for a {@link DocumentSymbolRequest}. */ export interface DocumentSymbolOptions extends WorkDoneProgressOptions { /** * A human-readable string that is shown when multiple outlines trees * are shown for the same document. * * @since 3.16.0 */ label?: string; } /** * Registration options for a {@link DocumentSymbolRequest}. */ export interface DocumentSymbolRegistrationOptions extends TextDocumentRegistrationOptions, DocumentSymbolOptions { } /** * A request to list all symbols found in a given text document. The request's * parameter is of type {@link TextDocumentIdentifier} the * response is of type {@link SymbolInformation SymbolInformation[]} or a Thenable * that resolves to such. */ export declare namespace DocumentSymbolRequest { const method: 'textDocument/documentSymbol'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * The Client Capabilities of a {@link CodeActionRequest}. */ export interface CodeActionClientCapabilities { /** * Whether code action supports dynamic registration. */ dynamicRegistration?: boolean; /** * The client support code action literals of type `CodeAction` as a valid * response of the `textDocument/codeAction` request. If the property is not * set the request can only return `Command` literals. * * @since 3.8.0 */ codeActionLiteralSupport?: { /** * The code action kind is support with the following value * set. */ codeActionKind: { /** * The code action kind values the client supports. When this * property exists the client also guarantees that it will * handle values outside its set gracefully and falls back * to a default value when unknown. */ valueSet: CodeActionKind[]; }; }; /** * Whether code action supports the `isPreferred` property. * * @since 3.15.0 */ isPreferredSupport?: boolean; /** * Whether code action supports the `disabled` property. * * @since 3.16.0 */ disabledSupport?: boolean; /** * Whether code action supports the `data` property which is * preserved between a `textDocument/codeAction` and a * `codeAction/resolve` request. * * @since 3.16.0 */ dataSupport?: boolean; /** * Whether the client supports resolving additional code action * properties via a separate `codeAction/resolve` request. * * @since 3.16.0 */ resolveSupport?: { /** * The properties that a client can resolve lazily. */ properties: string[]; }; /** * Whether the client honors the change annotations in * text edits and resource operations returned via the * `CodeAction#edit` property by for example presenting * the workspace edit in the user interface and asking * for confirmation. * * @since 3.16.0 */ honorsChangeAnnotations?: boolean; } /** * The parameters of a {@link CodeActionRequest}. */ export interface CodeActionParams extends WorkDoneProgressParams, PartialResultParams { /** * The document in which the command was invoked. */ textDocument: TextDocumentIdentifier; /** * The range for which the command was invoked. */ range: Range; /** * Context carrying additional information. */ context: CodeActionContext; } /** * Provider options for a {@link CodeActionRequest}. */ export interface CodeActionOptions extends WorkDoneProgressOptions { /** * CodeActionKinds that this server may return. * * The list of kinds may be generic, such as `CodeActionKind.Refactor`, or the server * may list out every specific kind they provide. */ codeActionKinds?: CodeActionKind[]; /** * The server provides support to resolve additional * information for a code action. * * @since 3.16.0 */ resolveProvider?: boolean; } /** * Registration options for a {@link CodeActionRequest}. */ export interface CodeActionRegistrationOptions extends TextDocumentRegistrationOptions, CodeActionOptions { } /** * A request to provide commands for the given text document and range. */ export declare namespace CodeActionRequest { const method: 'textDocument/codeAction'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * Request to resolve additional information for a given code action.The request's * parameter is of type {@link CodeAction} the response * is of type {@link CodeAction} or a Thenable that resolves to such. */ export declare namespace CodeActionResolveRequest { const method: 'codeAction/resolve'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * Client capabilities for a {@link WorkspaceSymbolRequest}. */ export interface WorkspaceSymbolClientCapabilities { /** * Symbol request supports dynamic registration. */ dynamicRegistration?: boolean; /** * Specific capabilities for the `SymbolKind` in the `workspace/symbol` request. */ symbolKind?: { /** * The symbol kind values the client supports. When this * property exists the client also guarantees that it will * handle values outside its set gracefully and falls back * to a default value when unknown. * * If this property is not present the client only supports * the symbol kinds from `File` to `Array` as defined in * the initial version of the protocol. */ valueSet?: SymbolKind[]; }; /** * The client supports tags on `SymbolInformation`. * Clients supporting tags have to handle unknown tags gracefully. * * @since 3.16.0 */ tagSupport?: { /** * The tags supported by the client. */ valueSet: SymbolTag[]; }; /** * The client support partial workspace symbols. The client will send the * request `workspaceSymbol/resolve` to the server to resolve additional * properties. * * @since 3.17.0 */ resolveSupport?: { /** * The properties that a client can resolve lazily. Usually * `location.range` */ properties: string[]; }; } /** * The parameters of a {@link WorkspaceSymbolRequest}. */ export interface WorkspaceSymbolParams extends WorkDoneProgressParams, PartialResultParams { /** * A query string to filter symbols by. Clients may send an empty * string here to request all symbols. */ query: string; } /** * Server capabilities for a {@link WorkspaceSymbolRequest}. */ export interface WorkspaceSymbolOptions extends WorkDoneProgressOptions { /** * The server provides support to resolve additional * information for a workspace symbol. * * @since 3.17.0 */ resolveProvider?: boolean; } /** * Registration options for a {@link WorkspaceSymbolRequest}. */ export interface WorkspaceSymbolRegistrationOptions extends WorkspaceSymbolOptions { } /** * A request to list project-wide symbols matching the query string given * by the {@link WorkspaceSymbolParams}. The response is * of type {@link SymbolInformation SymbolInformation[]} or a Thenable that * resolves to such. * * @since 3.17.0 - support for WorkspaceSymbol in the returned data. Clients * need to advertise support for WorkspaceSymbols via the client capability * `workspace.symbol.resolveSupport`. * */ export declare namespace WorkspaceSymbolRequest { const method: 'workspace/symbol'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * A request to resolve the range inside the workspace * symbol's location. * * @since 3.17.0 */ export declare namespace WorkspaceSymbolResolveRequest { const method: 'workspaceSymbol/resolve'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * The client capabilities of a {@link CodeLensRequest}. */ export interface CodeLensClientCapabilities { /** * Whether code lens supports dynamic registration. */ dynamicRegistration?: boolean; } /** * @since 3.16.0 */ export interface CodeLensWorkspaceClientCapabilities { /** * Whether the client implementation supports a refresh request sent from the * server to the client. * * Note that this event is global and will force the client to refresh all * code lenses currently shown. It should be used with absolute care and is * useful for situation where a server for example detect a project wide * change that requires such a calculation. */ refreshSupport?: boolean; } /** * The parameters of a {@link CodeLensRequest}. */ export interface CodeLensParams extends WorkDoneProgressParams, PartialResultParams { /** * The document to request code lens for. */ textDocument: TextDocumentIdentifier; } /** * Code Lens provider options of a {@link CodeLensRequest}. */ export interface CodeLensOptions extends WorkDoneProgressOptions { /** * Code lens has a resolve provider as well. */ resolveProvider?: boolean; } /** * Registration options for a {@link CodeLensRequest}. */ export interface CodeLensRegistrationOptions extends TextDocumentRegistrationOptions, CodeLensOptions { } /** * A request to provide code lens for the given text document. */ export declare namespace CodeLensRequest { const method: 'textDocument/codeLens'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * A request to resolve a command for a given code lens. */ export declare namespace CodeLensResolveRequest { const method: 'codeLens/resolve'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * A request to refresh all code actions * * @since 3.16.0 */ export declare namespace CodeLensRefreshRequest { const method: `workspace/codeLens/refresh`; const messageDirection: MessageDirection; const type: ProtocolRequestType0; } /** * The client capabilities of a {@link DocumentLinkRequest}. */ export interface DocumentLinkClientCapabilities { /** * Whether document link supports dynamic registration. */ dynamicRegistration?: boolean; /** * Whether the client supports the `tooltip` property on `DocumentLink`. * * @since 3.15.0 */ tooltipSupport?: boolean; } /** * The parameters of a {@link DocumentLinkRequest}. */ export interface DocumentLinkParams extends WorkDoneProgressParams, PartialResultParams { /** * The document to provide document links for. */ textDocument: TextDocumentIdentifier; } /** * Provider options for a {@link DocumentLinkRequest}. */ export interface DocumentLinkOptions extends WorkDoneProgressOptions { /** * Document links have a resolve provider as well. */ resolveProvider?: boolean; } /** * Registration options for a {@link DocumentLinkRequest}. */ export interface DocumentLinkRegistrationOptions extends TextDocumentRegistrationOptions, DocumentLinkOptions { } /** * A request to provide document links */ export declare namespace DocumentLinkRequest { const method: 'textDocument/documentLink'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * Request to resolve additional information for a given document link. The request's * parameter is of type {@link DocumentLink} the response * is of type {@link DocumentLink} or a Thenable that resolves to such. */ export declare namespace DocumentLinkResolveRequest { const method: 'documentLink/resolve'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * Client capabilities of a {@link DocumentFormattingRequest}. */ export interface DocumentFormattingClientCapabilities { /** * Whether formatting supports dynamic registration. */ dynamicRegistration?: boolean; } /** * The parameters of a {@link DocumentFormattingRequest}. */ export interface DocumentFormattingParams extends WorkDoneProgressParams { /** * The document to format. */ textDocument: TextDocumentIdentifier; /** * The format options. */ options: FormattingOptions; } /** * Provider options for a {@link DocumentFormattingRequest}. */ export interface DocumentFormattingOptions extends WorkDoneProgressOptions { } /** * Registration options for a {@link DocumentFormattingRequest}. */ export interface DocumentFormattingRegistrationOptions extends TextDocumentRegistrationOptions, DocumentFormattingOptions { } /** * A request to format a whole document. */ export declare namespace DocumentFormattingRequest { const method: 'textDocument/formatting'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * Client capabilities of a {@link DocumentRangeFormattingRequest}. */ export interface DocumentRangeFormattingClientCapabilities { /** * Whether range formatting supports dynamic registration. */ dynamicRegistration?: boolean; /** * Whether the client supports formatting multiple ranges at once. * * @since 3.18.0 * @proposed */ rangesSupport?: boolean; } /** * The parameters of a {@link DocumentRangeFormattingRequest}. */ export interface DocumentRangeFormattingParams extends WorkDoneProgressParams { /** * The document to format. */ textDocument: TextDocumentIdentifier; /** * The range to format */ range: Range; /** * The format options */ options: FormattingOptions; } /** * The parameters of a {@link DocumentRangesFormattingRequest}. * * @since 3.18.0 * @proposed */ export interface DocumentRangesFormattingParams extends WorkDoneProgressParams { /** * The document to format. */ textDocument: TextDocumentIdentifier; /** * The ranges to format */ ranges: Range[]; /** * The format options */ options: FormattingOptions; } /** * Provider options for a {@link DocumentRangeFormattingRequest}. */ export interface DocumentRangeFormattingOptions extends WorkDoneProgressOptions { /** * Whether the server supports formatting multiple ranges at once. * * @since 3.18.0 * @proposed */ rangesSupport?: boolean; } /** * Registration options for a {@link DocumentRangeFormattingRequest}. */ export interface DocumentRangeFormattingRegistrationOptions extends TextDocumentRegistrationOptions, DocumentRangeFormattingOptions { } /** * A request to format a range in a document. */ export declare namespace DocumentRangeFormattingRequest { const method: 'textDocument/rangeFormatting'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * A request to format ranges in a document. * * @since 3.18.0 * @proposed */ export declare namespace DocumentRangesFormattingRequest { const method: 'textDocument/rangesFormatting'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * Client capabilities of a {@link DocumentOnTypeFormattingRequest}. */ export interface DocumentOnTypeFormattingClientCapabilities { /** * Whether on type formatting supports dynamic registration. */ dynamicRegistration?: boolean; } /** * The parameters of a {@link DocumentOnTypeFormattingRequest}. */ export interface DocumentOnTypeFormattingParams { /** * The document to format. */ textDocument: TextDocumentIdentifier; /** * The position around which the on type formatting should happen. * This is not necessarily the exact position where the character denoted * by the property `ch` got typed. */ position: Position; /** * The character that has been typed that triggered the formatting * on type request. That is not necessarily the last character that * got inserted into the document since the client could auto insert * characters as well (e.g. like automatic brace completion). */ ch: string; /** * The formatting options. */ options: FormattingOptions; } /** * Provider options for a {@link DocumentOnTypeFormattingRequest}. */ export interface DocumentOnTypeFormattingOptions { /** * A character on which formatting should be triggered, like `{`. */ firstTriggerCharacter: string; /** * More trigger characters. */ moreTriggerCharacter?: string[]; } /** * Registration options for a {@link DocumentOnTypeFormattingRequest}. */ export interface DocumentOnTypeFormattingRegistrationOptions extends TextDocumentRegistrationOptions, DocumentOnTypeFormattingOptions { } /** * A request to format a document on type. */ export declare namespace DocumentOnTypeFormattingRequest { const method: 'textDocument/onTypeFormatting'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } export declare namespace PrepareSupportDefaultBehavior { /** * The client's default behavior is to select the identifier * according the to language's syntax rule. */ const Identifier: 1; } export type PrepareSupportDefaultBehavior = 1; export interface RenameClientCapabilities { /** * Whether rename supports dynamic registration. */ dynamicRegistration?: boolean; /** * Client supports testing for validity of rename operations * before execution. * * @since 3.12.0 */ prepareSupport?: boolean; /** * Client supports the default behavior result. * * The value indicates the default behavior used by the * client. * * @since 3.16.0 */ prepareSupportDefaultBehavior?: PrepareSupportDefaultBehavior; /** * Whether the client honors the change annotations in * text edits and resource operations returned via the * rename request's workspace edit by for example presenting * the workspace edit in the user interface and asking * for confirmation. * * @since 3.16.0 */ honorsChangeAnnotations?: boolean; } /** * The parameters of a {@link RenameRequest}. */ export interface RenameParams extends WorkDoneProgressParams { /** * The document to rename. */ textDocument: TextDocumentIdentifier; /** * The position at which this request was sent. */ position: Position; /** * The new name of the symbol. If the given name is not valid the * request must return a {@link ResponseError} with an * appropriate message set. */ newName: string; } /** * Provider options for a {@link RenameRequest}. */ export interface RenameOptions extends WorkDoneProgressOptions { /** * Renames should be checked and tested before being executed. * * @since version 3.12.0 */ prepareProvider?: boolean; } /** * Registration options for a {@link RenameRequest}. */ export interface RenameRegistrationOptions extends TextDocumentRegistrationOptions, RenameOptions { } /** * A request to rename a symbol. */ export declare namespace RenameRequest { const method: 'textDocument/rename'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } export interface PrepareRenameParams extends TextDocumentPositionParams, WorkDoneProgressParams { } export type PrepareRenameResult = Range | { range: Range; placeholder: string; } | { defaultBehavior: boolean; }; /** * A request to test and perform the setup necessary for a rename. * * @since 3.16 - support for default behavior */ export declare namespace PrepareRenameRequest { const method: 'textDocument/prepareRename'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } /** * The client capabilities of a {@link ExecuteCommandRequest}. */ export interface ExecuteCommandClientCapabilities { /** * Execute command supports dynamic registration. */ dynamicRegistration?: boolean; } /** * The parameters of a {@link ExecuteCommandRequest}. */ export interface ExecuteCommandParams extends WorkDoneProgressParams { /** * The identifier of the actual command handler. */ command: string; /** * Arguments that the command should be invoked with. */ arguments?: LSPAny[]; } /** * The server capabilities of a {@link ExecuteCommandRequest}. */ export interface ExecuteCommandOptions extends WorkDoneProgressOptions { /** * The commands to be executed on the server */ commands: string[]; } /** * Registration options for a {@link ExecuteCommandRequest}. */ export interface ExecuteCommandRegistrationOptions extends ExecuteCommandOptions { } /** * A request send from the client to the server to execute a command. The request might return * a workspace edit which the client will apply to the workspace. */ export declare namespace ExecuteCommandRequest { const method: 'workspace/executeCommand'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } export interface WorkspaceEditClientCapabilities { /** * The client supports versioned document changes in `WorkspaceEdit`s */ documentChanges?: boolean; /** * The resource operations the client supports. Clients should at least * support 'create', 'rename' and 'delete' files and folders. * * @since 3.13.0 */ resourceOperations?: ResourceOperationKind[]; /** * The failure handling strategy of a client if applying the workspace edit * fails. * * @since 3.13.0 */ failureHandling?: FailureHandlingKind; /** * Whether the client normalizes line endings to the client specific * setting. * If set to `true` the client will normalize line ending characters * in a workspace edit to the client-specified new line * character. * * @since 3.16.0 */ normalizesLineEndings?: boolean; /** * Whether the client in general supports change annotations on text edits, * create file, rename file and delete file changes. * * @since 3.16.0 */ changeAnnotationSupport?: { /** * Whether the client groups edits with equal labels into tree nodes, * for instance all edits labelled with "Changes in Strings" would * be a tree node. */ groupsOnLabel?: boolean; }; } /** * The parameters passed via an apply workspace edit request. */ export interface ApplyWorkspaceEditParams { /** * An optional label of the workspace edit. This label is * presented in the user interface for example on an undo * stack to undo the workspace edit. */ label?: string; /** * The edits to apply. */ edit: WorkspaceEdit; } /** * The result returned from the apply workspace edit request. * * @since 3.17 renamed from ApplyWorkspaceEditResponse */ export interface ApplyWorkspaceEditResult { /** * Indicates whether the edit was applied or not. */ applied: boolean; /** * An optional textual description for why the edit was not applied. * This may be used by the server for diagnostic logging or to provide * a suitable error for a request that triggered the edit. */ failureReason?: string; /** * Depending on the client's failure handling strategy `failedChange` might * contain the index of the change that failed. This property is only available * if the client signals a `failureHandlingStrategy` in its client capabilities. */ failedChange?: uinteger; } /** * @deprecated Use ApplyWorkspaceEditResult instead. */ export type ApplyWorkspaceEditResponse = ApplyWorkspaceEditResult; /** * A request sent from the server to the client to modified certain resources. */ export declare namespace ApplyWorkspaceEditRequest { const method: 'workspace/applyEdit'; const messageDirection: MessageDirection; const type: ProtocolRequestType; } export { ImplementationRequest, ImplementationParams, ImplementationRegistrationOptions, ImplementationOptions, TypeDefinitionRequest, TypeDefinitionParams, TypeDefinitionRegistrationOptions, TypeDefinitionOptions, WorkspaceFoldersRequest, DidChangeWorkspaceFoldersNotification, DidChangeWorkspaceFoldersParams, WorkspaceFoldersChangeEvent, ConfigurationRequest, ConfigurationParams, ConfigurationItem, DocumentColorRequest, ColorPresentationRequest, DocumentColorOptions, DocumentColorParams, ColorPresentationParams, DocumentColorRegistrationOptions, FoldingRangeClientCapabilities, FoldingRangeOptions, FoldingRangeRequest, FoldingRangeParams, FoldingRangeRegistrationOptions, FoldingRangeRefreshRequest, DeclarationClientCapabilities, DeclarationRequest, DeclarationParams, DeclarationRegistrationOptions, DeclarationOptions, SelectionRangeClientCapabilities, SelectionRangeOptions, SelectionRangeParams, SelectionRangeRequest, SelectionRangeRegistrationOptions, WorkDoneProgressBegin, WorkDoneProgressReport, WorkDoneProgressEnd, WorkDoneProgress, WorkDoneProgressCreateParams, WorkDoneProgressCreateRequest, WorkDoneProgressCancelParams, WorkDoneProgressCancelNotification, CallHierarchyClientCapabilities, CallHierarchyOptions, CallHierarchyRegistrationOptions, CallHierarchyIncomingCallsParams, CallHierarchyIncomingCallsRequest, CallHierarchyOutgoingCallsParams, CallHierarchyOutgoingCallsRequest, CallHierarchyPrepareParams, CallHierarchyPrepareRequest, SemanticTokensPartialResult, SemanticTokensDeltaPartialResult, TokenFormat, SemanticTokensClientCapabilities, SemanticTokensOptions, SemanticTokensRegistrationOptions, SemanticTokensParams, SemanticTokensRequest, SemanticTokensDeltaParams, SemanticTokensDeltaRequest, SemanticTokensRangeParams, SemanticTokensRangeRequest, SemanticTokensRefreshRequest, SemanticTokensRegistrationType, ShowDocumentParams, ShowDocumentRequest, ShowDocumentResult, ShowDocumentClientCapabilities, LinkedEditingRangeClientCapabilities, LinkedEditingRanges, LinkedEditingRangeOptions, LinkedEditingRangeParams, LinkedEditingRangeRegistrationOptions, LinkedEditingRangeRequest, FileOperationOptions, FileOperationClientCapabilities, FileOperationRegistrationOptions, FileOperationPatternOptions, FileOperationPatternKind, DidCreateFilesNotification, CreateFilesParams, FileCreate, WillCreateFilesRequest, DidRenameFilesNotification, RenameFilesParams, FileRename, WillRenameFilesRequest, DidDeleteFilesNotification, DeleteFilesParams, FileDelete, WillDeleteFilesRequest, UniquenessLevel, MonikerKind, Moniker, MonikerClientCapabilities, MonikerOptions, MonikerRegistrationOptions, MonikerParams, MonikerRequest, TypeHierarchyClientCapabilities, TypeHierarchyOptions, TypeHierarchyRegistrationOptions, TypeHierarchyPrepareParams, TypeHierarchyPrepareRequest, TypeHierarchySubtypesParams, TypeHierarchySubtypesRequest, TypeHierarchySupertypesParams, TypeHierarchySupertypesRequest, InlineValueClientCapabilities, InlineValueOptions, InlineValueRegistrationOptions, InlineValueWorkspaceClientCapabilities, InlineValueParams, InlineValueRequest, InlineValueRefreshRequest, InlayHintClientCapabilities, InlayHintOptions, InlayHintRegistrationOptions, InlayHintWorkspaceClientCapabilities, InlayHintParams, InlayHintRequest, InlayHintResolveRequest, InlayHintRefreshRequest, DiagnosticClientCapabilities, DiagnosticOptions, DiagnosticRegistrationOptions, DiagnosticServerCancellationData, DocumentDiagnosticParams, DocumentDiagnosticReportKind, FullDocumentDiagnosticReport, RelatedFullDocumentDiagnosticReport, UnchangedDocumentDiagnosticReport, RelatedUnchangedDocumentDiagnosticReport, DocumentDiagnosticReport, DocumentDiagnosticReportPartialResult, DocumentDiagnosticRequest, PreviousResultId, WorkspaceDiagnosticParams, WorkspaceFullDocumentDiagnosticReport, WorkspaceUnchangedDocumentDiagnosticReport, WorkspaceDocumentDiagnosticReport, WorkspaceDiagnosticReport, WorkspaceDiagnosticReportPartialResult, WorkspaceDiagnosticRequest, DiagnosticRefreshRequest, NotebookDocumentSyncClientCapabilities, NotebookCellKind, ExecutionSummary, NotebookCell, NotebookDocument, NotebookDocumentIdentifier, VersionedNotebookDocumentIdentifier, NotebookDocumentSyncOptions, NotebookDocumentSyncRegistrationOptions, NotebookDocumentSyncRegistrationType, DidOpenNotebookDocumentParams, DidOpenNotebookDocumentNotification, NotebookCellArrayChange, NotebookDocumentChangeEvent, DidChangeNotebookDocumentParams, DidChangeNotebookDocumentNotification, DidSaveNotebookDocumentParams, DidSaveNotebookDocumentNotification, DidCloseNotebookDocumentParams, DidCloseNotebookDocumentNotification, InlineCompletionClientCapabilities, InlineCompletionOptions, InlineCompletionParams, InlineCompletionRegistrationOptions, InlineCompletionRequest }; export { DocumentColorOptions as ColorProviderOptions, DocumentColorOptions as ColorOptions, FoldingRangeOptions as FoldingRangeProviderOptions, SelectionRangeOptions as SelectionRangeProviderOptions, DocumentColorRegistrationOptions as ColorRegistrationOptions };