import { type BlobRef, type BlobStorage, type StoreBlobOptions } from "veryfront/workflow/blob"; /** Fetch-compatible transport used for OAuth and Cloud Storage requests. */ export type GCSFetch = (input: string | URL | Request, init?: RequestInit) => Promise; /** Injectable transport and clock seams for deterministic tests. */ export interface GCSBlobStorageDependencies { /** Fetch-compatible provider transport. */ fetch?: GCSFetch; /** Millisecond Unix timestamp source. */ now?: () => number; } /** Explicit Google Cloud Storage connection and object-layout configuration. */ export interface GCSBlobStorageConfig { /** GCS bucket name. */ bucket: string; /** Google service-account JSON containing `private_key` and `client_email`. */ serviceAccountKey: string; /** Object-key prefix applied verbatim before each blob id. */ prefix?: string; /** Public base URL used only to populate `BlobRef.url`. */ baseUrl?: string; /** Default TTL in seconds. Zero means no expiry. */ defaultTtl?: number; /** Resumable stream chunk size; must be a 256 KiB multiple. Defaults to 8 MiB. */ resumableChunkSize?: number; /** Cancellation signal applied to provider requests and returned streams. */ signal?: AbortSignal; } /** Google Cloud Storage implementation of the framework-owned contract. */ export declare class GCSBlobStorage implements BlobStorage { #private; constructor(config: GCSBlobStorageConfig, dependencies?: GCSBlobStorageDependencies); close(): void; put(data: string | Uint8Array | Blob | ReadableStream, options?: StoreBlobOptions): Promise; getStream(id: string): Promise; getText(id: string): Promise; getBytes(id: string): Promise; delete(id: string): Promise; exists(id: string): Promise; stat(id: string): Promise; } //# sourceMappingURL=gcs-storage.d.ts.map