import { type PatientField, type PatientFieldSection } from './patient-fields'; export interface UsePatientFieldVisibilityOptions { /** Controlled ordered list of visible field ids. */ value?: string[]; /** Uncontrolled initial order. Omit both ⇒ every field, declaration order. */ defaultValue?: string[]; /** Fired on any show / hide / reorder, with the next ordered visible set. */ onChange?: (orderedIds: string[]) => void; } export interface PatientFieldVisibility { /** Current ordered list of visible field ids (filtered to known fields). */ visible: string[]; /** Flat declaration-order catalogue of every field id ("show everything"). */ catalogueIds: string[]; /** field id → its field + owning section id. */ fieldById: Map; /** Replace the visible set / order (filtered to known fields). */ setOrder: (orderedIds: string[]) => void; /** Show or hide a single field. */ toggleField: (fieldId: string) => void; /** Show or hide every field in a section. */ toggleSection: (sectionId: string, show: boolean) => void; /** * Move a field to land at another field's slot, WITHIN its section's * visible subsequence. Cross-section moves are ignored — sections stay in * declaration order. Drives both pointer drops and keyboard (Alt+Arrow). */ moveFieldOnto: (fromId: string, toId: string) => void; /** Reset to `defaultValue` (or the full catalogue when none was given). */ reset: () => void; } export declare function usePatientFieldVisibility(sections: PatientFieldSection[], { value, defaultValue, onChange }?: UsePatientFieldVisibilityOptions): PatientFieldVisibility; //# sourceMappingURL=field-visibility.d.ts.map