import "common_base.proto";

message CSteamVR_Vector3 {
	optional float x = 1;
	optional float y = 2;
	optional float z = 3;
}

message CSteamVR_VoiceChat_Active_Notification {
}

message CSteamVR_VoiceChat_GroupName_Notification {
	optional string name = 1;
}

message CSteamVR_VoiceChat_Inactive_Notification {
}

message CSteamVR_VoiceChat_NewGroupChatMsgAdded_Notification {
	optional uint64 chat_group_id = 1;
	optional uint64 chat_room_id = 2;
	optional uint32 sender_accountid = 3;
	optional uint32 timestamp = 4;
	optional uint32 ordinal = 5;
	optional string message = 6;
}

message CSteamVR_VoiceChat_PerUserGainValue_Notification {
	optional uint32 accountid = 1;
	optional bool muted = 2;
	optional float gain = 3;
}

message CSteamVR_VoiceChat_PerUserVoiceStatus_Notification {
	optional uint32 accountid = 1;
	optional bool mic_muted_locally = 2;
	optional bool output_muted_locally = 3;
}

message CSteamVR_VoiceChat_SetDefaultSession_Notification {
	optional uint64 chat_group_id = 1;
	optional uint64 chat_room_id = 2;
}

message CSteamVR_VoiceChat_SetSpatialAudioListener_Notification {
	optional .CSteamVR_Vector3 position = 1;
	optional .CSteamVR_Vector3 forward = 2;
	optional .CSteamVR_Vector3 up = 3;
}

message CSteamVR_VoiceChat_SetSpatialAudioSource_Notification {
	optional fixed64 steamid = 1;
	optional .CSteamVR_Vector3 position = 2;
}

service SteamVRVoiceChat {
	rpc Active (.CSteamVR_VoiceChat_Active_Notification) returns (.NoResponse);
	rpc GroupName (.CSteamVR_VoiceChat_GroupName_Notification) returns (.NoResponse);
	rpc Inactive (.CSteamVR_VoiceChat_Inactive_Notification) returns (.NoResponse);
	rpc NewGroupChatMsgAdded (.CSteamVR_VoiceChat_NewGroupChatMsgAdded_Notification) returns (.NoResponse);
	rpc PerUserGainValue (.CSteamVR_VoiceChat_PerUserGainValue_Notification) returns (.NoResponse);
	rpc PerUserVoiceStatus (.CSteamVR_VoiceChat_PerUserVoiceStatus_Notification) returns (.NoResponse);
	rpc SetDefaultSession (.CSteamVR_VoiceChat_SetDefaultSession_Notification) returns (.NoResponse);
	rpc SetSpatialAudioListener (.CSteamVR_VoiceChat_SetSpatialAudioListener_Notification) returns (.NoResponse);
	rpc SetSpatialAudioSource (.CSteamVR_VoiceChat_SetSpatialAudioSource_Notification) returns (.NoResponse);
}

