export interface CakemailConfig {
    email: string;
    password: string;
    baseUrl?: string;
    debug?: boolean;
}
export interface CakemailToken {
    access_token: string;
    token_type: string;
    expires_in: number;
    refresh_token: string;
    accounts: number[];
}
export interface CakemailErrorResponse {
    error: string;
    error_description?: string;
    message?: string;
}
export interface ApiResponse<T = any> {
    data?: T;
    pagination?: {
        count?: number;
        page?: number;
        per_page?: number;
        total_pages?: number;
    };
    meta?: any;
}
export interface CampaignsResponse {
    data: Campaign[];
    pagination?: {
        count?: number;
        page?: number;
        per_page?: number;
        total_pages?: number;
    };
}
export interface CampaignResponse {
    data: Campaign;
}
export interface CreateCampaignResponse {
    data: Campaign;
}
export interface PatchCampaignResponse {
    data: Campaign;
}
export interface DeleteCampaignResponse {
    data: {
        id: number;
        deleted: boolean;
    };
}
export interface ContactsResponse {
    data: Contact[];
    pagination?: {
        count?: number;
        page?: number;
        per_page?: number;
        total_pages?: number;
    };
}
export interface ContactResponse {
    data: Contact;
}
export interface CreateContactResponse {
    data: Contact;
}
export interface ListsResponse {
    data: ContactList[];
    pagination?: {
        count?: number;
        page?: number;
        per_page?: number;
        total_pages?: number;
    };
}
export interface ListResponse {
    data: ContactList;
}
export interface CreateListResponse {
    data: ContactList;
}
export interface SendersResponse {
    data: Sender[];
}
export interface SenderResponse {
    data: Sender;
}
export interface CreateSenderResponse {
    data: Sender;
}
export interface TemplatesResponse {
    data: Template[];
    pagination?: {
        count?: number;
        page?: number;
        per_page?: number;
        total_pages?: number;
    };
}
export interface TemplateResponse {
    data: Template;
}
export interface CreateTemplateResponse {
    data: Template;
}
export interface EmailResponse {
    email: string;
    object: string;
    submitted: boolean;
    data: {
        id: string;
        status: 'submitted' | 'queued' | 'delivered' | 'rejected' | 'error' | 'open' | 'click' | 'bounce' | 'spam' | 'unsubscribe' | 'global_unsubscribe';
        metadata?: any;
    };
}
export interface EmailStatusResponse {
    data: {
        id: string;
        status: 'submitted' | 'queued' | 'delivered' | 'rejected' | 'error' | 'open' | 'click' | 'bounce' | 'spam' | 'unsubscribe' | 'global_unsubscribe';
        email: string;
        to_name?: string;
        sender_id?: string;
        subject?: string;
        submitted_on?: string;
        delivered_on?: string;
        opened_on?: string;
        clicked_on?: string;
        bounced_on?: string;
        rejected_reason?: string;
        error_message?: string;
        metadata?: any;
        [key: string]: any;
    };
}
export interface EmailAPILogEntry {
    id: string;
    email_id: string;
    type: 'submitted' | 'queued' | 'delivered' | 'rejected' | 'error' | 'open' | 'click' | 'bounce' | 'spam' | 'unsubscribe' | 'global_unsubscribe';
    time: number;
    submitted_time?: number;
    provider?: string;
    metadata?: any;
    [key: string]: any;
}
export interface EmailAPILogsResponse {
    data: EmailAPILogEntry[];
    pagination?: {
        count?: number;
        page?: number;
        per_page?: number;
        total_pages?: number;
    };
}
export interface EmailAPIStatsEntry {
    time: number;
    submitted?: number;
    queued?: number;
    delivered?: number;
    rejected?: number;
    error?: number;
    open?: number;
    click?: number;
    bounce?: number;
    spam?: number;
    unsubscribe?: number;
    global_unsubscribe?: number;
    [key: string]: any;
}
export interface EmailAPIStatsResponse {
    data: EmailAPIStatsEntry[];
    interval?: 'hour' | 'day' | 'week' | 'month';
    start_time?: number;
    end_time?: number;
}
export interface AccountResponse {
    data: {
        id: number;
        name: string;
        email: string;
        type?: string;
        [key: string]: any;
    };
}
export interface PatchAccountResponse {
    data: {
        id: number;
        name: string;
        email: string;
        type?: string;
        [key: string]: any;
    };
}
export interface SubAccount {
    id: string;
    name: string;
    email: string;
    status: 'pending' | 'active' | 'suspended' | 'inactive';
    type?: 'organization' | 'individual';
    partner_account_id?: number;
    created_on?: string;
    updated_on?: string;
    verified?: boolean;
    company?: string;
    language?: string;
    timezone?: string;
    country?: string;
    phone?: string;
    website?: string;
    description?: string;
    [key: string]: any;
}
export interface SubAccountsResponse {
    data: SubAccount[];
    pagination?: {
        count?: number;
        page?: number;
        per_page?: number;
        total_pages?: number;
    };
}
export interface SubAccountResponse {
    data: SubAccount;
}
export interface CreateSubAccountResponse {
    data: SubAccount;
}
export interface PatchSubAccountResponse {
    data: SubAccount;
}
export interface DeleteSubAccountResponse {
    data: {
        id: string;
        deleted: boolean;
    };
}
export interface SuspendSubAccountResponse {
    id: string;
    object: string;
    suspended: boolean;
    data: {
        id: string;
        status: 'suspended';
        suspended_on: string;
    };
}
export interface UnsuspendSubAccountResponse {
    id: string;
    object: string;
    unsuspended: boolean;
    data: {
        id: string;
        status: 'active';
        unsuspended_on: string;
    };
}
export interface ConfirmSubAccountResponse {
    data: SubAccount;
}
export interface ResendSubAccountVerificationResponse {
    object: string;
    verification_resent: boolean;
}
export interface CreateSubAccountData {
    name: string;
    email: string;
    password: string;
    company?: string | undefined;
    language?: string | undefined;
    timezone?: string | undefined;
    country?: string | undefined;
    phone?: string | undefined;
    website?: string | undefined;
    description?: string | undefined;
    [key: string]: any;
}
export interface UpdateSubAccountData {
    name?: string;
    email?: string;
    company?: string;
    language?: string;
    timezone?: string;
    country?: string;
    phone?: string;
    website?: string;
    description?: string;
    [key: string]: any;
}
export interface ConfirmSubAccountData {
    confirmation_code: string;
    password?: string | undefined;
}
export interface ResendVerificationEmailData {
    email: string;
}
export interface ConvertSubAccountData {
    migrate_owner?: boolean;
}
export interface CampaignStats {
    sent_count?: number;
    delivered_count?: number;
    bounce_count?: number;
    hard_bounce_count?: number;
    soft_bounce_count?: number;
    open_count?: number;
    unique_open_count?: number;
    open_rate?: number;
    click_count?: number;
    unique_click_count?: number;
    click_rate?: number;
    unsubscribe_count?: number;
    unsubscribe_rate?: number;
    spam_complaint_count?: number;
    spam_complaint_rate?: number;
    delivery_rate?: number;
    [key: string]: any;
}
export interface CampaignLinkStats {
    link: string;
    unique: number;
    total: number;
    [key: string]: any;
}
export interface EmailStats {
    sent_count?: number;
    delivered_count?: number;
    bounce_count?: number;
    open_count?: number;
    click_count?: number;
    spam_complaint_count?: number;
    [key: string]: any;
}
export interface ListStats {
    subscriber_count?: number;
    active_count?: number;
    unsubscribed_count?: number;
    bounced_count?: number;
    growth_rate?: number;
    [key: string]: any;
}
export interface AccountStats {
    campaigns_sent?: number;
    emails_sent?: number;
    total_opens?: number;
    total_clicks?: number;
    total_bounces?: number;
    total_unsubscribes?: number;
    [key: string]: any;
}
export interface ActionStats {
    executions?: number;
    success_rate?: number;
    average_duration?: number;
    [key: string]: any;
}
export interface CampaignReportExport {
    id: string;
    status: 'processing' | 'completed' | 'failed';
    progress?: number;
    created_on?: string;
    completed_on?: string;
    download_url?: string;
    [key: string]: any;
}
export interface SuppressedEmailsExport {
    id: string;
    status: 'processing' | 'completed' | 'failed';
    description?: string;
    created_on?: string;
    completed_on?: string;
    download_url?: string;
    [key: string]: any;
}
export interface CampaignStatsResponse {
    data: CampaignStats;
}
export interface CampaignLinksStatsResponse {
    data: CampaignLinkStats[];
    pagination?: {
        count?: number;
        page?: number;
        per_page?: number;
        total_pages?: number;
    };
}
export interface EmailStatsResponse {
    data: EmailStats;
}
export interface ListStatsResponse {
    data: ListStats;
}
export interface AccountStatsResponse {
    data: AccountStats;
}
export interface ActionStatsResponse {
    data: ActionStats;
}
export interface CampaignsReportsExportsResponse {
    data: CampaignReportExport[];
    pagination?: {
        count?: number;
        page?: number;
        per_page?: number;
        total_pages?: number;
    };
}
export interface CreateCampaignReportExportResponse {
    data: CampaignReportExport;
}
export interface GetCampaignReportExportResponse {
    data: CampaignReportExport;
}
export interface DeleteCampaignReportExportResponse {
    data: {
        id: string;
        deleted: boolean;
    };
}
export interface DownloadCampaignReportExportResponse {
    data: {
        download_url: string;
        expires_at?: string;
    };
}
export interface SuppressedEmailsExportsResponse {
    data: SuppressedEmailsExport[];
    pagination?: {
        count?: number;
        page?: number;
        per_page?: number;
        total_pages?: number;
    };
}
export interface CreateSuppressedEmailsExportResponse {
    data: SuppressedEmailsExport;
}
export interface GetSuppressedEmailsExportResponse {
    data: SuppressedEmailsExport;
}
export interface DeleteSuppressedEmailsExportResponse {
    data: {
        id: string;
        deleted: boolean;
    };
}
export interface DownloadSuppressedEmailsExportResponse {
    data: {
        download_url: string;
        expires_at?: string;
    };
}
export interface CreateCampaignReportExportData {
    campaign_ids?: string[];
    start_date?: string;
    end_date?: string;
    format?: 'csv' | 'xlsx';
    fields?: string[];
    [key: string]: any;
}
export interface ReportFilters {
    status?: string;
    progress?: string;
    [key: string]: any;
}
export interface SubAccountFilters {
    name?: string | undefined;
    status?: 'pending' | 'active' | 'suspended' | 'inactive' | undefined;
    type?: 'organization' | 'individual' | undefined;
    partner_account_id?: number | undefined;
}
export interface HTTPBadRequestError {
    detail: string;
}
export interface ValidationErrorDetail {
    loc: (string | number)[];
    msg: string;
    type: string;
}
export interface HTTPValidationError {
    detail: ValidationErrorDetail[];
}
export interface PaginationParams {
    page?: number | undefined;
    per_page?: number | undefined;
    with_count?: boolean | undefined;
}
export interface SortParams {
    sort?: string | undefined;
    order?: 'asc' | 'desc' | undefined;
}
export interface Campaign {
    id: number;
    name: string;
    subject?: string;
    html_content?: string;
    text_content?: string;
    status?: 'active' | 'delivering' | 'delivered' | 'archived' | 'deleted' | 'incomplete' | 'scheduled';
    list_id?: number;
    sender_id?: number;
    from_name?: string;
    reply_to?: string;
    created_on?: string;
    updated_on?: string;
    scheduled_for?: string;
    scheduled_on?: string;
    type?: string;
}
export interface CreateCampaignData {
    name: string;
    subject?: string;
    html_content?: string | undefined;
    text_content?: string | undefined;
    json_content?: any;
    list_id?: string | number;
    sender_id?: string | number;
    from_name?: string | undefined;
    reply_to?: string | undefined;
    template_id?: string | number;
    content_type?: 'html' | 'text' | 'bee' | 'custom';
}
export interface UpdateCampaignData {
    name?: string;
    subject?: string;
    html_content?: string;
    text_content?: string;
    from_name?: string;
    reply_to?: string;
}
export interface CampaignFilters {
    status?: string | undefined;
    name?: string | undefined;
    type?: string | undefined;
    list_id?: string | undefined;
}
export interface Contact {
    id: number;
    email: string;
    first_name?: string;
    last_name?: string;
    status?: string;
    subscribed_on?: string;
    custom_fields?: Record<string, any>;
}
export interface CreateContactData {
    email: string;
    first_name?: string;
    last_name?: string;
    list_id: string | number;
    custom_fields?: Record<string, any>;
}
export interface UpdateContactData {
    email?: string;
    first_name?: string;
    last_name?: string;
    custom_fields?: Record<string, any>;
}
export interface ContactList {
    id: number;
    name: string;
    description?: string;
    language?: string;
    created_on?: string;
    updated_on?: string;
}
export interface CreateListData {
    name: string;
    description?: string;
    language?: string;
}
export interface UpdateListData {
    name?: string;
    description?: string;
    language?: string;
}
export interface Sender {
    id: number;
    name: string;
    email: string;
    language?: string;
    verified?: boolean;
    confirmed?: boolean;
    created_on?: string;
}
export interface CreateSenderData {
    name: string;
    email: string;
    language?: string;
}
export interface UpdateSenderData {
    name?: string;
    email?: string;
    language?: string;
}
export interface TemplateContent {
    type: 'html' | 'text' | 'bee' | 'custom';
    subject?: string;
    html?: string;
    text?: string;
    json?: any;
}
export interface Template {
    id: number;
    name: string;
    description?: string;
    created_on?: number;
    updated_on?: number;
    tags?: string[];
    is_owner?: boolean;
    sharing?: {
        shared: boolean;
        accounts?: any[];
        automatic?: boolean;
    };
    thumbnail?: string;
    thumbnail_url?: string;
    content: TemplateContent;
    subject?: string;
    html_content?: string;
    text_content?: string;
}
export interface CreateTemplateData {
    name: string;
    description?: string;
    content?: TemplateContent;
    tags?: string[];
    account_id?: number;
    subject?: string;
    html_content?: string;
    text_content?: string;
}
export interface UpdateTemplateData {
    name?: string;
    description?: string;
    content?: TemplateContent;
    tags?: string[];
    account_id?: number;
    subject?: string;
    html_content?: string;
    text_content?: string;
}
export type LogTypeV2 = 'all' | 'submitted' | 'queued' | 'delivered' | 'rejected' | 'error' | 'open' | 'click' | 'bounce' | 'spam' | 'unsubscribe' | 'global_unsubscribe';
export type EmailStatus = 'submitted' | 'queued' | 'delivered' | 'rejected' | 'error' | 'open' | 'click' | 'bounce' | 'spam' | 'unsubscribe' | 'global_unsubscribe';
export type IntervalEnum = 'hour' | 'day' | 'week' | 'month';
/**
 * Request schema for POST /v2/emails
 * Matches the complete v2 API specification
 */
