import {MediaStreamType} from '@common/player/state/player-state'; interface BaseMediaItem { id: string | number; groupId?: string | number; provider: 'youtube' | 'htmlAudio' | 'htmlVideo' | 'hls' | 'dash'; meta?: T; initialTime?: number; poster?: string; captions?: { id: string | number; label: string; src: string; language?: string; }[]; } export interface YoutubeMediaItem extends BaseMediaItem { provider: 'youtube'; src: 'resolve' | string; } export interface HlsMediaItem extends BaseMediaItem { provider: 'hls'; src: string; streamType?: MediaStreamType; } export interface DashMediaItem extends BaseMediaItem { provider: 'dash'; src: string; streamType?: MediaStreamType; } export interface HtmlAudioMediaItem extends BaseMediaItem { provider: 'htmlAudio'; src: string; } export interface HtmlVideoMediaItem extends BaseMediaItem { provider: 'htmlVideo'; src: string; } export type MediaItem = | YoutubeMediaItem | HtmlAudioMediaItem | HtmlVideoMediaItem | HlsMediaItem | DashMediaItem;