WaClient é um emissor de eventos fortemente tipado. Cada atividade de entrada — mensagens, recibos, mudanças em grupos, presença — é exposta como um evento com um payload tipado.
Plugins podem contribuir com seus próprios eventos tipados; eles aparecem em
client.on apenas quando o plugin está no array plugins. Veja o guia de VoIP para um exemplo — seus eventos voip_* ficam disponíveis quando voipPlugin() está instalado.Escutando
on, once e off são todos verificados por tipo contra o mapa de eventos — o tipo do payload é inferido a partir do nome do evento, então os listeners têm autocomplete completo.
Auth e conexão
O evento
connection é uma union discriminada por status:
Mensagens
Veja Recebendo mensagens para detalhes do payload e extração de texto.
Mensagens indisponíveis
Algumas stanzas<message> recebidas carregam um marcador <unavailable/> no lugar de um corpo criptografado — uma view-once cujo conteúdo já foi consumido, ou uma mensagem hosted/bot que o servidor não conseguiu fazer fanout. Não há nada para decifrar, mas a chegada em si ainda é informação útil (audit logs, linhas “esta mensagem não está mais disponível” na UI). A lib ackeia e emite um evento tipado message_unavailable com discriminador kind:
Não há payload
message — o corpo realmente sumiu (ou nunca foi criptografado para este device).
Presença e chat-state
Grupos, newsletters e perfis
Estado, histórico e MEX
Kinds de notificação MEX
WaMexNotificationEvent é uma union discriminada por kind. Toda variante carrega operationName (a operação GraphQL upstream) e errors: readonly WaMexNotificationGraphQlError[] (quaisquer erros GraphQL que o servidor anexou — tipicamente vazio).
Os kinds
*_hint (username_update_hint, text_status_update_hint) trazem apenas um contactHash, não o valor novo — o servidor está dizendo “algo mudou para esse bucket” e o client é responsável por refetch pelo caminho normal de perfil / status.Companion host (mobile-primary)
Emitidos pelo coordinatorclient.mobile quando uma sessão mobile-primary linka, revoga ou falha ao provisionar um device companion. Os três só disparam em sessão mobile-primary.
Falhas
Eventos de debug
Uma família de eventosdebug_* expõe internals de baixo nível — frames brutos, nodes decodificados, erros de decode, stanzas não tratadas e erros do client. São úteis para depuração de protocolo, mas barulhentos; inscreva-se seletivamente.
Os eventos de registro mobile (
mobile_registration_code, mobile_account_takeover_notice) existem para o caminho de registro mobile e não fazem parte do fluxo companion padrão.