68836bad创建于 2024年1月17日历史提交
syntax = "proto3";

package lq;

service CustomizedContestManagerApi {
  rpc loginContestManager (ReqContestManageLogin) returns (ResContestManageLogin);
  rpc oauth2AuthContestManager (ReqContestManageOauth2Auth) returns (ResContestManageOauth2Auth);
  rpc oauth2LoginContestManager (ReqContestManageOauth2Login) returns (ResContestManageOauth2Login);
  rpc logoutContestManager (ReqCommon) returns (ResCommon);
  rpc fetchRelatedContestList (ReqCommon) returns (ResFetchRelatedContestList);
  rpc createContest (ReqCreateCustomizedContest) returns (ResCreateCustomizedContest);
  rpc deleteContest (ReqDeleteCustomizedContest) returns (ResCommon);
  rpc prolongContest (ReqProlongContest) returns (ResProlongContest);
  rpc manageContest (ReqManageContest) returns (ResManageContest);
  rpc fetchContestInfo (ReqCommon) returns (ResManageContest);
  rpc exitManageContest (ReqCommon) returns (ResCommon);
  rpc fetchContestGameRule (ReqCommon) returns (ResFetchContestGameRule);
  rpc updateContestGameRule (ReqUpdateContestGameRule) returns (ResCommon);
  rpc searchAccountByNickname (ReqSearchAccountByNickname) returns (ResSearchAccountByNickname);
  rpc searchAccountByEid (ReqSearchAccountByEid) returns (ResSearchAccountByEid);
  rpc fetchContestPlayer (ReqCommon) returns (ResFetchCustomizedContestPlayer);
  rpc updateContestPlayer (ReqUpdateCustomizedContestPlayer) returns (ResCommon);
  rpc startManageGame (ReqCommon) returns (ResStartManageGame);
  rpc stopManageGame (ReqCommon) returns (ResCommon);
  rpc lockGamePlayer (ReqLockGamePlayer) returns (ResCommon);
  rpc unlockGamePlayer (ReqUnlockGamePlayer) returns (ResCommon);
  rpc createContestGame (ReqCreateContestGame) returns (ResCreateContestGame);
  rpc fetchContestGameRecords (ReqFetchCustomizedContestGameRecordList) returns (ResFetchCustomizedContestGameRecordList);
  rpc removeContestGameRecord (ReqRemoveContestGameRecord) returns (ResCommon);
  rpc fetchContestNotice (ReqFetchContestNotice) returns (ResFetchContestNotice);
  rpc updateContestNotice (ReqUpdateCustomizedContestNotice) returns (ResCommon);
  rpc fetchContestManager (ReqCommon) returns (ResFetchCustomizedContestManager);
  rpc updateContestManager (ReqUpdateCustomizedContestManager) returns (ResCommon);
  rpc fetchChatSetting (ReqCommon) returns (ResCustomizedContestChatInfo);
  rpc updateChatSetting (ReqUpdateCustomizedContestChatSetting) returns (ResUpdateCustomizedContestChatSetting);
  rpc updateGameTag (ReqUpdateGameTag) returns (ResCommon);
  rpc terminateGame (ReqTerminateContestGame) returns (ResCommon);
  rpc pauseGame (ReqPauseContestGame) returns (ResCommon);
  rpc resumeGame (ReqResumeContestGame) returns (ResCommon);
  rpc fetchCurrentRankList (ReqCommon) returns (ResFetchCurrentRankList);
  rpc fetchContestLastModify (ReqCommon) returns (ResFetchContestLastModify);
  rpc fetchContestObserver (ReqCommon) returns (ResFetchContestObserver);
  rpc addContestObserver (ReqAddContestObserver) returns (ResAddContestObserver);
  rpc removeContestObserver (ReqRemoveContestObserver) returns (ResCommon);
  rpc fetchContestChatHistory (ReqCommon) returns (ResFetchContestChatHistory);
  rpc clearChatHistory (ReqClearChatHistory) returns (ResCommon);
}

message CustomizedContest {
  uint32 unique_id = 1;
  uint32 creator_id = 2;
  uint32 contest_id = 3;
  string contest_name = 4;
  uint32 state = 5;
  uint32 create_time = 6;
  uint32 start_time = 7;
  uint32 finish_time = 8;
  bool open = 9;
  uint32 rank_rule = 10;
  uint32 deadline = 11;
  bool auto_match = 12;
  bool auto_disable_end_chat = 13;
  uint32 contest_type = 14;
  repeated uint32 hidden_zones = 15;
  repeated uint32 banned_zones = 16;
  uint32 observer_switch = 17;
  uint32 emoji_switch = 18;
  uint32 player_roster_type = 19;
}

message ContestGameInfo {
  string game_uuid = 1;
  repeated Player players = 2;
  uint32 start_time = 3;
  uint32 end_time = 4;
  message Player {
    uint32 account_id = 1;
    string nickname = 2;
  }

}

message ContestPlayerInfo {
  uint32 account_id = 1;
  string nickname = 2;
}

message ContestMatchingPlayer {
  uint32 account_id = 1;
  string nickname = 2;
  Controller controller = 3;
  message Controller {
    uint32 account_id = 1;
    string nickname = 2;
  }

}

message ReqContestManageLogin {
  string account = 1;
  string password = 2;
  bool gen_access_token = 3;
  uint32 type = 4;
}

message ResContestManageLogin {
  Error error = 1;
  uint32 account_id = 2;
  string nickname = 3;
  string access_token = 4;
  uint32 diamond = 5;
  uint32 last_create_time = 6;
}

message ReqContestManageOauth2Auth {
  uint32 type = 1;
  string code = 2;
  string uid = 3;
}

message ResContestManageOauth2Auth {
  Error error = 1;
  string access_token = 2;
}

message ReqContestManageOauth2Login {
  uint32 type = 1;
  string access_token = 2;
  bool reconnect = 3;
}

message ResContestManageOauth2Login {
  Error error = 1;
  uint32 account_id = 2;
  string nickname = 3;
  string access_token = 4;
  uint32 diamond = 5;
  uint32 last_create_time = 6;
}

message ResFetchRelatedContestList {
  Error error = 1;
  repeated CustomizedContest contests = 2;
}

message ReqCreateCustomizedContest {
  string contest_name = 1;
  uint32 start_time = 2;
  uint32 finish_time = 3;
  bool open = 4;
  uint32 rank_rule = 5;
  GameRuleSetting game_rule_setting = 6;
}

message ResCreateCustomizedContest {
  Error error = 1;
  CustomizedContest contest = 2;
  uint32 diamond = 3;
}

message ReqDeleteCustomizedContest {
  uint32 unique_id = 1;
}

message ReqProlongContest {
  uint32 unique_id = 1;
}

message ResProlongContest {
  Error error = 1;
  uint32 deadline = 2;
}

message ReqManageContest {
  uint32 unique_id = 1;
}

message ResManageContest {
  Error error = 1;
  CustomizedContest contest = 2;
}

