syntax = "proto2";
import "enums.proto";

option optimize_for = SPEED;
option py_generic_services = true;

enum EDisplayStatus {
	k_EDisplayStatusInvalid = 0;
	k_EDisplayStatusLaunching = 1;
	k_EDisplayStatusUninstalling = 2;
	k_EDisplayStatusInstalling = 3;
	k_EDisplayStatusRunning = 4;
	k_EDisplayStatusValidating = 5;
	k_EDisplayStatusUpdating = 6;
	k_EDisplayStatusDownloading = 7;
	k_EDisplayStatusSynchronizing = 8;
	k_EDisplayStatusReadyToInstall = 9;
	k_EDisplayStatusReadyToPreload = 10;
	k_EDisplayStatusReadyToLaunch = 11;
	k_EDisplayStatusRegionRestricted = 12;
	k_EDisplayStatusPresaleOnly = 13;
	k_EDisplayStatusInvalidPlatform = 14;
	k_EDisplayStatusPreloadComplete = 16;
	k_EDisplayStatusBorrowerLocked = 17;
	k_EDisplayStatusUpdatePaused = 18;
	k_EDisplayStatusUpdateQueued = 19;
	k_EDisplayStatusUpdateRequired = 20;
	k_EDisplayStatusUpdateDisabled = 21;
	k_EDisplayStatusDownloadPaused = 22;
	k_EDisplayStatusDownloadQueued = 23;
	k_EDisplayStatusDownloadRequired = 24;
	k_EDisplayStatusDownloadDisabled = 25;
	k_EDisplayStatusLicensePending = 26;
	k_EDisplayStatusLicenseExpired = 27;
	k_EDisplayStatusAvailForFree = 28;
	k_EDisplayStatusAvailToBorrow = 29;
	k_EDisplayStatusAvailGuestPass = 30;
	k_EDisplayStatusPurchase = 31;
	k_EDisplayStatusUnavailable = 32;
	k_EDisplayStatusNotLaunchable = 33;
	k_EDisplayStatusCloudError = 34;
	k_EDisplayStatusCloudOutOfDate = 35;
	k_EDisplayStatusTerminating = 36;
	k_EDisplayStatusOwnerLocked = 37;
	k_EDisplayStatusDownloadFailed = 38;
	k_EDisplayStatusUpdateFailed = 39;
}

enum EAppCloudStatus {
	k_EAppCloudStatusInvalid = 0;
	k_EAppCloudStatusDisabled = 1;
	k_EAppCloudStatusUnknown = 2;
	k_EAppCloudStatusSynchronized = 3;
	k_EAppCloudStatusChecking = 4;
	k_EAppCloudStatusOutOfSync = 5;
	k_EAppCloudStatusUploading = 6;
	k_EAppCloudStatusDownloading = 7;
	k_EAppCloudStatusSyncFailed = 8;
	k_EAppCloudStatusConflict = 9;
	k_EAppCloudStatusPendingElsewhere = 10;
}

enum EAppControllerSupportLevel {
	k_EAppControllerSupportLevelNone = 0;
	k_EAppControllerSupportLevelPartial = 1;
	k_EAppControllerSupportLevelFull = 2;
}

enum EAppGamepadGyroTrackpadSupportLevel {
	k_EAppGamepadGyroTrackpadSupportLevelUnknown = -1;
	k_EAppGamepadGyroTrackpadSupportLevelNoGamepad = 0;
	k_EAppGamepadGyroTrackpadSupportLevelGamepad = 1;
	k_EAppGamepadGyroTrackpadSupportLevelSimultaneous = 2;
}

enum EAppHDRSupport {
	k_EHDRSupport_Unknown = 0;
	k_EHDRSupport_SDR = 1;
	k_EHDRSupport_HDR = 2;
	k_EHDRSupport_HDR_Broken = 3;
	k_EHDRSupport_HDR_RequiresUserAction = 4;
}

message CAppOverview_PerClientData {
	optional uint64 clientid = 1 [default = 0];
	optional string client_name = 2;
	optional .EDisplayStatus display_status = 3 [default = k_EDisplayStatusInvalid];
	optional uint32 status_percentage = 4 [default = 0];
	optional string active_beta = 5;
	optional bool installed = 6;
	optional uint64 bytes_downloaded = 7 [default = 0];
	optional uint64 bytes_total = 8 [default = 0];
	optional bool streaming_to_local_client = 9;
	optional bool is_available_on_current_platform = 10;
	optional bool is_invalid_os_type = 11;
	optional uint32 playtime_left = 12;
	optional bool update_available_but_disabled_by_app = 14;
}

message CAppOverview {
	optional uint32 appid = 1;
	optional string display_name = 2;
	optional bool visible_in_game_list = 4;
	optional bool subscribed_to = 5;
	optional string sort_as = 6;
	optional .EProtoAppType app_type = 7 [default = k_EAppTypeInvalid];
	optional uint32 mru_index = 13;
	optional uint32 rt_recent_activity_time = 14 [default = 0];
	optional uint32 minutes_playtime_forever = 16 [default = 0];
	optional uint32 minutes_playtime_last_two_weeks = 17 [default = 0];
	optional uint32 rt_last_time_played = 18 [default = 0];
	repeated uint32 store_tag = 19;
	repeated uint32 store_category = 23;
	optional uint32 rt_original_release_date = 25 [default = 0];
	optional uint32 rt_steam_release_date = 26 [default = 0];
	optional string icon_hash = 27;
	optional .EAppControllerSupportLevel xbox_controller_support = 31 [default = k_EAppControllerSupportLevelNone];
	optional bool vr_supported = 32;
	optional uint32 metacritic_score = 36;
	optional uint64 size_on_disk = 37;
	optional bool third_party_mod = 38;
	optional string icon_data = 39;
	optional string icon_data_format = 40;
	optional string gameid = 41;
	optional string library_capsule_filename = 42;
	repeated .CAppOverview_PerClientData per_client_data = 43;
	optional uint64 most_available_clientid = 44 [default = 0];
	optional uint64 selected_clientid = 45 [default = 0];
	optional uint32 rt_store_asset_mtime = 46;
	optional uint32 rt_custom_image_mtime = 47;
	optional uint32 optional_parent_app_id = 48;
	optional uint32 owner_account_id = 49;
	optional uint32 review_score_with_bombs = 53 [default = 0];
	optional uint32 review_percentage_with_bombs = 54 [default = 0];
	optional uint32 review_score_without_bombs = 55 [default = 0];
	optional uint32 review_percentage_without_bombs = 56 [default = 0];
	optional string library_id = 57;
	optional bool vr_only = 58;
	optional uint32 mastersub_appid = 59;
	optional string mastersub_includedwith_logo = 60;
	optional string site_license_site_name = 62;
	optional uint32 shortcut_override_appid = 63;
	optional uint32 rt_last_time_locally_played = 65;
	optional uint32 rt_purchased_time = 66;
	optional string header_filename = 67;
	optional uint32 local_cache_version = 68;
	optional uint32 number_of_copies = 72 [default = 1];
	optional uint32 steam_hw_compat_category_packed = 73 [default = 0];
	optional string album_cover_hash = 74;
}

message CAppOverview_Change {
	repeated .CAppOverview app_overview = 1;
	repeated uint32 removed_appid = 2;
	optional bool full_update = 3;
	optional bool update_complete = 4;
}

message CAppBootstrapData {
	optional uint32 appid = 1;
	optional bool hidden = 2;
	repeated string user_tag = 3;
}

message CLibraryBootstrapData {
	repeated .CAppBootstrapData app_data = 1;
}
