summary refs log tree commit diff
path: root/util/src/schemas/voice.ts
blob: 61c12f9265ecc2f60989cbc32dda99b889dbabcf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
export interface VoiceVideoSchema {
	audio_ssrc: number;
	video_ssrc: number;
	rtx_ssrc?: number;
	user_id?: string;
	streams?: {
		type: "video" | "audio";
		rid: string;
		ssrc: number;
		active: boolean;
		quality: number;
		rtx_ssrc: number;
		max_bitrate: number;
		max_framerate: number;
		max_resolution: { type: string; width: number; height: number; };
	}[];
}

export const VoiceStateUpdateSchema = {
	$guild_id: String,
	$channel_id: String,
	self_mute: Boolean,
	self_deaf: Boolean,
	self_video: Boolean
};

//TODO need more testing when community guild and voice stage channel are working
export interface VoiceStateUpdateSchema {
	channel_id: string;
	guild_id?: string;
	suppress?: boolean;
	request_to_speak_timestamp?: Date;
	self_mute?: boolean;
	self_deaf?: boolean;
	self_video?: boolean;
}

export interface VoiceIdentifySchema {
	server_id: string;
	user_id: string;
	session_id: string;
	token: string;
	video?: boolean;
	streams?: {
		type: string;
		rid: string;
		quality: number;
	}[];
}

export interface SelectProtocolSchema {
	protocol: "webrtc" | "udp";
	data:
	| string
	| {
		address: string;
		port: number;
		mode: string;
	};
	sdp?: string;
	codecs?: {
		name: "opus" | "VP8" | "VP9" | "H264";
		type: "audio" | "video";
		priority: number;
		payload_type: number;
		rtx_payload_type?: number | null;
	}[];
	rtc_connection_id?: string; // uuid
}