/** * rrule.ts, a pure RRULE reader for an honest, deliberately-bounded subset. * * The honesty rule (see the decision record): an event's recurrence is either * FULLY and correctly expanded, or NOT expanded at all with an explicit reason. * We never emit occurrences from a rule we do not completely honor, a half-honored * BYMONTHDAY would put events on wrong dates, which is worse than not expanding. * * Fully supported (expanded to real occurrences): * - FREQ = DAILY | WEEKLY | MONTHLY | YEARLY * - INTERVAL (default 1) * - COUNT (occurrence cap) * - UNTIL (inclusive end bound; DATE or date-time, 'Z' or floating) * - BYDAY , ONLY for FREQ=WEEKLY with INTERVAL=1 and weekday-only tokens * (MO,TU,WE,TH,FR,SA,SU with no leading ordinal). Under those * conditions WKST does not change the matched set, so it is ignored * safely. Any BYDAY outside that condition is treated as unsupported. * * Everything else present in the RRULE (BYMONTHDAY, BYMONTH, BYSETPOS, BYHOUR, * BYWEEKNO, BYYEARDAY, ordinal BYDAY, BYDAY on non-weekly, INTERVAL>1 with BYDAY, * or an unknown FREQ) marks the rule `unsupported` and names the offending part. * * PURE: no fs, no network, no process globals. */ import type { CalendarEvent, DateWindow, EventOccurrence, RecurrenceInfo } from './types.js'; /** * Classify a raw RRULE into an honest RecurrenceInfo. Called by the parser at read * time so the event carries its expansion verdict before any window is known. */ export declare function describeRecurrence(rule: string): RecurrenceInfo; /** * Expand a (possibly recurring) event into concrete occurrences inside [window.from, * window.to] inclusive. A non-recurring event yields at most its single seed. An * event whose recurrence is `unsupported` yields ONLY its seed (if in-window), * flagged `isSeed`, never a fabricated series, the caller reads * `event.recurrence.expansion` to label it "recurrence not fully expanded". */ export declare function expandEvent(event: CalendarEvent, window: DateWindow): EventOccurrence[]; //# sourceMappingURL=rrule.d.ts.map