import { InputSize } from './types';
export type ViewMode = 'days' | 'months' | 'years';
export interface ViewModeProps {
    currentViewMode: ViewMode;
    onViewModeChange: (mode: ViewMode) => void;
}
export interface DateRange {
    start: Date | null;
    end: Date | null;
}
export interface DateRangeProps {
    selectedRange: DateRange;
    onRangeChange: (range: DateRange) => void;
    minDate?: Date;
    maxDate?: Date;
}
export interface RangeSelectionState {
    isSelectingStart: boolean;
    isSelectingEnd: boolean;
    hoverDate: Date | null;
}
export interface DatePickerProps {
    size?: InputSize;
    mode?: 'single' | 'range';
    selectedDate?: Date | null;
    selectedRange?: DateRange;
    onDateChange?: (date: Date | null) => void;
    onRangeChange?: (range: DateRange) => void;
    minDate?: Date;
    maxDate?: Date;
    locale?: string;
    weekDays?: string[];
    monthNames?: string[];
    startOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
    className?: string;
    inputClassName?: string;
    headerClassName?: string;
    dayClassName?: string | ((day: Date, state: {
        isSelected: boolean;
        isInRange: boolean;
        isStart: boolean;
        isEnd: boolean;
        isDisabled: boolean;
        isToday: boolean;
    }) => string);
    monthClassName?: string | ((month: number) => string);
    yearClassName?: string | ((year: number) => string);
    disabledDayClassName?: string;
    rangeClassName?: string;
    rangeStartClassName?: string;
    rangeEndClassName?: string;
    todayClassName?: string;
    showWeekNumbers?: boolean;
    yearRange?: number;
    initialViewMode?: ViewMode;
    closeOnSelect?: boolean;
    autoCloseRange?: boolean;
    placeholder?: string;
    format?: string;
    calendarsCount?: number;
    label?: string;
    /** Si es true, el control no es interactivo: no abre el calendario al pulsar el campo ni el icono. */
    disabled?: boolean;
    renderHeader?: (props: {
        currentDate: Date;
        viewMode: ViewMode;
        toggleViewMode: () => void;
        navigate: (direction: 'prev' | 'next') => void;
    }) => React.ReactNode;
    renderDay?: (props: {
        day: number;
        date: Date;
        isSelected: boolean;
        isInRange: boolean;
        isStart: boolean;
        isEnd: boolean;
        isDisabled: boolean;
        isToday: boolean;
    }) => React.ReactNode;
}
//# sourceMappingURL=datepicker.d.ts.map