import { EventEmitter, OnChanges, OnDestroy, SimpleChanges, ElementRef, Renderer, ChangeDetectorRef } from "@angular/core";
import { ControlValueAccessor } from "@angular/forms";
import { IMyDate, IMyMonth, IMyCalendarMonth, IMyCalendarYear, IMyWeek, IMyOptions, IMyDateRangeModel, IMyInputFieldChanged, IMyCalendarViewChanged, IMyInputFocusBlur, IMyDateSelected } from "./interfaces/index";
import { DateRangeUtilService } from "./services/my-date-range-picker.date.range.util.service";
export declare const MYDRP_VALUE_ACCESSOR: any;
export declare class MyDateRangePicker implements OnChanges, OnDestroy, ControlValueAccessor {
    elem: ElementRef;
    private renderer;
    private cdr;
    private drus;
    options: any;
    defaultMonth: string;
    selDateRange: string;
    placeholder: string;
    dateRangeChanged: EventEmitter<IMyDateRangeModel>;
    inputFieldChanged: EventEmitter<IMyInputFieldChanged>;
    calendarViewChanged: EventEmitter<IMyCalendarViewChanged>;
    inputFocusBlur: EventEmitter<IMyInputFocusBlur>;
    dateSelected: EventEmitter<IMyDateSelected>;
    selectorEl: any;
    onChangeCb: (_: any) => void;
    onTouchedCb: () => void;
    showSelector: boolean;
    visibleMonth: IMyMonth;
    selectedMonth: IMyMonth;
    weekDays: Array<string>;
    dates: Array<IMyWeek>;
    months: Array<Array<IMyCalendarMonth>>;
    years: Array<Array<IMyCalendarYear>>;
    selectionDayTxt: string;
    invalidDateRange: boolean;
    dateRangeFormat: string;
    dayIdx: number;
    weekDayOpts: Array<string>;
    selectMonth: boolean;
    selectYear: boolean;
    prevMonthDisabled: boolean;
    nextMonthDisabled: boolean;
    prevYearDisabled: boolean;
    nextYearDisabled: boolean;
    prevYearsDisabled: boolean;
    nextYearsDisabled: boolean;
    prevMonthId: number;
    currMonthId: number;
    nextMonthId: number;
    beginDate: IMyDate;
    endDate: IMyDate;
    titleAreaText: string;
    globalListener: Function;
    opts: IMyOptions;
    constructor(elem: ElementRef, renderer: Renderer, cdr: ChangeDetectorRef, drus: DateRangeUtilService);
    resetMonthYearSelect(): void;
    onSelectMonthClicked(event: any): void;
    onMonthCellClicked(cell: IMyCalendarMonth): void;
    onMonthCellKeyDown(event: any, cell: IMyCalendarMonth): void;
    onSelectYearClicked(event: any): void;
    onYearCellClicked(cell: IMyCalendarYear): void;
    onYearCellKeyDown(event: any, cell: IMyCalendarYear): void;
    onPrevYears(event: any, year: number): void;
    onNextYears(event: any, year: number): void;
    generateYears(year: number): void;
    onUserDateRangeInput(value: string): void;
    onFocusInput(event: any): void;
    onBlurInput(event: any): void;
    onCloseSelector(event: any): void;
    parseOptions(): void;
    writeValue(value: Object): void;
    setDisabledState(disabled: boolean): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    ngOnDestroy(): void;
    ngOnChanges(changes: SimpleChanges): void;
    removeBtnClicked(): void;
    openBtnClicked(): void;
    setVisibleMonth(): void;
    onPrevMonth(): void;
    onNextMonth(): void;
    onPrevYear(): void;
    onNextYear(): void;
    clearRangeValues(): void;
    onCellClicked(cell: any): void;
    selectBeginDate(date: IMyDate): void;
    selectEndDate(date: IMyDate): void;
    onCellKeyDown(event: any, cell: any): void;
    onCellMouseEnter(cell: any): void;
    onCellMouseLeave(): void;
    toBeginDate(): void;
    clearDateRange(): void;
    rangeSelected(): void;
    getDateRangeModel(beginDate: IMyDate, endDate: IMyDate): IMyDateRangeModel;
    isInRange(val: any): boolean;
    isRangeSelected(): boolean;
    preZero(val: string): string;
    formatDate(val: any): string;
    monthText(m: number): string;
    monthStartIdx(y: number, m: number): number;
    daysInMonth(m: number, y: number): number;
    daysInPrevMonth(m: number, y: number): number;
    isCurrDay(d: number, m: number, y: number, cmo: number, today: IMyDate): boolean;
    getPreviousDate(date: IMyDate): IMyDate;
    getNextDate(date: IMyDate): IMyDate;
    getDayNumber(date: IMyDate): number;
    getWeekday(date: IMyDate): string;
    getDate(date: IMyDate): Date;
    getToday(): IMyDate;
    sundayIdx(): number;
    generateCalendar(m: number, y: number, viewChange: boolean): void;
    setHeaderBtnDisabledState(m: number, y: number): void;
    parseSelectedDate(selDate: any): IMyDate;
    parseSelectedMonth(ms: string): IMyMonth;
}
