syntax = "proto2";

import "enums.proto";

option optimize_for = SPEED;
option cc_generic_services = false;

enum ECloudPendingRemoteOperation {
  k_ECloudPendingRemoteOperationNone = 0;
  k_ECloudPendingRemoteOperationAppSessionActive = 1;
  k_ECloudPendingRemoteOperationUploadInProgress = 2;
  k_ECloudPendingRemoteOperationUploadPending = 3;
  k_ECloudPendingRemoteOperationAppSessionSuspended = 4;
}

enum ESteamDeckKeyboardLayout {
  k_ESteamDeckKeyboardLayout_QWERTY = 0;
  k_ESteamDeckKeyboardLayout_Bulgarian = 1;
  k_ESteamDeckKeyboardLayout_Chinese_Simplified = 2;
  k_ESteamDeckKeyboardLayout_Chinese_Traditional = 3;
  k_ESteamDeckKeyboardLayout_Czech = 4;
  k_ESteamDeckKeyboardLayout_Danish = 5;
  k_ESteamDeckKeyboardLayout_Finnish = 6;
  k_ESteamDeckKeyboardLayout_French = 7;
  k_ESteamDeckKeyboardLayout_German = 8;
  k_ESteamDeckKeyboardLayout_Greek = 9;
  k_ESteamDeckKeyboardLayout_Hungarian = 10;
  k_ESteamDeckKeyboardLayout_Italian = 11;
  k_ESteamDeckKeyboardLayout_Japanese = 12;
  k_ESteamDeckKeyboardLayout_Korean = 13;
  k_ESteamDeckKeyboardLayout_Norwegian = 14;
  k_ESteamDeckKeyboardLayout_Polish = 15;
  k_ESteamDeckKeyboardLayout_Portuguese = 16;
  k_ESteamDeckKeyboardLayout_Romanian = 17;
  k_ESteamDeckKeyboardLayout_Russian = 18;
  k_ESteamDeckKeyboardLayout_Spanish = 19;
  k_ESteamDeckKeyboardLayout_Swedish = 20;
  k_ESteamDeckKeyboardLayout_Thai = 21;
  k_ESteamDeckKeyboardLayout_Turkish_F = 22;
  k_ESteamDeckKeyboardLayout_Turkish_Q = 23;
  k_ESteamDeckKeyboardLayout_Ukrainian = 24;
  k_ESteamDeckKeyboardLayout_Vietnamese = 25;
  k_ESteamDeckKeyboardLayout_QWERTY_International = 26;
  k_ESteamDeckKeyboardLayout_Dvorak = 27;
  k_ESteamDeckKeyboardLayout_Colemak = 28;
  k_ESteamDeckKeyboardLayout_Bulgarian_Phonetic_Traditional = 29;
  k_ESteamDeckKeyboardLayout_Bulgarian_Phonetic = 30;
  k_ESteamDeckKeyboardLayout_Chinese_Traditional_Bopomofo = 31;
  k_ESteamDeckKeyboardLayout_Chinese_Traditional_Cangjie = 32;
  k_ESteamDeckKeyboardLayout_Japanese_Kana = 33;
  k_ESteamDeckKeyboardLayout_Chinese_Traditional_Quick = 34;
  k_ESteamDeckKeyboardLayout_Indonesian = 35;
}

message SteamMessagesClientIClientForcedEnumDependencies {
  optional EBluetoothDeviceType a = 1;
  optional EStorageBlockContentType b = 2;
  optional EStorageBlockFileSystemType c = 3;
  optional ESDCardFormatStage d = 4;
}

message CMsgNetworkDeviceIP4Address {
  optional int32 ip = 1 [default = 0];
  optional int32 netmask = 2;
}

message CMsgNetworkDeviceIP4Config {
  repeated CMsgNetworkDeviceIP4Address addresses = 1;
  repeated int32 dns_ip = 2;
  optional int32 gateway_ip = 3;
  optional bool is_dhcp_enabled = 4;
  optional bool is_default_route = 5;
  optional bool is_enabled = 6 [default = false];
}

message CMsgNetworkDeviceIP6Address {
  optional string ip = 1 [default = ""];
}

