import { APIResource } from "../../../../core/resource.js";
import * as ItemsAPI from "./items.js";
import { BaseItems, ItemDeleteParams, ItemDeleteResponse, ItemEditParams, ItemEditResponse, ItemGetParams, ItemGetResponse, Items } from "./items.js";
import { APIPromise } from "../../../../core/api-promise.js";
import { PagePromise, SinglePage, V4PagePaginationArray, type V4PagePaginationArrayParams } from "../../../../core/pagination.js";
import { RequestOptions } from "../../../../internal/request-options.js";
export declare class BasePrefixes extends APIResource {
    static readonly _key: readonly ['DDoSProtection', 'advancedTCPProtection', 'prefixes'];
    /**
     * Create a prefix for an account.
     *
     * @example
     * ```ts
     * const prefix =
     *   await client.DDoSProtection.advancedTCPProtection.prefixes.create(
     *     {
     *       account_id: '023e105f4ecef8ad9ca31a8372d0c353',
     *       comment: 'comment',
     *       excluded: true,
     *       prefix: '192.0.2.0/24',
     *     },
     *   );
     * ```
     */
    create(params: PrefixCreateParams, options?: RequestOptions): APIPromise<PrefixCreateResponse>;
    /**
     * List all prefixes for an account.
     *
     * @example
     * ```ts
     * // Automatically fetches more pages as needed.
     * for await (const prefixListResponse of client.DDoSProtection.advancedTCPProtection.prefixes.list(
     *   { account_id: '023e105f4ecef8ad9ca31a8372d0c353' },
     * )) {
     *   // ...
     * }
     * ```
     */
    list(params: PrefixListParams, options?: RequestOptions): PagePromise<PrefixListResponsesV4PagePaginationArray, PrefixListResponse>;
    /**
     * Create multiple prefixes for an account.
     *
     * @example
     * ```ts
     * // Automatically fetches more pages as needed.
     * for await (const prefixBulkCreateResponse of client.DDoSProtection.advancedTCPProtection.prefixes.bulkCreate(
     *   {
     *     account_id: '023e105f4ecef8ad9ca31a8372d0c353',
     *     body: [
     *       {
     *         comment: 'comment',
     *         excluded: true,
     *         prefix: '192.0.2.0/24',
     *       },
     *     ],
     *   },
     * )) {
     *   // ...
     * }
     * ```
     */
    bulkCreate(params: PrefixBulkCreateParams, options?: RequestOptions): PagePromise<PrefixBulkCreateResponsesSinglePage, PrefixBulkCreateResponse>;
    /**
     * Delete all prefixes for an account.
     *
     * @example
     * ```ts
     * const response =
     *   await client.DDoSProtection.advancedTCPProtection.prefixes.bulkDelete(
     *     { account_id: '023e105f4ecef8ad9ca31a8372d0c353' },
     *   );
     * ```
     */
    bulkDelete(params: PrefixBulkDeleteParams, options?: RequestOptions): APIPromise<PrefixBulkDeleteResponse>;
}
export declare class Prefixes extends BasePrefixes {
    items: ItemsAPI.Items;
}
export type PrefixListResponsesV4PagePaginationArray = V4PagePaginationArray<PrefixListResponse>;
export type PrefixBulkCreateResponsesSinglePage = SinglePage<PrefixBulkCreateResponse>;
export interface PrefixCreateResponse {
    /**
     * The unique ID of the prefix.
     */
    id: string;
    /**
     * A comment describing the prefix.
     */
    comment: string;
    /**
     * The creation timestamp of the prefix.
     */
    created_on: string;
    /**
     * Whether to exclude the prefix from protection.
     */
    excluded: boolean;
    /**
     * The last modification timestamp of the prefix.
     */
    modified_on: string;
    /**
     * The prefix in CIDR format.
     */
    prefix: string;
}
export interface PrefixListResponse {
    /**
     * The unique ID of the prefix.
     */
    id: string;
    /**
     * A comment describing the prefix.
     */
    comment: string;
    /**
     * The creation timestamp of the prefix.
     */
    created_on: string;
    /**
     * Whether to exclude the prefix from protection.
     */
    excluded: boolean;
    /**
     * The last modification timestamp of the prefix.
     */
    modified_on: string;
    /**
     * The prefix in CIDR format.
     */
    prefix: string;
}
export interface PrefixBulkCreateResponse {
    /**
     * The unique ID of the prefix.
     */
    id: string;
    /**
     * A comment describing the prefix.
     */
    comment: string;
    /**
     * The creation timestamp of the prefix.
     */
    created_on: string;
    /**
     * Whether to exclude the prefix from protection.
     */
    excluded: boolean;
    /**
     * The last modification timestamp of the prefix.
     */
    modified_on: string;
    /**
     * The prefix in CIDR format.
     */
    prefix: string;
}
export interface PrefixBulkDeleteResponse {
    errors: Array<PrefixBulkDeleteResponse.Error>;
    messages: Array<PrefixBulkDeleteResponse.Message>;
    /**
     * Whether the API call was successful.
     */
    success: true;
}
export declare namespace PrefixBulkDeleteResponse {
    interface Error {
        code: number;
        message: string;
        documentation_url?: string;
        source?: Error.Source;
    }
    namespace Error {
        interface Source {
            pointer?: string;
        }
    }
    interface Message {
        code: number;
        message: string;
        documentation_url?: string;
        source?: Message.Source;
    }
    namespace Message {
        interface Source {
            pointer?: string;
        }
    }
}
export interface PrefixCreateParams {
    /**
     * Path param: The ID of the account.
     */
    account_id: string;
    /**
     * Body param: A comment describing the prefix.
     */
    comment: string;
    /**
     * Body param: Whether to exclude the prefix from protection.
     */
    excluded: boolean;
    /**
     * Body param: The prefix to add in CIDR format.
     */
    prefix: string;
}
export interface PrefixListParams extends V4PagePaginationArrayParams {
    /**
     * Path param: The ID of the account.
     */
    account_id: string;
    /**
     * Query param: The direction of ordering (ASC or DESC). Defaults to 'ASC'.
     */
    direction?: string;
    /**
     * Query param: The field to order by. Defaults to 'prefix'.
     */
    order?: string;
}
export interface PrefixBulkCreateParams {
    /**
     * Path param: The ID of the account.
     */
    account_id: string;
    /**
     * Body param
     */
    body: Array<PrefixBulkCreateParams.Body>;
}
export declare namespace PrefixBulkCreateParams {
    interface Body {
        /**
         * A comment describing the prefix.
         */
        comment: string;
        /**
         * Whether to exclude the prefix from protection.
         */
        excluded: boolean;
        /**
         * The prefix to add in CIDR format.
         */
        prefix: string;
    }
}
export interface PrefixBulkDeleteParams {
    /**
     * The ID of the account.
     */
    account_id: string;
}
export declare namespace Prefixes {
    export { type PrefixCreateResponse as PrefixCreateResponse, type PrefixListResponse as PrefixListResponse, type PrefixBulkCreateResponse as PrefixBulkCreateResponse, type PrefixBulkDeleteResponse as PrefixBulkDeleteResponse, type PrefixListResponsesV4PagePaginationArray as PrefixListResponsesV4PagePaginationArray, type PrefixBulkCreateResponsesSinglePage as PrefixBulkCreateResponsesSinglePage, type PrefixCreateParams as PrefixCreateParams, type PrefixListParams as PrefixListParams, type PrefixBulkCreateParams as PrefixBulkCreateParams, type PrefixBulkDeleteParams as PrefixBulkDeleteParams, };
    export { Items as Items, BaseItems as BaseItems, type ItemDeleteResponse as ItemDeleteResponse, type ItemEditResponse as ItemEditResponse, type ItemGetResponse as ItemGetResponse, type ItemDeleteParams as ItemDeleteParams, type ItemEditParams as ItemEditParams, type ItemGetParams as ItemGetParams, };
}
//# sourceMappingURL=prefixes.d.ts.map