import { Ref } from 'vue';
import { ValidationResult } from '../../../composables/validation/useValidation';
import { DateModelValue } from '../../../composables/date/useDateInitializationDayjs';
export interface UseDateTextFieldManualValidationOptions {
    required: boolean;
    disableErrorHandling: boolean;
    customRules: any;
    customWarningRules: any;
    hasInteracted: Ref<boolean>;
    errors: Ref<string[]>;
    clearValidation: () => void;
    validateDateFormat: (dateStr: string) => {
        isValid: boolean;
        message: string;
    };
    isDateComplete: (value: string) => boolean;
    parseDate: (dateStr: string, format: string) => Date | null;
    validateField: (value: unknown, rules?: any[], warningRules?: any[]) => Promise<ValidationResult>;
}
export interface UseDateTextFieldSubmitOptions {
    isValidating: Ref<boolean>;
    hasInteracted: Ref<boolean>;
    inputValue: Ref<string>;
    runRules: (value: string) => Promise<boolean>;
}
export interface UseDateTextFieldResetOptions {
    clearValidation: () => void;
    isFocused: Ref<boolean>;
    hasInteracted: Ref<boolean>;
    isDisabled: () => boolean;
    fieldKey: Ref<number>;
    isFormatting: Ref<boolean>;
    inputValue: Ref<string>;
    selectedDates: Ref<unknown>;
    resetState: () => void;
    emitModel: (value: DateModelValue) => void;
}
export interface UseDateTextFieldOptions {
    autoClamp: boolean;
    isRange: Ref<boolean>;
    displayFormat: Ref<string>;
    autoClampDate: (dateStr: string, format: string) => {
        clampedDate: string;
        adjusted: boolean;
    };
    manualValidation: UseDateTextFieldManualValidationOptions;
    submit?: UseDateTextFieldSubmitOptions;
    reset?: UseDateTextFieldResetOptions;
}
/**
 * Composable de haut niveau pour la saisie de date dans un champ texte.
 * Pour l'instant il encapsule uniquement la logique d'autoClamp
 * afin de pouvoir être partagé entre les différents scénarios (single / range).
 */
export declare const useDateTextField: (options: UseDateTextFieldOptions) => {
    clampIfNeeded: (raw: string) => string;
    validateManualInput: (value: string) => boolean | Promise<boolean>;
    validateOnSubmit: () => Promise<boolean>;
    reset: () => void;
};
export default useDateTextField;