message CMsgNetworkDeviceIP6Config {
  repeated CMsgNetworkDeviceIP6Address addresses = 1;
  repeated string dns_ip = 2;
  optional string gateway_ip = 3;
  optional bool is_dhcp_enabled = 4;
  optional bool is_default_route = 5;
  optional bool is_enabled = 6 [default = false];
}

message CMsgNetworkDevicesData {
  message Device {
    message Wired {
      optional bool is_cable_present = 1 [default = false];
      optional uint32 speed_mbit = 2;
      optional string friendly_name = 3;
    }
    message Wireless {
      message AP {
        optional uint32 id = 1 [default = 0];
        optional int32 estrength = 2;
        optional string ssid = 3;
        optional bool is_active = 4;
        optional bool is_autoconnect = 5;
        optional int32 esecurity = 6;
        optional string user_name = 7;
        optional string password = 8;
        optional int32 strength_raw = 9;
        optional string band_filter = 10;
        optional bool has_non_6ghz_channel = 11;
        optional bool is_saved = 12;
      }
      repeated CMsgNetworkDevicesData.Device.Wireless.AP aps = 1;
      optional int32 esecurity_supported = 2;
    }
    optional uint32 id = 1 [default = 0];
    optional int32 etype = 2;
    optional int32 estate = 3;
    optional string mac = 4;
    optional string vendor = 5;
    optional string product = 6;
    optional CMsgNetworkDeviceIP4Config ip4 = 7;
    optional CMsgNetworkDeviceIP6Config ip6 = 8;
    optional CMsgNetworkDevicesData.Device.Wired wired = 9;
    optional CMsgNetworkDevicesData.Device.Wireless wireless = 10;
  }
  repeated CMsgNetworkDevicesData.Device devices = 1;
  optional bool is_wifi_enabled = 2;
  optional bool is_wifi_scanning_enabled = 3;
}

message CMsgNetworkDeviceConnect {
  message KnownAP {
    optional uint32 ap_id = 1;
  }
  message CustomAP {
    optional string ssid = 1;
    optional int32 esecurity = 2;
  }
  message Credentials {
    optional string username = 1;
    optional string password = 2;
  }
  message Wireless {
    optional string band_filter = 1;
  }
  optional uint32 device_id = 1 [default = 0];
  oneof ap_info {
    CMsgNetworkDeviceConnect.KnownAP ap_known = 2;
    CMsgNetworkDeviceConnect.CustomAP ap_custom = 3;
  }
  optional CMsgNetworkDeviceConnect.Credentials credentials = 4;
  optional CMsgNetworkDeviceIP4Config ip4 = 5;
  optional CMsgNetworkDeviceIP6Config ip6 = 6;
  optional CMsgNetworkDeviceConnect.Wireless wireless = 7;
}

message CMsgNetworkDeviceSetOptions {
  message Wireless {
    required uint32 ap_id = 1;
    optional bool is_autoconnect = 2;
    optional string band_filter = 3;
  }
  optional CMsgNetworkDeviceSetOptions.Wireless wireless = 2;
}

message CMsgStorageDevicesData {
  message Drive {
    optional uint32 id = 1 [default = 0];
    optional string model = 2;
    optional string vendor = 3;
    optional string serial = 4;
    optional bool is_ejectable = 5;
    optional uint64 size_bytes = 6;
    optional EStorageDriveMediaType media_type = 7;
  }
  message BlockDevice {
    optional uint32 id = 1 [default = 0];
    optional uint32 drive_id = 2 [default = 0];
    optional string path = 3;
    optional string friendly_path = 4;
    optional string label = 5;
    optional uint64 size_bytes = 6;
    optional bool is_formattable = 7;
    optional bool is_read_only = 8;
    optional bool is_root_device = 9;
    optional EStorageBlockContentType content_type = 10;
    optional EStorageBlockFileSystemType filesystem_type = 11;
    optional string mount_path = 12;
  }
  repeated CMsgStorageDevicesData.Drive drives = 1;
  repeated CMsgStorageDevicesData.BlockDevice block_devices = 2;
  optional bool is_unmount_supported = 3;
  optional bool is_trim_supported = 4;
  optional bool is_trim_running = 5;
}

message CCloud_PendingRemoteOperation {
  optional ECloudPendingRemoteOperation operation = 1;
  optional string machine_name = 2;
  optional uint64 client_id = 3;
  optional uint32 time_last_updated = 4;
  optional int32 os_type = 5;
  optional int32 device_type = 6;
}

