import { Ref, ComputedRef, MaybeRef } from 'vue'; import { DateInput, DateModelValue } from '../../../composables/date/useDateInitializationDayjs'; /** * Options du composable `useDatePickerState`. * * ## Rôle dans l'architecture validation * `validateDates` et `clearValidation` sont des fonctions déléguées par le composant * appelant. En pratique, le composant passe `() => validate()` pour `validateDates`. * Le composable appelle ces fonctions après avoir mis à jour `selectedDates` pour * déclencher la validation des nouvelles dates. Il ne connaît pas le flow interne. */ export interface UseDatePickerStateOptions { selectedDates: Ref; rangeBoundaryDates?: Ref<[Date | null, Date | null] | null>; format: MaybeRef; dateFormatReturn?: string; displayRange?: MaybeRef; parseDate: (value: string, format: string) => Date | null; formatDate: (date: Date | null, format: string) => string; /** Fonction de validation déléguée — en pratique `() => validate()`. Appelée après mise à jour des dates. */ validateDates: (forceValidation?: boolean) => void; /** Vide l'état de validation. Déléguée par le composant appelant. */ clearValidation?: () => void; generateDateRange?: (start: Date, end: Date) => Date[]; } export interface UseDatePickerStateResult { textInputValue: Ref; displayFormattedDate: Ref; formattedDate: Ref; displayFormattedFromSelectedDates: ComputedRef; syncFromModelValue: (newValue: DateInput | undefined) => void; syncTextInputFromSelection: () => void; } export declare const useDatePickerState: (options: UseDatePickerStateOptions) => UseDatePickerStateResult;