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

from dataclasses import dataclass
from typing import List

import betterproto

from .steammessages_base import CMsgAuthTicket, CMsgIpAddress


class EMMSLobbyStatus(betterproto.Enum):
    Invalid = 0
    Exists = 1
    DoesNotExist = 2
    NotAMember = 3


@dataclass(eq=False, repr=False)
class CMsgClientUDSP2PSessionStarted(betterproto.Message):
    steamid_remote: float = betterproto.fixed64_field(1)
    appid: int = betterproto.int32_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientUDSP2PSessionEnded(betterproto.Message):
    steamid_remote: float = betterproto.fixed64_field(1)
    appid: int = betterproto.int32_field(2)
    session_length_sec: int = betterproto.int32_field(3)
    session_error: int = betterproto.int32_field(4)
    nattype: int = betterproto.int32_field(5)
    bytes_recv: int = betterproto.int32_field(6)
    bytes_sent: int = betterproto.int32_field(7)
    bytes_sent_relay: int = betterproto.int32_field(8)
    bytes_recv_relay: int = betterproto.int32_field(9)
    time_to_connect_ms: int = betterproto.int32_field(10)


@dataclass(eq=False, repr=False)
class CMsgClientRegisterAuthTicketWithCM(betterproto.Message):
    protocol_version: int = betterproto.uint32_field(1)
    ticket: bytes = betterproto.bytes_field(3)
    client_instance_id: int = betterproto.uint64_field(4)


@dataclass(eq=False, repr=False)
class CMsgClientTicketAuthComplete(betterproto.Message):
    steam_id: float = betterproto.fixed64_field(1)
    game_id: float = betterproto.fixed64_field(2)
    estate: int = betterproto.uint32_field(3)
    eauth_session_response: int = betterproto.uint32_field(4)
    deprecated_ticket: bytes = betterproto.bytes_field(5)
    ticket_crc: int = betterproto.uint32_field(6)
    ticket_sequence: int = betterproto.uint32_field(7)
    owner_steam_id: float = betterproto.fixed64_field(8)


@dataclass(eq=False, repr=False)
class CMsgClientCMList(betterproto.Message):
    cm_addresses: List[int] = betterproto.uint32_field(1)
    cm_ports: List[int] = betterproto.uint32_field(2)
    cm_websocket_addresses: List[str] = betterproto.string_field(3)
    percent_default_to_websocket: int = betterproto.uint32_field(4)


@dataclass(eq=False, repr=False)
class CMsgClientP2PConnectionInfo(betterproto.Message):
    steam_id_dest: float = betterproto.fixed64_field(1)
    steam_id_src: float = betterproto.fixed64_field(2)
    app_id: int = betterproto.uint32_field(3)
    candidate: bytes = betterproto.bytes_field(4)
    connection_id_src: float = betterproto.fixed64_field(5)
    rendezvous: bytes = betterproto.bytes_field(6)


@dataclass(eq=False, repr=False)
class CMsgClientP2PConnectionFailInfo(betterproto.Message):
    steam_id_dest: float = betterproto.fixed64_field(1)
    steam_id_src: float = betterproto.fixed64_field(2)
    app_id: int = betterproto.uint32_field(3)
    ep2p_session_error: int = betterproto.uint32_field(4)
    connection_id_dest: float = betterproto.fixed64_field(5)
    close_reason: int = betterproto.uint32_field(7)
    close_message: str = betterproto.string_field(8)


@dataclass(eq=False, repr=False)
class CMsgClientNetworkingCertRequest(betterproto.Message):
    key_data: bytes = betterproto.bytes_field(2)
    app_id: int = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientNetworkingCertReply(betterproto.Message):
    cert: bytes = betterproto.bytes_field(4)
    ca_key_id: float = betterproto.fixed64_field(5)
    ca_signature: bytes = betterproto.bytes_field(6)


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


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


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


@dataclass(eq=False, repr=False)
class CMsgClientGetAppOwnershipTicketResponse(betterproto.Message):
    eresult: int = betterproto.uint32_field(1)
    app_id: int = betterproto.uint32_field(2)
    ticket: bytes = betterproto.bytes_field(3)


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


@dataclass(eq=False, repr=False)
class CMsgClientGameConnectTokens(betterproto.Message):
    max_tokens_to_keep: int = betterproto.uint32_field(1)
    tokens: List[bytes] = betterproto.bytes_field(2)


@dataclass(eq=False, repr=False)
class CMsgGSServerType(betterproto.Message):
    app_id_served: int = betterproto.uint32_field(1)
    flags: int = betterproto.uint32_field(2)
    deprecated_game_ip_address: int = betterproto.uint32_field(3)
    game_port: int = betterproto.uint32_field(4)
    game_dir: str = betterproto.string_field(5)
    game_version: str = betterproto.string_field(6)
    game_query_port: int = betterproto.uint32_field(7)


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


@dataclass(eq=False, repr=False)
class CMsgGSPlayerList(betterproto.Message):
    players: List["CMsgGSPlayerListPlayer"] = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class CMsgGSPlayerListPlayer(betterproto.Message):
    steam_id: int = betterproto.uint64_field(1)
    deprecated_public_ip: int = betterproto.uint32_field(2)
    token: bytes = betterproto.bytes_field(3)
    public_ip: "CMsgIpAddress" = betterproto.message_field(4)


@dataclass(eq=False, repr=False)
class CMsgGSUserPlaying(betterproto.Message):
    steam_id: float = betterproto.fixed64_field(1)
    deprecated_public_ip: int = betterproto.uint32_field(2)
    token: bytes = betterproto.bytes_field(3)
    public_ip: "CMsgIpAddress" = betterproto.message_field(4)


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