export interface SubmitEmailRequest {
    sender: {
        id: string;
        name?: string;
    };
    content: {
        subject: string;
        html?: string;
        text?: string;
        template?: {
            id: number;
        };
        encoding?: string;
        custom_attributes?: Array<{
            name: string;
            value: string;
        }>;
        type?: 'marketing' | 'transactional';
        markup?: Record<string, any>;
    };
    email: string;
    list_id?: number;
    contact_id?: number;
    tags?: string[];
    tracking?: {
        opens?: boolean;
        clicks_html?: boolean;
        clicks_text?: boolean;
    };
    additional_headers?: Array<{
        name: string;
        value: string;
    }>;
    attachment?: Array<{
        filename: string;
        type: string;
        content: string;
    }>;
}
/**
 * Response schema for POST /v2/emails
 * Matches the SubmitEmailResponse schema from OpenAPI spec
 */
export interface SubmitEmailResponse {
    email: string;
    object: string;
    submitted: boolean;
    data: {
        id: string;
        status: EmailStatus;
        metadata?: any;
    };
}
/**
 * Response schema for GET /v2/emails/{email_id}
 * Matches the GetEmailResponse schema from OpenAPI spec
 */
export interface GetEmailResponse {
    data: {
        id: string;
        status: EmailStatus;
        email: string;
        to_name?: string;
        sender_id?: string;
        subject?: string;
        submitted_on?: string;
        delivered_on?: string;
        opened_on?: string;
        clicked_on?: string;
        bounced_on?: string;
        rejected_reason?: string;
        error_message?: string;
        metadata?: any;
        [key: string]: any;
    };
}
/**
 * Enhanced Email API Log Entry
 * Updated to match v2 API specification
 */
