import * as Core from 'cloudflaredev/core';
import { APIResource } from 'cloudflaredev/resource';
import * as CustomAPI from 'cloudflaredev/resources/zero-trust/dlp/profiles/custom';
import * as ProfilesAPI from 'cloudflaredev/resources/zero-trust/dlp/profiles/profiles';
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<CustomProfile>;
    /**
     * 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<CustomProfile>;
}
export interface CustomProfile {
    /**
     * 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?: ProfilesAPI.ContextAwareness;
    created_at?: string;
    /**
     * The description of the profile.
     */
    description?: string;
    /**
     * The entries for this profile.
     */
    entries?: Array<CustomProfile.Entry>;
    /**
     * The name of the profile.
     */
    name?: string;
    /**
     * If true, scan images via OCR to determine if any text present matches filters.
     */
    ocr_enabled?: boolean;
    /**
     * The type of the profile.
     */
    type?: 'custom';
    updated_at?: string;
}
export declare namespace CustomProfile {
    /**
     * 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?: CustomAPI.Pattern;
        /**
         * ID of the parent profile
         */
        profile_id?: unknown;
        updated_at?: string;
    }
}
/**
 * A pattern that matches an entry
 */
export 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';
}
/**
 * A pattern that matches an entry
 */
export interface PatternParam {
    /**
     * 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<CustomProfile>;
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?: ProfilesAPI.ContextAwarenessParam;
        /**
         * The description of the profile.
         */
        description?: string;
        /**
         * The entries for this profile.
         */
        entries?: Array<Profile.Entry>;
        /**
         * The name of the profile.
         */
        name?: string;
        /**
         * If true, scan images via OCR to determine if any text present matches filters.
         */
        ocr_enabled?: boolean;
    }
    namespace Profile {
        /**
         * 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: CustomAPI.PatternParam;
        }
    }
}
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?: ProfilesAPI.ContextAwarenessParam;
    /**
     * 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: If true, scan images via OCR to determine if any text present
     * matches filters.
     */
    ocr_enabled?: boolean;
    /**
     * 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 {
    /**
     * 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?: CustomAPI.PatternParam;
        /**
         * ID of the parent profile
         */
        profile_id?: unknown;
    }
    /**
     * 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 CustomProfile = CustomAPI.CustomProfile;
    export import Pattern = CustomAPI.Pattern;
    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