import { ICalendarGeneratorService } from '../interfaces/calendar-generator.service.interfaces';
import { CalendarDate, CalendarMonth, CalendarYear } from '../interfaces/calendar.interfaces';
import { CalendarGenerationOptions, MonthViewGenerationOptions, YearViewGenerationOptions } from '../interfaces/calendar.service.interfaces';
/**
 * Implementation of CalendarGeneratorService
 * Responsible for generating calendar data structures
 */
export declare class CalendarGeneratorService implements ICalendarGeneratorService {
    getWeekNumber(date: Date, locale?: string): number;
    /**
     * Generate calendar days for a specific month/year
     * @param year Year
     * @param month Month (0-11)
     * @param options Calendar generation options
     * @returns Array of calendar dates
     */
    generateCalendarDays(year: number, month: number, options: CalendarGenerationOptions): CalendarDate[];
    /**
     * Generate an array of calendar months for a year view
     * @param year Year to generate months for
     * @param options Month view generation options
     * @returns Array of calendar month objects
     */
    generateCalendarMonths(year: number, options: MonthViewGenerationOptions): CalendarMonth[];
    /**
     * Generate an array of calendar years for a year range view
     * @param baseYear Starting year for the range
     * @param rangeSize Number of years to generate
     * @param options Year view generation options
     * @returns Array of calendar year objects
     */
    generateCalendarYears(baseYear: number, rangeSize: number, options: YearViewGenerationOptions): CalendarYear[];
    /**
     * Create a calendar date object with the correct properties
     * @param date Date
     * @param isCurrentMonth Whether this date is in the current month
     * @param today Today's date
     * @param options Calendar generation options
     * @returns Calendar date object
     */ private createCalendarDateObject;
    /**
   * Get calendar days generation function
   * Returns a function that can be called to generate calendar days
   * @param getCurrentDate Function to get current date
   * @param getCalendarOptions Function to get calendar options
   * @returns Function that generates calendar days
   */
    getCalendarDaysGenerator(getCurrentDate: () => Date, getCalendarOptions: () => CalendarGenerationOptions): () => CalendarDate[];
    /**
   * Generate month view for a specific month/year
   * @param year Year
   * @param month Month (0-11)
   * @param options Calendar generation options
   * @returns Object with month view data
   */ generateMonthView(year: number, month: number, options: CalendarGenerationOptions): {
        month: number;
        year: number;
        weeks: {
            days: CalendarDate[];
            weekNumber?: number;
        }[];
        weekdays: string[];
    };
    /**
     * Generate year view with all months for a specific year
     * @param year Year to generate view for
     * @param options Year view generation options
     * @returns Object with year view data
     */
    generateYearView(year: number, options: YearViewGenerationOptions): {
        months: CalendarMonth[];
        year: number;
    };
    /**
   * Generate decade view (10 years)
   * @param baseYear Base year for the decade view
   * @param options Year view generation options
   * @returns Object with decade view data
   */
    generateDecadeView(baseYear: number, options: YearViewGenerationOptions): {
        years: CalendarYear[];
        startYear: number;
        endYear: number;
    };
    /**
   * Generate multi-year view (typically for selecting a year within a decade or larger range)
   * @param baseYear Base year for the multi-year view
   * @param options Year view generation options
   * @returns Object with multi-year view data
   */
    generateMultiYearView(baseYear: number, options: YearViewGenerationOptions): {
        years: CalendarYear[];
        decades: Array<{
            startYear: number;
            endYear: number;
        }>;
        startYear: number;
        endYear: number;
    };
}
