import { Logger } from '../util/logger'; import { ReferenceResolver } from '../reference-resolver'; import { PolicyResolver } from '../util/policy-resolver'; import { Step } from '../types'; export declare class _UnknownReferenceError extends Error { constructor(message: string); } export declare class SafeExpressionEvaluator { private referenceResolver; private static readonly MAX_EXPRESSION_LENGTH; private logger; private policyResolver?; private defaultExpressionTimeout; private static ensureNumbers; private static ensureSameType; private static checkDivisionByZero; static readonly OPERATORS: { readonly '+': (a: any, b: any) => any; readonly '-': (a: any, b: any) => number; readonly '*': (a: any, b: any) => number; readonly '/': (a: any, b: any) => number; readonly '%': (a: any, b: any) => number; readonly '==': (a: any, b: any) => boolean; readonly '===': (a: any, b: any) => boolean; readonly '!=': (a: any, b: any) => boolean; readonly '!==': (a: any, b: any) => boolean; readonly '>': (a: any, b: any) => boolean; readonly '>=': (a: any, b: any) => boolean; readonly '<': (a: any, b: any) => boolean; readonly '<=': (a: any, b: any) => boolean; readonly '&&': (a: any, b: any) => any; readonly '||': (a: any, b: any) => any; readonly '??': (a: any, b: any) => any; }; private static readonly ALLOWED_FUNCTIONS; constructor(logger: Logger, referenceResolver: ReferenceResolver, policyResolver?: PolicyResolver); /** * Set the policy resolver to be used for expression timeouts * @param policyResolver The policy resolver */ setPolicyResolver(policyResolver: PolicyResolver): void; /** * Get the current expression timeout in milliseconds * @param step Optional step context for timeout resolution * @param stepType Optional step type for timeout resolution * @returns The resolved timeout value */ getExpressionTimeout(step?: Step, stepType?: string): number; evaluate(expression: string, context: Record, step?: Step): any; private validateExpression; private checkTimeout; /** * Helper method to convert token values to JavaScript literal values */ private tokenToLiteral; private parse; private parseExpression; private getPrecedence; private parseGroupedElements; private parseArrayElements; private parseObjectProperties; private buildReferencePath; private evaluateAst; private handleReferenceError; private static isSpecialVariable; extractReferences(expression: string): string[]; }