import { default as React } from 'react';
import { default as Taro } from '@tarojs/taro';
import { UploadOptions } from './upload';
import { BasicComponent } from '../../utils/typings';
import { FileItem } from './file-item';
interface sizeType {
    /** 原图 */
    original: string;
    /** compressed */
    compressed: string;
}
interface sourceType {
    /** 从相册选图 */
    album: string;
    /** 使用相机 */
    camera: string;
}
interface mediaType {
    /** 只能拍摄图片或从相册选择图片 */
    image: string;
    /** 只能拍摄视频或从相册选择视频 */
    video: string;
}
export interface UploaderProps extends BasicComponent {
    url: string;
    maxCount: string | number;
    sizeType: (keyof sizeType)[];
    sourceType: (keyof sourceType)[];
    mediaType: (keyof mediaType)[];
    camera: string;
    maxFileSize: number;
    defaultValue?: FileItem[];
    value?: FileItem[];
    previewType: 'picture' | 'list';
    fit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';
    uploadIcon?: React.ReactNode;
    uploadLabel?: React.ReactNode;
    name: string;
    accept: string;
    disabled: boolean;
    autoUpload: boolean;
    multiple: boolean;
    timeout: number;
    data: any;
    method: string;
    xhrState: number | string;
    headers: any;
    preview: boolean;
    deletable: boolean;
    className: string;
    previewUrl?: string;
    maxDuration: number;
    style: React.CSSProperties;
    onStart?: (option: UploadOptions) => void;
    onDelete?: (file: FileItem, files: FileItem[]) => void;
    onSuccess?: (param: {
        responseText: XMLHttpRequest['responseText'];
        option: UploadOptions;
        files: FileItem[];
    }) => void;
    onProgress?: (param: {
        e: ProgressEvent<XMLHttpRequestEventTarget>;
        option: UploadOptions;
        percentage: number | string;
    }) => void;
    onFailure?: (param: {
        responseText: XMLHttpRequest['responseText'];
        option: UploadOptions;
        files: FileItem[];
    }) => void;
    onUpdate?: (files: FileItem[]) => void;
    onOversize?: (files: Taro.chooseImage.ImageFile[] | Taro.chooseMedia.ChooseMedia[] | any) => void;
    onChange?: (files: FileItem[]) => void;
    beforeUpload?: (files: Taro.chooseImage.ImageFile[] | Taro.chooseMedia.ChooseMedia[] | any) => Promise<File[] | boolean>;
    beforeXhrUpload?: (xhr: XMLHttpRequest, options: any) => void;
    beforeDelete?: (file: FileItem, files: FileItem[]) => boolean;
    onFileItemClick?: (file: FileItem, index: number) => void;
}
export declare const Uploader: React.ForwardRefExoticComponent<Partial<UploaderProps> & {
    children?: React.ReactNode | undefined;
} & React.RefAttributes<unknown>>;
export {};
