import 'package:flutter/cupertino.dart';

import 'package:yumi/shared/business_logic/models/req/sc_give_away_gift_room_acceptscmd.dart';
import 'package:yumi/shared/business_logic/models/res/sc_banner_leaderboard_res.dart';
import 'package:yumi/shared/business_logic/models/res/gift_backpack_res.dart';
import 'package:yumi/shared/business_logic/models/res/gift_by_group_res.dart';
import 'package:yumi/shared/business_logic/models/res/gift_res.dart';
import 'package:yumi/shared/business_logic/models/res/sc_is_follow_room_res.dart';
import 'package:yumi/shared/business_logic/models/res/login_res.dart';
import 'package:yumi/shared/business_logic/models/res/sc_mic_go_up_res.dart';
import 'package:yumi/shared/business_logic/models/res/mic_res.dart';
import 'package:yumi/shared/business_logic/models/res/my_room_res.dart';
import 'package:yumi/shared/business_logic/models/res/sc_room_contribute_level_res.dart';
import 'package:yumi/shared/business_logic/models/res/sc_room_emoji_res.dart';
import 'package:yumi/shared/business_logic/models/res/room_gift_rank_res.dart';
import 'package:yumi/shared/business_logic/models/res/sc_room_join_black_list_res.dart';
import 'package:yumi/shared/business_logic/models/res/room_member_res.dart';
import 'package:yumi/shared/business_logic/models/res/sc_room_red_packet_detail_res.dart';
import 'package:yumi/shared/business_logic/models/res/sc_room_red_packet_grab_res.dart';
import 'package:yumi/shared/business_logic/models/res/sc_room_red_packet_list_res.dart';
import 'package:yumi/shared/business_logic/models/res/room_res.dart';
import 'package:yumi/shared/business_logic/models/res/sc_room_reward_info_res.dart';
import 'package:yumi/shared/business_logic/models/res/sc_room_rocket_config_res.dart';
import 'package:yumi/shared/business_logic/models/res/sc_room_rocket_status_res.dart';
import 'package:yumi/shared/business_logic/models/res/sc_room_task_claimable_count_res.dart';
import 'package:yumi/shared/business_logic/models/res/sc_room_task_list_res.dart';
import 'package:yumi/shared/business_logic/models/res/room_user_card_res.dart';
import 'package:yumi/shared/business_logic/models/res/sc_top_four_with_reward_res.dart';
import 'package:yumi/shared/business_logic/models/res/user_count_guard_res.dart';
import 'package:yumi/shared/business_logic/models/res/sc_violation_handle_res.dart';

abstract class SocialChatRoomRepository {
  Future<List<SocialChatRoomRes>> discovery({bool? allRegion});

  ///房间麦位列表
  Future<List<MicRes>> micList(String roomId);

  ///获取房间信息
  Future<MyRoomRes> specific(String roomId);

  ///是否关注了房间
  Future<SCIsFollowRoomRes> isFollowRoom(String roomId);

  ///房间贡献等级
  Future<SCRoomContributeLevelRes> contributeLevel(String roomId);

  ///房间本周贡献值
  Future<SCRoomContributeLevelRes> roomContributionActivity(String roomId);

  ///上麦
  Future<SCMicGoUpRes> micGoUp(String roomId, num mickIndex, {String? eventType});

  ///下麦
  Future micGoDown(String roomId, num mickIndex);

  ///这个用户是否可以被踢下麦
  Future<bool> kickOffMicrophone(String roomId, String kickUserId);

  ///锁麦
  Future micLock(String roomId, num mickIndex, bool lock);

  ///静音麦克风
  Future<bool> micMute(String roomId, num mickIndex, bool mute);

  ///T麦克风（房主&管理员）
  Future<bool> micKill(String roomId, num mickIndex);

  ///房间在线用户
  Future<List<SocialChatUserProfile>> roomOnlineUsers(String roomId);

  ///房间用户资料卡
  Future<RoomUserCardRes> roomUserCard(String roomId, String userId);

  ///礼物列表
  Future<List<SocialChatGiftRes>> giftList();

  Future<List<GiftByGroupRes>> giftListByGroup();

  ///赠送礼物
  Future<double> giveGift(
    List<String> acceptUserIds,
    String giftId,
    num quantity,
    bool checkCombo, {
    String? roomId,
    SCGiveAwayGiftRoomAcceptsCmd? accepts,
    String? dynamicContentId,
  });

