import { Binding } from "@uplink-protocol/core"; import { CalendarDate, CalendarMonth, CalendarYear, DateRange, YearRange } from "../interfaces/calendar.interfaces"; import { IViewStateService } from "../interfaces/view-state.service.interfaces"; /** * Implementation of ViewStateService * Responsible for managing calendar view state and binding updates */ export declare class ViewStateService implements IViewStateService { /** * Initialize view state bindings */ initializeBindings(currentDate: Date, selectedDate: Date | null, selectedDateRange: DateRange, firstDayOfWeek: number, isRangeSelection: boolean, calendarDaysGenerator: () => CalendarDate[], calendarMonthsGenerator: () => CalendarMonth[], calendarYearsGenerator: () => CalendarYear[]): { currentMonth: Binding; currentYear: Binding; currentDate: Binding; monthName: Binding; calendarDays: Binding; calendarMonths: Binding; calendarYears: Binding; selectedDate: Binding; selectedDateRange: Binding; focusedDate: Binding; weekdays: Binding; isRangeSelection: Binding; currentYearRangeBase: Binding; }; /** * Update current date in view state */ updateCurrentDate(date: Date, arg2: any, // Can be either Binding or bindings object arg3: any, // Can be either Binding or getMonthName function arg4: any, // Can be either Binding or generateCalendarDays function arg5?: any, // Optional getMonthName function or undefined arg6?: any, // Optional calendarDaysBinding or undefined arg7?: any): { month: number; year: number; }; /** * Update selected date bindings */ updateSelectedDate(date: Date | null, binding: Binding, calendarDaysBinding?: Binding, generateCalendarDays?: () => CalendarDate[]): void; /** * Update date range bindings */ updateDateRange(range: DateRange, binding: Binding, calendarDaysBinding: Binding, generateCalendarDays: () => CalendarDate[]): void; /** * Update selection mode */ updateSelectionMode(isRange: boolean, binding: Binding, calendarDaysBinding: Binding, generateCalendarDays: () => CalendarDate[]): void; /** * Update selectedDateRange binding with new range */ updateSelectedDateRange(range: DateRange, binding: Binding): void; /** * Update calendarDays binding with new calendar days */ updateCalendarDays(calendarDays: CalendarDate[], binding: Binding): void; /** * Update focused date */ updateFocusedDate(date: Date | null, focusedDateBindingOrCalendarDaysBinding?: Binding | Binding, generateCalendarDays?: () => CalendarDate[]): void; }