message CMsgCloudPendingRemoteOperations {
  repeated CCloud_PendingRemoteOperation operations = 1;
}

message CMsgBluetoothDevicesData {
  message Adapter {
    optional uint32 id = 1 [default = 0];
    optional string mac = 2;
    optional string name = 3;
    optional bool is_enabled = 4;
    optional bool is_discovering = 5;
  }
  message Device {
    optional uint32 id = 1 [default = 0];
    optional uint32 adapter_id = 2 [default = 0];
    optional EBluetoothDeviceType etype = 3;
    optional string mac = 4;
    optional string name = 5;
    optional bool is_connected = 6;
    optional bool is_paired = 7;
    optional int32 strength_raw = 8;
    optional bool wake_allowed = 9;
    optional bool wake_allowed_supported = 10;
    optional int32 battery_percent = 11;
  }
  message Manager {
    optional bool is_bluetooth_enabled = 1;
  }
  repeated CMsgBluetoothDevicesData.Adapter adapters = 1;
  repeated CMsgBluetoothDevicesData.Device devices = 2;
  optional CMsgBluetoothDevicesData.Manager manager = 3;
}

message CMsgSystemPerfDiagnosticEntry {
  optional string name = 1;
  optional string value = 2;
}

message CMsgSystemPerfNetworkInterface {
  optional string name = 1;
  optional double timestamp = 2;
  optional int64 tx_bytes_total = 3;
  optional int64 rx_bytes_total = 4;
  optional int32 tx_bytes_per_sec = 5;
  optional int32 rx_bytes_per_sec = 6;
}

message CMsgSystemPerfDiagnosticInfo {
  repeated CMsgSystemPerfDiagnosticEntry entries = 1;
  repeated CMsgSystemPerfNetworkInterface interfaces = 2;
  optional float battery_temp_c = 3;
}

message CMsgSystemPerfLimits {
  optional int32 cpu_governor_manual_min_mhz = 1;
  optional int32 cpu_governor_manual_max_mhz = 2;
  optional int32 fsr_sharpness_min = 3;
  optional int32 fsr_sharpness_max = 4;
  optional int32 gpu_performance_manual_min_mhz = 5;
  optional int32 gpu_performance_manual_max_mhz = 6;
  optional bool perf_overlay_is_standalone = 7;
  optional bool is_manual_display_refresh_rate_available = 9;
  repeated EGPUPerformanceLevel gpu_performance_levels_available = 10;
  optional int32 display_refresh_manual_hz_min = 11;
  optional int32 display_refresh_manual_hz_max = 12;
  repeated int32 fps_limit_options = 13;
  optional int32 tdp_limit_min = 14;
  optional int32 tdp_limit_max = 15;
  optional int32 display_external_refresh_manual_hz_min = 19;
  optional int32 display_external_refresh_manual_hz_max = 20;
  repeated int32 fps_limit_options_external = 21;
  optional bool is_vrr_supported = 23;
  optional bool is_dynamic_refresh_rate_in_steam_supported = 24;
  repeated ESplitScalingFilter split_scaling_filters_available = 26;
  repeated ESplitScalingScaler split_scaling_scalers_available = 27;
  optional bool disable_refresh_rate_management = 30;
}

message CMsgSystemPerfSettingsGlobal {
  optional float diagnostic_update_rate = 1;
  optional ESystemServiceState graphics_profiling_service_state = 3;
  optional ESystemServiceState perf_overlay_service_state = 4;
  optional EGraphicsPerfOverlayLevel perf_overlay_level = 5;
  optional bool is_show_perf_overlay_over_steam_enabled = 6;
  optional bool is_advanced_settings_enabled = 7;
  optional bool allow_external_display_refresh_control = 8;
  optional EHDRToneMapOperator hdr_on_sdr_tonemap_operator = 12;
  optional bool is_hdr_debug_heatmap_enabled = 13;
  optional bool force_hdr_wide_gammut_for_sdr = 15 [default = true];
  optional float sdr_to_hdr_brightness = 22;
  optional bool is_color_management_enabled = 21;
}