export interface EmailAPILogEntryV2 {
    id: string;
    email_id: string;
    type: LogTypeV2;
    time: number;
    submitted_time?: number;
    provider?: string;
    metadata?: any;
    additional_info?: any;
    link_id?: string;
    contact_id?: string;
    email?: string;
    [key: string]: any;
}
/**
 * Enhanced Email API Logs Response
 */
export interface EmailAPILogsResponseV2 {
    data: EmailAPILogEntryV2[];
    pagination?: {
        count?: number;
        page?: number;
        per_page?: number;
        total_pages?: number;
    };
}
/**
 * Enhanced Email API Stats Entry
 */
export interface EmailAPIStatsEntryV2 {
    time: number;
    submitted?: number;
    queued?: number;
    delivered?: number;
    rejected?: number;
    error?: number;
    open?: number;
    click?: number;
    bounce?: number;
    spam?: number;
    unsubscribe?: number;
    global_unsubscribe?: number;
    [key: string]: any;
}
/**
 * Enhanced Email API Stats Response
 */
export interface EmailAPIStatsResponseV2 {
    data: EmailAPIStatsEntryV2[];
    interval?: IntervalEnum;
    start_time?: number;
    end_time?: number;
}
/**
 * Filter condition for recursive filtering
 */
export interface FilterCondition {
    operator: 'and' | 'or' | 'not' | 'is';
    value: string | FilterCondition[];
}
/**
 * Email log analysis result
 */
