import { EventEmitter, OnInit, QueryList } from '@angular/core';
import { FocusOrigin } from '@angular/cdk/a11y';
import { CalendarService, DateFilterType, DayFormatType, SelectionType, WeekdayFormatType } from '../calendar.service';
import { CalendarMonthComponent } from '../calendar-month/calendar-month.component';
import * as i0 from "@angular/core";
export declare class CalendarComponent implements OnInit {
    #private;
    private calendarService;
    constructor(calendarService: CalendarService);
    /**
     * Default date of the component
     * @type  Date | string
     */
    set calendarDate(value: Date | string | number);
    get calendarDate(): Date;
    private _calendarDate;
    /**
     * The number of calendars that render on desktop devices.
     * @type number
     * default 1
     */
    set calendars(value: number);
    get calendars(): number;
    private _calendars;
    get calendarsArray(): number[];
    /**
     * Set the format of day name.
     * @default 'numeric'
     * @type DayFormatType
     */
    set dayFormat(value: DayFormatType);
    get dayFormat(): DayFormatType;
    private _dayFormat;
    /**
     * Specify the list of dates that cannot be selected.
     * @type  Date[] | Date[][]
     */
    set disabledDates(value: Date[] | Date[][]);
    get disabledDates(): Date[] | Date[][];
    private _disabledDates;
    /**
     * Initial selected date.
     * @type  (Date | null)
     */
    set startDate(value: Date | number | string | null | undefined);
    get startDate(): Date | number | string | null | undefined;
    _startDate: Date | null;
    /**
     * Initial selected to date (range).
     * @type Date | null
     */
    set endDate(value: Date | number | string | null | undefined);
    get endDate(): Date | number | string | null | undefined;
    _endDate: Date | null;
    /**
     * Sets the day of start week.
     * - 0 - Sunday,
     * - 1 - Monday,
     * - 2 - Tuesday,
     * - 3 - Wednesday,
     * - 4 - Thursday,
     * - 5 - Friday,
     * - 6 - Saturday,
     *
     * @type number
     * @default 1
     */
    set firstDayOfWeek(value: number);
    get firstDayOfWeek(): number;
    private _firstDayOfWeek;
    /**
     * Sets the default locale for components. If not set, it is inherited from the browser.
     * @default 'default'
     */
    set locale(value: string);
    get locale(): string;
    private _locale;
    /**
     * Max selectable date.
     */
    set maxDate(value: Date | string | null | undefined);
    get maxDate(): Date | null;
    private _maxDate;
    /**
     * Min selectable date.
     */
    set minDate(value: Date | string | null | undefined);
    get minDate(): Date | null;
    private _minDate;
    /**
     * Show navigation.
     * @type boolean
     */
    set navigation(value: boolean);
    get navigation(): boolean;
    private _navigation;
    /**
     * Reorder year-month navigation, and render year first.
     * @type boolean
     * @default false
     */
    set navYearFirst(value: boolean);
    get navYearFirst(): boolean;
    private _navYearFirst;
    /**
     * Allow range selection.
     * @type boolean
     * @default false
     */
    set range(value: boolean);
    get range(): boolean;
    private _range;
    /**
     * Set calendar view.
     * @type 'days' | 'months' | 'years'
     * @default 'days'
     */
    set view(value: "days" | "months" | "years");
    get view(): "days" | "months" | "years";
    private _view;
    /**
     * Set length or format of day name.
     * @type number | 'long' | 'narrow' | 'short'
     * @default 'short'
     */
    set weekdayFormat(value: WeekdayFormatType);
    get weekdayFormat(): WeekdayFormatType;
    private _weekdayFormat;
    set dateFilter(value: DateFilterType | undefined);
    /**
     * Set whether days in adjacent months shown before or after the current month are selectable. This only applies if the `showAdjacentDays` option is set to true.
     * @type boolean
     * @default false
     * @since 4.4.10
     */
    set selectAdjacentDays(value: boolean);
    /**
     * Set whether to display dates in adjacent months (non-selectable) at the start and end of the current month.
     * @type boolean
     * @default true
     * @since 4.4.10
     */
    set showAdjacentDays(value: boolean);
    /**
     * Specify the type of date selection as day, week, month, or year.
     * @type 'day' | 'week' | 'month' | 'year'
     * @default 'day'
     * @since 5.0.0
     */
    set selectionType(value: SelectionType);
    get selectionType(): SelectionType;
    /**
     * Set whether to display week numbers in the calendar.
     * @type boolean
     * @default false
     * @since 5.0.0
     */
    set showWeekNumber(value: boolean);
    /**
     * Label displayed over week numbers in the calendar.
     * @type string
     * @default undefined
     * @since 5.0.0
     */
    set weekNumbersLabel(value: string | undefined);
    calendarCellHover: EventEmitter<Date | null>;
    calendarDateChange: EventEmitter<Date>;
    endDateChange: EventEmitter<Date | null>;
    startDateChange: EventEmitter<Date | null>;
    viewChange: EventEmitter<string>;
    set hoverDate(value: Date | null);
    get hoverDate(): Date | null;
    private _hoverDate;
    get hostClasses(): any;
    calendarMonths: QueryList<CalendarMonthComponent>;
    ngOnInit(): void;
    calendarStateSubscribe(): void;
    setCalendarPage(years: number, months?: number, setMonth?: number): void;
    handleNavigationClick(direction: 'prev' | 'next', years?: boolean): void;
    /**
     * Clear startDate and endDate
     * @type void
     */
    clearDates(): void;
    handleFocusChange($event: FocusOrigin): void;
    protected readonly getCalendarDate: (calendarDate: Date, order: number, view: "days" | "months" | "years") => Date;
    static ɵfac: i0.ɵɵFactoryDeclaration<CalendarComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CalendarComponent, "c-calendar", ["cCalendar"], { "calendarDate": { "alias": "calendarDate"; "required": false; }; "calendars": { "alias": "calendars"; "required": false; }; "dayFormat": { "alias": "dayFormat"; "required": false; }; "disabledDates": { "alias": "disabledDates"; "required": false; }; "startDate": { "alias": "startDate"; "required": false; }; "endDate": { "alias": "endDate"; "required": false; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "navigation": { "alias": "navigation"; "required": false; }; "navYearFirst": { "alias": "navYearFirst"; "required": false; }; "range": { "alias": "range"; "required": false; }; "view": { "alias": "view"; "required": false; }; "weekdayFormat": { "alias": "weekdayFormat"; "required": false; }; "dateFilter": { "alias": "dateFilter"; "required": false; }; "selectAdjacentDays": { "alias": "selectAdjacentDays"; "required": false; }; "showAdjacentDays": { "alias": "showAdjacentDays"; "required": false; }; "selectionType": { "alias": "selectionType"; "required": false; }; "showWeekNumber": { "alias": "showWeekNumber"; "required": false; }; "weekNumbersLabel": { "alias": "weekNumbersLabel"; "required": false; }; }, { "calendarCellHover": "calendarCellHover"; "calendarDateChange": "calendarDateChange"; "endDateChange": "endDateChange"; "startDateChange": "startDateChange"; "viewChange": "viewChange"; }, never, never, true, never>;
    static ngAcceptInputType_calendars: unknown;
    static ngAcceptInputType_firstDayOfWeek: unknown;
    static ngAcceptInputType_navigation: unknown;
    static ngAcceptInputType_navYearFirst: unknown;
    static ngAcceptInputType_range: unknown;
    static ngAcceptInputType_selectAdjacentDays: unknown;
    static ngAcceptInputType_showAdjacentDays: unknown;
    static ngAcceptInputType_showWeekNumber: unknown;
}
