import { ResOpen as ResOpen_clsl } from '../shared/protocols/conglinshoulie/PtlOpen';
import { ResOpen as ResOpen_dixaiqianzhuang } from '../shared/protocols/dixiaqianzhuang/PtlOpen';
import { ResOpen as ResOpen_hbzb } from '../shared/protocols/hbzb/jfs/PtlOpen';
import { ResOpen as ResOpen_hbzbZbs } from '../shared/protocols/hbzb/zbs/PtlOpen';
import { ResOpen } from '../shared/protocols/jiaotang/PtlOpen';
import { eventCycle } from '../shared/protocols/kbzz/PtlOpen';
import { KuangDongCiShuInfo } from '../shared/protocols/kuangdong/PtlOpen';
import { lingzhulaixi_CiSHU } from '../shared/protocols/lingzhulaixi/PtlOpen';
import { ResOpen as ResOpen_mrsl } from '../shared/protocols/meirishilian/PtlOpen';
import { usertasklog } from '../shared/protocols/task/type';
import { Renown_info } from '../shared/protocols/user/PtlRenownOpen';
import { wzry_info } from '../shared/protocols/wzry/PtlOpen';
import { ResOpen as ResOpen_xs } from '../shared/protocols/xstask/PtlOpen';

export type playerInfoType = {
    /**酒吧抽奖 */
    jiuba: ResOpen & {
        /**单抽n次后没有出配置要求的物品后替换掉落组 */
        oneReplaceNum: number;
    };
    /**教堂抽奖 */
    jiaotang: ResOpen & {
        /**单抽n次后没有出配置要求的物品后替换掉落组 */
        oneReplaceNum: number;
    };
    /**英雄获得历史记录数量 */
    lshd_hero: {
        [heroId: string]: number;
    };
    /**装备获得历史记录数量 */
    lshd_equip: {
        [equipId: string]: number;
    };
    /**配件获得历史记录数量 */
    lshd_peijian: {
        [peijianId: string]: number;
    };
    /**悬赏任务记录 */
    xstask: Omit<ResOpen_xs, 'taskList'>;
    /**玩家头像、头像框、聊天框、模型 */
    playerInfo: {
        active: {
            [id: string]: number;
        };
    };
    /**射击小游戏 */
    shootGame: {
        /**上一次重置时间戳 */
        refreshTime: number;
        /**已通关过的难度 */
        passList: {
            [id: string]: number;
        };
        /**今日已领取的难度奖励 */
        receiveList: string[];
    };
    /**充值 */
    chongzhi: {
        giftBy: k_v<number>;
    };
    /**真主党 */
    qjzzd: {
        refreshTime: number;
        useFightNum: number;
        maxDps: number;
        // 刷新挑战次数时间
        refreFightTime?: number
    };
    /**黑帮争霸积分赛 */
    hbzb: {
        data: Omit<ResOpen_hbzb, 'rank'> & { refreshTime: number; };
    };
    hbzbZbs: {
        data: Omit<ResOpen_hbzbZbs, 'rank'> & { refreshTime: number; };
    };
    /**恐怖战争报名 */
    kbzzApply: {
        apply: boolean;
        applyTime: number;
        autoApply: boolean;
    };
    /**恐怖战争个人信息 */
    kbzzUser: eventCycle & { refreshTime: number; };
    /**每日试炼 */
    meirishilian: {
        data: ResOpen_mrsl & { refreshTime: number; };
    };
    /**地下钱庄（点金） */
    dixiaqianzhuang: ResOpen_dixaiqianzhuang & {
        /**抽奖次数 */
        num: number;
        /**修改数据的时间 */
        time: number;
    };
    /**配件仓库 */
    peijiancangku: {
        index: number;
    };
    /**矿洞次数信息 */
    kuangdong: KuangDongCiShuInfo;
    /**丛林狩猎 */
    clsl: ResOpen_clsl & { refreshTime: number; };
    /**领主来袭次数 */
    lingzhulaixi: lingzhulaixi_CiSHU;
    /**干部最高等级 */
    usertasklog: usertasklog;
    /**王者荣耀本服玩家数据 */
    wzry: wzry_info;
    /**干部传记奖励领取 */
    gbzj: {
        rec: k_v<boolean>;
    };
    /**爵位相关数据 */
    juewei: Renown_info;
};

export type CollectionPlayerInfo<T extends keyof playerInfoType> = {
    uid: string;
    type: T;
} & playerInfoType[T];