export type FormValueType = string | number | boolean | Date | null | undefined | any[]; export interface EvaluationOptions { timeout?: number; maxDepth?: number; locale?: string; currencyCode?: string; throwOnError?: boolean; } export type DependencyGraph = Record; /** * ExpressionEngine - Core evaluation engine * * Safely evaluates user-defined expressions against form state * Supports field references, math operations, functions, and conditionals * * @spec Expression_Engine.md */ export declare class ExpressionEngine { private parser; private dependencyTracker; private evaluationCache; private compiledFunctions; constructor(); /** * Evaluate expression against form values */ evaluate(expression: string, formValues: Record, options?: EvaluationOptions): any; /** * Extract field names referenced in expression */ extractDependencies(expression: string): string[]; /** * Build dependency graph for all expressions */ buildDependencyGraph(components: any[]): DependencyGraph; /** * Detect circular dependencies */ detectCircularDependencies(graph: DependencyGraph): string[][]; /** * Get topological order for evaluation */ getTopologicalOrder(graph: DependencyGraph): string[]; /** * Clear internal caches */ clearCache(): void; private getCacheKey; private buildContext; } /** * ExpressionValidator - Validates expressions before runtime * * Checks syntax, validates field references, and detects circular dependencies * * @spec Expression_Engine.md */ export declare class ExpressionValidator { private supportedFunctions; private keywords; /** * Validate expression against available fields */ validate(expression: string, availableFields: string[] | any[]): ValidationError[]; /** * Validate field operations - check for invalid operators on string/date types */ private validateFieldOperations; private validateSyntax; private validateFieldReferences; private validateFunctionCalls; private isFunctionCall; private isMathExpression; } export interface ValidationError { type: 'SyntaxError' | 'UndefinedField' | 'InvalidFunction' | 'CircularDependency' | 'InvalidOperation'; message: string; field?: string; line?: number; column?: number; }