/**
 * Email Service Module
 *
 * Public API for all email-related functionality.
 *
 * Module Structure:
 * - core.ts: SMTP configuration and sending (with queue support)
 * - types.ts: Shared type definitions
 * - templates/: Email HTML template generators
 *   - transactional-templates.ts: OTP, welcome, password reset
 *   - demo-templates.ts: Demo booking emails
 *   - careers-templates.ts: Job applications and interviews
 *   - contact-templates.ts: Contact form emails
 * - services/: High-level email sending functions
 *   - transactional.service.ts: Auth and onboarding emails
 *   - demo.service.ts: Demo booking emails
 *   - careers.service.ts: Hiring emails
 *   - contact.service.ts: Contact form emails
 * - notifications.ts: Notification flows (existing)
 */

// =============================================================================
// Core Exports
// =============================================================================

export {
  sendEmail,
  sendEmailImmediate,
  sendEmailWithSender,
  sendBulkEmail,
  transporter,
  FROM_EMAIL,
  type EmailTemplate,
} from './core';

// =============================================================================
// Type Exports
// =============================================================================

export type {
  EmailTemplate as EmailTemplateType,
  Language,
  OtpPurpose,
  InterviewDetails,
  StaffContactNotificationData,
} from './types';

// =============================================================================
// Template Exports (existing templates.ts)
// =============================================================================

export {
  createOTPEmail,
  createWelcomeEmail,
  createPasswordResetEmail,
  createDemoConfirmationEmail,
  createSignupWelcomeEmail,
} from './templates';

// =============================================================================
// Demo Template Exports
// =============================================================================

export {
  createDemoBookingReceivedEmail,
  createDemoReminderEmail,
} from './templates/demo-templates';

// =============================================================================
// Careers Template Exports
// =============================================================================

export {
  createJobApplicationConfirmationEmail,
  createInterviewInvitationEmail,
  createInterviewConfirmationEmail,
  createInterviewReminderEmail,
  createInterviewCancellationEmail,
} from './templates/careers-templates';

// =============================================================================
// Contact Template Exports
// =============================================================================

export {
  createContactThankYouEmail,
  createStaffContactNotificationEmail,
} from './templates/contact-templates';

// =============================================================================
// Transactional Service Exports
// =============================================================================

export {
  sendOTPEmail,
  sendWelcomeEmail,
  sendPasswordResetEmail,
} from './services/transactional.service';

// =============================================================================
// Demo Service Exports
// =============================================================================

export {
  sendDemoBookingReceivedEmail,
  sendDemoConfirmationEmail,
  sendDemoReminderEmail,
} from './services/demo.service';

// =============================================================================
// Careers Service Exports
// =============================================================================

export {
  sendJobApplicationConfirmationEmail,
  sendInterviewInvitationEmail,
  sendInterviewConfirmationEmail,
  sendInterviewReminderEmail,
  sendInterviewCancellationEmail,
} from './services/careers.service';

// =============================================================================
// Contact Service Exports
// =============================================================================

export {
  sendContactThankYouEmail,
  sendStaffContactNotification,
} from './services/contact.service';

// =============================================================================
// Notification Exports (existing)
// =============================================================================

export {
  sendOTPNotification,
  sendLoginOTP,
  sendSignupOTP,
  sendPasswordResetOTP,
  sendWelcomeNotification,
  sendDemoConfirmation,
  sendTrialExpiringNotification,
  sendTrialExpiredNotification,
} from './notifications';
