import React from "react";
import { ButtonVariant } from "../button/Button";
import { VoidFunc } from "../../../fd-toolbox/functions/internal-getter-setter-functions";
import { Time } from "../../../fd-toolbox/dates/time";
import { WithOpen } from "../../../fd-toolbox/types/ref-object";
/**
 * Props of {@link DatePicker}
 */
export interface DatePickerProps {
    /** Identifier of the internal input element.*/
    inputId?: string;
    /** Whether to enable time selection in addition to date selection.*/
    enableTime?: boolean;
    /** Additional CSS class names for outer container.*/
    className?: string;
    /**
     * Triggered whenever the date value changes.
     *
     * @param date - object representing the selected date.
     */
    onDateValueChange?: (date?: Date) => void;
    /** Triggered whenever the time value (hours/minutes) changes.*/
    onTimeValueChange?: VoidFunc<Time>;
    /** Text label displayed above the date picker.*/
    label?: string;
    /** Current date value in ISO UTC string format.*/
    date?: string;
    /** Whether to animate the label upwards when focused or filled.*/
    shouldLabelAnimate?: boolean;
    /** Whether to disable user input — no open interaction possible.*/
    disabled?: boolean;
    /** Whether to make the picker read-only.*/
    readOnly?: boolean;
    /** Whether to skip label animation on the first render.*/
    skipAnimationOnce?: boolean;
    /** Visual style variant of the picker button.*/
    variant?: ButtonVariant;
    /**
     * Called whenever the calendar popover is opened or closed.
     *
     * @param isOpen - Whether the popover is currently open.
     **/
    onOpenChange?: (isOpen: boolean) => void;
    /**
     * Ref to control the picker from parent components.
     * Provides an `open()` method to manually open the date picker.
     */
    ref?: React.RefObject<WithOpen>;
}
/**
 * Date and time picker component with optional time selection
 *
 * Using {@link DatePickerProps}
 *
 * Based on [DatePicker](https:/ui.shadcn.com/docs/components/date-picker)
 *
 * @example
 * ```tsx
    function MyComponent() {
        const [selectedDate, setSelectedDate] = useState<Date | undefined>();

        return (
            <DatePicker
                label="Meeting Date"
                enableTime={true}
                date={selectedDate?.toISOString()}
                onDateValueChange={setSelectedDate}
                variant="float"
            />
        );
    }
 * ```
 */
export declare function DatePicker({ className, enableTime, inputId, label: labelProp, onDateValueChange: onDateValueChangeProp, onTimeValueChange: onTimeValueChangeProp, date, shouldLabelAnimate, disabled, readOnly, skipAnimationOnce, variant, onOpenChange, ref, }: DatePickerProps): React.JSX.Element;