@dataclass(eq=False, repr=False)
class CMsgClientGamesPlayed(betterproto.Message):
    games_played: List["CMsgClientGamesPlayedGamePlayed"] = betterproto.message_field(1)
    client_os_type: int = betterproto.uint32_field(2)
    cloud_gaming_platform: int = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientGamesPlayedGamePlayed(betterproto.Message):
    steam_id_gs: int = betterproto.uint64_field(1)
    game_id: float = betterproto.fixed64_field(2)
    deprecated_game_ip_address: int = betterproto.uint32_field(3)
    game_port: int = betterproto.uint32_field(4)
    is_secure: bool = betterproto.bool_field(5)
    token: bytes = betterproto.bytes_field(6)
    game_extra_info: str = betterproto.string_field(7)
    game_data_blob: bytes = betterproto.bytes_field(8)
    process_id: int = betterproto.uint32_field(9)
    streaming_provider_id: int = betterproto.uint32_field(10)
    game_flags: int = betterproto.uint32_field(11)
    owner_id: int = betterproto.uint32_field(12)
    vr_hmd_vendor: str = betterproto.string_field(13)
    vr_hmd_model: str = betterproto.string_field(14)
    launch_option_type: int = betterproto.uint32_field(15)
    primary_controller_type: int = betterproto.int32_field(16)
    primary_steam_controller_serial: str = betterproto.string_field(17)
    total_steam_controller_count: int = betterproto.uint32_field(18)
    total_non_steam_controller_count: int = betterproto.uint32_field(19)
    controller_workshop_file_id: int = betterproto.uint64_field(20)
    launch_source: int = betterproto.uint32_field(21)
    vr_hmd_runtime: int = betterproto.uint32_field(22)
    game_ip_address: "CMsgIpAddress" = betterproto.message_field(23)
    controller_connection_type: int = betterproto.uint32_field(24)


@dataclass(eq=False, repr=False)
class CMsgGSApprove(betterproto.Message):
    steam_id: float = betterproto.fixed64_field(1)
    owner_steam_id: float = betterproto.fixed64_field(2)


@dataclass(eq=False, repr=False)
class CMsgGSDeny(betterproto.Message):
    steam_id: float = betterproto.fixed64_field(1)
    edeny_reason: int = betterproto.int32_field(2)
    deny_string: str = betterproto.string_field(3)


@dataclass(eq=False, repr=False)
class CMsgGSKick(betterproto.Message):
    steam_id: float = betterproto.fixed64_field(1)
    edeny_reason: int = betterproto.int32_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientAuthList(betterproto.Message):
    tokens_left: int = betterproto.uint32_field(1)
    last_request_seq: int = betterproto.uint32_field(2)
    last_request_seq_from_server: int = betterproto.uint32_field(3)
    tickets: List["CMsgAuthTicket"] = betterproto.message_field(4)
    app_ids: List[int] = betterproto.uint32_field(5)
    message_sequence: int = betterproto.uint32_field(6)


