# 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)
