import type { Connection } from '../connection'; import { type Storage } from './storage'; export interface BlobRecord { key: string; data: Uint8Array; mime: string; createdAt?: Date; } export interface ListedBlobRecord { key: string; mime: string; size: number; createdAt?: Date; } export interface BlobStorage extends Storage { readonly storageType: 'blob'; readonly isReadonly: boolean; get(key: string, signal?: AbortSignal): Promise; set(blob: BlobRecord, signal?: AbortSignal): Promise; delete( key: string, permanently: boolean, signal?: AbortSignal ): Promise; release(signal?: AbortSignal): Promise; list(signal?: AbortSignal): Promise; } export abstract class BlobStorageBase implements BlobStorage { readonly storageType = 'blob'; abstract readonly connection: Connection; abstract readonly isReadonly: boolean; abstract get(key: string, signal?: AbortSignal): Promise; abstract set(blob: BlobRecord, signal?: AbortSignal): Promise; abstract delete( key: string, permanently: boolean, signal?: AbortSignal ): Promise; abstract release(signal?: AbortSignal): Promise; abstract list(signal?: AbortSignal): Promise; }