import { Component, ReactNode } from 'react';
import { OpUnitType } from 'dayjs';
import { LocaledComponentProps } from '../../locale';
import { LocaleType as SelectDrawerLocaleType, SelectDrawerProps } from '../../select-drawer';
import { BasicSizeType } from '../../utils/types';
import { DateRange, LocaleType as DatePickerLocaleType } from '../types';
import { TimePickerProps } from '../../time-picker';
declare type NoLocaleSelectDrawer = Omit<Omit<SelectDrawerProps, 'onOk'>, 'locale'>;
declare type RangePickerLocale = DatePickerLocaleType & SelectDrawerLocaleType;
export interface BaseDateRangePickerProps extends NoLocaleSelectDrawer, LocaledComponentProps<RangePickerLocale> {
    prefix?: string;
    value?: DateRange;
    defaultValue?: DateRange;
    validRange?: DateRange;
    format?: string;
    size?: BasicSizeType;
    align?: 'left' | 'right';
    iconType?: string;
    placeholder?: string;
    disabled?: boolean;
    readOnly?: boolean;
    hasClear?: boolean;
    showTime?: boolean | TimePickerProps;
    onClear?: () => void;
    onChange?: (value?: DateRange | null) => void;
    onOk?: (value?: DateRange) => void;
    onVisibleChange?: (visible: boolean) => void;
    onCancel?: (reason?: string) => void;
}
interface RangePickerState {
    step: number;
    value?: [Date, Date] | null;
    pickerValue?: [Date, Date];
}
declare abstract class BaseRangePicker extends Component<BaseDateRangePickerProps, RangePickerState> {
    constructor(props: BaseDateRangePickerProps);
    get rangeType(): OpUnitType;
    get timeFormat(): string;
    get format(): string;
    getPickerValidRange: (step?: number) => [Date, Date];
    getPickerValue(props: BaseDateRangePickerProps): [Date, Date];
    handleChange: (value: Date) => void;
    handleFirstStepChange: (value: Date) => void;
    handleSecondStepChange: (value: Date) => void;
    scrollTo(step: number, wait?: number): void;
    handleOk: () => boolean;
    handleCancel: (reason: any) => boolean;
    handleClear: () => void;
    componentDidUpdate(): void;
    abstract renderFirstChild(value: Date, validRange: DateRange, onChange: any): ReactNode;
    abstract renderSecondChild(value: Date, validRange: DateRange, onChange: any): ReactNode;
    render(): JSX.Element;
}
export default BaseRangePicker;
