import { TimelineConfig } from './timeline';
import { Observable } from 'rxjs';
import { AudioApi, MarkerListApi, 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 { PlayerChroming } from './player-chroming/model';
import { AuthenticationData } from './common/authentication';
import { ConfigAdapter } from './common/config-adapter';
import { ChromingApi } from './api/chroming-api';
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?: PlayerChroming;
}
export declare class OmakasePlayer implements OmakasePlayerApi, Destroyable {
    static instance: OmakasePlayerApi;
    protected readonly _configAdapter: ConfigAdapter;
    private readonly _config;
    private readonly _videoDomController;
    private readonly _alertsController;
    private _videoController;
    private _audioController;
    private _subtitlesController;
    private _chromingController;
    private _timeline?;
    private _destroyed$;
    constructor(config?: Partial<OmakasePlayerConfig>);
    setAuthentication(authentication: AuthenticationData): void;
    loadVideo(videoSourceUrl: string, options?: VideoLoadOptions): Observable<Video>;
    createTimeline(config: Partial<ConfigWithOptionalStyle<TimelineConfig>>): Observable<TimelineApi>;
    createMarkerList(config: MarkerListConfig): Observable<MarkerListApi>;
    initializeRouterVisualization(config: RouterVisualizationConfig): RouterVisualizationApi;
    get timeline(): TimelineApi | undefined;
    get video(): VideoApi;
    get audio(): AudioApi;
    get subtitles(): SubtitlesApi;
    get chroming(): ChromingApi;
    get config(): OmakasePlayerConfig;
    set config(config: Partial<OmakasePlayerConfig>);
    destroy(): void;
}
