import { ReactElement, ReactNode } from 'react';
import { TextInputNextProps } from '../TextInputNext';
import { CalendarControls } from './CalendarControls';
import { DatePickerChangeHandler, DatePickerType, DatePickerValue } from './utils';
import { CalendarGrid } from './CalendarGrid/CalendarGrid';
type DatePickerBaseProps<IsRange extends boolean | undefined = false> = {
    label?: ReactNode;
    placeholder?: string;
    value?: DatePickerValue<IsRange>;
    onChange?: DatePickerChangeHandler<IsRange>;
    /**
     * Minimum selectable date
     */
    minDate?: Date;
    /**
     * maximum selectable date
     */
    maxDate?: Date;
    /**
     * Type: dates only / date + time / month
     */
    type?: DatePickerType;
    range?: IsRange;
    /**
     * Function that returns a classname / list of classnames for custom styling of date tiles
     */
    getTileClassName?: (args: {
        activeStartDate: Date;
        date: Date;
    }) => string;
    /**
     * Returns whether a tile should be disabled. Is ***not*** meant as an alternative method of providing `minDate` or `maxDate`
     */
    getTileDisabled?: (args: {
        activeStartDate: Date;
        date: Date;
    }) => boolean;
    /**
     * Determines how the date will be displayed and how user's input will be parsed
     */
    format?: string;
    /**
     * If `true` - disables user input
     */
    readOnly?: boolean;
    /**
     * Controls if the field should keep/gain focus after "Clear" button is clicked
     */
    focusOnClear?: boolean;
    labelPlacement?: TextInputNextProps['labelPlacement'];
    size?: TextInputNextProps['size'];
    elementsClassNames?: TextInputNextProps['elementsClassNames'];
    className?: string;
    testId?: string;
    isNext: boolean;
};
export declare const getActiveStartDate: <IsRange extends boolean | undefined = false>({ value, minDate, maxDate, }: Pick<DatePickerBaseProps<IsRange>, "value" | "minDate" | "maxDate">) => Date;
export type DatePickerProps<IsRange extends boolean | undefined = false> = Omit<DatePickerBaseProps<IsRange>, 'labelPlacement' | 'size' | 'elementsClassNames' | 'isNext'>;
type DatePickerBaseType = {
    <IsRange extends boolean | undefined = false>(props: DatePickerProps<IsRange>): ReactElement;
    Controls: typeof CalendarControls;
    Grid: typeof CalendarGrid;
};
/**
 * @deprecated use `DatePickerNext`, and see migration guide for `TextInputNext` for details
 */
export declare const DatePicker: DatePickerBaseType;
export type DatePickerNextProps<IsRange extends boolean | undefined = false> = Omit<DatePickerBaseProps<IsRange>, 'isNext'>;
type DatePickerNextBaseType = {
    <IsRange extends boolean | undefined = false>(props: DatePickerNextProps<IsRange>): ReactElement;
    Controls: typeof CalendarControls;
    Grid: typeof CalendarGrid;
};
export declare const DatePickerNext: DatePickerNextBaseType;
export {};
//# sourceMappingURL=DatePicker.d.ts.map