@dataclass(eq=False, repr=False)
class CMsgClientAuthListAck(betterproto.Message):
    ticket_crc: List[int] = betterproto.uint32_field(1)
    app_ids: List[int] = betterproto.uint32_field(2)
    message_sequence: int = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientLicenseList(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    licenses: List["CMsgClientLicenseListLicense"] = betterproto.message_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientLicenseListLicense(betterproto.Message):
    package_id: int = betterproto.uint32_field(1)
    time_created: float = betterproto.fixed32_field(2)
    time_next_process: float = betterproto.fixed32_field(3)
    minute_limit: int = betterproto.int32_field(4)
    minutes_used: int = betterproto.int32_field(5)
    payment_method: int = betterproto.uint32_field(6)
    flags: int = betterproto.uint32_field(7)
    purchase_country_code: str = betterproto.string_field(8)
    license_type: int = betterproto.uint32_field(9)
    territory_code: int = betterproto.int32_field(10)
    change_number: int = betterproto.int32_field(11)
    owner_id: int = betterproto.uint32_field(12)
    initial_period: int = betterproto.uint32_field(13)
    initial_time_unit: int = betterproto.uint32_field(14)
    renewal_period: int = betterproto.uint32_field(15)
    renewal_time_unit: int = betterproto.uint32_field(16)
    access_token: int = betterproto.uint64_field(17)


@dataclass(eq=False, repr=False)
class CMsgClientLBSSetScore(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    leaderboard_id: int = betterproto.int32_field(2)
    score: int = betterproto.int32_field(3)
    details: bytes = betterproto.bytes_field(4)
    upload_score_method: int = betterproto.int32_field(5)


@dataclass(eq=False, repr=False)
class CMsgClientLBSSetScoreResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    leaderboard_entry_count: int = betterproto.int32_field(2)
    score_changed: bool = betterproto.bool_field(3)
    global_rank_previous: int = betterproto.int32_field(4)
    global_rank_new: int = betterproto.int32_field(5)


@dataclass(eq=False, repr=False)
class CMsgClientLBSSetUGC(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    leaderboard_id: int = betterproto.int32_field(2)
    ugc_id: float = betterproto.fixed64_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientLBSSetUGCResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)


@dataclass(eq=False, repr=False)
class CMsgClientLBSFindOrCreateLB(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    leaderboard_sort_method: int = betterproto.int32_field(2)
    leaderboard_display_type: int = betterproto.int32_field(3)
    create_if_not_found: bool = betterproto.bool_field(4)
    leaderboard_name: str = betterproto.string_field(5)


@dataclass(eq=False, repr=False)
class CMsgClientLBSFindOrCreateLBResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    leaderboard_id: int = betterproto.int32_field(2)
    leaderboard_entry_count: int = betterproto.int32_field(3)
    leaderboard_sort_method: int = betterproto.int32_field(4)
    leaderboard_display_type: int = betterproto.int32_field(5)
    leaderboard_name: str = betterproto.string_field(6)


@dataclass(eq=False, repr=False)
class CMsgClientLBSGetLBEntries(betterproto.Message):
    app_id: int = betterproto.int32_field(1)
    leaderboard_id: int = betterproto.int32_field(2)
    range_start: int = betterproto.int32_field(3)
    range_end: int = betterproto.int32_field(4)
    leaderboard_data_request: int = betterproto.int32_field(5)
    steamids: List[float] = betterproto.fixed64_field(6)


@dataclass(eq=False, repr=False)
class CMsgClientLBSGetLBEntriesResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    leaderboard_entry_count: int = betterproto.int32_field(2)
    entries: List["CMsgClientLBSGetLBEntriesResponseEntry"] = betterproto.message_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientLBSGetLBEntriesResponseEntry(betterproto.Message):
    steam_id_user: float = betterproto.fixed64_field(1)
    global_rank: int = betterproto.int32_field(2)
    score: int = betterproto.int32_field(3)
    details: bytes = betterproto.bytes_field(4)
    ugc_id: float = betterproto.fixed64_field(5)


@dataclass(eq=False, repr=False)
class CMsgClientAppMinutesPlayedData(betterproto.Message):
    minutes_played: List["CMsgClientAppMinutesPlayedDataAppMinutesPlayedData"] = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class CMsgClientAppMinutesPlayedDataAppMinutesPlayedData(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    forever: int = betterproto.int32_field(2)
    last_two_weeks: int = betterproto.int32_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientIsLimitedAccount(betterproto.Message):
    bis_limited_account: bool = betterproto.bool_field(1)
    bis_community_banned: bool = betterproto.bool_field(2)
    bis_locked_account: bool = betterproto.bool_field(3)
    bis_limited_account_allowed_to_invite_friends: bool = betterproto.bool_field(4)


@dataclass(eq=False, repr=False)
class CMsgClientRequestedClientStats(betterproto.Message):
    stats_to_send: List["CMsgClientRequestedClientStatsStatsToSend"] = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class CMsgClientRequestedClientStatsStatsToSend(betterproto.Message):
    client_stat: int = betterproto.uint32_field(1)
    stat_aggregate_method: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientStat2(betterproto.Message):
    stat_detail: List["CMsgClientStat2StatDetail"] = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class CMsgClientStat2StatDetail(betterproto.Message):
    client_stat: int = betterproto.uint32_field(1)
    ll_value: int = betterproto.int64_field(2)
    time_of_day: int = betterproto.uint32_field(3)
    cell_id: int = betterproto.uint32_field(4)
    depot_id: int = betterproto.uint32_field(5)
    app_id: int = betterproto.uint32_field(6)


@dataclass(eq=False, repr=False)
class CMsgClientMMSSetRatelimitPolicyOnClient(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    enable_rate_limits: bool = betterproto.bool_field(2)
    seconds_per_message: int = betterproto.int32_field(3)
    milliseconds_per_data_update: int = betterproto.int32_field(4)


@dataclass(eq=False, repr=False)
class CMsgClientMMSCreateLobby(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    max_members: int = betterproto.int32_field(2)
    lobby_type: int = betterproto.int32_field(3)
    lobby_flags: int = betterproto.int32_field(4)
    cell_id: int = betterproto.uint32_field(5)
    deprecated_public_ip: int = betterproto.uint32_field(6)
    metadata: bytes = betterproto.bytes_field(7)
    persona_name_owner: str = betterproto.string_field(8)
    public_ip: "CMsgIpAddress" = betterproto.message_field(9)


@dataclass(eq=False, repr=False)
class CMsgClientMMSCreateLobbyResponse(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    eresult: int = betterproto.int32_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientMMSJoinLobby(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    persona_name: str = betterproto.string_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientMMSJoinLobbyResponse(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    chat_room_enter_response: int = betterproto.int32_field(3)
    max_members: int = betterproto.int32_field(4)
    lobby_type: int = betterproto.int32_field(5)
    lobby_flags: int = betterproto.int32_field(6)
    steam_id_owner: float = betterproto.fixed64_field(7)
    metadata: bytes = betterproto.bytes_field(8)
    members: List["CMsgClientMMSJoinLobbyResponseMember"] = betterproto.message_field(9)


@dataclass(eq=False, repr=False)
class CMsgClientMMSJoinLobbyResponseMember(betterproto.Message):
    steam_id: float = betterproto.fixed64_field(1)
    persona_name: str = betterproto.string_field(2)
    metadata: bytes = betterproto.bytes_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientMMSLeaveLobby(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientMMSLeaveLobbyResponse(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    eresult: int = betterproto.int32_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientMMSGetLobbyList(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    num_lobbies_requested: int = betterproto.int32_field(3)
    cell_id: int = betterproto.uint32_field(4)
    deprecated_public_ip: int = betterproto.uint32_field(5)
    filters: List["CMsgClientMMSGetLobbyListFilter"] = betterproto.message_field(6)
    public_ip: "CMsgIpAddress" = betterproto.message_field(7)


@dataclass(eq=False, repr=False)
class CMsgClientMMSGetLobbyListFilter(betterproto.Message):
    key: str = betterproto.string_field(1)
    value: str = betterproto.string_field(2)
    comparision: int = betterproto.int32_field(3)
    filter_type: int = betterproto.int32_field(4)


@dataclass(eq=False, repr=False)
class CMsgClientMMSGetLobbyListResponse(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    eresult: int = betterproto.int32_field(3)
    lobbies: List["CMsgClientMMSGetLobbyListResponseLobby"] = betterproto.message_field(4)


@dataclass(eq=False, repr=False)
class CMsgClientMMSGetLobbyListResponseLobby(betterproto.Message):
    steam_id: float = betterproto.fixed64_field(1)
    max_members: int = betterproto.int32_field(2)
    lobby_type: int = betterproto.int32_field(3)
    lobby_flags: int = betterproto.int32_field(4)
    metadata: bytes = betterproto.bytes_field(5)
    num_members: int = betterproto.int32_field(6)
    distance: float = betterproto.float_field(7)
    weight: int = betterproto.int64_field(8)


@dataclass(eq=False, repr=False)
class CMsgClientMMSSetLobbyData(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    steam_id_member: float = betterproto.fixed64_field(3)
    max_members: int = betterproto.int32_field(4)
    lobby_type: int = betterproto.int32_field(5)
    lobby_flags: int = betterproto.int32_field(6)
    metadata: bytes = betterproto.bytes_field(7)


@dataclass(eq=False, repr=False)
class CMsgClientMMSSetLobbyDataResponse(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    eresult: int = betterproto.int32_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientMMSGetLobbyData(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientMMSLobbyData(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    num_members: int = betterproto.int32_field(3)
    max_members: int = betterproto.int32_field(4)
    lobby_type: int = betterproto.int32_field(5)
    lobby_flags: int = betterproto.int32_field(6)
    steam_id_owner: float = betterproto.fixed64_field(7)
    metadata: bytes = betterproto.bytes_field(8)
    members: List["CMsgClientMMSLobbyDataMember"] = betterproto.message_field(9)
    lobby_cellid: int = betterproto.uint32_field(10)
    owner_should_accept_changes: bool = betterproto.bool_field(11)


@dataclass(eq=False, repr=False)
class CMsgClientMMSLobbyDataMember(betterproto.Message):
    steam_id: float = betterproto.fixed64_field(1)
    persona_name: str = betterproto.string_field(2)
    metadata: bytes = betterproto.bytes_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientMMSSendLobbyChatMsg(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    steam_id_target: float = betterproto.fixed64_field(3)
    lobby_message: bytes = betterproto.bytes_field(4)


@dataclass(eq=False, repr=False)
class CMsgClientMMSLobbyChatMsg(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    steam_id_sender: float = betterproto.fixed64_field(3)
    lobby_message: bytes = betterproto.bytes_field(4)


@dataclass(eq=False, repr=False)
class CMsgClientMMSSetLobbyOwner(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    steam_id_new_owner: float = betterproto.fixed64_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientMMSSetLobbyOwnerResponse(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    eresult: int = betterproto.int32_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientMMSSetLobbyLinked(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    steam_id_lobby2: float = betterproto.fixed64_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientMMSSetLobbyGameServer(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    deprecated_game_server_ip: int = betterproto.uint32_field(3)
    game_server_port: int = betterproto.uint32_field(4)
    game_server_steam_id: float = betterproto.fixed64_field(5)
    game_server_ip: "CMsgIpAddress" = betterproto.message_field(6)


@dataclass(eq=False, repr=False)
class CMsgClientMMSLobbyGameServerSet(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    deprecated_game_server_ip: int = betterproto.uint32_field(3)
    game_server_port: int = betterproto.uint32_field(4)
    game_server_steam_id: float = betterproto.fixed64_field(5)
    game_server_ip: "CMsgIpAddress" = betterproto.message_field(6)


@dataclass(eq=False, repr=False)
class CMsgClientMMSUserJoinedLobby(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    steam_id_user: float = betterproto.fixed64_field(3)
    persona_name: str = betterproto.string_field(4)


@dataclass(eq=False, repr=False)
class CMsgClientMMSUserLeftLobby(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    steam_id_user: float = betterproto.fixed64_field(3)
    persona_name: str = betterproto.string_field(4)


@dataclass(eq=False, repr=False)
class CMsgClientMMSInviteToLobby(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    steam_id_user_invited: float = betterproto.fixed64_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientMMSGetLobbyStatus(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    claim_membership: bool = betterproto.bool_field(3)
    claim_ownership: bool = betterproto.bool_field(4)


@dataclass(eq=False, repr=False)
class CMsgClientMMSGetLobbyStatusResponse(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    steam_id_lobby: float = betterproto.fixed64_field(2)
    lobby_status: "EMMSLobbyStatus" = betterproto.enum_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientInviteToGame(betterproto.Message):
    steam_id_dest: float = betterproto.fixed64_field(1)
    steam_id_src: float = betterproto.fixed64_field(2)
    connect_string: str = betterproto.string_field(3)
    remote_play: str = betterproto.string_field(4)


@dataclass(eq=False, repr=False)
class CMsgClientChatInvite(betterproto.Message):
    steam_id_invited: float = betterproto.fixed64_field(1)
    steam_id_chat: float = betterproto.fixed64_field(2)
    steam_id_patron: float = betterproto.fixed64_field(3)
    chatroom_type: int = betterproto.int32_field(4)
    steam_id_friend_chat: float = betterproto.fixed64_field(5)
    chat_name: str = betterproto.string_field(6)
    game_id: float = betterproto.fixed64_field(7)


@dataclass(eq=False, repr=False)
class CMsgClientConnectionStats(betterproto.Message):
    stats_logon: "CMsgClientConnectionStatsStats_Logon" = betterproto.message_field(1)
    stats_vconn: "CMsgClientConnectionStatsStats_VConn" = betterproto.message_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientConnectionStatsStats_Logon(betterproto.Message):
    connect_attempts: int = betterproto.int32_field(1)
    connect_successes: int = betterproto.int32_field(2)
    connect_failures: int = betterproto.int32_field(3)
    connections_dropped: int = betterproto.int32_field(4)
    seconds_running: int = betterproto.uint32_field(5)
    msec_tologonthistime: int = betterproto.uint32_field(6)
    count_bad_cms: int = betterproto.uint32_field(7)


@dataclass(eq=False, repr=False)
class CMsgClientConnectionStatsStats_UDP(betterproto.Message):
    pkts_sent: int = betterproto.uint64_field(1)
    bytes_sent: int = betterproto.uint64_field(2)
    pkts_recv: int = betterproto.uint64_field(3)
    pkts_processed: int = betterproto.uint64_field(4)
    bytes_recv: int = betterproto.uint64_field(5)


@dataclass(eq=False, repr=False)
class CMsgClientConnectionStatsStats_VConn(betterproto.Message):
    connections_udp: int = betterproto.uint32_field(1)
    connections_tcp: int = betterproto.uint32_field(2)
    stats_udp: "CMsgClientConnectionStatsStats_UDP" = betterproto.message_field(3)
    pkts_abandoned: int = betterproto.uint64_field(4)
    conn_req_received: int = betterproto.uint64_field(5)
    pkts_resent: int = betterproto.uint64_field(6)
    msgs_sent: int = betterproto.uint64_field(7)
    msgs_sent_failed: int = betterproto.uint64_field(8)
    msgs_recv: int = betterproto.uint64_field(9)
    datagrams_sent: int = betterproto.uint64_field(10)
    datagrams_recv: int = betterproto.uint64_field(11)
    bad_pkts_recv: int = betterproto.uint64_field(12)
    unknown_conn_pkts_recv: int = betterproto.uint64_field(13)
    missed_pkts_recv: int = betterproto.uint64_field(14)
    dup_pkts_recv: int = betterproto.uint64_field(15)
    failed_connect_challenges: int = betterproto.uint64_field(16)
    micro_sec_avg_latency: int = betterproto.uint32_field(17)
    micro_sec_min_latency: int = betterproto.uint32_field(18)
    micro_sec_max_latency: int = betterproto.uint32_field(19)
    mem_pool_msg_in_use: int = betterproto.uint32_field(20)


@dataclass(eq=False, repr=False)
class CMsgClientServersAvailable(betterproto.Message):
    server_types_available: List["CMsgClientServersAvailableServer_Types_Available"] = betterproto.message_field(1)
    server_type_for_auth_services: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientServersAvailableServer_Types_Available(betterproto.Message):
    server: int = betterproto.uint32_field(1)
    changed: bool = betterproto.bool_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientGetUserStats(betterproto.Message):
    game_id: float = betterproto.fixed64_field(1)
    crc_stats: int = betterproto.uint32_field(2)
    schema_local_version: int = betterproto.int32_field(3)
    steam_id_for_user: float = betterproto.fixed64_field(4)


@dataclass(eq=False, repr=False)
class CMsgClientGetUserStatsResponse(betterproto.Message):
    game_id: float = betterproto.fixed64_field(1)
    eresult: int = betterproto.int32_field(2)
    crc_stats: int = betterproto.uint32_field(3)
    schema: bytes = betterproto.bytes_field(4)
    stats: List["CMsgClientGetUserStatsResponseStats"] = betterproto.message_field(5)
    achievement_blocks: List["CMsgClientGetUserStatsResponseAchievement_Blocks"] = betterproto.message_field(6)


@dataclass(eq=False, repr=False)
class CMsgClientGetUserStatsResponseStats(betterproto.Message):
    stat_id: int = betterproto.uint32_field(1)
    stat_value: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientGetUserStatsResponseAchievement_Blocks(betterproto.Message):
    achievement_id: int = betterproto.uint32_field(1)
    unlock_time: List[float] = betterproto.fixed32_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientStoreUserStatsResponse(betterproto.Message):
    game_id: float = betterproto.fixed64_field(1)
    eresult: int = betterproto.int32_field(2)
    crc_stats: int = betterproto.uint32_field(3)
    stats_failed_validation: List[
        "CMsgClientStoreUserStatsResponseStats_Failed_Validation"
    ] = betterproto.message_field(4)
    stats_out_of_date: bool = betterproto.bool_field(5)


@dataclass(eq=False, repr=False)
class CMsgClientStoreUserStatsResponseStats_Failed_Validation(betterproto.Message):
    stat_id: int = betterproto.uint32_field(1)
    reverted_stat_value: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientStoreUserStats2(betterproto.Message):
    game_id: float = betterproto.fixed64_field(1)
    settor_steam_id: float = betterproto.fixed64_field(2)
    settee_steam_id: float = betterproto.fixed64_field(3)
    crc_stats: int = betterproto.uint32_field(4)
    explicit_reset: bool = betterproto.bool_field(5)
    stats: List["CMsgClientStoreUserStats2Stats"] = betterproto.message_field(6)


@dataclass(eq=False, repr=False)
class CMsgClientStoreUserStats2Stats(betterproto.Message):
    stat_id: int = betterproto.uint32_field(1)
    stat_value: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientStatsUpdated(betterproto.Message):
    steam_id: float = betterproto.fixed64_field(1)
    game_id: float = betterproto.fixed64_field(2)
    crc_stats: int = betterproto.uint32_field(3)
    updated_stats: List["CMsgClientStatsUpdatedUpdated_Stats"] = betterproto.message_field(4)


@dataclass(eq=False, repr=False)
class CMsgClientStatsUpdatedUpdated_Stats(betterproto.Message):
    stat_id: int = betterproto.uint32_field(1)
    stat_value: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientStoreUserStats(betterproto.Message):
    game_id: float = betterproto.fixed64_field(1)
    explicit_reset: bool = betterproto.bool_field(2)
    stats_to_store: List["CMsgClientStoreUserStatsStats_To_Store"] = betterproto.message_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientStoreUserStatsStats_To_Store(betterproto.Message):
    stat_id: int = betterproto.uint32_field(1)
    stat_value: int = betterproto.uint32_field(2)


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


@dataclass(eq=False, repr=False)
class CMsgClientReportOverlayDetourFailure(betterproto.Message):
    failure_strings: List[str] = betterproto.string_field(1)


@dataclass(eq=False, repr=False)
class CMsgClientGetClientDetailsResponse(betterproto.Message):
    package_version: int = betterproto.uint32_field(1)
    protocol_version: int = betterproto.uint32_field(8)
    os: str = betterproto.string_field(2)
    machine_name: str = betterproto.string_field(3)
    ip_public: str = betterproto.string_field(4)
    ip_private: str = betterproto.string_field(5)
    bytes_available: int = betterproto.uint64_field(7)
    games_running: List["CMsgClientGetClientDetailsResponseGame"] = betterproto.message_field(6)


@dataclass(eq=False, repr=False)
class CMsgClientGetClientDetailsResponseGame(betterproto.Message):
    appid: int = betterproto.uint32_field(1)
    extra_info: str = betterproto.string_field(2)
    time_running_sec: int = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientGetClientAppList(betterproto.Message):
    media: bool = betterproto.bool_field(1)
    tools: bool = betterproto.bool_field(2)
    games: bool = betterproto.bool_field(3)
    only_installed: bool = betterproto.bool_field(4)
    only_changing: bool = betterproto.bool_field(5)
    comics: bool = betterproto.bool_field(6)


@dataclass(eq=False, repr=False)
class CMsgClientGetClientAppListResponse(betterproto.Message):
    apps: List["CMsgClientGetClientAppListResponseApp"] = betterproto.message_field(1)
    bytes_available: int = betterproto.uint64_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientGetClientAppListResponseApp(betterproto.Message):
    appid: int = betterproto.uint32_field(1)
    category: str = betterproto.string_field(2)
    app_type: str = betterproto.string_field(10)
    favorite: bool = betterproto.bool_field(3)
    installed: bool = betterproto.bool_field(4)
    auto_update: bool = betterproto.bool_field(5)
    bytes_downloaded: int = betterproto.uint64_field(6)
    bytes_needed: int = betterproto.uint64_field(7)
    bytes_download_rate: int = betterproto.uint32_field(8)
    download_paused: bool = betterproto.bool_field(11)
    num_downloading: int = betterproto.uint32_field(12)
    num_paused: int = betterproto.uint32_field(13)
    changing: bool = betterproto.bool_field(14)
    available_on_platform: bool = betterproto.bool_field(15)
    dlcs: List["CMsgClientGetClientAppListResponseAppDLC"] = betterproto.message_field(9)


@dataclass(eq=False, repr=False)
class CMsgClientGetClientAppListResponseAppDLC(betterproto.Message):
    appid: int = betterproto.uint32_field(1)
    installed: bool = betterproto.bool_field(2)


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


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


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


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


@dataclass(eq=False, repr=False)
class CMsgClientSetClientAppUpdateState(betterproto.Message):
    appid: int = betterproto.uint32_field(1)
    update: bool = betterproto.bool_field(2)


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


@dataclass(eq=False, repr=False)
class CMsgClientUFSUploadFileRequest(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    file_size: int = betterproto.uint32_field(2)
    raw_file_size: int = betterproto.uint32_field(3)
    sha_file: bytes = betterproto.bytes_field(4)
    time_stamp: int = betterproto.uint64_field(5)
    file_name: str = betterproto.string_field(6)
    platforms_to_sync_deprecated: int = betterproto.uint32_field(7)
    platforms_to_sync: int = betterproto.uint32_field(8)
    cell_id: int = betterproto.uint32_field(9)
    can_encrypt: bool = betterproto.bool_field(10)


@dataclass(eq=False, repr=False)
class CMsgClientUFSUploadFileResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    sha_file: bytes = betterproto.bytes_field(2)
    use_http: bool = betterproto.bool_field(3)
    http_host: str = betterproto.string_field(4)
    http_url: str = betterproto.string_field(5)
    kv_headers: bytes = betterproto.bytes_field(6)
    use_https: bool = betterproto.bool_field(7)
    encrypt_file: bool = betterproto.bool_field(8)


@dataclass(eq=False, repr=False)
class CMsgClientUFSUploadCommit(betterproto.Message):
    files: List["CMsgClientUFSUploadCommitFile"] = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class CMsgClientUFSUploadCommitFile(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    app_id: int = betterproto.uint32_field(2)
    sha_file: bytes = betterproto.bytes_field(3)
    cub_file: int = betterproto.uint32_field(4)
    file_name: str = betterproto.string_field(5)


@dataclass(eq=False, repr=False)
class CMsgClientUFSUploadCommitResponse(betterproto.Message):
    files: List["CMsgClientUFSUploadCommitResponseFile"] = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class CMsgClientUFSUploadCommitResponseFile(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    app_id: int = betterproto.uint32_field(2)
    sha_file: bytes = betterproto.bytes_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientUFSFileChunk(betterproto.Message):
    sha_file: bytes = betterproto.bytes_field(1)
    file_start: int = betterproto.uint32_field(2)
    data: bytes = betterproto.bytes_field(3)


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


@dataclass(eq=False, repr=False)
class CMsgClientUFSUploadFileFinished(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    sha_file: bytes = betterproto.bytes_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientUFSDeleteFileRequest(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    file_name: str = betterproto.string_field(2)
    is_explicit_delete: bool = betterproto.bool_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientUFSDeleteFileResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    file_name: str = betterproto.string_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientUFSGetFileListForApp(betterproto.Message):
    apps_to_query: List[int] = betterproto.uint32_field(1)
    send_path_prefixes: bool = betterproto.bool_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientUFSGetFileListForAppResponse(betterproto.Message):
    files: List["CMsgClientUFSGetFileListForAppResponseFile"] = betterproto.message_field(1)
    path_prefixes: List[str] = betterproto.string_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientUFSGetFileListForAppResponseFile(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    file_name: str = betterproto.string_field(2)
    sha_file: bytes = betterproto.bytes_field(3)
    time_stamp: int = betterproto.uint64_field(4)
    raw_file_size: int = betterproto.uint32_field(5)
    is_explicit_delete: bool = betterproto.bool_field(6)
    platforms_to_sync: int = betterproto.uint32_field(7)
    path_prefix_index: int = betterproto.uint32_field(8)


@dataclass(eq=False, repr=False)
class CMsgClientUFSDownloadRequest(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    file_name: str = betterproto.string_field(2)
    can_handle_http: bool = betterproto.bool_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientUFSDownloadResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    app_id: int = betterproto.uint32_field(2)
    file_size: int = betterproto.uint32_field(3)
    raw_file_size: int = betterproto.uint32_field(4)
    sha_file: bytes = betterproto.bytes_field(5)
    time_stamp: int = betterproto.uint64_field(6)
    is_explicit_delete: bool = betterproto.bool_field(7)
    use_http: bool = betterproto.bool_field(8)
    http_host: str = betterproto.string_field(9)
    http_url: str = betterproto.string_field(10)
    kv_headers: bytes = betterproto.bytes_field(11)
    use_https: bool = betterproto.bool_field(12)
    encrypted: bool = betterproto.bool_field(13)


@dataclass(eq=False, repr=False)
class CMsgClientUFSLoginRequest(betterproto.Message):
    protocol_version: int = betterproto.uint32_field(1)
    am_session_token: int = betterproto.uint64_field(2)
    apps: List[int] = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientUFSLoginResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)


@dataclass(eq=False, repr=False)
class CMsgClientWalletInfoUpdate(betterproto.Message):
    has_wallet: bool = betterproto.bool_field(1)
    balance: int = betterproto.int32_field(2)
    currency: int = betterproto.int32_field(3)
    balance_delayed: int = betterproto.int32_field(4)
    balance64: int = betterproto.int64_field(5)
    balance64_delayed: int = betterproto.int64_field(6)


@dataclass(eq=False, repr=False)
class CMsgClientAppInfoUpdate(betterproto.Message):
    last_changenumber: int = betterproto.uint32_field(1)
    send_changelist: bool = betterproto.bool_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientAppInfoChanges(betterproto.Message):
    current_change_number: int = betterproto.uint32_field(1)
    force_full_update: bool = betterproto.bool_field(2)
    app_ids: List[int] = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientAppInfoRequest(betterproto.Message):
    apps: List["CMsgClientAppInfoRequestApp"] = betterproto.message_field(1)
    supports_batches: bool = betterproto.bool_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientAppInfoRequestApp(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    section_flags: int = betterproto.uint32_field(2)
    section_crc: List[int] = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientAppInfoResponse(betterproto.Message):
    apps: List["CMsgClientAppInfoResponseApp"] = betterproto.message_field(1)
    apps_unknown: List[int] = betterproto.uint32_field(2)
    apps_pending: int = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientAppInfoResponseApp(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    change_number: int = betterproto.uint32_field(2)
    sections: List["CMsgClientAppInfoResponseAppSection"] = betterproto.message_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientAppInfoResponseAppSection(betterproto.Message):
    section_id: int = betterproto.uint32_field(1)
    section_kv: bytes = betterproto.bytes_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientPackageInfoRequest(betterproto.Message):
    package_ids: List[int] = betterproto.uint32_field(1)
    meta_data_only: bool = betterproto.bool_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientPackageInfoResponse(betterproto.Message):
    packages: List["CMsgClientPackageInfoResponsePackage"] = betterproto.message_field(1)
    packages_unknown: List[int] = betterproto.uint32_field(2)
    packages_pending: int = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientPackageInfoResponsePackage(betterproto.Message):
    package_id: int = betterproto.uint32_field(1)
    change_number: int = betterproto.uint32_field(2)
    sha: bytes = betterproto.bytes_field(3)
    buffer: bytes = betterproto.bytes_field(4)


@dataclass(eq=False, repr=False)
class CMsgClientPICSChangesSinceRequest(betterproto.Message):
    since_change_number: int = betterproto.uint32_field(1)
    send_app_info_changes: bool = betterproto.bool_field(2)
    send_package_info_changes: bool = betterproto.bool_field(3)
    num_app_info_cached: int = betterproto.uint32_field(4)
    num_package_info_cached: int = betterproto.uint32_field(5)


@dataclass(eq=False, repr=False)
class CMsgClientPICSChangesSinceResponse(betterproto.Message):
    current_change_number: int = betterproto.uint32_field(1)
    since_change_number: int = betterproto.uint32_field(2)
    force_full_update: bool = betterproto.bool_field(3)
    package_changes: List["CMsgClientPICSChangesSinceResponsePackageChange"] = betterproto.message_field(4)
    app_changes: List["CMsgClientPICSChangesSinceResponseAppChange"] = betterproto.message_field(5)
    force_full_app_update: bool = betterproto.bool_field(6)
    force_full_package_update: bool = betterproto.bool_field(7)


@dataclass(eq=False, repr=False)
class CMsgClientPICSChangesSinceResponsePackageChange(betterproto.Message):
    packageid: int = betterproto.uint32_field(1)
    change_number: int = betterproto.uint32_field(2)
    needs_token: bool = betterproto.bool_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientPICSChangesSinceResponseAppChange(betterproto.Message):
    appid: int = betterproto.uint32_field(1)
    change_number: int = betterproto.uint32_field(2)
    needs_token: bool = betterproto.bool_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientPICSProductInfoRequest(betterproto.Message):
    packages: List["CMsgClientPICSProductInfoRequestPackageInfo"] = betterproto.message_field(1)
    apps: List["CMsgClientPICSProductInfoRequestAppInfo"] = betterproto.message_field(2)
    meta_data_only: bool = betterproto.bool_field(3)
    num_prev_failed: int = betterproto.uint32_field(4)
    supports_package_tokens: int = betterproto.uint32_field(5)


@dataclass(eq=False, repr=False)
class CMsgClientPICSProductInfoRequestAppInfo(betterproto.Message):
    appid: int = betterproto.uint32_field(1)
    access_token: int = betterproto.uint64_field(2)
    only_public: bool = betterproto.bool_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientPICSProductInfoRequestPackageInfo(betterproto.Message):
    packageid: int = betterproto.uint32_field(1)
    access_token: int = betterproto.uint64_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientPICSProductInfoResponse(betterproto.Message):
    apps: List["CMsgClientPICSProductInfoResponseAppInfo"] = betterproto.message_field(1)
    unknown_appids: List[int] = betterproto.uint32_field(2)
    packages: List["CMsgClientPICSProductInfoResponsePackageInfo"] = betterproto.message_field(3)
    unknown_packageids: List[int] = betterproto.uint32_field(4)
    meta_data_only: bool = betterproto.bool_field(5)
    response_pending: bool = betterproto.bool_field(6)
    http_min_size: int = betterproto.uint32_field(7)
    http_host: str = betterproto.string_field(8)


@dataclass(eq=False, repr=False)
class CMsgClientPICSProductInfoResponseAppInfo(betterproto.Message):
    appid: int = betterproto.uint32_field(1)
    change_number: int = betterproto.uint32_field(2)
    missing_token: bool = betterproto.bool_field(3)
    sha: bytes = betterproto.bytes_field(4)
    buffer: bytes = betterproto.bytes_field(5)
    only_public: bool = betterproto.bool_field(6)
    size: int = betterproto.uint32_field(7)


@dataclass(eq=False, repr=False)
class CMsgClientPICSProductInfoResponsePackageInfo(betterproto.Message):
    packageid: int = betterproto.uint32_field(1)
    change_number: int = betterproto.uint32_field(2)
    missing_token: bool = betterproto.bool_field(3)
    sha: bytes = betterproto.bytes_field(4)
    buffer: bytes = betterproto.bytes_field(5)
    size: int = betterproto.uint32_field(6)


@dataclass(eq=False, repr=False)
class CMsgClientPICSAccessTokenRequest(betterproto.Message):
    packageids: List[int] = betterproto.uint32_field(1)
    appids: List[int] = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientPICSAccessTokenResponse(betterproto.Message):
    package_access_tokens: List["CMsgClientPICSAccessTokenResponsePackageToken"] = betterproto.message_field(1)
    package_denied_tokens: List[int] = betterproto.uint32_field(2)
    app_access_tokens: List["CMsgClientPICSAccessTokenResponseAppToken"] = betterproto.message_field(3)
    app_denied_tokens: List[int] = betterproto.uint32_field(4)


@dataclass(eq=False, repr=False)
class CMsgClientPICSAccessTokenResponsePackageToken(betterproto.Message):
    packageid: int = betterproto.uint32_field(1)
    access_token: int = betterproto.uint64_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientPICSAccessTokenResponseAppToken(betterproto.Message):
    appid: int = betterproto.uint32_field(1)
    access_token: int = betterproto.uint64_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientUFSGetUGCDetails(betterproto.Message):
    hcontent: float = betterproto.fixed64_field(1)


@dataclass(eq=False, repr=False)
class CMsgClientUFSGetUGCDetailsResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    url: str = betterproto.string_field(2)
    app_id: int = betterproto.uint32_field(3)
    filename: str = betterproto.string_field(4)
    steamid_creator: float = betterproto.fixed64_field(5)
    file_size: int = betterproto.uint32_field(6)
    compressed_file_size: int = betterproto.uint32_field(7)
    rangecheck_host: str = betterproto.string_field(8)
    file_encoded_sha1: str = betterproto.string_field(9)


@dataclass(eq=False, repr=False)
class CMsgClientUFSGetSingleFileInfo(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    file_name: str = betterproto.string_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientUFSGetSingleFileInfoResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    app_id: int = betterproto.uint32_field(2)
    file_name: str = betterproto.string_field(3)
    sha_file: bytes = betterproto.bytes_field(4)
    time_stamp: int = betterproto.uint64_field(5)
    raw_file_size: int = betterproto.uint32_field(6)
    is_explicit_delete: bool = betterproto.bool_field(7)


@dataclass(eq=False, repr=False)
class CMsgClientUFSShareFile(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    file_name: str = betterproto.string_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientUFSShareFileResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    hcontent: float = betterproto.fixed64_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientAMGetClanOfficers(betterproto.Message):
    steamid_clan: float = betterproto.fixed64_field(1)


@dataclass(eq=False, repr=False)
class CMsgClientAMGetClanOfficersResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    steamid_clan: float = betterproto.fixed64_field(2)
    officer_count: int = betterproto.int32_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientAMGetPersonaNameHistory(betterproto.Message):
    id_count: int = betterproto.int32_field(1)
    ids: List["CMsgClientAMGetPersonaNameHistoryIdInstance"] = betterproto.message_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientAMGetPersonaNameHistoryIdInstance(betterproto.Message):
    steamid: float = betterproto.fixed64_field(1)


@dataclass(eq=False, repr=False)
class CMsgClientAMGetPersonaNameHistoryResponse(betterproto.Message):
    responses: List["CMsgClientAMGetPersonaNameHistoryResponseNameTableInstance"] = betterproto.message_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientAMGetPersonaNameHistoryResponseNameTableInstance(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    steamid: float = betterproto.fixed64_field(2)
    names: List["CMsgClientAMGetPersonaNameHistoryResponseNameTableInstanceNameInstance"] = betterproto.message_field(3)


@dataclass(eq=False, repr=False)
class CMsgClientAMGetPersonaNameHistoryResponseNameTableInstanceNameInstance(betterproto.Message):
    name_since: float = betterproto.fixed32_field(1)
    name: str = betterproto.string_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientDeregisterWithServer(betterproto.Message):
    eservertype: int = betterproto.uint32_field(1)
    app_id: int = betterproto.uint32_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientClanState(betterproto.Message):
    steamid_clan: float = betterproto.fixed64_field(1)
    clan_account_flags: int = betterproto.uint32_field(3)
    name_info: "CMsgClientClanStateNameInfo" = betterproto.message_field(4)
    user_counts: "CMsgClientClanStateUserCounts" = betterproto.message_field(5)
    events: List["CMsgClientClanStateEvent"] = betterproto.message_field(6)
    announcements: List["CMsgClientClanStateEvent"] = betterproto.message_field(7)
    chat_room_private: bool = betterproto.bool_field(8)


@dataclass(eq=False, repr=False)
class CMsgClientClanStateNameInfo(betterproto.Message):
    clan_name: str = betterproto.string_field(1)
    sha_avatar: bytes = betterproto.bytes_field(2)


@dataclass(eq=False, repr=False)
class CMsgClientClanStateUserCounts(betterproto.Message):
    members: int = betterproto.uint32_field(1)
    online: int = betterproto.uint32_field(2)
    chatting: int = betterproto.uint32_field(3)
    in_game: int = betterproto.uint32_field(4)
    chat_room_members: int = betterproto.uint32_field(5)


@dataclass(eq=False, repr=False)
class CMsgClientClanStateEvent(betterproto.Message):
    gid: float = betterproto.fixed64_field(1)
    event_time: int = betterproto.uint32_field(2)
    headline: str = betterproto.string_field(3)
    game_id: float = betterproto.fixed64_field(4)
    just_posted: bool = betterproto.bool_field(5)


@dataclass(eq=False, repr=False)
class CMsgClientUnsignedInstallScript(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    file_name: str = betterproto.string_field(2)
    file_size: int = betterproto.uint32_field(3)
    signature_broken: bool = betterproto.bool_field(4)
    depot_id: int = betterproto.uint32_field(5)
    manifest_id: int = betterproto.uint64_field(6)
    file_flags: int = betterproto.uint32_field(7)
