The declarative form of one scheduler job registration — the entry an
application writes instead of calling cron()/every()/delay()
imperatively after start().
A union discriminated on trigger: each arm carries exactly the field its
scheduling strategy needs (expression for cron, intervalMs for
every, delayMs for delay), so a cron entry without an expression —
the one mistake that would otherwise produce a job that silently never
fires — is a COMPILE error rather than a runtime one.
{ readonly trigger: "cron"; readonly name: string; readonly expression: string; readonly handler: SchedulerJobHandler; readonly data?: unknown; readonly retry?: RetryOptions; }
| { readonly trigger: "every"; readonly name: string; readonly intervalMs: number; readonly handler: SchedulerJobHandler; readonly data?: unknown; readonly retry?: RetryOptions; }
| { readonly trigger: "delay"; readonly name: string; readonly delayMs: number; readonly handler: SchedulerJobHandler; readonly data?: unknown; readonly retry?: RetryOptions; }