/** * PubSub Manager - Centralized pub/sub operations for cache invalidation and async processing */ import { RedisManager } from "./redis-manager.js"; export interface CacheInvalidateMessage { memoryId: string; operation: string; timestamp?: number; } export interface JobCompleteMessage { jobId: string; result?: any; error?: string; } export interface MemoryProcessMessage { memoryId: string; priority: string; } export interface Job { resolve: (value: any) => void; reject: (reason: any) => void; timeout?: NodeJS.Timeout; createdAt: number; } export interface PendingMemory { priority: string; timestamp: number; } export declare class PubSubManager { private redisManager; private jobQueue; private pendingMemories; private handlers; private maxJobQueueSize; private defaultJobTimeout; constructor(redisManager: RedisManager, config?: { maxJobQueueSize?: number; defaultJobTimeout?: number; }); initialize(): Promise; private subscribe; publish(channel: string, data: any): Promise; private handleCacheInvalidation; private handleJobCompletion; registerHandler(channel: string, handler: (data: any) => void | Promise): void; createAsyncJob(jobId: string, timeoutMs?: number): Promise; invalidateCache(memoryId: string, operation?: string): Promise; completeJob(jobId: string, result?: any, error?: string): Promise; queueMemoryProcessing(memoryId: string, priority?: string): Promise; processPendingMemories(processor: (memoryId: string, priority: string) => Promise, maxAge?: number): Promise; getQueueStats(): { jobQueueSize: number; pendingMemoriesSize: number; oldestJob: number | null; handlers: string[]; }; cleanupStaleJobs(maxAge?: number): number; shutdown(): Promise; } //# sourceMappingURL=pubsub-manager.d.ts.map