import "common_base.proto";

message CRemoteClient_DisableSteamBroadcast_Notification {
}

message CRemoteClient_EnableSteamBroadcast_Notification {
}

message CRemoteClient_RegisterStatusUpdate_Notification {
	optional fixed64 session_id = 1;
	optional fixed64 steamid = 2;
	optional fixed64 device_id = 3;
	optional bool disable_polling = 4;
}

message CRemoteClient_RemotePacket_Notification {
	optional fixed64 session_id = 1;
	optional fixed64 steamid = 2;
	optional bytes payload = 4;
}

message CRemoteClient_SteamBroadcast_Notification {
	optional fixed64 steamid = 1;
	optional fixed64 clientid = 2;
	optional bytes payload = 3;
}

message CRemoteClient_SteamToSteam_Notification {
	optional fixed64 steamid = 1;
	optional fixed64 src_clientid = 2;
	optional fixed64 dst_clientid = 3;
	optional uint32 secretid = 4;
	optional bytes encrypted_payload = 5;
}

message CRemoteClient_Task {
	optional int32 type = 1 [(.description) = "enum"];
	optional fixed64 task_id = 2;
	optional string url = 3;
	optional int64 file_id = 4;
}

message CRemoteClient_TaskList_Notification {
	optional fixed64 remote_client_id = 1;
	repeated .CRemoteClient_Task tasklist = 2;
}

message CRemoteClient_UnregisterStatusUpdate_Notification {
	optional fixed64 session_id = 1;
	optional fixed64 steamid = 2;
}

message CRemotePlayTogether_Notification {
	optional fixed64 steamid = 1;
	optional .CRemotePlayTogether_Notification_GroupUpdated group_updated = 2;
}

message CRemotePlayTogether_Notification_ControllerSlot {
	optional uint32 slotid = 1;
	optional .CRemotePlayTogether_Notification_Player player = 2;
	optional int32 controller_type = 3;
}

message CRemotePlayTogether_Notification_ControllerSlot_obsolete {
	optional uint32 slotid = 1;
	optional fixed64 steamid = 2;
}

message CRemotePlayTogether_Notification_GroupUpdated {
	optional fixed64 host_steamid = 1;
	optional fixed64 host_clientid = 2;
	repeated fixed64 players_obsolete = 3;
	optional fixed64 host_gameid = 4;
	repeated .CRemotePlayTogether_Notification_ControllerSlot_obsolete controller_slots_obsolete = 5;
	optional bool has_new_players = 6;
	repeated .CRemotePlayTogether_Notification_Player player_slots = 7;
	repeated .CRemotePlayTogether_Notification_ControllerSlot controller_slots = 8;
}

message CRemotePlayTogether_Notification_Player {
	optional fixed64 steamid = 1;
	optional uint32 guestid = 2;
	optional bytes avatar_hash = 3;
	optional bool keyboard_enabled = 4;
	optional bool mouse_enabled = 5;
	optional bool controller_enabled = 6;
}

service RemoteClientSteamClient {
	rpc NotifyDisableSteamBroadcast (.CRemoteClient_DisableSteamBroadcast_Notification) returns (.NoResponse);
	rpc NotifyEnableSteamBroadcast (.CRemoteClient_EnableSteamBroadcast_Notification) returns (.NoResponse);
	rpc NotifyRegisterStatusUpdate (.CRemoteClient_RegisterStatusUpdate_Notification) returns (.NoResponse);
	rpc NotifyRemotePacket (.CRemoteClient_RemotePacket_Notification) returns (.NoResponse);
	rpc NotifyRemotePlayTogetherPacket (.CRemotePlayTogether_Notification) returns (.NoResponse);
	rpc NotifySteamBroadcastPacket (.CRemoteClient_SteamBroadcast_Notification) returns (.NoResponse);
	rpc NotifySteamToSteamPacket (.CRemoteClient_SteamToSteam_Notification) returns (.NoResponse);
	rpc NotifyTaskList (.CRemoteClient_TaskList_Notification) returns (.NoResponse);
	rpc NotifyUnregisterStatusUpdate (.CRemoteClient_UnregisterStatusUpdate_Notification) returns (.NoResponse);
}

