import { Ref } from 'vue'; /** * Centralise les flags de coordination anti-boucle et d'interaction * utilisés par les composants DatePicker (ComplexDatePicker, CalendarMode/DatePicker, * DateTextInput). * * ## Flags anti-boucle * * - `isUpdatingFromInternal` : Marque une mise à jour comme provenant de l'intérieur * du composant (via `withInternalUpdate`). Les watchers qui synchronisent le modèle * vérifient ce flag pour éviter de re-traiter une valeur qu'ils viennent d'émettre. * Le reset via `queueMicrotask` garantit que les watchers Vue (flush en microtask) * voient le flag `true` avant son reset. * * - `ignoreNextInputBlur` : flag one-shot consommé par `consumeIgnoreNextInputBlur` * pour ignorer le blur provoqué par une ouverture programmatique. * * - `ignoreNextCalendarModelSync` : garde une synchronisation initiale de VDatePicker * de manière à ne pas la confondre avec une sélection utilisateur. Le composant appelant * définit son cycle de vie : consommation ponctuelle ou remise à `false` à la sélection/ * fermeture. * * ## État d'interaction * * - `hasInteracted` : Indique que l'utilisateur a interagi avec le champ (focus + saisie). * Utilisé par la validation pour distinguer un champ vierge d'un champ abandonné. * - `isManualInputActive` : Indique que l'utilisateur est en train de saisir manuellement * (par opposition à une sélection via calendrier). Désactivé au blur. */ export interface DatePickerSyncGuard { isUpdatingFromInternal: Ref; withInternalUpdate: (fn: () => void) => void; ignoreNextInputBlur: Ref; ignoreNextCalendarModelSync: Ref; consumeIgnoreNextInputBlur: () => boolean; consumeIgnoreNextCalendarModelSync: () => boolean; hasInteracted: Ref; isManualInputActive: Ref; markInteracted: () => void; markManualInputStart: () => void; markManualInputEnd: () => void; resetInteractionState: () => void; } export declare const useDatePickerSyncGuard: () => DatePickerSyncGuard;