import React, { ReactNode } from 'react';
import { GenerateConfig } from 'rc-picker/lib/generate/index';
import { PickerBaseProps as RCPickerBaseProps, PickerDateProps as RCPickerDateProps, PickerTimeProps as RCPickerTimeProps } from 'rc-picker/lib/Picker';
import { RangePickerBaseProps as RCRangePickerBaseProps, RangePickerDateProps as RCRangePickerDateProps, RangePickerTimeProps as RCRangePickerTimeProps } from 'rc-picker/lib/RangePicker';
import { Locale as RcPickerLocale } from 'rc-picker/lib/interface';
import PickerButton from '../PickerButton';
import PickerTag from '../PickerTag';
import { Dayjs } from 'dayjs';
import { LabelTooltipProps } from "../../Label";
export type ShortcutType = {
    text: string;
    value: Dayjs[] | (() => Dayjs[]);
};
type SizeType = 'small' | 'medium' | 'large' | undefined;
export interface TimePickerLocale {
    placeholder?: string;
    rangePlaceholder?: [string, string];
}
export type NullableDateType<DateType> = DateType | null | undefined | string;
export type Value<DateType> = NullableDateType<DateType>;
export type RangeValue<DateType> = [NullableDateType<DateType>, NullableDateType<DateType>] | null;
export declare const Components: {
    button: typeof PickerButton;
    rangeItem: typeof PickerTag;
};
type InjectDefaultProps<Props, Type> = Omit<Props, 'locale' | 'generateConfig' | 'prevIcon' | 'nextIcon' | 'superPrevIcon' | 'superNextIcon' | 'hideHeader' | 'components' | 'value' | 'defaultValue'> & {
    /** 国际化 */
    locale?: 'zh' | 'en';
    /** 大小 */
    size?: SizeType;
    /** 显示边框 */
    bordered?: boolean;
    /** 显示错误 */
    error?: boolean;
    /** 帮助文本 */
    helperText?: ReactNode;
    /** value */
    value?: Type extends 'range' ? RangeValue<Dayjs> : NullableDateType<Dayjs>;
    /** 默认值 */
    defaultValue?: Type extends 'range' ? RangeValue<Dayjs> : NullableDateType<Dayjs>;
    /** 标题 */
    label?: ReactNode;
    /** 帮助提示信息 */
    labelTooltip?: LabelTooltipProps;
    /** 是否必填 */
    required?: boolean;
    /** 关闭时是否把弹框定位至屏幕之外，隔离dom污染，默认false */
    isolationPopupOnHide?: boolean;
};
export declare const pickerFormatMap: {
    [index: string]: string;
};
export type PickerLocale = {
    lang: RcPickerLocale & AdditionalPickerLocaleLangProps;
    timePickerLocale: TimePickerLocale;
} & AdditionalPickerLocaleProps;
export type AdditionalPickerLocaleProps = {
    dateFormat?: string;
    dateTimeFormat?: string;
    weekFormat?: string;
    monthFormat?: string;
};
export type AdditionalPickerLocaleLangProps = {
    placeholder?: string;
    yearPlaceholder?: string;
    quarterPlaceholder?: string;
    monthPlaceholder?: string;
    weekPlaceholder?: string;
    rangeYearPlaceholder?: [string, string];
    rangeMonthPlaceholder?: [string, string];
    rangeWeekPlaceholder?: [string, string];
    rangePlaceholder?: [string, string];
};
export type PickerBaseProps<DateType> = InjectDefaultProps<RCPickerBaseProps<DateType>, ''>;
export type PickerDateProps<DateType> = InjectDefaultProps<RCPickerDateProps<DateType>, ''>;
export type PickerTimeProps<DateType> = InjectDefaultProps<RCPickerTimeProps<DateType>, ''>;
export type PickerProps<DateType> = PickerBaseProps<DateType> | PickerDateProps<DateType> | PickerTimeProps<DateType>;
export type RangePickerBaseProps<DateType> = InjectDefaultProps<RCRangePickerBaseProps<DateType>, 'range'>;
export type RangePickerDateProps<DateType> = InjectDefaultProps<RCRangePickerDateProps<DateType>, 'range'>;
export type RangePickerTimeProps<DateType> = InjectDefaultProps<RCRangePickerTimeProps<DateType>, 'range'>;
export type RangePickerProps<DateType> = (RangePickerBaseProps<DateType> | RangePickerDateProps<DateType> | RangePickerTimeProps<DateType>) & {
    /** 预设时间范围快捷选择 */
    shortcuts?: ShortcutType[];
    /** 预设范围选择面板位置 */
    shortcutsPlacement?: 'left' | 'right' | 'bottom';
};
declare function generatePicker<DateType>(generateConfig: GenerateConfig<DateType>): React.ComponentClass<PickerProps<DateType>, any> & {
    WeekPicker: React.ComponentClass<Omit<PickerDateProps<DateType>, "picker">, any>;
    MonthPicker: React.ComponentClass<Omit<PickerDateProps<DateType>, "picker">, any>;
    YearPicker: React.ComponentClass<Omit<PickerDateProps<DateType>, "picker">, any>;
    RangePicker: React.ComponentClass<RangePickerProps<DateType>>;
    TimePicker: React.ComponentClass<Omit<PickerTimeProps<DateType>, "picker">, any>;
    QuarterPicker: React.ComponentClass<Omit<PickerTimeProps<DateType>, "picker">, any>;
};
export default generatePicker;