message ResFetchContestGameRule {
  Error error = 1;
  GameRuleSetting game_rule_setting = 2;
}

message ReqUpdateContestGameRule {
  string contest_name = 1;
  uint32 start_time = 2;
  uint32 finish_time = 3;
  bool open = 4;
  uint32 rank_rule = 5;
  GameRuleSetting game_rule_setting = 6;
  bool auto_match = 7;
  bool auto_disable_end_chat = 8;
  uint32 contest_type = 9;
  string banned_zones = 10;
  string hidden_zones = 11;
  bool emoji_switch = 12;
  uint32 player_roster_type = 13;
}

message ReqSearchAccountByNickname {
  repeated string query_nicknames = 1;
}

message ResSearchAccountByNickname {
  Error error = 1;
  repeated Item search_result = 3;
  message Item {
    uint32 account_id = 1;
    string nickname = 2;
  }

}

message ReqSearchAccountByEid {
  repeated uint32 eids = 1;
}

message ResSearchAccountByEid {
  Error error = 1;
  repeated Item search_result = 3;
  message Item {
    uint32 account_id = 1;
    string nickname = 2;
  }

}

message ResFetchCustomizedContestPlayer {
  Error error = 1;
  repeated ContestPlayerInfo players = 2;
}

message ReqUpdateCustomizedContestPlayer {
  uint32 setting_type = 1;
  repeated string nicknames = 2;
  repeated uint32 account_ids = 3;
}

message ResUpdateCustomizedContestPlayer {
  Error error = 1;
  repeated uint32 failed_index = 2;
}

message ResStartManageGame {
  Error error = 1;
  repeated ContestMatchingPlayer players = 2;
  repeated ContestGameInfo games = 3;
}

message ReqLockGamePlayer {
  uint32 account_id = 1;
}

message ReqUnlockGamePlayer {
  uint32 account_id = 1;
}

message ReqCreateContestGame {
  repeated Slot slots = 1;
  string tag = 2;
  bool random_position = 3;
  bool open_live = 4;
  bool chat_broadcast_for_end = 5;
  uint32 ai_level = 6;
  message Slot {
    uint32 account_id = 1;
    uint32 start_point = 2;
    uint32 seat = 3;
  }

}

message ResCreateContestGame {
  Error error = 1;
  string game_uuid = 2;
}

message ReqFetchCustomizedContestGameRecordList {
  uint32 last_index = 2;
}

message ResFetchCustomizedContestGameRecordList {
  Error error = 1;
  uint32 next_index = 2;
  repeated Item record_list = 3;
  message Item {
    RecordGame record = 1;
    string tag = 2;
  }

}

message ReqRemoveContestGameRecord {
  string uuid = 1;
}

message ReqFetchContestNotice {
  repeated uint32 notice_types = 1;
}

message ResFetchContestNotice {
  Error error = 1;
  repeated string notices = 2;
}

message ReqUpdateCustomizedContestNotice {
  uint32 notice_type = 1;
  string content = 2;
}

message ResFetchCustomizedContestManager {
  Error error = 1;
  repeated ContestPlayerInfo players = 2;
}

message ReqUpdateCustomizedContestManager {
  uint32 setting_type = 1;
  repeated string nicknames = 2;
  repeated uint32 account_ids = 3;
}

message ResCustomizedContestChatInfo {
  Error error = 1;
  uint32 chat_limit_type = 2;
  repeated Item chat_limit_roster = 3;
  message Item {
    uint32 account_id = 1;
    string nickname = 2;
  }

}

message ReqUpdateCustomizedContestChatSetting {
  uint32 setting_type = 1;
  repeated string nicknames = 2;
  repeated uint32 account_ids = 3;
  uint32 chat_limit_type = 4;
}

message ResUpdateCustomizedContestChatSetting {
  Error error = 1;
  repeated uint32 failed_index = 2;
}

message ReqUpdateGameTag {
  string uuid = 1;
  string tag = 2;
}

message ReqTerminateContestGame {
  string uuid = 1;
}

message ReqPauseContestGame {
  string uuid = 1;
}

message ReqResumeContestGame {
  string uuid = 1;
}

message ResFetchCurrentRankList {
  Error error = 1;
  repeated AccountRankData rank_list = 2;
  uint32 rank_rule = 3;
  message AccountRankData {
    uint32 account_id = 1;
    string nickname = 2;
    int32 total_point = 3;
    uint32 total_count = 4;
  }

}

message ResFetchContestLastModify {
  ContestLastModify modify = 1;
  message ContestLastModify {
    string contest_name = 1;
    string external_notice = 2;
    string internal_notice = 3;
    string manager_notice = 4;
    string reason = 5;
    uint32 status = 6;
  }

}

message ResFetchContestObserver {
  Error error = 1;
  repeated Observer observers = 2;
  message Observer {
    uint32 account_id = 1;
    string nickname = 2;
  }

}

message ReqAddContestObserver {
  repeated Observer observers = 1;
  message Observer {
    uint32 account_id = 1;
    string nickname = 2;
  }

}

message ResAddContestObserver {
  Error error = 1;
  repeated Observer success = 2;
  message Observer {
    uint32 account_id = 1;
    string nickname = 2;
  }

}

message ReqRemoveContestObserver {
  repeated uint32 observers = 1;
}

message ResFetchContestChatHistory {
  Error error = 1;
  repeated bytes chat_history = 2;
}

message ReqClearChatHistory {
  uint32 unique_id = 1;
}

message NotifyContestMatchingPlayer {
  uint32 unique_id = 1;
  uint32 type = 2;
  uint32 account_id = 3;
  string nickname = 4;
}

message NotifyContestMatchingPlayerLock {
  uint32 unique_id = 1;
  uint32 type = 2;
  uint32 account_id = 3;
  uint32 manager_id = 4;
}

message NotifyContestGameStart {
  uint32 unique_id = 1;
  ContestGameInfo game_info = 2;
}

message NotifyContestGameEnd {
  uint32 unique_id = 1;
  string game_uuid = 2;
}

message NotifyContestNoticeUpdate {
  uint32 unique_id = 1;
  uint32 notice_type = 2;
  string content = 3;
}

message NotifyContestManagerKick {
  uint32 reason = 1;
}

message Error {
  uint32 code = 1;
  repeated uint32 u32_params = 2;
  repeated string str_params = 3;
  string json_param = 4;
}

message Wrapper {
  string name = 1;
  bytes data = 2;
}

message NetworkEndpoint {
  string family = 1;
  string address = 2;
  uint32 port = 3;
}

message ReqCommon {
}

message ResCommon {
  Error error = 1;
}

message ResAccountUpdate {
  Error error = 1;
  AccountUpdate update = 2;
}

message AntiAddiction {
  uint32 online_duration = 1;
}

