export interface EmailEngagementCounts {
  openCount: number;
  clickCount: number;
  firstOpenedAt: Date | null;
}

export interface DerivedEmailEngagement {
  opened: boolean;
  openedAt: string | null;
  openCount: number;
  clickCount: number;
}

/**
 * "Aberto" é derivado apenas da existência de ao menos um evento OPEN registrado (pixel próprio
 * ou webhook nativo do SES) — não é uma medição 100% confiável de leitura humana (ver a
 * limitação documentada em `build-email-content.ts`), por isso o produto trata como abertura
 * "estimada". Um clique sem abertura correspondente (ex.: evento de clique do SES chegando sem
 * o evento de abertura) não conta como aberto — engajamento não é o mesmo que abertura.
 */
export function deriveEmailEngagement(counts: EmailEngagementCounts): DerivedEmailEngagement {
  return {
    opened: counts.openCount > 0,
    openedAt: counts.firstOpenedAt ? counts.firstOpenedAt.toISOString() : null,
    openCount: counts.openCount,
    clickCount: counts.clickCount,
  };
}
