/** * Semantic Validator for MEL * Validates semantic rules beyond syntax * Based on MEL SPEC v0.3.3 and FDR-MEL-* */ import type { ProgramNode } from "../parser/ast.js"; import type { Diagnostic } from "../diagnostics/types.js"; /** * Result of semantic validation */ export interface ValidationResult { valid: boolean; diagnostics: Diagnostic[]; } /** * Semantic Validator */ export declare class SemanticValidator { private ctx; private symbols; /** * Validate a MEL program */ validate(program: ProgramNode): ValidationResult; private validateDomain; /** * v0.3.3: Validate state fields for W012 (anonymous object types) */ private validateState; /** * v0.3.3: Validate state field - check for anonymous object types (W012) */ private validateStateField; private validateContext; private validateStateInitializer; /** * v0.3.3: Check if a type expression contains anonymous object types * Issues W012 warning for inline object types in state fields */ private checkAnonymousObjectType; private validateAction; /** * v0.3.3: Validate available expression is pure (E005). * No dollar namespace reads or action parameters. */ private validateAvailableExpr; /** * v0.9.0: Validate dispatchable expression is pure (E047). * Allows state/computed/action params, but forbids direct dollar namespace reads. */ private validateDispatchableExpr; private validateGuardedStmt; private validateWhen; private validateOnce; private validateOnceIntent; private validatePatch; private validateEffect; private validateFail; private validateStop; private validateCondition; private validateExpr; private validateDollarIdent; private validateContextPath; private validateFunctionCall; private validatePrimitiveEquality; private inferType; private requireAssignable; private requireArrayCompatible; private requireLenCompatible; private requireSpreadOperand; private validateCoalesceTypes; private validateMatchCall; private validateArgSelectionCall; private error; } /** * Validate a MEL program semantically */ export declare function validateSemantics(program: ProgramNode): ValidationResult;