import { AfterViewInit, ElementRef, EventEmitter, OnDestroy } from '@angular/core';
import { DsfrI18nService, LoggerService } from '@edugouvfr/ngx-dsfr';
import { DsfrDateEvent } from '../../shared/models/date-event';
import { DsfrCalendarComponent } from '../calendar.component';
import * as i0 from "@angular/core";
export declare class DsfrCalendarModalComponent implements AfterViewInit, OnDestroy {
    private elementRef;
    private i18n;
    private logger;
    /**
     * Date minimale inclue. Doit être au format IS0-8601 : AAAA-MM-JJ.
     * Ce paramètre peut être utilisé seul ou avec la propriété max.
     */
    min: string;
    /**
     * Date maximale inclue. Doit être au format IS0-8601 : AAAA-MM-JJ.
     * Ce paramètre peut être utilisé seul ou avec la propriété min.
     */
    max: string;
    /**
     * Valeur de l'attribut aria-label du bouton d'ouverture de la modale.
     */
    ariaLabel: string;
    /**
     * Message du `tooltip` (attribut `title` du bouton) ou ajout d'un `span` en `sr-only` si pas de label.
     */
    tooltipMessage: string;
    /**
     * Valeur de l'attribut disabled du bouton d'ouverture de la modale.
     */
    disabled: boolean;
    /**
     * Emission de la date au format DsfrDateEvent
     */
    dateChange: EventEmitter<DsfrDateEvent>;
    protected modal: ElementRef<HTMLDivElement>;
    protected calendar: DsfrCalendarComponent;
    /**
     * Id aléatoire, unique, de la modale (le calendrier)
     */
    protected modalId: string;
    protected isOpen: boolean;
    protected dialogTitle: string;
    protected translatedMonths: string[];
    protected dialogTriggerBtnNode: HTMLButtonElement;
    private _value;
    private currentMonthIndex;
    private currentYear;
    private subscription;
    constructor(elementRef: ElementRef, i18n: DsfrI18nService, logger: LoggerService);
    get value(): string | undefined;
    /**
     * Valeur initial de la date.
     * La valeur doit prendre la forme dd/mm/yyyy pour la locale fr et mm/dd/yyyy pour la locale en.
     */
    set value(value: string | undefined);
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    /**
     * Gère le clic en dehors de la modale
     */
    protected onCalendarOutside(): void;
    protected handleTriggerBtnClick(): void;
    protected handleDataChange(dateEvent: DsfrDateEvent): void;
    protected handleModalKeydown(keyEvent: KeyboardEvent): void;
    protected handleCancelButton(): void;
    /**
     * Met à jour le titre de la dialog (visuellement caché) pour les besoins d'accessibilité.
     */
    private updateDialogTitle;
    /**
     * Ferme la modale.
     *
     * Positionne le focus sur le bouton d'ouverture de la modale si besoin.
     *
     * @param focusTriggerBtn Permet de savoir si le focus doit être donné au bouton d'ouverture de la modale
     */
    private close;
    private updateMonthTranslations;
    /**
     * Gestion du changement de langue dans le composant.
     *
     * @param code Code de la locale à prendre en compte
     */
    private onLangChange;
    /**
     * Mise à jour des valeurs des deux listes déroulantes, mois et année.
     */
    private updateMonthIndexAndYear;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrCalendarModalComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrCalendarModalComponent, "dsfr-ext-calendar-modal, dsfrx-calendar-modal", never, { "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": true; }; "tooltipMessage": { "alias": "tooltipMessage"; "required": true; }; "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "dateChange": "dateChange"; }, never, never, true, never>;
}
