# Contratos, tipos y traductores

Genera clientes TypeScript y verifica cambios de contrato con adaptaciones de versiones anteriores.

Requiere WU CLI `1.2.0` y, para las APIs de las aplicaciones, WU Framework `4.0.0`. Comprueba `wu --version` y las dependencias del proyecto.

```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
```

Los archivos JSON contienen el mismo descriptor aceptado por `defineService`. La CLI carga `wu-framework/services` desde el proyecto, no desde una copia global. Cada archivo debe ser JSON válido y no superar `1 MiB`. `types` escribe declaraciones TypeScript en stdout o en un archivo `.d.ts` separado con `--out`.

Con varios contratos, los nombres son `ServiceClientV1`, `ServiceClientV2`, etc. Si comparten major, se incluye la versión completa, por ejemplo `ServiceClient_1_2_0`. `check` recibe exactamente el contrato anterior y el nuevo; no acepta `--out`. `types` no acepta `--json` ni `--translators`.

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

## Compatibilidad con traductores

El módulo de `--translators` exporta un array como `default` o `translators`. Cada entrada tiene `definition` y `methods`: el mismo contrato que recibe `provideService`. La comprobación mueve cambios cubiertos a `translated`; los cambios no cubiertos permanecen en `changes`. Usa [servicios versionados](/es/docs/framework/service-evolution/) para implementar y probar los traductores.

| Salida | Significado |
| --- | --- |
| `0` | Contrato compatible o tipos generados. |
| `1` | Cambios incompatibles sin cobertura. |
| `2` | Archivo, descriptor, dependencia u opción inválida. |

Un resultado compatible verifica la estructura de los contratos, no que tus funciones traductoras sean correctas para todos los valores. Ejecuta ejemplos de entrada y salida, errores de validación y permisos con el runtime antes de cambiar el proveedor.