import type { IVideoSource } from './IVideoSource'; import type { IVideoSeekController } from './IVideoSeekController'; import type { IAudioController } from './IAudioController'; import type { IVolumeMeter } from './IVolumeMeter'; /** * Main interface for video player * Follows Dependency Inversion Principle (DIP) - depends on abstractions */ export interface IVideoPlayer { /** * Initializes the video player with a stream URL * @param url - The URL of the video stream */ initialize(url: string): void; /** * Gets the video source controller */ getVideoSource(): IVideoSource; /** * Gets the seek controller */ getSeekController(): IVideoSeekController; /** * Gets the audio controller */ getAudioController(): IAudioController; /** * Gets the volume meter */ getVolumeMeter(): IVolumeMeter; /** * Gets the underlying video element */ getVideoElement(): HTMLVideoElement; }