import { DoCheck, OnChanges, OnInit, SimpleChanges, QueryList } from '@angular/core';
import { AbstractControl } from '@angular/forms';
import { PoButtonComponent } from '../po-button';
import { PoCalendarBaseComponent } from './po-calendar-base.component';
import { PoCalendarRangePreset } from './interfaces/po-calendar-range-preset.interface';
/**
 * @docsExtends PoCalendarBaseComponent
 *
 * @example
 *
 * <example name="po-calendar-basic" title="PO Calendar Basic" >
 *  <file name="sample-po-calendar-basic/sample-po-calendar-basic.component.html"> </file>
 *  <file name="sample-po-calendar-basic/sample-po-calendar-basic.component.ts"> </file>
 * </example>
 *
 * <example name="po-calendar-range-presets" title="PO Calendar - Range and Presets" >
 *  <file name="sample-po-calendar-range-presets/sample-po-calendar-range-presets.component.html"> </file>
 *  <file name="sample-po-calendar-range-presets/sample-po-calendar-range-presets.component.ts"> </file>
 * </example>
 *
 * <example name="po-calendar-labs" title="PO Calendar Labs" >
 *  <file name="sample-po-calendar-labs/sample-po-calendar-labs.component.html"> </file>
 *  <file name="sample-po-calendar-labs/sample-po-calendar-labs.component.ts"> </file>
 * </example>
 *
 * <example name="po-calendar-ticket-sales" title="PO Calendar - Ticket Sales" >
 *  <file name="sample-po-calendar-ticket-sales/sample-po-calendar-ticket-sales.component.html"> </file>
 *  <file name="sample-po-calendar-ticket-sales/sample-po-calendar-ticket-sales.component.ts"> </file>
 * </example>
 */
export declare class PoCalendarComponent extends PoCalendarBaseComponent implements OnInit, OnChanges, DoCheck {
    monthOptions: QueryList<PoButtonComponent>;
    yearOptions: QueryList<PoButtonComponent>;
    private readonly changeDetector;
    private readonly poCalendarLangService;
    hoverValue: Date;
    displayToClean: string;
    displayMonths: Array<string>;
    displayYears: Array<number>;
    focusedIndex: number;
    selectedIndexMonth: number | null;
    selectedIndexYear: number | null;
    selectedMonth: number | null;
    selectedYear: number | null;
    private readonly _isRange;
    private readonly _rangePresetsValue;
    private readonly _rangePresetOptionsValue;
    private readonly _rangePresetsOrderValue;
    private readonly _minDateValue;
    private readonly _maxDateValue;
    readonly effectivePresets: import("@angular/core").Signal<PoCalendarRangePreset[]>;
    constructor();
    get isResponsive(): RegExpMatchArray;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngDoCheck(): void;
    isMonthDisabled(monthIndex: number): boolean;
    isYearDisabled(year: number): boolean;
    onKeydownMonth(event: KeyboardEvent, index: number): void;
    onKeydownYear(event: KeyboardEvent, index: number): void;
    selectMonth(index: number, event?: KeyboardEvent, selected?: boolean): void;
    selectYear(index: number, event?: KeyboardEvent, selected?: boolean, year?: any): void;
    private getMonthOptions;
    private getYearOptions;
    private initializeYearAndMonthMode;
    getActivateDate(partType: any): any;
    getValue(partType: any): any;
    onSelectDate(selectedDate: any, partType?: any): void;
    onHoverDate(date: any): void;
    onHeaderChange({ month, year }: {
        month: any;
        year: any;
    }, partType: any): void;
    onCloseCalendar(): void;
    registerOnChange(fn: any): void;
    registerOnTouched(func: any): void;
    validate(c: AbstractControl): {
        [key: string]: any;
    };
    writeValue(value: any): void;
    onPresetSelected(event: {
        label: string;
        start: Date;
        end: Date;
    }): void;
    private sortPresetsByTemporality;
    private normalizeDate;
    private enrichPresetsWithDisabledState;
    private clampDate;
    private getValidateStartDate;
    private getValueFromSelectedDate;
    private updateActivateDateFromHeaderChange;
    private buildDateWithMonthYear;
    private convertDateToISO;
    private convertDateFromIso;
    private updateModel;
    private setMonth;
    private setYear;
    private writeDate;
}
