import { DateRange } from "../interfaces";
/**
 * CalendarStateManager - Centralized state management for the calendar controller
 * Manages all state variables with type-safe getters and setters
 */
export declare class CalendarStateManager {
    private _currentDate;
    private _selectedDate;
    private _selectedDateRange;
    private _focusedDate;
    private _minDate;
    private _maxDate;
    private _disabledDates;
    private _disabledDaysOfWeek;
    private _firstDayOfWeek;
    private _dateFormat;
    private _isRangeSelection;
    private _hideOtherMonthDays;
    private _locale;
    private _dateFormatOptions;
    private _yearRangeSize;
    private _currentYearRangeBase;
    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 all state as a snapshot
     */
    getStateSnapshot(): {
        currentDate: Date;
        selectedDate: Date | null;
        selectedDateRange: {
            startDate: Date | null;
            endDate: Date | null;
        };
        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;
    };
}
