interface R2HttpMetadata {
    contentType?: string;
    cacheControl?: string;
}
interface R2PutOptions {
    httpMetadata?: R2HttpMetadata;
    customMetadata?: Record<string, string>;
}
interface R2PutResult {
    key: string;
    size: number;
    etag: string;
}
interface R2PutBucket {
    put(key: string, value: ReadableStream | ArrayBuffer | ArrayBufferView | string | null | Blob, options?: R2PutOptions): Promise<R2PutResult>;
}
/** Thin adapter over the native Workers `R2Bucket.put` binding. */
declare function putObject(bucket: R2PutBucket, key: string, body: ReadableStream | ArrayBuffer | ArrayBufferView | string | null | Blob, opts?: R2PutOptions): Promise<R2PutResult>;

export { type R2HttpMetadata, type R2PutBucket, type R2PutOptions, type R2PutResult, putObject };
