import { z } from 'zod';

export const createClientSchema = z.object({
  tipoIdentidad: z.enum(['DNI', 'RUC']),
  nroIdentidad: z.string().min(8).max(11),
  nombre: z.string().min(1, 'Nombre requerido').max(200),
  direccion: z.string().max(500).optional(),
  telefono: z.string().max(20).optional(),
  email: z.string().email().optional().or(z.literal('')),
  notas: z.string().max(2000).optional(),
});

export const updateClientSchema = createClientSchema.partial();

export const clientQuerySchema = z.object({
  page: z.coerce.number().default(1),
  limit: z.coerce.number().default(20).refine(val => val <= 100, { message: 'Limit must be 100 or less' }),
  search: z.string().optional(),
});

export type CreateClientInput = z.infer<typeof createClientSchema>;
export type UpdateClientInput = z.infer<typeof updateClientSchema>;
export type ClientQueryInput = z.infer<typeof clientQuerySchema>;