import { CalendarMode, DateRange, DateRangePickerOptions, DateRangeResult, DateValue, PickerInstance, PresetDefinition } from '../types.js'; export interface DateRangeControllerState { isOpen: boolean; mode: CalendarMode; allowModeToggle: boolean; showSecondaryCalendar: boolean; viewYear: number; viewMonth: number; range: DateRange | null; pendingStart: DateValue | null; hoverDate: DateValue | null; activePresetId: string | null; openSubmenuId: string | null; view: 'day' | 'month' | 'year'; yearGroupStart: number; selectionUnit: 'day' | 'month'; } export interface DateRangeController extends PickerInstance { getState(): DateRangeControllerState; getPresets(): PresetDefinition[]; getToday(): DateValue; selectDay(value: DateValue): void; hoverDay(value: DateValue | null): void; selectMonth(year: number, month: number): void; isMonthDisabled(year: number, month: number): boolean; startMonthSelect(): void; navigateMonth(delta: number): void; navigateYear(delta: number): void; navigateYearGroup(delta: number): void; setView(view: 'day' | 'month' | 'year'): void; selectMonthView(month: number): void; selectYearView(year: number): void; toggleMode(): void; selectPreset(id: string): void; selectSubmenuItem(submenuId: string, itemId: string): void; toggleSubmenu(id: string): void; startCustomRange(): void; apply(): void; isDisabled(value: DateValue): boolean; validateTyped(text: string): 'valid' | 'invalid' | 'empty'; commitTyped(text: string): 'valid' | 'invalid' | 'empty'; typedString(): string; typedReference(): string; yearBounds(): { min: number; max: number; }; cellForBs(year: number, month: number, day: number): DateValue; buildMonthCells(year: number, month: number): Array; } export declare function createDateRangeController(initialOptions?: DateRangePickerOptions): DateRangeController; export declare function previewRange(state: DateRangeControllerState): DateRange | null; export declare function isRangeBoundary(range: DateRange | null, value: DateValue): 'start' | 'end' | null;