text: # Generated by the protocol buffer compiler.  DO NOT EDIT!
  # sources: steammessages_chat.proto
  # plugin: python-betterproto
  # Last updated 09/09/2021
  
  from dataclasses import dataclass
  from typing import List
  
  import betterproto
  
  from .friends import CMsgClientPersonaStateFriend
  
  
  class EChatRoomJoinState(betterproto.Enum):
      Default = 0
      NONE = 1
      Joined = 2
      TestInvalid = 99
  
  
  class EChatRoomGroupRank(betterproto.Enum):
      Default = 0
      Viewer = 10
      Guest = 15
      Member = 20
      Moderator = 30
      Officer = 40
      Owner = 50
      TestInvalid = 99
  
  
  class EChatRoomNotificationLevel(betterproto.Enum):
      Invalid = 0
      NONE = 1
      MentionMe = 2
      MentionAll = 3
      AllMessages = 4
  
  
  class EChatRoomServerMessage(betterproto.Enum):
      Invalid = 0
      RenameChatRoom = 1
      Joined = 2
      Parted = 3
      Kicked = 4
      Invited = 5
      InviteDismissed = 8
      ChatRoomTaglineChanged = 9
      ChatRoomAvatarChanged = 10
      AppCustom = 11
  
  
  class EChatRoomMessageReactionType(betterproto.Enum):
      Invalid = 0
      Emoticon = 1
      Sticker = 2
  
  
  class EChatRoomMemberStateChange(betterproto.Enum):
      Invalid = 0
      Joined = 1
      Parted = 2
      Kicked = 3
      Invited = 4
      RankChanged = 7
      InviteDismissed = 8
      Muted = 9
      Banned = 10
      RolesChanged = 12
  
  
  @dataclass(eq=False, repr=False)
  class RequestFriendPersonaStatesRequest(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class RequestFriendPersonaStatesResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class CreateChatRoomGroupRequest(betterproto.Message):
      steamid_partner: int = betterproto.fixed64_field(1)
      steamid_invited: int = betterproto.fixed64_field(2)
      name: str = betterproto.string_field(3)
      steamid_invitees: List[int] = betterproto.fixed64_field(4)
      watching_broadcast_accountid: int = betterproto.uint32_field(6)
      watching_broadcast_channel_id: int = betterproto.uint64_field(7)
  
  
  @dataclass(eq=False, repr=False)
  class Role(betterproto.Message):
      role_id: int = betterproto.uint64_field(1)
      name: str = betterproto.string_field(2)
      ordinal: int = betterproto.uint32_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class RoleActions(betterproto.Message):
      role_id: int = betterproto.uint64_field(1)
      can_create_rename_delete_channel: bool = betterproto.bool_field(2)
      can_kick: bool = betterproto.bool_field(3)
      can_ban: bool = betterproto.bool_field(4)
      can_invite: bool = betterproto.bool_field(5)
      can_change_tagline_avatar_name: bool = betterproto.bool_field(6)
      can_chat: bool = betterproto.bool_field(7)
      can_view_history: bool = betterproto.bool_field(8)
      can_change_group_roles: bool = betterproto.bool_field(9)
      can_change_user_roles: bool = betterproto.bool_field(10)
      can_mention_all: bool = betterproto.bool_field(11)
      can_set_watching_broadcast: bool = betterproto.bool_field(12)
  
  
  @dataclass(eq=False, repr=False)
  class PartyBeacon(betterproto.Message):
      app_id: int = betterproto.uint32_field(1)
      steamid_owner: int = betterproto.fixed64_field(2)
      beacon_id: int = betterproto.fixed64_field(3)
      game_metadata: str = betterproto.string_field(4)
  
  
  @dataclass(eq=False, repr=False)
  class GroupHeaderState(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_name: str = betterproto.string_field(2)
      clanid: int = betterproto.uint32_field(13)
      accountid_owner: int = betterproto.uint32_field(14)
      appid: int = betterproto.uint32_field(21)
      tagline: str = betterproto.string_field(15)
      avatar_sha: bytes = betterproto.bytes_field(16)
      default_role_id: int = betterproto.uint64_field(17)
      roles: List["Role"] = betterproto.message_field(18)
      role_actions: List["RoleActions"] = betterproto.message_field(19)
      watching_broadcast_accountid: int = betterproto.uint32_field(20)
      party_beacons: List["PartyBeacon"] = betterproto.message_field(22)
      watching_broadcast_channel_id: int = betterproto.uint64_field(23)
      active_minigame_id: int = betterproto.uint64_field(24)
      avatar_ugc_url: str = betterproto.string_field(25)
      disabled: bool = betterproto.bool_field(26)
  
  
  @dataclass(eq=False, repr=False)
  class Member(betterproto.Message):
      accountid: int = betterproto.uint32_field(1)
      state: "EChatRoomJoinState" = betterproto.enum_field(3)
      rank: "EChatRoomGroupRank" = betterproto.enum_field(4)
      time_kick_expire: int = betterproto.uint32_field(6)
      role_ids: List[int] = betterproto.uint64_field(7)
  
  
  @dataclass(eq=False, repr=False)
  class State(betterproto.Message):
      chat_id: int = betterproto.uint64_field(1)
      chat_name: str = betterproto.string_field(2)
      voice_allowed: bool = betterproto.bool_field(3)
      members_in_voice: List[int] = betterproto.uint32_field(4)
      time_last_message: int = betterproto.uint32_field(5)
      sort_order: int = betterproto.uint32_field(6)
      last_message: str = betterproto.string_field(7)
      accountid_last_message: int = betterproto.uint32_field(8)
  
  
  @dataclass(eq=False, repr=False)
  class GroupState(betterproto.Message):
      header_state: "GroupHeaderState" = betterproto.message_field(1)
      members: List["Member"] = betterproto.message_field(2)
      default_chat_id: int = betterproto.uint64_field(4)
      chat_rooms: List["State"] = betterproto.message_field(5)
      kicked: List["Member"] = betterproto.message_field(7)
  
  
  @dataclass(eq=False, repr=False)
  class ChatRoomState(betterproto.Message):
      chat_id: int = betterproto.uint64_field(1)
      time_joined: int = betterproto.uint32_field(2)
      time_last_ack: int = betterproto.uint32_field(3)
      desktop_notification_level: "EChatRoomNotificationLevel" = betterproto.enum_field(4)
      mobile_notification_level: "EChatRoomNotificationLevel" = betterproto.enum_field(5)
      time_last_mention: int = betterproto.uint32_field(6)
      unread_indicator_muted: bool = betterproto.bool_field(7)
      time_first_unread: int = betterproto.uint32_field(8)
  
  
  @dataclass(eq=False, repr=False)
  class ChatRoomGroupState(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      time_joined: int = betterproto.uint32_field(2)
      user_chat_room_state: List["ChatRoomState"] = betterproto.message_field(3)
      desktop_notification_level: "EChatRoomNotificationLevel" = betterproto.enum_field(4)
      mobile_notification_level: "EChatRoomNotificationLevel" = betterproto.enum_field(5)
      time_last_group_ack: int = betterproto.uint32_field(6)
      unread_indicator_muted: bool = betterproto.bool_field(7)
  
  
  @dataclass(eq=False, repr=False)
  class CreateChatRoomGroupResponse(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      state: "GroupState" = betterproto.message_field(2)
      user_chat_state: "ChatRoomGroupState" = betterproto.message_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class SaveChatRoomGroupRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      name: str = betterproto.string_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class SaveChatRoomGroupResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class RenameChatRoomGroupRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      name: str = betterproto.string_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class RenameChatRoomGroupResponse(betterproto.Message):
      name: str = betterproto.string_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class SetChatRoomGroupTaglineRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      tagline: str = betterproto.string_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class SetChatRoomGroupTaglineResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class SetChatRoomGroupAvatarRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      avatar_sha: bytes = betterproto.bytes_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class SetChatRoomGroupAvatarResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class SetChatRoomGroupWatchingBroadcastRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      watching_broadcast_accountid: int = betterproto.uint32_field(2)
      watching_broadcast_channel_id: int = betterproto.uint64_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class SetChatRoomGroupWatchingBroadcastResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class JoinMiniGameForChatRoomGroupRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_id: int = betterproto.uint64_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class JoinMiniGameForChatRoomGroupResponse(betterproto.Message):
      minigame_id: int = betterproto.uint64_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class EndMiniGameForChatRoomGroupRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_id: int = betterproto.uint64_field(2)
      minigame_id: int = betterproto.uint64_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class EndMiniGameForChatRoomGroupResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class MuteUserRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      steamid: int = betterproto.fixed64_field(2)
      expiration: int = betterproto.int32_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class MuteUserResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class KickUserRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      steamid: int = betterproto.fixed64_field(2)
      expiration: int = betterproto.int32_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class KickUserResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class SetUserBanStateRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      steamid: int = betterproto.fixed64_field(2)
      ban_state: bool = betterproto.bool_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class SetUserBanStateResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class RevokeInviteRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      steamid: int = betterproto.fixed64_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class RevokeInviteResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class CreateRoleRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      name: str = betterproto.string_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class CreateRoleResponse(betterproto.Message):
      actions: "RoleActions" = betterproto.message_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class GetRolesRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class GetRolesResponse(betterproto.Message):
      roles: List["Role"] = betterproto.message_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class RenameRoleRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      role_id: int = betterproto.uint64_field(2)
      name: str = betterproto.string_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class RenameRoleResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class ReorderRoleRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      role_id: int = betterproto.uint64_field(2)
      ordinal: int = betterproto.uint32_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class ReorderRoleResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class DeleteRoleRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      role_id: int = betterproto.uint64_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class DeleteRoleResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class GetRoleActionsRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      role_id: int = betterproto.uint64_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class GetRoleActionsResponse(betterproto.Message):
      actions: List["RoleActions"] = betterproto.message_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class ReplaceRoleActionsRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      role_id: int = betterproto.uint64_field(2)
      actions: "RoleActions" = betterproto.message_field(4)
  
  
  @dataclass(eq=False, repr=False)
  class ReplaceRoleActionsResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class AddRoleToUserRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      role_id: int = betterproto.uint64_field(3)
      steamid: int = betterproto.fixed64_field(4)
  
  
  @dataclass(eq=False, repr=False)
  class AddRoleToUserResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class GetRolesForUserRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      steamid: int = betterproto.fixed64_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class GetRolesForUserResponse(betterproto.Message):
      role_ids: List[int] = betterproto.uint64_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class DeleteRoleFromUserRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      role_id: int = betterproto.uint64_field(3)
      steamid: int = betterproto.fixed64_field(4)
  
  
  @dataclass(eq=False, repr=False)
  class DeleteRoleFromUserResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class JoinChatRoomGroupRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      invite_code: str = betterproto.string_field(2)
      chat_id: int = betterproto.uint64_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class JoinChatRoomGroupResponse(betterproto.Message):
      state: "GroupState" = betterproto.message_field(1)
      user_chat_state: "ChatRoomGroupState" = betterproto.message_field(3)
      join_chat_id: int = betterproto.uint64_field(4)
      time_expire: int = betterproto.uint32_field(5)
  
  
  @dataclass(eq=False, repr=False)
  class InviteFriendToChatRoomGroupRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      steamid: int = betterproto.fixed64_field(2)
      chat_id: int = betterproto.uint64_field(3)
      skip_friendsui_check: bool = betterproto.bool_field(4)
  
  
  @dataclass(eq=False, repr=False)
  class InviteFriendToChatRoomGroupResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class LeaveChatRoomGroupRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class LeaveChatRoomGroupResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class CreateChatRoomRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      name: str = betterproto.string_field(2)
      allow_voice: bool = betterproto.bool_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class CreateChatRoomResponse(betterproto.Message):
      chat_room: "State" = betterproto.message_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class DeleteChatRoomRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_id: int = betterproto.uint64_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class DeleteChatRoomResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class RenameChatRoomRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_id: int = betterproto.uint64_field(2)
      name: str = betterproto.string_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class RenameChatRoomResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class ReorderChatRoomRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_id: int = betterproto.uint64_field(2)
      move_after_chat_id: int = betterproto.uint64_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class ReorderChatRoomResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class SendChatMessageRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_id: int = betterproto.uint64_field(2)
      message: str = betterproto.string_field(3)
      echo_to_sender: bool = betterproto.bool_field(4)
  
  
  @dataclass(eq=False, repr=False)
  class SendChatMessageResponse(betterproto.Message):
      modified_message: str = betterproto.string_field(1)
      server_timestamp: int = betterproto.uint32_field(2)
      ordinal: int = betterproto.uint32_field(3)
      message_without_bb_code: str = betterproto.string_field(4)
  
  
  @dataclass(eq=False, repr=False)
  class JoinVoiceChatRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_id: int = betterproto.uint64_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class JoinVoiceChatResponse(betterproto.Message):
      voice_chatid: int = betterproto.uint64_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class LeaveVoiceChatRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_id: int = betterproto.uint64_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class LeaveVoiceChatResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class GetMessageHistoryRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_id: int = betterproto.uint64_field(2)
      last_time: int = betterproto.uint32_field(3)
      last_ordinal: int = betterproto.uint32_field(4)
      start_time: int = betterproto.uint32_field(5)
      start_ordinal: int = betterproto.uint32_field(6)
      max_count: int = betterproto.uint32_field(7)
  
  
  @dataclass(eq=False, repr=False)
  class ServerMessage(betterproto.Message):
      message: "EChatRoomServerMessage" = betterproto.enum_field(1)
      string_param: str = betterproto.string_field(2)
      accountid_param: int = betterproto.uint32_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class GetMessageHistoryResponse(betterproto.Message):
      messages: List["GetMessageHistoryResponseChatMessage"] = betterproto.message_field(1)
      more_available: bool = betterproto.bool_field(4)
  
  
  @dataclass(eq=False, repr=False)
  class GetMessageHistoryResponseChatMessage(betterproto.Message):
      sender: int = betterproto.uint32_field(1)
      server_timestamp: int = betterproto.uint32_field(2)
      message: str = betterproto.string_field(3)
      ordinal: int = betterproto.uint32_field(4)
      server_message: "ServerMessage" = betterproto.message_field(5)
      deleted: bool = betterproto.bool_field(6)
      reactions: List["GetMessageHistoryResponseChatMessageMessageReaction"] = betterproto.message_field(7)
  
  
  @dataclass(eq=False, repr=False)
  class GetMessageHistoryResponseChatMessageMessageReaction(betterproto.Message):
      reaction_type: "EChatRoomMessageReactionType" = betterproto.enum_field(1)
      reaction: str = betterproto.string_field(2)
      num_reactors: int = betterproto.uint32_field(3)
      has_user_reacted: bool = betterproto.bool_field(4)
  
  
  @dataclass(eq=False, repr=False)
  class GetMyChatRoomGroupsRequest(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class GetChatRoomGroupSummaryResponse(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_group_name: str = betterproto.string_field(2)
      active_member_count: int = betterproto.uint32_field(3)
      active_voice_member_count: int = betterproto.uint32_field(4)
      default_chat_id: int = betterproto.uint64_field(5)
      chat_rooms: List["State"] = betterproto.message_field(6)
      clanid: int = betterproto.uint32_field(7)
      chat_group_tagline: str = betterproto.string_field(8)
      accountid_owner: int = betterproto.uint32_field(9)
      top_members: List[int] = betterproto.uint32_field(10)
      chat_group_avatar_sha: bytes = betterproto.bytes_field(11)
      rank: "EChatRoomGroupRank" = betterproto.enum_field(12)
      default_role_id: int = betterproto.uint64_field(13)
      role_ids: List[int] = betterproto.uint64_field(14)
      role_actions: List["RoleActions"] = betterproto.message_field(15)
      watching_broadcast_accountid: int = betterproto.uint32_field(16)
      appid: int = betterproto.uint32_field(17)
      party_beacons: List["PartyBeacon"] = betterproto.message_field(18)
      watching_broadcast_channel_id: int = betterproto.uint64_field(19)
      active_minigame_id: int = betterproto.uint64_field(20)
      avatar_ugc_url: str = betterproto.string_field(21)
      disabled: bool = betterproto.bool_field(22)
  
  
  @dataclass(eq=False, repr=False)
  class SummaryPair(betterproto.Message):
      user_chat_group_state: "ChatRoomGroupState" = betterproto.message_field(1)
      group_summary: "GetChatRoomGroupSummaryResponse" = betterproto.message_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class GetMyChatRoomGroupsResponse(betterproto.Message):
      chat_room_groups: List["SummaryPair"] = betterproto.message_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class GetChatRoomGroupStateRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class GetChatRoomGroupStateResponse(betterproto.Message):
      state: "GroupState" = betterproto.message_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class GetChatRoomGroupSummaryRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class SetAppChatRoomGroupForceActiveRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      requesting_app_id: int = betterproto.uint32_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class SetAppChatRoomGroupForceActiveResponse(betterproto.Message):
      result: int = betterproto.uint32_field(1)
      accounts_in_channel: List[int] = betterproto.uint32_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class SetAppChatRoomGroupStopForceActiveNotification(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      requesting_app_id: int = betterproto.uint32_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class AckChatMessageNotification(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_id: int = betterproto.uint64_field(2)
      timestamp: int = betterproto.uint32_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class CreateInviteLinkRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      seconds_valid: int = betterproto.uint32_field(2)
      chat_id: int = betterproto.uint64_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class CreateInviteLinkResponse(betterproto.Message):
      invite_code: str = betterproto.string_field(1)
      seconds_valid: int = betterproto.uint32_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class GetInviteLinkInfoRequest(betterproto.Message):
      invite_code: str = betterproto.string_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class GetInviteLinkInfoResponse(betterproto.Message):
      steamid_sender: int = betterproto.fixed64_field(3)
      time_expires: int = betterproto.uint32_field(4)
      chat_id: int = betterproto.uint64_field(6)
      group_summary: "GetChatRoomGroupSummaryResponse" = betterproto.message_field(8)
      user_chat_group_state: "ChatRoomGroupState" = betterproto.message_field(9)
      time_kick_expire: int = betterproto.uint32_field(10)
      banned: bool = betterproto.bool_field(11)
  
  
  @dataclass(eq=False, repr=False)
  class GetInviteInfoRequest(betterproto.Message):
      steamid_invitee: int = betterproto.fixed64_field(1)
      chat_group_id: int = betterproto.uint64_field(2)
      chat_id: int = betterproto.uint64_field(3)
      invite_code: str = betterproto.string_field(4)
  
  
  @dataclass(eq=False, repr=False)
  class GetInviteInfoResponse(betterproto.Message):
      group_summary: "GetChatRoomGroupSummaryResponse" = betterproto.message_field(1)
      time_kick_expire: int = betterproto.uint32_field(2)
      banned: bool = betterproto.bool_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class GetInviteLinksForGroupRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class GetInviteLinksForGroupResponse(betterproto.Message):
      invite_links: List["GetInviteLinksForGroupResponseLinkInfo"] = betterproto.message_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class GetInviteLinksForGroupResponseLinkInfo(betterproto.Message):
      invite_code: str = betterproto.string_field(1)
      steamid_creator: int = betterproto.fixed64_field(2)
      time_expires: int = betterproto.uint32_field(3)
      chat_id: int = betterproto.uint64_field(4)
  
  
  @dataclass(eq=False, repr=False)
  class GetBanListRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class GetBanListResponse(betterproto.Message):
      bans: List["GetBanListResponseBanInfo"] = betterproto.message_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class GetBanListResponseBanInfo(betterproto.Message):
      accountid: int = betterproto.uint32_field(1)
      accountid_actor: int = betterproto.uint32_field(2)
      time_banned: int = betterproto.uint32_field(3)
      ban_reason: str = betterproto.string_field(4)
  
  
  @dataclass(eq=False, repr=False)
  class GetInviteListRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class GroupInvite(betterproto.Message):
      accountid: int = betterproto.uint32_field(1)
      accountid_actor: int = betterproto.uint32_field(2)
      time_invited: int = betterproto.uint32_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class GetInviteListResponse(betterproto.Message):
      invites: List["GroupInvite"] = betterproto.message_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class DeleteInviteLinkRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      invite_code: str = betterproto.string_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class DeleteInviteLinkResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class SetSessionActiveChatRoomGroupsRequest(betterproto.Message):
      chat_group_ids: List[int] = betterproto.uint64_field(1)
      chat_groups_data_requested: List[int] = betterproto.uint64_field(2)
      virtualize_members_threshold: int = betterproto.int32_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class SetSessionActiveChatRoomGroupsResponse(betterproto.Message):
      chat_states: List["GroupState"] = betterproto.message_field(1)
      virtualize_members_chat_group_ids: List[int] = betterproto.uint64_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class SetUserChatGroupPreferencesRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_group_preferences: "SetUserChatGroupPreferencesRequestChatGroupPreferences" = betterproto.message_field(2)
      chat_room_preferences: List["SetUserChatGroupPreferencesRequestChatRoomPreferences"] = betterproto.message_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class SetUserChatGroupPreferencesRequestChatGroupPreferences(betterproto.Message):
      desktop_notification_level: "EChatRoomNotificationLevel" = betterproto.enum_field(1)
      mobile_notification_level: "EChatRoomNotificationLevel" = betterproto.enum_field(2)
      unread_indicator_muted: bool = betterproto.bool_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class SetUserChatGroupPreferencesRequestChatRoomPreferences(betterproto.Message):
      chat_id: int = betterproto.uint64_field(1)
      desktop_notification_level: "EChatRoomNotificationLevel" = betterproto.enum_field(2)
      mobile_notification_level: "EChatRoomNotificationLevel" = betterproto.enum_field(3)
      unread_indicator_muted: bool = betterproto.bool_field(4)
  
  
  @dataclass(eq=False, repr=False)
  class SetUserChatGroupPreferencesResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class DeleteChatMessagesRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_id: int = betterproto.uint64_field(2)
      messages: List["DeleteChatMessagesRequestMessage"] = betterproto.message_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class DeleteChatMessagesRequestMessage(betterproto.Message):
      server_timestamp: int = betterproto.uint32_field(1)
      ordinal: int = betterproto.uint32_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class DeleteChatMessagesResponse(betterproto.Message):
      pass
  
  
  @dataclass(eq=False, repr=False)
  class UpdateMemberListViewNotification(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      view_id: int = betterproto.uint64_field(2)
      start: int = betterproto.int32_field(3)
      end: int = betterproto.int32_field(4)
      client_changenumber: int = betterproto.int32_field(5)
      delete_view: bool = betterproto.bool_field(6)
      persona_subscribe_accountids: List[int] = betterproto.int32_field(7)
      persona_unsubscribe_accountids: List[int] = betterproto.int32_field(8)
  
  
  @dataclass(eq=False, repr=False)
  class SearchMembersRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      search_id: int = betterproto.uint64_field(2)
      search_text: str = betterproto.string_field(3)
      max_results: int = betterproto.int32_field(4)
  
  
  @dataclass(eq=False, repr=False)
  class SearchMembersResponse(betterproto.Message):
      matching_members: List["SearchMembersResponseMemberMatch"] = betterproto.message_field(1)
      status_flags: int = betterproto.uint32_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class SearchMembersResponseMemberMatch(betterproto.Message):
      accountid: int = betterproto.int32_field(1)
      persona: CMsgClientPersonaStateFriend = betterproto.message_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class UpdateMessageReactionRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_id: int = betterproto.uint64_field(2)
      server_timestamp: int = betterproto.uint32_field(3)
      ordinal: int = betterproto.uint32_field(4)
      reaction_type: "EChatRoomMessageReactionType" = betterproto.enum_field(5)
      reaction: str = betterproto.string_field(6)
      is_add: bool = betterproto.bool_field(7)
  
  
  @dataclass(eq=False, repr=False)
  class UpdateMessageReactionResponse(betterproto.Message):
      num_reactors: int = betterproto.uint32_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class GetMessageReactionReactorsRequest(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_id: int = betterproto.uint64_field(2)
      server_timestamp: int = betterproto.uint32_field(3)
      ordinal: int = betterproto.uint32_field(4)
      reaction_type: "EChatRoomMessageReactionType" = betterproto.enum_field(5)
      reaction: str = betterproto.string_field(6)
      limit: int = betterproto.uint32_field(7)
  
  
  @dataclass(eq=False, repr=False)
  class GetMessageReactionReactorsResponse(betterproto.Message):
      reactors: List[int] = betterproto.uint32_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class GetClanChatRoomInfoRequest(betterproto.Message):
      steamid: int = betterproto.fixed64_field(1)
      autocreate: bool = betterproto.bool_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class GetClanChatRoomInfoResponse(betterproto.Message):
      chat_group_summary: "GetChatRoomGroupSummaryResponse" = betterproto.message_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class SetClanChatRoomPrivateRequest(betterproto.Message):
      steamid: int = betterproto.fixed64_field(1)
      chat_room_private: bool = betterproto.bool_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class SetClanChatRoomPrivateResponse(betterproto.Message):
      chat_room_private: bool = betterproto.bool_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class Mentions(betterproto.Message):
      mention_all: bool = betterproto.bool_field(1)
      mention_here: bool = betterproto.bool_field(2)
      ids: List[int] = betterproto.uint32_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class IncomingChatMessageNotification(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_id: int = betterproto.uint64_field(2)
      steamid_sender: int = betterproto.fixed64_field(3)
      message: str = betterproto.string_field(4)
      timestamp: int = betterproto.uint32_field(5)
      mentions: "Mentions" = betterproto.message_field(6)
      ordinal: int = betterproto.uint32_field(7)
      server_message: "ServerMessage" = betterproto.message_field(8)
      message_no_bbcode: str = betterproto.string_field(9)
      chat_name: str = betterproto.string_field(10)
  
  
  @dataclass(eq=False, repr=False)
  class ChatMessageModifiedNotification(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_id: int = betterproto.uint64_field(2)
      messages: List["ChatMessageModifiedNotificationChatMessage"] = betterproto.message_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class ChatMessageModifiedNotificationChatMessage(betterproto.Message):
      server_timestamp: int = betterproto.uint32_field(1)
      ordinal: int = betterproto.uint32_field(2)
      deleted: bool = betterproto.bool_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class MemberStateChangeNotification(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      member: "Member" = betterproto.message_field(2)
      change: "EChatRoomMemberStateChange" = betterproto.enum_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class ChatRoomHeaderStateNotification(betterproto.Message):
      header_state: "GroupHeaderState" = betterproto.message_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class ChatRoomGroupRoomsChangeNotification(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      default_chat_id: int = betterproto.uint64_field(2)
      chat_rooms: List["State"] = betterproto.message_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class NotifyShouldRejoinChatRoomVoiceChatNotification(betterproto.Message):
      chat_id: int = betterproto.uint64_field(1)
      chat_group_id: int = betterproto.uint64_field(2)
  
  
  @dataclass(eq=False, repr=False)
  class NotifyChatGroupUserStateChangedNotification(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      user_chat_group_state: "ChatRoomGroupState" = betterproto.message_field(2)
      group_summary: "GetChatRoomGroupSummaryResponse" = betterproto.message_field(3)
      user_action: "EChatRoomMemberStateChange" = betterproto.enum_field(4)
  
  
  @dataclass(eq=False, repr=False)
  class NotifyChatRoomDisconnectNotification(betterproto.Message):
      chat_group_ids: List[int] = betterproto.uint64_field(1)
  
  
  @dataclass(eq=False, repr=False)
  class MemberListView(betterproto.Message):
      start: int = betterproto.int32_field(3)
      end: int = betterproto.int32_field(4)
      total_count: int = betterproto.int32_field(5)
      client_changenumber: int = betterproto.int32_field(6)
      server_changenumber: int = betterproto.int32_field(7)
  
  
  @dataclass(eq=False, repr=False)
  class MemberSummaryCounts(betterproto.Message):
      ingame: int = betterproto.int32_field(1)
      online: int = betterproto.int32_field(2)
      offline: int = betterproto.int32_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class MemberListViewUpdatedNotification(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      view_id: int = betterproto.uint64_field(2)
      view: "MemberListView" = betterproto.message_field(3)
      members: List["MemberListViewUpdatedNotificationMemberListViewEntry"] = betterproto.message_field(4)
      status_flags: int = betterproto.uint32_field(5)
      member_summary: "MemberSummaryCounts" = betterproto.message_field(6)
      subscribed_personas: List[CMsgClientPersonaStateFriend] = betterproto.message_field(7)
  
  
  @dataclass(eq=False, repr=False)
  class MemberListViewUpdatedNotificationMemberListViewEntry(betterproto.Message):
      rank: int = betterproto.int32_field(1)
      accountid: int = betterproto.uint32_field(2)
      persona: CMsgClientPersonaStateFriend = betterproto.message_field(3)
  
  
  @dataclass(eq=False, repr=False)
  class MessageReactionNotification(betterproto.Message):
      chat_group_id: int = betterproto.uint64_field(1)
      chat_id: int = betterproto.uint64_field(2)
      server_timestamp: int = betterproto.uint32_field(3)
      ordinal: int = betterproto.uint32_field(4)
      reactor: int = betterproto.fixed64_field(5)
      reaction_type: "EChatRoomMessageReactionType" = betterproto.enum_field(6)
      reaction: str = betterproto.string_field(7)
      is_add: bool = betterproto.bool_field(8)
  
  
  @dataclass(eq=False, repr=False)
  class UsabilityClientUsabilityMetricsNotification(betterproto.Message):
      metrics_run_id: int = betterproto.uint32_field(1)
      client_build: int = betterproto.uint32_field(2)
      metrics_version: int = betterproto.uint32_field(3)
      in_web: bool = betterproto.bool_field(4)
      settings: "UsabilityClientUsabilityMetricsNotificationSettings" = betterproto.message_field(10)
      voice_settings: "UsabilityClientUsabilityMetricsNotificationVoiceSettings" = betterproto.message_field(11)
      ui_state: "UsabilityClientUsabilityMetricsNotificationUiState" = betterproto.message_field(12)
      metrics: "UsabilityClientUsabilityMetricsNotificationMetrics" = betterproto.message_field(13)
  
  
  @dataclass(eq=False, repr=False)
  class UsabilityClientUsabilityMetricsNotificationSettings(betterproto.Message):
      notifications_show_ingame: bool = betterproto.bool_field(1)
      notifications_show_online: bool = betterproto.bool_field(2)
      notifications_show_message: bool = betterproto.bool_field(3)
      notifications_events_and_announcements: bool = betterproto.bool_field(4)
      sounds_play_ingame: bool = betterproto.bool_field(5)
      sounds_play_online: bool = betterproto.bool_field(6)
      sounds_play_message: bool = betterproto.bool_field(7)
      sounds_events_and_announcements: bool = betterproto.bool_field(8)
      always_new_chat_window: bool = betterproto.bool_field(9)
      force_alphabetic_friend_sorting: bool = betterproto.bool_field(10)
      chat_flash_mode: int = betterproto.int32_field(11)
      remember_open_chats: bool = betterproto.bool_field(12)
      compact_quick_access: bool = betterproto.bool_field(13)
      compact_friends_list: bool = betterproto.bool_field(14)
      notifications_show_chat_room_notification: bool = betterproto.bool_field(15)
      sounds_play_chat_room_notification: bool = betterproto.bool_field(16)
      hide_offline_friends_in_tag_groups: bool = betterproto.bool_field(17)
      hide_categorized_friends: bool = betterproto.bool_field(18)
      categorize_in_game_friends_by_game: bool = betterproto.bool_field(19)
      chat_font_size: int = betterproto.int32_field(20)
      use24_hour_clock: bool = betterproto.bool_field(21)
      do_not_disturb_mode: bool = betterproto.bool_field(22)
      disable_embed_inlining: bool = betterproto.bool_field(23)
      sign_into_friends: bool = betterproto.bool_field(24)
      animated_avatars: bool = betterproto.bool_field(25)
  
  
  @dataclass(eq=False, repr=False)
  class UsabilityClientUsabilityMetricsNotificationVoiceSettings(betterproto.Message):
      voice_input_gain: float = betterproto.float_field(1)
      voice_output_gain: float = betterproto.float_field(2)
      noise_gate_level: int = betterproto.int32_field(3)
      voice_use_echo_cancellation: bool = betterproto.bool_field(4)
      voice_use_noise_cancellation: bool = betterproto.bool_field(5)
      voice_use_auto_gain_control: bool = betterproto.bool_field(6)
      selected_non_default_mic: bool = betterproto.bool_field(7)
      selected_non_default_output: bool = betterproto.bool_field(8)
      push_to_talk_enabled: bool = betterproto.bool_field(9)
      push_to_mute_enabled: bool = betterproto.bool_field(10)
      play_ptt_sounds: bool = betterproto.bool_field(11)
  
  
  @dataclass(eq=False, repr=False)
  class UsabilityClientUsabilityMetricsNotificationUiState(betterproto.Message):
      friends_list_height: int = betterproto.int32_field(1)
      friends_list_width: int = betterproto.int32_field(2)
      friends_list_docked: bool = betterproto.bool_field(3)
      friends_list_collapsed: bool = betterproto.bool_field(4)
      friends_list_group_chats_height: int = betterproto.int32_field(5)
      friends_list_visible: bool = betterproto.bool_field(6)
      chat_popups_opened: int = betterproto.int32_field(7)
      group_chat_tabs_opened: int = betterproto.int32_field(8)
      friend_chat_tabs_opened: int = betterproto.int32_field(9)
      chat_window_width: int = betterproto.int32_field(10)
      chat_window_height: int = betterproto.int32_field(11)
      category_collapse: "UsabilityClientUsabilityMetricsNotificationUiStateCategoryCollapseState" = (
          betterproto.message_field(12)
      )
      group_chat_left_col_collapsed: int = betterproto.int32_field(13)
      group_chat_right_col_collapsed: int = betterproto.int32_field(14)
      in_one_on_one_voice_chat: bool = betterproto.bool_field(15)
      in_group_voice_chat: bool = betterproto.bool_field(16)
  
  
  @dataclass(eq=False, repr=False)
  class UsabilityClientUsabilityMetricsNotificationUiStateCategoryCollapseState(betterproto.Message):
      in_game_collapsed: bool = betterproto.bool_field(1)
      online_collapsed: bool = betterproto.bool_field(2)
      offline_collapsed: bool = betterproto.bool_field(3)
      game_groups_collapsed: int = betterproto.int32_field(4)
      categories_collapsed: int = betterproto.int32_field(5)
  
  
  @dataclass(eq=False, repr=False)
  class UsabilityClientUsabilityMetricsNotificationMetrics(betterproto.Message):
      friends_count: int = betterproto.int32_field(1)
      friends_category_count: int = betterproto.int32_field(2)
      friends_categorized_count: int = betterproto.int32_field(3)
      friends_online_count: int = betterproto.int32_field(4)
      friends_in_game_count: int = betterproto.int32_field(5)
      friends_in_game_singleton_count: int = betterproto.int32_field(6)
      game_group_count: int = betterproto.int32_field(7)
      friends_favorite_count: int = betterproto.int32_field(8)
      group_chat_count: int = betterproto.int32_field(9)
      group_chat_favorite_count: int = betterproto.int32_field(10)
  
  
  @dataclass(eq=False, repr=False)
  class UsabilityRequestClientUsabilityMetricsNotification(betterproto.Message):
      metrics_run_id: int = betterproto.uint32_field(1)
  