package com.red.circle.other.app.service.material;

import com.red.circle.common.business.dto.cmd.AppExtCommand;
import com.red.circle.other.app.dto.clientobject.material.PropsNobleVipStoreCO;
import com.red.circle.other.app.dto.clientobject.material.PropsStoreCommodityInfoCO;
import com.red.circle.other.app.dto.cmd.material.PropsGiveAwayCmd;
import com.red.circle.other.app.dto.cmd.material.PropsNobleVipQryCmd;
import com.red.circle.other.app.dto.cmd.material.PropsPurchasingCmd;
import com.red.circle.other.app.dto.cmd.material.PropsStoreBackpackTypeQryCmd;
import com.red.circle.other.app.dto.cmd.material.PropsStoreTypeQryCmd;
import com.red.circle.other.app.dto.cmd.material.SwitchUsePropsCmd;
import com.red.circle.other.inner.model.dto.material.props.UserBackpackProps;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.List;

/**
 * 道具商店.
 *
 * @author pengliang on 2023/9/19
 */
public interface PropsStoreService {

  List<PropsStoreCommodityInfoCO> listStore(PropsStoreTypeQryCmd cmd);

  List<PropsNobleVipStoreCO> listNobleVip(PropsNobleVipQryCmd cmd);

  BigDecimal purchasing(PropsPurchasingCmd cmd);

  BigDecimal giveAway(PropsPurchasingCmd cmd);

  void giveAwayInBackpack(PropsGiveAwayCmd cmd);

  List<UserBackpackProps> listUserBackpack(PropsStoreBackpackTypeQryCmd cmd);

  void switchUse(SwitchUsePropsCmd cmd);

  BigDecimal purchasingRoomLock(AppExtCommand cmd);

  Timestamp getRoomLockExpiredTime(AppExtCommand cmd);

  BigDecimal purchasingStealthBrowse(AppExtCommand cmd);

  Timestamp getStealthBrowseExpiredTime(AppExtCommand cmd);

}
