import { z } from "zod";

/**
 * Simulateur Lead Form Validation Schema
 *
 * Validates lead capture form after simulation results:
 * - Email: RFC 5322 compliant, max 254 chars
 * - Phone: 8-20 characters (required)
 * - Company: 2-200 characters (required)
 * - RGPD: Must be checked
 * - Honeypot: Must be empty (anti-bot)
 */
export const simulateurLeadSchema = z.object({
  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),
  nafCode: z.string(),
  annualConsumptionMWh: z.coerce.number().positive(),
  estimatedSavings: z.coerce.number().nonnegative(),
  bestTierCode: z.string().optional(),
  website: z.string().max(0, "Spam détecté").optional(),
});

export type SimulateurLeadData = z.infer<typeof simulateurLeadSchema>;

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