import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as LockdownsAPI from 'cloudflare/resources/firewall/lockdowns';
import { V4PagePaginationArray, type V4PagePaginationArrayParams } from 'cloudflare/pagination';
export declare class Lockdowns extends APIResource {
    /**
     * Creates a new Zone Lockdown rule.
     */
    create(zoneIdentifier: string, body: LockdownCreateParams, options?: Core.RequestOptions): Core.APIPromise<FirewallZoneLockdown | null>;
    /**
     * Updates an existing Zone Lockdown rule.
     */
    update(zoneIdentifier: string, id: string, body: LockdownUpdateParams, options?: Core.RequestOptions): Core.APIPromise<FirewallZoneLockdown | null>;
    /**
     * Fetches Zone Lockdown rules. You can filter the results using several optional
     * parameters.
     */
    list(zoneIdentifier: string, query?: LockdownListParams, options?: Core.RequestOptions): Core.PagePromise<FirewallZoneLockdownsV4PagePaginationArray, FirewallZoneLockdown>;
    list(zoneIdentifier: string, options?: Core.RequestOptions): Core.PagePromise<FirewallZoneLockdownsV4PagePaginationArray, FirewallZoneLockdown>;
    /**
     * Deletes an existing Zone Lockdown rule.
     */
    delete(zoneIdentifier: string, id: string, options?: Core.RequestOptions): Core.APIPromise<LockdownDeleteResponse>;
    /**
     * Fetches the details of a Zone Lockdown rule.
     */
    get(zoneIdentifier: string, id: string, options?: Core.RequestOptions): Core.APIPromise<FirewallZoneLockdown | null>;
}
export declare class FirewallZoneLockdownsV4PagePaginationArray extends V4PagePaginationArray<FirewallZoneLockdown> {
}
export interface FirewallZoneLockdown {
    /**
     * The unique identifier of the Zone Lockdown rule.
     */
    id: string;
    /**
     * A list of IP addresses or CIDR ranges that will be allowed to access the URLs
     * specified in the Zone Lockdown rule. You can include any number of `ip` or
     * `ip_range` configurations.
     */
    configurations: FirewallZoneLockdown.LegacyJhsSchemasIPConfiguration | FirewallZoneLockdown.LegacyJhsSchemasCIDRConfiguration;
    /**
     * The timestamp of when the rule was created.
     */
    created_on: string;
    /**
     * An informative summary of the rule.
     */
    description: string;
    /**
     * The timestamp of when the rule was last modified.
     */
    modified_on: string;
    /**
     * When true, indicates that the rule is currently paused.
     */
    paused: boolean;
    /**
     * The URLs to include in the rule definition. 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 FirewallZoneLockdown {
    interface LegacyJhsSchemasIPConfiguration {
        /**
         * The configuration target. You must set the target to `ip` when specifying an IP
         * address in the Zone Lockdown rule.
         */
        target?: 'ip';
        /**
         * The IP address to match. This address will be compared to the IP address of
         * incoming requests.
         */
        value?: string;
    }
    interface LegacyJhsSchemasCIDRConfiguration {
        /**
         * The configuration target. You must set the target to `ip_range` when specifying
         * an IP address range in the Zone Lockdown rule.
         */
        target?: 'ip_range';
        /**
         * The IP address range to match. You can only use prefix lengths `/16` and `/24`.
         */
        value?: string;
    }
}
export interface LockdownDeleteResponse {
    /**
     * The unique identifier of the Zone Lockdown rule.
     */
    id?: string;
}
export type LockdownCreateParams = unknown;
export type LockdownUpdateParams = unknown;
export interface LockdownListParams 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 single IP address to search for in existing rules.
     */
    ip?: string;
    /**
     * A single IP address range to search for in existing rules.
     */
    ip_range_search?: string;
    /**
     * A single IP address to search for in existing rules.
     */
    ip_search?: string;
    /**
     * The priority of the rule to control the processing order. A lower number
     * indicates higher priority. If not provided, any rules with a configured priority
     * will be processed before rules without a priority.
     */
    priority?: number;
    /**
     * A single URI to search for in the list of URLs of existing rules.
     */
    uri_search?: string;
}
export declare namespace Lockdowns {
    export import FirewallZoneLockdown = LockdownsAPI.FirewallZoneLockdown;
    export import LockdownDeleteResponse = LockdownsAPI.LockdownDeleteResponse;
    export import FirewallZoneLockdownsV4PagePaginationArray = LockdownsAPI.FirewallZoneLockdownsV4PagePaginationArray;
    export import LockdownCreateParams = LockdownsAPI.LockdownCreateParams;
    export import LockdownUpdateParams = LockdownsAPI.LockdownUpdateParams;
    export import LockdownListParams = LockdownsAPI.LockdownListParams;
}
//# sourceMappingURL=lockdowns.d.ts.map