import * as Core from 'cloudflaredev/core';
import { APIResource } from 'cloudflaredev/resource';
import * as BucketsAPI from 'cloudflaredev/resources/r2/buckets';
import { CursorPagination, type CursorPaginationParams } from 'cloudflaredev/pagination';
export declare class Buckets extends APIResource {
    /**
     * Creates a new R2 bucket.
     */
    create(params: BucketCreateParams, options?: Core.RequestOptions): Core.APIPromise<Bucket>;
    /**
     * Lists all R2 buckets on your account
     */
    list(params: BucketListParams, options?: Core.RequestOptions): Core.PagePromise<BucketsCursorPagination, Bucket>;
    /**
     * Deletes an existing R2 bucket.
     */
    delete(bucketName: string, params: BucketDeleteParams, options?: Core.RequestOptions): Core.APIPromise<BucketDeleteResponse>;
    /**
     * Gets metadata for an existing R2 bucket.
     */
    get(bucketName: string, params: BucketGetParams, options?: Core.RequestOptions): Core.APIPromise<Bucket>;
}
export declare class BucketsCursorPagination extends CursorPagination<Bucket> {
}
/**
 * A single R2 bucket
 */
export interface Bucket {
    /**
     * Creation timestamp
     */
    creation_date?: string;
    /**
     * Location of the bucket
     */
    location?: 'apac' | 'eeur' | 'enam' | 'weur' | 'wnam';
    /**
     * Name of the bucket
     */
    name?: string;
}
export type BucketDeleteResponse = unknown;
export interface BucketCreateParams {
    /**
     * Path param: Account ID
     */
    account_id: string;
    /**
     * Body param: Name of the bucket
     */
    name: string;
    /**
     * Body param: Location of the bucket
     */
    locationHint?: 'apac' | 'eeur' | 'enam' | 'weur' | 'wnam';
}
export interface BucketListParams extends CursorPaginationParams {
    /**
     * Path param: Account ID
     */
    account_id: string;
    /**
     * Query param: Direction to order buckets
     */
    direction?: 'asc' | 'desc';
    /**
     * Query param: Bucket names to filter by. Only buckets with this phrase in their
     * name will be returned.
     */
    name_contains?: string;
    /**
     * Query param: Field to order buckets by
     */
    order?: 'name';
    /**
     * Query param: Bucket name to start searching after. Buckets are ordered
     * lexicographically.
     */
    start_after?: string;
}
export interface BucketDeleteParams {
    /**
     * Account ID
     */
    account_id: string;
}
export interface BucketGetParams {
    /**
     * Account ID
     */
    account_id: string;
}
export declare namespace Buckets {
    export import Bucket = BucketsAPI.Bucket;
    export import BucketDeleteResponse = BucketsAPI.BucketDeleteResponse;
    export import BucketsCursorPagination = BucketsAPI.BucketsCursorPagination;
    export import BucketCreateParams = BucketsAPI.BucketCreateParams;
    export import BucketListParams = BucketsAPI.BucketListParams;
    export import BucketDeleteParams = BucketsAPI.BucketDeleteParams;
    export import BucketGetParams = BucketsAPI.BucketGetParams;
}
//# sourceMappingURL=buckets.d.ts.map