message CMsgSystemPerfSettingsPerApp {
  optional int32 gpu_performance_manual_mhz = 1;
  optional int32 fps_limit = 2;
  optional bool is_variable_resolution_enabled = 3;
  optional bool is_dynamic_refresh_rate_enabled = 4;
  optional int32 tdp_limit = 5;
  optional ECPUGovernor cpu_governor = 6;
  optional int32 cpu_governor_manual_mhz = 7;
  optional int32 scaling_filter = 8;
  optional int32 fsr_sharpness = 9;
  optional bool is_fps_limit_enabled = 10;
  optional bool is_tdp_limit_enabled = 11;
  optional bool is_low_latency_mode_enabled = 12;
  optional int32 display_refresh_manual_hz = 13;
  optional bool is_game_perf_profile_enabled = 14;
  optional EGPUPerformanceLevel gpu_performance_level = 15;
  optional int32 display_external_refresh_manual_hz = 17;
  optional int32 fps_limit_external = 18;
  optional bool is_tearing_enabled = 19;
  optional bool is_vrr_enabled = 20;
  optional bool use_dynamic_refresh_rate_in_steam = 23;
  optional ESplitScalingFilter split_scaling_filter = 24;
  optional ESplitScalingScaler split_scaling_scaler = 25;
}

message CMsgSystemPerfSettings {
  optional CMsgSystemPerfSettingsGlobal global = 1;
  optional CMsgSystemPerfSettingsPerApp per_app = 2;
}

message CMsgSystemPerfSettingsV1 {
  optional float diagnostic_update_rate = 1;
  optional ESystemServiceState system_trace_service_state = 2;
  optional ESystemServiceState graphics_profiling_service_state = 3;
  optional ESystemServiceState perf_overlay_service_state = 4;
  optional EGraphicsPerfOverlayLevel perf_overlay_level = 5;
  optional EGPUPerformanceLevel gpu_performance_level = 6;
  optional int32 gpu_performance_manual_mhz = 7;
  optional int32 fps_limit = 8;
  optional bool is_variable_resolution_enabled = 9;
  optional bool is_dynamic_refresh_rate_enabled = 10;
  optional int32 tdp_limit = 11;
  optional ECPUGovernor cpu_governor = 12;
  optional int32 cpu_governor_manual_mhz = 13;
  optional int32 scaling_filter = 14;
  optional int32 fsr_sharpness = 15;
  optional bool is_fps_limit_enabled = 16;
  optional bool is_tdp_limit_enabled = 17;
  optional bool is_show_perf_overlay_over_steam_enabled = 18;
  optional bool is_low_latency_mode_enabled = 19;
  optional int32 display_refresh_manual_hz = 20;
  optional bool is_game_perf_profile_enabled = 21;
}

message CMsgSystemPerfState {
  optional CMsgSystemPerfLimits limits = 1;
  optional CMsgSystemPerfSettings settings = 2;
  optional uint64 current_game_id = 3;
  optional uint64 active_profile_game_id = 4;
}

message CMsgSystemPerfUpdateSettings {
  optional uint64 gameid = 1;
  oneof update {
    bool reset_to_default = 2;
    CMsgSystemPerfSettings settings_delta = 3;
  }
  optional bool skip_storage_update = 4;
}

message CMsgSystemPerfLegacySettingEntry {
  optional uint64 profile_game_id = 1;
  optional CMsgSystemPerfSettingsPerApp settings = 2;
}

message CMsgSystemPerfLegacySettings {
  optional CMsgSystemPerfSettingsGlobal global = 1;
  repeated CMsgSystemPerfLegacySettingEntry per_app_settings = 2;
}

message CMsgSystemDockUpdateState {
  optional EUpdaterState state = 1;
  optional fixed32 rtime_last_checked = 2;
  optional string version_current = 3;
  optional string version_available = 4;
  optional float stage_progress = 5;
  optional fixed32 rtime_estimated_completion = 6;
  optional int32 old_fw_workaround = 7;
}

message CMsgSystemDockState {
  optional CMsgSystemDockUpdateState update_state = 1;
}

message CMsgSystemDockUpdateFirmware {
  optional bool check_only = 1;
}

message CMsgSystemAudioVolume {
  message ChannelEntry {
    optional ESystemAudioChannel echannel = 1;
    optional float volume = 2;
  }
  repeated CMsgSystemAudioVolume.ChannelEntry entries = 1;
  optional bool is_muted = 2;
}

