import { ControllerAdapter } from "@uplink-protocol/core";
import { ControllerMetadata } from "@uplink-protocol/core/dist/uplink/interfaces/metadata/controller-metadata.interface";
import { CalendarDate, CalendarMonth, CalendarYear, CalendarOptions, DateRange, YearRange } from "./interfaces";
import { TypedCalendarController, CalendarControllerBindings, CalendarControllerMethods, CalendarControllerEvents } from "./types";
/**
 * CalendarControllerClass - Pure Orchestrator
 *
 * This controller is a thin orchestration layer that delegates ALL logic
 * to specialized coordinators. It contains NO business logic itself.
 *
 * Architecture:
 * - Services: Low-level operations (date manipulation, formatting, etc.)
 * - Coordinators: Business logic and state management
 * - Controller: Public API facade and delegation
 */
export interface CalendarControllerInterface extends TypedCalendarController {
    _currentDate: Date;
    _selectedDate: Date | null;
    _selectedDateRange: DateRange;
    _focusedDate: Date | null;
    _minDate: Date | null;
    _maxDate: Date | null;
    _disabledDates: Date[];
    _disabledDaysOfWeek: number[];
    _firstDayOfWeek: number;
    _dateFormat: string | null;
    _isRangeSelection: boolean;
    _hideOtherMonthDays: boolean;
    _locale: string;
    _dateFormatOptions: Intl.DateTimeFormatOptions | null;
    _yearRangeSize: number;
    _currentYearRangeBase: number;
}
export declare class CalendarControllerClass implements CalendarControllerInterface {
    bindings: CalendarControllerBindings;
    methods: CalendarControllerMethods;
    events: CalendarControllerEvents;
    meta?: ControllerMetadata;
    __adapter?: ControllerAdapter;
    options?: CalendarOptions;
    get _currentDate(): Date;
    set _currentDate(value: Date);
    get _selectedDate(): Date | null;
    set _selectedDate(value: Date | null);
    get _selectedDateRange(): DateRange;
    set _selectedDateRange(value: DateRange);
    get _focusedDate(): Date | null;
    set _focusedDate(value: Date | null);
    get _minDate(): Date | null;
    set _minDate(value: Date | null);
    get _maxDate(): Date | null;
    set _maxDate(value: Date | null);
    get _disabledDates(): Date[];
    set _disabledDates(value: Date[]);
    get _disabledDaysOfWeek(): number[];
    set _disabledDaysOfWeek(value: number[]);
    get _firstDayOfWeek(): number;
    set _firstDayOfWeek(value: number);
    get _dateFormat(): string | null;
    set _dateFormat(value: string | null);
    get _isRangeSelection(): boolean;
    set _isRangeSelection(value: boolean);
    get _hideOtherMonthDays(): boolean;
    set _hideOtherMonthDays(value: boolean);
    get _locale(): string;
    set _locale(value: string);
    get _dateFormatOptions(): Intl.DateTimeFormatOptions | null;
    set _dateFormatOptions(value: Intl.DateTimeFormatOptions | null);
    get _yearRangeSize(): number;
    set _yearRangeSize(value: number);
    get _currentYearRangeBase(): number;
    set _currentYearRangeBase(value: number);
    get selectedDateRange(): {
        start: Date | null;
        end: Date | null;
        startDate: Date | null;
        endDate: Date | null;
    };
    set selectedDateRange(value: {
        start?: Date | null;
        end?: Date | null;
        startDate?: Date | null;
        endDate?: Date | null;
    });
    private _calendarService;
    private _localizationService;
    private _dateFormattingService;
    private _dateSelectionService;
    private _viewStateService;
    private _eventManagerService;
    private _navigationService;
    private _constraintsService;
    private _calendarGeneratorService;
    private _accessibilityService;
    private _accessibilityManagerService;
    private _calendarStateService;
    private stateManager;
    private bindingsCoordinator;
    private navigationCoordinator;
    private selectionCoordinator;
    private constraintsCoordinator;
    private focusCoordinator;
    private formattingCoordinator;
    private utilityCoordinator;
    private controllerInitializer;
    private viewGenerationCoordinator;
    private localizationCoordinator;
    private configurationCoordinator;
    constructor(options?: CalendarOptions);
    generateCalendarDays(): CalendarDate[];
    generateCalendarMonths(): CalendarMonth[];
    generateCalendarYears(): CalendarYear[];
    getWeekNumber(date: Date): number;
    isDateDisabled(date: Date): boolean;
    isDateSelected(date: Date): boolean;
    isDateInRange(date: Date): boolean;
    isToday(date: Date): boolean;
    hasEvents(_date: Date): boolean;
    isSameDay(date1: Date, date2: Date): boolean;
    isSameMonth(date1: Date, date2: Date): boolean;
    isSameYear(date1: Date, date2: Date): boolean;
    getDayOfWeek(date: Date): number;
    getDaysInMonth(year: number, month: number): number;
    selectDate(yearOrDate: number | Date, month?: number, day?: number): void;
    selectMonth(month: number, year: number): void;
    selectYear(year: number): void;
    clearSelection(): void;
    setRangeSelectionMode(isRange: boolean): void;
    goToMonth(month: number, year: number): void;
    goToYear(year: number): void;
    goToDate(date: Date): void;
    private updateCurrentDate;
    goToNextMonth(): void;
    nextMonth(): void;
    goToPreviousMonth(): void;
    previousMonth(): void;
    prevMonth(): void;
    goToNextYear(): void;
    nextYear(): void;
    goToPreviousYear(): void;
    prevYear(): void;
    goToToday(): void;
    goToNextYearRange(): void;
    goToPreviousYearRange(): void;
    setMinDate(date: Date | null): void;
    setMaxDate(date: Date | null): void;
    setDisabledDates(dates: Date[]): void;
    addDisabledDate(date: Date): Date[];
    removeDisabledDate(date: Date): Date[];
    getDisabledDates(): Date[];
    setDisabledDaysOfWeek(days: number[]): number[];
    addDisabledDayOfWeek(day: number): number[];
    removeDisabledDayOfWeek(day: number): number[];
    getDisabledDaysOfWeek(): number[];
    setLocale(locale: string): void;
    getLocale(): string;
    setDateFormat(format: string | null): void;
    getDateFormat(): string | null;
    setDateFormatOptions(options: Intl.DateTimeFormatOptions | null): void;
    getDateFormatOptions(): Intl.DateTimeFormatOptions | null;
    setFirstDayOfWeek(day: number): void;
    getFirstDayOfWeek(): number;
    setHideOtherMonthDays(hide: boolean): void;
    getHideOtherMonthDays(): boolean;
    getFormattedDate(): string | null;
    formatDate(date: Date, format?: string | object, locale?: string): string;
    formatDateWithOptions(date: Date, options?: Intl.DateTimeFormatOptions, locale?: string): string;
    getMonthName(month: number, format?: 'long' | 'short', locale?: string): string;
    getDayName(dayOfWeek: number, format?: 'long' | 'short' | 'narrow', locale?: string): string;
    getDayNames(format?: 'long' | 'short' | 'narrow', locale?: string): string[];
    getWeekdayNames(format?: 'long' | 'short' | 'narrow', locale?: string): string[];
    getMonthNames(format?: 'long' | 'short', locale?: string): string[];
    focusDate(date: Date): void;
    setFocusedDate(date: Date): void;
    clearFocusedDate(): void;
    selectFocusedDate(): void;
    getAccessibleDateLabel(date: Date): string;
    getDateStateDescription(date: Date): string;
    moveFocusLeft(): void;
    moveFocusRight(): void;
    moveFocusUp(): void;
    moveFocusDown(): void;
    moveFocusToStartOfWeek(): void;
    moveFocusToEndOfWeek(): void;
    moveFocusToStartOfMonth(): void;
    moveFocusToEndOfMonth(): void;
    moveFocusToNextMonth(): void;
    moveFocusToPreviousMonth(): void;
    moveFocusToNextYear(): void;
    moveFocusToPreviousYear(): void;
    getAriaLabel(date: Date): string;
    getAriaLabelForMonth(month: number, year: number): string;
    getAriaLabelForYear(year: number): string;
    getCurrentYearRange(): YearRange;
    setCurrentYearRange(date: Date): void;
    setYearRangeSize(size: number): void;
    getYearRangeSize(): number;
    getCurrentDate(): Date;
    getSelectedDate(): Date | null;
    getSelectedDateRange(): DateRange;
    getFocusedDate(): Date | null;
    getMinDate(): Date | null;
    getMaxDate(): Date | null;
    getRangeSelectionMode(): boolean;
    generateMonthView(): {
        month: number;
        year: number;
        weeks: {
            days: CalendarDate[];
            weekNumber?: number;
        }[];
        weekdays: string[];
    };
    generateYearView(): {
        months: CalendarMonth[];
        year: number;
    };
    private getGetters;
}
