import { z } from 'zod';
/**
* Campos numéricos ficam como `z.number()` puro (sem `coerce`/`preprocess`)
* de propósito — a conversão string→number do ``
* acontece no `register(...)` do react-hook-form (`valueAsNumber`/
* `setValueAs`), não no schema. Misturar as duas coisas faz o tipo de
* entrada do formulário (`z.input`) divergir do tipo de saída (`z.infer`) e
* quebra a inferência de tipos do `zodResolver`.
*/
const optionalInt = z.number().int().min(1, 'Deve ser pelo menos 1').optional();
/** Espelha `CreatePlanoDto`/`UpdatePlanoDto` (`src/modules/planos/dto/`). */
export const planoSchema = z.object({
nome: z.string().min(2, 'Informe pelo menos 2 caracteres'),
descricao: z.string().optional(),
valor_mensal: z.number('Informe um valor').positive('O valor deve ser maior que zero'),
limite_customers: optionalInt,
limite_usuarios: optionalInt,
limite_instancias_whatsapp: optionalInt,
});
export type PlanoFormValues = z.infer;