import { TimelineConfig } from './timeline';
import { Observable } from 'rxjs';
import { AlertsApi, AudioApi, MarkerListApi, MarkerTrackApi, OmakasePlayerApi, RouterVisualizationApi, SubtitlesApi, TimelineApi, VideoApi } from './api';
import { Destroyable } from './types';
import { Video, VideoLoadOptions } from './video';
import { ConfigWithOptionalStyle } from './layout';
import { MarkerListConfig } from './marker-list/marker-list';
import { VideoControllerConfig } from './video/video-controller';
import { OmpHlsConfig } from './video/video-hls-loader';
import { RouterVisualizationConfig } from './router-visualization/router-visualization';
import { MarkerTrackConfig } from './video/model';
import { ChromelessChroming, CustomChroming, DefaultChroming, StampChroming } from './player-chroming/model';
import { TimeRangeMarkerTrackApi } from './api/time-range-marker-track-api';
import { AuthenticationData } from './common/authentication';
export interface OmakasePlayerConfig {
    playerHTMLElementId?: string;
    crossorigin?: 'anonymous' | 'use-credentials';
    /**
     * HLS configuration
     */
    hlsConfig?: Partial<OmpHlsConfig>;
    vttDownsamplePeriod?: number;
    /**
     *  Is this OmakasePlayer instance a detached player instance. Property is set on detached player.
     */
    detachedPlayer?: boolean;
    /**
     * Is PIP (picture-in-picture) disabled
     */
    disablePictureInPicture?: boolean;
    /**
     *  Function that will return URL where detached player resides. Property is set on non-detached (local) player side.
     */
    detachedPlayerUrlFn?: (video: Video, videoLoadOptions?: VideoLoadOptions) => string;
    /**
     *  Authentication data for HLS.js, VTT and thumbnail image requests
     */
    authentication?: AuthenticationData;
    /**
     *  Custom video player click handler
     */
    playerClickHandler?: () => void;
    audioPlayMode?: VideoControllerConfig['audioPlayMode'];
    /**
     * Player chroming configuration
     */
    playerChroming?: DefaultChroming | CustomChroming | ChromelessChroming | StampChroming;
}
export declare class OmakasePlayer implements OmakasePlayerApi, Destroyable {
    static instance: OmakasePlayerApi;
    private readonly _config;
    private readonly _videoDomController;
    private readonly _alertsController;
    private _videoController;
    private _audioController;
    private _subtitlesController;
    private _timeline?;
    private _destroyed$;
    constructor(config?: Partial<OmakasePlayerConfig>);
    setAuthentication(authentication: AuthenticationData): void;
    setThumbnailVttUrl(thumbnailVttUrl: string): void;
    setWatermark(watermark: string): void;
    loadVideo(videoSourceUrl: string, options?: VideoLoadOptions): Observable<Video>;
    createTimeline(config: Partial<ConfigWithOptionalStyle<TimelineConfig>>): Observable<TimelineApi>;
    createMarkerList(config: MarkerListConfig): Observable<MarkerListApi>;
    createMarkerTrack(config: MarkerTrackConfig): Observable<MarkerTrackApi>;
    initializeRouterVisualization(config: RouterVisualizationConfig): RouterVisualizationApi;
    get timeline(): TimelineApi | undefined;
    get video(): VideoApi;
    get audio(): AudioApi;
    get subtitles(): SubtitlesApi;
    get alerts(): AlertsApi;
    get progressMarkerTrack(): TimeRangeMarkerTrackApi | undefined;
    destroy(): void;
}
