import { Hash } from "../client/SupportingTypes";
import { Attachment, Header, LinkTrackingOptions } from "./SupportingTypes";
/**
 * A single recipient entry in a Bulk Email request.
 *
 * Message content (subject, body or template) is defined once on the
 * {@link BulkEmailRequest}; each BulkEmailMessage supplies the recipient(s) and
 * any per-recipient personalization via the TemplateModel.
 */
export declare class BulkEmailMessage {
    To: string;
    Cc?: string;
    Bcc?: string;
    TemplateModel?: object;
    Metadata?: Hash<string>;
    Headers?: Header[];
    constructor(To: string, TemplateModel?: object, Cc?: string, Bcc?: string, Metadata?: Hash<string>, Headers?: Header[]);
}
/**
 * A Bulk Email request (POST /email/bulk).
 *
 * The Bulk API is intended for broadcast sends (newsletters, announcements,
 * marketing campaigns) and is distinct from the transactional batch endpoints.
 * Shared message content - or a hosted template - is defined once, together with
 * the list of recipients to send it to. Postmark manages the send-rate optimization
 * for deliverability and returns a request ID that can be polled with
 * getBulkEmailStatus().
 */
export declare class BulkEmailRequest {
    From: string;
    Messages: BulkEmailMessage[];
    ReplyTo?: string;
    Subject?: string;
    HtmlBody?: string;
    TextBody?: string;
    TemplateId?: number;
    TemplateAlias?: string;
    InlineCss?: boolean;
    Tag?: string;
    Metadata?: Hash<string>;
    MessageStream?: string;
    TrackOpens?: boolean;
    TrackLinks?: LinkTrackingOptions;
    Attachments?: Attachment[];
    Headers?: Header[];
    constructor(From: string, Messages: BulkEmailMessage[], Subject?: string, HtmlBody?: string, TextBody?: string, TemplateId?: number, TemplateAlias?: string, ReplyTo?: string, Tag?: string, TrackOpens?: boolean, TrackLinks?: LinkTrackingOptions, Headers?: Header[], Attachments?: Attachment[], Metadata?: Hash<string>, MessageStream?: string, InlineCss?: boolean);
}
/**
 * Possible states of a Bulk Email request.
 *
 * A submitted request reports "Accepted" or "Failed"; while Postmark is delivering
 * the messages the request progresses through "Processing" to "Completed".
 */
export declare enum BulkEmailStatus {
    Accepted = "Accepted",
    Processing = "Processing",
    Completed = "Completed",
    Failed = "Failed"
}
/**
 * Response returned when submitting a Bulk Email request (POST /email/bulk).
 */
export interface BulkEmailSendingResponse {
    Id: string;
    Status: BulkEmailStatus;
    SubmittedAt: string;
}
/**
 * Progress and details of a previously submitted Bulk Email request
 * (GET /email/bulk/{bulk-request-id}).
 */
export interface BulkEmailStatusResponse {
    Id: string;
    Status: BulkEmailStatus;
    SubmittedAt: string;
    TotalMessages: number;
    PercentageCompleted: number;
    Subject: string;
}
