/** Pure recognition only. Consumption owns value, CST, line, failure and cursor effects. */ export type ScalarRecognizer = (input: string, pos: number, seed?: number) => number; /** * One recognizer per existing terminal constant. This is the common raw/pending * seam: a later token cursor may provide a cached end for the same (pos, spec) * without changing either consumer's materialization protocol. */ export declare function makeScalarRecognizer(op: number, spec: unknown): ScalarRecognizer | undefined; /** Exact bounded shape whose terminal value can be materialized without a node capture frame. */ export declare function scalarTerminalNodeChild(code: ArrayLike, ip: number): number; /** Direct untracked terminal whose recognition `not()` can inspect without materializing it. */ export declare function scalarTerminalNotChild(code: ArrayLike, ip: number): number; /** * A direct scalar terminal that every successful execution of `ip` must match * first, through wrappers that cannot consume or select before their child. * Returns only after `minDepth` edges so a caller never duplicates recognition * merely to avoid one already-cheap terminal call. */ export declare function leadingScalarTerminal(code: ArrayLike, ip: number, minDepth?: number, throughAttempt?: boolean, throughPeek?: boolean): number; export type LeadingScalarSequence = { readonly terminals: readonly number[]; /** The explicit ambient trivia slot between terms; -1 means no trivia. */ readonly trivia: number; }; /** * The first three complete scalar terms of a sequence under an explicit trivia * scope. Unlike `leadingScalarTerminal`, each returned terminal is the WHOLE * corresponding sequence term: recognizing it therefore identifies the exact * position at which the enclosing sequence would scan trivia for the next one. * * This is rejection authority only. Gates, attempts, transforms and builders * may still make the arm fail after the prefix matched, so callers must enter * the ordinary arm on a positive result and may only skip it on a miss. */ export declare function leadingScalarSequence(code: ArrayLike, ip: number): LeadingScalarSequence | undefined; /** * A bounded union of literal prefixes that every successful execution of `ip` * must enter through. Unlike `leadingScalarTerminal`, this may cross nested * choices, but only when EVERY arm yields literal authority. Longer literals * covered by a shorter prefix are removed (`@{-}` is already covered by `@{`). */ export declare function leadingLiteralFamily(code: ArrayLike, constants: readonly unknown[], ip: number, minDepth?: number, limit?: number): readonly number[] | undefined; //# sourceMappingURL=scalar-terminal.d.ts.map