/**
 * @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 {
            /** Consent of the recipient in bcc for open (pixel) and click tracking, resolved by the sender at send time. Considered only if the per-contact pixel tracking consent feature is enabled for your account. Pass `true` if this recipient has consented to open and click tracking, in which case the open pixel and tracked links identify the recipient. Pass `false` to anonymise the open and click events (counted in aggregate statistics only). If it is not passed, the recipient is treated as unknown consent status and the email is still sent (the open and click are anonymised unless your account tracks unknown-consent contacts). A value other than `true`/`false` is rejected. Ignored when the feature is not enabled for your account. */
            contactPixelTrackingConsent?: boolean | undefined;
            /** 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 {
            /** Consent of the recipient in cc for open (pixel) and click tracking, resolved by the sender at send time. Considered only if the per-contact pixel tracking consent feature is enabled for your account. Pass `true` if this recipient has consented to open and click tracking, in which case the open pixel and tracked links identify the recipient. Pass `false` to anonymise the open and click events (counted in aggregate statistics only). If it is not passed, the recipient is treated as unknown consent status and the email is still sent (the open and click are anonymised unless your account tracks unknown-consent contacts). A value other than `true`/`false` is rejected. Ignored when the feature is not enabled for your account. */
            contactPixelTrackingConsent?: boolean | undefined;
            /** 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 {
                    /** Consent of the recipient in bcc for open (pixel) and click tracking, resolved by the sender at send time. Considered only if the per-contact pixel tracking consent feature is enabled for your account. Pass `true` if this recipient has consented to open and click tracking, in which case the open pixel and tracked links identify the recipient. Pass `false` to anonymise the open and click events (counted in aggregate statistics only). If it is not passed, the recipient is treated as unknown consent status and the email is still sent (the open and click are anonymised unless your account tracks unknown-consent contacts). A value other than `true`/`false` is rejected. Ignored when the feature is not enabled for your account. */
                    contactPixelTrackingConsent?: boolean | undefined;
                    /** 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 {
                    /** Consent of the recipient in cc for open (pixel) and click tracking, resolved by the sender at send time. Considered only if the per-contact pixel tracking consent feature is enabled for your account. Pass `true` if this recipient has consented to open and click tracking, in which case the open pixel and tracked links identify the recipient. Pass `false` to anonymise the open and click events (counted in aggregate statistics only). If it is not passed, the recipient is treated as unknown consent status and the email is still sent (the open and click are anonymised unless your account tracks unknown-consent contacts). A value other than `true`/`false` is rejected. Ignored when the feature is not enabled for your account. */
                    contactPixelTrackingConsent?: boolean | undefined;
                    /** 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 {
                    /** Consent of the recipient for open (pixel) and click tracking, resolved by the sender at send time. Considered only if the per-contact pixel tracking consent feature is enabled for your account. Pass `true` if this recipient has consented to open and click tracking, in which case the open pixel and tracked links identify the recipient. Pass `false` to anonymise the open and click events (counted in aggregate statistics only). If it is not passed, the recipient is treated as unknown consent status and the email is still sent (the open and click are anonymised unless your account tracks unknown-consent contacts). A value other than `true`/`false` is rejected. Ignored when the feature is not enabled for your account. */
                    contactPixelTrackingConsent?: boolean | undefined;
                    /** 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 {
            /** Consent of the recipient for open (pixel) and click tracking, resolved by the sender at send time. Considered only if the per-contact pixel tracking consent feature is enabled for your account. Pass `true` if this recipient has consented to open and click tracking, in which case the open pixel and tracked links identify the recipient. Pass `false` to anonymise the open and click events (counted in aggregate statistics only). If it is not passed, the recipient is treated as unknown consent status and the email is still sent (the open and click are anonymised unless your account tracks unknown-consent contacts). A value other than `true`/`false` is rejected. Ignored when the feature is not enabled for your account. */
            contactPixelTrackingConsent?: boolean | undefined;
            /** Email address of the recipient */
            email: string;
            /** Display name of the recipient. Maximum length is 70 characters. */
            name?: string | undefined;
        }
    }
}
