import { Transport, SentMessageInfo } from 'nodemailer';
import { ApiClient, MessagesMessage, BaseRequest, MessagesSendTemplateRequest } from '@mailchimp/mailchimp_transactional';
import { Options } from 'nodemailer/lib/mailer';
import MailMessage from 'nodemailer/lib/mailer/mail-message';
import SendmailTransport from 'nodemailer/lib/sendmail-transport';

type MappableNodemailerFields = "from" | "to" | "cc" | "bcc" | "replyTo" | "subject" | "text" | "html" | "headers" | "priority";
type OverlappingMailchimpFields = "from_email" | "from_name" | "to" | "subject" | "html" | "text" | "headers" | "important" | "bcc_address";
interface MailchimpMessage extends Pick<Options, MappableNodemailerFields>, Omit<MessagesMessage, OverlappingMailchimpFields>, BaseRequest {
    template?: Pick<MessagesSendTemplateRequest, "template_content" | "template_name">;
    async?: boolean;
    ip_pool?: string;
    send_at?: string;
}
interface MailchimpTransportOptions {
    apiKey: string;
    senderMail?: string;
    senderName?: string;
}
declare class MailchimpTransport implements Transport {
    name: string;
    version: string;
    client: ApiClient;
    options: MailchimpTransportOptions;
    constructor(options: MailchimpTransportOptions);
    send(mail: MailMessage<SendmailTransport.SentMessageInfo>, callback: (err: Error | null, info?: SentMessageInfo) => void): void;
    private sendWithTemplate;
    private sendStandardEmail;
    private buildMailchimpMessage;
}
declare const MailchimpTransactionalTransport: (options: MailchimpTransportOptions) => MailchimpTransport;

export { type MailchimpMessage, MailchimpTransactionalTransport as default };