  ///举报
  Future<bool> reported(
    String reportUserId,
    String reportedUserId,
    num reportType, {
    String? reportedContent,
    num? relatedId,
    String? imageUrls,
    String? videoUrls,
  });

  ///房间搜索
  Future<List<SocialChatRoomRes>> searchRoom(String roomAccount);

  ///房间用户加入黑名单<踢出房间>
  Future<SCRoomJoinBlackListRes> joinBlacklist(
    String roomId,
    String userId,
    num outTime,
  );

  ///解除黑名单
  Future removeBlacklist(String roomId, String userId);

  ///守护列表
  Future<List<UserCountGuardRes>> userCountGuard(String userId);

  ///麦位表情
  Future<List<SCRoomEmojiRes>> emojiAll();

  ///设置房间用户身份
  Future<bool> changeRoomRole(
    String roomId,
    String userType,
    String changeUserId,
    String operatorUserId,
    String reason,
  );

  ///房间上锁
  Future<bool> roomLocked(String roomId, String password);

  ///房间解锁
  Future<bool> roomUnlocked(String roomId);

  ///更改房间设置信息
  Future<bool> updateRoomSetting(
    String roomId,
    String roomAcount,
    BuildContext context, {
    bool? touristMike,
    String? takeMicRole,
    bool? touristMsg,
    String? joinGolds,
    int? mikeSize,
    bool? allowMusic,
    bool? adminLockSeat,
    bool? showHeartbeat,
    bool? openKtvMode,
    String? roomSpecialMikeType,
  });

  ///房间成员列表
  Future<List<SocialChatRoomMemberRes>> roomMember(String roomId, {String? lastId});

  ///房间贡献榜单
  Future<List<RoomGiftRankRes>> roomContributionRank(
    String roomId,
    String dataType, {
    num size,
  });

  ///赠送幸运礼物
  Future<double> giveLuckyGift(
    List<String> acceptUserIds,
    String giftId,
    num quantity,
    bool checkCombo, {
    String? roomId,
    SCGiveAwayGiftRoomAcceptsCmd? accepts,
  });

  ///查询榜单前三名
  Future<SCBannerLeaderboardRes> appLeaderboard();

  ///礼物背包
  Future<List<SocialChatGiftBackpackRes>> giftBackpack();

  ///查询房间火箭状态
  Future<SCRoomRocketStatusRes> rocketStatus(String roomId);

  ///查询火箭配置
  Future<List<SCRoomRocketConfigRes>> rocketConfigEnabled();

  ///领取奖励
  Future<bool> rocketClaim(String roomId);

  ///处理房间违规
  Future<SCViolationHandleRes> roomViolationHandle(
    String roomId,
    int violationType,
    int operationType,
    String description, {
    List<String>? imageUrls,
  });

  ///查询房间红包列表
  Future<List<SCRoomRedPacketListRes>> roomRedPacketList(
    String roomId,
    int current, {
    int size = 20,
  });

  ///发送红包
  Future<SCRoomRedPacketListRes> roomSendRedPacket(
    String roomId,
    String totalAmount,
    String totalCount,
    String expireMinutes,
  );

  ///抢红包
  Future<SCRoomRedPacketGrabRes> roomRedPacketGrab(String packetId);

  ///查询红包详情
  Future<SCRoomRedPacketDetailRes> roomRedPacketDetail(String packetId);

  ///查询房间奖励信息
  Future<SCRoomRewardInfoRes> roomRewardInfo(String roomId);

  ///领取房间奖励房主收入
  Future<bool> roomRewardReceive(String roomId);

  ///发送平台红包
  Future<SCRoomRedPacketListRes> sendPlatformRedPack(
    String roomId,
    String totalAmount,
    String totalCount,
    String expireMinutes,
  );

  ///获取活动礼物列表
  Future<List<SocialChatGiftRes>> giftActivityList();

  ///获取任务列表
  Future<SCRoomTaskListRes> roomTaskList(int taskCategory);

  ///领取任务奖励
  Future<Tiers> roomTaskClaim(String taskCode);

  ///获取当前可领取奖励数量
  Future<SCRoomTaskClaimableCountRes> roomTaskClaimableCount();







}
