import * as React from 'react';
import DateHelpers from './utils/date-helpers';
import type { DayProps, DayState } from './types';
import type { Locale } from '../locale';
export default class Day<T = Date> extends React.Component<DayProps<T>, DayState> {
    static defaultProps: {
        disabled: boolean;
        highlighted: boolean;
        range: boolean;
        adapter: import("./utils/types").DateIOAdapter<Date>;
        onClick: () => void;
        onSelect: () => void;
        onFocus: () => void;
        onBlur: () => void;
        onMouseOver: () => void;
        onMouseLeave: () => void;
        overrides: {};
        peekNextMonth: boolean;
        value: any;
    };
    dayElm: HTMLElement;
    state: {
        isHovered: boolean;
        isFocusVisible: boolean;
    };
    dateHelpers: DateHelpers<T>;
    constructor(props: DayProps<T>);
    componentDidMount(): void;
    componentDidUpdate(prevProps: DayProps<T>): void;
    getDateProp: () => T;
    getMonthProp: () => number;
    /**
     * Determines how the day value(s) should be updated when a new day is selected.
     * Note: time values are incorporated into new day/date values downstream in `Calendar`.
     * Note: Situations where Start Dates are after End Dates are handled downstream in `Datepicker`.
     * */
    onSelect: (a: T) => void;
    onKeyDown: (event: KeyboardEvent) => void;
    onClick: (event: Event) => void;
    onFocus: (event: Event) => void;
    onBlur: (event: Event) => void;
    onMouseOver: (event: Event) => void;
    onMouseLeave: (event: Event) => void;
    isOutsideMonth: () => boolean;
    getOrderedDates: () => T[];
    isOutsideOfMonthButWithinRange: () => boolean;
    isSelected(): boolean;
    clampToDayStart: (a: T) => T;
    isPseudoSelected(): boolean;
    isPseudoHighlighted(): boolean;
    getSharedProps(): {
        $date: T;
        $density: "default" | "high";
        $disabled: boolean;
        $endDate: boolean;
        $hasDateLabel: boolean;
        $hasRangeHighlighted: boolean;
        $hasRangeOnRight: boolean;
        $hasRangeSelected: boolean;
        $highlightedDate: T;
        $isHighlighted: boolean;
        $isHovered: boolean;
        $isFocusVisible: boolean;
        $startOfMonth: boolean;
        $endOfMonth: boolean;
        $month: number;
        $outsideMonth: boolean;
        $outsideMonthWithinRange: boolean;
        $peekNextMonth: boolean;
        $pseudoHighlighted: boolean;
        $pseudoSelected: boolean;
        $range: boolean;
        $selected: boolean;
        $startDate: boolean;
        $hasLockedBehavior: boolean;
        $selectedInput: import("./types").InputRole;
        $value: T | T[];
    };
    getAriaLabel(sharedProps: {
        $disabled: boolean;
        $range: boolean;
        $selected: boolean;
        $startDate: boolean;
        $endDate: boolean;
    }, localeContext: Locale): string;
    render(): React.JSX.Element;
}
