export type ScheduleTrigger =
  | { kind: 'cron'; expr: string }
  | { kind: 'alarm' }
  | { kind: 'manual' };

export type ScheduleHandler = () => Promise<void>;
export type ScheduleHandlerRef = string;

export type ScheduleEntry = {
  key: string;
  trigger: ScheduleTrigger;
  handler: ScheduleHandler | ScheduleHandlerRef;
  idempotency: string;
  owner: string;
};

export const scheduleRegistry: readonly ScheduleEntry[] = [
  {
    key: 'cron-30min',
    trigger: { kind: 'cron', expr: '*/30 * * * *' },
    handler: 'runFrequentBundle',
    idempotency: 'Handler-owned state guards and retry semantics.',
    owner: 'commerce-platform',
  },
  {
    key: 'cron-hourly',
    trigger: { kind: 'cron', expr: '0 * * * *' },
    handler: 'runHourlyBundle',
    idempotency:
      'Sold-out expiry is state-guarded; monitoring is observational.',
    owner: 'commerce-platform',
  },
  {
    key: 'cron-midnight',
    trigger: { kind: 'cron', expr: '0 0 * * *' },
    handler: 'runMidnightBundle',
    idempotency: 'Handler-owned state guards and reconciliation semantics.',
    owner: 'commerce-platform',
  },
  {
    key: 'cron-0600',
    trigger: { kind: 'cron', expr: '0 6 * * *' },
    handler: 'runLifecycleBundle',
    idempotency: 'Handler-owned lifecycle state guards.',
    owner: 'commerce-platform',
  },
];
