blob: f94c20fd99c3fa2706117f88d6bd748f7d0d14df [file] [log] [blame]
Charlie6ddaefe2022-11-01 18:36:29 -04001/*
2 * Copyright (C) 2022 Savoir-faire Linux Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Affero General Public License as
6 * published by the Free Software Foundation; either version 3 of the
7 * License, or (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU Affero General Public License for more details.
13 *
14 * You should have received a copy of the GNU Affero General Public
15 * License along with this program. If not, see
16 * <https://www.gnu.org/licenses/>.
17 */
Issam E. Maghni0432cb72022-11-12 06:09:26 +000018import { WebSocketMessageType } from '../enums/websocket-message-type.js';
19import { AccountTextMessage } from './account-text-message.js';
20import { ConversationMessage } from './conversation-message.js';
21import { ConversationView } from './conversation-view.js';
22import { WebRTCIceCandidate } from './webrtc-ice-candidate.js';
23import { WebRTCSDP } from './webrtc-sdp.js';
Charlie6ddaefe2022-11-01 18:36:29 -040024
Issam E. Maghni0432cb72022-11-12 06:09:26 +000025export interface WebSocketMessageTable {
26 [WebSocketMessageType.ConversationMessage]: ConversationMessage;
27 [WebSocketMessageType.ConversationView]: ConversationView;
28 [WebSocketMessageType.WebRTCOffer]: AccountTextMessage<WebRTCSDP>;
29 [WebSocketMessageType.WebRTCAnswer]: AccountTextMessage<WebRTCSDP>;
30 [WebSocketMessageType.IceCandidate]: AccountTextMessage<WebRTCIceCandidate>;
31}
32
33export interface WebSocketMessage<T extends WebSocketMessageType> {
34 type: T;
35 data: WebSocketMessageTable[T];
Charlie6ddaefe2022-11-01 18:36:29 -040036}