import { UploadStrategyResponse, DownloadStrategyResponse } from '@insforge/shared-schemas'; /** * Storage provider interface * Defines the contract that all storage providers must implement */ export interface StorageProvider { initialize(): void | Promise; putObject(bucket: string, key: string, file: Express.Multer.File): Promise; getObject(bucket: string, key: string): Promise; deleteObject(bucket: string, key: string): Promise; createBucket(bucket: string): Promise; deleteBucket(bucket: string): Promise; // Presigned URL support supportsPresignedUrls(): boolean; getUploadStrategy( bucket: string, key: string, metadata: { contentType?: string; size?: number } ): Promise; getDownloadStrategy( bucket: string, key: string, expiresIn?: number, isPublic?: boolean ): Promise; verifyObjectExists(bucket: string, key: string): Promise; }