import { ReactNode } from 'react';
import PropTypes from 'prop-types';
import { Moment } from 'moment';
import ViewComponent, { ViewComponentProps } from '../core/ViewComponent';
import { DatePickerKeyboardEvent, RenderFunction, TimeStep } from './DatePicker';
import { ViewMode } from './enum';
import { FieldType } from '../data-set/enum';
export declare function alwaysValidDate(): boolean;
export interface DateViewProps extends ViewComponentProps {
    date: Moment;
    min?: Moment;
    max?: Moment;
    mode: ViewMode;
    format: string;
    step: TimeStep;
    renderer?: RenderFunction;
    isValidDate?: (currentDate: Moment, selected: Moment) => boolean;
    onSelect?: (selectedDate: Moment, expand?: boolean) => void;
    onSelectedDateChange?: (selectedDate: Moment, mode?: ViewMode) => void;
    onViewModeChange?: (mode: ViewMode) => void;
    renderExtraFooter?: () => ReactNode;
    extraFooterPlacement?: 'top' | 'bottom';
    disabledNow?: boolean;
}
export default class DaysView<T extends DateViewProps> extends ViewComponent<T> implements DatePickerKeyboardEvent {
    static displayName: string;
    static propTypes: {
        id: PropTypes.Requireable<string>;
        size: PropTypes.Requireable<import("../core/enum").Size>;
        suffixCls: PropTypes.Requireable<string>;
        prefixCls: PropTypes.Requireable<string>;
        title: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        disabled: PropTypes.Requireable<boolean>;
        hidden: PropTypes.Requireable<boolean>;
        autoFocus: PropTypes.Requireable<boolean>;
        accessKey: PropTypes.Requireable<string | boolean>;
        dir: PropTypes.Requireable<string>;
        contentEditable: PropTypes.Requireable<string | boolean>;
        draggable: PropTypes.Requireable<string | boolean>;
        style: PropTypes.Requireable<object>;
        className: PropTypes.Requireable<string>;
        tabIndex: PropTypes.Requireable<number>;
        lang: PropTypes.Requireable<string>;
        spellCheck: PropTypes.Requireable<boolean>;
        onFocus: PropTypes.Requireable<(...args: any[]) => any>;
        onBlur: PropTypes.Requireable<(...args: any[]) => any>;
        onClick: PropTypes.Requireable<(...args: any[]) => any>;
        onDoubleClick: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseUp: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseDown: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseMove: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseOver: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseOut: PropTypes.Requireable<(...args: any[]) => any>;
        onContextMenu: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyUp: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyPress: PropTypes.Requireable<(...args: any[]) => any>;
        date: PropTypes.Requireable<object>;
        renderer: PropTypes.Requireable<(...args: any[]) => any>;
        isValidDate: PropTypes.Requireable<(...args: any[]) => any>;
        onSelect: PropTypes.Requireable<(...args: any[]) => any>;
        onSelectedDateChange: PropTypes.Requireable<(...args: any[]) => any>;
        onViewModeChange: PropTypes.Requireable<(...args: any[]) => any>;
    };
    static defaultProps: {
        suffixCls: string;
        extraFooterPlacement: string;
    };
    static type: FieldType;
    getViewClassName(): string;
    render(): JSX.Element;
    handlePrevYearClick(): void;
    handlePrevMonthClick(): void;
    handleMonthSelect(): void;
    handleYearSelect(): void;
    handleNextYearClick(): void;
    handleNextMonthClick(): void;
    handleKeyDownHome(e: any): void;
    handleKeyDownEnd(e: any): void;
    handleKeyDownLeft(e: any): void;
    handleKeyDownRight(e: any): void;
    handleKeyDownUp(e: any): void;
    handleKeyDownDown(e: any): void;
    handleKeyDownPageUp(e: any): void;
    handleKeyDownPageDown(e: any): void;
    handleKeyDownEnter(e: any): void;
    handleCellClick(date: Moment): void;
    choose(date: Moment): void;
    changeSelectedDate(selectedDate: Moment, mode?: ViewMode): void;
    changeViewMode(mode: ViewMode): void;
    renderHeader(): ReactNode;
    renderBody(): JSX.Element;
    renderPanel(): JSX.Element;
    renderPanelHead(): ReactNode;
    get customFooter(): JSX.Element | null;
    renderFooter(): ReactNode;
    renderCell(props: object): ReactNode;
    renderInner(text: any): JSX.Element;
    getFirstDay(date: any): any;
    renderPanelBody(): ReactNode;
    getPanelClass(): string;
    getDaysOfWeek(): ReactNode[];
    getCloneDate(): Moment;
}
