package com.jxy.marketall.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jxy.common.datasource.annotation.ETHDB;
import com.jxy.common.datasource.annotation.ETHV2DB;
import com.jxy.marketall.dto.*;
import com.jxy.marketall.entity.*;
import com.jxy.marketall.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description TODO
 * @Date 2022/8/30 17:47
 * @Author 杜懿
 */
@ETHDB
public interface ETHMapper{

    @ETHV2DB
    public IPage<ETHTopAddrDto> selectETHTopAddrByPage(Page<ETHTopAddrDto> page, @Param("vo") ETHTopAddrVo vo);

    public List<CountDto> selectDayCountList();

    public List<CountDto> selectUSDTDayCountList();

    public List<CountDto> selectUSDCDayCountList();

    public List<CountDto> selectBUSDDayCountList();

    public EthBigTx selectLastETHBigTx();

    @ETHV2DB
    public EthTopAddrChangeDto selectLastETHTopAddrChange();

    public USDTBigTx selectLastUSDTBigTx();

    public USDCBigTx selectLastUSDCBigTx();

    public USDTBigTx selectLastBUSDBigTx();

    public EthVolumeDto selectLastETHVolume();

    public ETHFeesDto selectLastETHFees();

    public USDVolumeDto selectLastUSDTVolume();

    public USDVolumeDto selectLastUSDCVolume();

    public USDVolumeDto selectLastBUSDVolume();

    public IPage<EthBigTxDto> selectETHBigTxList(Page<EthBigTxDto> page,@Param("vo") ETHVo vo);

    public IPage<EthNewContractDto> selectNewContractByPage(Page<EthNewContractDto> page, @Param("vo") ETHVo vo);

    @ETHV2DB
    public IPage<EthTopAddrChangeDto> selectEthTopAddrChangeList(Page<EthTopAddrChangeDto> page,@Param("vo") ETHVo vo);

    public List<USDBigTxDto> selectUSDTBigTxList(@Param("usdtVo") USDTVo usdtVo);

    public List<USDBigTxDto> selectUSDCBigTxList(@Param("usdcVo") USDCVo usdcVo);

    public List<USDBigTxDto> selectBUSDBigTxList(@Param("usdtVo") USDTVo usdtVo);


    public List<EthVolumeDto> getETHVolumeList(@Param("vo") QueryVo vo);

    public List<ETHFeesDto> getETHFeesList(@Param("vo") QueryVo vo);

    public List<USDVolumeDto> getUSDTVolumeList(@Param("vo") QueryVo vo);

    public List<USDVolumeDto> getUSDCVolumeList(@Param("vo") QueryVo vo);

    public List<USDVolumeDto> getBUSDVolumeList(@Param("vo") QueryVo vo);

    public List<ETHTokenVolumeDto> getETHTokenVolumeList(@Param("vo") ETHTokenVolumeVo vo);

    public List<ETHTokenBigtxDto> getETHTokenBigtxList(@Param("vo") ETHTokenVo vo);

    public int getETHTokenBigtxCount(@Param("vo") ETHTokenVo vo);

    public List<CountDto> selectETHTokenBigtxDayCountList();

    public ETHTokenBigtxDto selectLastETHTokenBigTx();

    public List<ETHTokenVolumeAbbrsDto> getETHTokenVolumeAbbrs();

    public List<ETHTokenAbbrsDto> getETHTokenAbbrs();

    public List<ComDataDto> getCsupplyList(@Param("vo") QueryVo vo);

    public List<DateBigDecimalDto> getRewardList(@Param("vo") QueryVo vo);

    public List<ETHAddressDto> getAddressList(@Param("vo") QueryVo vo);

    public List<DateBigDecimalDto> getVolumeList(@Param("vo") QueryVo vo);

    public List<DateBigDecimalDto> getCnewList(@Param("vo") QueryVo vo);


    public List<ComDataDto> getTokenVolumeList(@Param("vo") QueryVo vo);


    public List<CountDto> selectTronUSDTDayCountList();

    public List<CountDto> selectTronUSDCDayCountList();


    public List<TronUSDTVolume> getTronUSDTVolumeList(@Param("vo") QueryVo vo);

    public List<TronUSDTVolume> getTronUSDTVolumeLastMonthList();

    public List<TronUSDCVolume> getTronUSDCVolumeList(@Param("vo") QueryVo vo);

    public List<TronUSDCVolume> getTronUSDCVolumeLastMonthList(@Param("vo") QueryVo vo);

    public IPage<TronUSDTBigTx> selectTronUSDTBigTxList(Page<TronUSDTBigTx> page,@Param("vo") TronUSDTVo vo);

    public IPage<TronUSDCBigTx> selectTronUSDCBigTxList(Page<TronUSDCBigTx> page,@Param("vo") TronUSDCVo vo);

    public TronUSDTBigTx selectLastTronUSDTBigTx();

    public TronUSDCBigTx selectLastTronUSDCBigTx();

    public TronVolumeDto selectLastTronUSDTVolume();

    public TronVolumeDto selectLastTronUSDCVolume();

    List<PiCycleTIDto> getPiCycleTIList();

    List<GoldenRatioMultiplierDto> getGoldenRatioMultiplier();

    public List<PriceDataDto> getPriceList(@Param("vo") QueryVo vo);
}

