/**
 * CloudDrive.ts — 个人文件上传/管理（经七牛 CDN，完整 TypeScript 实现）
 *
 * 提供上传、列表、删除、重命名、原始 URL 等能力：与 Keepwork 存储网关
 * （`/ts-storage`）通信，并把文件直传到七牛 `z2` 区域。
 *
 * @example
 *   const drive = window.keepwork.cloudDrive;
 *   const file = (document.querySelector('input[type=file]') as HTMLInputElement).files![0];
 *   const result = await drive.upload(file, { onProgress: p => console.log(p) });
 *   const list   = await drive.list();
 *   await drive.rename(result.key, 'newName.png');
 *   const url    = await drive.getRawUrl(result.key);
 *   await drive.remove(result.key);
 */
/** 上传进度信息 */
export interface UploadProgress {
    percent: number;
    loaded: number;
    total: number;
}
/** 上传进度回调 */
export type UploadProgressCallback = (progress: UploadProgress) => void;
/** upload() 选项 */
export interface CloudDriveUploadOptions {
    /** 显示名（默认 file.name） */
    filename?: string;
    /** 显式七牛 key（省略则自动生成） */
    key?: string;
    /** 进度回调 */
    onProgress?: UploadProgressCallback;
}
/** uploadTempFile() 选项 */
export interface CloudDriveTempUploadOptions extends CloudDriveUploadOptions {
    /** 生命周期（自动删除时间），见类内文档 */
    expire?: string | number | null;
}
/** upload() 返回结果 */
export interface CloudDriveUploadResult {
    key: string;
    fileId: string | number | undefined;
    filename: string;
    size: number;
}
/** uploadTempFile() 返回结果 */
export interface CloudDriveTempUploadResult extends CloudDriveUploadResult {
    url: string;
}
/** list() 选项 */
export interface CloudDriveListOptions {
    /** 页码（1-based） */
    page?: number;
    /** 每页条数 */
    perPage?: number;
    /** 按文件名子串过滤 */
    filename?: string;
}
/** sdk 需提供的最小接口 */
interface CloudDriveSdk {
    baseURL?: string;
    user?: {
        id?: string | number;
    };
    getAuthHeaders(): Record<string, string>;
}
export default class CloudDrive {
    sdk: CloudDriveSdk;
    constructor(sdk: unknown);
    /**
     * 从 SDK 的核心 API 基地址推导存储网关基地址。
     * api.keepwork.com/core/v0 → api.keepwork.com/ts-storage
     */
    private _getStorageBase;
    /**
     * 向存储网关发起带认证的请求。
     */
    private _storageRequest;
    /**
     * 为给定文件生成唯一七牛 object key。格式：`{userId}-{uuid}.{ext}`
     */
    private _generateKey;
    /**
     * 上传 File/Blob 到个人 CDN 文件夹。
     */
    upload(file: File | Blob, opts?: CloudDriveUploadOptions): Promise<CloudDriveUploadResult>;
    /**
     * 底层七牛上传（XMLHttpRequest，支持进度）。
     * 七牛 z2 区上传端点：https://upload-z2.qiniup.com
     */
    private _qiniuUpload;
    /**
     * 把 `opts.expire`（string | number | null）解析为控制
     * `keepwork-public-temporary` 桶生命周期的桶前缀。
     *
     * 生命周期规则：
     *   - （无前缀）→ 服务端默认过期时间
     *   - `tmpImg`    → 7 天
     *   - `temp_90`   → 90 天
     *   - `temp_180`  → 180 天
     *   - `temp_360`  → 360 天
     *
     * 接受：null/undefined/'' → ''；精确前缀字符串原样用；number(天数)→最小满足的前缀；
     * 形如 '91days'/'180 d'/'7' 的字符串→解析为天数。
     */
    private _resolveTempPrefix;
    /**
     * 为临时桶生成七牛 object key。镜像 `_generateKey()` 但可选地前置生命周期前缀
     * 并保留原始文件名。格式：`{prefix}_{userId}-{originalFilename}`（无前缀时省略 prefix_）
     */
    private _generateTempKey;
    /**
     * 上传 File/Blob 到公共临时 CDN 桶。生命周期（自动删除时间）由 `opts.expire` 控制
     * （映射为桶 key 前缀，见 _resolveTempPrefix）。
     *
     * 结果 URL：`https://qiniu-public-temporary.keepwork.com/{key}`
     */
    uploadTempFile(file: File | Blob, opts?: CloudDriveTempUploadOptions): Promise<CloudDriveTempUploadResult>;
    /**
     * 列出用户个人 CDN 文件夹中的文件。返回 `{ data: [...], total, page, ... }`。
     */
    list(opts?: CloudDriveListOptions): Promise<unknown>;
    /**
     * 获取存储用量统计。
     */
    info(): Promise<unknown>;
    /**
     * 重命名文件的显示名（七牛 key 保持不变）。
     */
    rename(key: string, filename: string): Promise<unknown>;
    /**
     * 按 id（或当作 id 的 key）删除文件。
     */
    remove(id: string | number): Promise<unknown>;
    /**
     * 获取文件的公共 CDN URL。
     */
    getRawUrl(fileId: string | number): Promise<string>;
}
export {};
//# sourceMappingURL=CloudDrive.d.ts.map