import type * as runtime from "@cloudflare/workers-types"; import * as Effect from "effect/Effect"; import * as Binding from "../../Binding.ts"; import type { RuntimeContext } from "../../RuntimeContext.ts"; import type { Namespace } from "./Namespace.ts"; import type { NamespaceError } from "./NamespaceTypes.ts"; /** * Bind a {@link Namespace} to a Worker with read access and obtain the * Effect-native KV client (`get`, `getWithMetadata`, `list`). * * `ReadNamespace` is a single identifier that is simultaneously the binding's * Context tag, its type, and the callable — * `yield* Cloudflare.KV.ReadNamespace(ns)`. * * @binding * @product KV * @category Storage & Databases */ export interface ReadNamespace extends Binding.Service< ReadNamespace, "Cloudflare.KV.ReadNamespace", (namespace: Namespace) => Effect.Effect > {} export const ReadNamespace = Binding.Service( "Cloudflare.KV.ReadNamespace", ); export interface ReadNamespaceClient { raw: Effect.Effect; get( key: Key, options?: Partial>, ): Effect.Effect; get( key: Key, type: "text", ): Effect.Effect; get( key: Key, type: "json", ): Effect.Effect; get( key: Key, type: "arrayBuffer", ): Effect.Effect; get( key: Key, type: "stream", ): Effect.Effect; get( key: Key, options?: KVNamespaceGetOptions<"text">, ): Effect.Effect; get( key: Key, options?: KVNamespaceGetOptions<"json">, ): Effect.Effect; get( key: Key, options?: KVNamespaceGetOptions<"arrayBuffer">, ): Effect.Effect; get( key: Key, options?: KVNamespaceGetOptions<"stream">, ): Effect.Effect; get( key: Array, type: "text", ): Effect.Effect, NamespaceError, RuntimeContext>; get( key: Array, type: "json", ): Effect.Effect< Map, NamespaceError, RuntimeContext >; get( key: Array, options?: Partial>, ): Effect.Effect, NamespaceError, RuntimeContext>; get( key: Array, options?: KVNamespaceGetOptions<"text">, ): Effect.Effect, NamespaceError, RuntimeContext>; get( key: Array, options?: KVNamespaceGetOptions<"json">, ): Effect.Effect< Map, NamespaceError, RuntimeContext >; list( options?: KVNamespaceListOptions, ): Effect.Effect< KVNamespaceListResult, NamespaceError, RuntimeContext >; getWithMetadata( key: Key, options?: Partial>, ): Effect.Effect< KVNamespaceGetWithMetadataResult, NamespaceError, RuntimeContext >; getWithMetadata( key: Key, type: "text", ): Effect.Effect< KVNamespaceGetWithMetadataResult, NamespaceError, RuntimeContext >; getWithMetadata( key: Key, type: "json", ): Effect.Effect< KVNamespaceGetWithMetadataResult, NamespaceError, RuntimeContext >; getWithMetadata( key: Key, type: "arrayBuffer", ): Effect.Effect< KVNamespaceGetWithMetadataResult, NamespaceError, RuntimeContext >; getWithMetadata( key: Key, type: "stream", ): Effect.Effect< KVNamespaceGetWithMetadataResult, NamespaceError, RuntimeContext >; getWithMetadata( key: Key, options: KVNamespaceGetOptions<"text">, ): Effect.Effect< KVNamespaceGetWithMetadataResult, NamespaceError, RuntimeContext >; getWithMetadata( key: Key, options: KVNamespaceGetOptions<"json">, ): Effect.Effect< KVNamespaceGetWithMetadataResult, NamespaceError, RuntimeContext >; getWithMetadata( key: Key, options: KVNamespaceGetOptions<"arrayBuffer">, ): Effect.Effect< KVNamespaceGetWithMetadataResult, NamespaceError, RuntimeContext >; getWithMetadata( key: Key, options: KVNamespaceGetOptions<"stream">, ): Effect.Effect< KVNamespaceGetWithMetadataResult, NamespaceError, RuntimeContext >; getWithMetadata( key: Array, type: "text", ): Effect.Effect< Map>, NamespaceError, RuntimeContext >; getWithMetadata( key: Array, type: "json", ): Effect.Effect< Map>, NamespaceError, RuntimeContext >; getWithMetadata( key: Array, options?: Partial>, ): Effect.Effect< Map>, NamespaceError, RuntimeContext >; getWithMetadata( key: Array, options?: KVNamespaceGetOptions<"text">, ): Effect.Effect< Map>, NamespaceError, RuntimeContext >; getWithMetadata( key: Array, options?: KVNamespaceGetOptions<"json">, ): Effect.Effect< Map>, NamespaceError, RuntimeContext >; }