import * as nodemailer from 'nodemailer';
import { EmailSettingsService } from '../email-settings/email-settings.service';
export interface AuditEmailContext {
    recipientName: string;
    auditCode: string;
    companyName: string;
    auditDate: string;
    auditTimeLabel?: string;
    auditorName?: string;
    standards?: string;
    scheduleId?: number;
    reason?: string;
    notes?: string;
    oldDate?: string;
    newDate?: string;
    triggeredByName?: string;
}
export declare class MailsService {
    private readonly emailSettings;
    private readonly logger;
    private transporter;
    private readonly userTransportCache;
    constructor(emailSettings: EmailSettingsService);
    private createTransporter;
    private getFromAddress;
    sendOtpEmail(email: string, otp: string, name: string, type: 'verify' | 'reset'): Promise<void>;
    sendApprovalEmail(email: string, name: string): Promise<void>;
    sendPasswordChangedEmail(email: string, name: string): Promise<void>;
    sendCustom(to: string, subject: string, html: string): Promise<void>;
    sendAuditPublishedEmail(to: string, ctx: AuditEmailContext): Promise<void>;
    sendAuditCancelledEmail(to: string, ctx: AuditEmailContext): Promise<void>;
    sendAuditRescheduledEmail(to: string, ctx: AuditEmailContext): Promise<void>;
    sendAuditBulkCancelledEmail(to: string, ctx: AuditEmailContext & {
        affectedCount?: number;
    }): Promise<void>;
    private wrapInQrsShell;
    private buildAuditDetailBlock;
    sendAsUser(userId: number | null, opts: {
        to: string | string[];
        subject: string;
        html?: string;
        text?: string;
        cc?: string | string[];
        bcc?: string | string[];
        replyTo?: string;
        attachments?: nodemailer.SendMailOptions['attachments'];
        scheme?: 'QRS' | 'TQS';
    }): Promise<void>;
    private getUserTransport;
}
