import { Condition, NestedData } from '../types.js'; /** The repeater row a rule is being evaluated for (spec 02 ยง2a). */ export interface RowScope { form: string; repeater: string; index: number; } export interface RowRef { form: string; repeater: string; sub: string; } /** Split a row-scoped ref, or `null` when it is a plain `Form.key` reference. */ export declare function parseRowRef(ref: string): RowRef | null; /** * Read a "formName.fieldKey" reference out of nested data. With a `scope`, a * row-scoped ref (`Form.repeater[].sub`) reads that sub-field of the scoped row. */ export declare function readRef(data: NestedData, ref: string, scope?: RowScope): unknown; /** * Ordering used by rule conditions AND the `compare` validator: numeric when * both sides coerce, date-aware, else lexicographic. Null = not comparable. */ export declare function compareValues(a: unknown, b: unknown): number | null; export declare function evalCondition(cond: Condition | undefined, data: NestedData, scope?: RowScope): boolean; /** Every row-scoped ref a condition mentions (`field` and `value_field`). */ export declare function conditionRowRefs(cond: Condition | undefined): RowRef[];