message AccountMahjongStatistic {
  repeated uint32 final_position_counts = 1;
  RoundSummary recent_round = 2;
  HuSummary recent_hu = 3;
  HighestHuRecord highest_hu = 4;
  Liqi20Summary recent_20_hu_summary = 6;
  LiQi10Summary recent_10_hu_summary = 7;
  repeated GameResult recent_10_game_result = 8;
  message RoundSummary {
    uint32 total_count = 1;
    uint32 rong_count = 2;
    uint32 zimo_count = 3;
    uint32 fangchong_count = 4;
  }

  message HuSummary {
    uint32 total_count = 1;
    uint32 dora_round_count = 2;
    uint32 total_fan = 3;
  }

  message HighestHuRecord {
    uint32 fanshu = 1;
    uint32 doranum = 2;
    string title = 3;
    repeated string hands = 4;
    repeated string ming = 5;
    string hupai = 6;
    uint32 title_id = 7;
  }

  message Liqi20Summary {
    uint32 total_count = 1;
    uint32 total_lidora_count = 2;
    uint32 average_hu_point = 3;
  }

  message LiQi10Summary {
    uint32 total_xuanshang = 1;
    uint32 total_fanshu = 2;
  }

  message GameResult {
    uint32 rank = 1;
    int32 final_point = 2;
  }

}

message AccountStatisticData {
  uint32 mahjong_category = 1;
  uint32 game_category = 2;
  AccountMahjongStatistic statistic = 3;
  uint32 game_type = 4;
}

message AccountLevel {
  uint32 id = 1;
  uint32 score = 2;
}

message ViewSlot {
  uint32 slot = 1;
  uint32 item_id = 2;
}

message Account {
  uint32 account_id = 1;
  string nickname = 2;
  uint32 login_time = 3;
  uint32 logout_time = 4;
  uint32 room_id = 5;
  AntiAddiction anti_addiction = 6;
  uint32 title = 7;
  string signature = 8;
  string email = 9;
  uint32 email_verify = 10;
  uint32 gold = 11;
  uint32 diamond = 12;
  uint32 avatar_id = 13;
  uint32 vip = 14;
  int32 birthday = 15;
  string phone = 16;
  uint32 phone_verify = 17;
  repeated PlatformDiamond platform_diamond = 18;
  AccountLevel level = 21;
  AccountLevel level3 = 22;
  uint32 avatar_frame = 23;
  uint32 skin_ticket = 24;
  repeated PlatformSkinTicket platform_skin_ticket = 25;
  uint32 verified = 26;
  repeated ChallengeLevel challenge_levels = 27;
  repeated AchievementCount achievement_count = 28;
  uint32 frozen_state = 29;
  message PlatformDiamond {
    uint32 id = 1;
    uint32 count = 2;
  }

  message PlatformSkinTicket {
    uint32 id = 1;
    uint32 count = 2;
  }

  message ChallengeLevel {
    uint32 season = 1;
    uint32 level = 2;
    uint32 rank = 3;
  }

  message AchievementCount {
    uint32 rare = 1;
    uint32 count = 2;
  }

}

message AccountOwnerData {
  repeated uint32 unlock_characters = 1;
}

message AccountUpdate {
  repeated NumericalUpdate numerical = 1;
  CharacterUpdate character = 2;
  BagUpdate bag = 3;
  AchievementUpdate achievement = 4;
  AccountShiLian shilian = 5;
  DailyTaskUpdate daily_task = 6;
  TitleUpdate title = 7;
  repeated uint32 new_recharged_list = 8;
  TaskUpdate activity_task = 9;
  TaskUpdate activity_flip_task = 10;
  TaskUpdate activity_period_task = 11;
  TaskUpdate activity_random_task = 12;
  AccountChallengeUpdate challenge = 13;
  AccountABMatchUpdate ab_match = 14;
  lq.AccountActivityUpdate activity = 15;
  SegmentTaskUpdate activity_segment_task = 16;
  message NumericalUpdate {
    uint32 id = 1;
    uint32 final = 3;
  }

  message CharacterUpdate {
    repeated Character characters = 2;
    repeated uint32 skins = 3;
    repeated uint32 finished_endings = 4;
    repeated uint32 rewarded_endings = 5;
  }

  message AchievementUpdate {
    repeated AchievementProgress progresses = 1;
    repeated uint32 rewarded_group = 2;
  }

  message DailyTaskUpdate {
    repeated TaskProgress progresses = 1;
    repeated uint32 task_list = 2;
  }

  message TitleUpdate {
    repeated uint32 new_titles = 1;
    repeated uint32 remove_titles = 2;
  }

  message TaskUpdate {
    repeated TaskProgress progresses = 1;
    repeated uint32 task_list = 2;
  }

  message AccountChallengeUpdate {
    repeated TaskProgress progresses = 1;
    uint32 level = 2;
    uint32 refresh_count = 3;
    uint32 match_count = 4;
    uint32 ticket_id = 5;
    repeated uint32 task_list = 6;
    repeated uint32 rewarded_season = 7;
  }

  message AccountABMatchUpdate {
    uint32 match_id = 1;
    uint32 match_count = 2;
    uint32 buy_in_count = 3;
    uint32 point = 4;
    bool rewarded = 5;
    repeated MatchPoint match_max_point = 6;
    bool quit = 7;
    message MatchPoint {
      uint32 match_id = 1;
      uint32 point = 2;
    }

  }

  message SegmentTaskUpdate {
    repeated lq.SegmentTaskProgress progresses = 1;
    repeated uint32 task_list = 2;
  }

}

message GameMetaData {
  uint32 room_id = 1;
  uint32 mode_id = 2;
  uint32 contest_uid = 3;
}

message AccountPlayingGame {
  string game_uuid = 1;
  uint32 category = 2;
  GameMetaData meta = 3;
}

message AccountCacheView {
  uint32 cache_version = 1;
  uint32 account_id = 2;
  string nickname = 3;
  uint32 login_time = 4;
  uint32 logout_time = 5;
  bool is_online = 6;
  uint32 room_id = 7;
  uint32 title = 8;
  uint32 avatar_id = 9;
  uint32 vip = 10;
  AccountLevel level = 11;
  AccountPlayingGame playing_game = 12;
  AccountLevel level3 = 13;
  uint32 avatar_frame = 14;
  uint32 verified = 15;
  uint32 ban_deadline = 16;
  uint32 comment_ban = 17;
  uint32 ban_state = 18;
}

message PlayerBaseView {
  uint32 account_id = 1;
  uint32 avatar_id = 2;
  uint32 title = 3;
  string nickname = 4;
  AccountLevel level = 5;
  AccountLevel level3 = 6;
  uint32 avatar_frame = 7;
  uint32 verified = 8;
  uint32 is_banned = 9;
}

message PlayerGameView {
  uint32 account_id = 1;
  uint32 avatar_id = 2;
  uint32 title = 3;
  string nickname = 4;
  AccountLevel level = 5;
  Character character = 6;
  AccountLevel level3 = 7;
  uint32 avatar_frame = 8;
  uint32 verified = 9;
  repeated ViewSlot views = 10;
}

