/**
 * Multi-Queue Worker Support
 * Enable workers to process multiple queues with different priorities
 * Sealed namespace for immutability
 */
import { type Job } from 'bullmq';
export type QueueConfig = {
    name: string;
    concurrency: number;
    priority: number;
    enabled: boolean;
    rateLimit?: {
        max: number;
        duration: number;
    };
};
export type MultiQueueWorkerConfig = {
    workerName: string;
    queues: QueueConfig[];
    processor: (job: Job) => Promise<unknown>;
    sharedConcurrency?: number;
    defaultConcurrency?: number;
};
export type QueueStats = {
    queueName: string;
    processed: number;
    failed: number;
    active: number;
    waiting: number;
    enabled: boolean;
    lastProcessedAt?: Date;
};
/**
 * Multi-Queue Worker Manager - Sealed namespace
 */
export declare const MultiQueueWorker: Readonly<{
    /**
     * Create multi-queue worker
     */
    create(config: MultiQueueWorkerConfig): Promise<void>;
    /**
     * Start processing for a specific queue
     */
    startQueue(workerName: string, queueName: string): Promise<void>;
    /**
     * Stop processing for a specific queue
     */
    stopQueue(workerName: string, queueName: string): Promise<void>;
    /**
     * Start all queues
     */
    startAll(workerName: string): Promise<void>;
    /**
     * Stop all queues
     */
    stopAll(workerName: string): Promise<void>;
    /**
     * Update queue priority
     */
    updateQueuePriority(workerName: string, queueName: string, priority: number): void;
    /**
     * Update queue concurrency
     */
    updateQueueConcurrency(workerName: string, queueName: string, concurrency: number): Promise<void>;
    /**
     * Get stats for a queue
     */
    getQueueStats(workerName: string, queueName: string): Promise<QueueStats>;
    /**
     * Get stats for all queues
     */
    getAllStats(workerName: string): Promise<ReadonlyArray<QueueStats>>;
    /**
     * Get configuration
     */
    getConfig(workerName: string): MultiQueueWorkerConfig | null;
    /**
     * List all multi-queue workers
     */
    list(): string[];
    /**
     * Remove multi-queue worker
     */
    remove(workerName: string): Promise<void>;
    /**
     * Shutdown all multi-queue workers
     */
    shutdown(): Promise<void>;
}>;
//# sourceMappingURL=MultiQueueWorker.d.ts.map