/** Tipos de evento disponibles para defineWorker */
export type PlazbotEventType = 'message.received' | 'message.image.received' | 'message.audio.received' | 'message.document.received' | 'contact.created' | 'contact.existing' | 'contact.deleted' | 'contact.blocked' | 'contact.from.ad' | 'conversation.assigned' | 'conversation.resolved' | 'conversation.reopened';
/** Plataforma de origen del mensaje */
export type MessagePlatform = 'whatsapp' | 'telegram' | 'instagram' | 'webchat';
/** Tipo de contenido del mensaje */
export type MessageContentType = 'text' | 'image' | 'audio' | 'document' | 'video' | 'location' | 'sticker';
/** Contacto dentro de un evento */
export interface EventContact {
    id: string;
    name?: string;
    phoneNumber?: string;
    email?: string;
    tags?: string[];
    stage?: string;
    assignedAgentId?: string;
    assignedAgentName?: string;
    variables?: Record<string, string>;
}
/** Mensaje dentro de un evento */
export interface EventMessage {
    id: string;
    content?: string;
    contentUrl?: string;
    contentType: MessageContentType;
    platform: MessagePlatform;
    direction: 'incoming' | 'outgoing';
    timestamp: string;
    metadata?: Record<string, unknown>;
}
/** Conversacion dentro de un evento */
export interface EventConversation {
    contactId: string;
    isSolved: boolean;
    assignedAgentId?: string;
    assignedMemberId?: string;
    lastMessageAt?: string;
}
/** Datos del evento */
export interface PlazbotEventData {
    contact?: EventContact;
    message?: EventMessage;
    conversation?: EventConversation;
    /** Datos adicionales segun el tipo de evento */
    metadata?: Record<string, unknown>;
}
/** Evento completo de Plazbot */
export interface PlazbotEvent {
    type: PlazbotEventType;
    workspaceId: string;
    timestamp: string;
    data: PlazbotEventData;
}
