import { BaseProps } from '../../base/props';
import { SimpleValue } from '../../base/atoms';
export type UploaderFileItem = {
    status?: UploaderFileStatus;
    message?: string;
    uid?: SimpleValue;
    name?: string;
    url?: string;
    type?: 'image' | 'list';
    path?: string;
    loadingIcon?: React.ReactNode;
    failIcon?: React.ReactNode;
    file?: File;
    percentage?: number;
};
export type UploaderFileStatus = 'ready' | 'uploading' | 'success' | 'error';
export type UploaderFileType<T> = {
    [key: string]: T;
};
export interface BaseUploader extends BaseProps {
    /**
    * 文件上传数量限制
    */
    maxCount: SimpleValue
    /**
    * 可以设定最大上传文件的大小（字节）
    */
    maxFileSize: number
    /**
    * 默认已经上传的文件列表
    */
    defaultValue?: UploaderFileItem[]
    /**
    * 已经上传的文件列表
    */
    value?: UploaderFileItem[]
    /**
    * 上传列表的内建样式，支持两种基本样式 picture、list
    */
    previewType: 'picture' | 'list'
    /**
    * 图片填充模式
    */
    fit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'
    /**
    * 上传方法，入参是需要被上传的文件对象，经过异步处理之后，返回上传结果
    */
    upload: (file: File) => Promise<UploaderFileItem>
    /**
    * 上传区域<a href="#/zh-CN/component/icon">图标名称</a>
    */
    uploadIcon?: React.ReactNode
    /**
    * 删除区域的图标名称
    */
    deleteIcon?: React.ReactNode
    /**
    * 上传区域图片下方文字
    */
    uploadLabel?: React.ReactNode
    /**
    * 自定义列表模式的上传区域
    */
    listUploadRender?: React.ReactNode
    /**
    * input 标签 name 的名称，发到后台的文件参数名
    */
    name: string
    accept: string;
    /**
    * 是否禁用文件上传
    */
    disabled: boolean
    /**
    * 是否在选取文件后立即进行上传，false 时需要手动执行 ref submit 方法进行上传
    */
    autoUpload: boolean
    /**
    * 是否支持文件多选
    */
    multiple: boolean
    /**
    * 是否需要清空input内容，设为true支持重复选择上传同一个文件
    */
    clearInput: boolean
    /**
    * 是否上传成功后展示预览图
    */
    preview: boolean
    /**
    * 是否展示删除按钮
    */
    deletable: boolean
    capture: boolean | 'user' | 'environment';
    /**
    * 当上传非图片('image')格式的默认图片地址
    */
    previewUrl?: string
    /**
    * 点击删除文件时触发
    */
    onDelete?: (file: UploaderFileItem, files: UploaderFileItem[]) => void
    /**
    * 文件大小超过限制时触发
    */
    onOversize?: (files: File[]) => void
    /**
    * 文件数量超过限制时触发
    */
    onOverCount?: (count: number) => void
    /**
    * 已上传的文件列表变化时触发
    */
    onChange?: (files: UploaderFileItem[]) => void
    /**
    * 上传前的函数需要返回一个Promise对象
    */
    beforeUpload?: (files: File[]) => Promise<File[]>
    /**
    * 除文件时的回调，返回值为 false 时不移除。支持返回一个 Promise 对象，Promise 对象 resolve(false) 或 reject 时不移除
    */
    beforeDelete?: (file: UploaderFileItem, files: UploaderFileItem[]) => boolean
    /**
    * 文件上传成功后点击触发
    */
    onFileItemClick?: (file: UploaderFileItem, index: number) => void
    /**
    * 图片上传队列变化时触发
    */
    onUploadQueueChange?: (tasks: UploaderFileItem[]) => void
}
