import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as UARulesAPI from 'cloudflare/resources/firewall/ua-rules';
import { V4PagePaginationArray, type V4PagePaginationArrayParams } from 'cloudflare/pagination';
export declare class UARules extends APIResource {
    /**
     * Creates a new User Agent Blocking rule in a zone.
     */
    create(zoneIdentifier: string, body: UARuleCreateParams, options?: Core.RequestOptions): Core.APIPromise<UARuleCreateResponse | null>;
    /**
     * Updates an existing User Agent Blocking rule.
     */
    update(zoneIdentifier: string, id: string, body: UARuleUpdateParams, options?: Core.RequestOptions): Core.APIPromise<UARuleUpdateResponse | null>;
    /**
     * Fetches User Agent Blocking rules in a zone. You can filter the results using
     * several optional parameters.
     */
    list(zoneIdentifier: string, query?: UARuleListParams, options?: Core.RequestOptions): Core.PagePromise<UARuleListResponsesV4PagePaginationArray, UARuleListResponse>;
    list(zoneIdentifier: string, options?: Core.RequestOptions): Core.PagePromise<UARuleListResponsesV4PagePaginationArray, UARuleListResponse>;
    /**
     * Deletes an existing User Agent Blocking rule.
     */
    delete(zoneIdentifier: string, id: string, options?: Core.RequestOptions): Core.APIPromise<UARuleDeleteResponse | null>;
    /**
     * Fetches the details of a User Agent Blocking rule.
     */
    get(zoneIdentifier: string, id: string, options?: Core.RequestOptions): Core.APIPromise<UARuleGetResponse | null>;
}
export declare class UARuleListResponsesV4PagePaginationArray extends V4PagePaginationArray<UARuleListResponse> {
}
export interface FirewallUserAgentRule {
    /**
     * The unique identifier of the User Agent Blocking rule.
     */
    id?: string;
    /**
     * The configuration object for the current rule.
     */
    configuration?: FirewallUserAgentRule.Configuration;
    /**
     * An informative summary of the rule.
     */
    description?: string;
    /**
     * The action to apply to a matched request.
     */
    mode?: 'block' | 'challenge' | 'js_challenge' | 'managed_challenge';
    /**
     * When true, indicates that the rule is currently paused.
     */
    paused?: boolean;
}
export declare namespace FirewallUserAgentRule {
    /**
     * The configuration object for the current rule.
     */
    interface Configuration {
        /**
         * The configuration target for this rule. You must set the target to `ua` for User
         * Agent Blocking rules.
         */
        target?: string;
        /**
         * The exact user agent string to match. This value will be compared to the
         * received `User-Agent` HTTP header value.
         */
        value?: string;
    }
}
export type UARuleCreateResponse = unknown | string;
export type UARuleUpdateResponse = unknown | string;
export interface UARuleListResponse {
    /**
     * The unique identifier of the User Agent Blocking rule.
     */
    id?: string;
    /**
     * The configuration object for the current rule.
     */
    configuration?: UARuleListResponse.Configuration;
    /**
     * An informative summary of the rule.
     */
    description?: string;
    /**
     * The action to apply to a matched request.
     */
    mode?: 'block' | 'challenge' | 'js_challenge' | 'managed_challenge';
    /**
     * When true, indicates that the rule is currently paused.
     */
    paused?: boolean;
}
export declare namespace UARuleListResponse {
    /**
     * The configuration object for the current rule.
     */
    interface Configuration {
        /**
         * The configuration target for this rule. You must set the target to `ua` for User
         * Agent Blocking rules.
         */
        target?: string;
        /**
         * The exact user agent string to match. This value will be compared to the
         * received `User-Agent` HTTP header value.
         */
        value?: string;
    }
}
export interface UARuleDeleteResponse {
    /**
     * The unique identifier of the User Agent Blocking rule.
     */
    id?: string;
}
export type UARuleGetResponse = unknown | string;
export type UARuleCreateParams = unknown;
export type UARuleUpdateParams = unknown;
export interface UARuleListParams extends V4PagePaginationArrayParams {
    /**
     * A string to search for in the description of existing rules.
     */
    description?: string;
    /**
     * A string to search for in the description of existing rules.
     */
    description_search?: string;
    /**
     * A string to search for in the user agent values of existing rules.
     */
    ua_search?: string;
}
export declare namespace UARules {
    export import FirewallUserAgentRule = UARulesAPI.FirewallUserAgentRule;
    export import UARuleCreateResponse = UARulesAPI.UARuleCreateResponse;
    export import UARuleUpdateResponse = UARulesAPI.UARuleUpdateResponse;
    export import UARuleListResponse = UARulesAPI.UARuleListResponse;
    export import UARuleDeleteResponse = UARulesAPI.UARuleDeleteResponse;
    export import UARuleGetResponse = UARulesAPI.UARuleGetResponse;
    export import UARuleListResponsesV4PagePaginationArray = UARulesAPI.UARuleListResponsesV4PagePaginationArray;
    export import UARuleCreateParams = UARulesAPI.UARuleCreateParams;
    export import UARuleUpdateParams = UARulesAPI.UARuleUpdateParams;
    export import UARuleListParams = UARulesAPI.UARuleListParams;
}
//# sourceMappingURL=ua-rules.d.ts.map