import nodemailer from 'nodemailer';
import type { SendMailOptions, SentMessageInfo } from 'nodemailer';
interface Settings {
    defaultFrom: string;
    defaultReplyTo: string;
}
interface SendOptions {
    from?: string;
    to: string;
    cc?: string;
    bcc?: string;
    replyTo?: string;
    /** Address that appears in the Sender: field (for "on behalf of" emails) */
    sender?: SendMailOptions['sender'];
    subject: string;
    text?: string;
    html?: string;
    /** Apple Watch specific HTML version of the message */
    watchHtml?: SendMailOptions['watchHtml'];
    /** AMP4Email content for interactive emails */
    amp?: SendMailOptions['amp'];
    attachments?: SendMailOptions['attachments'];
    /**
     * Alternative content representations (e.g. Markdown alongside HTML).
     * Uses the same format as attachments. Email clients pick the best match.
     */
    alternatives?: SendMailOptions['alternatives'];
    /** Custom SMTP headers (e.g. X-Priority, X-Mailer, business-specific headers) */
    headers?: SendMailOptions['headers'];
    /** Email priority: 'high', 'normal', 'low' */
    priority?: SendMailOptions['priority'];
    /** Custom Message-ID value (random value generated if not set) */
    messageId?: SendMailOptions['messageId'];
    /** Custom Date value (current UTC string used if not set) */
    date?: SendMailOptions['date'];
    /** Control or disable the X-Mailer header (false to remove, string to override) */
    xMailer?: SendMailOptions['xMailer'];
    /** Message-ID of the email being replied to (for conversation threading) */
    inReplyTo?: SendMailOptions['inReplyTo'];
    /** Message-ID list this email references (for conversation threading) */
    references?: SendMailOptions['references'];
    /** Force content-transfer-encoding: 'quoted-printable' or 'base64' */
    textEncoding?: SendMailOptions['textEncoding'];
    /** Encoding for the message (e.g. 'base64', 'hex') */
    encoding?: SendMailOptions['encoding'];
    /** Method to normalize header key casing */
    normalizeHeaderKey?: SendMailOptions['normalizeHeaderKey'];
    /**
     * Calendar event invitation (iCalendar format).
     * @example { method: 'REQUEST', content: icsString }
     */
    icalEvent?: SendMailOptions['icalEvent'];
    /**
     * RFC 2369 List-* headers for mailing lists and newsletters.
     * Email clients like Gmail/Outlook show an "Unsubscribe" button when set.
     * @example { unsubscribe: { url: 'https://example.com/unsubscribe', comment: 'Unsubscribe' } }
     */
    list?: SendMailOptions['list'];
    /**
     * Custom SMTP envelope for controlling MAIL FROM and RCPT TO independently.
     * @example { from: 'bounce+123@example.com', to: 'recipient@example.com' }
     */
    envelope?: SendMailOptions['envelope'];
    /** Per-message DKIM signing options (overrides transport-level DKIM) */
    dkim?: SendMailOptions['dkim'];
    /** Convert data: URIs in HTML to embedded CID attachments automatically */
    attachDataUrls?: SendMailOptions['attachDataUrls'];
    /** Fail with an error when content tries to load from a URL */
    disableUrlAccess?: SendMailOptions['disableUrlAccess'];
    /** Fail with an error when content tries to load from a file path */
    disableFileAccess?: SendMailOptions['disableFileAccess'];
    /**
     * Pre-built MIME message. When set, skips message generation entirely.
     * Address headers and envelope must still be set separately.
     */
    raw?: SendMailOptions['raw'];
    /**
     * Delivery Status Notification (DSN) configuration.
     * @example { id: 'msg-123', return: 'headers', notify: 'success', recipient: 'sender@example.com' }
     */
    dsn?: {
        id?: string;
        return?: 'headers' | 'full';
        notify?: string | string[];
        recipient?: string;
    };
    /**
     * Per-message OAuth2 authentication for sending on behalf of different users.
     * Requires the transporter to be configured with type: 'OAuth2'.
     * @example { user: 'user@gmail.com', refreshToken: '1/xxx', accessToken: 'ya29.xxx' }
     */
    auth?: {
        user?: string;
        refreshToken?: string;
        accessToken?: string;
        expires?: number;
    };
}
type ProviderOptions = Parameters<typeof nodemailer.createTransport>[0];
interface ProviderCapabilities {
    transport?: {
        host?: string;
        port?: number;
        secure?: boolean;
        pool?: boolean;
        maxConnections?: number;
    };
    auth?: {
        type?: string;
        user?: string;
    };
    features?: string[];
}
declare const _default: {
    init(providerOptions: ProviderOptions, settings: Settings): {
        send(options: SendOptions): Promise<SentMessageInfo>;
        verify(): Promise<true>;
        isIdle(): boolean;
        close(): void;
        getCapabilities(): ProviderCapabilities;
    };
};
export default _default;
//# sourceMappingURL=index.d.ts.map