/**
 * @example
 *     {
 *         htmlContent: "<html><head></head><body><p>Hello,</p>This is my first transactional email sent from Brevo.</p></body></html>",
 *         sender: {
 *             email: "hello@brevo.com",
 *             name: "Alex from Brevo"
 *         },
 *         subject: "Hello from Brevo!",
 *         to: [{
 *                 email: "johndoe@example.com",
 *                 name: "John Doe"
 *             }]
 *     }
 *
 * @example
 *     {
 *         htmlContent: "<html><head></head><body>Your delivery is expected {{params.estimatedArrival}}.Your tracking code: {{params.trackingCode}}</p></body></html>",
 *         params: {
 *             "trackingCode": "JD01460000300002350000",
 *             "estimatedArrival": "Tomorrow"
 *         },
 *         sender: {
 *             email: "hello@brevo.com",
 *             name: "Alex from Brevo"
 *         },
 *         subject: "Hello from Brevo!",
 *         to: [{
 *                 email: "johndoe@example.com",
 *                 name: "John Doe"
 *             }]
 *     }
 */
export interface SendTransacEmailRequest {
    /** Array of attachment objects. Each attachment must include either an absolute URL (no local file paths) or base64-encoded content, along with the attachment filename. The `name` field is required when `content` is provided. Supported file extensions: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub, eps, odt, mp3, m4a, m4v, wma, ogg, flac, wav, aif, aifc, aiff, mp4, mov, avi, mkv, mpeg, mpg, wmv, pkpass, xlsm. When `templateId` is specified: if the template uses the New Template Language format, both `url` and `content` attachment types are supported; if the template uses the Old Template Language format, the `attachment` parameter is ignored. */
    attachment?: SendTransacEmailRequest.Attachment.Item[];
    /** UUIDv4 identifier for the scheduled batch of transactional emails. If omitted, a valid UUIDv4 batch identifier is automatically generated. */
    batchId?: string;
    /** Array of BCC recipient objects. Each object contains an email address and an optional name. */
    bcc?: SendTransacEmailRequest.Bcc.Item[];
    /** Array of CC recipient objects. Each object contains an email address and an optional name. */
    cc?: SendTransacEmailRequest.Cc.Item[];
    /** Custom email headers (non-standard headers) to include in the email. The `sender.ip` header can be set to specify the IP address used for sending transactional emails (dedicated IP users only). Header names must use Title-Case-Format (words separated by hyphens with the first letter of each word capitalized). Headers not in this format are automatically converted. Standard email headers are not supported. Example: `{"sender.ip":"1.2.3.4", "X-Mailin-custom":"some_custom_value", "Idempotency-Key":"abc-123"}` */
    headers?: Record<string, unknown>;
    /** HTML body content of the email. Required when `templateId` is not provided. Ignored when `templateId` is provided. */
    htmlContent?: string;
    /** Array of message version objects for sending customized email variants. The `templateId` can be customized per version only if a global `templateId` is provided. The `htmlContent` and `textContent` can be customized per version only if at least one of these is present in the global parameters. Global parameters such as `to` (required), `bcc`, `cc`, `replyTo`, and `subject` can be customized per version. Maximum total recipients per API request is 2000. Maximum recipients per message version is 99. Individual `params` objects must not exceed 100 KB. Cumulative `params` across all versions must not exceed 1000 KB. See https://developers.brevo.com/docs/batch-send-transactional-emails for detailed usage instructions. */
    messageVersions?: SendTransacEmailRequest.MessageVersions.Item[];
    /** Key-value pairs for template variable substitution. Only applicable when the template uses the New Template Language format. */
    params?: Record<string, unknown>;
    /** Reply-to email address (required) and optional display name. Recipients will use this address when replying to the email. */
    replyTo?: SendTransacEmailRequest.ReplyTo;
    /** UTC date-time when the email should be sent (format: YYYY-MM-DDTHH:mm:ss.SSSZ). Include timezone information in the date-time value. Scheduled emails may be delayed by up to 5 minutes. */
    scheduledAt?: string;
    /** Sender information. Required when `templateId` is not provided. Specify either an email address (with optional name) or a sender ID. The `name` field is ignored when `id` is provided. */
    sender?: SendTransacEmailRequest.Sender;
    /** Email subject line. Required when `templateId` is not provided. */
    subject?: string;
    /** Array of tags for categorizing and filtering emails */
    tags?: string[];
    /** Template identifier */
    templateId?: number;
    /** Plain text body content of the email. Ignored when `templateId` is provided. */
    textContent?: string;
    /** Array of recipient objects. Each object contains an email address and an optional display name. Required when `messageVersions` is not provided. Ignored when `messageVersions` is provided. Example: `[{"name":"Jimmy", "email":"jimmy@example.com"}, {"name":"Joe", "email":"joe@example.com"}]` */
    to?: SendTransacEmailRequest.To.Item[];
}
export declare namespace SendTransacEmailRequest {
    type Attachment = Attachment.Item[];
    namespace Attachment {
        interface Item {
            /** Base64-encoded attachment data */
            content?: string | undefined;
            /** Attachment filename. Required when `content` is provided. */
            name?: string | undefined;
            /** Absolute URL of the attachment. Local file paths are not supported. */
            url?: string | undefined;
        }
    }
    type Bcc = Bcc.Item[];
    namespace Bcc {
        interface Item {
            /** BCC recipient email address */
            email: string;
            /** Display name of the BCC recipient. Maximum length is 70 characters. */
            name?: string | undefined;
        }
    }
    type Cc = Cc.Item[];
    namespace Cc {
        interface Item {
            /** CC recipient email address */
            email: string;
            /** Display name of the CC recipient. Maximum length is 70 characters. */
            name?: string | undefined;
        }
    }
    type MessageVersions = MessageVersions.Item[];
    namespace MessageVersions {
        interface Item {
            /** Array of BCC recipient objects. Each object contains an email address and an optional name. */
            bcc?: Item.Bcc.Item[] | undefined;
            /** Array of CC recipient objects. Each object contains an email address and an optional name. */
            cc?: Item.Cc.Item[] | undefined;
            /** HTML body content of the email. Required when `templateId` is not provided. Ignored when `templateId` is provided. */
            htmlContent?: string | undefined;
            /** Key-value pairs for template variable substitution. Only applicable when the template uses the New Template Language format. */
            params?: Record<string, unknown> | undefined;
            /** Reply-to email address (required) and optional display name. Recipients will use this address when replying to the email. */
            replyTo?: Item.ReplyTo | undefined;
            /** Email subject line for this message version */
            subject?: string | undefined;
            /** Plain text body content of the email. Ignored when `templateId` is provided. */
            textContent?: string | undefined;
            /** Array of recipient objects. Each object contains an email address and an optional display name. */
            to: Item.To.Item[];
        }
        namespace Item {
            type Bcc = Bcc.Item[];
            namespace Bcc {
                interface Item {
                    /** BCC recipient email address */
                    email: string;
                    /** Display name of the BCC recipient. Maximum length is 70 characters. */
                    name?: string | undefined;
                }
            }
            type Cc = Cc.Item[];
            namespace Cc {
                interface Item {
                    /** CC recipient email address */
                    email: string;
                    /** Display name of the CC recipient. Maximum length is 70 characters. */
                    name?: string | undefined;
                }
            }
            /**
             * Reply-to email address (required) and optional display name. Recipients will use this address when replying to the email.
             */
            interface ReplyTo {
                /** Email address in reply to */
                email: string;
                /** Display name for the reply-to address. Maximum length is 70 characters. */
                name?: string | undefined;
            }
            type To = To.Item[];
            namespace To {
                interface Item {
                    /** Email address of the recipient */
                    email: string;
                    /** Display name of the recipient. Maximum length is 70 characters. */
                    name?: string | undefined;
                }
            }
        }
    }
    /**
     * Reply-to email address (required) and optional display name. Recipients will use this address when replying to the email.
     */
    interface ReplyTo {
        /** Email address in reply to */
        email: string;
        /** Display name for the reply-to address. Maximum length is 70 characters. */
        name?: string | undefined;
    }
    /**
     * Sender information. Required when `templateId` is not provided. Specify either an email address (with optional name) or a sender ID. The `name` field is ignored when `id` is provided.
     */
    interface Sender {
        /** Sender email address. Required when `id` is not provided. */
        email?: string | undefined;
        /** Sender identifier. Required when `email` is not provided. Use this field to select a sender with a specific IP pool (dedicated IP users only). */
        id?: number | undefined;
        /** Display name of the sender. Maximum length is 70 characters. Only applicable when `email` is provided. */
        name?: string | undefined;
    }
    type To = To.Item[];
    namespace To {
        interface Item {
            /** Email address of the recipient */
            email: string;
            /** Display name of the recipient. Maximum length is 70 characters. */
            name?: string | undefined;
        }
    }
}
