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

from dataclasses import dataclass
from typing import List

import betterproto

from .steammessages_base import CMsgIPAddress


@dataclass
class CMsgClientUCMAddScreenshot(betterproto.Message):
    appid: int = betterproto.uint32_field(1)
    filename: str = betterproto.string_field(2)
    thumbname: str = betterproto.string_field(3)
    vr_filename: str = betterproto.string_field(14)
    rtime32_created: float = betterproto.fixed32_field(4)
    width: int = betterproto.uint32_field(5)
    height: int = betterproto.uint32_field(6)
    permissions: int = betterproto.uint32_field(7)
    caption: str = betterproto.string_field(8)
    shortcut_name: str = betterproto.string_field(9)
    tag: List["CMsgClientUCMAddScreenshotTag"] = betterproto.message_field(10)
    tagged_steamid: List[float] = betterproto.fixed64_field(11)
    spoiler_tag: bool = betterproto.bool_field(12)
    tagged_publishedfileid: List[int] = betterproto.uint64_field(13)


@dataclass
class CMsgClientUCMAddScreenshotTag(betterproto.Message):
    tag_name: str = betterproto.string_field(1)
    tag_value: str = betterproto.string_field(2)


@dataclass
class CMsgClientUCMAddScreenshotResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    screenshotid: float = betterproto.fixed64_field(2)


@dataclass
class CMsgClientUCMDeleteScreenshot(betterproto.Message):
    screenshotid: float = betterproto.fixed64_field(1)


@dataclass
class CMsgClientUCMDeleteScreenshotResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)


