import { TextRange } from '../common/textRange'; export declare const enum TokenType { Invalid = 0, EndOfStream = 1, NewLine = 2, Indent = 3, Dedent = 4, String = 5, Number = 6, Identifier = 7, Keyword = 8, Operator = 9, Colon = 10, Semicolon = 11, Comma = 12, OpenParenthesis = 13, CloseParenthesis = 14, OpenBracket = 15, CloseBracket = 16, OpenCurlyBrace = 17, CloseCurlyBrace = 18, Ellipsis = 19, Dot = 20, Arrow = 21, Backtick = 22, ExclamationMark = 23, FStringStart = 24, FStringMiddle = 25, FStringEnd = 26 } export declare const enum NewLineType { CarriageReturn = 0, LineFeed = 1, CarriageReturnLineFeed = 2, Implied = 3 } export declare const enum OperatorType { Add = 0, AddEqual = 1, Assign = 2, BitwiseAnd = 3, BitwiseAndEqual = 4, BitwiseInvert = 5, BitwiseOr = 6, BitwiseOrEqual = 7, BitwiseXor = 8, BitwiseXorEqual = 9, Divide = 10, DivideEqual = 11, Equals = 12, FloorDivide = 13, FloorDivideEqual = 14, GreaterThan = 15, GreaterThanOrEqual = 16, LeftShift = 17, LeftShiftEqual = 18, LessOrGreaterThan = 19, LessThan = 20, LessThanOrEqual = 21, MatrixMultiply = 22, MatrixMultiplyEqual = 23, Mod = 24, ModEqual = 25, Multiply = 26, MultiplyEqual = 27, NotEquals = 28, Power = 29, PowerEqual = 30, RightShift = 31, RightShiftEqual = 32, Subtract = 33, SubtractEqual = 34, Walrus = 35, And = 36, Or = 37, Not = 38, Is = 39, IsNot = 40, In = 41, NotIn = 42 } export declare const enum OperatorFlags { Unary = 1, Binary = 2, Assignment = 4, Comparison = 8, Deprecated = 16 } export declare const enum KeywordType { And = 0, As = 1, Assert = 2, Async = 3, Await = 4, Break = 5, Case = 6, Class = 7, Continue = 8, Debug = 9, Def = 10, Del = 11, Elif = 12, Else = 13, Except = 14, False = 15, Finally = 16, For = 17, From = 18, Global = 19, If = 20, Import = 21, In = 22, Is = 23, Lambda = 24, Match = 25, None = 26, Nonlocal = 27, Not = 28, Or = 29, Pass = 30, Raise = 31, Return = 32, True = 33, Try = 34, Type = 35, While = 36, With = 37, Yield = 38 } export declare const softKeywords: KeywordType[]; export declare const enum StringTokenFlags { None = 0, SingleQuote = 1, DoubleQuote = 2, Triplicate = 4, Raw = 8, Unicode = 16, Bytes = 32, Format = 64, Template = 128, ReplacementFieldStart = 256, ReplacementFieldEnd = 512, NamedUnicodeEscape = 1024, Unterminated = 65536 } export declare const enum CommentType { Regular = 0, IPythonMagic = 1, IPythonShellEscape = 2, IPythonCellMagic = 3, IPythonCellShellEscape = 4 } export interface Comment extends TextRange { readonly type: CommentType; readonly value: string; readonly start: number; readonly length: number; } export declare namespace Comment { function create(start: number, length: number, value: string, type?: CommentType): Comment; } export interface TokenBase extends TextRange { readonly type: TokenType; readonly comments?: Comment[] | undefined; } export interface Token extends TokenBase { } export declare namespace Token { function create(type: TokenType, start: number, length: number, comments: Comment[] | undefined): Token; } export interface IndentToken extends Token { readonly type: TokenType.Indent; readonly indentAmount: number; readonly isIndentAmbiguous: boolean; } export declare namespace IndentToken { function create(start: number, length: number, indentAmount: number, isIndentAmbiguous: boolean, comments: Comment[] | undefined): IndentToken; } export interface DedentToken extends Token { readonly type: TokenType.Dedent; readonly indentAmount: number; readonly matchesIndent: boolean; readonly isDedentAmbiguous: boolean; } export declare namespace DedentToken { function create(start: number, length: number, indentAmount: number, matchesIndent: boolean, isDedentAmbiguous: boolean, comments: Comment[] | undefined): DedentToken; } export interface NewLineToken extends Token { readonly type: TokenType.NewLine; readonly newLineType: NewLineType; } export declare namespace NewLineToken { function create(start: number, length: number, newLineType: NewLineType, comments: Comment[] | undefined): NewLineToken; } export interface KeywordToken extends Token { readonly type: TokenType.Keyword; readonly keywordType: KeywordType; } export declare namespace KeywordToken { function create(start: number, length: number, keywordType: KeywordType, comments: Comment[] | undefined): KeywordToken; function isSoftKeyword(token: KeywordToken): boolean; } export interface StringToken extends Token { readonly type: TokenType.String; readonly flags: StringTokenFlags; readonly escapedValue: string; readonly prefixLength: number; readonly quoteMarkLength: number; } export declare namespace StringToken { function create(start: number, length: number, flags: StringTokenFlags, escapedValue: string, prefixLength: number, comments: Comment[] | undefined): StringToken; } export interface FStringStartToken extends Token { readonly type: TokenType.FStringStart; readonly flags: StringTokenFlags; readonly prefixLength: number; readonly quoteMarkLength: number; } export declare namespace FStringStartToken { function create(start: number, length: number, flags: StringTokenFlags, prefixLength: number, comments: Comment[] | undefined): FStringStartToken; } export interface FStringMiddleToken extends Token { readonly type: TokenType.FStringMiddle; readonly flags: StringTokenFlags; readonly escapedValue: string; } export declare namespace FStringMiddleToken { function create(start: number, length: number, flags: StringTokenFlags, escapedValue: string): FStringMiddleToken; } export interface FStringEndToken extends Token { readonly type: TokenType.FStringEnd; readonly flags: StringTokenFlags; } export declare namespace FStringEndToken { function create(start: number, length: number, flags: StringTokenFlags): FStringEndToken; } export interface NumberToken extends Token { readonly type: TokenType.Number; readonly value: number | bigint; readonly isInteger: boolean; readonly isImaginary: boolean; } export declare namespace NumberToken { function create(start: number, length: number, value: number | bigint, isInteger: boolean, isImaginary: boolean, comments: Comment[] | undefined): NumberToken; } export interface OperatorToken extends Token { readonly type: TokenType.Operator; readonly operatorType: OperatorType; } export declare namespace OperatorToken { function create(start: number, length: number, operatorType: OperatorType, comments: Comment[] | undefined): OperatorToken; } export interface IdentifierToken extends Token { readonly type: TokenType.Identifier; readonly value: string; } export declare namespace IdentifierToken { function create(start: number, length: number, value: string, comments: Comment[] | undefined): IdentifierToken; }