// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
import { APIResource } from 'cloudflaredev/resource';
import * as ItemsAPI from 'cloudflaredev/resources/rules/lists/items';
import { CursorPagination } from 'cloudflaredev/pagination';
export 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, params, options) {
        const { account_id, body } = params;
        return this._client.post(`/accounts/${account_id}/rules/lists/${listId}/items`, {
            body: body,
            ...options,
        })._thenUnwrap((obj) => obj.result);
    }
    /**
     * 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, params, options) {
        const { account_id, body } = params;
        return this._client.put(`/accounts/${account_id}/rules/lists/${listId}/items`, {
            body: body,
            ...options,
        })._thenUnwrap((obj) => obj.result);
    }
    /**
     * Fetches all the items in the list.
     */
    list(listId, params, options) {
        const { account_id, ...query } = params;
        return this._client.getAPIList(`/accounts/${account_id}/rules/lists/${listId}/items`, ItemListResponsesCursorPagination, { query, ...options });
    }
    /**
     * 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, params, options) {
        const { account_id } = params;
        return this._client.delete(`/accounts/${account_id}/rules/lists/${listId}/items`, options)._thenUnwrap((obj) => obj.result);
    }
    /**
     * Fetches a list item in the list.
     */
    get(accountIdentifier, listId, itemId, options) {
        return this._client.get(`/accounts/${accountIdentifier}/rules/lists/${listId}/items/${itemId}`, options)._thenUnwrap((obj) => obj.result);
    }
}
export class ItemListResponsesCursorPagination extends CursorPagination {
}
(function (Items) {
    Items.ItemListResponsesCursorPagination = ItemsAPI.ItemListResponsesCursorPagination;
})(Items || (Items = {}));
//# sourceMappingURL=items.mjs.map