import { z } from "zod";

const smtpFields = {
  name: z.string().trim().min(2, "Nome deve ter ao menos 2 caracteres"),
  fromEmail: z.string().trim().toLowerCase().email("E-mail inválido"),
  provider: z.literal("SMTP"),
  smtpHost: z.string().trim().min(1, "Host SMTP obrigatório"),
  smtpPort: z.coerce.number().int().positive("Porta inválida"),
  smtpUser: z.string().trim().min(1, "Usuário SMTP obrigatório"),
  smtpPass: z.string().trim().optional(),
};

const sesFields = {
  name: z.string().trim().min(2, "Nome deve ter ao menos 2 caracteres"),
  fromEmail: z.string().trim().toLowerCase().email("E-mail inválido"),
  provider: z.literal("SES"),
  domainId: z.string().min(1, "Selecione um domínio verificado"),
};

export const updateSenderSchema = z.discriminatedUnion("provider", [
  z.object(smtpFields),
  z.object(sesFields),
]);

export type UpdateSenderInput = z.infer<typeof updateSenderSchema>;
