import { CalendarDate, CalendarMonth, CalendarYear, YearRange } from "../interfaces";
/**
 * Calendar Controller Methods - All available public methods
 * These methods provide the API for interacting with the calendar
 */
export interface CalendarControllerMethods {
    /** Select a specific date */
    selectDate(yearOrDate: number | Date, month?: number, day?: number): void;
    /** Navigate to a specific month */
    goToMonth(month: number, year: number): void;
    /** Navigate to a specific year */
    goToYear(year: number): void;
    /** Navigate to a specific date */
    goToDate(date: Date): void;
    /** Navigate to the next month */
    goToNextMonth(): void;
    /** Navigate to the previous month */
    goToPreviousMonth(): void;
    /** Navigate to the next year */
    goToNextYear(): void;
    /** Navigate to the previous year */
    goToPreviousYear(): void;
    /** Navigate to today's date */
    goToToday(): void;
    /** Navigate to the next year range (decade) */
    goToNextYearRange(): void;
    /** Navigate to the previous year range (decade) */
    goToPreviousYearRange(): void;
    /** Enable or disable range selection mode */
    setRangeSelectionMode(isRange: boolean): void;
    /** Clear the current selection */
    clearSelection(): void;
    /** Set the focused date */
    setFocusedDate(date: Date | null): void;
    /** Clear the focused date */
    clearFocusedDate(): void;
    /** Focus a specific date */
    focusDate(date: Date): void;
    /** Move focus to the next day */
    moveFocusRight(): void;
    /** Move focus to the previous day */
    moveFocusLeft(): void;
    /** Move focus up one week */
    moveFocusUp(): void;
    /** Move focus down one week */
    moveFocusDown(): void;
    /** Move focus to the start of the month */
    moveFocusToStartOfMonth(): void;
    /** Move focus to the end of the month */
    moveFocusToEndOfMonth(): void;
    /** Move focus to the previous month */
    moveFocusToPreviousMonth(): void;
    /** Move focus to the next month */
    moveFocusToNextMonth(): void;
    /** Move focus to the previous year */
    moveFocusToPreviousYear(): void;
    /** Move focus to the next year */
    moveFocusToNextYear(): void;
    /** Select the currently focused date */
    selectFocusedDate(): void;
    /** Set the locale */
    setLocale(locale: string): void;
    /** Get the current locale */
    getLocale(): string;
    /** Set the first day of the week (0 = Sunday, 1 = Monday, etc.) */
    setFirstDayOfWeek(day: number): void;
    /** Set whether to hide days from other months */
    setHideOtherMonthDays(hide: boolean): void;
    /** Get month names in the current locale */
    getMonthNames(): string[];
    /** Get weekday names in the current locale */
    getWeekdayNames(short?: boolean): string[];
    /** Set the date format */
    setDateFormat(format: string | null): void;
    /** Set date format options */
    setDateFormatOptions(options: Intl.DateTimeFormatOptions | null): void;
    /** Get current date format options */
    getDateFormatOptions(): Intl.DateTimeFormatOptions | null;
    /** Get formatted date string for selected date */
    getFormattedDate(): string | null;
    /** Format a specific date with given options */
    formatDate(date: Date, options?: Intl.DateTimeFormatOptions | string): string;
    /** Select a month (navigate to month view) */
    selectMonth(month: number, year: number): void;
    /** Select a year (navigate to year view) */
    selectYear(year: number): void;
    /** Set minimum selectable date */
    setMinDate(date: Date | null): void;
    /** Set maximum selectable date */
    setMaxDate(date: Date | null): void;
    /** Set array of disabled dates */
    setDisabledDates(dates: Date[]): void;
    /** Add a date to the disabled dates */
    addDisabledDate(date: Date): Date[];
    /** Remove a date from the disabled dates */
    removeDisabledDate(date: Date): Date[];
    /** Get the current disabled dates */
    getDisabledDates(): Date[];
    /** Set array of disabled days of the week (0 = Sunday, 1 = Monday, etc.) */
    setDisabledDaysOfWeek(days: number[]): number[];
    /** Add a day of the week to the disabled days */
    addDisabledDayOfWeek(day: number): number[];
    /** Remove a day of the week from the disabled days */
    removeDisabledDayOfWeek(day: number): number[];
    /** Get the current disabled days of the week */
    getDisabledDaysOfWeek(): number[];
    /** Get the current year range */
    getCurrentYearRange(): YearRange;
    /** Set the current year range based on a date */
    setCurrentYearRange(date: Date): void;
    /** Set the year range size (how many years to display) */
    setYearRangeSize(size: number): void;
    /** Get accessible label for a date */
    getAccessibleDateLabel(date: Date): string;
    /** Get date state description for accessibility */
    getDateStateDescription(date: Date): string;
    /** Check if a date is today */
    isToday(date: Date): boolean;
    /** Check if a date is disabled */
    isDateDisabled(date: Date): boolean;
    /** Check if a date is selected */
    isDateSelected(date: Date): boolean;
    /** Check if a date is in the selected range */
    isDateInRange(date: Date): boolean;
    /** Check if a date has events */
    hasEvents(date: Date): boolean;
    /** Generate month view data */
    generateMonthView(): {
        month: number;
        year: number;
        weeks: {
            days: CalendarDate[];
            weekNumber?: number;
        }[];
        weekdays: string[];
    };
    /** Get week number for a date */
    getWeekNumber(date: Date): number;
    /** Generate calendar days for current month */
    generateCalendarDays(): CalendarDate[];
    /** Generate calendar months for current year */
    generateCalendarMonths(): CalendarMonth[];
    /** Generate calendar years for current decade */
    generateCalendarYears(): CalendarYear[];
    /** Alias for goToNextMonth() */
    nextMonth?(): void;
    /** Alias for goToPreviousMonth() */
    prevMonth?(): void;
    /** Alias for goToPreviousMonth() */
    previousMonth?(): void;
    /** Alias for goToNextYear() */
    nextYear?(): void;
    /** Alias for goToPreviousYear() */
    prevYear?(): void;
}
