UNPKG

whatsapp-crm-common

Version:

Componentes compartidos para servicios de WhatsApp CRM - Common utilities and types for WhatsApp CRM system

72 lines 2.35 kB
import { RedisClient } from "../../config/redis-config"; import { WhatsAppEventType } from "../../events/types/event-types"; import { WhatsAppEvent } from "../../events/types/event-interfaces"; export interface PubSubOptions { subscriberPoolSize?: number; enableRetry?: boolean; retryAttempts?: number; } export interface NotificationData { type: 'notification' | 'broadcast' | 'alert'; event: WhatsAppEventType; data: any; timestamp: number; source: string; } /** * Sistema Pub/Sub para notificaciones en tiempo real * Complementa BullMQ para eventos no críticos que requieren baja latencia */ export declare class WhatsAppPubSubSystem { private publisher; private subscribers; private subscriberPool; private activeSubscriptions; private options; constructor(redisClient: RedisClient, options?: PubSubOptions); /** * Inicializa el pool de suscriptores para distribuir la carga */ private initializeSubscriberPool; /** * Publica un evento para notificaciones en tiempo real */ publishEvent(event: WhatsAppEvent): Promise<number>; /** * Publica una notificación específica para la UI */ publishNotification(event: WhatsAppEvent): Promise<void>; /** * Suscribirse a un patrón de canales */ subscribe(pattern: string, handler: (channel: string, event: WhatsAppEvent) => Promise<void>): Promise<void>; /** * Suscribirse a notificaciones de un tenant/agente específico */ subscribeToNotifications(tenantId: string, agentId: number, callback: (notification: NotificationData) => void): Promise<void>; /** * Broadcast a todos los usuarios de un tenant */ broadcastToTenant(tenantId: string, data: any): Promise<void>; /** * Obtiene estadísticas del sistema Pub/Sub */ getStats(): Promise<any>; /** * Desconectar una suscripción específica */ unsubscribe(tenantId: string, agentId: number): Promise<void>; /** * Cerrar todas las conexiones */ shutdown(): Promise<void>; /** * Obtiene el canal apropiado para un tipo de evento */ private getChannelForEvent; /** * Obtiene un suscriptor disponible del pool */ private getAvailableSubscriber; } //# sourceMappingURL=whatsapp-pubsub.d.ts.map