import React, { Component } from 'react';
import moment, { Moment } from 'moment';
import { IBasePicker, IDatePickerProps } from '../common/interfces';
interface IButtonComponentProps {
    firstSelectedDate: Moment | null;
    secondSelectedDate: Moment | null;
    switchIsOpened(): void;
}
export interface IProps extends IDatePickerProps<IButtonComponentProps> {
    /**
     * default range value
     * @default [null, null]
     */
    defaultValue?: [Moment | null, Moment | null];
    /**
     * callback
     */
    onApply?(dateFrom: Moment | null, dateTo: Moment | null): void;
    /**
     * callback
     */
    onChange?(dateFrom: Moment | null, dateTo: Moment | null): void;
}
interface IState {
    currentDisplayDate: Moment;
    firstSelectedDate: Moment | null;
    secondSelectedDate: Moment | null;
    backlightFrom: Moment | null;
    backlightTo: Moment | null;
    isOpened: boolean;
}
export default class RangePicker extends Component<Readonly<IProps>, Readonly<IState>> implements IBasePicker {
    static defaultProps: IProps;
    previousValue: [Moment | null, Moment | null];
    constructor(props: IProps);
    componentDidUpdate(prevProps: Readonly<IProps>, prevState: Readonly<IState>): void;
    setPreviousValue: (firstSelectedDate: moment.Moment | null, secondSelectedDate: moment.Moment | null) => void;
    close: () => void;
    switchIsOpened: () => void;
    goToNextDisplayByMonth: () => void;
    goToPrevDisplayByMonth: () => void;
    goToNextDisplayByYear: () => void;
    goToPrevDisplayByYear: () => void;
    getPreciseTimeRange: (dateFrom: moment.Moment | null, dateTo: moment.Moment | null) => (moment.Moment | null)[];
    dispatchOnChangeEvent: (dateFrom: moment.Moment | null, dateTo: moment.Moment | null) => void;
    _selectDate: (date: moment.Moment) => void;
    selectDate: (date: moment.Moment) => () => void;
    resetSelection: () => void;
    reset: () => void;
    cancel: () => void;
    apply: () => void;
    backlightDatesBetween: (dateFrom: moment.Moment, dateTo: moment.Moment) => void;
    get nextDisplayDate(): moment.Moment;
    get isOpened(): boolean;
    renderButton: () => React.ReactNode;
    render(): JSX.Element;
}
export {};
//# sourceMappingURL=index.d.ts.map