import { StreamHandle } from "../../Types"; import * as MediaServerTypes from "./MediaServerWebSocketApiTypes"; export interface UserWithPubKey { userId: string; key: string; } export interface ListQuery { skip?: number; limit?: number; order?: string; } export interface StreamCreateMeta { mid?: string; description?: string; p2p?: boolean; tracks?: StreamTrackCreateMeta[]; } export interface StreamTrackCreateMeta { mid?: string; description?: string; } export interface StreamRemoteInfo { id: StreamId; tracks?: TrackInfo[]; } export interface StreamAndTracksSelector { streamRoomId: StreamRoomId; streamId: StreamId; tracks?: StreamTrackId[]; } export interface Stream { handle: StreamHandle; streamRoomId: StreamRoomId; remote: boolean; createStreamMeta?: StreamCreateMeta; remoteStreamInfo?: StreamRemoteInfo; localMediaStream?: MediaStream; } export interface StreamList { list: Stream[]; } export type StreamId = number & { __streamId: never; }; export interface DataChannelMeta { created: boolean; dataChannel?: RTCDataChannel; } export interface StreamTrackInit { track?: MediaStreamTrack; createDataChannel?: boolean; } export interface StreamTrackList { list: TrackInfo[]; } export type StreamTrackId = string & { __streamTrackId: never; }; export interface PublishMeta { bitrate?: number; display?: string; } export interface TrackInfo extends MediaServerTypes.VideoRoomStreamTrack { type: string; streamRoomId: StreamRoomId; streamId: StreamId; meta?: DataChannelMeta; dataTrackId?: StreamTrackId; } export type StreamRoomInfo = MediaServerTypes.VideoRoom; export type StreamRoomList = MediaServerTypes.RoomListResult; export type StreamRoomId = string & { __streamRoomId: never; }; export type TrackType = "audio" | "video" | "data";