import "enums.proto";
import "steammessages_base.proto";
import "webuimessages_base.proto";

option optimize_for = SPEED;
option cc_generic_services = true;

message CHardwareUpdate_GetState_Request {
}

message CHardwareUpdate_GetState_Response {
	optional bool is_updater_supported = 1;
	optional bool has_seen_controllers = 2;
}

message CHardwareUpdate_StateChanged_Notification {
}

message CHardwareUpdate_CheckForUpdates_Request {
}

message CMsgAvailableHardwareUpdate {
	optional uint32 etype = 1;
	optional uint32 hardware_id = 2;
	optional string serial_number = 3;
	optional string current_ts = 4;
	optional string update_ts = 5;
}

message CHardwareUpdate_CheckForUpdates_Response {
	repeated .CMsgAvailableHardwareUpdate updates = 1;
}

message CHardwareUpdate_Update_Request {
	optional string serial_number = 1;
}

message CHardwareUpdate_Update_Response {
}

message CHardwareUpdate_UpdateProgress_Notification {
	optional int32 progress = 1;
}

message CHardwareUpdate_UpdateStateChanged_Notification {
}

service HardwareUpdate {
	option (webui_service_execution_site) = k_EClientExecutionSiteSteamUI;

	rpc GetState (.CHardwareUpdate_GetState_Request) returns (.CHardwareUpdate_GetState_Response);
	rpc NotifyStateChanged (.CHardwareUpdate_StateChanged_Notification) returns (.WebUINoResponse);
	rpc CheckForUpdates (.CHardwareUpdate_CheckForUpdates_Request) returns (.CHardwareUpdate_CheckForUpdates_Response);
	rpc Update (.CHardwareUpdate_Update_Request) returns (.CHardwareUpdate_Update_Response);
	rpc NotifyUpdateProgress (.CHardwareUpdate_UpdateProgress_Notification) returns (.WebUINoResponse);
	rpc NotifyUpdateStateChanged (.CHardwareUpdate_UpdateStateChanged_Notification) returns (.WebUINoResponse);
}
