Review calendar recurrence exceptions

src/recurrence-types.tsTypeScript
@@ -0,0 +1,26 @@
1+export interface LocalDateTime {
2+ date: string;
3+ time: string;
4+}
5+
6+export type RecurrenceException =
7+ | { type: "cancelled" }
8+ | { type: "moved"; moveToLocal: LocalDateTime };
9+
10+export interface WeeklyRecurrence {
11+ startLocal: LocalDateTime;
12+ startInstant: Date;
13+ timeZone: string;
14+ count: number;
15+ exceptions: Readonly<Record<string, RecurrenceException>>;
16+}
17+
18+export interface ZoneRules {
19+ addLocalDays(value: LocalDateTime, days: number): LocalDateTime;
20+ toInstant(value: LocalDateTime, timeZone: string): Date;
21+}
22+
23+export interface Occurrence {
24+ originalLocalDate: string;
25+ instant: Date;
26+}