import { OnInit, QueryList, WritableSignal } from '@angular/core';
import { CalendarService, DateFilterType, DayFormatType, SelectionType, WeekdayFormatType } from '../calendar.service';
import { CalendarDayDirective } from './calendar-day.directive';
import { CalendarRowDirective } from './calendar-row.directive';
import * as i0 from "@angular/core";
export declare class CalendarMonthComponent implements OnInit {
    #private;
    private calendarService;
    constructor(calendarService: CalendarService);
    addMonths: number;
    /**
     * Initial selected date.
     * @type  (Date | null)
     */
    set startDate(value: Date | number | string | null | undefined);
    get startDate(): Date | null;
    _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;
    /**
     * Specify the list of dates that cannot be selected.
     * @type  Date[] | Date[][]
     */
    set disabledDates(value: (Date[] | Date)[]);
    get disabledDates(): (Date[] | Date)[];
    private _disabledDates;
    /**
     * Sets the day of start week.
     * - 0 - Sunday,
     * - 1 - Monday,
     * - 2 - Tuesday,
     * - 3 - Wednesday,
     * - 4 - Thursday,
     * - 5 - Friday,
     * - 6 - Saturday,
     */
    firstDayOfWeek: number;
    /**
     * Sets the default locale for components. If not set, it is inherited from the browser.
     * @default 'default'
     */
    set locale(value: string);
    get locale(): string;
    /**
     * Allow range selection.
     * @type boolean
     * @default false
     */
    range: boolean;
    /**
     * Set length or format of day name.
     * @type number | 'long' | 'narrow' | 'short'
     * @default 'short'
     */
    weekdayFormat: WeekdayFormatType;
    /**
     * Set calendar view.
     * @type 'days' | 'months' | 'years'
     * @default 'days'
     */
    set view(value: "days" | "months" | "years");
    get view(): "days" | "months" | "years";
    /**
     * Max selectable date.
     */
    set maxDate(value: Date | null);
    get maxDate(): Date | null;
    private _maxDate;
    /**
     * Min selectable date.
     */
    set minDate(value: Date | null);
    get minDate(): Date | null;
    private _minDate;
    listOfMonths: import("@angular/core").Signal<{
        year: number;
        month: string;
    }[][]>;
    listOfYears: import("@angular/core").Signal<number[][]>;
    /**
     * Default date of the component
     * @type Date
     */
    set calendarDate(value: Date | string | number);
    get calendarDate(): Date;
    calendarDate$$: WritableSignal<Date>;
    calendarDays: QueryList<CalendarDayDirective>;
    calendarRows: QueryList<CalendarRowDirective>;
    dateFilter: DateFilterType;
    get date(): Date;
    dayFormat: DayFormatType;
    selectAdjacentDays: boolean;
    showAdjacentDays: boolean;
    set selectionType(value: SelectionType);
    get selectionType(): SelectionType;
    showWeekNumber: boolean;
    weekNumbersLabel: string;
    private _monthDetails;
    get monthDetails(): {
        weekNumber: number;
        days: {
            date: Date;
            month: string;
        }[];
    }[];
    get weekDays(): {
        date: Date;
        month: string;
    }[];
    ngOnInit(): void;
    setMonthDetails(date?: Date): void;
    yearNumber(year: any): string;
    isDateDisabled(date: Date): boolean;
    calendarCellTitle(date: Date): string;
    handleCellMouseEnter(hoverDate: Date | undefined): void;
    handleYearCellClick(year: number): void;
    handleYearCellKeyUp($event: KeyboardEvent, date: Date | undefined): void;
    handleMonthCellKeyUp($event: KeyboardEvent, date: Date | undefined): void;
    handleMonthCellClick(value: Date | undefined): void;
    setCalendarPage(years: number, months?: number, setMonth?: number): void;
    handleDayCellKeyDown($event: KeyboardEvent, date: Date | undefined): void;
    handleCellMouseLeave(): void;
    handleDayCellKeyUp($event: KeyboardEvent, date: Date): void;
    handleDayCellClick(date: Date): void;
    calendarStateSubscribe(): void;
    getMonthStart(index: number): Date;
    getMonthEnd(index: number): Date;
    protected readonly isDateInRangeDisabled: (startDate?: Date | null, endDate?: Date | null, dates?: (Date | Date[])[]) => boolean;
    protected readonly isDateBetweenMinMax: (date: Date | null, min: Date | null, max: Date | null) => boolean;
    getYearStart(year: number): Date;
    getYearEnd(year: number): Date;
    static ɵfac: i0.ɵɵFactoryDeclaration<CalendarMonthComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CalendarMonthComponent, "c-calendar-month", ["cCalendarMonth"], { "addMonths": { "alias": "addMonths"; "required": false; }; "startDate": { "alias": "startDate"; "required": false; }; "endDate": { "alias": "endDate"; "required": false; }; "disabledDates": { "alias": "disabledDates"; "required": false; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "range": { "alias": "range"; "required": false; }; "weekdayFormat": { "alias": "weekdayFormat"; "required": false; }; "view": { "alias": "view"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "calendarDate": { "alias": "calendarDate"; "required": false; }; }, {}, never, never, true, never>;
    static ngAcceptInputType_firstDayOfWeek: unknown;
    static ngAcceptInputType_range: unknown;
}
