import type { BullMQPayload, QueueMessage } from '../../../src/index.js';
import { Queue } from 'bullmq';
interface IQueueDriver {
    enqueue(queue: string, payload: BullMQPayload): Promise<string>;
    dequeue<T = unknown>(queue: string): Promise<QueueMessage<T> | undefined>;
    ack(queue: string, id: string): Promise<void>;
    length(queue: string): Promise<number>;
    drain(queue: string): Promise<void>;
}
interface IBullMQRedisQueue extends IQueueDriver {
    getQueue(queueName: string): Queue;
    shutdown(): Promise<void>;
    closeQueue(queueName: string): Promise<void>;
    getQueueNames(): string[];
}
export declare const shouldUseHttpProxyDriver: () => boolean;
export declare const runWithDirectQueueDriver: <T>(fn: () => Promise<T>) => Promise<T>;
/**
 * BullMQ Redis Queue Driver
 *
 * Implements the same interface as the basic Redis driver but uses BullMQ internally.
 * This provides enterprise features while maintaining full API compatibility.
 */
export declare const BullMQRedisQueue: IBullMQRedisQueue;
export default BullMQRedisQueue;
//# sourceMappingURL=BullMQRedisQueue.d.ts.map