/** * Rotation scheduler — ADR-301 content ratio, enforced structurally. * * - Educational: at least 4 of every 5 rotation slots. * - Promotional: at most 1 of every 5 slots (slot % 5 === 4), and only * when no promotion has shown in the last 30 minutes. * - Deterministic: selection is a pure function of (time slot, registry, * last-promo state) — no Math.random, so renders are reproducible and * the statusline cache can't skew the ratio. */ import type { FunnelMessage } from './types.js'; /** One rotation slot — ADR-301 allows 15–30s; 20s sits inside the band. */ export declare const ROTATION_SLOT_MS = 20000; /** The same promotion appears at most once every 30 minutes (ADR-301). */ export declare const PROMO_REPEAT_CAP_MS: number; /** 1 promotional slot per 5 (ADR-301: ≤ 1 in 5 rotations). */ export declare const PROMO_SLOT_MODULO = 5; export declare function selectMessage(now?: Date, release?: string): FunnelMessage | null; //# sourceMappingURL=rotation.d.ts.map