message GameSetting {
  uint32 emoji_switch = 1;
}

message GameMode {
  uint32 mode = 1;
  bool ai = 4;
  string extendinfo = 5;
  GameDetailRule detail_rule = 6;
  GameTestingEnvironmentSet testing_environment = 7;
  GameSetting game_setting = 8;
}

message GameTestingEnvironmentSet {
  uint32 paixing = 1;
  uint32 left_count = 2;
}

message GameDetailRule {
  uint32 time_fixed = 1;
  uint32 time_add = 2;
  uint32 dora_count = 3;
  uint32 shiduan = 4;
  uint32 init_point = 5;
  uint32 fandian = 6;
  bool can_jifei = 7;
  uint32 tianbian_value = 8;
  uint32 liqibang_value = 9;
  uint32 changbang_value = 10;
  uint32 noting_fafu_1 = 11;
  uint32 noting_fafu_2 = 12;
  uint32 noting_fafu_3 = 13;
  bool have_liujumanguan = 14;
  bool have_qieshangmanguan = 15;
  bool have_biao_dora = 16;
  bool have_gang_biao_dora = 17;
  bool ming_dora_immediately_open = 18;
  bool have_li_dora = 19;
  bool have_gang_li_dora = 20;
  bool have_sifenglianda = 21;
  bool have_sigangsanle = 22;
  bool have_sijializhi = 23;
  bool have_jiuzhongjiupai = 24;
  bool have_sanjiahele = 25;
  bool have_toutiao = 26;
  bool have_helelianzhuang = 27;
  bool have_helezhongju = 28;
  bool have_tingpailianzhuang = 29;
  bool have_tingpaizhongju = 30;
  bool have_yifa = 31;
  bool have_nanruxiru = 32;
  uint32 jingsuanyuandian = 33;
  int32 shunweima_2 = 34;
  int32 shunweima_3 = 35;
  int32 shunweima_4 = 36;
  bool bianjietishi = 37;
  uint32 ai_level = 38;
  bool have_zimosun = 39;
  bool disable_multi_yukaman = 40;
  uint32 fanfu = 41;
  uint32 guyi_mode = 42;
  uint32 dora3_mode = 43;
  uint32 begin_open_mode = 44;
  uint32 jiuchao_mode = 45;
  uint32 muyu_mode = 46;
  uint32 open_hand = 47;
  uint32 xuezhandaodi = 48;
  uint32 huansanzhang = 49;
  uint32 chuanma = 50;
  uint32 reveal_discard = 51;
  bool disable_leijiyiman = 60;
}

message Room {
  uint32 room_id = 1;
  uint32 owner_id = 2;
  GameMode mode = 3;
  uint32 max_player_count = 4;
  repeated PlayerGameView persons = 5;
  repeated uint32 ready_list = 6;
  bool is_playing = 7;
  bool public_live = 8;
  uint32 robot_count = 9;
  uint32 tournament_id = 10;
  uint32 seq = 11;
}

message GameEndResult {
  repeated PlayerItem players = 1;
  message PlayerItem {
    uint32 seat = 1;
    int32 total_point = 2;
    int32 part_point_1 = 3;
    int32 part_point_2 = 4;
    int32 grading_score = 5;
    int32 gold = 6;
  }

}

message GameConnectInfo {
  string connect_token = 2;
  string game_uuid = 3;
  string location = 4;
}

message ItemGainRecord {
  uint32 item_id = 1;
  uint32 count = 2;
}

message ItemGainRecords {
  uint32 record_time = 1;
  uint32 limit_source_id = 2;
  repeated ItemGainRecord records = 3;
}

message FakeRandomRecords {
  uint32 item_id = 1;
  uint32 special_item_id = 2;
  uint32 gain_count = 3;
  repeated uint32 gain_history = 4;
}

message Item {
  uint32 item_id = 1;
  uint32 stack = 2;
}

message Bag {
  repeated Item items = 1;
  repeated ItemGainRecords daily_gain_record = 2;
}

message BagUpdate {
  repeated Item update_items = 1;
  repeated ItemGainRecords update_daily_gain_record = 2;
}

message RewardSlot {
  uint32 id = 1;
  uint32 count = 2;
}

message OpenResult {
  RewardSlot reward = 1;
  RewardSlot replace = 2;
}

message RewardPlusResult {
  uint32 id = 1;
  uint32 count = 2;
  Exchange exchange = 3;
  message Exchange {
    uint32 id = 1;
    uint32 count = 2;
    uint32 exchange = 3;
  }

}

message ExecuteReward {
  RewardSlot reward = 1;
  RewardSlot replace = 2;
  uint32 replace_count = 3;
}

message I18nContext {
  string lang = 1;
  string context = 2;
}

message Mail {
  uint32 mail_id = 1;
  uint32 state = 2;
  bool take_attachment = 3;
  string title = 4;
  string content = 5;
  repeated RewardSlot attachments = 6;
  uint32 create_time = 7;
  uint32 expire_time = 8;
  uint32 reference_id = 9;
  repeated I18nContext title_i18n = 10;
  repeated I18nContext content_i18n = 11;
}

message AchievementProgress {
  uint32 id = 1;
  uint32 counter = 2;
  bool achieved = 3;
  bool rewarded = 4;
  uint32 achieved_time = 5;
}

message AccountStatisticByGameMode {
  uint32 mode = 1;
  uint32 game_count_sum = 2;
  repeated uint32 game_final_position = 3;
  uint32 fly_count = 4;
  float gold_earn_sum = 5;
  uint32 round_count_sum = 6;
  float dadian_sum = 7;
  repeated RoundEndData round_end = 8;
  uint32 ming_count_sum = 9;
  uint32 liqi_count_sum = 10;
  uint32 xun_count_sum = 11;
  uint32 highest_lianzhuang = 12;
  uint32 score_earn_sum = 13;
  repeated RankScore rank_score = 14;
  message RoundEndData {
    uint32 type = 1;
    uint32 sum = 2;
  }

  message RankScore {
    uint32 rank = 1;
    int32 score_sum = 2;
    uint32 count = 3;
  }

}

message AccountStatisticByFan {
  uint32 fan_id = 1;
  uint32 sum = 2;
}

message AccountFanAchieved {
  uint32 mahjong_category = 1;
  repeated AccountStatisticByFan fan = 2;
  uint32 liujumanguan = 3;
}

message AccountDetailStatistic {
  repeated AccountStatisticByGameMode game_mode = 1;
  repeated AccountStatisticByFan fan = 2;
  uint32 liujumanguan = 3;
  repeated AccountFanAchieved fan_achieved = 4;
}

message AccountDetailStatisticByCategory {
  uint32 category = 1;
  AccountDetailStatistic detail_statistic = 2;
}

