import { PrismaClient, UserEvent } from '@prisma/client';
import { BaseMailProvider } from './mail-provider/base-mail-provider';
import { MailProviderTemplate } from './mail-provider/mail-provider.interface';
import { MailControllerConfig } from './mail.controller';
export interface SendRemoteEMailProps {
    readonly remoteTemplate: string;
    readonly recipient: string;
    readonly mailLogID: string;
    readonly data: Record<string, any>;
}
export interface MailContextOptions {
    readonly defaultFromAddress: string;
    readonly defaultReplyToAddress?: string;
}
export interface MailContextInterface {
    defaultFromAddress: string;
    defaultReplyToAddress?: string;
    sendMail(opts: MailControllerConfig): Promise<void>;
}
export interface MailContextProps extends MailContextOptions {
    readonly mailProvider: BaseMailProvider;
    readonly prisma: PrismaClient;
}
export declare class MailContext implements MailContextInterface {
    mailProvider: BaseMailProvider;
    prisma: PrismaClient;
    defaultFromAddress: string;
    defaultReplyToAddress?: string;
    constructor(props: MailContextProps);
    sendMail(opts: MailControllerConfig): Promise<void>;
    sendRemoteTemplateDirect({ remoteTemplate, recipient, data, mailLogID }: SendRemoteEMailProps): Promise<void>;
    getUserTemplateName(event: UserEvent, throwOnMissing: true): Promise<string>;
    getUserTemplateName(event: UserEvent, throwOnMissing?: false): Promise<string | null>;
    getTemplates(): Promise<MailProviderTemplate[]>;
    getUsedTemplateIdentifiers(): Promise<string[]>;
}
