export type Identifiers = {
    id: string | number;
} | {
    email: string;
};
export type SendEmailRequestRequiredOptions = {
    to: string;
    identifiers: Identifiers;
};
export type SendEmailRequestOptionalOptions = Partial<{
    message_data: Record<string, any>;
    headers: Record<string, any>;
    preheader: string;
    reply_to: string;
    bcc: string;
    body_plain: string;
    body_amp: string;
    fake_bcc: boolean;
    disable_message_retention: boolean;
    send_to_unsubscribed: boolean;
    tracked: boolean;
    queue_draft: boolean;
    send_at: number;
    disable_css_preprocessing: boolean;
    language: string;
}>;
export type SendEmailRequestWithTemplate = SendEmailRequestRequiredOptions & SendEmailRequestOptionalOptions & {
    transactional_message_id: string | number;
};
export type SendEmailRequestWithoutTemplate = SendEmailRequestRequiredOptions & SendEmailRequestOptionalOptions & {
    body: string;
    subject: string;
    from: string;
};
export type SendEmailRequestOptions = SendEmailRequestWithTemplate | SendEmailRequestWithoutTemplate;
export type EmailMessage = Partial<SendEmailRequestWithTemplate & SendEmailRequestWithoutTemplate> & {
    attachments: Record<string, string>;
};
export declare class SendEmailRequest {
    message: EmailMessage;
    constructor(opts: SendEmailRequestOptions);
    attach(name: string, data: any, { encode }?: {
        encode?: boolean | undefined;
    }): void;
}
export type SendPushCustomPayload = {
    ios: Record<string, any>;
    android: Record<string, any>;
};
export type SendPushRequestRequiredOptions = {
    identifiers: Identifiers;
    transactional_message_id: string | number;
};
export type SendPushRequestOptionalOptions = Partial<{
    to: string;
    title: string;
    message: string;
    disable_message_retention: boolean;
    send_to_unsubscribed: boolean;
    queue_draft: boolean;
    message_data: Record<string, any>;
    send_at: number;
    language: string;
    image_url: string;
    link: string;
    sound: string;
    custom_data: Record<string, string>;
    device: Record<string, any>;
    custom_device: Record<string, any>;
}>;
export type SendPushRequestWithoutCustomPayload = SendPushRequestRequiredOptions & SendPushRequestOptionalOptions & {};
export type SendPushRequestWithCustomPayload = SendPushRequestRequiredOptions & SendPushRequestOptionalOptions & {
    custom_payload: SendPushCustomPayload;
};
export type SendPushRequestOptions = SendPushRequestWithoutCustomPayload | SendPushRequestWithCustomPayload;
export type PushMessage = Partial<Omit<SendPushRequestWithoutCustomPayload, 'device'> & Omit<SendPushRequestWithCustomPayload, 'device'>>;
export declare class SendPushRequest {
    message: PushMessage;
    constructor(opts: SendPushRequestOptions);
}
export type SMSMessage = Partial<SendSMSRequestOptions>;
export type SendSMSRequestRequiredOptions = {
    identifiers: Identifiers;
    transactional_message_id: string | number;
};
export type SendSMSRequestOptionalOptions = Partial<{
    to: string;
    disable_message_retention: boolean;
    send_to_unsubscribed: boolean;
    queue_draft: boolean;
    message_data: Record<string, any>;
    send_at: number;
    language: string;
}>;
export type SendSMSRequestOptions = SendSMSRequestRequiredOptions & SendSMSRequestOptionalOptions & {};
export declare class SendSMSRequest {
    message: SMSMessage;
    constructor(opts: SendSMSRequestOptions);
}