message CMsgSystemAudioManagerObject {
  optional uint32 id = 1;
  optional fixed32 rtime_last_update = 2;
}

message CMsgSystemAudioManagerDevice {
  optional CMsgSystemAudioManagerObject base = 1;
  optional string name = 2;
  optional string nick = 3;
  optional string description = 4;
  optional string api = 5;
}

message CMsgSystemAudioManagerNode {
  optional CMsgSystemAudioManagerObject base = 1;
  optional uint32 device_id = 2;
  optional string name = 3;
  optional string nick = 4;
  optional string description = 5;
  optional ESystemAudioDirection edirection = 6;
  optional CMsgSystemAudioVolume volume = 7;
}

message CMsgSystemAudioManagerPort {
  optional CMsgSystemAudioManagerObject base = 1;
  optional uint32 node_id = 3;
  optional string name = 4;
  optional string alias = 5;
  optional ESystemAudioPortType etype = 6;
  optional ESystemAudioPortDirection edirection = 7;
  optional bool is_physical = 8;
  optional bool is_terminal = 9;
  optional bool is_control = 10;
  optional bool is_monitor = 11;
}

message CMsgSystemAudioManagerLink {
  optional CMsgSystemAudioManagerObject base = 1;
  optional uint32 output_node_id = 2;
  optional uint32 output_port_id = 3;
  optional uint32 input_node_id = 4;
  optional uint32 input_port_id = 5;
}

message CMsgSystemAudioManagerStateHW {
  repeated CMsgSystemAudioManagerDevice devices = 1;
  repeated CMsgSystemAudioManagerNode nodes = 2;
  repeated CMsgSystemAudioManagerPort ports = 3;
  repeated CMsgSystemAudioManagerLink links = 4;
}

message CMsgSystemAudioManagerState {
  optional fixed32 rtime_filter = 1;
  optional int32 counter = 2;
  optional CMsgSystemAudioManagerStateHW hw = 3;
}

message CMsgSystemAudioManagerUpdateSomething {
  optional int32 counter = 1;
}

message CMsgSystemDisplayMode {
  optional int32 id = 1;
  optional int32 width = 2;
  optional int32 height = 3;
  optional int32 refresh_hz = 4;
}

message CMsgSystemDisplay {
  optional int32 id = 1;
  optional string name = 2;
  optional string description = 3;
  optional bool is_primary = 4;
  optional bool is_enabled = 5;
  optional bool is_internal = 6;
  optional bool has_mode_override = 7;
  optional int32 width_mm = 8;
  optional int32 height_mm = 9;
  optional int32 current_mode_id = 10;
  repeated CMsgSystemDisplayMode modes = 11;
  optional int32 refresh_rate_min = 12;
  optional int32 refresh_rate_max = 13;
  optional bool is_vrr_capable = 14;
  optional bool is_vrr_output_active = 15;
  optional bool is_hdr_capable = 16;
  optional bool is_hdr_output_active = 17;
  repeated int32 supported_refresh_rates = 18;
}

message CMsgSystemDisplayManagerState {
  repeated CMsgSystemDisplay displays = 1;
  optional bool is_mode_switching_supported = 2;
  optional ESystemDisplayCompatibilityMode compatibility_mode = 3;
}

message CMsgSystemDisplayManagerSetMode {
  optional int32 display_id = 1;
  optional int32 mode_id = 2;
}

message CMsgSystemManagerSettings {
  optional float idle_backlight_dim_battery_seconds = 1;
  optional float idle_backlight_dim_ac_seconds = 2;
  optional bool is_adaptive_brightness_available = 6;
  optional bool display_adaptive_brightness_enabled = 7;
  optional bool display_nightmode_enabled = 10;
  optional float display_nightmode_tintstrength = 11;
  optional float display_nightmode_maxhue = 12;
  optional float display_nightmode_maxsat = 13;
  optional float display_nightmode_uiexp = 14;
  optional float display_nightmode_blend = 15;
  optional bool display_nightmode_reset = 16;
  optional bool display_nightmode_schedule_enabled = 17;
  optional float display_nightmode_schedule_starttime = 18;
  optional float display_nightmode_schedule_endtime = 19;
  optional bool display_diagnostics_enabled = 20;
  optional float als_lux_primary = 21;
  optional float als_lux_median = 22;
  optional float display_backlight_raw = 23;
  optional float display_brightness_adaptivemin = 24;
  optional float display_brightness_adaptivemax = 25;
  optional bool is_wifi_powersave_enabled = 26;
  optional bool is_fan_control_available = 27;
  optional ESystemFanControlMode fan_control_mode = 28;
  optional bool is_display_brightness_available = 29;
  optional bool is_display_colormanagement_available = 31;
  optional float display_colorgamut = 32;
  optional float als_lux_alternate = 33;
  optional bool is_display_colortemp_available = 34;
  optional float display_colortemp = 35;
  optional float display_colortemp_default = 36;
  optional bool display_colortemp_enabled = 37;
  optional EColorGamutLabelSet display_colorgamut_labelset = 38;
  optional float display_brightness_overdrive_hdr_split = 39;
}

