import { Queue, QueueOptions } from "bullmq";
import { Redis } from "ioredis";
/**
 * Message Queue Management Class
 */
export declare class Queues {
    private _connection;
    /**
     * Initialize a Queues instance with the Redis connection to use
     * @param {Redis} connection the Redis connection to use
     */
    constructor(connection: Redis);
    /**
     * Create a new queue
     * @param {string} queue_name the name to give the queue instance
     * @param {QueueOptions} options additional options to give the queue
     * @returns {Queue<unknown, unknown, string> | void}
     */
    create: (queue_name: string, options?: QueueOptions) => Queue<unknown, unknown, string> | void;
    /**
     * Drain a queue instance of all pending jobs
     * @param {Queue} queue The queue instance to drain
     * @returns {Promise<boolean>}
     */
    drain: (queue: Queue) => Promise<boolean>;
    /**
     * Pause job execution on a queue. Jobs can be added but will not be processed until queue is unpaused
     * @param {Queue} queue The queue instance to pause
     * @returns {Promise<boolean>} Boolean indication if queue was paused
     */
    pause: (queue: Queue) => Promise<boolean>;
    /**
     * Continue job execution on a queue that is paused.
     * @param queue The queue instance to unpause.
     * @returns {Promise<boolean>} Boolean indication if queue was unpaused
     */
    resume: (queue: Queue) => Promise<boolean>;
    /**
     * Delete a queue from Redis.
     * @param queue The queue instance to delete
     * @returns {Promise<boolean>}
     */
    delete: (queue: Queue) => Promise<boolean>;
}
