import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as OverridesAPI from 'cloudflare/resources/firewall/waf/overrides';
import { V4PagePaginationArray, type V4PagePaginationArrayParams } from 'cloudflare/pagination';
export declare class Overrides extends APIResource {
    /**
     * Creates a URI-based WAF override for a zone.
     *
     * **Note:** Applies only to the
     * [previous version of WAF managed rules](https://developers.cloudflare.com/support/firewall/managed-rules-web-application-firewall-waf/understanding-waf-managed-rules-web-application-firewall/).
     */
    create(zoneIdentifier: string, body: OverrideCreateParams, options?: Core.RequestOptions): Core.APIPromise<WAFOverride | null>;
    /**
     * Updates an existing URI-based WAF override.
     *
     * **Note:** Applies only to the
     * [previous version of WAF managed rules](https://developers.cloudflare.com/support/firewall/managed-rules-web-application-firewall-waf/understanding-waf-managed-rules-web-application-firewall/).
     */
    update(zoneIdentifier: string, id: string, body: OverrideUpdateParams, options?: Core.RequestOptions): Core.APIPromise<WAFOverride | null>;
    /**
     * Fetches the URI-based WAF overrides in a zone.
     *
     * **Note:** Applies only to the
     * [previous version of WAF managed rules](https://developers.cloudflare.com/support/firewall/managed-rules-web-application-firewall-waf/understanding-waf-managed-rules-web-application-firewall/).
     */
    list(zoneIdentifier: string, query?: OverrideListParams, options?: Core.RequestOptions): Core.PagePromise<WAFOverridesV4PagePaginationArray, WAFOverride>;
    list(zoneIdentifier: string, options?: Core.RequestOptions): Core.PagePromise<WAFOverridesV4PagePaginationArray, WAFOverride>;
    /**
     * Deletes an existing URI-based WAF override.
     *
     * **Note:** Applies only to the
     * [previous version of WAF managed rules](https://developers.cloudflare.com/support/firewall/managed-rules-web-application-firewall-waf/understanding-waf-managed-rules-web-application-firewall/).
     */
    delete(zoneIdentifier: string, id: string, options?: Core.RequestOptions): Core.APIPromise<OverrideDeleteResponse>;
    /**
     * Fetches the details of a URI-based WAF override.
     *
     * **Note:** Applies only to the
     * [previous version of WAF managed rules](https://developers.cloudflare.com/support/firewall/managed-rules-web-application-firewall-waf/understanding-waf-managed-rules-web-application-firewall/).
     */
    get(zoneIdentifier: string, id: string, options?: Core.RequestOptions): Core.APIPromise<WAFOverride | null>;
}
export declare class WAFOverridesV4PagePaginationArray extends V4PagePaginationArray<WAFOverride> {
}
export interface WAFOverride {
    /**
     * The unique identifier of the WAF override.
     */
    id?: string;
    /**
     * An informative summary of the current URI-based WAF override.
     */
    description?: string | null;
    /**
     * An object that allows you to enable or disable WAF rule groups for the current
     * WAF override. Each key of this object must be the ID of a WAF rule group, and
     * each value must be a valid WAF action (usually `default` or `disable`). When
     * creating a new URI-based WAF override, you must provide a `groups` object or a
     * `rules` object.
     */
    groups?: Record<string, unknown>;
    /**
     * When true, indicates that the WAF package is currently paused.
     */
    paused?: boolean;
    /**
     * The relative priority of the current URI-based WAF override when multiple
     * overrides match a single URL. A lower number indicates higher priority. Higher
     * priority overrides may overwrite values set by lower priority overrides.
     */
    priority?: number;
    /**
     * Specifies that, when a WAF rule matches, its configured action will be replaced
     * by the action configured in this object.
     */
    rewrite_action?: WAFOverride.RewriteAction;
    /**
     * An object that allows you to override the action of specific WAF rules. Each key
     * of this object must be the ID of a WAF rule, and each value must be a valid WAF
     * action. Unless you are disabling a rule, ensure that you also enable the rule
     * group that this WAF rule belongs to. When creating a new URI-based WAF override,
     * you must provide a `groups` object or a `rules` object.
     */
    rules?: Record<string, 'challenge' | 'block' | 'simulate' | 'disable' | 'default'>;
    /**
     * The URLs to include in the current WAF override. You can use wildcards. Each
     * entered URL will be escaped before use, which means you can only use simple
     * wildcard patterns.
     */
    urls?: Array<string>;
}
export declare namespace WAFOverride {
    /**
     * Specifies that, when a WAF rule matches, its configured action will be replaced
     * by the action configured in this object.
     */
    interface RewriteAction {
        /**
         * The WAF rule action to apply.
         */
        block?: 'challenge' | 'block' | 'simulate' | 'disable' | 'default';
        challenge?: string;
        default?: string;
        /**
         * The WAF rule action to apply.
         */
        disable?: 'challenge' | 'block' | 'simulate' | 'disable' | 'default';
        simulate?: string;
    }
}
export interface OverrideDeleteResponse {
    /**
     * The unique identifier of the WAF override.
     */
    id?: string;
}
export type OverrideCreateParams = unknown;
export type OverrideUpdateParams = unknown;
export interface OverrideListParams extends V4PagePaginationArrayParams {
}
export declare namespace Overrides {
    export import WAFOverride = OverridesAPI.WAFOverride;
    export import OverrideDeleteResponse = OverridesAPI.OverrideDeleteResponse;
    export import WAFOverridesV4PagePaginationArray = OverridesAPI.WAFOverridesV4PagePaginationArray;
    export import OverrideCreateParams = OverridesAPI.OverrideCreateParams;
    export import OverrideUpdateParams = OverridesAPI.OverrideUpdateParams;
    export import OverrideListParams = OverridesAPI.OverrideListParams;
}
//# sourceMappingURL=overrides.d.ts.map