import React, { MouseEvent, KeyboardEvent } from 'react';
import PropTypes from 'prop-types';
import DayPicker, { DayModifiers, DayPickerProps, Modifier } from 'react-day-picker';
import localeUtilsFactory, { WeekdayNumber } from '../../common/LocaleUtils/LocaleUtils';
import { WixStyleReactEnvironmentContext } from '../../WixStyleReactEnvironmentProvider/context';
import { BaseCalendarProps } from './BaseCalendar.types';
type DefaultedProps<Base, DefaultPropsKeys extends keyof Base> = Omit<Base, DefaultPropsKeys> & Required<Pick<Base, DefaultPropsKeys>>;
type DefaultPropKeys = 'className' | 'filterDate' | 'dateIndication' | 'shouldCloseOnSelect' | 'onClose' | 'autoFocus' | 'excludePastDates' | 'selectionMode' | 'numOfMonths' | 'size' | 'allowSelectingOutsideDays';
type DefaultedBaseCalendarProps = DefaultedProps<BaseCalendarProps, DefaultPropKeys>;
export default class BaseCalendar extends React.PureComponent<DefaultedBaseCalendarProps> {
    static displayName: string;
    static defaultProps: {
        className: string;
        filterDate: () => boolean;
        dateIndication: () => null;
        shouldCloseOnSelect: boolean;
        onClose: () => void;
        autoFocus: boolean;
        excludePastDates: boolean;
        selectionMode: string;
        numOfMonths: number;
        size: string;
        allowSelectingOutsideDays: boolean;
    };
    static propTypes: {
        dataHook: PropTypes.Requireable<string>;
        autoFocus: PropTypes.Requireable<boolean>;
        numOfMonths: PropTypes.Requireable<number>;
        firstDayOfWeek: PropTypes.Requireable<number>;
        className: PropTypes.Requireable<string>;
        onChange: PropTypes.Validator<(...args: any[]) => any>;
        onClose: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
        excludePastDates: PropTypes.Requireable<boolean>;
        filterDate: PropTypes.Requireable<(...args: any[]) => any>;
        value: PropTypes.Requireable<NonNullable<Date | PropTypes.InferProps<{
            from: PropTypes.Requireable<Date>;
            to: PropTypes.Requireable<Date>;
        }> | null | undefined>>;
        selectionMode: PropTypes.Requireable<string>;
        shouldCloseOnSelect: PropTypes.Requireable<boolean>;
        locale: PropTypes.Requireable<NonNullable<"th" | "tr" | "ms" | "id" | "no" | "en" | "en-US" | "en-GB" | "en-AU" | "en-CA" | "ar" | "bg" | "ca" | "zh" | "zh-TW" | "zh-HK" | "zh-MO" | "cs" | "da" | "nl" | "fi" | "fr" | "fr-CA" | "fr-CH" | "fr-BE" | "de" | "de-CH" | "de-AT" | "el" | "he" | "hi" | "hu" | "it" | "ja" | "ko" | "lt" | "nb" | "nn" | "pl" | "pt-BR" | "pt" | "ro" | "ru" | "sk" | "sl" | "es" | "es-419" | "es-AR" | "es-MX" | "es-US" | "sv" | "tl" | "uk" | "vi" | null | undefined>>;
        rtl: PropTypes.Requireable<boolean>;
        dateIndication: PropTypes.Requireable<(...args: any[]) => any>;
        today: PropTypes.Requireable<Date>;
        displayedMonth: PropTypes.Validator<Date>;
        onDisplayedViewChange: PropTypes.Validator<(...args: any[]) => any>;
        captionElement: PropTypes.Validator<NonNullable<PropTypes.ReactNodeLike>>;
        modifiers: PropTypes.Requireable<object>;
        allowSelectingOutsideDays: PropTypes.Requireable<boolean>;
    };
    /** Return a value in which all string-dates are parsed into Date objects */
    static parseValue: (value: BaseCalendarProps["value"]) => Date | {
        from?: Date;
        to?: Date;
    };
    static nextDay: (date: Date | number | string) => Date;
    static prevDay: (date: Date | number | string) => Date;
    context: React.ContextType<typeof WixStyleReactEnvironmentContext>;
    dayPickerRef?: DayPicker | null;
    _renderDay: (day: Date, modifiers: any) => React.JSX.Element;
    _handleDayClick: (value: Date, modifiers?: DayModifiers | {}, event?: MouseEvent | null) => void;
    _getSelectedDays(value?: Date | {
        from?: Date;
        to?: Date;
    }): Modifier;
    _preventActionEventDefault: (event?: KeyboardEvent | MouseEvent | null) => void;
    _createWeekdayElement: (localeUtils: ReturnType<typeof localeUtilsFactory>) => ({ className, weekday, }: {
        className: string;
        weekday: WeekdayNumber;
    }) => React.JSX.Element;
    _createDayPickerProps: () => DayPickerProps;
    _getDayPicker(): DayPicker;
    _handleKeyDown: (event: KeyboardEvent) => void;
    _toggleFirstDayTabIndex: (tabIndex: number) => void;
    _focusSelectedDay: () => void;
    _handleDayKeyDown: (_value: Date, _modifiers: DayModifiers, event?: KeyboardEvent<HTMLDivElement> | null) => void;
    _getLocale(): string;
    componentDidMount(): void;
    componentDidUpdate(prevProps: DefaultedBaseCalendarProps): void;
    render(): React.JSX.Element;
}
export {};
//# sourceMappingURL=BaseCalendar.d.ts.map