import type { JobProgress, QueueListener, WorkerListener } from 'bullmq';
import type { TaskJob } from '../job.js';
import type { TaskJobData } from './job.js';
import type { TaskQueueOptions } from './queue.js';
import type { TaskProcessor, TaskValidator, TaskWorkerOptions } from './worker.js';
export type TaskWorkerQueueOptions<PayloadType = any, ResultType = any, NameType extends string = string> = TaskQueueOptions & {
    processor?: string | URL | null | TaskProcessor<PayloadType, ResultType, NameType>;
    validator?: null | TaskValidator<PayloadType, ResultType, NameType>;
    workerOptions?: Partial<TaskWorkerOptions>;
};
export interface TaskWorkerQueueListener<PayloadType = any, ResultType = any, NameType extends string = string, DataType extends TaskJobData = TaskJobData<PayloadType>> extends QueueListener<TaskJob<PayloadType, ResultType, NameType>> {
    'worker:active': WorkerListener<DataType, ResultType, NameType>['active'];
    'worker:closed': WorkerListener<DataType, ResultType, NameType>['closed'];
    'worker:closing': WorkerListener<DataType, ResultType, NameType>['closing'];
    'worker:completed': WorkerListener<DataType, ResultType, NameType>['completed'];
    'worker:drained': WorkerListener<DataType, ResultType, NameType>['drained'];
    'worker:error': WorkerListener<DataType, ResultType, NameType>['error'];
    'worker:failed': WorkerListener<DataType, ResultType, NameType>['failed'];
    'worker:paused': WorkerListener<DataType, ResultType, NameType>['paused'];
    'worker:progress': WorkerListener<DataType, ResultType, NameType>['progress'];
    'worker:ready': WorkerListener<DataType, ResultType, NameType>['ready'];
    'worker:resumed': WorkerListener<DataType, ResultType, NameType>['resumed'];
    'worker:stalled': WorkerListener<DataType, ResultType, NameType>['stalled'];
}
export interface WorkerEventHandlers<PayloadType = any, ResultType = any, NameType extends string = string> extends Omit<WorkerListener, 'active' | 'completed' | 'failed' | 'progress'> {
    active: (job: TaskJob<PayloadType, ResultType, NameType>, prev: string) => void;
    completed: (job: TaskJob<PayloadType, ResultType, NameType>, result: ResultType, prev: string) => void;
    failed: (job: TaskJob<PayloadType, ResultType, NameType> | undefined, error: Error, prev: string) => void;
    progress: (job: TaskJob<PayloadType, ResultType, NameType>, progress: JobProgress) => void;
}
//# sourceMappingURL=worker-queue.d.ts.map