import { IPlaybackEngineAPI, IPlaybackEngine, IPlaybackEngineDependencies, IVideoOutput, PlayableMediaSource, CrossOriginValue, PreloadType, IEngineDebugInfo } from './types';
declare class Engine implements IPlaybackEngine {
    static moduleName: string;
    static dependencies: string[];
    private _eventEmitter;
    private _config;
    private _output;
    private _defaultOutput;
    constructor({ eventEmitter, nativeOutput, config, }: IPlaybackEngineDependencies);
    private _applyConfig;
    getElement(): HTMLVideoElement;
    get isDynamicContent(): boolean;
    get isDynamicContentEnded(): boolean;
    get isSeekAvailable(): boolean;
    get isMetadataLoaded(): boolean;
    get isPreloadActive(): boolean;
    get isAutoPlayActive(): boolean;
    get isSyncWithLive(): boolean;
    /**
     * Method for setting source of video to player.
     * @param src Array with multiple sources
     * @param callback
     * @example
     * player.setSrc([
     *   'https://my-url/video.mp4',
     *   'https://my-url/video.webm',
     *   'https://my-url/video.m3u8'
     * ]);
     * @note
     * Read more about [video source](/video-source)
     */
    setSrc(src: PlayableMediaSource, callback?: Function): void;
    /**
     * Return current source of video
     * @example
     * player.getSrc(); // ['https://my-url/video.mp4']
     */
    getSrc(): PlayableMediaSource;
    reset(): void;
    /**
     * Start playback
     * @example
     * player.play();
     */
    play(): void;
    /**
     * Pause playback
     * @example
     * player.pause();
     */
    pause(): void;
    /**
     * Toggle (play\pause) playback of video
     * @example
     * player.togglePlayback();
     */
    togglePlayback(): void;
    /**
     * Reset video playback
     * @example
     * player.play();
     * console.log(player.isPaused); // false
     * ...
     * player.resetPlayback();
     * console.log(player.isPaused); // true;
     * console.log(player.getCurrentTime()); //0;
     */
    resetPlayback(): void;
    /**
     * High level state of video playback. Returns true if playback is paused.
     * For more advance state use `getPlaybackState`
     * @example
     * player.play();
     * console.log(player.isPaused);
     */
    get isPaused(): boolean;
    /**
     * High level state of video playback. Returns true if playback is ended. Also note, that `isPaused` will return `true` if playback is ended also.
     * For more advance state use `getPlaybackState`
     * @example
     * player.play();
     * console.log(player.isEnded);
     */
    get isEnded(): boolean;
    /**
     * Method for synchronize current playback with live point. Available only if you playing live source.
     * @example
     * player.syncWithLive();
     */
    syncWithLive(): void;
    /**
     * Method for going forward in playback by your value
     * @param sec - Value in seconds
     * @example
     * player.seekForward(5);
     */
    seekForward(sec: number): void;
    /**
     * Method for going backward in playback by your value
     * @param sec - Value in seconds
     * @example
     * player.seekBackward(5);
     */
    seekBackward(sec: number): void;
    /**
     * Set volume
     * @param volume - Volume value `0..100`
     * @example
     * player.setVolume(50);
     */
    setVolume(volume: number): void;
    /**
     * Get volume
     * @example
     * player.getVolume(); // 50
     */
    getVolume(): number;
    /**
     * Method for increasing current volume by value
     * @param value - Value from 0 to 100
     * @example
     * player.increaseVolume(30);
     */
    increaseVolume(value: number): void;
    /**
     * Method for decreasing current volume by value
     * @param value - Value from 0 to 100
     * @example
     * player.decreaseVolume(30);
     */
    decreaseVolume(value: number): void;
    setMute(isMuted: boolean): void;
    /**
     * Mute the video
     * @example
     * player.mute();
     */
    mute(): void;
    /**
     * Unmute the video
     * @example
     * player.unmute(true);
     */
    unmute(): void;
    /**
     * Get mute flag
     * @example
     * player.mute();
     * player.isMuted; // true
     * player.unmute();
     * player.isMuted: // false
     */
    get isMuted(): boolean;
    /**
     * Set autoplay flag
     * @example
     * player.setAutoplay();
     */
    setAutoplay(isAutoplay: boolean): void;
    /**
     * Get autoplay flag
     * @example
     * player.getAutoplay(); // true
     */
    getAutoplay(): boolean;
    /**
     * Set loop flag
     * @param isLoop - If `true` video will be played again after it will finish
     * @example
     * player.setLoop(true);
     */
    setLoop(isLoop: boolean): void;
    /**
     * Get loop flag
     * @example
     * player.getLoop(); // true
     */
    getLoop(): boolean;
    /**
     * Method for setting playback rate
     */
    setPlaybackRate(rate: number): void;
    /**
     * Return current playback rate
     */
    getPlaybackRate(): number;
    /**
     * Set preload type
     * @example
     * player.setPreload('none');
     */
    setPreload(preload: PreloadType): void;
    /**
     * Return preload type
     * @example
     * player.getPreload(); // none
     */
    getPreload(): string;
    /**
     * Return current time of video playback
     * @example
     * player.getCurrentTime(); //  60.139683
     */
    getCurrentTime(): number;
    /**
     * Method for seeking to time in video
     * @param time - Time in seconds
     * @example
     * player.seekTo(34);
     */
    seekTo(time: number): void;
    /**
     * Return duration of video
     * @example
     * player.getDuration(); // 180.149745
     */
    getDuration(): number;
    /**
     * Return real width of video from metadata
     * @example
     * player.getVideoWidth(); // 400
     */
    getVideoWidth(): number;
    /**
     * Return real height of video from metadata
     * @example
     * player.getVideoHeight(); // 225
     */
    getVideoHeight(): number;
    getBuffered(): TimeRanges;
    /**
     * Set playsinline flag
     * @param isPlaysinline - If `false` - video will be played in full screen, `true` - inline
     * @example
     * player.setPlaysinline(true);
     */
    setPlaysinline(isPlaysinline: boolean): void;
    /**
     * Get playsinline flag
     * @example
     * player.getPlaysinline(); // true
     */
    getPlaysinline(): boolean;
    /**
     * Set crossorigin attribute for video
     * @example
     * player.setCrossOrigin('anonymous');
     */
    setCrossOrigin(crossOrigin?: CrossOriginValue): void;
    /**
     * Get crossorigin attribute value for video
     * @example
     * player.getCrossOrigin(); // 'anonymous'
     */
    getCrossOrigin(): CrossOriginValue;
    /**
     * Return current state of playback
     */
    getCurrentState(): import("../../constants/engine-state").default;
    /**
     * Return object with internal debug info
     *
     * @example
     * player.getDebugInfo();
     *
     * @note
     * The above command returns JSON structured like this:
     *
     * @example
     * {
     *   "type": "HLS",
     *   "viewDimensions": {
     *     "width": 700,
     *     "height": 394
     *   }
     *   "url": "https://example.com/video.m3u8",
     *   "currentTime": 22.092514,
     *   "duration": 60.139683,
     *   "loadingStateTimestamps": {
     *     "metadata-loaded": 76,
     *     "ready-to-play": 67
     *   },
     *   "bitrates": [
     *     // Available bitrates
     *     "100000",
     *     "200000",
     *     ...
     *   ],
     *   // One of available bitrates, that used right now
     *   "currentBitrate": "100000",
     *   // Raw estimation of bandwidth, that could be used without playback stall
     *   "bwEstimate": "120000"
     *   "overallBufferLength": 60.139683,
     *   "nearestBufferSegInfo": {
     *     "start": 0,
     *     "end": 60.139683
     *   }
     * }
     */
    getDebugInfo(): IEngineDebugInfo;
    destroy(): void;
    changeOutput(output?: IVideoOutput, callback?: Function): void;
    resetOutput(): void;
}
export { IPlaybackEngineAPI };
export default Engine;