message AccountDetailStatisticV2 {
  AccountDetailStatistic friend_room_statistic = 1;
  RankStatistic rank_statistic = 2;
  CustomizedContestStatistic customized_contest_statistic = 3;
  AccountDetailStatistic leisure_match_statistic = 4;
  ChallengeStatistic challenge_match_statistic = 5;
  AccountDetailStatistic activity_match_statistic = 6;
  AccountDetailStatistic ab_match_statistic = 7;
  message RankStatistic {
    RankData total_statistic = 1;
    RankData month_statistic = 2;
    uint32 month_refresh_time = 3;
    message RankData {
      AccountDetailStatistic all_level_statistic = 1;
      repeated RankLevelData level_data_list = 2;
      message RankLevelData {
        uint32 rank_level = 1;
        AccountDetailStatistic statistic = 2;
      }

    }

  }

  message CustomizedContestStatistic {
    AccountDetailStatistic total_statistic = 1;
    AccountDetailStatistic month_statistic = 2;
    uint32 month_refresh_time = 3;
  }

  message ChallengeStatistic {
    AccountDetailStatistic all_season = 1;
    repeated SeasonData season_data_list = 2;
    message SeasonData {
      uint32 season_id = 1;
      AccountDetailStatistic statistic = 2;
    }

  }

}

message AccountShiLian {
  uint32 step = 1;
  uint32 state = 2;
}

message ClientDeviceInfo {
  string platform = 1;
  string hardware = 2;
  string os = 3;
  string os_version = 4;
  bool is_browser = 5;
  string software = 6;
  string sale_platform = 7;
  string hardware_vendor = 8;
  string model_number = 9;
}

message ClientVersionInfo {
  string resource = 1;
  string package = 2;
}

enum GamePlayerState {
  NULL = 0;
  AUTH = 1;
  SYNCING = 2;
  READY = 3;
}

message Announcement {
  uint32 id = 1;
  string title = 2;
  string content = 3;
}

message TaskProgress {
  uint32 id = 1;
  uint32 counter = 2;
  bool achieved = 3;
  bool rewarded = 4;
  bool failed = 5;
}

message GameConfig {
  uint32 category = 1;
  GameMode mode = 2;
  GameMetaData meta = 3;
}

message RPGState {
  uint32 player_damaged = 1;
  uint32 monster_damaged = 2;
  uint32 monster_seq = 3;
}

message RPGActivity {
  uint32 activity_id = 1;
  string last_show_uuid = 5;
  string last_played_uuid = 6;
  RPGState current_state = 7;
  RPGState last_show_state = 8;
  repeated uint32 received_rewards = 9;
}

message ActivityArenaData {
  uint32 win_count = 1;
  uint32 lose_count = 2;
  uint32 activity_id = 3;
  uint32 enter_time = 4;
  uint32 daily_enter_count = 5;
  uint32 daily_enter_time = 6;
  uint32 max_win_count = 7;
  uint32 total_win_count = 8;
}

message FeedActivityData {
  uint32 activity_id = 1;
  uint32 feed_count = 2;
  CountWithTimeData friend_receive_data = 3;
  CountWithTimeData friend_send_data = 4;
  repeated GiftBoxData gift_inbox = 5;
  message CountWithTimeData {
    uint32 count = 1;
    uint32 last_update_time = 2;
  }

  message GiftBoxData {
    uint32 id = 1;
    uint32 item_id = 2;
    uint32 count = 3;
    uint32 from_account_id = 4;
    uint32 time = 5;
    uint32 received = 6;
  }

}

message SegmentTaskProgress {
  uint32 id = 1;
  uint32 counter = 2;
  bool achieved = 3;
  bool rewarded = 4;
  bool failed = 5;
  uint32 reward_count = 6;
  uint32 achieved_count = 7;
}

message MineActivityData {
  repeated Point dig_point = 1;
  repeated MineReward map = 2;
  uint32 id = 3;
}

message AccountActivityUpdate {
  repeated lq.MineActivityData mine_data = 1;
  repeated lq.RPGActivity rpg_data = 2;
  repeated ActivityFeedData feed_data = 3;
}

message ActivityFeedData {
  uint32 activity_id = 1;
  uint32 feed_count = 2;
  CountWithTimeData friend_receive_data = 3;
  CountWithTimeData friend_send_data = 4;
  repeated GiftBoxData gift_inbox = 5;
  uint32 max_inbox_id = 6;
  message CountWithTimeData {
    uint32 count = 1;
    uint32 last_update_time = 2;
  }

  message GiftBoxData {
    uint32 id = 1;
    uint32 item_id = 2;
    uint32 count = 3;
    uint32 from_account_id = 4;
    uint32 time = 5;
    uint32 received = 6;
  }

}

message AccountActiveState {
  uint32 account_id = 1;
  uint32 login_time = 2;
  uint32 logout_time = 3;
  bool is_online = 4;
  AccountPlayingGame playing = 5;
}

message Friend {
  PlayerBaseView base = 1;
  AccountActiveState state = 2;
}

message Point {
  uint32 x = 1;
  uint32 y = 2;
}

message MineReward {
  Point point = 1;
  uint32 reward_id = 2;
  bool received = 3;
}

message GameLiveUnit {
  uint32 timestamp = 1;
  uint32 action_category = 2;
  bytes action_data = 3;
}

message GameLiveSegment {
  repeated GameLiveUnit actions = 1;
}

message GameLiveSegmentUri {
  uint32 segment_id = 1;
  string segment_uri = 2;
}

message GameLiveHead {
  string uuid = 1;
  uint32 start_time = 2;
  GameConfig game_config = 3;
  repeated PlayerGameView players = 4;
  repeated uint32 seat_list = 5;
}

message GameNewRoundState {
  repeated uint32 seat_states = 1;
}

message GameEndAction {
  uint32 state = 1;
}

message GameNoopAction {
}

message CommentItem {
  uint32 comment_id = 1;
  uint32 timestamp = 2;
  PlayerBaseView commenter = 3;
  string content = 4;
  uint32 is_banned = 5;
}

message RollingNotice {
  uint32 id = 1;
  string content = 2;
  uint32 start_time = 3;
  uint32 end_time = 4;
  uint32 repeat_interval = 5;
  string lang = 6;
}

message BillingGoods {
  string id = 1;
  string name = 2;
  string desc = 3;
  string icon = 4;
  uint32 resource_id = 5;
  uint32 resource_count = 6;
}

message BillShortcut {
  uint32 id = 1;
  uint32 count = 2;
  uint32 dealPrice = 3;
}

message BillingProduct {
  BillingGoods goods = 1;
  string currency_code = 2;
  uint32 currency_price = 3;
  uint32 sort_weight = 4;
}

message Character {
  uint32 charid = 1;
  uint32 level = 2;
  uint32 exp = 3;
  repeated ViewSlot views = 4;
  uint32 skin = 5;
  bool is_upgraded = 6;
  repeated uint32 extra_emoji = 7;
  repeated uint32 rewarded_level = 8;
}

message BuyRecord {
  uint32 id = 1;
  uint32 count = 2;
}

