# Generated by the protocol buffer compiler.  DO NOT EDIT!
# sources: tf_gcmessages.proto
# plugin: python-betterproto
# Last updated

from dataclasses import dataclass
from typing import TYPE_CHECKING

import betterproto

if TYPE_CHECKING:
    from .base import Item


class EtfMatchGroup(betterproto.Enum):
    Invalid = -1
    MvMPractice = 0
    MvMMannUp = 1
    First = 0
    MvMDefault = 0
    MvMFirst = 0
    MvMLast = 1
    Ladder6v6 = 2
    Ladder9v9 = 3
    Ladder12v12 = 4
    LadderDefault = 2
    LadderFirst = 2
    LadderLast = 4
    Casual6v6 = 5
    Casual9v9 = 6
    Casual12v12 = 7
    CasualDefault = 7
    CasualFirst = 5
    CasualLast = 7
    EventPlaceholder = 8
    EventDefault = 8
    EventFirst = 8
    EventLast = 8


class ETFPartyChatType(betterproto.Enum):
    Invalid = 0
    MemberChat = 1
    SyntheticMemberJoin = 1000
    SyntheticMemberLeave = 1001
    SyntheticSendFailed = 1002
    SyntheticMemberOnline = 1003
    SyntheticMemberOffline = 1004


@dataclass(eq=False, repr=False)
class SaxxyBroadcast(betterproto.Message):
    category_number: int = betterproto.int32_field(1)
    user_name: str = betterproto.string_field(2)


@dataclass(eq=False, repr=False)
class SpecificItemBroadcast(betterproto.Message):
    item_def_index: int = betterproto.uint32_field(1)
    was_destruction: bool = betterproto.bool_field(2)
    user_name: str = betterproto.string_field(3)


@dataclass(eq=False, repr=False)
class WorldStatus(betterproto.Message):
    beta_stress_test_event_active: bool = betterproto.bool_field(1)
    event_match_group: "EtfMatchGroup" = betterproto.enum_field(2)
    event_expire_time: int = betterproto.fixed32_field(3)
    active_client_version: int = betterproto.uint32_field(4)
    disabled_match_groups: "list[EtfMatchGroup]" = betterproto.enum_field(5)


@dataclass(eq=False, repr=False)
class DuelSummary(betterproto.Message):
    account_id: int = betterproto.uint32_field(1)
    duel_wins: int = betterproto.uint32_field(2)
    duel_losses: int = betterproto.uint32_field(3)
    last_duel_account_id: int = betterproto.uint32_field(4)
    last_duel_timestamp: int = betterproto.uint32_field(5)
    last_duel_status: int = betterproto.uint32_field(6)


@dataclass(eq=False, repr=False)
class MapContribution(betterproto.Message):
    account_id: int = betterproto.uint32_field(1)
    def_index: int = betterproto.uint32_field(2)
    contribution_level: int = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class FreeTrialChooseMostHelpfulFriend(betterproto.Message):
    account_id_friend: int = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class RequestTF2Friends(betterproto.Message):
    account_ids: list[int] = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class RequestTF2FriendsResponse(betterproto.Message):
    account_ids: list[int] = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class PlayerInfo(betterproto.Message):
    num_new_users_helped: int = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class ThankedBySomeone(betterproto.Message):
    thanker_steam_id: int = betterproto.uint64_field(1)


