import * as Effect from "effect/Effect"; import * as Stream from "effect/Stream"; import * as Binding from "../../Binding.ts"; import type { RuntimeContext } from "../../RuntimeContext.ts"; import type { Bucket } from "./Bucket.ts"; import type { Conditional, R2Error, MultipartOptions, MultipartUpload, R2Object, PutOptions, } from "./BucketTypes.ts"; /** * @binding * @product R2 * @category Storage & Databases */ export interface WriteBucket extends Binding.Service< WriteBucket, "Cloudflare.R2.WriteBucket", (bucket: Bucket) => Effect.Effect > {} export const WriteBucket = Binding.Service( "Cloudflare.R2.WriteBucket", ); export interface WriteBucketClient { put( key: string, value: | ReadableStream | ArrayBuffer | ArrayBufferView | string | null | Blob | Stream.Stream, options?: PutOptions & { onlyIf: Conditional | Headers; contentLength?: number; }, ): Effect.Effect; put( key: string, value: | ReadableStream | ArrayBuffer | ArrayBufferView | string | null | Blob, options?: PutOptions, ): Effect.Effect; put( key: string, value: | ReadableStream | ArrayBuffer | ArrayBufferView | string | null | Blob | Stream.Stream, options: PutOptions & { contentLength: number; }, ): Effect.Effect; delete(keys: string | string[]): Effect.Effect; createMultipartUpload( key: string, options?: MultipartOptions, ): Effect.Effect; resumeMultipartUpload( key: string, uploadId: string, ): Effect.Effect; }