/**
 * Type definitions for the easy-email library
 */

// Core email types
export type {
  EmailOptions,
  EmailResponse,
  EmailRecipient,
  EmailAttachment,
  SmtpConfig,
  SendGridConfig,
  SesConfig,
  EmailProviderConfig,
  EmailProviderType,
} from '../interfaces/email-options.interface';

// Request/Response types
export type {
  EmailRequest,
  EmailRequestAttachment,
  EmailRequestResponse,
  EmailValidationResult,
} from '../interfaces/email-request.interface';

// Observability types
export type {
  ObservabilityConfig,
  EmailMetrics,
  EmailEvent,
  AuditLog,
} from '../interfaces/observability.interface';

// SES-specific types
export type {
  SesErrorType,
  SesMetrics,
  SesQuotaData,
  SesStatisticsData,
  SesEmailEvent,
  SesConnectionEvent,
  SesQuotaEvent,
  SesStatisticsEvent,
  SesErrorEvent,
} from './ses.types';

// SendGrid-specific types
export type {
  SendGridErrorType,
  SendGridMetrics,
  SendGridQuotaData,
  SendGridStatisticsData,
  SendGridEmailEvent,
  SendGridConnectionEvent,
  SendGridQuotaEvent,
  SendGridStatisticsEvent,
  SendGridErrorEvent,
  SendGridApiResponse,
  SendGridEmailContent,
  SendGridPersonalization,
  SendGridMailSettings,
  SendGridTrackingSettings,
} from './sendgrid.types';

// Error types
export {
  EmailServiceError,
  ConfigurationError,
  ProviderError,
  ValidationError,
  TemplateError,
  RetryError,
  TimeoutError,
  RateLimitError,
  AuthenticationError,
  NetworkError,
  InvalidEmailError,
  MissingRequiredFieldError,
  InvalidTemplateError,
  TemplateNotFoundError,
  ConnectionError,
  QuotaExceededError,
  SpamDetectionError,
} from '../errors';

// Constants
export {
  EMAIL_CONSTANTS,
  OBSERVABILITY_CONSTANTS,
} from '../config/constants';

// SES-specific constants
export {
  SES_ERROR_TYPES,
  SES_ERROR_CODES,
  SES_DEFAULT_CONFIG,
} from './ses.types';

// SendGrid-specific constants
export {
  SENDGRID_ERROR_TYPES,
  SENDGRID_ERROR_CODES,
  SENDGRID_DEFAULT_CONFIG,
} from './sendgrid.types';
