/**
 * xdesign
 *
 * @file date range picker
 * @author csu.zengxiaohui@gmail.com
 */
import { EventEmitter, Renderer2, OnDestroy, ElementRef, OnInit, ChangeDetectorRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { OverlayComponent } from '../overlay';
import { OverlayOriginDirective } from '../overlay/overlay-origin.directive';
/**
 * range datepicker value interface
 */
export interface RangeDatePickerValue {
    startDate: Date;
    endDate: Date;
}
/**
 * quick linker value interface
 */
export interface QuickLinkValue {
    text: string;
    startDate: Date;
    endDate: Date;
    selected?: boolean;
}
/**
 * Range DatePicker Component
 */
export declare class RangeDatePickerComponent implements OnInit, OnDestroy, ControlValueAccessor {
    private render;
    private cd;
    private el;
    /** range datepicker change event, emit a `RangeDatePickerValue` value */
    change: EventEmitter<RangeDatePickerValue>;
    /** range datepicker value */
    value: any;
    private _value;
    /** the splitter symbol between two dates show in input text */
    splitter: string;
    /** the format date show */
    formatter: string;
    /** the quick links array */
    quickLinks: QuickLinkValue[];
    /** whether the range datepicker is disabled */
    disabled: boolean;
    /**
     * the strategy function which used to check weather the date is disabled
     */
    disabledStrategy: (date: Date) => boolean;
    /**
     * get the text show in input box
     * @readonly
     * @docs-private
     */
    readonly valueText: string;
    /** whether the panel is show */
    _showPanel: boolean;
    /** the start date(the min date of the two dates) */
    _startDate: Date | null;
    /** the end date(the max date of the two dates) */
    _endDate: Date | null;
    origin: OverlayOriginDirective;
    overlay: OverlayComponent;
    constructor(render: Renderer2, cd: ChangeDetectorRef, el: ElementRef);
    ngOnInit(): void;
    ngOnDestroy(): void;
    onShowCalendar(): void;
    _hideOverlay(): void;
    _showOverlay(): void;
    onFilterPanelHide(_panel: any): void;
    onSelectStartDate(date: Date): void;
    onSelectEndDate(date: Date): void;
    /**
     * set range datepicker start and end date range
     * @param {Date} date - currently selected date
     * @docs-private
     */
    setStartAndEndDate(date: Date): void;
    /**
     * quickly set date range
     * @param {QuickLinkValue} quickLink - quick link item
     * @docs-private
     */
    onClickQuickLink(quickLink: QuickLinkValue): void;
    /**
     * confirm range value
     * @docs-private
     */
    onConfirm(): void;
    /**
     * make sure startDate is less than endDate
     * @param value
     */
    _exchangeValueIfNesscery(value: RangeDatePickerValue): void;
    /**
     * hide panel
     * @docs-private
     */
    onCancel(): void;
    /**
     * The method to be called in order to update ngModel.
     * Now `ngModel` binding is not supported in multiple selection mode.
     */
    private _onModelChange;
    /**
     * Registers a callback that will be triggered when the value has changed.
     * Implemented as part of ControlValueAccessor.
     * @param fn On change callback function.
     */
    registerOnChange(fn: Function): void;
    /** onTouch function registered via registerOnTouch (ControlValueAccessor). */
    private _onTouch;
    /**
     * Registers a callback that will be triggered when the control has been touched.
     * Implemented as part of ControlValueAccessor.
     * @param fn On touch callback function.
     */
    registerOnTouched(fn: Function): void;
    /**
     * Sets the model value. Implemented as part of ControlValueAccessor.
     * @param {any} value - value to be set to the model.
     */
    writeValue(value: any): void;
    /**
     * Toggles the disabled state of the component. Implemented as part of ControlValueAccessor.
     * @param {boolean} isDisabled - Whether the component should be disabled.
     */
    setDisabledState(isDisabled: boolean): void;
    /**
     * update form model value and mark for check
     * @docs-private
     */
    _markForCheck(): void;
}
