import type { TScheduleCadence } from './types/schedules'; /** * Compiles a cadence to the cron expression the engine fires from. Shared rather * than server-owned because the dialog previews the next runs, validates the * interval floor, and disables its own submit from these same functions: a second * client-side implementation would drift and either show run times the schedule * does not keep or accept a cadence the server then rejects. */ export declare function cadenceToCron(cadence: TScheduleCadence): string; /** * Everything `cronCadenceSchema` will accept: exactly five fields, within the length * the schema stores, and actually matching at some point. croner accepts syntactically * valid patterns that can never match (`0 0 30 2 *`), and those would arm a schedule * that never fires. Validated with croner rather than a regex, because a regex would * accept patterns croner then rejects at fire time. * * A five-field expression that matches at all matches forever, which is what lets every * caller keep reading "no next occurrence" as "this cadence is unreadable". */ export declare function isValidCronExpression(expression: string, timezone?: string): boolean; /** * The next occurrences the engine would fire. Server-side jitter (up to two * minutes) is deliberately not modelled: it is keyed off a schedule id that does * not exist yet at create time, and showing 9:01 for a 9:00 schedule reads as a bug. */ export declare function nextRunInstants(cadence: TScheduleCadence, timezone: string, count: number): Date[]; /** * Minimum minutes between occurrences, for the admin interval floor. `timezone` is * the schedule's own; passing it lets the cron branch measure a DST-compressed gap * instead of estimating one. The structured branches are zone-independent: their * formulas already carry the worst-case allowance. */ export declare function cadenceIntervalMinutes(cadence: TScheduleCadence, timezone?: string): number;