// Copyright DWJ 2023. // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt import { Readable } from "stream"; import { Access } from "./types/Access.js"; import { PutOptions } from "./types/PutOptions.js"; import { GetOptions } from "./types/GetOptions.js"; export interface Storage { putFilePath: ( key: string, filePath: string, options?: Partial<{ access: Access }>, ) => Promise; putStream: ( key: string, stream: Readable, options?: Partial<{ access: Access }>, ) => Promise; putBuffer: ( key: string, buffer: Buffer, options?: Partial<{ access: Access }>, ) => Promise; putSignedUrl( key: string, options?: PutOptions, ): Promise<{ url: string; headers: Record }>; getFilePath: (key: string) => Promise; getStream: (key: string) => Promise; getBuffer: (key: string) => Promise; getUrl(key: string): Promise; getSignedUrl(key: string, options?: GetOptions): Promise; delete: (key: string) => Promise; listDir: (keyPrefix: string, limit?: number) => Promise; listAll: (keyPrefix: string, limit?: number) => Promise; }