/**
 * Expression lexer — Task H.1.1 (chevrotain v11).
 *
 * Tokens for the `if:` expression grammar that replaces the regex-bounded
 * evaluator at src/runtime/evaluator.ts:503. Twenty tokens total: literals
 * (StringLit / NumberLit / True / False / Null), comparison + logical
 * operators, grouping punctuation, and Identifier. WhiteSpace is captured
 * but discarded via the Lexer.SKIPPED group so the parser never sees it.
 *
 * Longest-match discipline: chevrotain walks `allTokens` in array order, so
 * multi-character operators MUST precede their single-character prefixes
 * (EqEq before any `=`-prefixed single token; NotEq before Bang; Lte/Gte
 * before Lt/Gt; AndAnd/OrOr before any single `&` / `|` which are NOT
 * tokenized — they would surface as a lexer error). Keywords use `\b`
 * word-boundaries so `truer` lexes as a single Identifier rather than
 * [True, Identifier("r")].
 *
 * No regex backtracking risk: every pattern is linear-time. StringLit's
 * `/"(?:[^"\\]|\\.)*"/` has no nested quantifiers (each alternative consumes
 * exactly one character of input). Audit-grep in the task spec verifies no
 * lookarounds / possessive / nested quantifiers ever land here.
 *
 * Pinned to chevrotain ^11.0.0 — v12 requires Node 22+ but opensquid pins
 * `engines.node: ">=20.0.0"`.
 *
 * Imported by: src/runtime/evaluator/expression/parser.ts (H.1.2).
 */
import { Lexer } from 'chevrotain';
export declare const StringLit: import("chevrotain").TokenType;
export declare const NumberLit: import("chevrotain").TokenType;
export declare const True: import("chevrotain").TokenType;
export declare const False: import("chevrotain").TokenType;
export declare const Null: import("chevrotain").TokenType;
export declare const EqEq: import("chevrotain").TokenType;
export declare const NotEq: import("chevrotain").TokenType;
export declare const Lte: import("chevrotain").TokenType;
export declare const Gte: import("chevrotain").TokenType;
export declare const Lt: import("chevrotain").TokenType;
export declare const Gt: import("chevrotain").TokenType;
export declare const AndAnd: import("chevrotain").TokenType;
export declare const OrOr: import("chevrotain").TokenType;
export declare const Bang: import("chevrotain").TokenType;
export declare const LParen: import("chevrotain").TokenType;
export declare const RParen: import("chevrotain").TokenType;
export declare const LBracket: import("chevrotain").TokenType;
export declare const RBracket: import("chevrotain").TokenType;
export declare const Comma: import("chevrotain").TokenType;
export declare const Dot: import("chevrotain").TokenType;
export declare const Identifier: import("chevrotain").TokenType;
export declare const WhiteSpace: import("chevrotain").TokenType;
/**
 * Token order locks longest-match behavior. WhiteSpace can sit anywhere
 * (it's SKIPPED), but keywords MUST precede Identifier, and multi-char
 * operators MUST precede their single-char prefixes.
 */
export declare const allTokens: import("chevrotain").TokenType[];
/**
 * Singleton Lexer instance — chevrotain perf guide recommends reuse across
 * tokenize() calls. The Lexer is stateless across calls; only its result is
 * per-invocation.
 */
export declare const lexer: Lexer;
//# sourceMappingURL=lexer.d.ts.map