/** * S3-compatible storage controller (works with AWS S3 and MinIO) */ import { S3StorageConfig, StorageController } from "./types"; import { DownloadConfig, StorageListResult, UploadFileProps, UploadFileResult } from "@rebasepro/types"; /** * S3-compatible storage implementation * Works with AWS S3 and MinIO (with forcePathStyle option) */ export declare class S3StorageController implements StorageController { private config; private _client; constructor(config: S3StorageConfig); /** * Lazily create and cache the S3 client on first use */ private getClient; getType(): "s3"; /** * Validate file before upload */ private validateFile; /** * Get the bucket name - either from parameter or config */ private getBucket; putObject({ file, key, metadata, bucket }: UploadFileProps): Promise; /** * Flatten nested metadata to string values (S3 requirement) */ private flattenMetadata; getSignedUrl(key: string, bucket?: string): Promise; getObject(key: string, bucket?: string): Promise; deleteObject(key: string, bucket?: string): Promise; listObjects(prefix: string, options?: { bucket?: string; maxResults?: number; pageToken?: string; }): Promise; }