import { type Attributes as DriverAttributes, type Driver, type ListObject, type ListOptions, type WriterOptions } from "./driver.js";
import { Reader } from "./reader.js";
import { Writer } from "./writer.js";
export declare const FirstPageToken: NodeJS.NonSharedUint8Array;
export declare class Bucket {
    #private;
    readonly drv: Driver;
    constructor(drv: Driver);
    List(opts?: ListOptions): ListIterator;
    ListPage(ctx: AbortSignal | null, pageToken: Uint8Array, pageSize: number, opts?: ListOptions): Promise<{
        Objects: ListObject[];
        NextPageToken: Uint8Array;
    }>;
    Attributes(ctx: AbortSignal | null, key: string): Promise<DriverAttributes>;
    Exists(ctx: AbortSignal | null, key: string): Promise<boolean>;
    NewReader(ctx: AbortSignal | null, key: string): Promise<Reader>;
    NewRangeReader(ctx: AbortSignal | null, key: string, offset: number, length: number): Promise<Reader>;
    NewWriter(ctx: AbortSignal | null, key: string, opts?: WriterOptions): Promise<Writer>;
    Copy(ctx: AbortSignal | null, dstKey: string, srcKey: string): Promise<void>;
    Delete(ctx: AbortSignal | null, key: string): Promise<void>;
    Close(): Promise<void>;
    isClosed(): boolean;
}
export declare class ListIterator {
    #private;
    constructor(bucket: Bucket, opts: ListOptions);
    Next(ctx: AbortSignal | null): Promise<ListObject>;
}
export declare function NewBucket(drv: Driver): Bucket;
