import { FieldDescriptor } from '../../types'; import { DescriptorState } from '../types'; /** * Adaptive-skip predicates consumed by descriptor `getSkipped` rules. * * Adaptive mode pre-fills the form from `config.data`. In `skipLock` mode, * fields whose values are already covered by the initial data should not be * editable on the form steps; they still appear on the summary recap as * read-only rows. Each descriptor declares its own `getSkipped` predicate * (built from these helpers); the hydrator wires the result to: * * - hide the field on non-summary steps * - preserve the existing value (don't run the reset path) * - suppress the edit button on summary recap */ /** True when adaptive skip is active for the current state. */ export declare const isAdaptivelySkipping: (state: DescriptorState) => boolean; /** * The field is skippable now: its current value matches the initial data * (by `presence`) and currently passes validation. Adaptive-mode gated — * returns false outside adaptive skip (full mode, or skipEdit while * editing). * * Note: matches when both are empty/blank too (e.g., field never visible, * or optional empty). Field descriptors that need to keep the field * editable when raw data was undefined AND in their own raw-data-presence * check (e.g., `state.config.data?.accountHolder?.tin !== undefined`) * before delegating here. Step descriptors compose this directly to count * optional-empty fields as "covered" for step-skip purposes. */ /** * Accepts either a descriptor (preferred — self-check from getSkipped) or a * descriptor's registry key (sibling cross-checks). The string form is a * direct registry lookup by descriptor key. */ export declare const isSkippableNow: (state: DescriptorState, descriptorOrKey: string | FieldDescriptor) => boolean; /** * The field is skippable based on its initial state: it passes validation * at load time. Used for classification fields where we lock to the * initial value regardless of subsequent edits, and by step descriptors * computing whether all of a step's fields are skippable. * * Optional fields with no initial value count as skippable as long as * they aren't required — matches the legacy `!invalidFields[key]` * semantic the classification step's skip rule depends on. */ export declare const isSkippableInitially: (state: DescriptorState, descriptorOrKey: string | FieldDescriptor) => boolean;