import { FieldDecl, LoadAssignment, PropertyCategory, SaveAssignment } from "./declarations.js"; export type LoadFieldPresencePolicy = "guard-then-fail" | "load-when-present"; export type SaveFieldEmissionPolicy = "emit-always" | "omit-when-absent"; export type OptionalFieldAbsencePolicy = "preserve-absence" | "materialize-default"; export type CollectionDefaultProfile = "required-or-explicit" | "explicit-only"; export type SaveFieldEmissionProfile = "optional-only" | "always-check" | "go" | "rust-collection-default" | "rust-value-sentinel"; /** * Decide whether a load-side field must be checked for presence before assignment. * * Runtime semantics require missing required complex fields to fail instead of materializing a * fabricated default. This shared predicate is the first extracted field-emission policy slice: * emitters still render their own language syntax, but no longer re-derive when to guard. */ export declare function loadFieldPresencePolicy(field: FieldDecl | LoadAssignment | undefined): LoadFieldPresencePolicy; export declare function shouldGuardMissingRequiredField(field: FieldDecl | LoadAssignment | undefined): boolean; export declare function saveFieldEmissionPolicy(field: FieldDecl | SaveAssignment | undefined, profile?: SaveFieldEmissionProfile): SaveFieldEmissionPolicy; export declare function shouldOmitAbsentOnSave(field: FieldDecl | SaveAssignment | undefined, profile?: SaveFieldEmissionProfile): boolean; export declare function optionalFieldAbsencePolicy(field: { isOptional: boolean; hasExplicitDefault?: boolean; } | undefined): OptionalFieldAbsencePolicy; export declare function shouldPreserveOptionalAbsence(field: { isOptional: boolean; hasExplicitDefault?: boolean; } | undefined): boolean; export declare function shouldMaterializeCollectionDefault(field: { category: PropertyCategory; isOptional: boolean; hasExplicitDefault?: boolean; } | undefined, profile?: CollectionDefaultProfile): boolean;