import { ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges, TemplateRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { I18nInterface, I18nService } from 'ng-devui/i18n';
import { DateConverter } from 'ng-devui/utils';
import { Subscription } from 'rxjs';
import { SelectDateChangeEventArgs, SelectDateChangeReason } from './date-change-event-args.model';
import { DatePickerConfigService as DatePickerConfig } from './date-picker.config.service';
import * as i0 from "@angular/core";
export declare class DatepickerComponent implements OnInit, OnChanges, OnDestroy, ControlValueAccessor {
    protected elementRef: ElementRef;
    protected renderer2: Renderer2;
    protected datePickerConfig: DatePickerConfig;
    protected changeDetectorRef: ChangeDetectorRef;
    protected i18n: I18nService;
    static DAY_DURATION: number;
    protected _maxDate: Date;
    protected _minDate: Date;
    protected nowMinYear: number;
    protected nowMaxYear: number;
    cssClass: string;
    dateConverter: DateConverter;
    locale: string;
    selectedDateChange: EventEmitter<SelectDateChangeEventArgs>;
    disabled: boolean;
    customViewTemplate: TemplateRef<any>;
    selectedDate: Date;
    mode: 'year' | 'month' | 'date';
    dateFormat: string;
    yearNumber: number;
    _yearNumber: number;
    _dateConfig: any;
    currentYear: number;
    currentMonthIndex: number;
    _currentHour: number | string;
    _currentMinute: number | string;
    _currentSecond: number | string;
    _showTime: boolean;
    hourOptions: string[];
    minuteOptions: string[];
    displayWeeks: any[];
    yearOptions: any[];
    openChooseYear: boolean;
    openChooseMonth: boolean;
    availableMonths: any[];
    i18nText: I18nInterface['datePicker'];
    i18nLocale: I18nInterface['locale'];
    i18nCommonText: I18nInterface['common'];
    i18nSubscription: Subscription;
    protected onChange: (_: any) => any;
    protected onTouched: () => any;
    constructor(elementRef: ElementRef, renderer2: Renderer2, datePickerConfig: DatePickerConfig, changeDetectorRef: ChangeDetectorRef, i18n: I18nService);
    ngOnInit(): void;
    initMode(): void;
    ngOnChanges(changes: SimpleChanges): void;
    onDocumentClick($event: any): void;
    onClick($event: any): void;
    set showTime(showTime: boolean);
    get showTime(): boolean;
    set dateConfig(dateConfig: any);
    get dateConfig(): any;
    checkDateConfig(dateConfig: any): boolean;
    set minDate(date: Date | any);
    get minDate(): Date | any;
    set maxDate(date: Date | any);
    get maxDate(): Date | any;
    set currentHour(hour: number | string);
    get currentHour(): number | string;
    set currentMinute(min: number | string);
    get currentMinute(): number | string;
    set currentSecond(sec: number | string);
    get currentSecond(): number | string;
    protected resetYearOptions(): void;
    onYearRangeChange(): void;
    writeValue(obj: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    hasPreMonth(): boolean;
    onPreMonth(): void;
    hasNextMonth(): boolean;
    onNextMonth(currentDate?: Date, invocation?: any): void;
    hasPreYearOption(): boolean;
    onPreYearOption(): void;
    hasNextYearOption(): boolean;
    onNextYearOption(): void;
    onSelectYear(year: any, $event?: Event): void;
    protected onSelectDateChanged(): void;
    onDisplayWeeksChange(): void;
    onDisplayMonthsChange(): {
        index: number;
        title: string;
        disabled: boolean;
    }[];
    protected fillLeft(num: number): string;
    isDisabledDay(date: any): boolean;
    isSelectDay(date: any): boolean;
    onSelectDate($event: any, date: any, invocation?: any, reason?: SelectDateChangeReason): void;
    fixTime(event: any, type: any): void;
    onTimeChange(): void;
    timeUp(type: any): void;
    timeDown(type: any): void;
    clearAll: (reason?: SelectDateChangeReason) => void;
    toggle($event: Event, which: any): void;
    isTodayDisable(): boolean;
    isDisabledTime(): boolean;
    initDatePicker(): void;
    confirmTime(event: any): void;
    chooseToday(): void;
    onSelectMonth(month: any): void;
    chooseDate: (date: string, event?: {}, reason?: SelectDateChangeReason) => void;
    get minDateDefined(): boolean;
    get maxDateDefined(): boolean;
    setI18nText(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DatepickerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DatepickerComponent, "d-datepicker", never, { "cssClass": { "alias": "cssClass"; "required": false; }; "dateConverter": { "alias": "dateConverter"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "customViewTemplate": { "alias": "customViewTemplate"; "required": false; }; "selectedDate": { "alias": "selectedDate"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "dateFormat": { "alias": "dateFormat"; "required": false; }; "showTime": { "alias": "showTime"; "required": false; }; "dateConfig": { "alias": "dateConfig"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; }, { "selectedDateChange": "selectedDateChange"; }, never, never, false, never>;
}