message ZHPShop {
  repeated uint32 goods = 1;
  repeated BuyRecord buy_records = 2;
  RefreshCount free_refresh = 3;
  RefreshCount cost_refresh = 4;
  message RefreshCount {
    uint32 count = 1;
    uint32 limit = 2;
  }

}

message MonthTicketInfo {
  uint32 id = 1;
  uint32 end_time = 2;
  uint32 last_pay_time = 3;
}

message ShopInfo {
  ZHPShop zhp = 1;
  repeated BuyRecord buy_records = 2;
  uint32 last_refresh_time = 3;
}

message ChangeNicknameRecord {
  string from = 1;
  string to = 2;
  uint32 time = 3;
}

message ServerSettings {
  PaymentSetting payment_setting = 3;
  PaymentSettingV2 payment_setting_v2 = 4;
  NicknameSetting nickname_setting = 5;
}

message NicknameSetting {
  uint32 enable = 1;
  repeated string nicknames = 2;
}

message PaymentSettingV2 {
  uint32 open_payment = 1;
  repeated PaymentSettingUnit payment_platforms = 2;
  message PaymentMaintain {
    uint32 start_time = 1;
    uint32 end_time = 2;
    uint32 goods_click_action = 3;
    string goods_click_text = 4;
  }

  message PaymentSettingUnit {
    string platform = 1;
    bool is_show = 2;
    uint32 goods_click_action = 3;
    string goods_click_text = 4;
    PaymentMaintain maintain = 5;
    bool enable_for_frozen_account = 6;
  }

}

message PaymentSetting {
  uint32 open_payment = 1;
  uint32 payment_info_show_type = 2;
  string payment_info = 3;
  WechatData wechat = 4;
  AlipayData alipay = 5;
  message WechatData {
    bool disable_create = 1;
    uint32 payment_source_platform = 2;
    bool enable_credit = 3;
  }

  message AlipayData {
    bool disable_create = 1;
    uint32 payment_source_platform = 2;
  }

}

message AccountSetting {
  uint32 key = 1;
  uint32 value = 2;
}

message ChestData {
  uint32 chest_id = 1;
  uint32 total_open_count = 2;
  uint32 consume_count = 3;
  uint32 face_black_count = 4;
}

message ChestDataV2 {
  uint32 chest_id = 1;
  uint32 total_open_count = 2;
  uint32 face_black_count = 3;
}

message FaithData {
  uint32 faith_id = 1;
  uint32 total_open_count = 2;
  uint32 consume_count = 3;
  int32 modify_count = 4;
}

message CustomizedContestBase {
  uint32 unique_id = 1;
  uint32 contest_id = 2;
  string contest_name = 3;
  uint32 state = 4;
  uint32 creator_id = 5;
  uint32 create_time = 6;
  uint32 start_time = 7;
  uint32 finish_time = 8;
  bool open = 9;
  uint32 contest_type = 10;
}

message CustomizedContestExtend {
  uint32 unique_id = 1;
  string public_notice = 2;
}

message CustomizedContestAbstract {
  uint32 unique_id = 1;
  uint32 contest_id = 2;
  string contest_name = 3;
  uint32 state = 4;
  uint32 creator_id = 5;
  uint32 create_time = 6;
  uint32 start_time = 7;
  uint32 finish_time = 8;
  bool open = 9;
  string public_notice = 10;
  uint32 contest_type = 11;
}

message CustomizedContestDetail {
  uint32 unique_id = 1;
  uint32 contest_id = 2;
  string contest_name = 3;
  uint32 state = 4;
  uint32 creator_id = 5;
  uint32 create_time = 6;
  uint32 start_time = 7;
  uint32 finish_time = 8;
  bool open = 9;
  uint32 rank_rule = 10;
  GameMode game_mode = 11;
  string private_notice = 12;
  uint32 observer_switch = 13;
  uint32 emoji_switch = 14;
  uint32 contest_type = 15;
}

message CustomizedContestPlayerReport {
  uint32 rank_rule = 1;
  uint32 rank = 2;
  int32 point = 3;
  repeated uint32 game_ranks = 4;
  uint32 total_game_count = 5;
}

message RecordGame {
  string uuid = 1;
  uint32 start_time = 2;
  uint32 end_time = 3;
  GameConfig config = 5;
  repeated AccountInfo accounts = 11;
  GameEndResult result = 12;
  message AccountInfo {
    uint32 account_id = 1;
    uint32 seat = 2;
    string nickname = 3;
    uint32 avatar_id = 4;
    Character character = 5;
    uint32 title = 6;
    AccountLevel level = 7;
    AccountLevel level3 = 8;
    uint32 avatar_frame = 9;
    uint32 verified = 10;
    repeated ViewSlot views = 11;
  }

}

message CustomizedContestGameStart {
  repeated Item players = 1;
  message Item {
    uint32 account_id = 1;
    string nickname = 2;
  }

}

message CustomizedContestGameEnd {
  repeated Item players = 1;
  message Item {
    uint32 account_id = 1;
    string nickname = 2;
    int32 total_point = 3;
  }

}

message Activity {
  uint32 activity_id = 1;
  uint32 start_time = 2;
  uint32 end_time = 3;
  string type = 4;
}

message ExchangeRecord {
  uint32 exchange_id = 1;
  uint32 count = 2;
}

message ActivityAccumulatedPointData {
  uint32 activity_id = 1;
  int32 point = 2;
  repeated uint32 gained_reward_list = 3;
}

message ActivityRankPointData {
  uint32 leaderboard_id = 1;
  int32 point = 2;
  bool gained_reward = 3;
  uint32 gainable_time = 4;
}

message GameRoundHuData {
  HuPai hupai = 1;
  repeated Fan fans = 2;
  uint32 score = 3;
  uint32 xun = 4;
  uint32 title_id = 5;
  uint32 fan_sum = 6;
  uint32 fu_sum = 7;
  uint32 yakuman_count = 8;
  uint32 biao_dora_count = 9;
  uint32 red_dora_count = 10;
  uint32 li_dora_count = 11;
  uint32 babei_count = 12;
  uint32 xuan_shang_count = 13;
  message HuPai {
    string tile = 1;
    uint32 seat = 2;
    uint32 liqi = 3;
  }

  message Fan {
    uint32 id = 1;
    uint32 count = 2;
    uint32 fan = 3;
  }

}

message GameRoundPlayerResult {
  uint32 type = 1;
  repeated string hands = 2;
  repeated string ming = 3;
  uint32 liqi_type = 4;
  bool is_fulu = 5;
  bool is_liujumanguan = 6;
  uint32 lian_zhuang = 7;
  GameRoundHuData hu = 8;
}

message GameRoundPlayer {
  int32 score = 1;
  uint32 rank = 2;
  GameRoundPlayerResult result = 3;
}

message GameRoundSnapshot {
  uint32 ju = 1;
  uint32 ben = 2;
  repeated GameRoundPlayer players = 3;
}

