/** * Presigned URL Uploader * * Handles file uploads using presigned URLs for cloud storage. * Supports: * - AWS S3 presigned URLs * - Azure Blob Storage SAS URLs * - Google Cloud Storage signed URLs * - Custom presigned URL providers */ export interface PresignedUrlConfig { /** URL to request presigned upload URL */ presignedUrlEndpoint: string; /** HTTP method for presigned URL request (default: POST) */ method?: 'GET' | 'POST'; /** Headers for presigned URL request */ headers?: Record; /** Fields to include in presigned URL request */ requestFields?: Record; /** Query params for presigned URL request */ requestParams?: Record; /** File field name (default: 'file') */ fileField?: string; /** Additional fields to include with upload */ uploadFields?: Record; /** HTTP method for upload (default: PUT for S3, POST for others) */ uploadMethod?: 'PUT' | 'POST'; /** Headers to include with upload */ uploadHeaders?: Record; /** Progress callback */ onProgress?: (progress: UploadProgress) => void; } export interface PresignedUrlResponse { /** The presigned URL for upload */ url: string; /** HTTP method to use (PUT or POST) */ method?: 'PUT' | 'POST'; /** Required headers for upload */ headers?: Record; /** Required fields for POST upload */ fields?: Record; /** File ID/key from server */ key?: string; /** Expiration timestamp */ expiresAt?: number; } export interface UploadProgress { /** Bytes uploaded */ loaded: number; /** Total bytes */ total: number; /** Percentage (0-100) */ percentage: number; } export interface PresignedUploadResult { /** Upload success status */ success: boolean; /** File key/ID from server */ key?: string; /** Public URL of uploaded file (if provided) */ url?: string; /** Server response */ response?: any; /** Error if failed */ error?: string; } /** * Presigned URL uploader class */ export declare class PresignedUploader { private config; constructor(config: PresignedUrlConfig); /** * Upload a file using a presigned URL */ upload(file: File | Blob, fileName?: string): Promise; /** * Request a presigned URL from the server */ private requestPresignedUrl; /** * Upload file to the presigned URL */ private uploadToPresignedUrl; /** * Upload via PUT request (S3 style) */ private uploadViaPut; /** * Upload via POST request (multipart/form-data style) */ private uploadViaPost; /** * Upload multiple files concurrently */ uploadMultiple(files: (File | Blob)[], concurrency?: number): Promise; } /** * Create a presigned URL uploader instance */ export declare function createPresignedUploader(config: PresignedUrlConfig): PresignedUploader; /** * Upload a file using a presigned URL (convenience function) */ export declare function uploadWithPresignedUrl(file: File | Blob, config: PresignedUrlConfig): Promise; /** * AWS S3 specific presigned uploader */ export declare class S3PresignedUploader extends PresignedUploader { constructor(config: Omit); } /** * Azure Blob Storage specific presigned uploader */ export declare class AzurePresignedUploader extends PresignedUploader { constructor(config: Omit); } export default PresignedUploader;