import { AfterViewInit, ChangeDetectorRef, OnChanges, OnDestroy, OnInit, Renderer2 } from '@angular/core';
import { ControlValueAccessor, FormBuilder, FormGroup } from '@angular/forms';
import { DatePipe } from '@angular/common';
import { BehaviorSubject, Subject } from 'rxjs';
import { DatepickerMode } from './datepicker-mode';
import { DatepickerDate } from './datepicker-date';
import { InputComponent } from '@ironsource/fusion-ui/components/input/v1';
import { TimezoneService } from '@ironsource/fusion-ui/services/timezone';
import { CalendarService } from '@ironsource/fusion-ui/components/calendar/common/base';
import { Datepicker } from './datepicker';
import * as i0 from "@angular/core";
export declare class DatepickerComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit, ControlValueAccessor {
    private timezoneService;
    private calendarService;
    private renderer;
    private fb;
    private datePipe;
    cdr: ChangeDetectorRef;
    set isOpened(value: boolean);
    isTimePicker: boolean;
    isTimeZonePicker: boolean;
    isDisabled: boolean;
    style: 'drop-down' | 'combo-box';
    labelDateFormat: string;
    placeholder: string;
    error: string;
    defaultTimezone: string;
    minDate: Date;
    maxDate: Date;
    prefix: string;
    mode: DatepickerMode;
    suppressClickOnRemove: boolean;
    hoursPicker: InputComponent;
    minutesPicker: InputComponent;
    onDestroy$: Subject<unknown>;
    dropDownStyle: any;
    selectedDate: Datepicker;
    today: Date;
    calendarDate: Date;
    datesInputs: FormGroup;
    timeZonesOptions: Array<any>;
    daysOfWeek: string[];
    weeks: DatepickerDate[][];
    datepickerAvailableModes: typeof DatepickerMode;
    isOpen$: BehaviorSubject<boolean>;
    constructor(timezoneService: TimezoneService, calendarService: CalendarService, renderer: Renderer2, fb: FormBuilder, datePipe: DatePipe, cdr: ChangeDetectorRef);
    ngOnInit(): void;
    ngOnDestroy(): void;
    ngAfterViewInit(): void;
    ngOnChanges(changes: any): void;
    get selectedLabel(): string;
    private setMinMaxForTimeInput;
    private isDate;
    private _setSelectedDate;
    private selectCurrentDate;
    private _toggleDateInputErrClass;
    private initData;
    private initListeners;
    private onDateValueChanged;
    private onHoursValueChanged;
    private onMinutesValueChanged;
    private onTimezoneValueChanged;
    private _getSelectedTimezone;
    /**
     * On external (out component click event )
     */
    onOutsideClick(): void;
    /**
     * On input get focus
     */
    onInputFocus(): void;
    /**
     * gen array of weeks / days for calendar render
     * @param dateToCalendar - Date for calendar
     */
    private setWeeks;
    getCalendar(month: any, year: any): any[];
    private getDaysInMonth;
    private isDatesEqual;
    private isDateDisabled;
    private formatDateToString;
    private getDateHours;
    private getDateMinutes;
    /**
     * On month changed
     * @param direction month changing delta (1: for next, -1: for prev. )
     */
    onMonthChangeClicked(direction?: number): void;
    /**
     * Select date on calendar;
     */
    onDateClick(dateToSelect: any, $event: any): void;
    /**
     * check if components has selected date
     */
    isDateSelected(): boolean;
    /**
     * Method to call when value has changes.
     */
    propagateChange: (_: Datepicker) => void;
    /**
     * Method to call when the component is touched (when it was is clicked).
     */
    propagateTouched: () => void;
    /**
     * update value from model to the component
     */
    writeValue(value: Datepicker): void;
    /**
     * Informs the outside world about changes.
     * see method propagateChange call - this.propagateChange(this.model);
     */
    registerOnChange(fn: any): void;
    /**
     * on click
     */
    registerOnTouched(fn: any): void;
    /**
     * on set form controll enabled / disabled
     * also do UI Component enabled / disabled
     */
    setDisabledState?(isDisabled: boolean): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DatepickerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DatepickerComponent, "fusion-datepicker", never, { "isOpened": { "alias": "isOpened"; "required": false; }; "isTimePicker": { "alias": "isTimePicker"; "required": false; }; "isTimeZonePicker": { "alias": "isTimeZonePicker"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; }; "style": { "alias": "style"; "required": false; }; "labelDateFormat": { "alias": "labelDateFormat"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "error": { "alias": "error"; "required": false; }; "defaultTimezone": { "alias": "defaultTimezone"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "prefix": { "alias": "prefix"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "suppressClickOnRemove": { "alias": "suppressClickOnRemove"; "required": false; }; }, {}, never, never, false, never>;
}
