import type { CancellationToken, CodeAction, CodeActionParams, ColorInformation, ColorPresentation, ColorPresentationParams, Command, CompletionItem, CompletionList, CompletionParams, DefinitionParams, Diagnostic, DocumentColorParams, DocumentFormattingParams, DocumentHighlight, DocumentHighlightParams, DocumentLink, DocumentLinkParams, DocumentSymbolParams, GenericRequestHandler, Hover, HoverParams, InitializeParams, Location, LocationLink, PrepareRenameParams, Range, ReferenceParams, RenameParams, SymbolInformation, TextEdit, WorkspaceEdit } from "vscode-languageserver"; import type { TextDocument } from "vscode-languageserver-textdocument"; export type Result = Promise | V | void; type Handler = (doc: TextDocument, params: P extends null ? CancellationToken : P, token: P extends null ? never : CancellationToken) => Result; export type Plugin = { commands: Record>; initialize: (params: InitializeParams) => Promise | void; doComplete: Handler; doCompletionResolve: (item: CompletionItem, token: CancellationToken) => Result; doValidate: (doc: TextDocument) => Result; doHover: Handler; prepareRename: Handler; doRename: Handler; doCodeActions: Handler; doCodeActionResolve: (action: CodeAction, token: CancellationToken) => Result; findDefinition: Handler; findReferences: Handler; findDocumentSymbols: Handler; findDocumentLinks: Handler; findDocumentHighlights: Handler; findDocumentColors: Handler; getColorPresentations: Handler; format: Handler; }; export {};