/** * Core file data interface */ export interface FileData { readonly buffer: Buffer; readonly filename: string; readonly contentType: string; readonly size: number; readonly metadata?: Record | undefined; } /** * File upload result */ export interface UploadResult { readonly fileId: string; readonly url?: string | undefined; readonly size: number; readonly metadata: FileMetadata; readonly storageBackend: string; readonly processingTime: number; } /** * File metadata information */ export interface FileMetadata { readonly filename: string; readonly contentType: string; readonly size: number; readonly uploadedAt: Date; readonly checksum?: string | undefined; readonly processingInfo?: ProcessingInfo | undefined; } /** * File processing information */ export interface ProcessingInfo { readonly imageOptimized?: boolean | undefined; readonly virusScanned?: boolean | undefined; readonly validated?: boolean | undefined; readonly processingTime: number; } /** * File deletion result */ export interface DeleteResult { readonly success: boolean; readonly fileId: string; readonly message?: string | undefined; } /** * File list result */ export interface FileList { readonly files: FileMetadata[]; readonly total: number; readonly hasMore: boolean; readonly nextCursor?: string | undefined; } /** * Upload options */ export interface UploadOptions { readonly path?: string | undefined; readonly public?: boolean | undefined; readonly cacheControl?: string | undefined; readonly upsert?: boolean | undefined; } /** * Download options */ export interface DownloadOptions { readonly expiresIn?: number | undefined; } /** * List options for file queries */ export interface ListOptions { readonly path?: string | undefined; readonly limit?: number | undefined; readonly offset?: number | undefined; readonly sortBy?: 'name' | 'size' | 'uploadedAt' | undefined; readonly sortOrder?: 'asc' | 'desc' | undefined; } /** * File handler configuration */ export interface FileHandlerConfig { readonly storage?: { readonly type: 'auto' | 'local' | 's3' | 'azure' | 'gcp' | 'supabase'; readonly fallbackTo?: string[] | undefined; } | undefined; readonly processing?: { readonly imageOptimization?: boolean | undefined; readonly virusScanning?: boolean | undefined; readonly validation?: boolean | undefined; readonly maxFileSize?: string | undefined; readonly allowedTypes?: string[] | undefined; } | undefined; } /** * Storage backend information */ export interface BackendInfo { readonly type: string; readonly name: string; readonly capabilities: string[]; readonly status: 'connected' | 'disconnected' | 'error'; } /** * Image processing options */ export interface ImageProcessOptions { readonly resize?: { readonly width?: number | undefined; readonly height?: number | undefined; readonly fit?: 'cover' | 'contain' | 'fill' | 'inside' | 'outside' | undefined; } | undefined; readonly quality?: number | undefined; readonly format?: 'jpeg' | 'png' | 'webp' | 'avif' | undefined; readonly blur?: number | undefined; readonly sharpen?: number | undefined; readonly rotate?: number | undefined; readonly flip?: 'horizontal' | 'vertical' | undefined; } /** * File validation rules */ export interface ValidationRules { readonly maxSize?: number | undefined; readonly allowedTypes?: string[] | undefined; readonly allowedExtensions?: string[] | undefined; readonly maxDimensions?: { readonly width: number; readonly height: number; } | undefined; } /** * File validation result */ export interface ValidationResult { readonly valid: boolean; readonly errors: string[]; readonly warnings: string[]; } /** * Virus scan result */ export interface ScanResult { readonly clean: boolean; readonly threats?: string[] | undefined; readonly scanTime: number; } /** * File operation result wrapper */ export interface FileOperationResult { readonly success: boolean; readonly data?: T | undefined; readonly error?: string | undefined; } /** * Storage backend interface - defines the contract for all storage implementations */ export interface FileStorageBackend { upload(_file: FileData, _options?: UploadOptions | undefined): Promise; download(_fileId: string, _options?: DownloadOptions | undefined): Promise; delete(_fileId: string): Promise; list(_options?: ListOptions | undefined): Promise; getMetadata(_fileId: string): Promise; getUrl(_fileId: string, _expiresIn?: number | undefined): Promise; testConnection(): Promise; getBackendInfo(): BackendInfo; } //# sourceMappingURL=types.d.ts.map