@dataclass
class CMsgClientUCMPublishFile(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    file_name: str = betterproto.string_field(2)
    preview_file_name: str = betterproto.string_field(3)
    consumer_app_id: int = betterproto.uint32_field(4)
    title: str = betterproto.string_field(5)
    description: str = betterproto.string_field(6)
    tags: List[str] = betterproto.string_field(8)
    workshop_file: bool = betterproto.bool_field(9)
    visibility: int = betterproto.int32_field(10)
    file_type: int = betterproto.uint32_field(11)
    url: str = betterproto.string_field(12)
    video_provider: int = betterproto.uint32_field(13)
    video_account_name: str = betterproto.string_field(14)
    video_identifier: str = betterproto.string_field(15)
    in_progress: bool = betterproto.bool_field(16)


@dataclass
class CMsgClientUCMPublishFileResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    published_file_id: float = betterproto.fixed64_field(2)
    needs_workshop_legal_agreement_acceptance: bool = betterproto.bool_field(3)


@dataclass
class CMsgClientUCMUpdatePublishedFile(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    published_file_id: float = betterproto.fixed64_field(2)
    file_name: str = betterproto.string_field(3)
    preview_file_name: str = betterproto.string_field(4)
    title: str = betterproto.string_field(5)
    description: str = betterproto.string_field(6)
    tags: List[str] = betterproto.string_field(7)
    visibility: int = betterproto.int32_field(8)
    update_file: bool = betterproto.bool_field(9)
    update_preview_file: bool = betterproto.bool_field(10)
    update_title: bool = betterproto.bool_field(11)
    update_description: bool = betterproto.bool_field(12)
    update_tags: bool = betterproto.bool_field(13)
    update_visibility: bool = betterproto.bool_field(14)
    change_description: str = betterproto.string_field(15)
    update_url: bool = betterproto.bool_field(16)
    url: str = betterproto.string_field(17)
    update_content_manifest: bool = betterproto.bool_field(18)
    content_manifest: float = betterproto.fixed64_field(19)
    metadata: str = betterproto.string_field(20)
    update_metadata: bool = betterproto.bool_field(21)
    language: int = betterproto.int32_field(22)
    removed_kvtags: List[str] = betterproto.string_field(23)
    kvtags: List["CMsgClientUCMUpdatePublishedFileKeyValueTag"] = betterproto.message_field(24)
    previews: List["CMsgClientUCMUpdatePublishedFileAdditionalPreview"] = betterproto.message_field(25)
    previews_to_remove: List[int] = betterproto.int32_field(26)
    clear_in_progress: bool = betterproto.bool_field(27)
    remove_all_kvtags: bool = betterproto.bool_field(28)


@dataclass
class CMsgClientUCMUpdatePublishedFileKeyValueTag(betterproto.Message):
    key: str = betterproto.string_field(1)
    value: str = betterproto.string_field(2)


@dataclass
class CMsgClientUCMUpdatePublishedFileAdditionalPreview(betterproto.Message):
    original_file_name: str = betterproto.string_field(1)
    internal_file_name: str = betterproto.string_field(2)
    videoid: str = betterproto.string_field(3)
    preview_type: int = betterproto.uint32_field(4)
    update_index: int = betterproto.int32_field(5)


@dataclass
class CMsgClientUCMUpdatePublishedFileResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    needs_workshop_legal_agreement_acceptance: bool = betterproto.bool_field(2)


@dataclass
class CMsgClientUCMDeletePublishedFile(betterproto.Message):
    published_file_id: float = betterproto.fixed64_field(1)
    app_id: int = betterproto.uint32_field(2)


@dataclass
class CMsgClientUCMDeletePublishedFileResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)


@dataclass
class CMsgClientUCMEnumerateUserPublishedFiles(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    start_index: int = betterproto.uint32_field(2)
    sort_order: int = betterproto.uint32_field(3)


@dataclass
class CMsgClientUCMEnumerateUserPublishedFilesResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    published_files: List[
        "CMsgClientUCMEnumerateUserPublishedFilesResponsePublishedFileId"
    ] = betterproto.message_field(2)
    total_results: int = betterproto.uint32_field(3)


@dataclass
class CMsgClientUCMEnumerateUserPublishedFilesResponsePublishedFileId(betterproto.Message):
    published_file_id: float = betterproto.fixed64_field(1)


@dataclass
class CMsgClientUCMEnumerateUserSubscribedFiles(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    start_index: int = betterproto.uint32_field(2)
    list_type: int = betterproto.uint32_field(3)
    matching_file_type: int = betterproto.uint32_field(4)
    count: int = betterproto.uint32_field(5)


@dataclass
class CMsgClientUCMEnumerateUserSubscribedFilesResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    subscribed_files: List[
        "CMsgClientUCMEnumerateUserSubscribedFilesResponsePublishedFileId"
    ] = betterproto.message_field(2)
    total_results: int = betterproto.uint32_field(3)


@dataclass
class CMsgClientUCMEnumerateUserSubscribedFilesResponsePublishedFileId(betterproto.Message):
    published_file_id: float = betterproto.fixed64_field(1)
    rtime32_subscribed: float = betterproto.fixed32_field(2)


@dataclass
class CMsgClientUCMEnumerateUserSubscribedFilesWithUpdates(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    start_index: int = betterproto.uint32_field(2)
    start_time: float = betterproto.fixed32_field(3)
    desired_revision: int = betterproto.uint32_field(4)


@dataclass
class CMsgClientUCMEnumerateUserSubscribedFilesWithUpdatesResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    subscribed_files: List[
        "CMsgClientUCMEnumerateUserSubscribedFilesWithUpdatesResponsePublishedFileId"
    ] = betterproto.message_field(2)
    total_results: int = betterproto.uint32_field(3)


@dataclass
class CMsgClientUCMEnumerateUserSubscribedFilesWithUpdatesResponsePublishedFileId(betterproto.Message):
    published_file_id: float = betterproto.fixed64_field(1)
    rtime32_subscribed: float = betterproto.fixed32_field(2)
    appid: int = betterproto.uint32_field(3)
    file_hcontent: float = betterproto.fixed64_field(4)
    file_size: int = betterproto.uint32_field(5)
    rtime32_last_updated: float = betterproto.fixed32_field(6)
    is_depot_content: bool = betterproto.bool_field(7)


@dataclass
class CMsgClientUCMPublishedFileUpdated(betterproto.Message):
    published_file_id: float = betterproto.fixed64_field(1)
    app_id: int = betterproto.uint32_field(2)
    time_updated: int = betterproto.uint32_field(3)
    hcontent: float = betterproto.fixed64_field(4)
    file_size: float = betterproto.fixed32_field(5)
    is_depot_content: bool = betterproto.bool_field(6)
    revision: int = betterproto.uint32_field(7)


@dataclass
class CMsgClientWorkshopItemChangesRequest(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    last_time_updated: int = betterproto.uint32_field(2)
    num_items_needed: int = betterproto.uint32_field(3)


@dataclass
class CMsgClientWorkshopItemChangesResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    update_time: int = betterproto.uint32_field(2)
    workshop_items: List["CMsgClientWorkshopItemChangesResponseWorkshopItemInfo"] = betterproto.message_field(5)


@dataclass
class CMsgClientWorkshopItemChangesResponseWorkshopItemInfo(betterproto.Message):
    published_file_id: float = betterproto.fixed64_field(1)
    time_updated: int = betterproto.uint32_field(2)
    manifest_id: float = betterproto.fixed64_field(3)


@dataclass
class CMsgClientWorkshopItemInfoRequest(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    last_time_updated: int = betterproto.uint32_field(2)
    workshop_items: List["CMsgClientWorkshopItemInfoRequestWorkshopItem"] = betterproto.message_field(3)


@dataclass
class CMsgClientWorkshopItemInfoRequestWorkshopItem(betterproto.Message):
    published_file_id: float = betterproto.fixed64_field(1)
    time_updated: int = betterproto.uint32_field(2)


@dataclass
class CMsgClientWorkshopItemInfoResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    update_time: int = betterproto.uint32_field(2)
    workshop_items: List["CMsgClientWorkshopItemInfoResponseWorkshopItemInfo"] = betterproto.message_field(3)
    private_items: List[float] = betterproto.fixed64_field(4)


@dataclass
class CMsgClientWorkshopItemInfoResponseWorkshopItemInfo(betterproto.Message):
    published_file_id: float = betterproto.fixed64_field(1)
    time_updated: int = betterproto.uint32_field(2)
    manifest_id: float = betterproto.fixed64_field(3)
    is_legacy: bool = betterproto.bool_field(4)


@dataclass
class CMsgClientUCMGetPublishedFilesForUser(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    creator_steam_id: float = betterproto.fixed64_field(2)
    required_tags: List[str] = betterproto.string_field(3)
    excluded_tags: List[str] = betterproto.string_field(4)
    start_index: int = betterproto.uint32_field(5)


@dataclass
class CMsgClientUCMGetPublishedFilesForUserResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    published_files: List["CMsgClientUCMGetPublishedFilesForUserResponsePublishedFileId"] = betterproto.message_field(2)
    total_results: int = betterproto.uint32_field(3)


@dataclass
class CMsgClientUCMGetPublishedFilesForUserResponsePublishedFileId(betterproto.Message):
    published_file_id: float = betterproto.fixed64_field(1)


@dataclass
class CMsgClientUCMSetUserPublishedFileAction(betterproto.Message):
    published_file_id: float = betterproto.fixed64_field(1)
    app_id: int = betterproto.uint32_field(2)
    action: int = betterproto.int32_field(3)


@dataclass
class CMsgClientUCMSetUserPublishedFileActionResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)


@dataclass
class CMsgClientUCMEnumeratePublishedFilesByUserAction(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    start_index: int = betterproto.uint32_field(2)
    action: int = betterproto.int32_field(3)


@dataclass
class CMsgClientUCMEnumeratePublishedFilesByUserActionResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    published_files: List[
        "CMsgClientUCMEnumeratePublishedFilesByUserActionResponsePublishedFileId"
    ] = betterproto.message_field(2)
    total_results: int = betterproto.uint32_field(3)


@dataclass
class CMsgClientUCMEnumeratePublishedFilesByUserActionResponsePublishedFileId(betterproto.Message):
    published_file_id: float = betterproto.fixed64_field(1)
    rtime_time_stamp: float = betterproto.fixed32_field(2)


@dataclass
class CMsgClientScreenshotsChanged(betterproto.Message):
    pass


@dataclass
class CMsgClientUpdateUserGameInfo(betterproto.Message):
    steamid_idgs: float = betterproto.fixed64_field(1)
    gameid: float = betterproto.fixed64_field(2)
    game_ip: int = betterproto.uint32_field(3)
    game_port: int = betterproto.uint32_field(4)
    token: bytes = betterproto.bytes_field(5)


@dataclass
class CMsgClientRichPresenceUpload(betterproto.Message):
    rich_presence_kv: bytes = betterproto.bytes_field(1)
    steamid_broadcast: List[float] = betterproto.fixed64_field(2)


@dataclass
class CMsgClientRichPresenceRequest(betterproto.Message):
    steamid_request: List[float] = betterproto.fixed64_field(1)


@dataclass
class CMsgClientRichPresenceInfo(betterproto.Message):
    rich_presence: List["CMsgClientRichPresenceInfoRichPresence"] = betterproto.message_field(1)


@dataclass
class CMsgClientRichPresenceInfoRichPresence(betterproto.Message):
    steamid_user: float = betterproto.fixed64_field(1)
    rich_presence_kv: bytes = betterproto.bytes_field(2)


@dataclass
class CMsgClientCheckFileSignature(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)


@dataclass
class CMsgClientCheckFileSignatureResponse(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    pid: int = betterproto.uint32_field(2)
    eresult: int = betterproto.uint32_field(3)
    filename: str = betterproto.string_field(4)
    esignatureresult: int = betterproto.uint32_field(5)
    sha_file: bytes = betterproto.bytes_field(6)
    signatureheader: bytes = betterproto.bytes_field(7)
    filesize: int = betterproto.uint32_field(8)
    getlasterror: int = betterproto.uint32_field(9)
    evalvesignaturecheckdetail: int = betterproto.uint32_field(10)


@dataclass
class CMsgClientRegisterKey(betterproto.Message):
    key: str = betterproto.string_field(1)


@dataclass
class CMsgClientPurchaseResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    purchase_result_details: int = betterproto.int32_field(2)
    purchase_receipt_info: bytes = betterproto.bytes_field(3)


@dataclass
class CMsgClientActivateOEMLicense(betterproto.Message):
    bios_manufacturer: str = betterproto.string_field(1)
    bios_serialnumber: str = betterproto.string_field(2)
    license_file: bytes = betterproto.bytes_field(3)
    mainboard_manufacturer: str = betterproto.string_field(4)
    mainboard_product: str = betterproto.string_field(5)
    mainboard_serialnumber: str = betterproto.string_field(6)


@dataclass
class CMsgClientRegisterOEMMachine(betterproto.Message):
    oem_register_file: bytes = betterproto.bytes_field(1)


@dataclass
class CMsgClientRegisterOEMMachineResponse(betterproto.Message):
    eresult: int = betterproto.uint32_field(1)


@dataclass
class CMsgClientPurchaseWithMachineID(betterproto.Message):
    package_id: int = betterproto.uint32_field(1)
    machine_info: bytes = betterproto.bytes_field(2)


@dataclass
class CMsgTrading_InitiateTradeRequest(betterproto.Message):
    trade_request_id: int = betterproto.uint32_field(1)
    other_steamid: int = betterproto.uint64_field(2)
    other_name: str = betterproto.string_field(3)


@dataclass
class CMsgTrading_InitiateTradeResponse(betterproto.Message):
    response: int = betterproto.uint32_field(1)
    trade_request_id: int = betterproto.uint32_field(2)
    other_steamid: int = betterproto.uint64_field(3)
    steamguard_required_days: int = betterproto.uint32_field(4)
    new_device_cooldown_days: int = betterproto.uint32_field(5)
    default_password_reset_probation_days: int = betterproto.uint32_field(6)
    password_reset_probation_days: int = betterproto.uint32_field(7)
    default_email_change_probation_days: int = betterproto.uint32_field(8)
    email_change_probation_days: int = betterproto.uint32_field(9)


@dataclass
class CMsgTrading_CancelTradeRequest(betterproto.Message):
    other_steamid: int = betterproto.uint64_field(1)


@dataclass
class CMsgTrading_StartSession(betterproto.Message):
    other_steamid: int = betterproto.uint64_field(1)


@dataclass
class CMsgClientGetCDNAuthToken(betterproto.Message):
    depot_id: int = betterproto.uint32_field(1)
    host_name: str = betterproto.string_field(2)
    app_id: int = betterproto.uint32_field(3)


@dataclass
class CMsgClientGetDepotDecryptionKey(betterproto.Message):
    depot_id: int = betterproto.uint32_field(1)
    app_id: int = betterproto.uint32_field(2)


@dataclass
class CMsgClientGetDepotDecryptionKeyResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    depot_id: int = betterproto.uint32_field(2)
    depot_encryption_key: bytes = betterproto.bytes_field(3)


@dataclass
class CMsgClientCheckAppBetaPassword(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    betapassword: str = betterproto.string_field(2)


@dataclass
class CMsgClientCheckAppBetaPasswordResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    betapasswords: List["CMsgClientCheckAppBetaPasswordResponseBetaPassword"] = betterproto.message_field(4)


@dataclass
class CMsgClientCheckAppBetaPasswordResponseBetaPassword(betterproto.Message):
    betaname: str = betterproto.string_field(1)
    betapassword: str = betterproto.string_field(2)


@dataclass
class CMsgClientUpdateAppJobReport(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    depot_ids: List[int] = betterproto.uint32_field(2)
    app_state: int = betterproto.uint32_field(3)
    job_app_error: int = betterproto.uint32_field(4)
    error_details: str = betterproto.string_field(5)
    job_duration: int = betterproto.uint32_field(6)
    files_validation_failed: int = betterproto.uint32_field(7)
    job_bytes_downloaded: int = betterproto.uint64_field(8)
    job_bytes_staged: int = betterproto.uint64_field(9)
    bytes_comitted: int = betterproto.uint64_field(10)
    start_app_state: int = betterproto.uint32_field(11)
    stats_machine_id: float = betterproto.fixed64_field(12)
    branch_name: str = betterproto.string_field(13)
    total_bytes_downloaded: int = betterproto.uint64_field(14)
    total_bytes_staged: int = betterproto.uint64_field(15)
    total_bytes_restored: int = betterproto.uint64_field(16)
    is_borrowed: bool = betterproto.bool_field(17)
    is_free_weekend: bool = betterproto.bool_field(18)
    total_bytes_legacy: int = betterproto.uint64_field(19)
    total_bytes_patched: int = betterproto.uint64_field(20)
    total_bytes_saved: int = betterproto.uint64_field(21)
    cell_id: int = betterproto.uint32_field(22)


@dataclass
class CMsgClientDPContentStatsReport(betterproto.Message):
    stats_machine_id: float = betterproto.fixed64_field(1)
    country_code: str = betterproto.string_field(2)
    os_type: int = betterproto.int32_field(3)
    language: int = betterproto.int32_field(4)
    num_install_folders: int = betterproto.uint32_field(5)
    num_installed_games: int = betterproto.uint32_field(6)
    size_installed_games: int = betterproto.uint64_field(7)


@dataclass
class CMsgClientGetCDNAuthTokenResponse(betterproto.Message):
    eresult: int = betterproto.uint32_field(1)
    token: str = betterproto.string_field(2)
    expiration_time: int = betterproto.uint32_field(3)


@dataclass
class CMsgDownloadRateStatistics(betterproto.Message):
    cell_id: int = betterproto.uint32_field(1)
    stats: List["CMsgDownloadRateStatisticsStatsInfo"] = betterproto.message_field(2)
    throttling_kbps: int = betterproto.uint32_field(3)


@dataclass
class CMsgDownloadRateStatisticsStatsInfo(betterproto.Message):
    source_type: int = betterproto.uint32_field(1)
    source_id: int = betterproto.uint32_field(2)
    seconds: int = betterproto.uint32_field(3)
    bytes: int = betterproto.uint64_field(4)
    host_name: str = betterproto.string_field(5)
    microseconds: int = betterproto.uint64_field(6)
    used_ipv6: bool = betterproto.bool_field(7)
    proxied: bool = betterproto.bool_field(8)


@dataclass
class CMsgClientRequestAccountData(betterproto.Message):
    account_or_email: str = betterproto.string_field(1)
    action: int = betterproto.uint32_field(2)


@dataclass
class CMsgClientRequestAccountDataResponse(betterproto.Message):
    action: int = betterproto.uint32_field(1)
    eresult: int = betterproto.uint32_field(2)
    account_name: str = betterproto.string_field(3)
    ct_matches: int = betterproto.uint32_field(4)
    account_name_suggestion1: str = betterproto.string_field(5)
    account_name_suggestion2: str = betterproto.string_field(6)
    account_name_suggestion3: str = betterproto.string_field(7)


@dataclass
class CMsgClientUGSGetGlobalStats(betterproto.Message):
    gameid: int = betterproto.uint64_field(1)
    history_days_requested: int = betterproto.uint32_field(2)
    time_last_requested: float = betterproto.fixed32_field(3)
    first_day_cached: int = betterproto.uint32_field(4)
    days_cached: int = betterproto.uint32_field(5)


@dataclass
class CMsgClientUGSGetGlobalStatsResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    timestamp: float = betterproto.fixed32_field(2)
    day_current: int = betterproto.int32_field(3)
    days: List["CMsgClientUGSGetGlobalStatsResponseDay"] = betterproto.message_field(4)


@dataclass
class CMsgClientUGSGetGlobalStatsResponseDay(betterproto.Message):
    day_id: int = betterproto.uint32_field(1)
    stats: List["CMsgClientUGSGetGlobalStatsResponseDayStat"] = betterproto.message_field(2)


@dataclass
class CMsgClientUGSGetGlobalStatsResponseDayStat(betterproto.Message):
    stat_id: int = betterproto.int32_field(1)
    data: int = betterproto.int64_field(2)


@dataclass
class CMsgGameServerData(betterproto.Message):
    steam_id_gs: float = betterproto.fixed64_field(1)
    deprecated_ip: int = betterproto.uint32_field(2)
    query_port: int = betterproto.uint32_field(3)
    game_port: int = betterproto.uint32_field(4)
    sourcetv_port: int = betterproto.uint32_field(5)
    name: str = betterproto.string_field(22)
    game_ip_address: "CMsgIPAddress" = betterproto.message_field(23)
    app_id: int = betterproto.uint32_field(6)
    gamedir: str = betterproto.string_field(7)
    version: str = betterproto.string_field(8)
    product: str = betterproto.string_field(9)
    region: str = betterproto.string_field(10)
    players: List["CMsgGameServerDataPlayer"] = betterproto.message_field(11)
    max_players: int = betterproto.uint32_field(12)
    bot_count: int = betterproto.uint32_field(13)
    password: bool = betterproto.bool_field(14)
    secure: bool = betterproto.bool_field(15)
    dedicated: bool = betterproto.bool_field(16)
    os: str = betterproto.string_field(17)
    game_data: str = betterproto.string_field(18)
    game_data_version: int = betterproto.uint32_field(19)
    game_type: str = betterproto.string_field(20)
    map: str = betterproto.string_field(21)


@dataclass
class CMsgGameServerDataPlayer(betterproto.Message):
    steam_id: float = betterproto.fixed64_field(1)


@dataclass
class CMsgGameServerRemove(betterproto.Message):
    steam_id: float = betterproto.fixed64_field(1)
    deprecated_ip: int = betterproto.uint32_field(2)
    query_port: int = betterproto.uint32_field(3)
    ip: "CMsgIPAddress" = betterproto.message_field(4)


@dataclass
class CMsgClientGMSServerQuery(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    geo_location_ip: int = betterproto.uint32_field(2)
    region_code: int = betterproto.uint32_field(3)
    filter_text: str = betterproto.string_field(4)
    max_servers: int = betterproto.uint32_field(5)


@dataclass
class CMsgGMSClientServerQueryResponse(betterproto.Message):
    servers: List["CMsgGMSClientServerQueryResponseServer"] = betterproto.message_field(1)
    error: str = betterproto.string_field(2)


@dataclass
class CMsgGMSClientServerQueryResponseServer(betterproto.Message):
    deprecated_server_ip: int = betterproto.uint32_field(1)
    server_port: int = betterproto.uint32_field(2)
    auth_players: int = betterproto.uint32_field(3)
    server_ip: "CMsgIPAddress" = betterproto.message_field(4)


@dataclass
class CMsgGameServerOutOfDate(betterproto.Message):
    steam_id_gs: float = betterproto.fixed64_field(1)
    reject: bool = betterproto.bool_field(2)
    message: str = betterproto.string_field(3)


@dataclass
class CMsgClientRedeemGuestPass(betterproto.Message):
    guest_pass_id: float = betterproto.fixed64_field(1)


@dataclass
class CMsgClientRedeemGuestPassResponse(betterproto.Message):
    eresult: int = betterproto.uint32_field(1)
    package_id: int = betterproto.uint32_field(2)
    must_own_appid: int = betterproto.uint32_field(3)


@dataclass
class CMsgClientGetClanActivityCounts(betterproto.Message):
    steamid_clans: List[int] = betterproto.uint64_field(1)


@dataclass
class CMsgClientGetClanActivityCountsResponse(betterproto.Message):
    eresult: int = betterproto.uint32_field(1)


@dataclass
class CMsgClientOGSReportString(betterproto.Message):
    accumulated: bool = betterproto.bool_field(1)
    sessionid: int = betterproto.uint64_field(2)
    severity: int = betterproto.int32_field(3)
    formatter: str = betterproto.string_field(4)
    varargs: bytes = betterproto.bytes_field(5)


@dataclass
class CMsgClientOGSReportBug(betterproto.Message):
    sessionid: int = betterproto.uint64_field(1)
    bugtext: str = betterproto.string_field(2)
    screenshot: bytes = betterproto.bytes_field(3)


@dataclass
class CMsgGSAssociateWithClan(betterproto.Message):
    steam_id_clan: float = betterproto.fixed64_field(1)


@dataclass
class CMsgGSAssociateWithClanResponse(betterproto.Message):
    steam_id_clan: float = betterproto.fixed64_field(1)
    eresult: int = betterproto.uint32_field(2)


@dataclass
class CMsgGSComputeNewPlayerCompatibility(betterproto.Message):
    steam_id_candidate: float = betterproto.fixed64_field(1)


@dataclass
class CMsgGSComputeNewPlayerCompatibilityResponse(betterproto.Message):
    steam_id_candidate: float = betterproto.fixed64_field(1)
    eresult: int = betterproto.uint32_field(2)
    is_clan_member: bool = betterproto.bool_field(3)
    ct_dont_like_you: int = betterproto.int32_field(4)
    ct_you_dont_like: int = betterproto.int32_field(5)
    ct_clanmembers_dont_like_you: int = betterproto.int32_field(6)


@dataclass
class CMsgClientSentLogs(betterproto.Message):
    pass


@dataclass
class CMsgGCClient(betterproto.Message):
    appid: int = betterproto.uint32_field(1)
    msgtype: int = betterproto.uint32_field(2)
    payload: bytes = betterproto.bytes_field(3)
    steamid: float = betterproto.fixed64_field(4)
    gcname: str = betterproto.string_field(5)
    ip: int = betterproto.uint32_field(6)


@dataclass
class CMsgClientRequestFreeLicense(betterproto.Message):
    appids: List[int] = betterproto.uint32_field(2)


@dataclass
class CMsgClientRequestFreeLicenseResponse(betterproto.Message):
    eresult: int = betterproto.uint32_field(1)
    granted_packageids: List[int] = betterproto.uint32_field(2)
    granted_appids: List[int] = betterproto.uint32_field(3)


@dataclass
class CMsgDRMDownloadRequestWithCrashData(betterproto.Message):
    download_flags: int = betterproto.uint32_field(1)
    download_types_known: int = betterproto.uint32_field(2)
    guid_drm: bytes = betterproto.bytes_field(3)
    guid_split: bytes = betterproto.bytes_field(4)
    guid_merge: bytes = betterproto.bytes_field(5)
    module_name: str = betterproto.string_field(6)
    module_path: str = betterproto.string_field(7)
    crash_data: bytes = betterproto.bytes_field(8)


@dataclass
class CMsgDRMDownloadResponse(betterproto.Message):
    eresult: int = betterproto.uint32_field(1)
    app_id: int = betterproto.uint32_field(2)
    blob_download_type: int = betterproto.uint32_field(3)
    merge_guid: bytes = betterproto.bytes_field(4)
    download_file_dfs_ip: int = betterproto.uint32_field(5)
    download_file_dfs_port: int = betterproto.uint32_field(6)
    download_file_url: str = betterproto.string_field(7)
    module_path: str = betterproto.string_field(8)


@dataclass
class CMsgDRMFinalResult(betterproto.Message):
    e_result: int = betterproto.uint32_field(1)
    app_id: int = betterproto.uint32_field(2)
    blob_download_type: int = betterproto.uint32_field(3)
    error_detail: int = betterproto.uint32_field(4)
    merge_guid: bytes = betterproto.bytes_field(5)
    download_file_dfs_ip: int = betterproto.uint32_field(6)
    download_file_dfs_port: int = betterproto.uint32_field(7)
    download_file_url: str = betterproto.string_field(8)


@dataclass
class CMsgClientDPCheckSpecialSurvey(betterproto.Message):
    survey_id: int = betterproto.uint32_field(1)


@dataclass
class CMsgClientDPCheckSpecialSurveyResponse(betterproto.Message):
    e_result: int = betterproto.uint32_field(1)
    state: int = betterproto.uint32_field(2)
    name: str = betterproto.string_field(3)
    custom_url: str = betterproto.string_field(4)
    include_software: bool = betterproto.bool_field(5)
    token: bytes = betterproto.bytes_field(6)


@dataclass
class CMsgClientDPSendSpecialSurveyResponse(betterproto.Message):
    survey_id: int = betterproto.uint32_field(1)
    data: bytes = betterproto.bytes_field(2)


@dataclass
class CMsgClientDPSendSpecialSurveyResponseReply(betterproto.Message):
    e_result: int = betterproto.uint32_field(1)
    token: bytes = betterproto.bytes_field(2)


@dataclass
class CMsgClientRequestForgottenPasswordEmail(betterproto.Message):
    account_name: str = betterproto.string_field(1)
    password_tried: str = betterproto.string_field(2)


@dataclass
class CMsgClientRequestForgottenPasswordEmailResponse(betterproto.Message):
    e_result: int = betterproto.uint32_field(1)
    use_secret_question: bool = betterproto.bool_field(2)


@dataclass
class CMsgClientItemAnnouncements(betterproto.Message):
    count_new_items: int = betterproto.uint32_field(1)
    unseen_items: List["CMsgClientItemAnnouncementsUnseenItem"] = betterproto.message_field(2)


@dataclass
class CMsgClientItemAnnouncementsUnseenItem(betterproto.Message):
    appid: int = betterproto.uint32_field(1)
    context_id: int = betterproto.uint64_field(2)
    asset_id: int = betterproto.uint64_field(3)
    amount: int = betterproto.uint64_field(4)
    rtime32_gained: float = betterproto.fixed32_field(5)
    source_appid: int = betterproto.uint32_field(6)


@dataclass
class CMsgClientRequestItemAnnouncements(betterproto.Message):
    pass


@dataclass
class CMsgClientUserNotifications(betterproto.Message):
    notifications: List["CMsgClientUserNotificationsNotification"] = betterproto.message_field(1)


@dataclass
class CMsgClientUserNotificationsNotification(betterproto.Message):
    type: int = betterproto.uint32_field(1)
    count: int = betterproto.uint32_field(2)


@dataclass
class CMsgClientCommentNotifications(betterproto.Message):
    count_new_comments: int = betterproto.uint32_field(1)
    count_new_comments_owner: int = betterproto.uint32_field(2)
    count_new_comments_subscriptions: int = betterproto.uint32_field(3)


@dataclass
class CMsgClientRequestCommentNotifications(betterproto.Message):
    pass


@dataclass
class CMsgClientOfflineMessageNotification(betterproto.Message):
    offline_messages: int = betterproto.uint32_field(1)
    friends_with_offline_messages: List[int] = betterproto.uint32_field(2)


@dataclass
class CMsgClientRequestOfflineMessageCount(betterproto.Message):
    pass


@dataclass
class CMsgClientChatGetFriendMessageHistory(betterproto.Message):
    steamid: float = betterproto.fixed64_field(1)


@dataclass
class CMsgClientChatGetFriendMessageHistoryResponse(betterproto.Message):
    steamid: float = betterproto.fixed64_field(1)
    success: int = betterproto.uint32_field(2)
    messages: List["CMsgClientChatGetFriendMessageHistoryResponseFriendMessage"] = betterproto.message_field(3)


@dataclass
class CMsgClientChatGetFriendMessageHistoryResponseFriendMessage(betterproto.Message):
    accountid: int = betterproto.uint32_field(1)
    timestamp: int = betterproto.uint32_field(2)
    message: str = betterproto.string_field(3)
    unread: bool = betterproto.bool_field(4)


@dataclass
class CMsgClientChatGetFriendMessageHistoryForOfflineMessages(betterproto.Message):
    pass


@dataclass
class CMsgClientFSGetFriendsSteamLevels(betterproto.Message):
    accountids: List[int] = betterproto.uint32_field(1)


@dataclass
class CMsgClientFSGetFriendsSteamLevelsResponse(betterproto.Message):
    friends: List["CMsgClientFSGetFriendsSteamLevelsResponseFriend"] = betterproto.message_field(1)


@dataclass
class CMsgClientFSGetFriendsSteamLevelsResponseFriend(betterproto.Message):
    accountid: int = betterproto.uint32_field(1)
    level: int = betterproto.uint32_field(2)


@dataclass
class CMsgClientEmailAddrInfo(betterproto.Message):
    email_address: str = betterproto.string_field(1)
    email_is_validated: bool = betterproto.bool_field(2)
    email_validation_changed: bool = betterproto.bool_field(3)
    credential_change_requires_code: bool = betterproto.bool_field(4)
    password_or_secretqa_change_requires_code: bool = betterproto.bool_field(5)
    remind_user_about_email: bool = betterproto.bool_field(6)


@dataclass
class CMsgCREItemVoteSummary(betterproto.Message):
    published_file_ids: List["CMsgCREItemVoteSummaryPublishedFileId"] = betterproto.message_field(1)


@dataclass
class CMsgCREItemVoteSummaryPublishedFileId(betterproto.Message):
    published_file_id: float = betterproto.fixed64_field(1)


@dataclass
class CMsgCREItemVoteSummaryResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    item_vote_summaries: List["CMsgCREItemVoteSummaryResponseItemVoteSummary"] = betterproto.message_field(2)


@dataclass
class CMsgCREItemVoteSummaryResponseItemVoteSummary(betterproto.Message):
    published_file_id: float = betterproto.fixed64_field(1)
    votes_for: int = betterproto.int32_field(2)
    votes_against: int = betterproto.int32_field(3)
    reports: int = betterproto.int32_field(4)
    score: float = betterproto.float_field(5)


@dataclass
class CMsgCREUpdateUserPublishedItemVote(betterproto.Message):
    published_file_id: float = betterproto.fixed64_field(1)
    vote_up: bool = betterproto.bool_field(2)


@dataclass
class CMsgCREUpdateUserPublishedItemVoteResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)


@dataclass
class CMsgCREGetUserPublishedItemVoteDetails(betterproto.Message):
    published_file_ids: List["CMsgCREGetUserPublishedItemVoteDetailsPublishedFileId"] = betterproto.message_field(1)


@dataclass
class CMsgCREGetUserPublishedItemVoteDetailsPublishedFileId(betterproto.Message):
    published_file_id: float = betterproto.fixed64_field(1)


@dataclass
class CMsgCREGetUserPublishedItemVoteDetailsResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    user_item_vote_details: List[
        "CMsgCREGetUserPublishedItemVoteDetailsResponseUserItemVoteDetail"
    ] = betterproto.message_field(2)


@dataclass
class CMsgCREGetUserPublishedItemVoteDetailsResponseUserItemVoteDetail(betterproto.Message):
    published_file_id: float = betterproto.fixed64_field(1)
    vote: int = betterproto.int32_field(2)


@dataclass
class CMsgGameServerPingSample(betterproto.Message):
    my_ip: float = betterproto.fixed32_field(1)
    gs_app_id: int = betterproto.int32_field(2)
    gs_samples: List["CMsgGameServerPingSampleSample"] = betterproto.message_field(3)


@dataclass
class CMsgGameServerPingSampleSample(betterproto.Message):
    ip: float = betterproto.fixed32_field(1)
    avg_ping_ms: int = betterproto.uint32_field(2)
    stddev_ping_ms_x10: int = betterproto.uint32_field(3)


@dataclass
class CMsgFSGetFollowerCount(betterproto.Message):
    steam_id: float = betterproto.fixed64_field(1)


@dataclass
class CMsgFSGetFollowerCountResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    count: int = betterproto.int32_field(2)


@dataclass
class CMsgFSGetIsFollowing(betterproto.Message):
    steam_id: float = betterproto.fixed64_field(1)


@dataclass
class CMsgFSGetIsFollowingResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    is_following: bool = betterproto.bool_field(2)


@dataclass
class CMsgFSEnumerateFollowingList(betterproto.Message):
    start_index: int = betterproto.uint32_field(1)


@dataclass
class CMsgFSEnumerateFollowingListResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    total_results: int = betterproto.int32_field(2)
    steam_ids: List[float] = betterproto.fixed64_field(3)


@dataclass
class CMsgDPGetNumberOfCurrentPlayers(betterproto.Message):
    appid: int = betterproto.uint32_field(1)


@dataclass
class CMsgDPGetNumberOfCurrentPlayersResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    player_count: int = betterproto.int32_field(2)


@dataclass
class CMsgClientFriendUserStatusPublished(betterproto.Message):
    friend_steamid: float = betterproto.fixed64_field(1)
    appid: int = betterproto.uint32_field(2)
    status_text: str = betterproto.string_field(3)


@dataclass
class CMsgClientServiceMethodLegacy(betterproto.Message):
    method_name: str = betterproto.string_field(1)
    serialized_method: bytes = betterproto.bytes_field(2)
    is_notification: bool = betterproto.bool_field(3)


@dataclass
class CMsgClientServiceMethodLegacyResponse(betterproto.Message):
    method_name: str = betterproto.string_field(1)
    serialized_method_response: bytes = betterproto.bytes_field(2)


@dataclass
class CMsgClientUIMode(betterproto.Message):
    uimode: int = betterproto.uint32_field(1)
    chat_mode: int = betterproto.uint32_field(2)


@dataclass
class CMsgClientVanityURLChangedNotification(betterproto.Message):
    vanity_url: str = betterproto.string_field(1)


@dataclass
class CMsgClientAuthorizeLocalDeviceRequest(betterproto.Message):
    device_description: str = betterproto.string_field(1)
    owner_account_id: int = betterproto.uint32_field(2)
    local_device_token: int = betterproto.uint64_field(3)


@dataclass
class CMsgClientAuthorizeLocalDevice(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    owner_account_id: int = betterproto.uint32_field(2)
    authed_device_token: int = betterproto.uint64_field(3)


@dataclass
class CMsgClientAuthorizeLocalDeviceNotification(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    owner_account_id: int = betterproto.uint32_field(2)
    local_device_token: int = betterproto.uint64_field(3)


@dataclass
class CMsgClientDeauthorizeDeviceRequest(betterproto.Message):
    deauthorization_account_id: int = betterproto.uint32_field(1)
    deauthorization_device_token: int = betterproto.uint64_field(2)


@dataclass
class CMsgClientDeauthorizeDevice(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    deauthorization_account_id: int = betterproto.uint32_field(2)


@dataclass
class CMsgClientUseLocalDeviceAuthorizations(betterproto.Message):
    authorization_account_id: List[int] = betterproto.uint32_field(1)
    device_tokens: List["CMsgClientUseLocalDeviceAuthorizationsDeviceToken"] = betterproto.message_field(2)


@dataclass
class CMsgClientUseLocalDeviceAuthorizationsDeviceToken(betterproto.Message):
    owner_account_id: int = betterproto.uint32_field(1)
    token_id: int = betterproto.uint64_field(2)


@dataclass
class CMsgClientGetAuthorizedDevices(betterproto.Message):
    pass


@dataclass
class CMsgClientGetAuthorizedDevicesResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    authorized_device: List["CMsgClientGetAuthorizedDevicesResponseAuthorizedDevice"] = betterproto.message_field(2)


@dataclass
class CMsgClientGetAuthorizedDevicesResponseAuthorizedDevice(betterproto.Message):
    auth_device_token: int = betterproto.uint64_field(1)
    device_name: str = betterproto.string_field(2)
    last_access_time: int = betterproto.uint32_field(3)
    borrower_id: int = betterproto.uint32_field(4)
    is_pending: bool = betterproto.bool_field(5)
    app_played: int = betterproto.uint32_field(6)


@dataclass
class CMsgClientSharedLibraryLockStatus(betterproto.Message):
    locked_library: List["CMsgClientSharedLibraryLockStatusLockedLibrary"] = betterproto.message_field(1)
    own_library_locked_by: int = betterproto.uint32_field(2)


@dataclass
class CMsgClientSharedLibraryLockStatusLockedLibrary(betterproto.Message):
    owner_id: int = betterproto.uint32_field(1)
    locked_by: int = betterproto.uint32_field(2)


@dataclass
class CMsgClientSharedLibraryStopPlaying(betterproto.Message):
    seconds_left: int = betterproto.int32_field(1)
    stop_apps: List["CMsgClientSharedLibraryStopPlayingStopApp"] = betterproto.message_field(2)


@dataclass
class CMsgClientSharedLibraryStopPlayingStopApp(betterproto.Message):
    app_id: int = betterproto.uint32_field(1)
    owner_id: int = betterproto.uint32_field(2)


@dataclass
class CMsgClientServiceCall(betterproto.Message):
    sysid_routing: bytes = betterproto.bytes_field(1)
    call_handle: int = betterproto.uint32_field(2)
    module_crc: int = betterproto.uint32_field(3)
    module_hash: bytes = betterproto.bytes_field(4)
    function_id: int = betterproto.uint32_field(5)
    cub_output_max: int = betterproto.uint32_field(6)
    flags: int = betterproto.uint32_field(7)
    callparameter: bytes = betterproto.bytes_field(8)
    ping_only: bool = betterproto.bool_field(9)
    max_outstanding_calls: int = betterproto.uint32_field(10)


@dataclass
class CMsgClientServiceModule(betterproto.Message):
    module_crc: int = betterproto.uint32_field(1)
    module_hash: bytes = betterproto.bytes_field(2)
    module_content: bytes = betterproto.bytes_field(3)


@dataclass
class CMsgClientServiceCallResponse(betterproto.Message):
    sysid_routing: bytes = betterproto.bytes_field(1)
    call_handle: int = betterproto.uint32_field(2)
    module_crc: int = betterproto.uint32_field(3)
    module_hash: bytes = betterproto.bytes_field(4)
    ecallresult: int = betterproto.uint32_field(5)
    result_content: bytes = betterproto.bytes_field(6)
    os_version_info: bytes = betterproto.bytes_field(7)
    system_info: bytes = betterproto.bytes_field(8)
    load_address: float = betterproto.fixed64_field(9)
    exception_record: bytes = betterproto.bytes_field(10)
    portable_os_version_info: bytes = betterproto.bytes_field(11)
    portable_system_info: bytes = betterproto.bytes_field(12)
    was_converted: bool = betterproto.bool_field(13)
    internal_result: int = betterproto.uint32_field(14)
    current_count: int = betterproto.uint32_field(15)
    last_call_handle: int = betterproto.uint32_field(16)
    last_call_module_crc: int = betterproto.uint32_field(17)
    last_call_sysid_routing: bytes = betterproto.bytes_field(18)
    last_ecallresult: int = betterproto.uint32_field(19)
    last_callissue_delta: int = betterproto.uint32_field(20)
    last_callcomplete_delta: int = betterproto.uint32_field(21)


@dataclass
class CMsgAMUnlockStreaming(betterproto.Message):
    pass


@dataclass
class CMsgAMUnlockStreamingResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)
    encryption_key: bytes = betterproto.bytes_field(2)


@dataclass
class CMsgAMUnlockHEVC(betterproto.Message):
    pass


@dataclass
class CMsgAMUnlockHEVCResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)


@dataclass
class CMsgClientPlayingSessionState(betterproto.Message):
    playing_blocked: bool = betterproto.bool_field(2)
    playing_app: int = betterproto.uint32_field(3)


@dataclass
class CMsgClientKickPlayingSession(betterproto.Message):
    only_stop_game: bool = betterproto.bool_field(1)


@dataclass
class CMsgClientVoiceCallPreAuthorize(betterproto.Message):
    caller_steamid: float = betterproto.fixed64_field(1)
    receiver_steamid: float = betterproto.fixed64_field(2)
    caller_id: int = betterproto.int32_field(3)
    hangup: bool = betterproto.bool_field(4)


@dataclass
class CMsgClientVoiceCallPreAuthorizeResponse(betterproto.Message):
    caller_steamid: float = betterproto.fixed64_field(1)
    receiver_steamid: float = betterproto.fixed64_field(2)
    eresult: int = betterproto.int32_field(3)
    caller_id: int = betterproto.int32_field(4)


@dataclass
class CMsgBadgeCraftedNotification(betterproto.Message):
    appid: int = betterproto.uint32_field(1)
    badge_level: int = betterproto.uint32_field(2)
