import { AfterContentInit, EventEmitter } from '@angular/core';
import { AswDatetimeFormats, DatetimeAdapter } from '@asoftwareworld/form-builder-pro/common';
import { AswCalendarCell } from '../calendar-body/calendar-body';
import { AswDatetimepickerType } from '../datetimepicker-types';
import * as i0 from "@angular/core";
/**
 * An internal component used to display a single month in the datetimepicker.
 * @docs-private
 */
export declare class AswMonthView<D> implements AfterContentInit {
    _adapter: DatetimeAdapter<D>;
    private _dateFormats;
    type: AswDatetimepickerType;
    /** A function used to filter which dates are selectable. */
    dateFilter: (date: D) => boolean;
    /** Emits when a new date is selected. */
    selectedChange: EventEmitter<D>;
    /** Emits when any date is selected. */
    readonly _userSelection: EventEmitter<void>;
    /** Grid of calendar cells representing the dates of the month. */
    _weeks: AswCalendarCell[][];
    /** The number of blank cells in the first row before the 1st of the month. */
    _firstWeekOffset: number;
    /**
     * The date of the month that the currently selected Date falls on.
     * Null if the currently selected Date is in another month.
     */
    _selectedDate: number | null;
    /** The date of the month that today falls on. Null if today is in another month. */
    _todayDate: number | null;
    /** The names of the weekdays. */
    _weekdays: {
        long: string;
        narrow: string;
    }[];
    _calendarState: string;
    constructor(_adapter: DatetimeAdapter<D>, _dateFormats: AswDatetimeFormats);
    private _activeDate;
    /**
     * The date to display in this month view (everything other than the month and year is ignored).
     */
    get activeDate(): D;
    set activeDate(value: D);
    /** The currently selected date. */
    get selected(): D;
    set selected(value: D);
    private _selected;
    ngAfterContentInit(): void;
    /** Handles when a new date is selected. */
    _dateSelected(date: number): void;
    _calendarStateDone(): void;
    /** Initializes this month view. */
    private _init;
    /** Creates MdCalendarCells for the dates in this month. */
    private _createWeekCells;
    /**
     * Gets the date in this month that the given Date falls on.
     * Returns null if the given Date is in another month.
     */
    private _getDateInCurrentMonth;
    private calendarState;
    static ɵfac: i0.ɵɵFactoryDeclaration<AswMonthView<any>, [{ optional: true; }, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AswMonthView<any>, "asw-month-view", ["aswMonthView"], { "type": { "alias": "type"; "required": false; }; "dateFilter": { "alias": "dateFilter"; "required": false; }; "activeDate": { "alias": "activeDate"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; }, { "selectedChange": "selectedChange"; "_userSelection": "_userSelection"; }, never, never, false, never>;
}
