import env from '#start/env'
import { defineConfig, transports } from '@adonisjs/mail'
import type { InferMailers } from '@adonisjs/mail/types'

const mailConfig = defineConfig({
  default: env.get('MAIL_DRIVER', 'smtp'),

  from: {
    address: env.get('MAIL_FROM_ADDRESS', 'relances@rubis.pro'),
    name: env.get('MAIL_FROM_NAME', "Rubis sur l'ongle"),
  },

  /**
   * Variables partagées par tous les templates Edge (logo, URL de base…).
   */
  globals: {
    brandName: "Rubis sur l'ongle",
    appUrl: env.get('APP_URL'),
  },

  mailers: {
    /**
     * SMTP — Mailpit en dev (catch-all sur localhost:1025), n'importe quel
     * relais SMTP en prod si on ne veut pas de provider tiers.
     */
    smtp: transports.smtp({
      host: env.get('SMTP_HOST', 'localhost'),
      port: env.get('SMTP_PORT', 1025),
      // Auth optionnelle — pas requise pour Mailpit
    }),

    /**
     * Resend — provider transactionnel par défaut en prod (cf. ADR-021).
     */
    resend: transports.resend({
      key: env.get('RESEND_API_KEY', ''),
      baseUrl: 'https://api.resend.com',
    }),
  },
})

export default mailConfig

declare module '@adonisjs/mail/types' {
  export interface MailersList extends InferMailers<typeof mailConfig> {}
}
