/**
 * Background Jobs System
 * Manages scheduled tasks and periodic operations.
 */
export type JobCallback = () => void | Promise<void>;
export interface ScheduledJob {
    id: string;
    name: string;
    interval: number;
    callback: JobCallback;
    timer: NodeJS.Timeout | null;
    lastRun: Date | null;
    nextRun: Date | null;
    runCount: number;
    enabled: boolean;
}
export interface JobStats {
    id: string;
    name: string;
    interval: number;
    enabled: boolean;
    lastRun: Date | null;
    nextRun: Date | null;
    runCount: number;
}
/**
 * Manages scheduled background tasks.
 */
export declare class BackgroundJobManager {
    private jobs;
    private running;
    /**
     * Register a new job.
     */
    register(name: string, intervalMs: number, callback: JobCallback, runImmediately?: boolean): string;
    /**
     * Unregister a job.
     */
    unregister(jobId: string): boolean;
    /**
     * Start all registered jobs.
     */
    startAll(): void;
    /**
     * Stop all running jobs.
     */
    stopAll(): void;
    /**
     * Enable a specific job.
     */
    enableJob(jobId: string): boolean;
    /**
     * Disable a specific job.
     */
    disableJob(jobId: string): boolean;
    /**
     * Run a job immediately (in addition to its schedule).
     */
    runNow(jobId: string): Promise<boolean>;
    /**
     * Get stats for all jobs.
     */
    getStats(): JobStats[];
    /**
     * Get stats for a specific job.
     */
    getJobStats(jobId: string): JobStats | null;
    /**
     * Start a single job.
     */
    private startJob;
    /**
     * Stop a single job.
     */
    private stopJob;
    /**
     * Execute a job's callback.
     */
    private executeJob;
}
export declare function getJobManager(): BackgroundJobManager;
/**
 * Register common maintenance jobs.
 */
export declare function registerMaintenanceJobs(manager: BackgroundJobManager): void;
export declare const backgroundJobs: {
    BackgroundJobManager: typeof BackgroundJobManager;
    getJobManager: typeof getJobManager;
    registerMaintenanceJobs: typeof registerMaintenanceJobs;
};
//# sourceMappingURL=jobs.d.ts.map