import { Observable, Subject } from 'rxjs'; export interface IPlayable { id: string; elem: any; time: any; buffer: any; track?: any; canPlay: boolean; canPlayThrough: boolean; isMetadataLoaded: boolean; isWaiting: boolean; isCompleted: boolean; isLive: boolean; textTracks: TextTrackList; state: string; subscriptions: IMediaSubscriptions; duration: number; currentTime: number; play: () => any; pause: () => any; addTextTrack?: (type: string, label?: string, language?: string, mode?: 'disabled' | 'hidden' | 'showing') => TextTrack; dispatchEvent?: () => any; } export interface IMediaSubscriptions { abort: Observable; bufferDetected: Subject; canPlay: Observable; canPlayThrough: Observable; durationChange: Observable; emptied: Observable; encrypted: Observable; ended: Observable; error: Observable; loadedData: Observable; loadedMetadata: Observable; loadStart: Observable; pause: Observable; play: Observable; playing: Observable; progress: Observable; rateChange: Observable; seeked: Observable; seeking: Observable; stalled: Observable; suspend: Observable; timeUpdate: Observable; volumeChange: Observable; waiting: Observable; startAds: Observable; endAds: Observable; }