import { Mailable } from './Mailable.mjs'; import { MailerProvider } from './MailerProvider.mjs'; import { EventEmittor } from '@devbro/neko-helper'; /** Available mailer events */ declare const MailerEvents: string[]; /** Type representing mailer events */ type MailerEvent = (typeof MailerEvents)[number]; /** * Main mailer class for sending emails with event support. * Provides a unified interface for sending emails through various providers * with event notifications for sent and failed emails. */ declare class Mailer implements EventEmittor<["sent", "failed"]> { private provider; private eventManager; /** * Creates a new Mailer instance. * @param provider - The mailer provider to use for sending emails */ constructor(provider: MailerProvider); /** * Registers an event listener. * @param event - The event to listen for ('sent' or 'failed') * @param listener - The callback function to execute when the event occurs * @returns This mailer instance for chaining */ on(event: MailerEvent, listener: (...args: any[]) => void): this; /** * Removes an event listener. * @param event - The event to stop listening for * @param listener - The callback function to remove * @returns This mailer instance for chaining */ off(event: MailerEvent, listener: (...args: any[]) => void): this; /** * Emits an event to all registered listeners. * @param event - The event to emit * @param args - Arguments to pass to the listeners * @returns True if the event was emitted successfully */ emit(event: MailerEvent, ...args: any[]): Promise; /** * Sends an email message. * Emits 'sent' event on success or 'failed' event on error. * @param mail - The email message to send * @throws The error from the provider if sending fails */ send(mail: Mailable): Promise; } export { Mailer, type MailerEvent, MailerEvents };