import { VueNode } from '../_util/type';
import { GenerateConfig } from './generate';
import { Components, DisabledTime, Locale, OnPanelChange, PanelMode, PickerMode } from './interface';
import { DateRender } from './panels/DatePanel/DateBody';
import { MonthCellRender } from './panels/MonthPanel/MonthBody';
import { SharedTimeProps } from './panels/TimePanel';
import { VNode, RendererNode, RendererElement } from 'vue';
export interface PickerPanelSharedProps<DateType> {
    prefixCls?: string;
    /** @deprecated Will be removed in next big version. Please use `mode` instead */
    mode?: PanelMode;
    tabindex?: number;
    locale: Locale;
    generateConfig: GenerateConfig<DateType>;
    value?: DateType | null;
    defaultValue?: DateType;
    /** [Legacy] Set default display picker view date */
    pickerValue?: DateType;
    /** [Legacy] Set default display picker view date */
    defaultPickerValue?: DateType;
    disabledDate?: (date: DateType) => boolean;
    dateRender?: DateRender<DateType>;
    monthCellRender?: MonthCellRender<DateType>;
    renderExtraFooter?: (mode: PanelMode) => VueNode;
    onSelect?: (value: DateType) => void;
    onChange?: (value: DateType) => void;
    onPanelChange?: OnPanelChange<DateType>;
    onMousedown?: (e: MouseEvent) => void;
    onOk?: (date: DateType) => void;
    direction?: 'ltr' | 'rtl';
    hideHeader?: boolean;
    onPickerValueChange?: (date: DateType) => void;
    components?: Components;
}
export type PickerPanelBaseProps<DateType> = {
    picker: Exclude<PickerMode, 'date' | 'time'>;
} & PickerPanelSharedProps<DateType>;
export type PickerPanelDateProps<DateType> = {
    picker?: 'date';
    showToday?: boolean;
    showNow?: boolean;
    showTime?: boolean | SharedTimeProps<DateType>;
    disabledTime?: DisabledTime<DateType>;
} & PickerPanelSharedProps<DateType>;
export type PickerPanelTimeProps<DateType> = {
    picker: 'time';
} & PickerPanelSharedProps<DateType> & SharedTimeProps<DateType>;
export type PickerPanelProps<DateType> = PickerPanelBaseProps<DateType> | PickerPanelDateProps<DateType> | PickerPanelTimeProps<DateType>;
type OmitType<DateType> = Omit<PickerPanelBaseProps<DateType>, 'picker'> & Omit<PickerPanelDateProps<DateType>, 'picker'> & Omit<PickerPanelTimeProps<DateType>, 'picker'>;
type MergedPickerPanelProps<DateType> = {
    picker?: PickerMode;
} & OmitType<DateType>;
declare const _default: <DateType>(props: MergedPickerPanelProps<DateType>) => VNode<RendererNode, RendererElement, {
    [key: string]: any;
}>;
export default _default;
