/**
 * 文件上传相关工具函数
 * 支持微信小程序、支付宝小程序、H5多端兼容
 */
/**
 * 上传配置接口
 */
export interface UploadConfig {
    /** 上传服务器地址 */
    url: string;
    /** 文件对应的 key，开发者在服务端可以通过这个 key 获取文件的二进制内容 */
    name?: string;
    /** HTTP 请求中其他额外的 form data */
    formData?: Record<string, any>;
    /** HTTP 请求 Header，Header 中不能设置 Referer */
    header?: Record<string, string>;
    /** 文件大小限制(MB) */
    maxSize?: number;
    /** 允许的文件类型 */
    allowedTypes?: string[];
    /** 是否显示提示信息 */
    showToast?: boolean;
    /** 超时时间(ms) */
    timeout?: number;
    /** 成功提示信息 */
    successMessage?: string;
    /** 失败提示信息 */
    failMessage?: string;
}
/**
 * 文件选择类型
 */
export type FileSelectType = 'image' | 'messagefile' | 'local';
/**
 * 选择文件配置接口
 */
export interface ChooseFileConfig {
    /** 文件选择类型 */
    type?: FileSelectType;
    /** 最多可以选择的文件数量 */
    count?: number;
    /** 所选的图片的尺寸（仅image类型有效） */
    sizeType?: ('original' | 'compressed')[];
    /** 选择图片的来源（仅image类型有效） */
    sourceType?: ('album' | 'camera')[];
    /** 文件类型限制（仅local类型有效） */
    extension?: string[];
    /** 文件大小限制(MB) */
    maxSize?: number;
    /** 是否显示提示信息 */
    showToast?: boolean;
    /** 失败提示信息 */
    failMessage?: string;
}
/**
 * 选择图片配置接口（向后兼容）
 */
export interface ChooseImageConfig extends Omit<ChooseFileConfig, 'type' | 'extension'> {
}
/**
 * 上传结果接口
 */
export interface UploadResult {
    /** 是否成功 */
    success: boolean;
    /** 服务器返回的数据 */
    data?: any;
    /** 提示信息 */
    message?: string;
    /** 本地临时文件路径 */
    tempFilePath?: string;
    /** HTTP 状态码 */
    statusCode?: number;
}
/**
 * 选择文件结果接口
 */
export interface ChooseFileResult {
    /** 是否成功 */
    success: boolean;
    /** 临时文件路径数组 */
    tempFilePaths?: string[];
    /** 临时文件对象数组 */
    tempFiles?: Array<{
        path: string;
        size: number;
    }>;
    /** 提示信息 */
    message?: string;
    /** 文件选择类型 */
    type: FileSelectType;
}
/**
 * 选择图片结果接口（向后兼容）
 */
export interface ChooseImageResult extends Omit<ChooseFileResult, 'type'> {
}
/**
 * 上传进度回调函数类型
 */
export type ProgressCallback = (progress: {
    /** 上传进度百分比 */
    progress: number;
    /** 已经上传的数据长度 */
    totalBytesSent: number;
    /** 预期需要上传的数据总长度 */
    totalBytesExpectedToSend: number;
}) => void;
export declare function chooseFile(config?: ChooseFileConfig): Promise<ChooseFileResult>;
/**
 * 选择图片（向后兼容）
 * @param config 选择配置
 * @returns Promise<ChooseImageResult> 选择结果
 */
export declare function chooseImage(config?: ChooseImageConfig): Promise<ChooseImageResult>;
/**
 * 上传文件
 * @param filePath 文件路径
 * @param config 上传配置
 * @param onProgress 进度回调
 * @returns Promise<UploadResult> 上传结果
 */
export declare function uploadFile(filePath: string, config: UploadConfig, onProgress?: ProgressCallback): Promise<UploadResult>;
/**
 * 选择并上传文件（一体化功能）
 * @param config 上传配置
 * @param chooseConfig 选择文件配置
 * @param onProgress 进度回调
 * @returns Promise<UploadResult[]> 上传结果数组
 */
export declare function chooseAndUploadFile(config: UploadConfig, chooseConfig?: ChooseFileConfig, onProgress?: ProgressCallback): Promise<UploadResult[]>;
/**
 * 选择并上传图片（向后兼容）
 * @param config 上传配置
 * @param chooseConfig 选择图片配置
 * @param onProgress 进度回调
 * @returns Promise<UploadResult[]> 上传结果数组
 */
export declare function chooseAndUploadImage(config: UploadConfig, chooseConfig?: ChooseImageConfig, onProgress?: ProgressCallback): Promise<UploadResult[]>;
/**
 * 检查是否支持文件上传
 * @returns boolean 是否支持
 */
export declare function isUploadSupported(): boolean;
/**
 * 获取文件信息
 * @param filePath 文件路径
 * @returns Promise<{size: number, type?: string}> 文件信息
 */
export declare function getFileInfo(filePath: string): Promise<{
    size: number;
    digest?: string;
} | null>;
