import '../styles/datepicker.css'; import type { DatepickerOptions, CalendarView, ThemeOption, CloseReason } from '../core/types'; import type { State } from '../core/State'; import type { RangeState } from '../core/RangeState'; interface DatepickerState extends Record { isOpen: boolean; view: CalendarView; currentYear: number; currentMonth: number; rawValue: string; selectedDate: Date | null; } export interface DropdownCallbacks { onDateSelect: (date: Date) => Promise; onTodayClick: (date: Date) => Promise; onMonthChange: (year: number, month: number) => Promise; onViewChange: (view: CalendarView) => void; onClose: (reason: CloseReason) => void; } export declare class Dropdown { private anchor; private opts; private state; private rangeState; private callbacks; private container; private headerView; private dayGridView; private monthGridView; private yearGridView; private footerView?; private bodyEl; private focusTrap; private liveRegion; private outsideCleanup?; private vpCleanup?; private pendingDate; constructor(anchor: HTMLInputElement, opts: DatepickerOptions, state: State, rangeState: RangeState, callbacks: DropdownCallbacks); /** Phase 1: build DOM + show immediately (sync), then run async pipeline. */ show(): Promise; /** True while DOM focus sits on the dialog or any element inside it. */ containsFocus(): boolean; hide(): void; refresh(): Promise; switchView(view: CalendarView): void; setTheme(theme: ThemeOption): void; private renderCurrentView; private runAsyncPipeline; private navigate; private attachKeyboard; private position; private attachViewportResize; private attachOutsideClick; } export {};