import { IPlaybackAdapterClass, IAdapterDebugInfo } from './output/native/adapters/types'; import { EngineState, MediaStreamType } from '../../constants'; import { IEventEmitter } from '../event-emitter/types'; import { IPlayerConfig } from '../../core/config'; declare enum PreloadType { NONE = "none", METADATA = "metadata", AUTO = "auto" } declare enum CrossOriginValue { ANONYMUS = "anonymous", CREDENTIALS = "use-credentials" } interface IPlayableSource { url: string; type?: MediaStreamType; mimeType?: string; } interface IParsedPlayableSource { url: string; type: MediaStreamType; } declare type PlayableMediaSource = string | IPlayableSource | Array; interface IPlaybackEngine { getElement(): HTMLVideoElement | null; isDynamicContent: boolean; isDynamicContentEnded: boolean; isSeekAvailable: boolean; isMetadataLoaded: boolean; isPreloadActive: boolean; isAutoPlayActive: boolean; isSyncWithLive: boolean; isPaused: boolean; isEnded: boolean; setSrc(src: PlayableMediaSource, callback?: Function): void; getSrc(): PlayableMediaSource; play(): void; pause(): void; reset(): void; togglePlayback(): void; syncWithLive(): void; seekTo(time: number): void; seekForward(sec: number): void; seekBackward(sec: number): void; setVolume(volume: number): void; getVolume(): number; increaseVolume(value: number): void; decreaseVolume(value: number): void; setMute(isMuted: boolean): void; isMuted: boolean; setAutoplay(isAutoplay: boolean): void; getAutoplay(): boolean; setLoop(isLoop: boolean): void; getLoop(): boolean; setPlaybackRate(rate: number): void; getPlaybackRate(): number; setPreload(preload: PreloadType): void; getPreload(): string; setCrossOrigin(crossOrigin?: CrossOriginValue): void; getCrossOrigin(): CrossOriginValue; getCurrentTime(): number; getDuration(): number; getVideoWidth(): number; getVideoHeight(): number; getBuffered(): TimeRanges; setPlaysinline(isPlaysinline: boolean): void; getPlaysinline(): boolean; getCurrentState(): EngineState; getDebugInfo(): IEngineDebugInfo; destroy(): void; changeOutput(chromecastOutput: IVideoOutput, callback?: Function): void; resetOutput(): void; } interface IEngineDebugInfo { output: string; currentTime: number; duration: number; } /** * @property viewDimensions - Current size of view port provided by engine (right now - actual size of video tag) * @property currentTime - Current time of playback * @property duration - Duration of current video * @property loadingStateTimestamps - Object with time spend for different initial phases * @property output - Type of the output (html5video, chromecast etc.); */ interface INativeDebugInfo extends IAdapterDebugInfo { viewDimensions: Object; currentTime: number; duration: number; loadingStateTimestamps: Object; output: 'html5video'; } interface IPlaybackEngineDependencies { eventEmitter: IEventEmitter; config: IPlayerConfig; availablePlaybackAdapters: IPlaybackAdapterClass[]; nativeOutput: IVideoOutput; } interface ILiveStateEngineDependencies { eventEmitter: IEventEmitter; engine: IPlaybackEngine; } interface IVideoOutput { currentState: EngineState; play: () => void; pause: () => void; syncWithLive: () => void; getDebugInfo: () => IEngineDebugInfo; getElement: () => HTMLVideoElement | null; setPlaybackRate: (rate: number) => void; setPreload: (preload: PreloadType) => void; setAutoplay: (isAutoplay: boolean) => void; setVolume: (volume: number) => void; setMute: (mute: boolean) => void; setCurrentTime: (time: number) => void; setInline: (isPlaysinline: boolean) => void; setCrossOrigin: (crossOrigin?: CrossOriginValue) => void; setLoop: (mute: boolean) => void; setSrc: (src?: PlayableMediaSource, callback?: Function) => void; isPaused: boolean; isMuted: boolean; isEnded: boolean; isAutoplay: boolean; isLoop: boolean; isDynamicContent: boolean; isDynamicContentEnded: boolean; isMetadataLoaded: boolean; isSeekAvailable: boolean; isSyncWithLive: boolean; isAutoPlayActive: boolean; isPreloadActive: boolean; preload: PreloadType; volume: number; currentTime: number; duration: number; autoplay: boolean; playbackRate: number; videoWidth?: number; videoHeight?: number; buffered: TimeRanges; isInline: boolean; crossOrigin: CrossOriginValue; src: PlayableMediaSource; } interface IPlaybackEngineAPI { setSrc?(src: PlayableMediaSource, callback?: Function): void; getSrc?(): PlayableMediaSource; play?(): void; pause?(): void; togglePlayback?(): void; resetPlayback?(): void; isPaused?: boolean; isEnded?: boolean; syncWithLive?(): void; seekTo?(time: number): void; seekForward?(sec: number): void; seekBackward?(sec: number): void; setVolume?(volume: number): void; getVolume?(): number; increaseVolume?(value: number): void; decreaseVolume?(value: number): void; mute?(): void; unmute?(): void; isMuted?: boolean; setAutoplay?(isAutoplay: boolean): void; getAutoplay?(): boolean; setLoop?(isLoop: boolean): void; getLoop?(): boolean; setPlaybackRate?(rate: number): void; getPlaybackRate?(): number; setPreload?(preload: PreloadType): void; getPreload?(): string; setCrossOrigin?(crossOrigin?: CrossOriginValue): void; getCrossOrigin?(): CrossOriginValue; getCurrentTime?(): number; getDuration?(): number; getVideoWidth?(): number; getVideoHeight?(): number; setPlaysinline?(isPlaysinline: boolean): void; getPlaysinline?(): boolean; getPlaybackState?(): EngineState; getDebugInfo?(): IEngineDebugInfo; } export { IPlaybackEngineAPI, ILiveStateEngineDependencies, IPlaybackEngineDependencies, IPlaybackEngine, IEngineDebugInfo, INativeDebugInfo, IPlayableSource, IParsedPlayableSource, IVideoOutput, PlayableMediaSource, PreloadType, CrossOriginValue, };