/** * scheduler-ical - pure, dependency-free iCalendar (RFC 5545) import / export for * the scheduler. Works on a small {@link ICalEvent} shape so it stays data-model * agnostic: map your rows to/from it. Handles timed + all-day events, RRULE * round-trip (via the shared {@link RecurrenceRule}), STATUS, DESCRIPTION and * LOCATION. No `Date.now()` in the core - `toICS` accepts a stamp. */ import type { RecurrenceRule } from './recurrence'; export type ICalEvent = { uid?: string; title: string; description?: string; location?: string; start: Date; end: Date; allDay?: boolean; status?: 'confirmed' | 'tentative' | 'cancelled'; rrule?: RecurrenceRule | null; }; /** A {@link RecurrenceRule} -> an iCal `RRULE` value (without the `RRULE:` name). */ export declare function ruleToRRule(rule: RecurrenceRule): string; /** An iCal `RRULE` value -> a {@link RecurrenceRule}. */ export declare function rruleToRule(value: string): RecurrenceRule | null; /** Serialize events to an iCalendar string. `stamp` sets DTSTAMP (default epoch). */ export declare function toICS(events: ReadonlyArray, opts?: { prodId?: string; stamp?: Date; }): string; /** Parse an iCalendar string into events (unfolds lines, reads VEVENT blocks). */ export declare function fromICS(text: string): ICalEvent[];