/**
 * Expression Classification
 *
 * Analyzes expression code to determine output type for structural lowering.
 *
 * JSX expressions are allowed if — and only if — the compiler can statically
 * enumerate all possible DOM shapes and lower them at compile time.
 */
/**
 * Expression output types
 *
 * - primitive: string, number, boolean → text binding
 * - conditional: cond ? <A /> : <B /> → ConditionalFragmentNode
 * - optional: cond && <A /> → OptionalFragmentNode
 * - loop: arr.map(i => <JSX />) → LoopFragmentNode
 * - fragment: <A /> or <><A /><B /></> → inline fragment
 * - unknown: cannot be statically determined → COMPILE ERROR
 */
export type ExpressionOutputType = 'primitive' | 'conditional' | 'optional' | 'loop' | 'fragment' | 'unknown';
/**
 * Classification result with extracted metadata
 */
export interface ExpressionClassification {
    type: ExpressionOutputType;
    condition?: string;
    consequent?: string;
    alternate?: string;
    optionalCondition?: string;
    optionalFragment?: string;
    loopSource?: string;
    loopItemVar?: string;
    loopIndexVar?: string;
    loopBody?: string;
    fragmentCode?: string;
}
/**
 * Classify expression output type
 *
 * @param code - The expression code to classify
 * @returns Classification result with metadata
 */
export declare function classifyExpression(code: string): ExpressionClassification;
/**
 * Check if an expression type requires structural lowering
 */
export declare function requiresStructuralLowering(type: ExpressionOutputType): boolean;
