import { ElementRef } from '@angular/core';
import * as moment_ from 'moment';
import { OverlayPositionBuilder, OverlayRef, Overlay } from '@angular/cdk/overlay';
import { DatePickerLocale } from './public-api';
export declare class NpDatePickerService {
    private overlayPositionBuilder;
    private overlay;
    readonly locale: DatePickerLocale;
    constructor(overlayPositionBuilder: OverlayPositionBuilder, overlay: Overlay);
    /**
     * 根据传入的moment时间及传入的年份生成年份范围数组YearData。
     * 例如：year = 2020， 年份范围value示例为
     *
     * [
     *
     *      2019, 2020, 2021,
     *
     *      2022, 2023, 2024,
     *
     *      2025, 2026, 2027,
     *
     *      2028, 2029, 2030
     *
     * ]
     * @param date Moment时间
     * @param year 年份YYYY， 例：2020
     * @param selectedDate 当前选中的日期
     */
    buildYearsPanel(date: moment_.Moment, year: string, selectedDate: moment_.Moment): Array<YearData>;
    /**
     * 构建当前年份的全部月份
     * @param selectedDate 当前选中的日期
     */
    buildMonthsPanel(date: moment_.Moment, selectedDate: moment_.Moment): Array<MonthData>;
    /**
     * 根据传入的日期构建当前显示日历面板（当前这个月的天数面板）。
     * 例如：传入日期为2020/08/20，则返回一个DayDataPerMonth数组，
     * 其中的value示例如下:
     *
     * ['日', '一', '二', '三', '四', '五', '六',
     *
     *  '26', '27', '28', '29', '30', '31', '1',
     *
     *  '2',  '3',  '4',  '5',  '6',  '7',  '8',
     *
     *  '9',  '10', '11', '12', '13', '14', '15',
     *
     *  '16', '17', '18', '19', '20', '21', '22',
     *
     *  '23', '24', '25', '26', '27', '28', '29',
     *
     *  '30', '31',  '1',  '2',  '3',  '4',  '5']
     * @param date 构建日期面板的日期
     * @param selectedDate 当前选中的日期
     * @param isRangePicker 是否是时间区间选择
     * @param dates 当isRangePicker为true时，需要传入此时间区间字段，代表时间区间已选择的区间值
     */
    buildDaysPanel(date: moment_.Moment, selectedDate: moment_.Moment): Array<DayDataPerMonth>;
    sortDates(dates: Array<moment_.Moment>, asc?: boolean): moment_.Moment[];
    buildStartAndEndDates(sDate: moment_.Moment, eDate: moment_.Moment): moment_.Moment[];
    day(date: moment_.Moment): moment_.Moment;
    private getDayStatus;
    /**
     * 构建时间区间选择当鼠标hover面板时的状态，同buildDaysPanel的功能，
     * 增加对象DayDataPerMonth中对字段isWithinDateRangeHover的值的区分。
     *
     * @param date 构建日期面板的日期
     * @param selectedDate 当前选中的日期
     * @param hoverDate 当前hover的时间moment值
     * @param dates 需要传入此时间区间字段，代表时间区间已选择的区间值
     */
    buildDaysPanelForRangePicker(date: moment_.Moment, selectedDate: moment_.Moment, hoverDate: moment_.Moment, dates?: Array<moment_.Moment>): DayDataPerMonth[];
    getWeekdaysMin(): string[];
    getOverlayRef(elementRef: ElementRef): OverlayRef;
    /**获取calendar时间，例如今天，昨天，明天等 */
    calendar(date: moment_.Moment, locale?: DatePickerLocale): string;
    isValid(date: moment_.Moment | string): boolean;
}
export interface DateData {
    /**是否可选 */
    available: boolean;
    /**当前值 */
    value: string;
    /**当前是否选中 */
    isSelected: boolean;
    /**当前日期 */
    date: moment_.Moment;
}
export interface DayDataPerMonth extends DateData {
    /**是否是第一行的周 */
    isWeekDayMin: boolean;
    /**当datepickertype为date-range-picker的时候，鼠标hover后在候选时间区间的则为true，否则false */
    hoverDateType?: DayStatusForRangePicker;
}
/**
 * 区间时间选择在所有日期天数面板的状态及对应样式
 *
 * normal - 正常日期天数 无额外样式
 *
 * within-hover - 在hover的时间区间里面 有虚线边框
 *
 * within-selected - 在已选的时间区间里面 有背景色
 *
 * within-selected-hover - 在已选的时间区间里面被hover 加深背景色
 */
export declare type DayStatusForRangePicker = 'normal' | 'within-hover' | 'within-selected' | 'within-selected-hover';
export interface YearData extends DateData {
}
export interface MonthData extends DateData {
}
