import { EventEmitter } from '../../stencil-public-runtime';
export declare class SpwDatePicker {
    el: HTMLSpwDatePickerElement;
    /** Valeur de la date sélectionnée */
    value: string;
    /** Placeholder du champ de saisie */
    placeholder: string;
    /** Label du champ */
    label: string;
    /** Attribut `name` utilisé par le formulaire */
    name: string;
    /** Remplit l'attribut aria-label, utilisé à des fins d'accessibilité */
    accAriaLabel?: string;
    /** Indique si le champ est requis */
    required: boolean;
    /** Indique si le champ est désactivé */
    disabled: boolean;
    /** Format de date à afficher */
    dateFormat: string;
    /** Date minimale sélectionnable */
    minDate: string;
    /** Date maximale sélectionnable */
    maxDate: string;
    /** Jours de la semaine désactivés (0=dimanche, 1=lundi, etc.) */
    disabledDays: string | number[];
    /** Dates spécifiques désactivées (format ISO, ex: ["2026-01-01", "2026-12-25"]) */
    disabledDates: string | string[];
    /** Position du datepicker */
    position: 'tr' | 'tl' | 'br' | 'bl';
    /** Message d'erreur à afficher sous le champ */
    error?: string;
    /** Message d'indication (hint) à afficher sous le champ */
    hint?: string;
    /** Message de succès à afficher sous le champ */
    success?: string;
    /** Message de warning à afficher sous le champ */
    warning?: string;
    /** Affiche une icône d'erreur si vrai */
    showErrorIcon?: boolean;
    /** Affiche une icône d'indication si vrai */
    showHintIcon?: boolean;
    /** Affiche une icône de succès si vrai */
    showSuccessIcon?: boolean;
    /** Affiche une icône de warning si vrai */
    showWarningIcon?: boolean;
    /** Texte d'assistance à afficher sous le label */
    assistiveText?: string;
    /** Indique si le champ peut être effacé avec un bouton */
    isClear?: boolean;
    /** Titre du tooltip */
    tooltipTitle?: string;
    /** Texte du tooltip */
    tooltipText?: string;
    /** Largeur maximale du tooltip */
    tooltipMaxWidth?: string;
    /** Positionnement du tooltip */
    tooltipDirection?: 'top' | 'bottom' | 'left' | 'right';
    /** Curseur du tooltip */
    tooltipCursor?: 'pointer' | 'default' | 'help' | 'disabled';
    /** Si vrai, permet de définir un range de dates */
    range: boolean;
    /** Permet de définir un id pour le range de date (corrélation entre les 2 inputs) */
    rangeId?: string;
    /** Permet de définir l'input de début pour un range */
    isStart: boolean;
    /** Utilise un positionnement fixed pour le calendrier si nécessité de sortir du contexte (utile dans une modal avec overflow hidden) */
    fixedCalendar?: boolean;
    /** Tag name du composant parent contenant le scroll (ex: 'spw-modal'). Le composant remontera les parents pour trouver ce composant et écouter son scroll interne. */
    fixedCalendarParent?: string;
    isOpen: boolean;
    hasError: boolean;
    internalError: string;
    internalValue: string;
    isClearIconVisible: boolean;
    /** Evenement émis au changement de date */
    dateChange: EventEmitter<{
        value: string;
        date: Date;
    }>;
    /** Evenement émis à l'ouverture du datepicker */
    datePickerOpen: EventEmitter<void>;
    /** Evenement émis à la fermeture du datepicker */
    datePickerClose: EventEmitter<void>;
    private inputElement;
    private datepickerInstance;
    private uniqueId;
    private lastInputValue;
    private isDeleting;
    private defaultValue;
    private parentScrollContainer;
    internals: ElementInternals;
    componentWillLoad(): void;
    componentDidLoad(): void;
    connectedCallback(): void;
    disconnectedCallback(): void;
    private findParentComponent;
    private findScrollContainerInShadowRoot;
    private ensureParentScrollListener;
    private cleanupParentScrollListener;
    private updateCalendarPosition;
    watchValue(newValue: string): void;
    watchDisabled(isDisabled: boolean): void;
    watchMinDate(newMinDate: string): void;
    watchMaxDate(newMaxDate: string): void;
    /** Méthode pour ouvrir le datepicker */
    open(): Promise<void>;
    /** Méthode pour fermer le datepicker */
    close(): Promise<void>;
    /** Méthode pour définir la date */
    setDate(date: Date | string): Promise<void>;
    /** Méthode pour récupérer la date */
    getDate(): Promise<Date | null>;
    /** Méthode pour récupérer le range de dates */
    getRange(): Promise<{
        start: Date | null;
        end: Date | null;
    }>;
    /** Méthode pour mettre à jour les contraintes min/max du datepicker */
    updateConstraints(minDate?: Date, maxDate?: Date): Promise<void>;
    /** Méthode pour réinitialiser le datepicker */
    resetInput(): Promise<void>;
    /** Méthode pour réinitialiser les contraintes min/max du datepicker */
    resetConstraints(): Promise<void>;
    private toISODateString;
    private getRangeSiblings;
    private highlightRangeInCalendar;
    private updateRangeConstraints;
    private unmask;
    private applyMaskSmart;
    private handleMaskedInput;
    private setupCalendarNavigation;
    private handleCalendarKeyDown;
    private initializeDatepicker;
    private formatDate;
    private handleInputChange;
    private parseDate;
    private handleInputFocus;
    private handleClear;
    private handleCalendarIconClick;
    private handleCalendarIconMouseDown;
    private handleKeyDown;
    formResetCallback(): void;
    render(): any;
}
