import { ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
import { NgxDaterangepickerLocaleService } from "./ngx-daterangepicker-locale.service";
import dayjs, { Dayjs } from "dayjs";
import * as i0 from "@angular/core";
export declare enum SideEnum {
    left = "left",
    right = "right"
}
export declare class NgxDaterangepickerBootstrapComponent implements OnInit, OnChanges {
    private el;
    private _ref;
    private _localeService;
    $event: any;
    chosenLabel?: string;
    calendarVariables: {
        left: any;
        right: any;
    };
    timepickerVariables: {
        left: any;
        right: any;
    };
    applyBtn: {
        disabled: boolean;
    };
    sideEnum: typeof SideEnum;
    chosenRange?: string | null;
    rangesArray: Array<any>;
    isShown: Boolean;
    inline: boolean;
    showCalInRanges: Boolean;
    private tooltiptext;
    private leftCalendar;
    private rightCalendar;
    private nowHoveredDate;
    private pickingDate;
    private _old;
    private _minDate?;
    private _maxDate?;
    private _locale;
    private _ranges;
    startDate: Dayjs | undefined | null;
    endDate: Dayjs | undefined | null;
    dateLimit: number | null;
    autoApply: Boolean;
    singleDatePicker: Boolean;
    showDropdowns: Boolean;
    showWeekNumbers: Boolean;
    showISOWeekNumbers: Boolean;
    linkedCalendars: Boolean;
    autoUpdateInput: Boolean;
    alwaysShowCalendars: Boolean;
    maxSpan: Boolean;
    lockStartDate: Boolean;
    timePicker: Boolean;
    timePicker24Hour: Boolean;
    timePickerIncrement: number;
    timePickerSeconds: Boolean;
    showClearButton: Boolean;
    firstMonthDayClass: string | null | undefined;
    lastMonthDayClass: string | null | undefined;
    emptyWeekRowClass: string | null | undefined;
    emptyWeekColumnClass: string | null | undefined;
    firstDayOfNextMonthClass: string | null | undefined;
    lastDayOfPreviousMonthClass: string | null | undefined;
    showCustomRangeLabel?: boolean;
    showCancel: boolean;
    keepCalendarOpeningWithRange: boolean;
    showRangeLabelOnInput: boolean;
    customRangeDirection: boolean;
    drops?: string;
    opens?: string;
    closeOnAutoApply: boolean;
    set minDate(value: dayjs.Dayjs | string);
    set maxDate(value: dayjs.Dayjs | string);
    set locale(value: any);
    set ranges(value: any);
    choosedDate: EventEmitter<Object>;
    rangeClicked: EventEmitter<Object>;
    datesUpdated: EventEmitter<Object>;
    startDateChanged: EventEmitter<Object>;
    endDateChanged: EventEmitter<Object>;
    cancelClicked: EventEmitter<Object>;
    clearClicked: EventEmitter<void>;
    pickerContainer?: ElementRef;
    getMinDate(): dayjs.Dayjs | null | undefined;
    getMaxDate(): dayjs.Dayjs | null | undefined;
    get locale(): any;
    get ranges(): any;
    constructor(el: ElementRef, _ref: ChangeDetectorRef, _localeService: NgxDaterangepickerLocaleService);
    ngOnChanges(changes: SimpleChanges): void;
    ngOnInit(): void;
    renderRanges(): void;
    renderTimePicker(side: SideEnum): void;
    renderCalendar(side: SideEnum): void;
    setStartDate(startDate: any): void;
    setEndDate(endDate: any): void;
    isInvalidDate(date: any): any;
    isCustomDate(date: any): any;
    isTooltipDate(date: any): any;
    updateView(): void;
    updateMonthsInView(): void;
    /**
     *  This is responsible for updating the calendars
     */
    updateCalendars(): void;
    updateElement(): void;
    remove(): void;
    /**
     * this should calculate the label
     */
    calculateChosenLabel(): void;
    clickApply(e?: any): void;
    clickCancel(e: any): void;
    /**
     * called when month is changed
     * @param monthEvent get value in event.target.value
     * @param side left or right
     */
    monthChanged(monthEvent: any, side: SideEnum): void;
    /**
     * called when year is changed
     * @param yearEvent get value in event.target.value
     * @param side left or right
     */
    yearChanged(yearEvent: any, side: SideEnum): void;
    /**
     * called when time is changed
     * @param timeEvent  an event
     * @param side left or right
     */
    timeChanged(timeEvent: any, side: SideEnum): void;
    /**
     *  call when month or year changed
     * @param month month number 0 -11
     * @param year year eg: 1995
     * @param side left or right
     */
    monthOrYearChanged(month: number, year: number, side: SideEnum): void;
    /**
     * Click on previous month
     * @param side left or right calendar
     */
    clickPrev(side: SideEnum): void;
    /**
     * Click on next month
     * @param side left or right calendar
     */
    clickNext(side: SideEnum): void;
    /**
     * When hovering a date
     * @param e event: get value by e.target.value
     * @param side left or right
     * @param row row position of the current date clicked
     * @param col col position of the current date clicked
     */
    hoverDate(e: any, side: SideEnum, row: number, col: number): void;
    /**
     * When selecting a date
     * @param e event: get value by e.target.value
     * @param side left or right
     * @param row row position of the current date clicked
     * @param col col position of the current date clicked
     */
    clickDate(e: any, side: SideEnum, row: number, col: number): void;
    /**
     *  Click on the custom range
     * @param e: Event
     * @param label
     */
    clickRange(e: any, label: any): void;
    show(e?: any): void;
    hide(e?: any): void;
    clearIncompleteDateSelection(): void;
    /**
     * handle click on all element in the component, useful for outside of click
     * @param e event
     */
    handleInternalClick(e: any): void;
    /**
     * update the locale options
     * @param locale
     */
    updateLocale(locale: any): void;
    /**
     *  clear the daterange picker
     */
    clear(): void;
    /**
     * Find out if the selected range should be disabled if it doesn't
     * fit into minDate and maxDate limitations.
     */
    disableRange(range: any): any;
    /**
     *
     * @param date the date to add time
     * @param side left or right
     */
    private _getDateWithTime;
    /**
     *  build the locale config
     */
    private _buildLocale;
    private _buildCells;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgxDaterangepickerBootstrapComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NgxDaterangepickerBootstrapComponent, "ngx-daterangepicker-bootstrap", never, { "startDate": "startDate"; "endDate": "endDate"; "dateLimit": "dateLimit"; "autoApply": "autoApply"; "singleDatePicker": "singleDatePicker"; "showDropdowns": "showDropdowns"; "showWeekNumbers": "showWeekNumbers"; "showISOWeekNumbers": "showISOWeekNumbers"; "linkedCalendars": "linkedCalendars"; "autoUpdateInput": "autoUpdateInput"; "alwaysShowCalendars": "alwaysShowCalendars"; "maxSpan": "maxSpan"; "lockStartDate": "lockStartDate"; "timePicker": "timePicker"; "timePicker24Hour": "timePicker24Hour"; "timePickerIncrement": "timePickerIncrement"; "timePickerSeconds": "timePickerSeconds"; "showClearButton": "showClearButton"; "firstMonthDayClass": "firstMonthDayClass"; "lastMonthDayClass": "lastMonthDayClass"; "emptyWeekRowClass": "emptyWeekRowClass"; "emptyWeekColumnClass": "emptyWeekColumnClass"; "firstDayOfNextMonthClass": "firstDayOfNextMonthClass"; "lastDayOfPreviousMonthClass": "lastDayOfPreviousMonthClass"; "showCustomRangeLabel": "showCustomRangeLabel"; "showCancel": "showCancel"; "keepCalendarOpeningWithRange": "keepCalendarOpeningWithRange"; "showRangeLabelOnInput": "showRangeLabelOnInput"; "customRangeDirection": "customRangeDirection"; "drops": "drops"; "opens": "opens"; "closeOnAutoApply": "closeOnAutoApply"; "minDate": "minDate"; "maxDate": "maxDate"; "locale": "locale"; "ranges": "ranges"; "isInvalidDate": "isInvalidDate"; "isCustomDate": "isCustomDate"; "isTooltipDate": "isTooltipDate"; }, { "choosedDate": "choosedDate"; "rangeClicked": "rangeClicked"; "datesUpdated": "datesUpdated"; "startDateChanged": "startDateChanged"; "endDateChanged": "endDateChanged"; "cancelClicked": "cancelClicked"; "clearClicked": "clearClicked"; }, never, never, false, never>;
}
