import { DocumentContext, IHTMLDataProvider, ClientCapabilities } from 'vscode-html-languageservice';
import { SelectionRange, CompletionItem, CompletionList, Definition, Diagnostic, DocumentHighlight, DocumentLink, FoldingRange, FormattingOptions, Hover, Location, Position, Range, SignatureHelp, SymbolInformation, TextEdit, Color, ColorInformation, ColorPresentation, WorkspaceEdit, WorkspaceFolder } from 'vscode-languageserver';
import { TextDocument } from 'vscode-languageserver-textdocument';
import { FileSystemProvider } from '../requests';
export { WorkspaceFolder, CompletionItem, CompletionList, CompletionItemKind, Definition, Diagnostic, DocumentHighlight, DocumentHighlightKind, DocumentLink, FoldingRange, FoldingRangeKind, FormattingOptions, Hover, Location, Position, Range, SignatureHelp, SymbolInformation, SymbolKind, TextEdit, Color, ColorInformation, ColorPresentation, WorkspaceEdit, SignatureInformation, ParameterInformation, DiagnosticSeverity, SelectionRange, TextDocumentIdentifier } from 'vscode-languageserver';
export { ClientCapabilities, DocumentContext, LanguageService, HTMLDocument, HTMLFormatConfiguration, TokenType } from 'vscode-html-languageservice';
export { TextDocument } from 'vscode-languageserver-textdocument';
export interface Settings {
readonly css?: any;
readonly html?: any;
readonly javascript?: any;
readonly 'js/ts'?: any;
}
export interface Workspace {
readonly settings: Settings;
readonly folders: WorkspaceFolder[];
}
export interface SemanticTokenData {
start: Position;
length: number;
typeIdx: number;
modifierSet: number;
}
export type CompletionItemData = {
languageId: string;
uri: string;
offset: number;
};
export declare function isCompletionItemData(value: any): value is CompletionItemData;
export interface LanguageMode {
getId(): string;
getSelectionRange?: (document: TextDocument, position: Position) => Promise;
doValidation?: (document: TextDocument, settings?: Settings) => Promise;
doComplete?: (document: TextDocument, position: Position, documentContext: DocumentContext, settings?: Settings) => Promise;
doResolve?: (document: TextDocument, item: CompletionItem) => Promise;
doHover?: (document: TextDocument, position: Position, settings?: Settings) => Promise;
doSignatureHelp?: (document: TextDocument, position: Position) => Promise;
doRename?: (document: TextDocument, position: Position, newName: string) => Promise;
doLinkedEditing?: (document: TextDocument, position: Position) => Promise;
findDocumentHighlight?: (document: TextDocument, position: Position) => Promise;
findDocumentSymbols?: (document: TextDocument) => Promise;
findDocumentLinks?: (document: TextDocument, documentContext: DocumentContext) => Promise;
findDefinition?: (document: TextDocument, position: Position) => Promise;
findReferences?: (document: TextDocument, position: Position) => Promise;
format?: (document: TextDocument, range: Range, options: FormattingOptions, settings?: Settings) => Promise;
findDocumentColors?: (document: TextDocument) => Promise;
getColorPresentations?: (document: TextDocument, color: Color, range: Range) => Promise;
doAutoInsert?: (document: TextDocument, position: Position, kind: 'autoClose' | 'autoQuote') => Promise;
findMatchingTagPosition?: (document: TextDocument, position: Position) => Promise;
getFoldingRanges?: (document: TextDocument) => Promise;
onDocumentRemoved(document: TextDocument): void;
getSemanticTokens?(document: TextDocument): Promise;
getSemanticTokenLegend?(): {
types: string[];
modifiers: string[];
};
dispose(): void;
}
export interface LanguageModes {
updateDataProviders(dataProviders: IHTMLDataProvider[]): void;
getModeAtPosition(document: TextDocument, position: Position): LanguageMode | undefined;
getModesInRange(document: TextDocument, range: Range): LanguageModeRange[];
getAllModes(): LanguageMode[];
getAllModesInDocument(document: TextDocument): LanguageMode[];
getMode(languageId: string): LanguageMode | undefined;
onDocumentRemoved(document: TextDocument): void;
dispose(): void;
}
export interface LanguageModeRange extends Range {
mode: LanguageMode | undefined;
attributeValue?: boolean;
}
export declare function getLanguageModes(supportedLanguages: {
[languageId: string]: boolean;
}, workspace: Workspace, clientCapabilities: ClientCapabilities, requestService: FileSystemProvider): LanguageModes;