import { CalendarDate, CalendarMonth, CalendarYear, ICalendarGeneratorService, DateRange } from "../interfaces"; /** * ViewGenerationCoordinator * Handles all calendar view generation logic (days, months, years) */ export declare class ViewGenerationCoordinator { private calendarGeneratorService; private getState; private isDateDisabledFn; constructor(calendarGeneratorService: ICalendarGeneratorService, getState: () => { currentDate: Date; selectedDate: Date | null; selectedDateRange: DateRange; focusedDate: Date | null; firstDayOfWeek: number; minDate: Date | null; maxDate: Date | null; disabledDates: Date[]; disabledDaysOfWeek: number[]; isRangeSelection: boolean; hideOtherMonthDays: boolean; currentYearRangeBase: number; yearRangeSize: number; }, isDateDisabledFn: (date: Date) => boolean); /** * Generate calendar days for current month view */ generateCalendarDays(currentDate: Date, selectedDate: Date | null, selectedDateRange: DateRange, focusedDate: Date | null, firstDayOfWeek: number, minDate: Date | null, maxDate: Date | null, disabledDates: Date[], disabledDaysOfWeek: number[], isRangeSelection: boolean, hideOtherMonthDays: boolean, isDateDisabledFn: (date: Date) => boolean): CalendarDate[]; /** * Generate calendar months for year view */ generateCalendarMonths(currentDate: Date, selectedDate: Date | null, selectedDateRange: DateRange, isRangeSelection: boolean, minDate: Date | null, maxDate: Date | null): CalendarMonth[]; /** * Generate calendar years for year range view */ generateCalendarYears(currentDate: Date, currentYearRangeBase: number, yearRangeSize: number, selectedDate: Date | null, selectedDateRange: DateRange, isRangeSelection: boolean, minDate: Date | null, maxDate: Date | null): CalendarYear[]; /** * Generate complete month view (structured with weeks) */ generateMonthView(): { month: number; year: number; weeks: { days: CalendarDate[]; weekNumber?: number; }[]; weekdays: string[]; }; /** * Generate complete year view (all months) */ generateYearView(): { months: CalendarMonth[]; year: number; }; /** * Get week number for a date */ getWeekNumber(date: Date): number; }