interface MailMessage { to: string; subject: string; body: string; html?: string; } interface MailDriver { send(message: MailMessage): Promise; } interface SmtpConfig { host: string; port: number; username?: string; password?: string; from: string; secure: boolean; } type SmtpTransport = (config: SmtpConfig, message: MailMessage) => Promise; declare function resolveSmtpConfig(): SmtpConfig; declare function assertSafeSmtpField(value: string, field: string): string; declare function smtpEnvelopeAddress(value: string, field: string): string; declare function assertSafeSmtpAddress(value: string, field: string): string; declare function redactMailBody(body: string): string; declare function defaultSmtpTransport(config: SmtpConfig, message: MailMessage): Promise; declare function buildSmtpPayload(from: string, message: MailMessage): string; declare class LogMailDriver implements MailDriver { send(message: MailMessage): Promise; } declare class SmtpMailDriver implements MailDriver { private readonly config; private readonly transport; constructor(config: SmtpConfig, transport?: SmtpTransport); send(message: MailMessage): Promise; } declare class Mailer { private readonly driver; constructor(driver: MailDriver); send(message: MailMessage): Promise; } declare function createMailDriver(): MailDriver; declare function mailer(): Mailer; export type { MailDriver, MailMessage, SmtpConfig, SmtpTransport }; export { assertSafeSmtpAddress, assertSafeSmtpField, buildSmtpPayload, createMailDriver, defaultSmtpTransport, LogMailDriver, Mailer, mailer, redactMailBody, resolveSmtpConfig, SmtpMailDriver, smtpEnvelopeAddress, };