import type { I18nTextDescriptor } from './core.js'; /** * Per field, the locales that are UNCHANGED round-tripped densify fills — i.e. * marked filled on the prior record AND identical in the incoming record. * These are exempt from write-time script enforcement (they are derived copies, * not authored text). Slots the user changed are NOT exempt (validated as authored). */ export declare function computeExemptFills(prior: Record | undefined, incoming: Record, fields: Record): Map>; /** * Mutate `record` in place: fill empty declared-language slots for each * densify-enabled field from the field's substitute chain, recompute unchanged * prior fills, clear marks for slots that became authored, and write the * resulting `_i18nFilled` marker (removed when empty). * * `prior` is read-only — it is never mutated. * * Provenance uses value-equality (decision A): a slot counts as an unchanged * fill when it was prior-marked AND its value still equals the prior value. A * consequence is that re-authoring a value byte-identical to the existing fill * keeps it classified as a fill (the visible value is unchanged either way; the * slot stays script-exempt and will auto-refresh if its source later changes). * This is inherent to value-equality provenance, not a bug. */ export declare function densify(record: Record, prior: Record | undefined, fields: Record): void;