interface ErrorInjection { failAfter(n: number, error?: Error): void; failOn(pattern: RegExp, error?: Error): void; withLatency(minMs: number, maxMs?: number): void; clearInjections(): void; } interface MockOperation { type: "read" | "write" | "delete" | "list"; key?: string; timestamp: number; } interface MockOperations { operations: MockOperation[]; reads(): MockOperation[]; writes(): MockOperation[]; deletes(): MockOperation[]; reset(): void; } interface StoredObject { body: ArrayBuffer; customMetadata: Record; httpMetadata: Record; uploaded: Date; size: number; key: string; etag: string; version: string; } /** * In-memory R2Bucket mock for unit testing. */ declare function createMockR2(): R2Bucket & { _store: Map; } & MockOperations & ErrorInjection; export { createMockR2 };