/** * @module queue/InMemoryQueueProvider * @description In-memory queue provider implementation using @vvlad1973/queues-manager */ import type { IQueueProvider, EnqueueOptions, QueueStats, SerializableTask, InMemoryQueueConfig } from '../types/queue.types.js'; import type { ILogger, ILoggerAware } from '../types/logger.types.js'; /** * Task executor function type */ export type TaskExecutor = () => Promise; /** * Register a task handler * @param type - Task type identifier * @param handler - Task handler function */ export declare function registerTaskHandler(type: string, handler: (payload: unknown) => Promise): void; /** * Unregister a task handler * @param type - Task type identifier * @returns True if handler was removed */ export declare function unregisterTaskHandler(type: string): boolean; /** * Clear all task handlers */ export declare function clearTaskHandlers(): void; /** * In-memory queue provider implementation * Uses @vvlad1973/queues-manager for queue management */ export declare class InMemoryQueueProvider implements IQueueProvider, ILoggerAware { private queues; private readonly config; private stats; private globalProcessingCount; private globalStartTime; /** Logger instance - mutable to support LoggerBinder.bind() */ logger?: ILogger; /** * Create a new InMemoryQueueProvider * @param config - Queue configuration */ constructor(config?: InMemoryQueueConfig); /** * Enqueue a task for execution * @param queueName - Queue identifier * @param task - Function to execute or serializable task * @param options - Enqueue options * @returns Promise with task result */ enqueue(queueName: string, task: TaskExecutor | SerializableTask, options?: EnqueueOptions): Promise; /** * Get queue statistics * @param queueName - Queue identifier * @returns Queue statistics */ getStats(queueName: string): Promise; /** * Close all queues and cleanup */ close(): Promise; /** * Get or create a queue * @param queueName - Queue identifier * @returns Queue instance */ private getOrCreateQueue; /** * Prepare task executor * @param task - Task function or serializable task * @param queueName - Queue name for error context * @returns Task executor function */ private prepareExecutor; /** * Process next task from queue * @param queue - Queue instance * @param queueName - Queue name * @returns Promise with task result */ private processNextTask; /** * Get all queue names * @returns Array of queue names */ getQueueNames(): string[]; /** * Get number of queues * @returns Number of queues */ getQueueCount(): number; /** * Check if queue exists * @param queueName - Queue name * @returns True if queue exists */ hasQueue(queueName: string): boolean; /** * Get global statistics across all queues * @returns Global statistics */ getGlobalStats(): Promise<{ totalQueues: number; totalCompleted: number; totalFailed: number; globalThroughput: number; }>; }