import {ResOpen as ResOpen136Gift} from '../shared/protocols/event/136Gift/PtlOpen';
import {ResOpen as ResOpenChuanshuozhilu} from '../shared/protocols/event/chuanshuozhilu/PtlOpen';
import {ResOpen as ResOpenDiaoluoduihuan} from '../shared/protocols/event/diaoluoduihuan/PtlOpen';
import {ResOpen as ResOpenHuobanzhaomu} from '../shared/protocols/event/huobanzhaomu/PtlOpen';
import {ResOpen as ResOpenJierihuodong} from '../shared/protocols/event/jierihuodong/PtlOpen';
import {ResOpen as ResOpenJiJin} from '../shared/protocols/event/jijin/PtlOpen';
import {ResOpen} from '../shared/protocols/event/kaifukuanghuan/PtlOpen';
import {ResOpen as ResOpenLeijichongzhi} from '../shared/protocols/event/leijichongzhi/PtlOpen';
import {ResOpen as ResOpenNiudanji} from '../shared/protocols/event/niudanji/PtlOpen';
import {ResOpen as ResOpenQirichongzhi} from '../shared/protocols/event/qirichongzhi/PtlOpen';
import {ResOpen as ResOpenQiridenglu} from '../shared/protocols/event/qiridenglu/PtlOpen';
import {ResOpen as ResOpen15leichong} from '../shared/protocols/event/shiwuleichong/PtlOpen';
import {ResOpen as ResOpenXianshizhaomu} from '../shared/protocols/event/xianshizhaomu/PtlOpen';
import {ResOpen as ResOpenXinshoulibao} from '../shared/protocols/event/xinshoulibao/PtlOpen';
import {yangchengmubiao} from '../shared/protocols/event/yangchengmubiao/PtlOpen';
import {christmas} from '../shared/protocols/event/christmas/PtlOpen';
import {ResOpen as ResOpenYibaichou} from '../shared/protocols/event/yibaichou/PtlOpen';
import {ResOpen as ResOpenYuedujijin} from '../shared/protocols/event/yuedujijin/PtlOpen';
import {ResOpen as ResOpenZhanLing} from '../shared/protocols/event/zhanling/PtlOpen';
import {ResOpen as ResOpenZhoulibao} from '../shared/protocols/event/zhoulibao/PtlOpen';
import {ResOpen as ResOpenZixuanlibao} from '../shared/protocols/event/zixuanlibao/PtlOpen';
import {ResOpen as ResOpenKaifujingsai} from '../shared/protocols/kaifujingsai/PtlOpen';
import {ResOpen as ResOpenZhoumolibao} from '../shared/protocols/event/zhoumolibao/PtlOpen';
import {ResOpen as ResOpenPobinglibao} from '../shared/protocols/event/pobinglibao/PtlOpen';
import {ResOpen as ResOpenLeiChongLiBao} from '../shared/protocols/event/leichonglibao/PtlOpen';
import {event as ResOpenYuandan} from '../shared/protocols/event/yuandan/PtlOpen';

export type eventType = {
    shouchong: {
        receive: k_v<number[]>;
    };
    shouchongzhigou: {
        receive: k_v<number[]>;
    };
    kaifukuanghuan: Omit<ResOpen, 'day' | 'taskFinished'>;
    dayjijin: Omit<ResOpenJiJin, 'isPay' | 'finished'>;
    dengjijijin: Omit<ResOpenJiJin, 'isPay' | 'finished'>;
    guanqiajijin: Omit<ResOpenJiJin, 'isPay' | 'finished'>;
    tianshujijin: Omit<ResOpenJiJin, 'isPay' | 'finished'>;
    zhanling: Omit<ResOpenZhanLing, 'taskFinished'> & {
        round: number;
        refreshTime: number;
        reWeekTime: number;
    };
    zhoulibao: ResOpenZhoulibao;
    xinshoulibao: ResOpenXinshoulibao;
    yibaichou: ResOpenYibaichou;
    huobanzhaomu: Omit<ResOpenHuobanzhaomu, 'finish'>;
    niudanji: Omit<ResOpenNiudanji, 'hasNum'>;
    '136Gift': ResOpen136Gift & { refreshTime: number; };
    '15leichong': Omit<ResOpen15leichong, 'payDay'>;
    xianshizhaomu: ResOpenXianshizhaomu & { refreshTime: number; };
    qirichongzhi: Omit<ResOpenQirichongzhi, 'finished'>;
    jierihuodong: Omit<ResOpenJierihuodong, 'taskFinish'> & { refreshTime: number; };
    kaifujingsai: ResOpenKaifujingsai;
    zhoumolibao: ResOpenZhoumolibao & { refreshTime: number; };
    pobinglibao: ResOpenPobinglibao
    payForDiamond: {
        [time: number]: number
    }
    xstask: {
        refreshTime: number,
        receiveNum: number
    }

} & {
    [k: `${number}jijin`]: ResOpenYuedujijin;
    [k: `yangchengmubiao${number}`]: yangchengmubiao;
    [k: `christmas${number}`]: christmas;
    [k: `diaoluoduihuan${number}`]: ResOpenDiaoluoduihuan;
    [k: `chuanshuozhilu${number}`]: ResOpenChuanshuozhilu;
    [k: `zixuanlibao${number}`]: ResOpenZixuanlibao;
    [k: `leijichongzhi${number}`]: Omit<ResOpenLeijichongzhi, 'payNum'>;
    [k: `qiridenglu${number}`]: Pick<ResOpenQiridenglu, 'recPrize'>;
    [k: `leichonglibao${number}`]: ResOpenLeiChongLiBao & { opentime: number };
    [k: `yuandan${number}`]: ResOpenYuandan;
};

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