import type { PlayerState, QualityLevel, PresentationMode, ConnectionState, StreamType, PlayerError } from './state'; import type { ProviderType, PlayerSource, ProviderConfig } from '../providers/contract'; import { BPLiveService } from '../bplive/service'; import type { NetworkInterceptorController } from '../network/index'; export interface PlayerCoreEventMap { play: void; playing: void; pause: void; ended: void; waiting: void; seeking: { currentTime: number; }; seeked: { currentTime: number; }; timeupdate: { currentTime: number; duration: number; }; emptied: void; loadstart: void; loadedmetadata: { duration: number; videoWidth: number; videoHeight: number; }; loadeddata: void; canplay: void; canplaythrough: void; durationchange: { duration: number; }; progress: { buffered: TimeRanges; }; resize: { videoWidth: number; videoHeight: number; }; volumechange: { volume: number; muted: boolean; }; ratechange: { playbackRate: number; }; qualitieschange: { qualities: QualityLevel[]; }; qualitychange: { quality: QualityLevel; auto: boolean; }; targetqualitychanged: { quality: QualityLevel | null; }; sourcechange: { source: string | PlayerSource | null; }; fullscreenchange: { fullscreen: boolean; }; presentationmodechange: { mode: PresentationMode; }; connectionstatechange: { state: ConnectionState; }; streamtypechange: { streamType: StreamType; }; videoelementchange: { video: HTMLVideoElement | null; }; /** * Fires when the inner playback