import * as React from 'react';
import type { DateIOAdapter } from './utils/types';
import DateHelpers from './utils/date-helpers';
import type { CalendarProps, CalendarInternalState } from './types';
export default class Calendar<T = Date> extends React.Component<CalendarProps<T>, CalendarInternalState<T>> {
    static defaultProps: CalendarProps<unknown> & {
        adapter: DateIOAdapter<Date>;
    };
    dateHelpers: DateHelpers<T>;
    calendar: HTMLElement;
    constructor(props: CalendarProps<T>);
    componentDidMount(): void;
    componentDidUpdate(prevProps: CalendarProps<T>): void;
    isInView(date: T): boolean;
    getSingleDate(value: T | undefined | null | Array<T | undefined | null>): T | undefined | null;
    getDateInView: () => T;
    handleMonthChange: (a: T) => void;
    handleYearChange: (a: T) => void;
    changeMonth: (a: {
        date: T;
    }) => unknown;
    changeYear: (a: {
        date: T;
    }) => unknown;
    renderCalendarHeader: (b: T, a: number) => React.ReactNode;
    onKeyDown: (event: KeyboardEvent) => void;
    handleArrowKey: (key: string) => void;
    focusCalendar: () => void;
    blurCalendar: () => void;
    handleTabbing: (event: KeyboardEvent) => void;
    onDayFocus: (a: {
        event: Event;
        date: T;
    }) => unknown;
    onDayMouseOver: (a: {
        event: Event;
        date: T;
    }) => unknown;
    onDayMouseLeave: (a: {
        event: Event;
        date: T;
    }) => unknown;
    /** Responsible for merging time values into date values. Note: the 'Day' component
     * determines how the days themselves change when a new day is selected. */
    handleDateChange: (a: {
        readonly date: T | undefined | null | Array<T | undefined | null>;
    }) => void;
    handleTimeChange: (time: T, index: number) => void;
    setHighlightedDate(date: T): void;
    renderMonths: (translations: {
        ariaRoleDescCalMonth: string;
    }) => React.JSX.Element;
    renderTimeSelect: (c: T | undefined | null, b: Function, a: string) => React.ReactNode;
    renderQuickSelect: () => React.JSX.Element;
    renderActionBar: () => React.JSX.Element;
    render(): React.JSX.Element;
}
