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

import com.red.circle.common.business.dto.cmd.AppExtCommand;
import com.red.circle.common.business.dto.cmd.app.AppUserIdCmd;
import com.red.circle.other.app.dto.clientobject.room.EntryRoomResponseCO;
import com.red.circle.other.app.dto.clientobject.room.RoomOnlineUserCO;
import com.red.circle.other.app.dto.clientobject.room.RoomVoiceProfileCO;
import com.red.circle.other.app.dto.cmd.room.RegionSearchRoomQryCmd;
import com.red.circle.other.app.dto.cmd.room.RoomEntryCmd;
import com.red.circle.other.app.dto.cmd.room.RoomOnlineUserFlowQryCmd;
import com.red.circle.other.app.dto.cmd.room.SearchRoomAccountCmd;
import com.red.circle.other.app.dto.cmd.user.user.AccountQryCmd;
import com.red.circle.other.inner.model.dto.live.RoomProfileDTO;
import java.util.List;

/**
 * 直播语音房间服务.
 *
 * @author pengliang on 2023/9/19
 */
public interface LiveVoiceRoomService {

  RoomVoiceProfileCO create(AppExtCommand cmd);

  EntryRoomResponseCO entry(RoomEntryCmd cmd);

  List<RoomVoiceProfileCO> searchRoomByRoomAccount(SearchRoomAccountCmd cmd);

  List<RoomOnlineUserCO> flowOnlineUser(RoomOnlineUserFlowQryCmd cmd);

  List<RoomVoiceProfileCO> listNowLatestCreate(AppExtCommand cmd);

  List<RoomVoiceProfileCO> searchRegionRoom(RegionSearchRoomQryCmd cmd);

  RoomProfileDTO getCurrentLocation(AppUserIdCmd cmd);

  List<RoomVoiceProfileCO> discovery(AppExtCommand cmd);

  String createPublicRoomByRegion(AppExtCommand cmd);
}
