import Hls from "hls.js"; import type Player from "video.js/dist/types/player"; import "./plugins/register"; import { type EngineStrategy, type PlaybackEngine } from "./engine-selector"; export interface VideoPlayerRuntimeSource { src: string; type?: string; } export type VideoPlayerRuntimePreload = "auto" | "metadata" | "none" | "visibility"; export type VideoPlayerRuntimeEventMap = { ready: { engine: PlaybackEngine; source: VideoPlayerRuntimeSource; player: VideoPlayerRuntimePlayer; }; enginechange: { previous: PlaybackEngine | null; next: PlaybackEngine; source: VideoPlayerRuntimeSource; }; sourcechange: { previous: VideoPlayerRuntimeSource; next: VideoPlayerRuntimeSource; engine: PlaybackEngine; }; manifestloaded: { engine: PlaybackEngine; duration?: number; live?: boolean; }; duration: { duration: number; }; playstart: { engine: PlaybackEngine; }; error: { scope: "runtime" | "player" | "hls"; error: unknown; fatal?: boolean; }; dispose: Record; }; export type VideoPlayerRuntimePlayer = Player & { hlsInstance?: Hls | null; liveTracker?: { isLive_: boolean; atLiveEdge?: () => boolean; startTracking: () => void; trigger: (event: string) => void; }; settingsMenu?: () => void; bigPlayPauseButton?: () => void; skipButtons?: (options: { skip: number; }) => void; subscribeToSegmentChange: (callback: (segment: unknown) => void) => void; subscribeToDuration: (callback: (duration: number) => void) => void; subscribeToPlayStart: (callback: () => void) => void; subscribeToPlayStarted: (callback: () => void) => void; subscribeToManifestLoaded: (callback: () => void) => void; mediaduration: () => number | undefined; }; interface VideoPlayerRuntimeOptions { source: VideoPlayerRuntimeSource; strategy: EngineStrategy; preload: VideoPlayerRuntimePreload; autoplay: boolean; controls: boolean; responsive: boolean; aspectRatio?: string; fluid: boolean; muted: boolean; poster?: string; preferHQ: boolean; debug: boolean; initialTime: number; isIOS?: boolean; isMobile?: boolean; full: boolean; withRewind: boolean; skipSeconds: number; classNames: string[]; onPlayerReady?: (player: VideoPlayerRuntimePlayer, state: VideoPlayerRuntimeState) => void; } export interface VideoPlayerRuntimeInitOptions extends Partial> { container: HTMLElement; source: VideoPlayerRuntimeSource; } export interface VideoPlayerRuntimeUpdateOptions extends Partial> { source?: VideoPlayerRuntimeSource; } export interface VideoPlayerRuntimeState { initialized: boolean; engine: PlaybackEngine | null; source: VideoPlayerRuntimeSource | null; } export type VideoPlayerRuntimeUnsubscribe = () => void; export declare class VideoPlayerRuntime { private containerRef; private videoRef; private playerRef; private hlsRef; private options; private currentEngine; private currentSource; private vhsAuthTokenRef; private hlsAuthTokenRef; private hlsTokenResolvePromise; private vhsRequestCleanupRef; private visibilityObserverRef; private originalPlayRef; private hlsLoaded; private eventListeners; init(options: VideoPlayerRuntimeInitOptions): Promise; update(options: VideoPlayerRuntimeUpdateOptions): Promise; on(event: K, handler: (payload: VideoPlayerRuntimeEventMap[K]) => void): VideoPlayerRuntimeUnsubscribe; dispose(): void; getState(): VideoPlayerRuntimeState; getPlayer(): VideoPlayerRuntimePlayer | null; private ensureHlsAuthToken; private refreshHlsAuthTokenInBackground; private emit; private tryPlay; private resolveEngine; private createVideoElement; private createPlayer; private syncPoster; private syncPlayerDisplayOptions; private attachCompatibilityApi; private attachDurationAndPlayStartHooks; private loadCurrentSource; private buildHlsConfig; private syncLiveUi; private loadHlsSource; private loadVideoJsSource; private resetDeferredHlsLoading; private ensureVhsAuthInterceptor; private teardownHls; } export {}; //# sourceMappingURL=player-runtime.d.ts.map