@dataclass(eq=False, repr=False)
class ThankedSomeone(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class FreeTrialConvertedToPremium(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class SaxxyAwarded(betterproto.Message):
    category: int = betterproto.uint32_field(1)
    winner_names: list[str] = betterproto.string_field(2)


@dataclass(eq=False, repr=False)
class ReplaySubmitContestEntry(betterproto.Message):
    youtube_url: str = betterproto.string_field(1)
    category: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class ReplaySubmitContestEntryResponse(betterproto.Message):
    success: bool = betterproto.bool_field(1)


@dataclass(eq=False, repr=False)
class ReplayCachedContestData(betterproto.Message):
    timestamp: int = betterproto.fixed32_field(1)
    num_votes_last_day: int = betterproto.uint32_field(2)
    video_entry_ids: list[int] = betterproto.uint32_field(3)
    num_flags_last_day: int = betterproto.uint32_field(4)


@dataclass(eq=False, repr=False)
class CoachingAddToCoaches(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class CoachingRemoveFromCoaches(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class CoachingFindCoach(betterproto.Message):
    account_id_friend_as_coach: int = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class CoachingFindCoachResponse(betterproto.Message):
    found_coach: bool = betterproto.bool_field(1)
    num_likes: int = betterproto.uint32_field(2)
    coach_name: str = betterproto.string_field(3)


@dataclass(eq=False, repr=False)
class CoachingAskCoach(betterproto.Message):
    account_id_student: int = betterproto.uint32_field(1)
    student_is_friend: bool = betterproto.bool_field(2)


@dataclass(eq=False, repr=False)
class CoachingAskCoachResponse(betterproto.Message):
    accept_coaching_assignment: bool = betterproto.bool_field(1)


@dataclass(eq=False, repr=False)
class CoachingCoachJoinGame(betterproto.Message):
    join_game: bool = betterproto.bool_field(1)
    server_address: int = betterproto.uint32_field(2)
    server_port: int = betterproto.uint32_field(3)
    account_id_student: int = betterproto.uint32_field(4)


@dataclass(eq=False, repr=False)
class CoachingCoachJoining(betterproto.Message):
    account_id_coach: int = betterproto.uint32_field(1)
    account_id_student: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class CoachingCoachJoined(betterproto.Message):
    account_id_coach: int = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class CoachingLikeCurrentCoach(betterproto.Message):
    like_coach: bool = betterproto.bool_field(1)


@dataclass(eq=False, repr=False)
class CoachingRemoveCurrentCoach(betterproto.Message):
    account_id_coach: int = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class QuickplayScoreServers(betterproto.Message):
    servers: "list[QuickplayScoreServersServerInfo]" = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class QuickplayScoreServersServerInfo(betterproto.Message):
    server_address: int = betterproto.uint32_field(1)
    server_port: int = betterproto.uint32_field(2)
    num_users: int = betterproto.uint32_field(3)
    steam_id: int = betterproto.uint64_field(4)
    max_users: int = betterproto.uint32_field(5)
    user_score: float = betterproto.float_field(6)


@dataclass(eq=False, repr=False)
class QuickplayScoreServersResponse(betterproto.Message):
    servers: "list[QuickplayScoreServersResponseServerInfo]" = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class QuickplayScoreServersResponseServerInfo(betterproto.Message):
    server_address: int = betterproto.uint32_field(1)
    server_port: int = betterproto.uint32_field(2)
    total_score: float = betterproto.float_field(3)
    steam_id: int = betterproto.uint64_field(4)
    options_score: int = betterproto.uint32_field(5)


@dataclass(eq=False, repr=False)
class QuickplayPlayerJoining(betterproto.Message):
    account_id: int = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class ServerLevelInfo(betterproto.Message):
    level_loaded: bool = betterproto.bool_field(1)
    level_name: str = betterproto.string_field(2)


@dataclass(eq=False, repr=False)
class ServerAuthChallenge(betterproto.Message):
    challenge_string: str = betterproto.string_field(1)


@dataclass(eq=False, repr=False)
class ServerAuthResult(betterproto.Message):
    authenticated: bool = betterproto.bool_field(1)
    game_server_standing: int = betterproto.int32_field(2)
    game_server_standing_trend: int = betterproto.int32_field(3)
    is_valve_server: bool = betterproto.bool_field(4)
    message: str = betterproto.string_field(5)


@dataclass(eq=False, repr=False)
class ServerAuthChallengeResponse(betterproto.Message):
    game_server_account_id: int = betterproto.uint32_field(1)
    hashed_challenge_string: bytes = betterproto.bytes_field(2)


@dataclass(eq=False, repr=False)
class ServerCreateIdentity(betterproto.Message):
    account_id: int = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class ServerCreateIdentityResponse(betterproto.Message):
    account_created: bool = betterproto.bool_field(1)
    game_server_account_id: int = betterproto.uint32_field(2)
    game_server_identity_token: str = betterproto.string_field(3)


@dataclass(eq=False, repr=False)
class ServerList(betterproto.Message):
    account_id: int = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class ServerListResponse(betterproto.Message):
    owned_game_servers: "list[ServerListResponseGameServerIdentity]" = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class ServerListResponseGameServerIdentity(betterproto.Message):
    game_server_account_id: int = betterproto.uint32_field(1)
    game_server_identity_token: str = betterproto.string_field(2)
    game_server_standing: int = betterproto.int32_field(3)
    game_server_standing_trend: int = betterproto.int32_field(4)


@dataclass(eq=False, repr=False)
class ServerResetIdentity(betterproto.Message):
    game_server_account_id: int = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class ServerResetIdentityResponse(betterproto.Message):
    game_server_identity_token_reset: bool = betterproto.bool_field(1)
    game_server_account_id: int = betterproto.uint32_field(2)
    game_server_identity_token: str = betterproto.string_field(3)


@dataclass(eq=False, repr=False)
class ServerAckPolicy(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class ServerAckPolicyResponse(betterproto.Message):
    result: int = betterproto.uint32_field(1)
    message: str = betterproto.string_field(2)


@dataclass(eq=False, repr=False)
class ClientUseServerModificationItem(betterproto.Message):
    item_id: int = betterproto.uint64_field(1)


@dataclass(eq=False, repr=False)
class HalloweenReservedItem(betterproto.Message):
    x: list[float] = betterproto.float_field(1)
    y: list[float] = betterproto.float_field(2)
    z: list[float] = betterproto.float_field(3)
    spawn_meta_info: int = betterproto.uint32_field(7)


@dataclass(eq=False, repr=False)
class HalloweenGrantItem(betterproto.Message):
    recipient_account_id: int = betterproto.uint32_field(1)
    level_id: int = betterproto.uint32_field(2)
    flagged: bool = betterproto.bool_field(3)


@dataclass(eq=False, repr=False)
class HalloweenGrantItemResponse(betterproto.Message):
    recipient_account_id: int = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class HalloweenItemClaimed(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class PickupItemEligibilityQuery(betterproto.Message):
    account_id: int = betterproto.uint32_field(1)
    seconds_ago: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class PickupItemEligibilityQueryResponse(betterproto.Message):
    account_id: int = betterproto.uint32_field(1)
    was_eligible: bool = betterproto.bool_field(2)
    level_id: int = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class PartyMember(betterproto.Message):
    owns_ticket: bool = betterproto.bool_field(2)
    completed_missions: int = betterproto.uint32_field(3)
    badge_level: int = betterproto.uint32_field(4)
    competitive_access: bool = betterproto.bool_field(9)
    experience: int = betterproto.uint32_field(14)
    player_criteria: "PerPlayerMatchCriteriaProto" = betterproto.message_field(16)
    activity: "PartyMemberActivity" = betterproto.message_field(17)
    casual_banned: bool = betterproto.bool_field(18)
    ranked_banned: bool = betterproto.bool_field(19)
    casual_low_priority: bool = betterproto.bool_field(20)
    ranked_low_priority: bool = betterproto.bool_field(21)
    lobby_standby: bool = betterproto.bool_field(22)


@dataclass(eq=False, repr=False)
class PartyMemberActivity(betterproto.Message):
    lobby_id: int = betterproto.fixed64_field(1)
    lobby_match_group: "EtfMatchGroup" = betterproto.enum_field(2)
    multiqueue_blocked: bool = betterproto.bool_field(3)
    online: bool = betterproto.bool_field(4)
    client_version: int = betterproto.uint32_field(5)


@dataclass(eq=False, repr=False)
class TFPendingPartyMember(betterproto.Message):
    steamid: int = betterproto.fixed64_field(1)
    inviter: int = betterproto.fixed64_field(3)


@dataclass(eq=False, repr=False)
class GroupMatchCriteriaProto(betterproto.Message):
    late_join_ok: bool = betterproto.bool_field(5)
    custom_ping_tolerance: int = betterproto.uint32_field(13)
    mvm_mannup_tour: str = betterproto.string_field(10)
    mvm_mannup_missions: list[str] = betterproto.string_field(15)
    mvm_bootcamp_missions: list[str] = betterproto.string_field(16)
    casual_criteria: "CasualMatchCriteria" = betterproto.message_field(12)


@dataclass(eq=False, repr=False)
class CasualMatchCriteria(betterproto.Message):
    selected_maps_bits: list[int] = betterproto.fixed32_field(3)


@dataclass(eq=False, repr=False)
class PerPlayerMatchCriteriaProto(betterproto.Message):
    mvm_squad_surplus: bool = betterproto.bool_field(1)


@dataclass(eq=False, repr=False)
class PartyOptions(betterproto.Message):
    overwrite_existing: bool = betterproto.bool_field(1)
    group_criteria: "GroupMatchCriteriaProto" = betterproto.message_field(2)
    player_criteria: "PerPlayerMatchCriteriaProto" = betterproto.message_field(3)


@dataclass(eq=False, repr=False)
class PartySetOptions(betterproto.Message):
    party_id: int = betterproto.fixed64_field(1)
    options: "PartyOptions" = betterproto.message_field(2)


@dataclass(eq=False, repr=False)
class PartySetOptionsResponse(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class PartyQueueForMatch(betterproto.Message):
    party_id: int = betterproto.fixed64_field(1)
    final_options: "PartyOptions" = betterproto.message_field(2)
    match_group: "EtfMatchGroup" = betterproto.enum_field(3)


@dataclass(eq=False, repr=False)
class PartyQueueForMatchResponse(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class PartyQueueForStandby(betterproto.Message):
    party_id: int = betterproto.fixed64_field(1)
    party_lobby_id: int = betterproto.fixed64_field(2)


@dataclass(eq=False, repr=False)
class PartyQueueForStandbyResponse(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class PartyRemoveFromQueue(betterproto.Message):
    party_id: int = betterproto.fixed64_field(1)
    match_group: "EtfMatchGroup" = betterproto.enum_field(2)


@dataclass(eq=False, repr=False)
class PartyRemoveFromQueueResponse(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class PartyRemoveFromStandbyQueue(betterproto.Message):
    party_id: int = betterproto.fixed64_field(1)


@dataclass(eq=False, repr=False)
class PartyRemoveFromStandbyQueueResponse(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class PartyInvitePlayer(betterproto.Message):
    party_id: int = betterproto.fixed64_field(1)
    player_id: int = betterproto.fixed64_field(2)
    expecting_request_to_join: bool = betterproto.bool_field(3)


@dataclass(eq=False, repr=False)
class PartyRequestJoinPlayer(betterproto.Message):
    current_party_id: int = betterproto.fixed64_field(1)
    join_player_id: int = betterproto.fixed64_field(2)
    join_party_id: int = betterproto.fixed64_field(3)
    expecting_invite: bool = betterproto.bool_field(4)


@dataclass(eq=False, repr=False)
class PartyClearPendingPlayer(betterproto.Message):
    party_id: int = betterproto.fixed64_field(1)
    pending_player_id: int = betterproto.fixed64_field(2)


@dataclass(eq=False, repr=False)
class PartyClearPendingPlayerResponse(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class PartyClearOtherPartyRequest(betterproto.Message):
    other_party_id: int = betterproto.fixed64_field(1)


@dataclass(eq=False, repr=False)
class PartyClearOtherPartyRequestResponse(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class PartyPromoteToLeader(betterproto.Message):
    party_id: int = betterproto.fixed64_field(1)
    new_leader_id: int = betterproto.fixed64_field(2)


@dataclass(eq=False, repr=False)
class PartyKickMember(betterproto.Message):
    party_id: int = betterproto.fixed64_field(1)
    target_id: int = betterproto.fixed64_field(2)


@dataclass(eq=False, repr=False)
class PartySendChat(betterproto.Message):
    party_id: int = betterproto.fixed64_field(1)
    msg: str = betterproto.string_field(2)


@dataclass(eq=False, repr=False)
class PartyChatMsg(betterproto.Message):
    type: "ETFPartyChatType" = betterproto.enum_field(1)
    actor_id: int = betterproto.fixed64_field(2)
    msg: str = betterproto.string_field(3)


@dataclass(eq=False, repr=False)
class Party(betterproto.Message):
    party_id: int = betterproto.uint64_field(1)
    leader_id: int = betterproto.fixed64_field(2)
    member_ids: list[int] = betterproto.fixed64_field(3)
    members: "list[PartyMember]" = betterproto.message_field(13)
    associated_lobby_id: int = betterproto.uint64_field(35)
    associated_lobby_match_group: "EtfMatchGroup" = betterproto.enum_field(40)
    matchmaking_queues: "list[PartyQueueEntry]" = betterproto.message_field(43)
    group_criteria: "GroupMatchCriteriaProto" = betterproto.message_field(37)
    casual_banned_time: int = betterproto.uint32_field(18)
    casual_low_priority_time: int = betterproto.uint32_field(20)
    ranked_banned_time: int = betterproto.uint32_field(41)
    ranked_low_priority_time: int = betterproto.uint32_field(42)
    pending_members: "list[TFPendingPartyMember]" = betterproto.message_field(39)


@dataclass(eq=False, repr=False)
class PartyQueueEntry(betterproto.Message):
    match_group: "EtfMatchGroup" = betterproto.enum_field(1)
    queued_time: int = betterproto.fixed32_field(2)


@dataclass(eq=False, repr=False)
class PartyInvite(betterproto.Message):
    group_id: int = betterproto.uint64_field(1)
    inviter: int = betterproto.fixed64_field(2)
    members: "list[PartyInvitePartyMember]" = betterproto.message_field(4)


@dataclass(eq=False, repr=False)
class PartyInvitePartyMember(betterproto.Message):
    steamid: int = betterproto.fixed64_field(2)


@dataclass(eq=False, repr=False)
class LobbyPlayerProto(betterproto.Message):
    id: int = betterproto.fixed64_field(1)
    name: str = betterproto.string_field(6)
    original_party_id: int = betterproto.uint64_field(12)
    squad_surplus: bool = betterproto.bool_field(14)
    badge_level: int = betterproto.uint32_field(15)
    last_connect_time: int = betterproto.uint32_field(17)
    normalized_rating: float = betterproto.double_field(20)
    normalized_uncertainty: float = betterproto.double_field(22)
    rank: int = betterproto.uint32_field(21)
    chat_suspension: bool = betterproto.bool_field(23)


@dataclass(eq=False, repr=False)
class LobbyInviteProto(betterproto.Message):
    lobby_id: int = betterproto.fixed64_field(1)
    match_group: "EtfMatchGroup" = betterproto.enum_field(2)


@dataclass(eq=False, repr=False)
class GameServerLobby(betterproto.Message):
    lobby_id: int = betterproto.uint64_field(1)
    members: "list[LobbyPlayerProto]" = betterproto.message_field(2)
    server_id: int = betterproto.fixed64_field(6)
    connect: str = betterproto.string_field(5)
    initial_average_mm_rating: float = betterproto.double_field(32)
    mannup_tour_name: str = betterproto.string_field(42)
    map_name: str = betterproto.string_field(38)
    mission_name: str = betterproto.string_field(39)
    match_group: int = betterproto.uint32_field(41)
    match_id: int = betterproto.uint64_field(30)
    formed_time: int = betterproto.uint32_field(36)
    flags: int = betterproto.uint32_field(43)
    late_join_eligible: bool = betterproto.bool_field(44)
    fixed_match_size: int = betterproto.uint32_field(45)
    next_maps_for_vote: list[int] = betterproto.uint32_field(47)
    lobby_mm_version: int = betterproto.uint32_field(48)
    pending_members: "list[LobbyPlayerProto]" = betterproto.message_field(49)


@dataclass(eq=False, repr=False)
class ExitMatchmaking(betterproto.Message):
    explicit_abandon: bool = betterproto.bool_field(1)
    party_id: int = betterproto.uint64_field(2)
    lobby_id: int = betterproto.uint64_field(3)


@dataclass(eq=False, repr=False)
class AcceptLobbyInvite(betterproto.Message):
    invited_lobby_id: int = betterproto.uint64_field(1)
    abandoning_match_id: int = betterproto.uint64_field(2)
    abandoning_invite_lobby_ids: list[int] = betterproto.uint64_field(3)


@dataclass(eq=False, repr=False)
class AcceptLobbyInviteReply(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class MatchmakingSearchCountRequest(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class MatchmakingSearchCountResponse(betterproto.Message):
    searching_players_by_group: list[int] = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class KickedFromMatchmakingQueue(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class GameServerMatchmakingStatus(betterproto.Message):
    server_version: int = betterproto.uint32_field(16)
    map: str = betterproto.string_field(3)
    tags: str = betterproto.string_field(4)
    bot_count: int = betterproto.uint32_field(5)
    num_spectators: int = betterproto.uint32_field(6)
    max_players: int = betterproto.uint32_field(7)
    slots_free: int = betterproto.uint32_field(8)
    server_region: int = betterproto.uint32_field(9)
    server_loadavg: float = betterproto.float_field(10)
    server_trusted: bool = betterproto.bool_field(11)
    server_dedicated: bool = betterproto.bool_field(12)
    strict: int = betterproto.uint32_field(17)
    players: "list[GameServerMatchmakingStatusPlayer]" = betterproto.message_field(13)
    mvm_wave: int = betterproto.uint32_field(18)
    mvm_credits_acquired: int = betterproto.uint32_field(19)
    mvm_credits_dropped: int = betterproto.uint32_field(20)
    match_group: int = betterproto.sint32_field(23)
    lobby_mm_version: int = betterproto.uint32_field(24)


@dataclass(eq=False, repr=False)
class GameServerMatchmakingStatusPlayer(betterproto.Message):
    steam_id: int = betterproto.fixed64_field(1)


@dataclass(eq=False, repr=False)
class MatchmakingProgress(betterproto.Message):
    avg_wait_time_new: int = betterproto.uint32_field(4)
    avg_wait_time_join_late: int = betterproto.uint32_field(5)
    your_wait_time: int = betterproto.uint32_field(6)
    matching_worldwide_searching_players: int = betterproto.uint32_field(8)
    matching_near_you_searching_players: int = betterproto.uint32_field(9)
    total_worldwide_searching_players: int = betterproto.uint32_field(13)
    total_near_you_searching_players: int = betterproto.uint32_field(14)
    matching_worldwide_active_players: int = betterproto.uint32_field(15)
    matching_near_you_active_players: int = betterproto.uint32_field(16)
    total_worldwide_active_players: int = betterproto.uint32_field(17)
    total_near_you_active_players: int = betterproto.uint32_field(18)
    matching_worldwide_empty_gameservers: int = betterproto.uint32_field(19)
    matching_near_you_empty_gameservers: int = betterproto.uint32_field(20)
    total_worldwide_empty_gameservers: int = betterproto.uint32_field(21)
    total_near_you_empty_gameservers: int = betterproto.uint32_field(22)
    urgency_pct: int = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class MvMVictoryInfo(betterproto.Message):
    players: "list[MvMVictoryInfoPlayer]" = betterproto.message_field(1)
    tour_name: str = betterproto.string_field(2)
    mission_name: str = betterproto.string_field(3)


@dataclass(eq=False, repr=False)
class MvMVictoryInfoItem(betterproto.Message):
    item_data: bytes = betterproto.bytes_field(2)
    squad_surplus_claimer_steam_id: int = betterproto.fixed64_field(3)


@dataclass(eq=False, repr=False)
class MvMVictoryInfoPlayer(betterproto.Message):
    steam_id: int = betterproto.fixed64_field(1)
    badge_granted: bool = betterproto.bool_field(3)
    badge_progress_updated: bool = betterproto.bool_field(4)
    badge_leveled: bool = betterproto.bool_field(5)
    badge_level: int = betterproto.uint32_field(6)
    badge_progress_bits: int = betterproto.uint32_field(7)
    items: "list[MvMVictoryInfoItem]" = betterproto.message_field(8)
    voucher_missing: bool = betterproto.bool_field(9)
    badge_points: int = betterproto.uint32_field(10)


@dataclass(eq=False, repr=False)
class CgHelloResponse(betterproto.Message):
    version_check: int = betterproto.uint32_field(1)
    version_checksum: list[int] = betterproto.uint64_field(2)
    version_verbose: int = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class CgSync(betterproto.Message):
    version_checksum: bytes = betterproto.bytes_field(1)
    version_check: int = betterproto.uint32_field(2)
    version_check_ex: int = betterproto.uint32_field(3)
    version_check_ex2: int = betterproto.uint32_field(4)
    version_checksum_ex: bytes = betterproto.bytes_field(5)


@dataclass(eq=False, repr=False)
class CgSyncEx(betterproto.Message):
    version_checksum: str = betterproto.string_field(1)
    version_checksum_ex: bytes = betterproto.bytes_field(2)
    version_check: int = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class MvMVictory(betterproto.Message):
    legacy_mission_index: int = betterproto.uint32_field(1)
    tour_name_mannup: str = betterproto.string_field(5)
    mission_name: str = betterproto.string_field(6)
    players: "list[MvMVictoryPlayer]" = betterproto.message_field(2)
    lobby_id: int = betterproto.uint64_field(3)
    event_time: int = betterproto.fixed32_field(4)


@dataclass(eq=False, repr=False)
class MvMVictoryPlayer(betterproto.Message):
    steam_id: int = betterproto.fixed64_field(1)
    squad_surplus: bool = betterproto.bool_field(2)


@dataclass(eq=False, repr=False)
class MvMMannUpVictoryReply(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class GameServerKickingLobby(betterproto.Message):
    lobby_id: int = betterproto.uint64_field(3)
    match_id: int = betterproto.uint64_field(4)


@dataclass(eq=False, repr=False)
class GameServerKickingLobbyResponse(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class LeaveGameAndPrepareToJoinParty(betterproto.Message):
    party_id: int = betterproto.fixed64_field(1)


@dataclass(eq=False, repr=False)
class PlayerLeftMatch(betterproto.Message):
    steam_id: int = betterproto.fixed64_field(1)
    was_abandon: bool = betterproto.bool_field(3)
    lobby_id: int = betterproto.uint64_field(4)
    match_id: int = betterproto.uint64_field(5)
    xp_breakdown: "list[XPSource]" = betterproto.message_field(6)


@dataclass(eq=False, repr=False)
class PlayerLeftMatchResponse(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class PlayerVoteKickedAfterLeavingMatchResponse(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class HalloweenServerBossEvent(betterproto.Message):
    event_counter: int = betterproto.uint32_field(1)
    timestamp: int = betterproto.uint32_field(2)
    boss_type: int = betterproto.uint32_field(3)
    boss_level: int = betterproto.uint32_field(4)
    event_type: int = betterproto.uint32_field(5)
    players_involved: int = betterproto.uint32_field(6)
    elapsed_time: float = betterproto.float_field(7)


@dataclass(eq=False, repr=False)
class CAttributeString(betterproto.Message):
    value: str = betterproto.string_field(1)


@dataclass(eq=False, repr=False)
class CAttributeDynamicRecipeComponent(betterproto.Message):
    def_index: int = betterproto.uint32_field(1)
    item_quality: int = betterproto.uint32_field(2)
    component_flags: int = betterproto.uint32_field(3)
    attributes_string: str = betterproto.string_field(4)
    num_required: int = betterproto.uint32_field(5)
    num_fulfilled: int = betterproto.uint32_field(6)


@dataclass(eq=False, repr=False)
class CAttributeDynamicRecipeComponentCompatNeverSerializeThisOut(betterproto.Message):
    def_index: int = betterproto.uint32_field(1)
    item_def: int = betterproto.uint32_field(2)
    item_quality: int = betterproto.uint32_field(3)
    component_flags: int = betterproto.uint32_field(4)
    item_flags: int = betterproto.uint32_field(5)
    attributes_string: str = betterproto.string_field(6)
    num_required: int = betterproto.uint32_field(7)
    item_count: int = betterproto.uint32_field(8)
    num_fulfilled: int = betterproto.uint32_field(9)
    items_fulfilled: int = betterproto.uint32_field(10)


@dataclass(eq=False, repr=False)
class CAttributeItemSlotCriteria(betterproto.Message):
    tags: str = betterproto.string_field(1)


@dataclass(eq=False, repr=False)
class SetItemSlotAttribute(betterproto.Message):
    item_id: int = betterproto.uint64_field(1)
    slot_item_original_id: int = betterproto.uint64_field(2)
    slot_index: int = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class CsoWarData(betterproto.Message):
    account_id: int = betterproto.uint32_field(1)
    war_id: int = betterproto.uint32_field(2)
    affiliation: int = betterproto.uint32_field(3)
    points_scored: int = betterproto.uint32_field(4)


@dataclass(eq=False, repr=False)
class CgGcWarIndividualUpdate(betterproto.Message):
    steam_id: int = betterproto.fixed64_field(1)
    war_id: int = betterproto.uint32_field(2)
    score: int = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class CgGcWarJoinWar(betterproto.Message):
    affiliation: int = betterproto.uint32_field(1)
    war_id: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class CgGcWarRequestGlobalStats(betterproto.Message):
    war_id: int = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class CgGcWarGlobalStatsResponse(betterproto.Message):
    side_scores: "list[CgGcWarGlobalStatsResponseSideScore]" = betterproto.message_field(1)
    war_id: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class CgGcWarGlobalStatsResponseSideScore(betterproto.Message):
    side: int = betterproto.uint32_field(1)
    score: int = betterproto.uint64_field(2)


@dataclass(eq=False, repr=False)
class CgGcPlayerDuckLeaderboardIndividualUpdate(betterproto.Message):
    score: int = betterproto.uint32_field(2)
    type: int = betterproto.uint32_field(3)
    score_id: bytes = betterproto.bytes_field(4)
    score_check: int = betterproto.uint32_field(5)


@dataclass(eq=False, repr=False)
class CAttributeWorldItemPlacement(betterproto.Message):
    original_item_id: int = betterproto.uint64_field(1)
    pos_x: float = betterproto.float_field(2)
    pos_y: float = betterproto.float_field(3)
    pos_z: float = betterproto.float_field(4)
    ang_x: float = betterproto.float_field(5)
    ang_y: float = betterproto.float_field(6)
    ang_z: float = betterproto.float_field(7)


@dataclass(eq=False, repr=False)
class CgWorldItemPlacementUpdate(betterproto.Message):
    original_item_id: int = betterproto.uint64_field(1)
    pos_x: float = betterproto.float_field(2)
    pos_y: float = betterproto.float_field(3)
    pos_z: float = betterproto.float_field(4)
    ang_x: float = betterproto.float_field(5)
    ang_y: float = betterproto.float_field(6)
    ang_z: float = betterproto.float_field(7)
    force_remove_all: bool = betterproto.bool_field(8)
    attrib_name: str = betterproto.string_field(9)


@dataclass(eq=False, repr=False)
class AcknowledgeXp(betterproto.Message):
    match_group: int = betterproto.int32_field(1)
    predicted_experience: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class XPSource(betterproto.Message):
    amount: int = betterproto.int32_field(2)
    match_group: int = betterproto.int32_field(3)
    account_id: int = betterproto.uint32_field(4)
    match_id: int = betterproto.uint64_field(5)


@dataclass(eq=False, repr=False)
class XPSourceBreakdown(betterproto.Message):
    sources: "list[XPSource]" = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class ClientInit(betterproto.Message):
    client_version: int = betterproto.uint32_field(1)
    language: int = betterproto.int32_field(2)


@dataclass(eq=False, repr=False)
class Notification(betterproto.Message):
    notification_id: int = betterproto.uint64_field(1)
    account_id: int = betterproto.uint32_field(2)
    expiration_time: int = betterproto.fixed32_field(3)
    notification_string: str = betterproto.string_field(5)


@dataclass(eq=False, repr=False)
class NotificationQueue(betterproto.Message):
    notifications: "list[Notification]" = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class NotificationAcknowledge(betterproto.Message):
    account_id: int = betterproto.uint32_field(1)
    notification_id: int = betterproto.uint64_field(2)


@dataclass(eq=False, repr=False)
class NotificationAcknowledgeReply(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class MatchResult(betterproto.Message):
    match_id: int = betterproto.uint64_field(1)
    match_group: int = betterproto.int32_field(2)
    duration: int = betterproto.uint32_field(4)
    red_score: int = betterproto.uint32_field(5)
    blue_score: int = betterproto.uint32_field(6)
    winning_team: int = betterproto.uint32_field(7)
    map_index: int = betterproto.uint32_field(8)
    game_type: int = betterproto.uint32_field(9)
    players: "list[MatchResultPlayer]" = betterproto.message_field(10)
    win_reason: int = betterproto.uint32_field(13)
    flags: int = betterproto.uint32_field(14)
    bots: int = betterproto.uint32_field(16)


@dataclass(eq=False, repr=False)
class MatchResultPlayer(betterproto.Message):
    steam_id: int = betterproto.fixed64_field(1)
    original_party_id: int = betterproto.uint64_field(2)
    team: int = betterproto.uint32_field(3)
    score: int = betterproto.uint32_field(4)
    ping: int = betterproto.uint32_field(5)
    flags: int = betterproto.uint32_field(6)
    rank: int = betterproto.uint32_field(9)
    classes_played: int = betterproto.uint32_field(10)
    kills: int = betterproto.uint32_field(11)
    deaths: int = betterproto.uint32_field(12)
    damage: int = betterproto.uint32_field(13)
    healing: int = betterproto.uint32_field(14)
    support: int = betterproto.uint32_field(15)
    score_medal: int = betterproto.uint32_field(16)
    kills_medal: int = betterproto.uint32_field(17)
    damage_medal: int = betterproto.uint32_field(18)
    healing_medal: int = betterproto.uint32_field(19)
    support_medal: int = betterproto.uint32_field(20)
    xp_breakdown: "list[XPSource]" = betterproto.message_field(21)
    leave_time: int = betterproto.uint32_field(22)
    connect_time: int = betterproto.uint32_field(24)


@dataclass(eq=False, repr=False)
class MatchResultResponse(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class PreviewDataBlock(betterproto.Message):
    econitem: "Item" = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class PreviewDataBlockRequest(betterproto.Message):
    param_s: int = betterproto.uint64_field(1)
    param_a: int = betterproto.uint64_field(2)
    param_d: int = betterproto.uint64_field(3)
    param_m: int = betterproto.uint64_field(4)


@dataclass(eq=False, repr=False)
class PreviewDataBlockResponse(betterproto.Message):
    iteminfo: "PreviewDataBlock" = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class LadderPlayerStats(betterproto.Message):
    account_id: int = betterproto.uint32_field(1)
    match_group: int = betterproto.int32_field(2)
    season_id: int = betterproto.uint32_field(3)
    games: int = betterproto.uint32_field(9)
    score: int = betterproto.uint32_field(10)
    kills: int = betterproto.uint32_field(11)
    deaths: int = betterproto.uint32_field(12)
    damage: int = betterproto.uint32_field(13)
    healing: int = betterproto.uint32_field(14)
    support: int = betterproto.uint32_field(15)
    score_bronze: int = betterproto.uint32_field(16)
    score_silver: int = betterproto.uint32_field(17)
    score_gold: int = betterproto.uint32_field(18)
    kills_bronze: int = betterproto.uint32_field(19)
    kills_silver: int = betterproto.uint32_field(20)
    kills_gold: int = betterproto.uint32_field(21)
    damage_bronze: int = betterproto.uint32_field(22)
    damage_silver: int = betterproto.uint32_field(23)
    damage_gold: int = betterproto.uint32_field(24)
    healing_bronze: int = betterproto.uint32_field(25)
    healing_silver: int = betterproto.uint32_field(26)
    healing_gold: int = betterproto.uint32_field(27)
    support_bronze: int = betterproto.uint32_field(28)
    support_silver: int = betterproto.uint32_field(29)
    support_gold: int = betterproto.uint32_field(30)


@dataclass(eq=False, repr=False)
class RatingData(betterproto.Message):
    account_id: int = betterproto.uint32_field(1)
    rating_type: int = betterproto.int32_field(2)
    rating_primary: int = betterproto.uint32_field(3)
    rating_secondary: int = betterproto.uint32_field(4)
    rating_tertiary: int = betterproto.uint32_field(5)


@dataclass(eq=False, repr=False)
class VoteKickPlayerRequest(betterproto.Message):
    target_id: int = betterproto.uint64_field(2)
    voter_id: int = betterproto.uint64_field(3)
    match_id: int = betterproto.uint64_field(5)


@dataclass(eq=False, repr=False)
class VoteKickPlayerRequestResponse(betterproto.Message):
    allowed: bool = betterproto.bool_field(1)
    voter_inhibit: bool = betterproto.bool_field(3)
    target_inhibit: bool = betterproto.bool_field(4)


@dataclass(eq=False, repr=False)
class DailyCompetitiveStatsRollup(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class DailyCompetitiveStatsRollupResponse(betterproto.Message):
    rankdata: "list[DailyCompetitiveStatsRollupResponseRankBucketEntry]" = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class DailyCompetitiveStatsRollupResponseRankBucketEntry(betterproto.Message):
    rank: int = betterproto.uint32_field(1)
    records: int = betterproto.uint32_field(2)
    avg_score: int = betterproto.uint32_field(3)
    stdev_score: int = betterproto.uint32_field(4)
    avg_kills: int = betterproto.uint32_field(5)
    stdev_kills: int = betterproto.uint32_field(6)
    avg_damage: int = betterproto.uint32_field(7)
    stdev_damage: int = betterproto.uint32_field(8)
    avg_healing: int = betterproto.uint32_field(9)
    stdev_healing: int = betterproto.uint32_field(10)
    avg_support: int = betterproto.uint32_field(11)
    stdev_support: int = betterproto.uint32_field(12)


@dataclass(eq=False, repr=False)
class ReportPlayer(betterproto.Message):
    account_id_target: int = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class MatchResultPlayerStats(betterproto.Message):
    match_id: int = betterproto.uint64_field(1)
    account_id: int = betterproto.uint32_field(2)
    match_group: int = betterproto.int32_field(3)
    endtime: int = betterproto.uint32_field(4)
    season_id: int = betterproto.uint32_field(5)
    status: int = betterproto.uint32_field(6)
    original_party_id: int = betterproto.uint32_field(7)
    team: int = betterproto.uint32_field(8)
    score: int = betterproto.uint32_field(9)
    ping: int = betterproto.uint32_field(10)
    flags: int = betterproto.uint32_field(11)
    display_rating: int = betterproto.uint32_field(12)
    display_rating_change: int = betterproto.int32_field(13)
    rank: int = betterproto.uint32_field(14)
    classes_played: int = betterproto.uint32_field(15)
    kills: int = betterproto.uint32_field(16)
    deaths: int = betterproto.uint32_field(17)
    damage: int = betterproto.uint32_field(18)
    healing: int = betterproto.uint32_field(19)
    support: int = betterproto.uint32_field(20)
    score_medal: int = betterproto.uint32_field(21)
    kills_medal: int = betterproto.uint32_field(22)
    damage_medal: int = betterproto.uint32_field(23)
    healing_medal: int = betterproto.uint32_field(24)
    support_medal: int = betterproto.uint32_field(25)
    map_index: int = betterproto.uint32_field(26)
    winning_team: int = betterproto.uint32_field(27)


@dataclass(eq=False, repr=False)
class RequestMatchMakerStats(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class DataCenterPopulation(betterproto.Message):
    name: str = betterproto.string_field(1)
    health_ratio: float = betterproto.float_field(2)


@dataclass(eq=False, repr=False)
class MatchGroupDataCenterPopulation(betterproto.Message):
    data_center_population: "list[DataCenterPopulation]" = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class MatchMakerStatsResponse(betterproto.Message):
    map_count: list[int] = betterproto.uint32_field(1)
    matchgroup_data_center_population: "list[MatchGroupDataCenterPopulation]" = betterproto.message_field(2)


@dataclass(eq=False, repr=False)
class MatchHistoryLoad(betterproto.Message):
    match_group: "EtfMatchGroup" = betterproto.enum_field(1)


@dataclass(eq=False, repr=False)
class DataCenterPingUpdate(betterproto.Message):
    pingdata: "list[DataCenterPingUpdatePingEntry]" = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class DataCenterPingUpdatePingEntry(betterproto.Message):
    name: str = betterproto.string_field(1)
    ping: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class NewMatchForLobbyRequest(betterproto.Message):
    current_match_id: int = betterproto.uint64_field(1)
    next_map_id: int = betterproto.uint32_field(2)
    lobby_id: int = betterproto.uint64_field(3)


@dataclass(eq=False, repr=False)
class NewMatchForLobbyResponse(betterproto.Message):
    success: bool = betterproto.bool_field(1)


@dataclass(eq=False, repr=False)
class ChangeMatchPlayerTeamsRequest(betterproto.Message):
    match_id: int = betterproto.uint64_field(1)
    lobby_id: int = betterproto.uint64_field(2)


@dataclass(eq=False, repr=False)
class ChangeMatchPlayerTeamsResponse(betterproto.Message):
    success: bool = betterproto.bool_field(1)


@dataclass(eq=False, repr=False)
class QuestCompleteDebug(betterproto.Message):
    quest_id: int = betterproto.uint64_field(1)
    points_type: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class QuestMapDebug(betterproto.Message):
    reset_operation: int = betterproto.uint32_field(1)
    give_credit: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class QuestMapPurchaseReward(betterproto.Message):
    store_item_defindex: int = betterproto.uint32_field(1)


@dataclass(eq=False, repr=False)
class QuestResponse(betterproto.Message):
    success: bool = betterproto.bool_field(1)


@dataclass(eq=False, repr=False)
class SetDisablePartyQuestProgress(betterproto.Message):
    state: bool = betterproto.bool_field(1)


@dataclass(eq=False, repr=False)
class QuestProgressReport(betterproto.Message):
    quest_id: int = betterproto.uint64_field(1)
    star_0_earned: bool = betterproto.bool_field(2)
    star_1_earned: bool = betterproto.bool_field(3)
    star_2_earned: bool = betterproto.bool_field(4)
    items_earned: list[int] = betterproto.uint64_field(5)
    reward_credits_earned: int = betterproto.uint32_field(6)
    contract_completed: bool = betterproto.bool_field(7)


@dataclass(eq=False, repr=False)
class ConsumePaintkit(betterproto.Message):
    source_id: int = betterproto.fixed64_field(1)
    target_defindex: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class PainkitDevGrant(betterproto.Message):
    paintkit_defindex: int = betterproto.uint32_field(1)
    wear: float = betterproto.float_field(2)
    item_defindex: int = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class QuestStrangeEvent(betterproto.Message):
    owner_account_id: int = betterproto.uint32_field(1)
    scorer_account_id: int = betterproto.uint32_field(2)
    quest_id: int = betterproto.uint64_field(3)
    strange_event_id: int = betterproto.uint32_field(4)
    score: int = betterproto.uint32_field(5)
