import { ViewMode, DateRange } from '../../../shared/types/datepicker';
export interface CalendarProps {
    currentDate: Date;
    selectedDate?: Date | null;
    selectedRange?: DateRange;
    onDateSelect: (date: Date) => void;
    onDateHover?: (date: Date | null) => void;
    minDate?: Date;
    maxDate?: Date;
    viewMode: ViewMode;
    onViewModeChange: (mode: ViewMode) => void;
    onNavigate?: (direction: 'prev' | 'next') => void;
    onMonthSelect?: (monthIndex: number) => void;
    onYearSelect?: (year: number) => void;
    onGoToToday?: () => void;
    locale?: string;
    /** 7 etiquetas (por defecto 3 letras: Dom, Lun, …). Orden natural [Dom, Lun, Mar, Mie, Jue, Vie, Sab]. Se reordenan según startOfWeek. */
    weekDays?: string[];
    monthNames?: string[];
    /** 0 = Domingo, 1 = Lunes, … (igual que getDay()). */
    startOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
    showWeekNumbers?: boolean;
    yearRange?: number;
    hoverDate?: Date | null;
    closeOnSelect?: boolean;
    autoCloseRange?: boolean;
    onAccept?: () => void;
    onCancel?: () => void;
    renderHeader?: (props: HeaderRenderProps) => React.ReactNode;
    renderDay?: (props: DayRenderProps) => React.ReactNode;
}
export interface CalendarGridProps {
    currentDate: Date;
    selectedDate?: Date | null;
    selectedRange?: DateRange;
    onDateSelect: (date: Date) => void;
    onDateHover?: (date: Date | null) => void;
    minDate?: Date;
    maxDate?: Date;
    /** 7 etiquetas (por defecto 3 letras). Orden natural. Se reordenan según startOfWeek. */
    weekDays?: string[];
    startOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
    showWeekNumbers?: boolean;
    hoverDate?: Date | null;
    renderDay?: (props: DayRenderProps) => React.ReactNode;
}
export interface DayProps {
    day: number | null;
    date: Date;
    isSelected: boolean;
    isInRange: boolean;
    isStart: boolean;
    isEnd: boolean;
    isFirstInRange?: boolean;
    isLastInRange?: boolean;
    afterSelected?: boolean;
    isDisabled: boolean;
    isToday: boolean;
    isHovered: boolean;
    onClick: (date: Date) => void;
    onMouseEnter?: (date: Date) => void;
    onMouseLeave?: () => void;
    className?: string;
    renderDay?: (props: DayRenderProps) => React.ReactNode;
}
export interface DayRenderProps {
    day: number;
    date: Date;
    isSelected: boolean;
    isInRange: boolean;
    isStart: boolean;
    isEnd: boolean;
    isFirstInRange?: boolean;
    isLastInRange?: boolean;
    afterSelected?: boolean;
    isDisabled: boolean;
    isToday: boolean;
}
export interface MonthProps {
    monthIndex: number;
    monthName: string;
    isSelected: boolean;
    isDisabled: boolean;
    onClick: (monthIndex: number) => void;
    className?: string;
}
export interface YearProps {
    year: number;
    isSelected: boolean;
    isDisabled: boolean;
    onClick: (year: number) => void;
    className?: string;
}
export interface CalendarHeaderProps {
    currentDate: Date;
    viewMode: ViewMode;
    onNavigate: (direction: 'prev' | 'next') => void;
    onToggleViewMode: () => void;
    onGoToToday?: () => void;
    monthNames?: string[];
    className?: string;
    renderHeader?: (props: HeaderRenderProps) => React.ReactNode;
}
export interface HeaderRenderProps {
    currentDate: Date;
    viewMode: ViewMode;
    toggleViewMode: () => void;
    navigate: (direction: 'prev' | 'next') => void;
}
//# sourceMappingURL=Calendar.types.d.ts.map