/**
 * 服务端 API 通用响应类型
 */

/** 服务端标准响应封装 */
export interface ApiEnvelope<T> {
    success: boolean;
    data: T | null;
    message: string | null;
    timestamp: string;
}

/** 体力值信息 */
export interface StaminaInfo {
    /** 当前体力值（已计算恢复） */
    current: number;
    /** 体力上限，固定为 50 */
    max: number;
    /** 下一点体力恢复的时间（ISO 8601），满体力时为 null */
    nextRecoverAt: string | null;
}

/** 下一关完整数据（多个接口共用） */
export interface NextLevelData {
    /** 关卡 ID */
    id: string;
    /** 关卡编号（sortOrder） */
    level: number;
    /** 图片1 URL */
    image1Url: string;
    /** 图片1 文本说明 */
    image1Description: string | null;
    /** 图片2 URL */
    image2Url: string;
    /** 图片2 文本说明 */
    image2Description: string | null;
    /** 答案 */
    answer: string;
    /** 谐音梗说明 */
    punchline: string | null;
    /** 线索1 */
    hint1: string | null;
    /** 线索2 */
    hint2: string | null;
    /** 线索3 */
    hint3: string | null;
    /** 限时（秒），null 表示不限时 */
    timeLimit: number | null;
}

/** 登录响应数据 */
export interface WxLoginData {
    token: string;
    user: {
        id: string;
        nickname: string | null;
        stamina: number;
    };
}

/** 用户资料响应数据 */
export interface UserProfileData {
    id: string;
    nickname: string | null;
    stamina: StaminaInfo;
}

/** 游戏数据响应（Loading 页面） */
export interface GameData {
    user: {
        id: string;
        stamina: StaminaInfo;
    };
    /** 已通关的关卡数量 */
    completedLevelCount: number;
    /** 下一个待通关的关卡（全部通关时为 null） */
    nextLevel: NextLevelData | null;
}

/** 进入关卡响应 */
export interface EnterLevelData {
    id: string;
    level: number;
    image1Url: string;
    image1Description: string | null;
    image2Url: string;
    image2Description: string | null;
    answer: string;
    punchline: string | null;
    hint1: string | null;
    hint2: string | null;
    hint3: string | null;
    stamina: StaminaInfo;
    /** 预加载的下一关数据（无下一关时为 null） */
    preloadNextLevel: NextLevelData | null;
}

/** 通关上报响应 */
export interface CompleteLevelData {
    firstClear: boolean;
    levelId: string;
    timeSpent: number;
    /** 下一个待通关的关卡（全部通关时为 null） */
    nextLevel: NextLevelData | null;
}

/** 创建分享响应 */
export interface CreateShareData {
    shareCode: string;
    title: string;
    levelCount: number;
}

/** 分享关卡数据 */
export interface ShareLevelData {
    id: string;
    level: number;
    image1Url: string;
    image1Description: string | null;
    image2Url: string;
    image2Description: string | null;
    answer: string;
    punchline: string | null;
    hint1: string | null;
    hint2: string | null;
    hint3: string | null;
    sortOrder: number;
}

/** 加入分享响应 */
export interface JoinShareData {
    shareCode: string;
    title: string;
    levels: ShareLevelData[];
}

/** 上报关卡进度响应 */
export interface ReportProgressData {
    passed: boolean;
    timeLimit: number | null;
    withinTimeLimit: boolean;
}

/** 我创建的分享挑战条目 */
export interface CreatedShareItem {
    id: string;
    shareCode: string;
    title: string;
    levelCount: number;
    participantCount: number;
    userRank: number | null;
    createdAt: string;
}

/** 我创建的分享挑战列表响应 */
export interface CreatedShareListData {
    items: CreatedShareItem[];
}
