whatsapp-crm-common
Version:
Componentes compartidos para servicios de WhatsApp CRM - Common utilities and types for WhatsApp CRM system
59 lines • 2.3 kB
TypeScript
import { WhatsAppMessageQueue } from "../../infrastructure/message-queue/redis-queue";
import { WhatsAppEvent, IEventPublisher } from "../types/event-interfaces";
import { QueueName } from "../types/event-types";
/**
* Publisher principal para eventos de WhatsApp
*/
export declare class EventPublisher implements IEventPublisher {
private messageQueue;
constructor(messageQueue: WhatsAppMessageQueue);
/**
* Publica un evento en la cola correspondiente
*/
publishEvent(event: WhatsAppEvent, queueName?: QueueName): Promise<void>;
/**
* Publica múltiples eventos en batch
*/
publishBatch(events: WhatsAppEvent[], queueName?: QueueName): Promise<void>;
/**
* Publica evento de mensajes nuevos recibidos
*/
publishMessageReceived(tenantId: string, agentId: number, messages: any[]): Promise<void>;
/**
* Publica evento de actualización de mensajes
*/
publishMessageUpdates(tenantId: string, agentId: number, updates: any[]): Promise<void>;
/**
* Publica evento de sincronización de historial
*/
publishHistorySync(tenantId: string, agentId: number, historyData: any, isPartial?: boolean): Promise<void>;
/**
* Publica evento de estado de conexión
*/
publishConnectionStatus(tenantId: string, agentId: number, connected: boolean, reason?: string, qrCode?: string): Promise<void>;
/**
* Publica evento de código QR generado
*/
publishQRCodeGenerated(tenantId: string, agentId: number, qrCode: string): Promise<void>;
/**
* Publica evento de notificación webhook
*/
publishWebhookNotification(tenantId: string, agentId: number, webhookUrl: string, payload: any, retryCount?: number): Promise<void>;
/**
* Publica evento de actualización de contactos
*/
publishContactUpdate(tenantId: string, agentId: number, contacts: any[], action?: "create" | "update" | "delete"): Promise<void>;
/**
* Publica múltiples eventos de mensajes nuevos en batch
*/
publishMessageBatch(events: Array<{
tenantId: string;
agentId: number;
messages: any[];
}>): Promise<void>;
/**
* Genera clave de sesión única
*/
private getSessionKey;
}
//# sourceMappingURL=event-publisher.d.ts.map