/**
 * Restricted expression language for IfNode.conditionExpr (spec §5.4).
 *
 *   expr     := term (('&&'|'||') term)*       — left-associative, same priority
 *   term     := atom (('=='|'!='|'>'|'<'|'>='|'<=') atom)?
 *   atom     := varName | literal | '(' expr ')'
 *   literal  := number | string | 'true' | 'false' | 'null'
 *   varName  := [a-zA-Z_][a-zA-Z0-9_]*
 *
 * No function calls, no arithmetic, no field access — kept tiny so it can
 * be evaluated safely without eval().
 */
export type IfExprAst = {
    kind: 'literal';
    value: number | string | boolean | null;
} | {
    kind: 'var';
    name: string;
} | {
    kind: 'compare';
    op: '==' | '!=' | '>' | '<' | '>=' | '<=';
    left: IfExprAst;
    right: IfExprAst;
} | {
    kind: 'and';
    left: IfExprAst;
    right: IfExprAst;
} | {
    kind: 'or';
    left: IfExprAst;
    right: IfExprAst;
};
export declare function parseIfExpr(src: string): IfExprAst;
//# sourceMappingURL=if-expr-parser.d.ts.map