import { TextDocument } from 'vscode-languageserver-textdocument'; import { StringReader } from '../utils/StringReader'; import { IndexMapping } from './IndexMapping'; import { TextRange } from './TextRange'; export declare enum TokenType { annotation = 0, boolean = 1, comment = 2, entity = 3, keyword = 4, literal = 5, identity = 6, number = 7, operator = 8, property = 9, string = 10, type = 11, variable = 12, vector = 13, _ = 14 } export declare enum TokenModifier { declaration = 0, deprecated = 1, documentation = 2, firstArgument = 3, inString = 4, _ = 5 } export declare class Token { range: TextRange; type: TokenType; modifiers: Set; constructor(range: TextRange, type: TokenType, modifiers?: Set); /** * Get a token from a number, a cursor, a type, and optional modifiers. * @param start The start character of this token. * @param reader The reader which stops at the end character of this token. * @param type The type of this token. * @param modifiers The modifiers of this token. */ static from(start: number, reader: StringReader, type: TokenType, modifiers?: Set): Token; /** * Get the array form of the semantic token. The result should be pushed into the * semantic tokens builder. * @returns `[ line, char, length, tokenType, tokenModifiers ]` */ toArray(document: TextDocument): [number, number, number, number, number]; } /** * Remap specific tokens according to the mapping, and add the inString modifier. * @param tokens Input tokens. */ export declare function remapTokens(tokens: Token[], mapping: IndexMapping, addInStringModifier?: boolean): Token[];