message GameFinalSnapshot {
  string uuid = 1;
  uint32 state = 2;
  uint32 category = 3;
  GameMode mode = 4;
  GameMetaData meta = 5;
  CalculateParam calculate_param = 6;
  uint32 create_time = 7;
  uint32 start_time = 8;
  uint32 finish_time = 9;
  repeated GameSeat seats = 10;
  repeated GameRoundSnapshot rounds = 11;
  repeated PlayerGameView account_views = 12;
  repeated FinalPlayer final_players = 13;
  repeated AFKInfo afk_info = 14;
  message CalculateParam {
    uint32 init_point = 1;
    uint32 jingsuanyuandian = 2;
    repeated int32 rank_points = 3;
  }

  message GameSeat {
    uint32 type = 1;
    uint32 account_id = 2;
    NetworkEndpoint notify_endpoint = 3;
    string client_address = 4;
    bool is_connected = 5;
  }

  message FinalPlayer {
    uint32 seat = 1;
    int32 total_point = 2;
    int32 part_point_1 = 3;
    int32 part_point_2 = 4;
    int32 grading_score = 5;
    int32 gold = 6;
  }

  message AFKInfo {
    uint32 deal_tile_count = 1;
    uint32 moqie_count = 2;
    uint32 seat = 3;
  }

}

message RecordCollectedData {
  string uuid = 1;
  string remarks = 2;
  uint32 start_time = 3;
  uint32 end_time = 4;
}

message ContestDetailRule {
  uint32 init_point = 5;
  uint32 fandian = 6;
  bool can_jifei = 7;
  uint32 tianbian_value = 8;
  uint32 liqibang_value = 9;
  uint32 changbang_value = 10;
  uint32 noting_fafu_1 = 11;
  uint32 noting_fafu_2 = 12;
  uint32 noting_fafu_3 = 13;
  bool have_liujumanguan = 14;
  bool have_qieshangmanguan = 15;
  bool have_biao_dora = 16;
  bool have_gang_biao_dora = 17;
  bool ming_dora_immediately_open = 18;
  bool have_li_dora = 19;
  bool have_gang_li_dora = 20;
  bool have_sifenglianda = 21;
  bool have_sigangsanle = 22;
  bool have_sijializhi = 23;
  bool have_jiuzhongjiupai = 24;
  bool have_sanjiahele = 25;
  bool have_toutiao = 26;
  bool have_helelianzhuang = 27;
  bool have_helezhongju = 28;
  bool have_tingpailianzhuang = 29;
  bool have_tingpaizhongju = 30;
  bool have_yifa = 31;
  bool have_nanruxiru = 32;
  uint32 jingsuanyuandian = 33;
  int32 shunweima_2 = 34;
  int32 shunweima_3 = 35;
  int32 shunweima_4 = 36;
  bool bianjietishi = 37;
  uint32 ai_level = 38;
  bool have_zimosun = 39;
  bool disable_multi_yukaman = 40;
  uint32 guyi_mode = 41;
  bool disable_leijiyiman = 42;
}

message ContestDetailRuleV2 {
  ContestDetailRule game_rule = 1;
  ExtraRule extra_rule = 2;
  message ExtraRule {
    uint32 required_level = 1;
    uint32 max_game_count = 2;
  }

}

message GameRuleSetting {
  uint32 round_type = 1;
  bool shiduan = 2;
  uint32 dora_count = 3;
  uint32 thinking_type = 4;
  bool use_detail_rule = 5;
  ContestDetailRuleV2 detail_rule_v2 = 6;
}

message RecordTingPaiInfo {
  string tile = 1;
  bool haveyi = 2;
  bool yiman = 3;
  uint32 count = 4;
  uint32 fu = 5;
  uint32 biao_dora_count = 6;
  bool yiman_zimo = 7;
  uint32 count_zimo = 8;
  uint32 fu_zimo = 9;
}

message RecordNoTilePlayerInfo {
  bool tingpai = 3;
  repeated string hand = 4;
  repeated RecordTingPaiInfo tings = 5;
  bool liuman = 6;
}

message RecordHuleInfo {
  repeated string hand = 1;
  repeated string ming = 2;
  string hu_tile = 3;
  uint32 seat = 4;
  bool zimo = 5;
  bool qinjia = 6;
  bool liqi = 7;
  repeated string doras = 8;
  repeated string li_doras = 9;
  bool yiman = 10;
  uint32 count = 11;
  repeated RecordFanInfo fans = 12;
  uint32 fu = 13;
  uint32 point_zimo_qin = 14;
  uint32 point_zimo_xian = 15;
  uint32 title_id = 16;
  uint32 point_sum = 17;
  uint32 dadian = 18;
  bool is_jue_zhang = 19;
  uint32 xun = 20;
  uint32 ting_type = 21;
  message RecordFanInfo {
    uint32 val = 1;
    uint32 id = 2;
  }

}

message RecordHulesInfo {
  int32 seat = 1;
  repeated RecordHuleInfo hules = 2;
}

message RecordLiujuInfo {
  uint32 seat = 1;
  uint32 type = 2;
}

message RecordNoTileInfo {
  bool liujumanguan = 1;
  repeated RecordNoTilePlayerInfo players = 2;
}

message RecordLiqiInfo {
  uint32 seat = 1;
  uint32 score = 2;
  bool is_w = 3;
  bool is_zhen_ting = 4;
  uint32 xun = 5;
  bool is_success = 6;
}

message RecordGangInfo {
  uint32 seat = 1;
  uint32 type = 2;
  string pai = 3;
  bool is_dora = 4;
  uint32 xun = 5;
}

message RecordBaBeiInfo {
  uint32 seat = 1;
  bool is_zi_mo = 2;
  bool is_chong = 3;
  bool is_bei = 4;
}

message RecordPeiPaiInfo {
  uint32 dora_count = 1;
  uint32 r_dora_count = 2;
  uint32 bei_count = 3;
}

message RecordRoundInfo {
  string name = 1;
  uint32 chang = 2;
  uint32 ju = 3;
  uint32 ben = 4;
  repeated uint32 scores = 5;
  repeated RecordLiqiInfo liqi_infos = 7;
  repeated RecordGangInfo gang_infos = 8;
  repeated RecordPeiPaiInfo peipai_infos = 9;
  repeated RecordBaBeiInfo babai_infos = 10;
  RecordHulesInfo hules_info = 11;
  RecordLiujuInfo liuju_info = 12;
  RecordNoTileInfo no_tile_info = 13;
}

message RecordAnalysisedData {
  repeated RecordRoundInfo round_infos = 1;
}

message NotifyCaptcha {
  uint32 check_id = 1;
  uint32 start_time = 2;
  string random_str = 3;
  uint32 type = 4;
}

message NotifyRoomGameStart {
  string game_url = 1;
  string connect_token = 2;
  string game_uuid = 3;
  string location = 4;
}

