import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as CustomAPI from 'cloudflare/resources/zero-trust/dlp/profiles/custom';
export declare class Custom extends APIResource {
    /**
     * Creates a set of DLP custom profiles.
     */
    create(params: CustomCreateParams, options?: Core.RequestOptions): Core.APIPromise<CustomCreateResponse | null>;
    /**
     * Updates a DLP custom profile.
     */
    update(profileId: string, params: CustomUpdateParams, options?: Core.RequestOptions): Core.APIPromise<DLPCustomProfile>;
    /**
     * Deletes a DLP custom profile.
     */
    delete(profileId: string, params: CustomDeleteParams, options?: Core.RequestOptions): Core.APIPromise<CustomDeleteResponse>;
    /**
     * Fetches a custom DLP profile.
     */
    get(profileId: string, params: CustomGetParams, options?: Core.RequestOptions): Core.APIPromise<DLPCustomProfile>;
}
export interface DLPCustomProfile {
    /**
     * The ID for this profile
     */
    id?: string;
    /**
     * Related DLP policies will trigger when the match count exceeds the number set.
     */
    allowed_match_count?: number;
    /**
     * Scan the context of predefined entries to only return matches surrounded by
     * keywords.
     */
    context_awareness?: DLPCustomProfile.ContextAwareness;
    created_at?: string;
    /**
     * The description of the profile.
     */
    description?: string;
    /**
     * The entries for this profile.
     */
    entries?: Array<DLPCustomProfile.Entry>;
    /**
     * The name of the profile.
     */
    name?: string;
    /**
     * The type of the profile.
     */
    type?: 'custom';
    updated_at?: string;
}
export declare namespace DLPCustomProfile {
    /**
     * Scan the context of predefined entries to only return matches surrounded by
     * keywords.
     */
    interface ContextAwareness {
        /**
         * If true, scan the context of predefined entries to only return matches
         * surrounded by keywords.
         */
        enabled: boolean;
        /**
         * Content types to exclude from context analysis and return all matches.
         */
        skip: ContextAwareness.Skip;
    }
    namespace ContextAwareness {
        /**
         * Content types to exclude from context analysis and return all matches.
         */
        interface Skip {
            /**
             * If the content type is a file, skip context analysis and return all matches.
             */
            files: boolean;
        }
    }
    /**
     * A custom entry that matches a profile
     */
    interface Entry {
        /**
         * The ID for this entry
         */
        id?: string;
        created_at?: string;
        /**
         * Whether the entry is enabled or not.
         */
        enabled?: boolean;
        /**
         * The name of the entry.
         */
        name?: string;
        /**
         * A pattern that matches an entry
         */
        pattern?: Entry.Pattern;
        /**
         * ID of the parent profile
         */
        profile_id?: unknown;
        updated_at?: string;
    }
    namespace Entry {
        /**
         * A pattern that matches an entry
         */
        interface Pattern {
            /**
             * The regex pattern.
             */
            regex: string;
            /**
             * Validation algorithm for the pattern. This algorithm will get run on potential
             * matches, and if it returns false, the entry will not be matched.
             */
            validation?: 'luhn';
        }
    }
}
export type CustomCreateResponse = Array<DLPCustomProfile>;
export type CustomDeleteResponse = unknown | string | null;
export interface CustomCreateParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Body param:
     */
    profiles: Array<CustomCreateParams.Profile>;
}
export declare namespace CustomCreateParams {
    interface Profile {
        /**
         * Related DLP policies will trigger when the match count exceeds the number set.
         */
        allowed_match_count?: number;
        /**
         * Scan the context of predefined entries to only return matches surrounded by
         * keywords.
         */
        context_awareness?: Profile.ContextAwareness;
        /**
         * The description of the profile.
         */
        description?: string;
        /**
         * The entries for this profile.
         */
        entries?: Array<Profile.Entry>;
        /**
         * The name of the profile.
         */
        name?: string;
    }
    namespace Profile {
        /**
         * Scan the context of predefined entries to only return matches surrounded by
         * keywords.
         */
        interface ContextAwareness {
            /**
             * If true, scan the context of predefined entries to only return matches
             * surrounded by keywords.
             */
            enabled: boolean;
            /**
             * Content types to exclude from context analysis and return all matches.
             */
            skip: ContextAwareness.Skip;
        }
        namespace ContextAwareness {
            /**
             * Content types to exclude from context analysis and return all matches.
             */
            interface Skip {
                /**
                 * If the content type is a file, skip context analysis and return all matches.
                 */
                files: boolean;
            }
        }
        /**
         * A custom entry create payload
         */
        interface Entry {
            /**
             * Whether the entry is enabled or not.
             */
            enabled: boolean;
            /**
             * The name of the entry.
             */
            name: string;
            /**
             * A pattern that matches an entry
             */
            pattern: Entry.Pattern;
        }
        namespace Entry {
            /**
             * A pattern that matches an entry
             */
            interface Pattern {
                /**
                 * The regex pattern.
                 */
                regex: string;
                /**
                 * Validation algorithm for the pattern. This algorithm will get run on potential
                 * matches, and if it returns false, the entry will not be matched.
                 */
                validation?: 'luhn';
            }
        }
    }
}
export interface CustomUpdateParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Body param: Related DLP policies will trigger when the match count exceeds the
     * number set.
     */
    allowed_match_count?: number;
    /**
     * Body param: Scan the context of predefined entries to only return matches
     * surrounded by keywords.
     */
    context_awareness?: CustomUpdateParams.ContextAwareness;
    /**
     * Body param: The description of the profile.
     */
    description?: string;
    /**
     * Body param: The custom entries for this profile. Array elements with IDs are
     * modifying the existing entry with that ID. Elements without ID will create new
     * entries. Any entry not in the list will be deleted.
     */
    entries?: Array<CustomUpdateParams.Entry>;
    /**
     * Body param: The name of the profile.
     */
    name?: string;
    /**
     * Body param: Entries from other profiles (e.g. pre-defined Cloudflare profiles,
     * or your Microsoft Information Protection profiles).
     */
    shared_entries?: Array<CustomUpdateParams.DLPSharedEntryUpdatePredefined | CustomUpdateParams.DLPSharedEntryUpdateIntegration>;
}
export declare namespace CustomUpdateParams {
    /**
     * Scan the context of predefined entries to only return matches surrounded by
     * keywords.
     */
    interface ContextAwareness {
        /**
         * If true, scan the context of predefined entries to only return matches
         * surrounded by keywords.
         */
        enabled: boolean;
        /**
         * Content types to exclude from context analysis and return all matches.
         */
        skip: ContextAwareness.Skip;
    }
    namespace ContextAwareness {
        /**
         * Content types to exclude from context analysis and return all matches.
         */
        interface Skip {
            /**
             * If the content type is a file, skip context analysis and return all matches.
             */
            files: boolean;
        }
    }
    /**
     * A custom entry that matches a profile
     */
    interface Entry {
        /**
         * Whether the entry is enabled or not.
         */
        enabled?: boolean;
        /**
         * The name of the entry.
         */
        name?: string;
        /**
         * A pattern that matches an entry
         */
        pattern?: Entry.Pattern;
        /**
         * ID of the parent profile
         */
        profile_id?: unknown;
    }
    namespace Entry {
        /**
         * A pattern that matches an entry
         */
        interface Pattern {
            /**
             * The regex pattern.
             */
            regex: string;
            /**
             * Validation algorithm for the pattern. This algorithm will get run on potential
             * matches, and if it returns false, the entry will not be matched.
             */
            validation?: 'luhn';
        }
    }
    /**
     * Properties of a predefined entry in a custom profile
     */
    interface DLPSharedEntryUpdatePredefined {
        /**
         * Whether the entry is enabled or not.
         */
        enabled?: boolean;
    }
    /**
     * Properties of an integration entry in a custom profile
     */
    interface DLPSharedEntryUpdateIntegration {
        /**
         * Whether the entry is enabled or not.
         */
        enabled?: boolean;
    }
}
export interface CustomDeleteParams {
    /**
     * Identifier
     */
    account_id: string;
}
export interface CustomGetParams {
    /**
     * Identifier
     */
    account_id: string;
}
export declare namespace Custom {
    export import DLPCustomProfile = CustomAPI.DLPCustomProfile;
    export import CustomCreateResponse = CustomAPI.CustomCreateResponse;
    export import CustomDeleteResponse = CustomAPI.CustomDeleteResponse;
    export import CustomCreateParams = CustomAPI.CustomCreateParams;
    export import CustomUpdateParams = CustomAPI.CustomUpdateParams;
    export import CustomDeleteParams = CustomAPI.CustomDeleteParams;
    export import CustomGetParams = CustomAPI.CustomGetParams;
}
//# sourceMappingURL=custom.d.ts.map