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; }