export type SendEmailInput = {
  to: string[];
  subject: string;
  html: string;
  text: string;
  from: string;
  replyTo?: string;
  tags?: { name: string; value: string }[];
  headers?: Record<string, string>;
};

export type SendEmailResult = {
  provider: string;
  messageIds: string[];
  raw: unknown;
};

export type EmailEvent = {
  provider: string;
  eventType: string;
  externalId: string | null;
  recipient: string | null;
  payload: unknown;
};

export interface EmailProvider {
  sendTestEmail(input: SendEmailInput): Promise<SendEmailResult>;
  sendCampaignBatch(input: SendEmailInput): Promise<SendEmailResult>;
  parseWebhookEvent(headers: Record<string, string | undefined>, body: string): Promise<EmailEvent | null>;
}
