/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */
import { Direction } from '@angular/cdk/bidi';
import { ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges, TemplateRef } from '@angular/core';
import { Subject } from 'rxjs';
import { CandyDate, CompatibleValue, SingleValue } from 'ng-zorro-antd/core/time';
import { FunctionProp } from 'ng-zorro-antd/core/types';
import { NzCalendarI18nInterface } from 'ng-zorro-antd/i18n';
import { DatePickerService } from './date-picker.service';
import { CompatibleDate, DisabledDateFn, DisabledTimeFn, NzDateMode, NzPanelChangeType, PresetRanges, RangePartType, SupportTimeOptions } from './standard-types';
import * as i0 from "@angular/core";
export declare class DateRangePopupComponent implements OnInit, OnChanges, OnDestroy {
    datePickerService: DatePickerService;
    cdr: ChangeDetectorRef;
    private host;
    isRange: boolean;
    inline: boolean;
    showWeek: boolean;
    locale: NzCalendarI18nInterface | undefined;
    disabledDate?: DisabledDateFn;
    disabledTime?: DisabledTimeFn;
    showToday: boolean;
    showNow: boolean;
    showTime: SupportTimeOptions | boolean;
    extraFooter?: TemplateRef<void> | string;
    ranges?: PresetRanges;
    dateRender?: string | TemplateRef<Date> | FunctionProp<TemplateRef<Date> | string>;
    panelMode: NzDateMode | NzDateMode[];
    defaultPickerValue: CompatibleDate | undefined | null;
    dir: Direction;
    readonly panelModeChange: EventEmitter<NzPanelChangeType>;
    readonly calendarChange: EventEmitter<CompatibleValue>;
    readonly resultOk: EventEmitter<void>;
    prefixCls: string;
    endPanelMode: NzDateMode | NzDateMode[];
    timeOptions: SupportTimeOptions | SupportTimeOptions[] | null;
    hoverValue: SingleValue[];
    checkedPartArr: boolean[];
    destroy$: Subject<boolean>;
    get hasTimePicker(): boolean;
    get hasFooter(): boolean;
    get arrowPosition(): {
        left?: string;
        right?: string;
    };
    constructor(datePickerService: DatePickerService, cdr: ChangeDetectorRef, host: ElementRef<HTMLElement>);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    updateActiveDate(): void;
    onClickOk(): void;
    onClickToday(value: CandyDate): void;
    onCellHover(value: CandyDate): void;
    onPanelModeChange(panelChangeEvent: NzPanelChangeType, partType?: RangePartType): void;
    onActiveDateChange(value: CandyDate, partType: RangePartType): void;
    onSelectTime(value: CandyDate, partType?: RangePartType): void;
    changeValueFromSelect(value: CandyDate, emitValue?: boolean): void;
    reversedPart(part: RangePartType): RangePartType;
    getPanelMode(panelMode: NzDateMode | NzDateMode[], partType?: RangePartType): NzDateMode;
    getValue(partType?: RangePartType): CandyDate;
    getActiveDate(partType?: RangePartType): CandyDate;
    disabledStartTime: DisabledTimeFn;
    disabledEndTime: DisabledTimeFn;
    isOneAllowed(selectedValue: SingleValue[]): boolean;
    isBothAllowed(selectedValue: SingleValue[]): boolean;
    isAllowed(value: CompatibleValue, isBoth?: boolean): boolean;
    getTimeOptions(partType?: RangePartType): SupportTimeOptions | null;
    onClickPresetRange(val: PresetRanges[keyof PresetRanges]): void;
    onPresetRangeMouseLeave(): void;
    onHoverPresetRange(val: PresetRanges[keyof PresetRanges]): void;
    getObjectKeys(obj?: PresetRanges): string[];
    show(partType: RangePartType): boolean;
    private clearHoverValue;
    private buildTimeOptions;
    private overrideTimeOptions;
    private overrideHms;
    static ɵfac: i0.ɵɵFactoryDeclaration<DateRangePopupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DateRangePopupComponent, "date-range-popup", ["dateRangePopup"], { "isRange": { "alias": "isRange"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "showWeek": { "alias": "showWeek"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "disabledDate": { "alias": "disabledDate"; "required": false; }; "disabledTime": { "alias": "disabledTime"; "required": false; }; "showToday": { "alias": "showToday"; "required": false; }; "showNow": { "alias": "showNow"; "required": false; }; "showTime": { "alias": "showTime"; "required": false; }; "extraFooter": { "alias": "extraFooter"; "required": false; }; "ranges": { "alias": "ranges"; "required": false; }; "dateRender": { "alias": "dateRender"; "required": false; }; "panelMode": { "alias": "panelMode"; "required": false; }; "defaultPickerValue": { "alias": "defaultPickerValue"; "required": false; }; "dir": { "alias": "dir"; "required": false; }; }, { "panelModeChange": "panelModeChange"; "calendarChange": "calendarChange"; "resultOk": "resultOk"; }, never, never, true, never>;
    static ngAcceptInputType_isRange: unknown;
    static ngAcceptInputType_inline: unknown;
    static ngAcceptInputType_showWeek: unknown;
    static ngAcceptInputType_showToday: unknown;
    static ngAcceptInputType_showNow: unknown;
}
