import { BaseAppConfig } from '../../app/config'; import type { ClassType } from '../../types'; import { ScopedLogger } from '../logger'; export declare abstract class MailTemplate { protected data: T; constructor(data: T); abstract subject: string; abstract generateHtml(): string; generateText(): string | void; } export type MailPriority = 'high' | 'normal' | 'low'; export interface MessageProperties { from?: { name?: string; address: string; }; to: { name?: string; address: string; }; replyTo?: { name?: string; address: string; }; subject: string; message: string; plainMessage?: string; /** Marks the message for clients that support high/normal/low priority. */ priority?: MailPriority; attachments?: { name: string; content: Buffer; contentType: string; cid?: string; }[]; } export interface TemplateMessageProperties extends Omit { template: ClassType>; data: T; } export interface PreparedMessageProperties extends Omit { to: string; from: string; replyTo?: string; } export interface MailProvider { send(message: PreparedMessageProperties): Promise; } export declare class MailService { private config; private logger; provider: MailProvider; constructor(config: BaseAppConfig, logger: ScopedLogger); send(params: MessageProperties): Promise; sendFromTemplate(params: TemplateMessageProperties): Promise; prepare(params: MessageProperties): PreparedMessageProperties; prepareFromTemplate(params: TemplateMessageProperties): PreparedMessageProperties; sendPrepared(message: PreparedMessageProperties): Promise; } //# sourceMappingURL=index.d.ts.map