interface FileUploadProps { width?: string; height?: string; label?: string; labelPosition?: 'top' | 'left'; icon?: string; placeholder?: string; error?: string; disabled?: boolean; required?: boolean; multiple?: boolean; accept?: string; maxSize?: number; uploadUrl?: string; showUploadButton?: boolean; doUpload?: boolean; iconColor?: string; color?: string; bgColor?: string; borderColor?: string; progressColor?: string; activeColor?: string; uploadCallback?: (formData: FormData) => Promise; perFileCallback?: (file: File, ctx: { index: number; total: number; }) => Promise; } interface UploadCallbackResponse { formData: FormData; headers: Record; } interface UploadStatus { type: 'pending' | 'success' | 'error' | 'processing'; message: string; response?: unknown; } interface FileUploadEmits { (e: 'files-selected', files: File[]): void; (e: 'start-upload', files: File[]): void; (e: 'upload-started', files: File[]): void; (e: 'upload-complete', files: File[]): void; (e: 'upload-progress', progress: number): void; (e: 'upload-success', status: UploadStatus): void; (e: 'upload-error', status: UploadStatus): void; } export type { FileUploadProps, FileUploadEmits, UploadStatus, UploadCallbackResponse };