/** * @module queue/QueueProviderFactory * @description Factory for creating queue provider instances */ import { QueueProviderType } from '../types/queue.types.js'; import type { IQueueProvider, QueueProviderConfig, InMemoryQueueConfig, RabbitMQQueueConfig } from '../types/queue.types.js'; /** * Factory options for creating queue providers */ export interface QueueProviderFactoryOptions { /** Provider type */ type: QueueProviderType; /** Provider-specific configuration */ config: QueueProviderConfig; } /** * Factory for creating queue provider instances * Supports switching between in-memory and RabbitMQ implementations */ export declare class QueueProviderFactory { /** * Create a queue provider instance * @param options - Factory options * @returns Queue provider instance */ static create(options: QueueProviderFactoryOptions): IQueueProvider; /** * Create in-memory queue provider * @param config - In-memory queue configuration * @returns In-memory queue provider */ private static createInMemoryProvider; /** * Create RabbitMQ queue provider * @param config - RabbitMQ queue configuration * @returns RabbitMQ queue provider */ private static createRabbitMQProvider; /** * Create provider from environment variables * @returns Queue provider instance */ static createFromEnv(): IQueueProvider; } /** * Helper function to create in-memory provider with default config * @param config - Optional configuration overrides * @returns In-memory queue provider */ export declare function createInMemoryProvider(config?: Partial): IQueueProvider; /** * Helper function to create RabbitMQ provider with config * @param config - RabbitMQ configuration * @returns RabbitMQ queue provider */ export declare function createRabbitMQProvider(config: RabbitMQQueueConfig): IQueueProvider;