Recurrence

// The `Recurrence` union and the `NextFireError` sentinel shared by
// the three iterators (WeekdayIter, MonthlyIter, IntervalIter).
//
// Per resolutions/1 (2026-05-24), no provider parameter on the
// iterators — `_TzData` is the only data source.


type Recurrence is (WeekdayRecurrence | MonthlyRecurrence | IntervalRecurrence)


primitive NextFireError
  """
  Signal that an iterator can't produce its next fire. Possible causes
  include: unknown zone name, out-of-range arithmetic, iteration
  budget exhausted (corrupt tzdata, empty weekday set, recurring DST
  gap with strict policy), or an unsupported recurrence (e.g.
  calendar-mixed `IntervalRecurrence`).

  The iterator emits one of these exactly once, after which
  `has_next()` returns `false` and no further fires can be produced.
  """