import { Type } from "@nestjs/common"; import { ModuleMetadata } from "@nestjs/common/interfaces"; import * as Bull from "bull"; import { Redis } from "ioredis"; export declare type BullName = string | symbol; export interface BullQueueDefaultProcessorOptions { concurrency?: number; skip?: boolean; } export interface BullQueueDefaultJobOptions { setTTLOnComplete?: number; setTTLOnFail?: number; } export interface BullQueueExtraOptions { defaultProcessorOptions?: BullQueueDefaultProcessorOptions; defaultJobOptions?: BullQueueDefaultJobOptions; } export declare type BullQueueType = string | Type; export interface BullQueueMock extends Pick { on: (listener: string, callback: () => void) => void; } export interface BullModuleOptions { queues: BullQueueType[]; options?: Bull.QueueOptions; extra?: BullQueueExtraOptions; mock?: boolean; } export declare type BullModuleAsyncOptions = { useClass?: Type; useFactory?: (...args: unknown[]) => Promise | BullModuleOptions; inject?: Array | string | any>; } & Pick; export interface BullModuleOptionsFactory { createBullModuleOptions(): Promise | BullModuleOptions; } export interface BaseBullQueueOptions { name?: BullName; } export interface BullQueueOptions extends BaseBullQueueOptions { options?: Bull.QueueOptions; extra?: BullQueueExtraOptions; } export interface BullQueueProcessorOptions extends BaseBullQueueOptions { name?: string; concurrency?: number; skip?: boolean; isCustomProcessorName?: boolean; } export interface BullQueueEventOptions extends BaseBullQueueOptions { eventNames: string[]; } export declare type BullQueue = Bull.Queue & { clients: Redis[]; }; export declare type BullJob = Bull.Job & { toKey: () => string; queue: BullQueue; }; export declare type BullQueueEvent = "error" | "waiting" | "active" | "stalled" | "progress" | "completed" | "failed" | "paused" | "resumed" | "cleaned" | "drained" | "removed";