export type CalendarSelectionMode = 'single' | 'multiple' | 'range'; export type IsoRange = { start: string; end: string; }; export type RangeSelectionDraft = { anchor: string | null; hover: string | null; }; export type DaySelectionAppearance = { isSelected: boolean; isRangeStart: boolean; isRangeEnd: boolean; isRangeMiddle: boolean; }; /** Lexicographic compare for ISO `YYYY-MM-DD` strings. */ export declare function compareIso(a: string, b: string): number; export declare function normalizeRange(start: string, end: string): IsoRange; export declare function parseIsoRange(value: string | null | undefined): IsoRange | null; export declare function serializeIsoRange(range: IsoRange | null): string; export declare function parseMultipleIsos(value: string | null | undefined): string[]; export declare function serializeMultipleIsos(values: Iterable): string; export declare function toggleMultipleIso(selected: readonly string[], iso: string): string[]; export declare function isIsoInSpan(iso: string, range: IsoRange): boolean; export declare function getActiveRangeBounds(committed: IsoRange | null, draft: RangeSelectionDraft): IsoRange | null; export declare function getDaySelectionAppearance(iso: string, mode: CalendarSelectionMode, options: { singleIso?: string; multipleIsos?: readonly string[]; range?: IsoRange | null; }): DaySelectionAppearance; /** * Advances range selection after a day click. * * First click sets the anchor; second click commits the range. */ export declare function advanceRangeSelection(committed: IsoRange | null, draft: RangeSelectionDraft, iso: string): { committed: IsoRange | null; draft: RangeSelectionDraft; };