import { z } from "zod";

/**
 * Comparateur Lead Form Validation Schema
 *
 * Validates lead capture form after comparison results:
 * - Email: RFC 5322 compliant, max 254 chars
 * - Phone: 8-20 characters (required)
 * - Company: 2-200 characters (required)
 * - Comparateur context: profil, typeEntreprise, conso, budget, savings, fournisseur
 * - RGPD: Must be checked
 * - Honeypot: Must be empty (anti-bot)
 */
export const comparateurLeadSchema = z.object({
  // Identity
  email: z.string().email("Adresse email invalide").max(254).toLowerCase(),
  phone: z.string().min(8, "Numéro trop court").max(20, "Numéro trop long"),
  company: z.string().min(2, "Nom d'entreprise trop court").max(200),

  // Comparateur context
  profil: z.enum(["C5", "C4", "C3"]),
  typeEntreprise: z.enum(["tpe-artisan", "pme", "eti-grand-compte", "copropriete-syndic"]),
  consommationMwh: z.coerce.number().positive(),
  budgetEstimateMin: z.coerce.number().nonnegative(),
  budgetEstimateMax: z.coerce.number().nonnegative(),
  savingsMax: z.coerce.number().nonnegative(),
  recommendedContract: z.string(),
  topFournisseur: z.string(),

  // Honeypot
  website: z.string().max(0, "Spam détecté").optional(),
});

export type ComparateurLeadData = z.infer<typeof comparateurLeadSchema>;

/**
 * Type for comparateur lead form state (used with useActionState)
 */
export type ComparateurLeadState = {
  errors?: {
    email?: string[];
    phone?: string[];
    company?: string[];
    _form?: string[];
  };
  success?: boolean;
  message?: string;
};
