/**
 * Parse a single cron field into an array of matching integer values.
 *
 * Supports:
 *   "*"       → all values in [min, max]
 *   "N"       → exact value
 *   "N-M"     → inclusive range
 *   "N,M,O"   → list (each element may itself be a range or step)
 *   "* /N"     → every Nth value starting from min  (written without the space)
 *   "N-M/S"   → range with step
 */
export declare function parseCronField(field: string, min: number, max: number): number[];
export interface ParsedCron {
    minutes: number[];
    hours: number[];
    daysOfMonth: number[];
    months: number[];
    daysOfWeek: number[];
}
/**
 * Parse a standard 5-field cron expression.
 *
 * Fields: minute hour day-of-month month day-of-week
 */
export declare function parseCron(expression: string): ParsedCron;
/**
 * Check whether a given Date matches a cron expression.
 */
export declare function shouldRunAt(cronExpression: string, date: Date): boolean;
/**
 * Find the next Date that matches the cron expression, searching minute by
 * minute from `after` (defaults to now) up to 366 days ahead.
 */
export declare function getNextRunTime(cronExpression: string, after?: Date): Date;
export interface SchedulerEvent {
    type: "schedule:triggered" | "schedule:completed" | "schedule:failed";
    scheduleId: string;
    scheduleName: string;
    runId?: string;
    error?: string;
    timestamp: string;
}
export declare class Scheduler {
    private interval;
    private running;
    private checkIntervalMs;
    private onEvent?;
    constructor(options?: {
        checkIntervalMs?: number;
        onEvent?: (event: SchedulerEvent) => void;
    });
    /**
     * Start the scheduler — runs tick() at the configured interval.
     */
    start(): void;
    /**
     * Stop the scheduler.
     */
    stop(): void;
    /**
     * A single tick: check all enabled schedules and trigger any that are due.
     */
    tick(): Promise<void>;
    /**
     * Manually trigger a schedule immediately (e.g. `testers schedule run <id>`).
     */
    runScheduleNow(scheduleId: string): Promise<void>;
    private executeSchedule;
    private emit;
}
//# sourceMappingURL=scheduler.d.ts.map