import type { EnqueueOptions, Queue, QueueDefinition } from '%queuesImports';
import { Queue as BullMQQueueBase } from 'bullmq';
/**
 * Initialize the BullMQ system with Redis connection.
 */
export declare function initializeBullMQ(): void;
/**
 * Shutdown the BullMQ system, closing all queues and workers.
 * @returns Promise that resolves when BullMQ is stopped.
 */
export declare function shutdownBullMQ(): Promise<void>;
/**
 * Implementation of Queue interface backed by BullMQ.
 */
export declare class BullMQQueue<T> implements Queue<T> {
    readonly name: string;
    private readonly definition;
    private bullQueue;
    private worker?;
    private isWorkerStarted;
    getBullQueue(): BullMQQueueBase;
    constructor(name: string, definition: QueueDefinition<T>);
    enqueue(data: T, options?: EnqueueOptions): Promise<string | undefined>;
    work(): Promise<void>;
}
/**
 * Create a queue with the specified name and definition.
 * The worker is not started automatically - call queue.work() to start processing jobs.
 *
 * @param name The name of the queue.
 * @param definition The queue definition containing handler and options.
 * @returns A Queue interface for enqueuing jobs and starting workers.
 */
export declare function createQueue<T>(name: string, definition: QueueDefinition<T>): BullMQQueue<T>;
/**
 * Get all scheduled/cron jobs from BullMQ.
 * @returns Promise that resolves to array of scheduled job names.
 */
export declare function getScheduledJobs(): Promise<string[]>;
//# sourceMappingURL=bullmq.service.d.ts.map