import { type PropType, type StyleValue } from 'vue'; export type UploadStatus = 'pending' | 'uploading' | 'failed' | 'done'; export interface UploadFile { type: 'image' | 'video'; size: number; path: string; duration: number; width: number; height: number; } export interface UploadFileItem { file?: UploadFile; url?: string; isImage?: boolean; isVideo?: boolean; status?: UploadStatus; name?: string; message?: string; } export interface UploadProps { rootStyle?: StyleValue; rootClass?: string; accept?: 'image' | 'video'; multiple?: boolean; sourceType?: ('album' | 'camera')[]; sizeType?: ('original' | 'compressed')[]; maxDuration?: number; camera?: 'back' | 'front'; modelValue?: UploadFileItem[]; maxCount?: number; maxSize?: number | ((file: UploadFile) => boolean); overSize?: (fileItem: UploadFileItem[]) => void; disabled?: boolean; readonly?: boolean; beforeRead?: (file: UploadFile) => boolean | Promise; afterRead?: (fileItem: UploadFileItem) => void; removable?: boolean; beforeRemove?: (...args: unknown[]) => boolean | Promise; validateEvent?: boolean; } export declare const uploadProps: { rootStyle: PropType; rootClass: StringConstructor; accept: { type: PropType<"video" | "image" | undefined>; default: string; }; multiple: BooleanConstructor; sourceType: { type: PropType<("album" | "camera")[] | undefined>; default: () => string[]; }; sizeType: { type: PropType<("original" | "compressed")[] | undefined>; default: () => string[]; }; maxDuration: { type: NumberConstructor; default: number; }; camera: PropType<"front" | "back" | undefined>; modelValue: PropType; maxCount: { type: NumberConstructor; default: number; }; maxSize: { type: PropType boolean) | undefined>; default: number; }; overSize: PropType<((fileItem: UploadFileItem[]) => void) | undefined>; disabled: BooleanConstructor; readonly: BooleanConstructor; beforeRead: PropType<((file: UploadFile) => boolean | Promise) | undefined>; afterRead: PropType<((fileItem: UploadFileItem) => void) | undefined>; removable: { type: BooleanConstructor; default: boolean; }; beforeRemove: PropType<((...args: unknown[]) => boolean | Promise) | undefined>; validateEvent: { type: BooleanConstructor; default: boolean; }; }; export interface UploadSlots { select(props: Record): any; } export interface UploadEmits { (e: 'update:model-value', value: UploadFileItem[]): void; (e: 'remove', index: number, item: UploadFileItem): void; } export interface ChainNode { (data: any, next: (...args: any[]) => void): void; } export interface UploadPreviewProps { rootStyle?: StyleValue; rootClass?: string; file?: UploadFile; url?: string; isImage?: boolean; isVideo?: boolean; status?: UploadStatus; name?: string; message?: string; removable?: boolean; beforeRemove?: (index: number) => boolean | Promise; index: number; disabled?: boolean; readonly?: boolean; } export declare const uploadPreviewProps: { rootStyle: PropType; rootClass: StringConstructor; file: PropType; url: StringConstructor; isImage: BooleanConstructor; isVideo: BooleanConstructor; status: { type: PropType; default: string; }; name: StringConstructor; message: StringConstructor; removable: BooleanConstructor; beforeRemove: PropType<((index: number) => boolean | Promise) | undefined>; index: { type: NumberConstructor; required: true; }; disabled: BooleanConstructor; readonly: BooleanConstructor; }; export interface UploadPreviewEmits { (e: 'image-click', index: number): void; (e: 'remove', index: number): void; }