import { EventEmitter } from '../core/EventEmitter'; export interface ScheduledPrint { id: string; name: string; cronExpression?: string; onceAt?: number; repeatInterval?: number; printerId?: string; templateData: Record; templateId?: string; status: 'active' | 'paused' | 'completed' | 'failed'; nextRunTime?: number; lastRunTime?: number; totalRuns: number; maxRuns?: number; createdAt: number; updatedAt: number; } export interface ScheduleOptions { name: string; cronExpression?: string; onceAt?: Date | number; repeatInterval?: number; printerId?: string; templateData: Record; templateId?: string; maxRuns?: number; } export interface ScheduleEvents { 'will-execute': ScheduledPrint; executed: { job: ScheduledPrint; success: boolean; error?: Error; }; 'next-run': { job: ScheduledPrint; runTime: number; }; completed: ScheduledPrint; failed: { job: ScheduledPrint; error: Error; }; } /** * Parse cron expression (simplified, 5-field format) * Format: min hour day month weekday */ export declare function parseCronExpression(cron: string): { minutes: number[]; hours: number[]; daysOfMonth: number[]; months: number[]; daysOfWeek: number[]; }; export declare function getNextCronRun(cron: string, fromTime?: number): number; export declare function getNextIntervalRun(interval: number, fromTime?: number): number; export declare class PrintScheduler extends EventEmitter { private jobs; private timer; private isRunning; private onPrintExecute?; private persistKey; private persistTimer; private static readonly PERSIST_DEBOUNCE_MS; constructor(); private readonly schedulerLogger; setPrintExecutor(executor: (job: ScheduledPrint) => Promise): void; scheduleOnce(options: Omit): ScheduledPrint; scheduleRepeat(options: Omit): ScheduledPrint; scheduleCron(options: ScheduleOptions): ScheduledPrint; private addJob; cancel(jobId: string): boolean; pause(jobId: string): boolean; resume(jobId: string): boolean; update(jobId: string, updates: Partial>): boolean; getAllJobs(): ScheduledPrint[]; getActiveJobs(): ScheduledPrint[]; getJob(jobId: string): ScheduledPrint | undefined; getUpcomingJobs(limit?: number): ScheduledPrint[]; start(): void; stop(): void; private scheduleNext; private executeJob; private persistJobs; private restoreJobs; clear(): void; private flushPersist; getStatus(): { isRunning: boolean; totalJobs: number; activeJobs: number; nextScheduledRun: number | null; }; } export declare const printScheduler: PrintScheduler; export default PrintScheduler;