/**
 * Constants for the easy-email library
 */

export const EMAIL_CONSTANTS = {
  // Validation messages
  VALIDATION_MESSAGES: {
    SENDER_REQUIRED: 'Sender email is required',
    RECIPIENT_REQUIRED: 'Recipient is required',
    SUBJECT_REQUIRED: 'Subject is required',
    NO_PROVIDER_CONFIGURED: 'No email provider configured',
    SMTP_NOT_CONFIGURED: 'SMTP transporter not configured',
    SES_REGION_REQUIRED: 'SES region is required',
    SES_CREDENTIALS_REQUIRED: 'SES credentials are required',
  },

  // Error codes
  ERROR_CODES: {
    VALIDATION_ERROR: 'VALIDATION_ERROR',
    CONFIG_ERROR: 'CONFIG_ERROR',
    PROVIDER_ERROR: 'PROVIDER_ERROR',
    CONNECTION_FAILED: 'CONNECTION_FAILED',
    SES_ERROR: 'SES_ERROR',
  },

  // Provider types
  PROVIDER_TYPES: {
    SMTP: 'smtp',
    SENDGRID: 'sendgrid',
    SES: 'ses',
  },

  // Template constants
  TEMPLATE: {
    VARIABLE_REGEX: /{{\s*(\w+)\s*}}/g,
    DEFAULT_EXTENSION: '.html',
  },

  // Email content types
  CONTENT_TYPES: {
    TEXT_PLAIN: 'text/plain',
    TEXT_HTML: 'text/html',
  },

  // Default values
  DEFAULTS: {
    FROM_NAME: '',
    ATTACHMENT_DISPOSITION: 'attachment',
  },

  // Log messages
  LOG_MESSAGES: {
    EMAIL_SENT: 'Email sent successfully',
    EMAIL_FAILED: 'Failed to send email',
    CONNECTION_VERIFIED: 'Connection verified successfully',
    CONNECTION_FAILED: 'Connection verification failed',
  },
} as const;

export const OBSERVABILITY_CONSTANTS = {
  // Event types
  EVENT_TYPES: {
    EMAIL_SENT: 'email_sent',
    EMAIL_FAILED: 'email_failed',
    CONNECTION_VERIFIED: 'connection_verified',
    CONNECTION_FAILED: 'connection_failed',
  },

  // Provider names
  PROVIDER_NAMES: {
    SMTP: 'smtp',
    SENDGRID: 'sendgrid',
    SES: 'ses',
  },

  // Metrics keys
  METRICS_KEYS: {
    TOTAL_SENT: 'totalSent',
    TOTAL_FAILED: 'totalFailed',
    SUCCESS_RATE: 'successRate',
    AVERAGE_SEND_TIME: 'averageSendTime',
  },
} as const; 