import { Observable } from 'rxjs'; import { Destroyable, OmakaseTextTrack, VideoFullscreenChangeEvent, VideoSafeZoneChangeEvent } from '../types'; import { VideoKeyframe, VideoKeyframeOptions, MarkerTrackConfig, VideoSafeZone } from './model'; import { VideoControllerApi } from './video-controller-api'; import { MarkerTrackApi } from '../api'; import { TimeRangeMarkerTrackApi } from '../api/time-range-marker-track-api'; import { PlayerChroming } from '../player-chroming'; import { PlayerChromingDomControllerApi } from '../player-chroming/player-chroming-dom-controller-api'; export interface VideoDomControllerApi extends Destroyable { get playerChromingDomController(): PlayerChromingDomControllerApi; attachVideoController(videoController: VideoControllerApi): void; onFullscreenChange$: Observable; onVideoSafeZoneChange$: Observable; getVideoElement(): HTMLVideoElement; isFullscreen(): boolean; toggleFullscreen(): Observable; addSafeZone(videoSafeZone: VideoSafeZone): Observable; removeSafeZone(id: string): Observable; clearSafeZones(): Observable; getSafeZones(): VideoSafeZone[]; appendHTMLTrackElement(omakaseTextTrack: OmakaseTextTrack): Observable; getTextTrackList(): TextTrackList; getTextTrackById(id: string): TextTrack | undefined; removeTextTrackById(id: string): boolean; loadThumbnailVtt(thumbnailVttUrl: string): void; isPiPSupported(): boolean; createMarkerTrack(config: MarkerTrackConfig): MarkerTrackApi; getProgressMarkerTrack(): TimeRangeMarkerTrackApi | undefined; setWatermark(watermark: string): void; getPlayerChromingElement(querySelector: string): T; isCompactAudioTheme(): boolean; useMediaCaptions(): boolean; updateChromingTemplate(playerChroming: PlayerChroming): void; extractVideoKeyframe(options?: VideoKeyframeOptions): Observable; }