import { c as UploadOptions, b as UploadResponse } from '../index-BjQbXosE.js'; /** * Abstract base class for all upload providers * This allows for easy switching between different upload services */ declare abstract class UploadProvider { protected readonly name: string; protected readonly config: Record; constructor(name: string, config?: Record); /** * Get the provider name */ getName(): string; /** * Get the provider configuration */ getConfig(): Record; /** * Initialize the provider (called before first use) */ abstract initialize(): Promise; /** * Check if the provider is properly configured */ abstract isConfigured(): boolean; /** * Upload a single file */ abstract uploadFile(file: File, options: UploadOptions): Promise; /** * Upload multiple files */ abstract uploadFiles(files: readonly File[], options: UploadOptions, onProgress?: (fileId: string, progress: number) => void): Promise; /** * Delete a file by its ID */ abstract deleteFile(fileId: string): Promise; /** * Get file information by ID */ abstract getFileInfo(fileId: string): Promise; /** * Generate a preview URL for a file */ abstract generatePreviewUrl(fileId: string, options?: Record): string; /** * Validate provider-specific options */ abstract validateOptions(options: UploadOptions): { valid: boolean; error?: string; }; /** * Get upload statistics */ abstract getStats(): Promise<{ totalFiles: number; totalSize: number; provider: string; }>; /** * Test the provider connection */ abstract testConnection(): Promise; /** * Clean up resources */ cleanup(): Promise; } /** * Provider factory for creating provider instances */ declare class ProviderFactory { private static providers; /** * Register a provider class */ static register(name: string, providerClass: new (config: any) => UploadProvider): void; /** * Create a provider instance */ static create(name: string, config: any): UploadProvider; /** * Get list of available providers */ static getAvailableProviders(): string[]; } /** * Provider configuration interface */ interface ProviderConfig { readonly name: string; readonly type: string; readonly config: Record; readonly enabled: boolean; } export { type ProviderConfig, ProviderFactory, UploadProvider };