/**
 * CalendarDate - Interface for calendar date objects
 */
export interface CalendarDate {
    date?: Date;
    day: number;
    month?: number;
    year?: number;
    isCurrentMonth: boolean;
    isToday: boolean;
    isSelected: boolean;
    isDisabled: boolean;
    isInRange?: boolean;
    isRangeStart?: boolean;
    isRangeEnd?: boolean;
    isFocused?: boolean;
}
/**
 * CalendarOptions - Interface for calendar configuration options
 */
export interface CalendarOptions {
    /** Minimum selectable date */
    minDate?: Date;
    /** Maximum selectable date */
    maxDate?: Date;
    /** List of disabled dates */
    disabledDates?: Date[];
    /** List of disabled days of the week (0 = Sunday, 1 = Monday, etc.) */
    disabledDaysOfWeek?: number[];
    /** Start with a specific date selected */
    initialSelectedDate?: Date;
    /** First day of week (0 = Sunday, 1 = Monday, etc.) */
    firstDayOfWeek?: number;
    /** Date format for output (defaults to ISO string) */
    dateFormat?: string;
    /** Hide days from previous and next months */
    hideOtherMonthDays?: boolean;
    /** Locale for internationalization (defaults to 'en-US') */
    locale?: string;
    /** Date format options for Intl.DateTimeFormat */
    dateFormatOptions?: Intl.DateTimeFormatOptions;
    /** Enable date range selection mode */
    isRangeSelection?: boolean;
    /** Show week numbers in calendar */
    showWeekNumbers?: boolean;
}
/**
 * DateRange - Interface for date range selection
 */
export interface DateRange {
    startDate: Date | null;
    endDate: Date | null;
}
/**
 * CalendarMonth - Interface for calendar month objects in month view
 */
export interface CalendarMonth {
    month: number;
    year: number;
    name: string;
    isCurrentMonth: boolean;
    isSelected: boolean;
    isDisabled: boolean;
}
/**
 * CalendarYear - Interface for calendar year objects in year view
 */
export interface CalendarYear {
    year: number;
    isCurrentYear: boolean;
    isSelected: boolean;
    isDisabled: boolean;
    isInRange?: boolean;
}
/**
 * YearRange - Interface for year range
 */
export interface YearRange {
    startYear: number;
    endYear: number;
}
/**
 * CalendarWeek - Interface for a week in the calendar view
 */
export interface CalendarWeek {
    days: CalendarDate[];
    weekNumber?: number;
}
/**
 * CalendarView - Interface for a month view with weeks
 */
export interface CalendarView {
    month: number;
    year: number;
    weeks: CalendarWeek[];
    weekdays: string[];
}
/**
 * YearView - Interface for a year view with months or years
 */
export interface YearView {
    year?: number;
    startYear?: number;
    endYear?: number;
    months?: CalendarMonth[];
    years?: CalendarYear[];
}
