import { OnModuleInit } from '@nestjs/common';
import { JobWatcherService } from './job-watcher.service';
import { ModuleRef } from '@nestjs/core';
export interface BullJob {
    id: string | number;
    name: string;
    data: any;
    opts: any;
    progress: number;
    returnvalue: any;
    failedReason: string;
    stacktrace: string[];
    attemptsMade: number;
    delay: number;
    timestamp: number;
    processedOn: number;
    finishedOn: number;
    queue: BullQueue;
}
export interface BullQueue {
    name: string;
    waiting: () => Promise<BullJob[]>;
    active: () => Promise<BullJob[]>;
    completed: () => Promise<BullJob[]>;
    failed: () => Promise<BullJob[]>;
    delayed: () => Promise<BullJob[]>;
    paused: () => Promise<BullJob[]>;
    getWaiting: () => Promise<BullJob[]>;
    getActive: () => Promise<BullJob[]>;
    getCompleted: () => Promise<BullJob[]>;
    getFailed: () => Promise<BullJob[]>;
    getDelayed: () => Promise<BullJob[]>;
    getPaused: () => Promise<BullJob[]>;
    on: (event: string, callback: Function) => void;
    off: (event: string, callback: Function) => void;
    getJobCounts: () => Promise<{
        waiting: number;
        active: number;
        completed: number;
        failed: number;
        delayed: number;
        paused: number;
    }>;
}
export declare class BullAdapterService implements OnModuleInit {
    private readonly jobWatcherService;
    private readonly moduleRef;
    private readonly logger;
    private registeredQueues;
    private eventListeners;
    constructor(jobWatcherService: JobWatcherService, moduleRef: ModuleRef);
    onModuleInit(): Promise<void>;
    private discoverQueues;
    private findBullQueues;
    private findQueuesFromBull;
    private findQueuesFromBullMQ;
    registerQueue(queue: BullQueue): void;
    private setupQueueEventListeners;
    private handleJobActive;
    private handleJobCompleted;
    private handleJobFailed;
    private handleJobProgress;
    private handleJobStalled;
    private handleJobWaiting;
    private handleJobDelayed;
    private handleJobPaused;
    private createJobContext;
    updateQueueStats(): Promise<void>;
    unregisterQueue(queueName: string): void;
    getRegisteredQueues(): string[];
    isQueueRegistered(queueName: string): boolean;
    getQueueMetrics(queueName: string): Promise<any>;
    private serializeJob;
    onDestroy(): void;
}
