import { EventEmitter, ChangeDetectorRef, OnInit } from '@angular/core';
/** day item cell type */
export interface DayItem {
    /** cell text */
    text: string;
    /** cell date */
    date: Date;
    /** whether cell is disabled */
    disabled: boolean;
    /** cell title */
    title: string;
    /** whether cell is today */
    isCurrent: boolean;
    /** whether cell is selected */
    isSelected: boolean;
    /** whether cell is belong to last month */
    isLastMonth: boolean;
    /** whether cell is belong to next month */
    isNextMonth: boolean;
}
/** month weeks */
export interface WeekItem {
    days: Array<DayItem>;
}
/** nullable date type */
export declare type DateType = Date | null;
/**
 * Month View Component
 */
export declare class MonthViewComponent implements OnInit {
    private cd;
    /** monthview selected event, emit the selected date */
    select: EventEmitter<any>;
    /**
     * Whether the month view allows range selection, defaults to false
     * @default false
     */
    multiple: boolean;
    /**
     * single monthview selected date(when the month view is not multiple)
     * @default new Date()
     */
    value: any;
    private _value;
    /**
     * the selection start date in multiple mode
     */
    startDate: any;
    private _startDate;
    /**
     * the selection end date in multiple mode
     */
    endDate: any;
    private _endDate;
    /**
     * the current month date of the selected date
     * @default new Date()
     */
    month: any;
    private _month;
    /**
     * the first day of the week, default to 0(Sunday), here we set to 1(Monday)
     * @default Weekday.Monday
     */
    firstDayOfWeek: number;
    /**
     * A array of disabled dates that can't be selected, date format is: `'2017-01-01'`
     * @default []
     */
    disabledDates: string[];
    /**
     * the strategy function which used to check weather the date is disabled
     */
    disabledStrategy: (date: Date) => boolean;
    /**
     * whether the month view is disabled
     * @default false
     */
    disabled: boolean;
    /**
     * monthview locale
     * @docs-private
     */
    _locale: string;
    /**
     * monthview locale weeknames
     * @docs-private
     */
    _weekNames: string[];
    /**
     * monthview weeks
     * @docs-private
     */
    _weeks: WeekItem[];
    /**
     * the last mouse over day cell
     */
    _lastMouseOverDay: Date;
    /** whether the range selection is done */
    _isDone: boolean;
    /** the temp end date when mouse over */
    _tempEndDate: DateType;
    constructor(cd: ChangeDetectorRef);
    ngOnInit(): void;
    /**
     * get locale week day names
     */
    _getWeekNames(): string[];
    /**
     * build month weeks according to the month
     */
    _buildWeeks(): void;
    /**
     * build month weeks
     * @param d? - current date
     * @return month weeks
     */
    _buildMonthWeeks(d?: Date): WeekItem[];
    /**
     * get week day items
     * @param date - current date
     * @param {Date} month - current date
     * @return {DayItem[]} week day items
     */
    _buildWeek(date: Date, month: Date): DayItem[];
    /**
     * in multiple mode, check the day item's selected state
     * @param {Date} date - current day item
     * @return {boolean} whether the day item is selected
     * @docs-private
     */
    checkIsSelected(date: Date): boolean;
    /**
     * Check whether the day item is disabled
     * @param date - current day item
     * @return {boolean} true if disabled
     * @docs-private
     */
    checkIsDisabled(date: Date): boolean;
    /**
     * the day click event
     * @param {DayItem} day - day item
     * @docs-private
     */
    onClick(day: DayItem): void;
    /**
     * cell mouse over event
     * @param {DayItem} day - day item
     * @docs-private
     */
    onMouseOver(day: DayItem): void;
}
