Review live-video session teardown

src/video-session-types.tsTypeScript
@@ -0,0 +1,29 @@
1+export interface MediaTrack {
2+ stop(): void;
3+}
4+
5+export interface PeerConnection {
6+ id: string;
7+ close(signal?: AbortSignal): Promise<void>;
8+ onDisconnected(callback: () => void): () => void;
9+}
10+
11+export interface Recorder {
12+ stop(signal?: AbortSignal): Promise<Blob>;
13+}
14+
15+export interface SignalingSubscription {
16+ unsubscribe(signal?: AbortSignal): Promise<void>;
17+}
18+
19+export interface ParticipantResources {
20+ peer: PeerConnection;
21+ recorder: Recorder;
22+ tracks: readonly MediaTrack[];
23+ signaling: SignalingSubscription;
24+}
25+
26+export interface VideoDependencies {
27+ acceptJoin(sessionId: string, signal?: AbortSignal): Promise<ParticipantResources>;
28+ reportCleanupError(error: unknown): void;
29+}