# Contratos, tipos e tradutores

Gere clientes TypeScript e verifique mudanças de contrato com adaptações para versões anteriores.

Requer WU CLI `1.2.0` e WU Framework `4.0.0` para as APIs das aplicações. Confira `wu --version` e as dependências do projeto.

```sh
wu contracts types counter-v1.json --out client.d.ts
wu contracts types counter-v1.json counter-v2.json --out clients.d.ts
wu contracts check counter-v1.json counter-v2.json --json
wu contracts check counter-v1.json counter-v2.json --translators translators.mjs --json
```

Os arquivos JSON contêm o descritor aceito por `defineService`. A CLI carrega `wu-framework/services` do projeto, não de uma cópia global. Cada arquivo precisa ser JSON válido e ter no máximo `1 MiB`. `types` escreve declarações TypeScript em stdout ou em um `.d.ts` separado com `--out`.

Com vários contratos, os nomes são `ServiceClientV1`, `ServiceClientV2` etc. Se compartilham a major, inclui a versão completa, como `ServiceClient_1_2_0`. `check` recebe exatamente o contrato anterior e o novo; não aceita `--out`. `types` não aceita `--json` nem `--translators`.

<span id="compatibilidad-con-traductores"></span>

<span class="section-anchor" id="section-1"></span>

## Compatibilidade com tradutores

O módulo de `--translators` exporta um array como `default` ou `translators`. Cada entrada tem `definition` e `methods`, como em `provideService`. A verificação move mudanças cobertas para `translated`; as demais ficam em `changes`. Use [serviços versionados](/pt/docs/framework/service-evolution/) para implementar e testar tradutores.

| Saída | Significado |
| --- | --- |
| `0` | Contrato compatível ou tipos gerados. |
| `1` | Mudanças incompatíveis sem cobertura. |
| `2` | Arquivo, descritor, dependência ou opção inválida. |

Um resultado compatível verifica a estrutura do contrato, não a correção dos tradutores para todos os valores. Teste exemplos de entrada e saída, falhas de validação e permissões no runtime antes de trocar o provedor.