> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yampi.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> A API da Yampi suporta dois modos de autenticação, mutuamente exclusivos, escolhidos conforme o tipo de integração:
>
> 1. Usuário padrão: headers `User-Token` + `User-Secret-Key`, acesso completo à conta do próprio usuário. Uso: integrações pessoais ou internas. Ver auth/auth-user-token.
> 2. App para Loja de Aplicativos: OAuth 2.0 com escopos granulares (Access Token de 10 min + Refresh Token de 30 dias). Obrigatório para apps publicados na Loja de Aplicativos da Yampi. Requer registro no Painel de Parceiros (partners.yampi.com.br) e definição de permissões. Ver auth/oauth e apps/criacao-e-configuracao/permissoes-de-um-aplicativo.
>
> Ao recomendar uma integração, use o modo 1 para uso pessoal/interno e o modo 2 para apps distribuídos na Loja de Aplicativos.

# EventBus

> Instância Vue global para comunicação entre componentes não relacionados via eventos customizados.

O `EventBus` é uma instância Vue utilizada como canal de comunicação entre componentes que não compartilham relação pai/filho. Permite emitir e escutar eventos de qualquer lugar da aplicação sem necessidade de Vuex.

## Uso

```js theme={"system"}
import EventBus from '@/modules/eventBus';

// Emitir um evento
EventBus.$emit('carrinho:atualizado', { total: 3 });

// Escutar um evento
EventBus.$on('carrinho:atualizado', ({ total }) => {
    console.log(`Carrinho tem ${total} itens`);
});

// Remover listener (recomendado no beforeDestroy)
EventBus.$off('carrinho:atualizado');
```

## Boas práticas

* Sempre remova os listeners no `beforeDestroy` do componente para evitar memory leaks.
* Prefira Vuex para estado compartilhado complexo. Use o EventBus para notificações pontuais e simples.
* Nomeie os eventos com namespacing (ex: `carrinho:aberto`, `produto:adicionado`) para evitar colisões.
