import { ComponentPropsWithoutRef, ReactNode } from 'react';
import { ComponentSize } from '../../../tokens';
export type DateRangePresetId = string;
export type DateRangeValue = {
    preset?: DateRangePresetId;
    from?: Date;
    to?: Date;
};
export type DateRangePreset = {
    id: DateRangePresetId;
    label: ReactNode;
    getRange: () => {
        from: Date;
        to: Date;
    };
    disabled?: boolean;
};
export type DateRangePickerProps = Omit<ComponentPropsWithoutRef<"div">, "defaultValue" | "onChange"> & {
    value?: DateRangeValue;
    defaultValue?: DateRangeValue;
    onChange?: (value: DateRangeValue) => void;
    presets?: DateRangePreset[];
    placeholder?: ReactNode;
    label?: ReactNode;
    helperText?: ReactNode;
    size?: ComponentSize;
    disabled?: boolean;
    clearable?: boolean;
    minDate?: Date;
    maxDate?: Date;
    maxRangeDays?: number;
    months?: 1 | 2;
    align?: "start" | "center" | "end";
    side?: "top" | "right" | "bottom" | "left";
    open?: boolean;
    defaultOpen?: boolean;
    onOpenChange?: (open: boolean) => void;
    infoText?: ReactNode;
    customPresetLabel?: ReactNode;
    applyLabel?: ReactNode;
    cancelLabel?: ReactNode;
    clearLabel?: ReactNode;
    formatDate?: (date: Date) => string;
    formatRange?: (value: DateRangeValue) => ReactNode;
    triggerClassName?: string;
    contentClassName?: string;
    calendarClassName?: string;
};
