import type { EntityDocumentResolver, FieldChange, FieldRuleSet, LookupResolver, PromptResolver } from './rules.js'; /** Options for an evaluator instance. */ export interface FieldRulesEvaluatorOptions { /** Resolver for `lookup` sources. Omit if no rule uses a lookup (a lookup rule then errors). */ LookupResolver?: LookupResolver; /** Resolver for `prompt` sources. Omit if no rule uses a prompt (a prompt rule then errors). */ PromptResolver?: PromptResolver; /** Resolver for `entityDocument` sources. Omit if no rule renders one (such a rule then errors). */ EntityDocumentResolver?: EntityDocumentResolver; } /** * Computes the field changes a {@link FieldRuleSet} would make to a record — WITHOUT mutating anything. * * Returning a list of {@link FieldChange} (old → new per rule) is what makes a dry-run preview possible: * the caller decides whether to apply. Conditions are evaluated with the safe expression evaluator; * value formulas + the transform pipeline run through the shared {@link FieldTransformEngine}; entity * lookups go through the injected resolver. The engine never touches a database itself. */ export declare class FieldRulesEvaluator { private readonly transforms; private readonly conditions; private readonly lookupResolver?; private readonly promptResolver?; private readonly entityDocumentResolver?; constructor(options?: FieldRulesEvaluatorOptions); /** Computes one {@link FieldChange} per rule for a record (a row of field name → current value). */ ComputeChanges(record: Record, ruleSet: FieldRuleSet): Promise; private evaluateRule; private checkCondition; private resolveSource; private equal; private message; } //# sourceMappingURL=FieldRulesEvaluator.d.ts.map