import type { CodeAction, CodeActionContext, Color, ColorInformation, ColorPresentation, CompletionContext, CompletionItem, CompletionList, DefinitionLink, Diagnostic, FileChangeType, FoldingRange, FormattingOptions, Hover, InlayHint, LinkedEditingRanges, Location, Position, Range, ReferenceContext, SelectionRange, SemanticTokens, SignatureHelp, SignatureHelpContext, SymbolInformation, TextDocumentContentChangeEvent, TextDocumentIdentifier, TextEdit, WorkspaceEdit } from 'vscode-languageserver'; import type { TextDocument } from 'vscode-languageserver-textdocument'; export type Resolvable = T | Promise; export interface AppCompletionItem extends CompletionItem { data?: T; } export interface AppCompletionList extends CompletionList { items: Array>; } export interface DiagnosticsProvider { getDiagnostics(document: TextDocument): Resolvable; } export interface HoverProvider { doHover(document: TextDocument, position: Position): Resolvable; } export interface FoldingRangesProvider { getFoldingRanges(document: TextDocument): Resolvable; } export interface CompletionsProvider { getCompletions(document: TextDocument, position: Position, completionContext?: CompletionContext): Resolvable | null>; resolveCompletion?(document: TextDocument, completionItem: AppCompletionItem): Resolvable>; } export interface FormattingProvider { formatDocument(document: TextDocument, options: FormattingOptions): Resolvable; } export interface TagCompleteProvider { doTagComplete(document: TextDocument, position: Position): Resolvable; } export interface DocumentColorsProvider { getDocumentColors(document: TextDocument): Resolvable; } export interface ColorPresentationsProvider { getColorPresentations(document: TextDocument, range: Range, color: Color): Resolvable; } export interface DocumentSymbolsProvider { getDocumentSymbols(document: TextDocument): Resolvable; } export interface FileReferencesProvider { fileReferences(document: TextDocument): Promise; } export interface DefinitionsProvider { getDefinitions(document: TextDocument, position: Position): Resolvable; } export interface BackwardsCompatibleDefinitionsProvider { getDefinitions(document: TextDocument, position: Position): Resolvable; } export interface CodeActionsProvider { getCodeActions(document: TextDocument, range: Range, context: CodeActionContext): Resolvable; executeCommand?(document: TextDocument, command: string, args?: any[]): Resolvable; } export interface FileRename { oldUri: string; newUri: string; } export interface UpdateImportsProvider { updateImports(fileRename: FileRename): Resolvable; } export interface InlayHintsProvider { getInlayHints(document: TextDocument, range: Range): Resolvable; } export interface RenameProvider { rename(document: TextDocument, position: Position, newName: string): Resolvable; prepareRename(document: TextDocument, position: Position): Resolvable; } export interface FindReferencesProvider { findReferences(document: TextDocument, position: Position, context: ReferenceContext): Promise; } export interface SignatureHelpProvider { getSignatureHelp(document: TextDocument, position: Position, context: SignatureHelpContext | undefined): Resolvable; } export interface SelectionRangeProvider { getSelectionRange(document: TextDocument, position: Position): Resolvable; } export interface SemanticTokensProvider { getSemanticTokens(textDocument: TextDocument, range?: Range): Resolvable; } export interface LinkedEditingRangesProvider { getLinkedEditingRanges(document: TextDocument, position: Position): Resolvable; } export interface ImplementationProvider { getImplementation(document: TextDocument, position: Position): Resolvable; } export interface TypeDefinitionsProvider { getTypeDefinitions(document: TextDocument, position: Position): Resolvable; } export interface OnWatchFileChangesParam { fileName: string; changeType: FileChangeType; } export interface OnWatchFileChangesProvider { onWatchFileChanges(onWatchFileChangesParams: OnWatchFileChangesParam[]): Promise; } export interface UpdateNonAstroFile { updateNonAstroFile(fileName: string, changes: TextDocumentContentChangeEvent[], text?: string): void; } type ProviderBase = DiagnosticsProvider & HoverProvider & CompletionsProvider & FileReferencesProvider & DefinitionsProvider & TypeDefinitionsProvider & ImplementationProvider & FormattingProvider & FoldingRangesProvider & TagCompleteProvider & DocumentColorsProvider & ColorPresentationsProvider & DocumentSymbolsProvider & UpdateImportsProvider & CodeActionsProvider & FindReferencesProvider & RenameProvider & SignatureHelpProvider & SemanticTokensProvider & SelectionRangeProvider & OnWatchFileChangesProvider & LinkedEditingRangesProvider & InlayHintsProvider & UpdateNonAstroFile; export type LSProvider = ProviderBase; export type Plugin = Partial & { __name: string; }; export {};