export type JobStatus = 'pending' | 'running' | 'completed' | 'failed' | 'skipped' | 'cancelled'; export type TriggerType = 'interval' | 'cron' | 'once' | 'manual'; export interface JobDependency { jobId: string; requireSuccess?: boolean; } export interface JobDefinition { id: string; name: string; description?: string; triggerType: TriggerType; intervalMs?: number; cronExpression?: string; runAt?: string; timezone?: string; handler: () => Promise; dependencies?: JobDependency[]; maxConcurrent?: number; timeoutMs?: number; retryCount?: number; retryDelayMs?: number; tags?: string[]; enabled: boolean; } export interface JobExecution { id: string; jobId: string; jobName: string; status: JobStatus; startedAt?: string; completedAt?: string; durationMs?: number; result?: unknown; error?: string; attempt: number; } export interface SchedulerState { jobs: Record; executions: JobExecution[]; lastTickAt?: string; } interface SerializedJob { id: string; name: string; description?: string; triggerType: TriggerType; intervalMs?: number; cronExpression?: string; runAt?: string; timezone?: string; dependencies?: JobDependency[]; maxConcurrent?: number; timeoutMs?: number; retryCount?: number; retryDelayMs?: number; tags?: string[]; enabled: boolean; lastRunAt?: string; nextRunAt?: string; runCount: number; failCount: number; } export interface SchedulerConfig { stateFile?: string; tickIntervalMs?: number; maxExecutionHistory?: number; maxConcurrentJobs?: number; missedJobWindowMs?: number; } export declare function cronMatches(expression: string, date: Date): boolean; export declare function getNextCronDate(expression: string, after?: Date): Date | null; export declare class FullCronScheduler { private jobs; private jobMeta; private running; private executions; private tickTimer; private config; constructor(config?: SchedulerConfig); loadState(): Promise; saveState(): Promise; registerJob(def: JobDefinition): void; unregisterJob(jobId: string): boolean; enableJob(jobId: string): void; disableJob(jobId: string): void; private areDependenciesMet; private concurrentCount; private totalRunning; private shouldRun; private executeJob; tick(): Promise; runJobNow(jobId: string): Promise; recoverMissedJobs(): Promise; start(): void; stop(): void; getJob(jobId: string): SerializedJob | undefined; listJobs(): SerializedJob[]; getExecutions(jobId?: string, limit?: number): JobExecution[]; getStats(): { totalJobs: number; enabledJobs: number; runningJobs: number; totalExecutions: number; failedExecutions: number; }; listJobsByTag(tag: string): SerializedJob[]; } export {}; //# sourceMappingURL=scheduler-full.d.ts.map