import type { Grammar, GrammarPattern, Token, TokenLine } from './types'; declare interface ScopeStack { scopes: string[] rule: GrammarPattern | null endPattern?: RegExp } declare interface CompiledPattern extends GrammarPattern { _compiledMatch?: RegExp _compiledBegin?: RegExp _compiledEnd?: RegExp } // carriage return export declare class Tokenizer { private grammar: Grammar; private scopeStack: ScopeStack[]; private regexCache: Map; private compiledPatterns: CompiledPattern[]; private numberRegex: RegExp; private isJsOrTs: boolean; private rootScopes: string[]; private numericScopes: string[]; private operatorScopes: string[]; private commentScopes: string[]; private blockCommentScopes: string[]; private stringScopes: string[]; private templateScopes: string[]; private functionScopes: string[]; static readonly private TYPE_TEXT: any; static readonly private TYPE_PUNCTUATION: any; static readonly private TYPE_NUMERIC: any; static readonly private TYPE_LINE: any; static readonly private TYPE_BLOCK: any; static readonly private TYPE_DOUBLE: any; static readonly private TYPE_SINGLE: any; static readonly private TYPE_TEMPLATE: any; static readonly private TYPE_FUNCTION: any; static readonly private TYPE_OPERATOR: any; private keywordSet: Set | null; private keywordMap: Map; constructor(grammar: Grammar); tokenizeLine(line: string, lineNumber: number, prevStack?: ScopeStack[]): TokenLine; tokenize(code: string): TokenLine[]; private matchNextToken(line: string, offset: number, lineNumber: number): { token: Token | null, offset: number, tokens?: Token[] } | null; private precompilePatterns(patterns: GrammarPattern[]): CompiledPattern[]; private getRegex(pattern: string): RegExp; private matchPattern(pattern: GrammarPattern, line: string, offset: number, lineNumber: number): { token: Token | null, offset: number, tokens?: Token[] } | null; private applyCaptureGroups(match: RegExpExecArray, captures: Record, baseScopes: string[], lineNumber: number, baseOffset: number): Token[] | null; private handleInclude(include: string, line: string, offset: number, lineNumber: number): { token: Token | null, offset: number, tokens?: Token[] } | null; private getTokenType(scopeName?: string): string; getScopeStack(): ScopeStack[]; }