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<VideoFullscreenChangeEvent>;
    onVideoSafeZoneChange$: Observable<VideoSafeZoneChangeEvent>;
    getVideoElement(): HTMLVideoElement;
    isFullscreen(): boolean;
    toggleFullscreen(): Observable<void>;
    addSafeZone(videoSafeZone: VideoSafeZone): Observable<VideoSafeZone>;
    removeSafeZone(id: string): Observable<void>;
    clearSafeZones(): Observable<void>;
    getSafeZones(): VideoSafeZone[];
    appendHTMLTrackElement(omakaseTextTrack: OmakaseTextTrack): Observable<HTMLTrackElement | undefined>;
    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<T>(querySelector: string): T;
    isCompactAudioTheme(): boolean;
    useMediaCaptions(): boolean;
    updateChromingTemplate(playerChroming: PlayerChroming): void;
    extractVideoKeyframe(options?: VideoKeyframeOptions): Observable<VideoKeyframe>;
}
