// ============================================================
// IEmailProvider — 邮件发送 Provider 抽象接口
//
// 设计原则: 与 ISmsProvider 完全对称，便于扩展多渠道。
//
// 已实现的 Provider:
//   GmailProvider     — Gmail SMTP (production)
//                       需要: GMAIL_USER + GMAIL_APP_PASSWORD
//   ConsoleEmailProvider — 控制台打印 (development)
//                       EMAIL_ENABLED=false 时自动使用
//
// 切换逻辑 (auth.module.ts):
//   process.env.EMAIL_ENABLED === 'true'
//     ? GmailProvider : ConsoleEmailProvider
//
// 未来可扩展:
//   SendGridProvider  — 适合高并发营销邮件
//   SESProvider       — AWS SES，成本最低
//   AliyunEmailProvider — 阿里云邮件推送（与现有 SMS 账号统一管理）
// ============================================================

import { EmailVerificationType } from '../../domain/entities/email-verification.entity';

export interface EmailDeliveryResult {
  success: boolean;
  providerId?: string;
  errorMsg?: string;
}

export interface IEmailProvider {
  /**
   * 发送邮件验证码
   * @param email 目标邮箱
   * @param code 6位验证码
   * @param type 验证码类型
   */
  send(
    email: string,
    code: string,
    type: EmailVerificationType,
  ): Promise<EmailDeliveryResult>;
}

export const EMAIL_PROVIDER = Symbol('IEmailProvider');