message NotifyMatchGameStart {
  string game_url = 1;
  string connect_token = 2;
  string game_uuid = 3;
  uint32 match_mode_id = 4;
  string location = 5;
}

message NotifyRoomPlayerReady {
  uint32 account_id = 1;
  bool ready = 2;
  AccountReadyState account_list = 3;
  uint32 seq = 4;
  message AccountReadyState {
    uint32 account_id = 1;
    bool ready = 2;
  }

}

message NotifyRoomPlayerDressing {
  uint32 account_id = 1;
  bool dressing = 2;
  AccountDressingState account_list = 3;
  uint32 seq = 4;
  message AccountDressingState {
    uint32 account_id = 1;
    bool dressing = 2;
  }

}

message NotifyRoomPlayerUpdate {
  repeated PlayerBaseView update_list = 1;
  repeated uint32 remove_list = 2;
  uint32 owner_id = 3;
  uint32 robot_count = 4;
  repeated PlayerBaseView player_list = 5;
  uint32 seq = 6;
}

message NotifyRoomKickOut {
}

message NotifyFriendStateChange {
  uint32 target_id = 1;
  AccountActiveState active_state = 2;
}

message NotifyFriendViewChange {
  uint32 target_id = 1;
  PlayerBaseView base = 2;
}

message NotifyFriendChange {
  uint32 account_id = 1;
  uint32 type = 2;
  Friend friend = 3;
}

message NotifyNewFriendApply {
  uint32 account_id = 1;
  uint32 apply_time = 2;
  uint32 removed_id = 3;
}

message NotifyClientMessage {
  PlayerBaseView sender = 1;
  uint32 type = 2;
  string content = 3;
}

message NotifyAccountUpdate {
  AccountUpdate update = 1;
}

message NotifyAnotherLogin {
}

message NotifyAccountLogout {
}

message NotifyAnnouncementUpdate {
  repeated AnnouncementUpdate update_list = 1;
  message AnnouncementUpdate {
    string lang = 1;
    string platform = 2;
  }

}

message NotifyNewMail {
  Mail mail = 1;
}

message NotifyDeleteMail {
  repeated uint32 mail_id_list = 1;
}

message NotifyReviveCoinUpdate {
  bool has_gained = 1;
}

message NotifyDailyTaskUpdate {
  repeated TaskProgress progresses = 1;
  uint32 max_daily_task_count = 2;
  uint32 refresh_count = 3;
}

message NotifyActivityTaskUpdate {
  repeated TaskProgress progresses = 1;
}

message NotifyActivityPeriodTaskUpdate {
  repeated TaskProgress progresses = 1;
}

message NotifyAccountRandomTaskUpdate {
  repeated TaskProgress progresses = 1;
}

message NotifyActivitySegmentTaskUpdate {
  repeated lq.SegmentTaskProgress progresses = 1;
}

message NotifyActivityUpdate {
  repeated FeedActivityData list = 1;
  message FeedActivityData {
    uint32 activity_id = 1;
    uint32 feed_count = 2;
    CountWithTimeData friend_receive_data = 3;
    CountWithTimeData friend_send_data = 4;
    repeated GiftBoxData gift_inbox = 5;
    message CountWithTimeData {
      uint32 count = 1;
      uint32 last_update_time = 2;
    }

    message GiftBoxData {
      uint32 id = 1;
      uint32 item_id = 2;
      uint32 count = 3;
      uint32 from_account_id = 4;
      uint32 time = 5;
      uint32 received = 6;
    }

  }

}

message NotifyAccountChallengeTaskUpdate {
  repeated TaskProgress progresses = 1;
  uint32 level = 2;
  uint32 refresh_count = 3;
  uint32 match_count = 4;
  uint32 ticket_id = 5;
  repeated uint32 rewarded_season = 6;
}

message NotifyNewComment {
}

message NotifyRollingNotice {
  RollingNotice notice = 1;
}

message NotifyGiftSendRefresh {
}

message NotifyShopUpdate {
  ShopInfo shop_info = 1;
}

message NotifyVipLevelChange {
  uint32 gift_limit = 1;
  uint32 friend_max_count = 2;
  uint32 zhp_free_refresh_limit = 3;
  uint32 zhp_cost_refresh_limit = 4;
  float buddy_bonus = 5;
  uint32 record_collect_limit = 6;
}

message NotifyServerSetting {
  ServerSettings settings = 1;
}

message NotifyPayResult {
  uint32 pay_result = 1;
  string order_id = 2;
  uint32 goods_id = 3;
  uint32 new_month_ticket = 4;
  repeated ResourceModify resource_modify = 5;
  message ResourceModify {
    uint32 id = 1;
    uint32 count = 2;
    uint32 final = 3;
  }

}

message NotifyCustomContestAccountMsg {
  uint32 unique_id = 1;
  uint32 account_id = 2;
  string sender = 3;
  string content = 4;
  uint32 verified = 5;
}

message NotifyCustomContestSystemMsg {
  uint32 unique_id = 1;
  uint32 type = 2;
  string uuid = 3;
  CustomizedContestGameStart game_start = 4;
  CustomizedContestGameEnd game_end = 5;
}

message NotifyMatchTimeout {
  string sid = 1;
}

message NotifyCustomContestState {
  uint32 unique_id = 1;
  uint32 state = 2;
}

message NotifyActivityChange {
  repeated Activity new_activities = 1;
  repeated uint32 end_activities = 2;
}

message NotifyAFKResult {
  uint32 type = 1;
  uint32 ban_end_time = 2;
  string game_uuid = 3;
}

message NotifyGameFinishRewardV2 {
  uint32 mode_id = 1;
  LevelChange level_change = 2;
  MatchChest match_chest = 3;
  MainCharacter main_character = 4;
  CharacterGift character_gift = 5;
  message LevelChange {
    AccountLevel origin = 1;
    AccountLevel final = 2;
    uint32 type = 3;
  }

  message MatchChest {
    uint32 chest_id = 1;
    uint32 origin = 2;
    uint32 final = 3;
    bool is_graded = 4;
    repeated RewardSlot rewards = 5;
  }

  message MainCharacter {
    uint32 level = 1;
    uint32 exp = 2;
    uint32 add = 3;
  }

  message CharacterGift {
    uint32 origin = 1;
    uint32 final = 2;
    uint32 add = 3;
    bool is_graded = 4;
  }

}

message NotifyActivityRewardV2 {
  repeated ActivityReward activity_reward = 1;
  message ActivityReward {
    uint32 activity_id = 1;
    repeated RewardSlot rewards = 2;
  }

}

message NotifyActivityPointV2 {
  repeated ActivityPoint activity_points = 1;
  message ActivityPoint {
    uint32 activity_id = 1;
    uint32 point = 2;
  }

}

message NotifyLeaderboardPointV2 {
  repeated LeaderboardPoint leaderboard_points = 1;
  message LeaderboardPoint {
    uint32 leaderboard_id = 1;
    uint32 point = 2;
  }

}