import type { PayloadEmailAdapter } from 'payload'; import { type GraphAdapterArgs } from './graphAdapter.js'; import { type PanelSmtpAdapterArgs } from './panelSmtpAdapter.js'; export type MailAdapterArgs = { fallbackFromAddress?: string; fallbackFromName?: string; graph?: GraphAdapterArgs; smtp?: PanelSmtpAdapterArgs; }; /** * Dispatcher email adapter: wired into the config ONCE, but picks the transport * (SMTP or Graph) per send by reading `emailTransport` from SiteIntegrations. * This is what makes the choice switchable in the panel — Payload builds the * email adapter at boot and can't swap it at runtime, so instead of choosing * between two adapters at boot we install one that delegates on every send. * * Availability guard: Graph only runs if its agency credentials exist in env * (this is *our* Exchange). If the panel says 'graph' but env isn't set up, * we DON'T silently fail — we log clearly and fall back to SMTP, so a client * flipping the switch without the backing config still gets mail out (over SMTP) * rather than silent nothing. If neither is usable, the send reports an error. * * @example * // payload.config.ts * import { mailAdapter } from '@intecion/ipal-kit' * email: mailAdapter() */ export declare const mailAdapter: (args?: MailAdapterArgs) => PayloadEmailAdapter;