export interface EmailLogAnalysis {
    totalEvents: number;
    eventBreakdown: Record<string, number>;
    deliveryRate: number;
    engagementRate: number;
    issueRate: number;
    recommendations: string[];
}
/**
 * Smart filter types for common use cases
 */
export type SmartFilterType = 'engagement' | 'critical_issues' | 'temporary_failures' | 'list_cleanup';
/**
 * Email API Error with additional context
 */
export interface EmailAPIErrorDetails {
    code: string;
    message: string;
    field?: string;
    value?: any;
    suggestion?: string;
}
export interface EmailData {
    email: string;
    sender: {
        id: string;
        name?: string;
    };
    content: {
        subject: string;
        html?: string;
        text?: string;
        template?: {
            id: number;
        };
        encoding?: string;
        custom_attributes?: Array<{
            name: string;
            value: string;
        }>;
        type?: 'marketing' | 'transactional';
        markup?: Record<string, any>;
    };
    list_id?: number;
    contact_id?: number;
    tags?: string[];
    tracking?: {
        opens?: boolean;
        clicks_html?: boolean;
        clicks_text?: boolean;
    };
    additional_headers?: Array<{
        name: string;
        value: string;
    }>;
    attachment?: Array<{
        filename: string;
        type: string;
        content: string;
    }>;
}
export type EmailResponseType = SubmitEmailResponse;
export type EmailStatusResponseType = GetEmailResponse;
export type EmailAPILogsResponseUnified = EmailAPILogsResponse;
export type EmailAPIStatsResponseUnified = EmailStatsResponse;
export interface GetCampaignsParams extends PaginationParams, SortParams, CampaignFilters {
    account_id?: number | undefined;
}
export interface ListSubAccountsParams {
    partner_account_id?: number | undefined;
    recursive?: boolean | undefined;
    filters?: SubAccountFilters;
    pagination?: PaginationParams;
    sort?: SortParams;
}
export interface CreateSubAccountOptions {
    partner_account_id?: number | undefined;
    skip_verification?: boolean | undefined;
}
export interface WorkflowActionLogsParams {
    account_id?: number | undefined;
    page?: number | undefined;
    per_page?: number | undefined;
    with_count?: boolean | undefined;
    start_time?: number | undefined;
    end_time?: number | undefined;
    filter?: string | undefined;
}
export interface WorkflowLogsParams {
    account_id?: number | undefined;
    page?: number | undefined;
    per_page?: number | undefined;
    with_count?: boolean | undefined;
    sort?: string | undefined;
    order?: 'asc' | 'desc' | undefined;
    start_time?: number | undefined;
    end_time?: number | undefined;
    filter?: string | undefined;
}
export interface TransactionalEmailLogsParams {
    log_type?: string | undefined;
    account_id?: number | undefined;
    page?: number | undefined;
    per_page?: number | undefined;
    with_count?: boolean | undefined;
    sort?: string | undefined;
    order?: 'asc' | 'desc' | undefined;
    start_time?: number | undefined;
    end_time?: number | undefined;
    filter?: string | undefined;
    email_id?: string | undefined;
    sender_id?: string | undefined;
    status?: string | undefined;
}
export interface ListLogsParams {
    account_id?: number | undefined;
    page?: number | undefined;
    per_page?: number | undefined;
    with_count?: boolean | undefined;
    start_time?: number | undefined;
    end_time?: number | undefined;
    filter?: string | undefined;
}
export interface DebugLogsAccessParams {
    campaign_id?: string | undefined;
    workflow_id?: string | undefined;
}
export interface CreateCampaignRequest {
    name: string;
    list_id?: string | number;
    segment_id?: string | number;
    sender_id?: string | number;
    from_name?: string;
    reply_to?: string;
    subject?: string;
    html_content?: string;
    text_content?: string;
    json_content?: any;
    template_id?: string | number;
    blueprint_id?: string | number;
    content_type?: 'html' | 'text' | 'bee' | 'custom';
    encoding?: string;
    default_unsubscribe_link?: boolean;
    tracking?: {
        opens?: boolean;
        clicks_html?: boolean;
        clicks_text?: boolean;
        additional_params?: string;
    };
}
export interface UpdateCampaignRequest {
    name?: string;
    sender_id?: string | number;
    from_name?: string;
    reply_to?: string;
    subject?: string;
    html_content?: string;
    text_content?: string;
    json_content?: any;
    template_id?: string | number;
    blueprint_id?: string | number;
    content_type?: 'html' | 'text' | 'bee' | 'custom';
    encoding?: string;
    default_unsubscribe_link?: boolean;
    tracking?: {
        opens?: boolean;
        clicks_html?: boolean;
        clicks_text?: boolean;
        additional_params?: string;
    };
}
export interface ScheduleCampaignRequest {
    scheduled_for?: string;
}
export interface SendTestEmailRequest {
    emails: string[];
}
export interface EmailLogsParams {
    email_id?: string;
    start_time?: number;
    end_time?: number;
    log_type?: 'all' | 'submitted' | 'queued' | 'delivered' | 'rejected' | 'error' | 'open' | 'click' | 'bounce' | 'spam' | 'unsubscribe' | 'global_unsubscribe';
    page?: number;
    per_page?: number;
    sort?: string;
    iso_time?: boolean;
    providers?: string;
    tags?: string;
}
export interface EmailStatsParams {
    start_time?: number;
    end_time?: number;
    interval?: IntervalEnum;
    iso_time?: boolean;
    providers?: string;
    tags?: string;
}
//# sourceMappingURL=cakemail-types.d.ts.map