import * as Core from 'cloudflaredev/core';
import { APIResource } from 'cloudflaredev/resource';
import * as LockdownsAPI from 'cloudflaredev/resources/firewall/lockdowns';
import { V4PagePaginationArray, type V4PagePaginationArrayParams } from 'cloudflaredev/pagination';
export declare class Lockdowns extends APIResource {
    /**
     * Creates a new Zone Lockdown rule.
     */
    create(zoneIdentifier: string, body: LockdownCreateParams, options?: Core.RequestOptions): Core.APIPromise<Lockdown>;
    /**
     * Updates an existing Zone Lockdown rule.
     */
    update(zoneIdentifier: string, id: string, body: LockdownUpdateParams, options?: Core.RequestOptions): Core.APIPromise<Lockdown>;
    /**
     * Fetches Zone Lockdown rules. You can filter the results using several optional
     * parameters.
     */
    list(zoneIdentifier: string, query?: LockdownListParams, options?: Core.RequestOptions): Core.PagePromise<LockdownsV4PagePaginationArray, Lockdown>;
    list(zoneIdentifier: string, options?: Core.RequestOptions): Core.PagePromise<LockdownsV4PagePaginationArray, Lockdown>;
    /**
     * 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<Lockdown>;
}
export declare class LockdownsV4PagePaginationArray extends V4PagePaginationArray<Lockdown> {
}
/**
 * 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.
 */
export type Configuration = LockdownIPConfiguration | LockdownCIDRConfiguration;
export interface Lockdown {
    /**
     * 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: Configuration;
    /**
     * 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<LockdownURL>;
}
export interface LockdownCIDRConfiguration {
    /**
     * 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 LockdownIPConfiguration {
    /**
     * 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;
}
export type LockdownURL = 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 {
    /**
     * The timestamp of when the rule was created.
     */
    created_on?: string;
    /**
     * 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 timestamp of when the rule was last modified.
     */
    modified_on?: 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 Configuration = LockdownsAPI.Configuration;
    export import Lockdown = LockdownsAPI.Lockdown;
    export import LockdownCIDRConfiguration = LockdownsAPI.LockdownCIDRConfiguration;
    export import LockdownIPConfiguration = LockdownsAPI.LockdownIPConfiguration;
    export import LockdownURL = LockdownsAPI.LockdownURL;
    export import LockdownDeleteResponse = LockdownsAPI.LockdownDeleteResponse;
    export import LockdownsV4PagePaginationArray = LockdownsAPI.LockdownsV4PagePaginationArray;
    export import LockdownCreateParams = LockdownsAPI.LockdownCreateParams;
    export import LockdownUpdateParams = LockdownsAPI.LockdownUpdateParams;
    export import LockdownListParams = LockdownsAPI.LockdownListParams;
}
//# sourceMappingURL=lockdowns.d.ts.map