import { CloudDrivePagingOption, CloudDriveResourceInfo, CloudDriveResourceUploadStatus, ConversionOption } from './type';
import { EduStoreBase } from '../base';
import { CloudDriveResource, CloudDriveUploadingProgress } from './struct';
/**
 * `CloudDriveStore` 类提供云盘相关能力。
 */
/** @en
 * The `CloudDriveStore` class provides abilities related the cloud drive.
 */
export declare class CloudDriveStore extends EduStoreBase {
    /**
     * 云盘个人资源文件列表
     */
    /** @en
     * Personal resources
     */
    personalResources: Map<string, CloudDriveResource>;
    /**
     * 云盘资源上传进度
     */
    /** @en
     * Progresses of resources
     */
    uploadProgress: Map<string, CloudDriveUploadingProgress>;
    private _checkpoints;
    /**
     * 取消上传资源
     *
     * @param resourceUuid 资源 ID
     **/
    /** @en
     * Cancels uploading the file
     *
     * @param resourceUuid The resource ID
     */
    cancelUpload(resourceUuid: string): Promise<void>;
    /**
     * 重新上传资源
     *
     * @param resourceUuid 资源 ID
     **/
    /** @en
     * Retries uploading the file
     * @param resourceUuid The resource ID
     */
    retryUpload(resourceUuid: string): void;
    /**
     * 获取个人云盘资源
     * @param options 分页参数
     * @returns 云盘资源分页信息
     **/
    /** @en
     * Gets all personal resources
     * @param options The paging option
     * @returns Cloud disk resource page information
     */
    fetchPersonalResources(options: CloudDrivePagingOption): Promise<{
        list: never[];
        total: number;
    }>;
    private _initProgress;
    /**
     * @internal
     */
    /** @en
     * @internal
     */
    _updateProgress(resourceUuid: string, progressValue?: number, status?: CloudDriveResourceUploadStatus): Promise<void>;
    private _putFile;
    /**
     * 将已上传的资源文件映射为云盘内的一个文件
     * @param resourceUuid 资源 UUID
     * @param resourceInfo 资源信息
     */
    /** @en
     * Create a record that maps to the uploaded resource file
     * @param resourceUuid Resource UUID
     * @param resourceInfo Resource Info
     */
    addPersonalResource(resourceUuid: string, resourceInfo: CloudDriveResourceInfo): Promise<any>;
    /**
     * 更新云盘文件信息
     * @param resourceUuid
     * @param resourceInfo
     * @returns
     */
    /** @en
     * Updates the cloud drive file info
     * @param resourceUuid
     * @param resourceInfo
     * @returns
     */
    updatePersonalResource(resourceUuid: string, resourceInfo: Pick<CloudDriveResourceInfo, 'resourceName'>): Promise<any>;
    /**
     * 上传资源到云盘，上传后需要调用 addPersonalResource 方法创建一条资源对应的课件记录即可在云盘中使用。
     * @param file 资源文件对象
     * @param progressUuid 上传 UUID
     * @param ext 资源扩展名
     * @param contentType static: 静态， dynamic：动态
     * @param conversion 转换选项
     * @returns 上传成功后的文件信息
     **/
    /** @en
     * Uploads a file to personal resources, addPersonalResource is required to call after uploading, which creates a record that will show in cloud drive.
     * @param file The file
     * @param progressUuid Progress UUID
     * @param ext Extension name of the resource
     * @param contentType static or dynamic
     * @param conversion conversion options
     * @returns Information about the uploaded file
     */
    uploadPersonalResource(file: File, progressUuid: string, ext: string, contentType: string, conversion?: ConversionOption): Promise<{
        ext: string;
        resourceName: string;
        resourceUuid: any;
        url: string;
    } | {
        ext?: undefined;
        resourceName?: undefined;
        resourceUuid?: undefined;
        url?: undefined;
    } | undefined>;
    /**
     * 移除个人资源
     * @param resourceUuids 资源 ID
     **/
    /** @en
     * Removes files from personal resources
     * @param resourceUuids The resource IDs
     */
    removePersonalResources(resourceUuids: string[]): Promise<undefined>;
    /**
     * 计算资源文件 UUID
     * @param resource
     * @returns 资源文件 UUID
     */
    /** @en
     * Figure out a UUID for the resource file
     * @param resource
     * @returns Resource file UUID
     */
    calcResourceUuid(resource: File | string): Promise<string>;
    /**
     * @internal
     */
    /** @en
     * @internal
     */
    onInstall(): void;
    /**
     * @internal
     */
    /** @en
     * @internal
     */
    onDestroy(): void;
}
