import { PureComponent, KeyboardEvent } from 'react';
import { Size, MonthFormat, SizeSmall, SizeMedium, SizeLarge } from '../common';
import { WithInputAttributesProps } from '../inputs/contexts';
export interface DateLookupProps {
    id?: string;
    value: Date | null;
    min?: Date | null;
    max?: Date | null;
    size?: SizeSmall | SizeMedium | SizeLarge;
    placeholder?: string;
    label?: string;
    'aria-labelledby'?: string;
    monthFormat?: `${MonthFormat}`;
    disabled?: boolean;
    clearable?: boolean;
    onChange: (date: Date | null) => void;
    onFocus?: () => void;
    onBlur?: () => void;
}
type DateLookupPropsWithInputAttributes = DateLookupProps & Partial<WithInputAttributesProps>;
interface DateLookupState {
    selectedDate: Date | null;
    originalDate: Date | null;
    min: Date | null;
    max: Date | null;
    viewMonth: number;
    viewYear: number;
    open: boolean;
    mode: 'day' | 'month' | 'year';
    isMobile: boolean;
}
declare class DateLookup extends PureComponent<DateLookupPropsWithInputAttributes, DateLookupState> {
    props: DateLookupPropsWithInputAttributes & Required<Pick<DateLookupPropsWithInputAttributes, keyof typeof DateLookup.defaultProps>>;
    static defaultProps: {
        value: null;
        min: null;
        max: null;
        size: Size.MEDIUM;
        placeholder: string;
        label: string;
        monthFormat: MonthFormat.LONG;
        disabled: false;
        clearable: false;
    };
    element: import("react").RefObject<HTMLDivElement>;
    dropdown: import("react").RefObject<HTMLDivElement>;
    constructor(props: DateLookup['props']);
    static getDerivedStateFromProps(props: DateLookup['props'], state: DateLookupState): {
        selectedDate: Date | null;
        min: Date | null;
        max: Date | null;
        viewMonth: number;
        viewYear: number;
    } | null;
    componentDidUpdate(previousProps: DateLookupPropsWithInputAttributes): void;
    componentWillUnmount(): void;
    open: () => void;
    discard: () => void;
    close: () => void;
    handleKeyDown: (event: KeyboardEvent<HTMLDivElement>) => void;
    adjustDate: (daysToAdd: number, monthsToAdd: number, yearsToAdd: number) => void;
    focusOn: (preferredElement: string, fallbackElement?: string) => void;
    switchMode: (mode: "day" | "month" | "year") => void;
    switchToDays: () => void;
    switchToMonths: () => void;
    switchToYears: () => void;
    handleSelectedDateUpdate: (selectedDate: Date) => void;
    handleViewDateUpdate: ({ month, year }: {
        month?: number | undefined;
        year?: number | undefined;
    }) => void;
    getCalendar: () => import("react").JSX.Element;
    handleClear: () => void;
    render(): import("react").JSX.Element;
}
export declare const DateLookupWithoutInputAttributes: typeof DateLookup;
declare const _default: {
    (props: Omit<DateLookupPropsWithInputAttributes, "inputAttributes">): import("react").JSX.Element;
    displayName: string;
};
export default _default;
//# sourceMappingURL=DateLookup.d.ts.map