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