interface FieldSpec { raw: string; values: Set; min: number; max: number; } export interface CronSpec { minute: FieldSpec; hour: FieldSpec; day: FieldSpec; month: FieldSpec; dow: FieldSpec; } export declare function parseCron(expr: string): CronSpec; /** * Next firing strictly after `from`, found by field-level * fast-forwarding. For "yearly at midnight Jan 1" (`0 0 1 1 *`) this * converges in at most 4-5 jumps, vs ~525_000 minute increments under * the previous brute-force loop. * * The loop walks fields outermost (month) → innermost (minute). On a * mismatch we set the field to its ceiling (next valid value) and reset * everything inside it. If no ceiling exists in the current scope we * step one unit up in the parent field. JavaScript Date handles * carries (month=12 → next year, hour=24 → next day) natively. */ export declare function nextOccurrence(spec: CronSpec, from?: Date): Date | null; export {}; //# sourceMappingURL=cron.d.ts.map