import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as ItemsAPI from 'cloudflare/resources/rules/lists/items';
import { CursorPagination, type CursorPaginationParams } from 'cloudflare/pagination';
export declare class Items extends APIResource {
    /**
     * Appends new items to the list.
     *
     * This operation is asynchronous. To get current the operation status, invoke the
     * [Get bulk operation status](/operations/lists-get-bulk-operation-status)
     * endpoint with the returned `operation_id`.
     */
    create(listId: string, params: ItemCreateParams, options?: Core.RequestOptions): Core.APIPromise<ItemCreateResponse | null>;
    /**
     * Removes all existing items from the list and adds the provided items to the
     * list.
     *
     * This operation is asynchronous. To get current the operation status, invoke the
     * [Get bulk operation status](/operations/lists-get-bulk-operation-status)
     * endpoint with the returned `operation_id`.
     */
    update(listId: string, params: ItemUpdateParams, options?: Core.RequestOptions): Core.APIPromise<ItemUpdateResponse | null>;
    /**
     * Fetches all the items in the list.
     */
    list(listId: string, params: ItemListParams, options?: Core.RequestOptions): Core.PagePromise<ItemListResponsesCursorPagination, ItemListResponse>;
    /**
     * Removes one or more items from a list.
     *
     * This operation is asynchronous. To get current the operation status, invoke the
     * [Get bulk operation status](/operations/lists-get-bulk-operation-status)
     * endpoint with the returned `operation_id`.
     */
    delete(listId: string, params: ItemDeleteParams, options?: Core.RequestOptions): Core.APIPromise<ItemDeleteResponse | null>;
    /**
     * Fetches a list item in the list.
     */
    get(accountIdentifier: string, listId: string, itemId: string, options?: Core.RequestOptions): Core.APIPromise<ItemGetResponse | null>;
}
export declare class ItemListResponsesCursorPagination extends CursorPagination<ItemListResponse> {
}
export interface ItemCreateResponse {
    /**
     * The unique operation ID of the asynchronous action.
     */
    operation_id?: string;
}
export interface ItemUpdateResponse {
    /**
     * The unique operation ID of the asynchronous action.
     */
    operation_id?: string;
}
export type ItemListResponse = unknown;
export interface ItemDeleteResponse {
    /**
     * The unique operation ID of the asynchronous action.
     */
    operation_id?: string;
}
/**
 * An IPv4 address, an IPv4 CIDR, or an IPv6 CIDR. IPv6 CIDRs are limited to a
 * maximum of /64.
 */
export type ItemGetResponse = string | ItemGetResponse.ListsItemRedirect | ItemGetResponse.ListsItemHostname | number;
export declare namespace ItemGetResponse {
    /**
     * The definition of the redirect.
     */
    interface ListsItemRedirect {
        source_url: string;
        target_url: string;
        include_subdomains?: boolean;
        preserve_path_suffix?: boolean;
        preserve_query_string?: boolean;
        status_code?: 301 | 302 | 307 | 308;
        subpath_matching?: boolean;
    }
    /**
     * Valid characters for hostnames are ASCII(7) letters from a to z, the digits from
     * 0 to 9, wildcards (\*), and the hyphen (-).
     */
    interface ListsItemHostname {
        url_hostname: string;
    }
}
export interface ItemCreateParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Body param:
     */
    body: Array<ItemCreateParams.Body>;
}
export declare namespace ItemCreateParams {
    interface Body {
        /**
         * A non-negative 32 bit integer
         */
        asn?: number;
        /**
         * An informative summary of the list item.
         */
        comment?: string;
        /**
         * Valid characters for hostnames are ASCII(7) letters from a to z, the digits from
         * 0 to 9, wildcards (\*), and the hyphen (-).
         */
        hostname?: Body.Hostname;
        /**
         * An IPv4 address, an IPv4 CIDR, or an IPv6 CIDR. IPv6 CIDRs are limited to a
         * maximum of /64.
         */
        ip?: string;
        /**
         * The definition of the redirect.
         */
        redirect?: Body.Redirect;
    }
    namespace Body {
        /**
         * Valid characters for hostnames are ASCII(7) letters from a to z, the digits from
         * 0 to 9, wildcards (\*), and the hyphen (-).
         */
        interface Hostname {
            url_hostname: string;
        }
        /**
         * The definition of the redirect.
         */
        interface Redirect {
            source_url: string;
            target_url: string;
            include_subdomains?: boolean;
            preserve_path_suffix?: boolean;
            preserve_query_string?: boolean;
            status_code?: 301 | 302 | 307 | 308;
            subpath_matching?: boolean;
        }
    }
}
export interface ItemUpdateParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Body param:
     */
    body: Array<ItemUpdateParams.Body>;
}
export declare namespace ItemUpdateParams {
    interface Body {
        /**
         * A non-negative 32 bit integer
         */
        asn?: number;
        /**
         * An informative summary of the list item.
         */
        comment?: string;
        /**
         * Valid characters for hostnames are ASCII(7) letters from a to z, the digits from
         * 0 to 9, wildcards (\*), and the hyphen (-).
         */
        hostname?: Body.Hostname;
        /**
         * An IPv4 address, an IPv4 CIDR, or an IPv6 CIDR. IPv6 CIDRs are limited to a
         * maximum of /64.
         */
        ip?: string;
        /**
         * The definition of the redirect.
         */
        redirect?: Body.Redirect;
    }
    namespace Body {
        /**
         * Valid characters for hostnames are ASCII(7) letters from a to z, the digits from
         * 0 to 9, wildcards (\*), and the hyphen (-).
         */
        interface Hostname {
            url_hostname: string;
        }
        /**
         * The definition of the redirect.
         */
        interface Redirect {
            source_url: string;
            target_url: string;
            include_subdomains?: boolean;
            preserve_path_suffix?: boolean;
            preserve_query_string?: boolean;
            status_code?: 301 | 302 | 307 | 308;
            subpath_matching?: boolean;
        }
    }
}
export interface ItemListParams extends CursorPaginationParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Query param: A search query to filter returned items. Its meaning depends on the
     * list type: IP addresses must start with the provided string, hostnames and bulk
     * redirects must contain the string, and ASNs must match the string exactly.
     */
    search?: string;
}
export interface ItemDeleteParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Body param:
     */
    items?: Array<ItemDeleteParams.Item>;
}
export declare namespace ItemDeleteParams {
    interface Item {
        /**
         * The unique ID of the item in the List.
         */
        id?: string;
    }
}
export declare namespace Items {
    export import ItemCreateResponse = ItemsAPI.ItemCreateResponse;
    export import ItemUpdateResponse = ItemsAPI.ItemUpdateResponse;
    export import ItemListResponse = ItemsAPI.ItemListResponse;
    export import ItemDeleteResponse = ItemsAPI.ItemDeleteResponse;
    export import ItemGetResponse = ItemsAPI.ItemGetResponse;
    export import ItemListResponsesCursorPagination = ItemsAPI.ItemListResponsesCursorPagination;
    export import ItemCreateParams = ItemsAPI.ItemCreateParams;
    export import ItemUpdateParams = ItemsAPI.ItemUpdateParams;
    export import ItemListParams = ItemsAPI.ItemListParams;
    export import ItemDeleteParams = ItemsAPI.ItemDeleteParams;
}
//# sourceMappingURL=items.d.ts.map