import { ExecOptions } from "./core.ts";
/**
 * 文件实体
 * @description 文件实体
 * @param {string} path 文件本地路径
 * @param {string?} url 文件远程地址
 * @param {string?} base64 文件base64
 * @param {string} name 文件名称
 * @param {string} 远程文件存储id
 * @param {string} identifier 文件信息
 * @param {number} size 文件大小
 */
export interface FileEntity {
    name: string;
    identifier?: string;
    path: string;
    url?: string;
    id?: string;
    base64?: string;
    size: number;
}
/** 文件类型 */
export declare enum FileType {
    any = 0,
    media = 1,
    image = 2,
    video = 3,
    audio = 4,
    custom = 5
}
/**
 * 文件选择选项
 * @param {string} dialogTitle 选择页面标题
 * @param {string?} initialDirectory 初始目录
 * @param {FileType?} type 文件类型
 * @param {string[]?} allowedExtensions 允许选择的文件类型
 * @param {boolean} allowCompression 是否允许压缩
 * @param {boolean} lockParentWindow 选择器窗口是否锁定在Native页面上方
 * @param {boolean} toBase64 是否返回base64
 * @param {boolean} upload 是否上传
 * @param {boolean} multiple 是否多选
 */
export interface PickFileOptions extends ExecOptions<FileEntity | FileEntity[], any> {
    upload?: boolean;
    multiple?: boolean;
    toBase64?: boolean;
    dialogTitle?: string;
    initialDirectory?: string;
    type?: FileType;
    allowedExtensions?: string[];
    allowCompression?: boolean;
    lockParentWindow?: boolean;
}
/**
 * 打开本地文件选项
 * @param {string} path 本地文件路径
 */
export interface OpenFileOptions extends ExecOptions<any, any> {
    path: string;
}
/**
 * 打开网络文件选项
 * @param {string} url 文件地址
 * @param {string} name 文件名
 */
export interface OpenNetworkFileOptions extends ExecOptions<any, any> {
    url: string;
    name: string;
}
/**
 * 判断文件是否存在选项
 * @param {string} path 文件本地路径
 */
export interface IsFileExistOptions extends ExecOptions<boolean, any> {
    path: string;
}
/** Http请求返回数据类型 */
export declare enum HttpResponseType {
    json = 0,
    stream = 1,
    plain = 2,
    bytes = 3
}
/**
 * Http 请求选项
 * @param {string} method 请求方式
 * @param {number?} receiveTimeout 响应超时时间，单位ms
 * @param {number?} sendTimeout 发送超时事件，单位ms
 * @param {object} extra 额外配置
 * @param {object} headers 请求头
 * @param {boolean} preserveHeaderCase 是否应保留headers的大小写。
 * @param {HttpResponseType} responseType 响应数据类型
 * @param {string} contentType 请求内容类型
 * @param {boolean} receiveDataWhenStatusError 状态码表示请求失败时是否检索数据
 */
export interface HttpOptions {
    method?: string;
    receiveTimeout?: number;
    sendTimeout?: number;
    extra?: object;
    headers?: object;
    preserveHeaderCase?: boolean;
    responseType?: HttpResponseType;
    contentType?: string;
    receiveDataWhenStatusError?: boolean;
    followRedirects?: boolean;
    maxRedirects?: number;
    persistentConnection?: boolean;
}
/**
 * 文件下载选项
 * @param {string} url 文件远程地址
 * @param {string} bane 文件名
 * @param {string} savePath 文件本地保存路径
 * @param {HttpOptions} options Http请求选项
 */
export interface DownloadOptions extends ExecOptions<any, any> {
    url: string;
    name?: string;
    savePath?: string;
    options?: HttpOptions;
}
/**
 * 文件上传选项
 * @param {string} path 文件本地路径
 * @param {string} server 服务器地址
 */
export interface UploadOptions extends ExecOptions<any, any> {
    path: string;
    server?: string;
}
/**
 * 获取文件目录选项
 * @param {string} path 自定义路径
 */
export interface GetFileDirectoryOptions extends ExecOptions<string, any> {
    path?: string;
}
