import { APIResource } from "../../../core/resource.mjs";
import { APIPromise } from "../../../core/api-promise.mjs";
import { PagePromise, SinglePage, V4PagePaginationArray, type V4PagePaginationArrayParams } from "../../../core/pagination.mjs";
import { RequestOptions } from "../../../internal/request-options.mjs";
export declare class BaseDomains extends APIResource {
    static readonly _key: readonly ['emailSecurity', 'settings', 'domains'];
    /**
     * Protects a new email domain by adding it to Email Security. Accepts a flat
     * configuration object covering all delivery modes. Returns the newly created
     * domain configuration.
     *
     * @example
     * ```ts
     * const domain =
     *   await client.emailSecurity.settings.domains.create({
     *     account_id: '023e105f4ecef8ad9ca31a8372d0c353',
     *     allowed_delivery_modes: ['DIRECT'],
     *     domain: 'domain',
     *     drop_dispositions: ['MALICIOUS'],
     *     ip_restrictions: ['192.0.2.0/24', '2001:db8::/32'],
     *     regions: ['GLOBAL'],
     *   });
     * ```
     */
    create(params: DomainCreateParams, options?: RequestOptions): APIPromise<DomainCreateResponse>;
    /**
     * Replaces all mutable fields of a protected email domain in a single atomic
     * operation. Unlike PATCH, all non-computed fields are required.
     *
     * @example
     * ```ts
     * const domain =
     *   await client.emailSecurity.settings.domains.update(
     *     'f174e90a-fafe-4643-bbbc-4a0ed4fc8415',
     *     {
     *       account_id: '023e105f4ecef8ad9ca31a8372d0c353',
     *       allowed_delivery_modes: ['DIRECT'],
     *       drop_dispositions: ['MALICIOUS'],
     *       ip_restrictions: ['192.0.2.0/24', '2001:db8::/32'],
     *       regions: ['GLOBAL'],
     *     },
     *   );
     * ```
     */
    update(domainID: string, params: DomainUpdateParams, options?: RequestOptions): APIPromise<DomainUpdateResponse>;
    /**
     * Returns a paginated list of email domains protected by Email Security. Includes
     * domain configuration, delivery modes, and authorization status. Supports
     * filtering by delivery mode and integration ID.
     *
     * @example
     * ```ts
     * // Automatically fetches more pages as needed.
     * for await (const domainListResponse of client.emailSecurity.settings.domains.list(
     *   { account_id: '023e105f4ecef8ad9ca31a8372d0c353' },
     * )) {
     *   // ...
     * }
     * ```
     */
    list(params: DomainListParams, options?: RequestOptions): PagePromise<DomainListResponsesV4PagePaginationArray, DomainListResponse>;
    /**
     * Removes email security protection from a domain. After deletion, emails for this
     * domain will no longer be processed by Email Security. This action cannot be
     * undone.
     *
     * @example
     * ```ts
     * const domain =
     *   await client.emailSecurity.settings.domains.delete(
     *     'f174e90a-fafe-4643-bbbc-4a0ed4fc8415',
     *     { account_id: '023e105f4ecef8ad9ca31a8372d0c353' },
     *   );
     * ```
     */
    delete(domainID: string, params: DomainDeleteParams, options?: RequestOptions): APIPromise<DomainDeleteResponse>;
    /**
     * Executes multiple domain operations in a single request. All four operation
     * arrays (deletes, patches, puts, posts) are required and executed in order. Send
     * empty arrays for unused operations.
     *
     * @example
     * ```ts
     * const response =
     *   await client.emailSecurity.settings.domains.batch({
     *     account_id: '023e105f4ecef8ad9ca31a8372d0c353',
     *     deletes: [
     *       { id: 'f174e90a-fafe-4643-bbbc-4a0ed4fc8415' },
     *     ],
     *     patches: [
     *       { id: 'f174e90a-fafe-4643-bbbc-4a0ed4fc8415' },
     *     ],
     *     posts: [
     *       {
     *         allowed_delivery_modes: ['DIRECT'],
     *         domain: 'domain',
     *         drop_dispositions: ['MALICIOUS'],
     *         ip_restrictions: ['192.0.2.0/24', '2001:db8::/32'],
     *         regions: ['GLOBAL'],
     *       },
     *     ],
     *     puts: [
     *       {
     *         id: 'f174e90a-fafe-4643-bbbc-4a0ed4fc8415',
     *         allowed_delivery_modes: ['DIRECT'],
     *         drop_dispositions: ['MALICIOUS'],
     *         ip_restrictions: ['192.0.2.0/24', '2001:db8::/32'],
     *         regions: ['GLOBAL'],
     *       },
     *     ],
     *   });
     * ```
     */
    batch(params: DomainBatchParams, options?: RequestOptions): APIPromise<DomainBatchResponse>;
    /**
     * Removes protection from multiple email domains. Deprecated; use the batch
     * endpoint instead.
     *
     * @deprecated This endpoint is deprecated. Use POST /accounts/{account_id}/email-security/settings/domains/batch instead.
     */
    bulkDelete(params: DomainBulkDeleteParams, options?: RequestOptions): PagePromise<DomainBulkDeleteResponsesSinglePage, DomainBulkDeleteResponse>;
    /**
     * Updates configuration for a protected email domain. Only provided fields will be
     * modified. Changes affect delivery mode, security settings, and regional
     * processing.
     *
     * @example
     * ```ts
     * const response =
     *   await client.emailSecurity.settings.domains.edit(
     *     'f174e90a-fafe-4643-bbbc-4a0ed4fc8415',
     *     { account_id: '023e105f4ecef8ad9ca31a8372d0c353' },
     *   );
     * ```
     */
    edit(domainID: string, params: DomainEditParams, options?: RequestOptions): APIPromise<DomainEditResponse>;
    /**
     * Retrieves detailed information for a specific protected email domain including
     * its delivery configuration, SPF/DMARC status, and authorization state.
     *
     * @example
     * ```ts
     * const domain =
     *   await client.emailSecurity.settings.domains.get(
     *     'f174e90a-fafe-4643-bbbc-4a0ed4fc8415',
     *     { account_id: '023e105f4ecef8ad9ca31a8372d0c353' },
     *   );
     * ```
     */
    get(domainID: string, params: DomainGetParams, options?: RequestOptions): APIPromise<DomainGetResponse>;
}
export declare class Domains extends BaseDomains {
}
export type DomainListResponsesV4PagePaginationArray = V4PagePaginationArray<DomainListResponse>;
export type DomainBulkDeleteResponsesSinglePage = SinglePage<DomainBulkDeleteResponse>;
export interface DomainCreateResponse {
    /**
     * Domain identifier.
     */
    id?: string;
    allowed_delivery_modes?: Array<'DIRECT' | 'BCC' | 'JOURNAL' | 'API' | 'RETRO_SCAN'>;
    authorization?: DomainCreateResponse.Authorization | null;
    created_at?: string;
    dmarc_status?: 'none' | 'good' | 'invalid' | null;
    domain?: string;
    drop_dispositions?: Array<'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE'>;
    emails_processed?: DomainCreateResponse.EmailsProcessed | null;
    /**
     * The mailbox folder to scan, for API-scanning domains.
     */
    folder?: 'AllItems' | 'Inbox' | null;
    inbox_provider?: 'Microsoft' | 'Google' | null;
    integration_id?: string | null;
    ip_restrictions?: Array<string>;
    /**
     * @deprecated Use `modified_at` instead.
     */
    last_modified?: string;
    lookback_hops?: number;
    modified_at?: string;
    o365_tenant_id?: string | null;
    regions?: Array<'GLOBAL' | 'AU' | 'DE' | 'IN' | 'US'>;
    require_tls_inbound?: boolean | null;
    require_tls_outbound?: boolean | null;
    spf_status?: 'none' | 'good' | 'neutral' | 'open' | 'invalid' | null;
    status?: 'PENDING' | 'ACTIVE' | 'FAILED' | 'TIMEOUT' | null;
    transport?: string;
}
export declare namespace DomainCreateResponse {
    interface Authorization {
        authorized: boolean;
        timestamp: string;
        status_message?: string | null;
    }
    interface EmailsProcessed {
        timestamp: string;
        total_emails_processed: number;
        total_emails_processed_previous: number;
    }
}
export interface DomainUpdateResponse {
    /**
     * Domain identifier.
     */
    id?: string;
    allowed_delivery_modes?: Array<'DIRECT' | 'BCC' | 'JOURNAL' | 'API' | 'RETRO_SCAN'>;
    authorization?: DomainUpdateResponse.Authorization | null;
    created_at?: string;
    dmarc_status?: 'none' | 'good' | 'invalid' | null;
    domain?: string;
    drop_dispositions?: Array<'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE'>;
    emails_processed?: DomainUpdateResponse.EmailsProcessed | null;
    /**
     * The mailbox folder to scan, for API-scanning domains.
     */
    folder?: 'AllItems' | 'Inbox' | null;
    inbox_provider?: 'Microsoft' | 'Google' | null;
    integration_id?: string | null;
    ip_restrictions?: Array<string>;
    /**
     * @deprecated Use `modified_at` instead.
     */
    last_modified?: string;
    lookback_hops?: number;
    modified_at?: string;
    o365_tenant_id?: string | null;
    regions?: Array<'GLOBAL' | 'AU' | 'DE' | 'IN' | 'US'>;
    require_tls_inbound?: boolean | null;
    require_tls_outbound?: boolean | null;
    spf_status?: 'none' | 'good' | 'neutral' | 'open' | 'invalid' | null;
    status?: 'PENDING' | 'ACTIVE' | 'FAILED' | 'TIMEOUT' | null;
    transport?: string;
}
export declare namespace DomainUpdateResponse {
    interface Authorization {
        authorized: boolean;
        timestamp: string;
        status_message?: string | null;
    }
    interface EmailsProcessed {
        timestamp: string;
        total_emails_processed: number;
        total_emails_processed_previous: number;
    }
}
export interface DomainListResponse {
    /**
     * Domain identifier.
     */
    id?: string;
    allowed_delivery_modes?: Array<'DIRECT' | 'BCC' | 'JOURNAL' | 'API' | 'RETRO_SCAN'>;
    authorization?: DomainListResponse.Authorization | null;
    created_at?: string;
    dmarc_status?: 'none' | 'good' | 'invalid' | null;
    domain?: string;
    drop_dispositions?: Array<'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE'>;
    emails_processed?: DomainListResponse.EmailsProcessed | null;
    /**
     * The mailbox folder to scan, for API-scanning domains.
     */
    folder?: 'AllItems' | 'Inbox' | null;
    inbox_provider?: 'Microsoft' | 'Google' | null;
    integration_id?: string | null;
    ip_restrictions?: Array<string>;
    /**
     * @deprecated Use `modified_at` instead.
     */
    last_modified?: string;
    lookback_hops?: number;
    modified_at?: string;
    o365_tenant_id?: string | null;
    regions?: Array<'GLOBAL' | 'AU' | 'DE' | 'IN' | 'US'>;
    require_tls_inbound?: boolean | null;
    require_tls_outbound?: boolean | null;
    spf_status?: 'none' | 'good' | 'neutral' | 'open' | 'invalid' | null;
    status?: 'PENDING' | 'ACTIVE' | 'FAILED' | 'TIMEOUT' | null;
    transport?: string;
}
export declare namespace DomainListResponse {
    interface Authorization {
        authorized: boolean;
        timestamp: string;
        status_message?: string | null;
    }
    interface EmailsProcessed {
        timestamp: string;
        total_emails_processed: number;
        total_emails_processed_previous: number;
    }
}
export interface DomainDeleteResponse {
    /**
     * Domain identifier.
     */
    id: string;
}
export interface DomainBatchResponse {
    deletes: Array<DomainBatchResponse.Delete>;
    patches: Array<DomainBatchResponse.Patch>;
    posts: Array<DomainBatchResponse.Post>;
    puts: Array<DomainBatchResponse.Put>;
}
export declare namespace DomainBatchResponse {
    interface Delete {
        /**
         * Domain identifier.
         */
        id: string;
    }
    interface Patch {
        /**
         * Domain identifier.
         */
        id?: string;
        allowed_delivery_modes?: Array<'DIRECT' | 'BCC' | 'JOURNAL' | 'API' | 'RETRO_SCAN'>;
        authorization?: Patch.Authorization | null;
        created_at?: string;
        dmarc_status?: 'none' | 'good' | 'invalid' | null;
        domain?: string;
        drop_dispositions?: Array<'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE'>;
        emails_processed?: Patch.EmailsProcessed | null;
        /**
         * The mailbox folder to scan, for API-scanning domains.
         */
        folder?: 'AllItems' | 'Inbox' | null;
        inbox_provider?: 'Microsoft' | 'Google' | null;
        integration_id?: string | null;
        ip_restrictions?: Array<string>;
        /**
         * @deprecated Use `modified_at` instead.
         */
        last_modified?: string;
        lookback_hops?: number;
        modified_at?: string;
        o365_tenant_id?: string | null;
        regions?: Array<'GLOBAL' | 'AU' | 'DE' | 'IN' | 'US'>;
        require_tls_inbound?: boolean | null;
        require_tls_outbound?: boolean | null;
        spf_status?: 'none' | 'good' | 'neutral' | 'open' | 'invalid' | null;
        status?: 'PENDING' | 'ACTIVE' | 'FAILED' | 'TIMEOUT' | null;
        transport?: string;
    }
    namespace Patch {
        interface Authorization {
            authorized: boolean;
            timestamp: string;
            status_message?: string | null;
        }
        interface EmailsProcessed {
            timestamp: string;
            total_emails_processed: number;
            total_emails_processed_previous: number;
        }
    }
    interface Post {
        /**
         * Domain identifier.
         */
        id?: string;
        allowed_delivery_modes?: Array<'DIRECT' | 'BCC' | 'JOURNAL' | 'API' | 'RETRO_SCAN'>;
        authorization?: Post.Authorization | null;
        created_at?: string;
        dmarc_status?: 'none' | 'good' | 'invalid' | null;
        domain?: string;
        drop_dispositions?: Array<'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE'>;
        emails_processed?: Post.EmailsProcessed | null;
        /**
         * The mailbox folder to scan, for API-scanning domains.
         */
        folder?: 'AllItems' | 'Inbox' | null;
        inbox_provider?: 'Microsoft' | 'Google' | null;
        integration_id?: string | null;
        ip_restrictions?: Array<string>;
        /**
         * @deprecated Use `modified_at` instead.
         */
        last_modified?: string;
        lookback_hops?: number;
        modified_at?: string;
        o365_tenant_id?: string | null;
        regions?: Array<'GLOBAL' | 'AU' | 'DE' | 'IN' | 'US'>;
        require_tls_inbound?: boolean | null;
        require_tls_outbound?: boolean | null;
        spf_status?: 'none' | 'good' | 'neutral' | 'open' | 'invalid' | null;
        status?: 'PENDING' | 'ACTIVE' | 'FAILED' | 'TIMEOUT' | null;
        transport?: string;
    }
    namespace Post {
        interface Authorization {
            authorized: boolean;
            timestamp: string;
            status_message?: string | null;
        }
        interface EmailsProcessed {
            timestamp: string;
            total_emails_processed: number;
            total_emails_processed_previous: number;
        }
    }
    interface Put {
        /**
         * Domain identifier.
         */
        id?: string;
        allowed_delivery_modes?: Array<'DIRECT' | 'BCC' | 'JOURNAL' | 'API' | 'RETRO_SCAN'>;
        authorization?: Put.Authorization | null;
        created_at?: string;
        dmarc_status?: 'none' | 'good' | 'invalid' | null;
        domain?: string;
        drop_dispositions?: Array<'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE'>;
        emails_processed?: Put.EmailsProcessed | null;
        /**
         * The mailbox folder to scan, for API-scanning domains.
         */
        folder?: 'AllItems' | 'Inbox' | null;
        inbox_provider?: 'Microsoft' | 'Google' | null;
        integration_id?: string | null;
        ip_restrictions?: Array<string>;
        /**
         * @deprecated Use `modified_at` instead.
         */
        last_modified?: string;
        lookback_hops?: number;
        modified_at?: string;
        o365_tenant_id?: string | null;
        regions?: Array<'GLOBAL' | 'AU' | 'DE' | 'IN' | 'US'>;
        require_tls_inbound?: boolean | null;
        require_tls_outbound?: boolean | null;
        spf_status?: 'none' | 'good' | 'neutral' | 'open' | 'invalid' | null;
        status?: 'PENDING' | 'ACTIVE' | 'FAILED' | 'TIMEOUT' | null;
        transport?: string;
    }
    namespace Put {
        interface Authorization {
            authorized: boolean;
            timestamp: string;
            status_message?: string | null;
        }
        interface EmailsProcessed {
            timestamp: string;
            total_emails_processed: number;
            total_emails_processed_previous: number;
        }
    }
}
export interface DomainBulkDeleteResponse {
    /**
     * Domain identifier.
     */
    id: string;
}
export interface DomainEditResponse {
    /**
     * Domain identifier.
     */
    id?: string;
    allowed_delivery_modes?: Array<'DIRECT' | 'BCC' | 'JOURNAL' | 'API' | 'RETRO_SCAN'>;
    authorization?: DomainEditResponse.Authorization | null;
    created_at?: string;
    dmarc_status?: 'none' | 'good' | 'invalid' | null;
    domain?: string;
    drop_dispositions?: Array<'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE'>;
    emails_processed?: DomainEditResponse.EmailsProcessed | null;
    /**
     * The mailbox folder to scan, for API-scanning domains.
     */
    folder?: 'AllItems' | 'Inbox' | null;
    inbox_provider?: 'Microsoft' | 'Google' | null;
    integration_id?: string | null;
    ip_restrictions?: Array<string>;
    /**
     * @deprecated Use `modified_at` instead.
     */
    last_modified?: string;
    lookback_hops?: number;
    modified_at?: string;
    o365_tenant_id?: string | null;
    regions?: Array<'GLOBAL' | 'AU' | 'DE' | 'IN' | 'US'>;
    require_tls_inbound?: boolean | null;
    require_tls_outbound?: boolean | null;
    spf_status?: 'none' | 'good' | 'neutral' | 'open' | 'invalid' | null;
    status?: 'PENDING' | 'ACTIVE' | 'FAILED' | 'TIMEOUT' | null;
    transport?: string;
}
export declare namespace DomainEditResponse {
    interface Authorization {
        authorized: boolean;
        timestamp: string;
        status_message?: string | null;
    }
    interface EmailsProcessed {
        timestamp: string;
        total_emails_processed: number;
        total_emails_processed_previous: number;
    }
}
export interface DomainGetResponse {
    /**
     * Domain identifier.
     */
    id?: string;
    allowed_delivery_modes?: Array<'DIRECT' | 'BCC' | 'JOURNAL' | 'API' | 'RETRO_SCAN'>;
    authorization?: DomainGetResponse.Authorization | null;
    created_at?: string;
    dmarc_status?: 'none' | 'good' | 'invalid' | null;
    domain?: string;
    drop_dispositions?: Array<'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE'>;
    emails_processed?: DomainGetResponse.EmailsProcessed | null;
    /**
     * The mailbox folder to scan, for API-scanning domains.
     */
    folder?: 'AllItems' | 'Inbox' | null;
    inbox_provider?: 'Microsoft' | 'Google' | null;
    integration_id?: string | null;
    ip_restrictions?: Array<string>;
    /**
     * @deprecated Use `modified_at` instead.
     */
    last_modified?: string;
    lookback_hops?: number;
    modified_at?: string;
    o365_tenant_id?: string | null;
    regions?: Array<'GLOBAL' | 'AU' | 'DE' | 'IN' | 'US'>;
    require_tls_inbound?: boolean | null;
    require_tls_outbound?: boolean | null;
    spf_status?: 'none' | 'good' | 'neutral' | 'open' | 'invalid' | null;
    status?: 'PENDING' | 'ACTIVE' | 'FAILED' | 'TIMEOUT' | null;
    transport?: string;
}
export declare namespace DomainGetResponse {
    interface Authorization {
        authorized: boolean;
        timestamp: string;
        status_message?: string | null;
    }
    interface EmailsProcessed {
        timestamp: string;
        total_emails_processed: number;
        total_emails_processed_previous: number;
    }
}
export interface DomainCreateParams {
    /**
     * Path param: Account identifier tag.
     */
    account_id: string;
    /**
     * Body param: Delivery modes to onboard the domain through.
     */
    allowed_delivery_modes: Array<'DIRECT' | 'BCC' | 'JOURNAL' | 'API' | 'RETRO_SCAN'>;
    /**
     * Body param: The email domain to protect.
     */
    domain: string;
    /**
     * Body param: Dispositions to drop instead of delivering, e.g.
     * `["MALICIOUS", "SPAM"]`.
     */
    drop_dispositions: Array<'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE'>;
    /**
     * Body param: Source IP ranges mail is accepted from. Any other source is
     * rejected.
     */
    ip_restrictions: Array<string>;
    /**
     * Body param: Regions that process messages for this domain, e.g. `["GLOBAL"]` or
     * `["US"]`.
     */
    regions: Array<'GLOBAL' | 'AU' | 'DE' | 'IN' | 'US'>;
    /**
     * Body param: The mailbox folder to scan, for API-scanning domains.
     */
    folder?: 'AllItems' | 'Inbox' | null;
    /**
     * Body param: Identifier of the CASB integration that authorizes this domain. The
     * integration also enables API scanning, post-delivery actions, and directory
     * sync.
     */
    integration_id?: string | null;
    /**
     * Body param: Number of hops to trace back through received headers when
     * reconstructing the original message (1-20).
     */
    lookback_hops?: number | null;
    /**
     * Body param: Require TLS on inbound connections.
     */
    require_tls_inbound?: boolean | null;
    /**
     * Body param: Require TLS on outbound connections.
     */
    require_tls_outbound?: boolean | null;
    /**
     * Body param: The mail transport hostname for MX/Inline delivery — the MX record
     * Cloudflare delivers email to (e.g. `mx.example.com`).
     */
    transport?: string | null;
}
export interface DomainUpdateParams {
    /**
     * Path param: Account identifier tag.
     */
    account_id: string;
    /**
     * Body param: Delivery modes to onboard the domain through.
     */
    allowed_delivery_modes: Array<'DIRECT' | 'BCC' | 'JOURNAL' | 'API' | 'RETRO_SCAN'>;
    /**
     * Body param: Dispositions to drop instead of delivering, e.g.
     * `["MALICIOUS", "SPAM"]`.
     */
    drop_dispositions: Array<'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE'>;
    /**
     * Body param: Source IP ranges mail is accepted from. Any other source is
     * rejected.
     */
    ip_restrictions: Array<string>;
    /**
     * Body param: Regions that process messages for this domain, e.g. `["GLOBAL"]` or
     * `["US"]`.
     */
    regions: Array<'GLOBAL' | 'AU' | 'DE' | 'IN' | 'US'>;
    /**
     * Body param: The mailbox folder to scan, for API-scanning domains.
     */
    folder?: 'AllItems' | 'Inbox' | null;
    /**
     * Body param: Identifier of the CASB integration that authorizes this domain. The
     * integration also enables API scanning, post-delivery actions, and directory
     * sync.
     */
    integration_id?: string | null;
    /**
     * Body param: Number of hops to trace back through received headers when
     * reconstructing the original message (1-20).
     */
    lookback_hops?: number | null;
    /**
     * Body param: Require TLS on inbound connections.
     */
    require_tls_inbound?: boolean | null;
    /**
     * Body param: Require TLS on outbound connections.
     */
    require_tls_outbound?: boolean | null;
    /**
     * Body param: The mail transport hostname for MX/Inline delivery — the MX record
     * Cloudflare delivers email to (e.g. `mx.example.com`).
     */
    transport?: string | null;
}
export interface DomainListParams extends V4PagePaginationArrayParams {
    /**
     * Path param: Account identifier tag.
     */
    account_id: string;
    /**
     * Query param: Currently active delivery mode to filter by.
     */
    active_delivery_mode?: 'DIRECT' | 'BCC' | 'JOURNAL' | 'API' | 'RETRO_SCAN';
    /**
     * Query param: Delivery mode to filter by.
     */
    allowed_delivery_mode?: 'DIRECT' | 'BCC' | 'JOURNAL' | 'API' | 'RETRO_SCAN';
    /**
     * Query param: The sorting direction.
     */
    direction?: 'asc' | 'desc';
    /**
     * Query param: Domain names to filter by.
     */
    domain?: Array<string>;
    /**
     * Query param: Integration ID to filter by.
     */
    integration_id?: string;
    /**
     * Query param: Field to sort by.
     */
    order?: 'domain' | 'created_at';
    /**
     * Query param: Search term for filtering records. Behavior may change.
     */
    search?: string;
    /**
     * Query param: Filters response to domains with the provided status.
     */
    status?: 'PENDING' | 'ACTIVE' | 'FAILED' | 'TIMEOUT' | null;
}
export interface DomainDeleteParams {
    /**
     * Account identifier tag.
     */
    account_id: string;
}
export interface DomainBatchParams {
    /**
     * Path param: Account identifier tag.
     */
    account_id: string;
    /**
     * Body param: IDs of the domains to remove protection from.
     */
    deletes: Array<DomainBatchParams.Delete>;
    /**
     * Body param: Partial updates to apply — each entry carries the domain's ID and
     * only the fields to change.
     */
    patches: Array<DomainBatchParams.Patch>;
    /**
     * Body param: Domains to add protection for.
     */
    posts: Array<DomainBatchParams.Post>;
    /**
     * Body param: Full replacements to apply — each entry carries the domain's ID and
     * every field of its new value.
     */
    puts: Array<DomainBatchParams.Put>;
}
export declare namespace DomainBatchParams {
    interface Delete {
        /**
         * Domain identifier.
         */
        id: string;
    }
    interface Patch {
        /**
         * Domain identifier.
         */
        id: string;
        /**
         * Delivery modes to onboard the domain through.
         */
        allowed_delivery_modes?: Array<'DIRECT' | 'BCC' | 'JOURNAL' | 'API' | 'RETRO_SCAN'>;
        /**
         * Dispositions to drop instead of delivering, e.g. `["MALICIOUS", "SPAM"]`.
         */
        drop_dispositions?: Array<'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE'>;
        /**
         * The mailbox folder to scan, for API-scanning domains.
         */
        folder?: 'AllItems' | 'Inbox' | null;
        /**
         * Identifier of the CASB integration that authorizes this domain. The integration
         * also enables API scanning, post-delivery actions, and directory sync.
         */
        integration_id?: string | null;
        /**
         * Source IP ranges mail is accepted from. Any other source is rejected.
         */
        ip_restrictions?: Array<string>;
        /**
         * Number of hops to trace back through received headers when reconstructing the
         * original message (1-20).
         */
        lookback_hops?: number;
        /**
         * Regions that process messages for this domain, e.g. `["GLOBAL"]` or `["US"]`.
         */
        regions?: Array<'GLOBAL' | 'AU' | 'DE' | 'IN' | 'US'>;
        /**
         * Require TLS on inbound connections.
         */
        require_tls_inbound?: boolean;
        /**
         * Require TLS on outbound connections.
         */
        require_tls_outbound?: boolean;
        /**
         * The mail transport hostname for MX/Inline delivery — the MX record Cloudflare
         * delivers email to (e.g. `mx.example.com`).
         */
        transport?: string;
    }
    interface Post {
        /**
         * Delivery modes to onboard the domain through.
         */
        allowed_delivery_modes: Array<'DIRECT' | 'BCC' | 'JOURNAL' | 'API' | 'RETRO_SCAN'>;
        /**
         * The email domain to protect.
         */
        domain: string;
        /**
         * Dispositions to drop instead of delivering, e.g. `["MALICIOUS", "SPAM"]`.
         */
        drop_dispositions: Array<'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE'>;
        /**
         * Source IP ranges mail is accepted from. Any other source is rejected.
         */
        ip_restrictions: Array<string>;
        /**
         * Regions that process messages for this domain, e.g. `["GLOBAL"]` or `["US"]`.
         */
        regions: Array<'GLOBAL' | 'AU' | 'DE' | 'IN' | 'US'>;
        /**
         * The mailbox folder to scan, for API-scanning domains.
         */
        folder?: 'AllItems' | 'Inbox' | null;
        /**
         * Identifier of the CASB integration that authorizes this domain. The integration
         * also enables API scanning, post-delivery actions, and directory sync.
         */
        integration_id?: string | null;
        /**
         * Number of hops to trace back through received headers when reconstructing the
         * original message (1-20).
         */
        lookback_hops?: number | null;
        /**
         * Require TLS on inbound connections.
         */
        require_tls_inbound?: boolean | null;
        /**
         * Require TLS on outbound connections.
         */
        require_tls_outbound?: boolean | null;
        /**
         * The mail transport hostname for MX/Inline delivery — the MX record Cloudflare
         * delivers email to (e.g. `mx.example.com`).
         */
        transport?: string | null;
    }
    /**
     * Request body for replacing an email domain. The `domain` field is intentionally
     * absent — the domain name is immutable after creation.
     */
    interface Put {
        /**
         * Domain identifier.
         */
        id: string;
        /**
         * Delivery modes to onboard the domain through.
         */
        allowed_delivery_modes: Array<'DIRECT' | 'BCC' | 'JOURNAL' | 'API' | 'RETRO_SCAN'>;
        /**
         * Dispositions to drop instead of delivering, e.g. `["MALICIOUS", "SPAM"]`.
         */
        drop_dispositions: Array<'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE'>;
        /**
         * Source IP ranges mail is accepted from. Any other source is rejected.
         */
        ip_restrictions: Array<string>;
        /**
         * Regions that process messages for this domain, e.g. `["GLOBAL"]` or `["US"]`.
         */
        regions: Array<'GLOBAL' | 'AU' | 'DE' | 'IN' | 'US'>;
        /**
         * The mailbox folder to scan, for API-scanning domains.
         */
        folder?: 'AllItems' | 'Inbox' | null;
        /**
         * Identifier of the CASB integration that authorizes this domain. The integration
         * also enables API scanning, post-delivery actions, and directory sync.
         */
        integration_id?: string | null;
        /**
         * Number of hops to trace back through received headers when reconstructing the
         * original message (1-20).
         */
        lookback_hops?: number | null;
        /**
         * Require TLS on inbound connections.
         */
        require_tls_inbound?: boolean | null;
        /**
         * Require TLS on outbound connections.
         */
        require_tls_outbound?: boolean | null;
        /**
         * The mail transport hostname for MX/Inline delivery — the MX record Cloudflare
         * delivers email to (e.g. `mx.example.com`).
         */
        transport?: string | null;
    }
}
export interface DomainBulkDeleteParams {
    /**
     * Account identifier tag.
     */
    account_id: string;
}
export interface DomainEditParams {
    /**
     * Path param: Account identifier tag.
     */
    account_id: string;
    /**
     * Body param: Delivery modes to onboard the domain through.
     */
    allowed_delivery_modes?: Array<'DIRECT' | 'BCC' | 'JOURNAL' | 'API' | 'RETRO_SCAN'>;
    /**
     * Body param: Dispositions to drop instead of delivering, e.g.
     * `["MALICIOUS", "SPAM"]`.
     */
    drop_dispositions?: Array<'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE'>;
    /**
     * Body param: The mailbox folder to scan, for API-scanning domains.
     */
    folder?: 'AllItems' | 'Inbox' | null;
    /**
     * Body param: Identifier of the CASB integration that authorizes this domain. The
     * integration also enables API scanning, post-delivery actions, and directory
     * sync.
     */
    integration_id?: string | null;
    /**
     * Body param: Source IP ranges mail is accepted from. Any other source is
     * rejected.
     */
    ip_restrictions?: Array<string>;
    /**
     * Body param: Number of hops to trace back through received headers when
     * reconstructing the original message (1-20).
     */
    lookback_hops?: number;
    /**
     * Body param: Regions that process messages for this domain, e.g. `["GLOBAL"]` or
     * `["US"]`.
     */
    regions?: Array<'GLOBAL' | 'AU' | 'DE' | 'IN' | 'US'>;
    /**
     * Body param: Require TLS on inbound connections.
     */
    require_tls_inbound?: boolean;
    /**
     * Body param: Require TLS on outbound connections.
     */
    require_tls_outbound?: boolean;
    /**
     * Body param: The mail transport hostname for MX/Inline delivery — the MX record
     * Cloudflare delivers email to (e.g. `mx.example.com`).
     */
    transport?: string;
}
export interface DomainGetParams {
    /**
     * Account identifier tag.
     */
    account_id: string;
}
export declare namespace Domains {
    export { type DomainCreateResponse as DomainCreateResponse, type DomainUpdateResponse as DomainUpdateResponse, type DomainListResponse as DomainListResponse, type DomainDeleteResponse as DomainDeleteResponse, type DomainBatchResponse as DomainBatchResponse, type DomainBulkDeleteResponse as DomainBulkDeleteResponse, type DomainEditResponse as DomainEditResponse, type DomainGetResponse as DomainGetResponse, type DomainListResponsesV4PagePaginationArray as DomainListResponsesV4PagePaginationArray, type DomainBulkDeleteResponsesSinglePage as DomainBulkDeleteResponsesSinglePage, type DomainCreateParams as DomainCreateParams, type DomainUpdateParams as DomainUpdateParams, type DomainListParams as DomainListParams, type DomainDeleteParams as DomainDeleteParams, type DomainBatchParams as DomainBatchParams, type DomainBulkDeleteParams as DomainBulkDeleteParams, type DomainEditParams as DomainEditParams, type DomainGetParams as DomainGetParams, };
}
//# sourceMappingURL=domains.d.mts.map