/**
 * UserWorks.ts — STEAM / 用户作品发布与作品集 API（完整 TypeScript 实现）
 *
 * 封装 coreservice 的 `/steam/*` 路由，使页面可上传作品资源、发布作品、
 * 浏览公开作品、与他人作品互动（点赞/收藏/评论等）。
 *
 * @example
 *   const asset = await keepwork.userWorks.uploadAsset(file);
 *   await keepwork.userWorks.upload({ title: 'My Game', category: 'AI Game', grade: 'G5', ... });
 *   const gallery = await keepwork.userWorks.list({ page: 1, pageSize: 20 });
 */
/** 上传进度信息 */
export interface UploadProgress {
    percent: number;
    loaded: number;
    total: number;
}
/** 上传进度回调 */
export type UploadProgressCallback = (progress: UploadProgress) => void;
/** 资源上传选项 */
export interface UploadAssetOptions {
    /** 用户文件夹下的相对 key */
    key?: string;
    /** key 前缀（默认 'works'） */
    prefix?: string;
    /** 显示文件名 */
    filename?: string;
    /** 进度回调 */
    onProgress?: UploadProgressCallback;
    /** 自定义上传端点 */
    uploadUrl?: string;
}
/** 资源上传返回结果 */
export interface UploadAssetResult {
    key: string;
    relativeKey: string;
    url: string;
    domain: string;
    bucketName: string | undefined;
    response: unknown;
}
/** 上传 token 信息 */
interface UploadTokenInfo {
    token?: string;
    domain?: string;
    bucketName?: string;
    data?: {
        token?: string;
        domain?: string;
        bucketName?: string;
    };
}
/** 作品对象（发布/更新用，字段较松散） */
export type WorkData = Record<string, unknown>;
/** 列表查询选项 */
export interface UserWorksListOptions {
    page?: number;
    pageSize?: number;
    keyword?: string;
    category?: string;
    grade?: string;
    sortBy?: 'hot' | 'latest' | 'rating';
    status?: number | null;
    [key: string]: unknown;
}
/** 添加评论选项 */
export interface AddCommentOptions {
    workId: string | number;
    rating?: number;
    content?: string;
    dimensions?: unknown;
}
/** sdk 需提供的最小接口 */
interface UserWorksSdk {
    user?: {
        username?: string;
    };
    getUserProfile(): Promise<{
        username?: string;
    } | null>;
    get(path: string, params?: Record<string, unknown>): Promise<unknown>;
    post(path: string, body?: unknown): Promise<unknown>;
    put(path: string, body?: unknown): Promise<unknown>;
    delete(path: string): Promise<unknown>;
}
export default class UserWorks {
    /** STEAM 项目路由使用的作品状态值。 */
    static Status: Readonly<{
        PENDING: 11;
        APPROVED: 12;
        REJECTED: 13;
    }>;
    sdk: UserWorksSdk;
    constructor(sdk: unknown);
    /** 去除空值参数。 */
    private _compactParams;
    /** 校验并 encode id。 */
    private _requireId;
    /** 取文件扩展名（含点）。 */
    private _getFileExt;
    /** 生成随机 id。 */
    private _randomId;
    /** 生成资源 key。 */
    private _generateAssetKey;
    /** 获取当前用户名（资源上传需要）。 */
    private _getUsername;
    /** 拼接公共 URL。 */
    private _toPublicUrl;
    /** 把 key 或 URL 归一化为存储 key。 */
    private _normalizeAssetKey;
    /** 底层七牛上传（XHR，支持进度）。 */
    private _qiniuUpload;
    /**
     * 获取作品资源 key 的七牛上传 token（后端会把 key 限定在当前用户名下）。
     */
    getUploadToken(key: string): Promise<UploadTokenInfo>;
    /**
     * 上传作品封面/视频资源到 STEAM 七牛桶。
     */
    uploadAsset(file: File | Blob, opts?: UploadAssetOptions): Promise<UploadAssetResult>;
    /**
     * 按完整 key 或公共 URL 删除已上传的七牛资源。
     */
    deleteAsset(keyOrUrl: string): Promise<unknown>;
    /** deleteAsset 别名。 */
    removeAsset(keyOrUrl: string): Promise<unknown>;
    /**
     * 发布作品送审。必填：title, category, grade, description, background,
     * innovation, videoType('video'|'url'), videoUrl。
     */
    upload(work: WorkData): Promise<unknown>;
    /** upload 别名。 */
    uploadWork(work: WorkData): Promise<unknown>;
    /** upload 别名。 */
    create(work: WorkData): Promise<unknown>;
    /** 更新当前用户的某个作品。 */
    update(id: string | number, updates?: WorkData): Promise<unknown>;
    /** update 别名。 */
    updateWork(id: string | number, updates?: WorkData): Promise<unknown>;
    /** 删除当前用户的某个作品。 */
    delete(id: string | number): Promise<unknown>;
    /** delete 别名。 */
    remove(id: string | number): Promise<unknown>;
    /** delete 别名。 */
    deleteWork(id: string | number): Promise<unknown>;
    /** 浏览所有用户已审核通过的作品。 */
    list(options?: UserWorksListOptions): Promise<unknown>;
    /** list 别名。 */
    browse(options?: UserWorksListOptions): Promise<unknown>;
    /** list 别名。 */
    getPublicWorks(options?: UserWorksListOptions): Promise<unknown>;
    /** 列出当前用户拥有的作品。 */
    my(options?: UserWorksListOptions): Promise<unknown>;
    /** my 别名。 */
    getMyWorks(options?: UserWorksListOptions): Promise<unknown>;
    /** my 别名。 */
    listMine(options?: UserWorksListOptions): Promise<unknown>;
    /** 获取作品公开详情（后端会增加访问计数）。 */
    get(id: string | number): Promise<unknown>;
    /** get 别名。 */
    getDetail(id: string | number): Promise<unknown>;
    /** get 别名。 */
    getWorkDetail(id: string | number): Promise<unknown>;
    /** 获取当前用户作品汇总统计。 */
    getStats(): Promise<unknown>;
    /** getStats 别名。 */
    getUserWorksStats(): Promise<unknown>;
    like(id: string | number): Promise<unknown>;
    unlike(id: string | number): Promise<unknown>;
    getLikeStatus(id: string | number): Promise<unknown>;
    favorite(id: string | number): Promise<unknown>;
    unfavorite(id: string | number): Promise<unknown>;
    getFavoriteStatus(id: string | number): Promise<unknown>;
    /** 列出作品的顶层评论/评分。 */
    listComments(workId: string | number, options?: UserWorksListOptions): Promise<unknown>;
    /** listComments 别名。 */
    getComments(workId: string | number, options?: UserWorksListOptions): Promise<unknown>;
    /** 添加评论/评分。必填：workId, rating, content。 */
    addComment({ workId, rating, content, dimensions }?: AddCommentOptions): Promise<unknown>;
    deleteComment(workId: string | number, commentId: string | number): Promise<unknown>;
    toggleCommentStatus(workId: string | number, disabled: boolean): Promise<unknown>;
    getAIAnalysis(workId: string | number): Promise<unknown>;
    triggerAIAnalysis(workId: string | number): Promise<unknown>;
    generateLessonPlan(workId: string | number): Promise<unknown>;
}
export {};
//# sourceMappingURL=UserWorks.d.ts.map