import { StackGroupEntry } from '../nodes/group'; import { StackQuantifierEntry } from '../nodes/quantifier'; import { CharacterClass, CharacterClassEscape, Dot, Reference, UnicodePropertyEscape, Value } from 'regjsparser'; import { CharacterGroups } from '../character-groups'; import { MyRootNode } from '../parse'; import { Reader } from '../reader'; export declare const characterReaderTypeCharacterEntry: unique symbol; export declare const characterReaderTypeSplit: unique symbol; export type CharacterReaderValueSplitSubType = 'lookahead' | 'lookbehind' | 'negativeLookahead' | 'negativeLookbehind' | null; export type CharacterReaderValueSplit = Readonly<{ reader: () => CharacterReader; subType: CharacterReaderValueSplitSubType; type: typeof characterReaderTypeSplit; }>; export type StackEntry = StackGroupEntry | StackQuantifierEntry; export type Stack = readonly StackEntry[]; export type CharacterReaderValueGroups = Readonly<{ stack: Stack; type: typeof characterReaderTypeCharacterEntry; } & ({ characterGroups: CharacterGroups; node: CharacterClass | CharacterClassEscape | Dot | UnicodePropertyEscape | Value; subType: 'groups'; } | { node: Reference; referenceIndex: number; subType: 'reference'; } | { bounded: boolean; offset: number; subType: 'end'; } | { offset: number; subType: 'null'; } | { offset: number; subType: 'start'; })>; export type CharacterReaderValue = CharacterReaderValueGroups | CharacterReaderValueSplit; export type CharacterReader = Reader; export declare function buildCharacterReader({ caseInsensitive, dotAll, node, }: { caseInsensitive: boolean; dotAll: boolean; node: MyRootNode; }): CharacterReader;