import type React from 'react';
import type { ImageSourcePropType } from 'react-native';
export declare type UploaderValue = {
    /**
     * 当前资源的唯一标识
     */
    key: string;
    /**
     * 文件路径
     */
    filepath: string;
    /**
     * 文件状态
     * @default 'done'
     */
    status?: 'loading' | 'done' | 'error';
    [index: string]: any;
};
export interface UploaderProps<T> {
    /**
     * 图片数组
     */
    list: T[];
    /**
     * 文件上传数量限制
     * @default Number.MAX_SAFE_INTEGER
     */
    maxCount?: number;
    /**
     * 图片展示组件
     * @default Image
     */
    imageComponent?: React.ComponentType<{
        source: ImageSourcePropType;
        [index: string]: any;
    }>;
    /**
     * 是否展示删除按钮
     * @default true
     */
    deletable?: boolean;
    /**
     * 是否展示上传区域
     * @default true
     */
    showUpload?: boolean;
    /**
     * 上传区域文字提示
     * @default '图片'
     */
    uploadText?: string;
    /**
     * 上传图标
     */
    uploadIcon?: React.ReactNode;
    /**
     * 点击选择按钮
     */
    onPressUpload?: () => void;
    /**
     * 缩略图尺寸
     * @default 80
     */
    imageSize?: number;
    /**
     * 图片之间的间距
     * @default uploader_image_gap
     */
    imageGap?: number;
    /**
     * 点击某一个图片
     */
    onPressImage?: (current: UploaderValue, index: number, list: UploaderValue[]) => void;
    /**
     * 点击删除文件
     */
    onPressDelete?: (current: UploaderValue, index: number, list: UploaderValue[]) => void;
    /**
     * 点击上传出错的文件
     */
    onPressError?: (current: UploaderValue, index: number, list: UploaderValue[]) => void;
}
export interface UploaderImageProps extends Partial<Pick<UploaderValue, 'filepath' | 'status'>>, Pick<UploaderProps<UploaderValue>, 'imageComponent' | 'deletable'> {
    /**
     * 缩略图尺寸
     * @default 80
     */
    size?: number;
    /**
     * 图片之间的间距
     * @default uploader_image_gap
     */
    gap?: number;
    /**
     * 点击图片
     */
    onPress?: () => void;
    /**
     * 点击删除图片
     */
    onPressDelete?: () => void;
    /**
     * 是否是上传按钮
     */
    isUpload?: boolean;
}
