import { APIResource } from "../../../../core/resource.mjs";
import * as CustomAPI from "./custom.mjs";
import * as ProfilesAPI from "./profiles.mjs";
import { APIPromise } from "../../../../core/api-promise.mjs";
import { RequestOptions } from "../../../../internal/request-options.mjs";
export declare class BaseCustom extends APIResource {
    static readonly _key: readonly ['zeroTrust', 'dlp', 'profiles', 'custom'];
    /**
     * Creates a DLP custom profile.
     *
     * @example
     * ```ts
     * const profile =
     *   await client.zeroTrust.dlp.profiles.custom.create({
     *     account_id: 'account_id',
     *     name: 'name',
     *   });
     * ```
     */
    create(params: CustomCreateParams, options?: RequestOptions): APIPromise<ProfilesAPI.Profile>;
    /**
     * Updates a DLP custom profile.
     *
     * @example
     * ```ts
     * const profile =
     *   await client.zeroTrust.dlp.profiles.custom.update(
     *     '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
     *     { account_id: 'account_id', name: 'name' },
     *   );
     * ```
     */
    update(profileID: string, params: CustomUpdateParams, options?: RequestOptions): APIPromise<ProfilesAPI.Profile>;
    /**
     * Deletes a DLP custom profile.
     *
     * @example
     * ```ts
     * const custom =
     *   await client.zeroTrust.dlp.profiles.custom.delete(
     *     '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
     *     { account_id: 'account_id' },
     *   );
     * ```
     */
    delete(profileID: string, params: CustomDeleteParams, options?: RequestOptions): APIPromise<CustomDeleteResponse | null>;
    /**
     * Fetches a custom DLP profile by id.
     *
     * @example
     * ```ts
     * const profile =
     *   await client.zeroTrust.dlp.profiles.custom.get(
     *     '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
     *     { account_id: 'account_id' },
     *   );
     * ```
     */
    get(profileID: string, params: CustomGetParams, options?: RequestOptions): APIPromise<ProfilesAPI.Profile>;
}
export declare class Custom extends BaseCustom {
}
export interface CustomProfile {
    /**
     * The id of the profile (uuid).
     */
    id: string;
    /**
     * Related DLP policies will trigger when the match count exceeds the number set.
     */
    allowed_match_count: number;
    /**
     * When the profile was created.
     */
    created_at: string;
    /**
     * The name of the profile.
     */
    name: string;
    ocr_enabled: boolean;
    /**
     * When the profile was lasted updated.
     */
    updated_at: string;
    ai_context_enabled?: boolean;
    confidence_threshold?: 'low' | 'medium' | 'high' | 'very_high';
    /**
     * @deprecated Scan the context of predefined entries to only return matches
     * surrounded by keywords.
     */
    context_awareness?: ProfilesAPI.ContextAwareness;
    /**
     * Data classes associated with this profile.
     */
    data_classes?: Array<string>;
    /**
     * Data tags associated with this profile.
     */
    data_tags?: Array<string>;
    /**
     * The description of the profile.
     */
    description?: string | null;
    /**
     * @deprecated
     */
    entries?: Array<CustomProfile.CustomEntry | CustomProfile.CustomPromptTopicEntry | CustomProfile.PredefinedEntry | CustomProfile.IntegrationEntry | CustomProfile.ExactDataEntry | CustomProfile.DocumentFingerprintEntry | CustomProfile.WordListEntry>;
    /**
     * Sensitivity levels associated with this profile.
     */
    sensitivity_levels?: Array<CustomProfile.SensitivityLevel>;
    shared_entries?: Array<CustomProfile.CustomEntry | CustomProfile.CustomPromptTopicEntry | CustomProfile.PredefinedEntry | CustomProfile.IntegrationEntry | CustomProfile.ExactDataEntry | CustomProfile.DocumentFingerprintEntry | CustomProfile.WordListEntry>;
}
export declare namespace CustomProfile {
    interface CustomEntry {
        id: string;
        created_at: string;
        /**
         * @deprecated
         */
        enabled: boolean;
        name: string;
        pattern: CustomAPI.Pattern;
        type: 'custom';
        updated_at: string;
        description?: string | null;
        /**
         * @deprecated
         */
        profile_id?: string | null;
    }
    interface CustomPromptTopicEntry {
        id: string;
        created_at: string;
        /**
         * @deprecated
         */
        enabled: boolean;
        name: string;
        type: 'custom_prompt_topic';
        updated_at: string;
        /**
         * The optional description of the custom prompt topic entry.
         */
        description?: string | null;
    }
    interface PredefinedEntry {
        id: string;
        confidence: PredefinedEntry.Confidence;
        enabled: boolean;
        name: string;
        type: 'predefined';
        /**
         * Whether this entry is deprecated for new use. This is computed from the static
         * catalog and emitted only when true.
         */
        deprecated?: boolean;
        /**
         * @deprecated
         */
        profile_id?: string | null;
        /**
         * A Predefined AI prompt classification topic entry.
         */
        variant?: PredefinedEntry.UnionMember0 | PredefinedEntry.UnionMember1;
    }
    namespace PredefinedEntry {
        interface Confidence {
            /**
             * Indicates whether this entry has AI remote service validation.
             */
            ai_context_available: boolean;
            /**
             * Indicates whether this entry has any form of validation that is not an AI remote
             * service.
             */
            available: boolean;
        }
        /**
         * A Predefined AI prompt classification topic entry.
         */
        interface UnionMember0 {
            topic_type: 'Intent' | 'Content';
            type: 'PromptTopic';
            /**
             * A customer-facing explanation of what this predefined AI prompt topic
             * represents.
             */
            description?: string | null;
        }
        /**
         * A general predefined entry.
         */
        interface UnionMember1 {
            type: 'General';
            /**
             * A customer-facing explanation of what this predefined entry represents.
             */
            description?: string | null;
        }
    }
    interface IntegrationEntry {
        id: string;
        created_at: string;
        enabled: boolean;
        name: string;
        type: 'integration';
        updated_at: string;
        profile_id?: string | null;
    }
    interface ExactDataEntry {
        id: string;
        /**
         * Only applies to custom word lists. Determines if the words should be matched in
         * a case-sensitive manner Cannot be set to false if secret is true
         */
        case_sensitive: boolean;
        created_at: string;
        enabled: boolean;
        name: string;
        secret: boolean;
        type: 'exact_data';
        updated_at: string;
        /**
         * The optional description of the exact data entry.
         */
        description?: string | null;
    }
    interface DocumentFingerprintEntry {
        id: string;
        created_at: string;
        enabled: boolean;
        name: string;
        type: 'document_fingerprint';
        updated_at: string;
        /**
         * The optional description of the document fingerprint entry.
         */
        description?: string | null;
    }
    interface WordListEntry {
        id: string;
        created_at: string;
        enabled: boolean;
        name: string;
        type: 'word_list';
        updated_at: string;
        word_list: unknown;
        profile_id?: string | null;
    }
    /**
     * A reference pairing a sensitivity group with a specific level within that group.
     */
    interface SensitivityLevel {
        group_id: string;
        level_id: string;
    }
    interface CustomEntry {
        id: string;
        created_at: string;
        /**
         * @deprecated
         */
        enabled: boolean;
        name: string;
        pattern: CustomAPI.Pattern;
        type: 'custom';
        updated_at: string;
        description?: string | null;
        /**
         * @deprecated
         */
        profile_id?: string | null;
    }
    interface CustomPromptTopicEntry {
        id: string;
        created_at: string;
        /**
         * @deprecated
         */
        enabled: boolean;
        name: string;
        type: 'custom_prompt_topic';
        updated_at: string;
        /**
         * The optional description of the custom prompt topic entry.
         */
        description?: string | null;
    }
    interface PredefinedEntry {
        id: string;
        confidence: PredefinedEntry.Confidence;
        enabled: boolean;
        name: string;
        type: 'predefined';
        /**
         * Whether this entry is deprecated for new use. This is computed from the static
         * catalog and emitted only when true.
         */
        deprecated?: boolean;
        /**
         * @deprecated
         */
        profile_id?: string | null;
        /**
         * A Predefined AI prompt classification topic entry.
         */
        variant?: PredefinedEntry.UnionMember0 | PredefinedEntry.UnionMember1;
    }
    namespace PredefinedEntry {
        interface Confidence {
            /**
             * Indicates whether this entry has AI remote service validation.
             */
            ai_context_available: boolean;
            /**
             * Indicates whether this entry has any form of validation that is not an AI remote
             * service.
             */
            available: boolean;
        }
        /**
         * A Predefined AI prompt classification topic entry.
         */
        interface UnionMember0 {
            topic_type: 'Intent' | 'Content';
            type: 'PromptTopic';
            /**
             * A customer-facing explanation of what this predefined AI prompt topic
             * represents.
             */
            description?: string | null;
        }
        /**
         * A general predefined entry.
         */
        interface UnionMember1 {
            type: 'General';
            /**
             * A customer-facing explanation of what this predefined entry represents.
             */
            description?: string | null;
        }
    }
    interface IntegrationEntry {
        id: string;
        created_at: string;
        enabled: boolean;
        name: string;
        type: 'integration';
        updated_at: string;
        profile_id?: string | null;
    }
    interface ExactDataEntry {
        id: string;
        /**
         * Only applies to custom word lists. Determines if the words should be matched in
         * a case-sensitive manner Cannot be set to false if secret is true
         */
        case_sensitive: boolean;
        created_at: string;
        enabled: boolean;
        name: string;
        secret: boolean;
        type: 'exact_data';
        updated_at: string;
        /**
         * The optional description of the exact data entry.
         */
        description?: string | null;
    }
    interface DocumentFingerprintEntry {
        id: string;
        created_at: string;
        enabled: boolean;
        name: string;
        type: 'document_fingerprint';
        updated_at: string;
        /**
         * The optional description of the document fingerprint entry.
         */
        description?: string | null;
    }
    interface WordListEntry {
        id: string;
        created_at: string;
        enabled: boolean;
        name: string;
        type: 'word_list';
        updated_at: string;
        word_list: unknown;
        profile_id?: string | null;
    }
}
export interface Pattern {
    regex: string;
    /**
     * @deprecated
     */
    validation?: 'luhn';
}
export interface PatternParam {
    regex: string;
    /**
     * @deprecated
     */
    validation?: 'luhn';
}
export type CustomDeleteResponse = unknown;
export interface CustomCreateParams {
    /**
     * Path param
     */
    account_id: string;
    /**
     * Body param
     */
    name: string;
    /**
     * Body param
     */
    ai_context_enabled?: boolean;
    /**
     * Body param: Related DLP policies will trigger when the match count exceeds the
     * number set.
     */
    allowed_match_count?: number;
    /**
     * Body param
     */
    confidence_threshold?: string | null;
    /**
     * @deprecated Body param: Scan the context of predefined entries to only return
     * matches surrounded by keywords.
     */
    context_awareness?: ProfilesAPI.ContextAwarenessParam;
    /**
     * Body param: Data class IDs to associate with the profile.
     */
    data_classes?: Array<string>;
    /**
     * Body param: Data tag IDs to associate with the profile.
     */
    data_tags?: Array<string>;
    /**
     * Body param: The description of the profile.
     */
    description?: string | null;
    /**
     * Body param
     */
    entries?: Array<CustomCreateParams.DLPNewCustomEntry | CustomCreateParams.DLPNewWordListEntry>;
    /**
     * Body param
     */
    ocr_enabled?: boolean;
    /**
     * Body param: Sensitivity levels to associate with the profile.
     */
    sensitivity_levels?: Array<CustomCreateParams.SensitivityLevel>;
    /**
     * Body param: Entries from other profiles (e.g. pre-defined Cloudflare profiles,
     * or your Microsoft Information Protection profiles).
     */
    shared_entries?: Array<CustomCreateParams.SharedEntry>;
}
export declare namespace CustomCreateParams {
    interface DLPNewCustomEntry {
        enabled: boolean;
        name: string;
        pattern: CustomAPI.PatternParam;
        description?: string | null;
    }
    interface DLPNewWordListEntry {
        enabled: boolean;
        name: string;
        words: Array<string>;
    }
    /**
     * A reference pairing a sensitivity group with a specific level within that group.
     */
    interface SensitivityLevel {
        group_id: string;
        level_id: string;
    }
    interface SharedEntry {
        enabled: boolean;
        entry_id: string;
    }
}
export interface CustomUpdateParams {
    /**
     * Path param
     */
    account_id: string;
    /**
     * Body param
     */
    name: string;
    /**
     * Body param
     */
    ai_context_enabled?: boolean;
    /**
     * Body param
     */
    allowed_match_count?: number | null;
    /**
     * Body param
     */
    confidence_threshold?: string | null;
    /**
     * @deprecated Body param: Scan the context of predefined entries to only return
     * matches surrounded by keywords.
     */
    context_awareness?: ProfilesAPI.ContextAwarenessParam;
    /**
     * Body param: Data class IDs to associate with the profile. If omitted, existing
     * associations are unchanged.
     */
    data_classes?: Array<string> | null;
    /**
     * Body param: Data tag IDs to associate with the profile. If omitted, existing
     * associations are unchanged.
     */
    data_tags?: Array<string> | null;
    /**
     * Body param: The description of the profile.
     */
    description?: string | null;
    /**
     * @deprecated Body param: Custom entries from this profile. If this field is
     * omitted, entries owned by this profile will not be changed.
     */
    entries?: Array<CustomUpdateParams.DLPNewCustomEntryWithID | CustomUpdateParams.DLPNewCustomEntry> | null;
    /**
     * Body param
     */
    ocr_enabled?: boolean;
    /**
     * Body param: Sensitivity levels to associate with the profile. If omitted,
     * existing associations are unchanged.
     */
    sensitivity_levels?: Array<CustomUpdateParams.SensitivityLevel> | null;
    /**
     * Body param: Other entries, e.g. predefined or integration.
     */
    shared_entries?: Array<CustomUpdateParams.SharedEntry>;
}
export declare namespace CustomUpdateParams {
    interface DLPNewCustomEntryWithID {
        enabled: boolean;
        entry_id: string;
        name: string;
        pattern: CustomAPI.PatternParam;
        description?: string | null;
    }
    interface DLPNewCustomEntry {
        enabled: boolean;
        name: string;
        pattern: CustomAPI.PatternParam;
        description?: string | null;
    }
    /**
     * A reference pairing a sensitivity group with a specific level within that group.
     */
    interface SensitivityLevel {
        group_id: string;
        level_id: string;
    }
    interface SharedEntry {
        enabled: boolean;
        entry_id: string;
    }
}
export interface CustomDeleteParams {
    account_id: string;
}
export interface CustomGetParams {
    account_id: string;
}
export declare namespace Custom {
    export { type CustomProfile as CustomProfile, type Pattern as Pattern, type CustomDeleteResponse as CustomDeleteResponse, type CustomCreateParams as CustomCreateParams, type CustomUpdateParams as CustomUpdateParams, type CustomDeleteParams as CustomDeleteParams, type CustomGetParams as CustomGetParams, };
}
//# sourceMappingURL=custom.d.mts.map