message CMsgSelectOSBranchParams {
  optional EOSBranch branch = 1;
  optional string custom_branch = 2;
}

message CMsgSystemUpdateProgress {
  optional float stage_progress = 1;
  optional int64 stage_size_bytes = 2;
  optional fixed32 rtime_estimated_completion = 3;
}

message CMsgSystemUpdateCheckResult {
  optional EUpdaterType type = 1;
  optional uint32 eresult = 2 [default = 2];
  optional fixed32 rtime_checked = 3;
  optional bool available = 4;
  optional string version = 5;
  optional string auto_message = 6;
  optional bool system_restart_pending = 7;
}

message CMsgSystemUpdateApplyParams {
  repeated EUpdaterType apply_types = 1;
}

message CMsgSystemUpdateApplyResult {
  optional EUpdaterType type = 1;
  optional uint32 eresult = 2 [default = 2];
  optional bool requires_client_restart = 3 [default = false];
  optional bool requires_system_restart = 4 [default = false];
}

message CMsgSystemUpdateState {
  optional EUpdaterState state = 1;
  optional CMsgSystemUpdateProgress progress = 2;
  repeated CMsgSystemUpdateCheckResult update_check_results = 3;
  repeated CMsgSystemUpdateApplyResult update_apply_results = 4;
  optional bool supports_os_updates = 5;
}

message CMsgAchievementChange {
  optional uint32 appid = 1;
}

message CMsgCellList {
  message Cell {
    optional uint32 cell_id = 1;
    optional string loc_name = 2;
  }
  repeated CMsgCellList.Cell cells = 1;
}

message CMsgShortcutInfo {
  optional uint32 appid = 1;
  optional string exe = 2;
  optional string start_dir = 3;
  optional string icon = 4;
  optional string path = 5;
  optional string args = 6;
  optional string app_name = 7;
  optional uint32 override_appid = 8;
  optional string flatpak_appid = 9;
  repeated string tags = 10;
  optional uint64 remote_client_id = 11;
  optional bool is_hidden = 12;
  optional bool is_temporary = 13;
  optional bool is_openvr = 14;
  optional bool allow_desktop_config = 15;
  optional bool allow_overlay = 16;
  optional uint32 rt_last_played_time = 17;
  optional bool is_devkit_shortcut = 18;
  optional string devkit_gameid = 19;
  optional bool remote_launch_available = 20;
  optional string sortas = 21;
}

message CMsgShortcutInfos {
  repeated CMsgShortcutInfo shorcuts = 1;
}

message CMsgShortcutAppIds {
  repeated uint32 appids = 1;
}

message CMsgMonitorInfo {
  message MonitorInfo {
    required string monitor_device_name = 1;
    required string monitor_display_name = 2;
  }
  required string selected_display_name = 1;
  repeated CMsgMonitorInfo.MonitorInfo monitors = 2;
}

message CMsgGenerateSystemReportReply {
  optional string report_id = 1;
}

message CMsgWebUITransportInfo {
  optional uint32 port = 1;
  optional string auth_key = 2;
}

message CMsgWebUITransportFailure {
  optional uint32 connect_count = 1;
}

message CMsgClientShaderHitCacheEntry {
  optional bytes key_sha = 1;
  optional bytes code_sha = 2;
  optional uint64 time_last_reported = 3;
}

message CMsgClientShaderHitCache {
  repeated CMsgClientShaderHitCacheEntry entries = 1;
}

