import React from 'react'; import type { VideoSource, PlayerMode, PlayerTheme, WatermarkConfig, AntiPiracyTextConfig, QualityConfig, ControlsConfig, AnalyticsConfig, LMSProgressConfig, SecurityConfig, SDKAuthConfig, Chapter, PlayerState, PlayerAPI, QualityLevel, SubtitleTrack, GesturesConfig, ErrorRecoveryConfig, PipConfig, MiniPlayerConfig, PlaylistItem, PlaylistOptions, PluginsConfig } from '../types'; import { VideoPlayerElement } from '../webcomponent'; export interface VideoPlayerProps { source: VideoSource; mode?: PlayerMode; theme?: PlayerTheme; watermark?: WatermarkConfig; antiPiracyText?: AntiPiracyTextConfig; quality?: QualityConfig; controls?: ControlsConfig; analytics?: AnalyticsConfig; lmsProgress?: LMSProgressConfig; security?: SecurityConfig; sdkAuth?: SDKAuthConfig; subtitles?: SubtitleTrack[]; chapters?: Chapter[]; autoplay?: boolean; muted?: boolean; loop?: boolean; preload?: 'none' | 'metadata' | 'auto'; keyboardShortcuts?: boolean; startTime?: number; playbackRate?: number; debug?: boolean; gestures?: GesturesConfig; errorRecovery?: ErrorRecoveryConfig; pip?: PipConfig; miniPlayer?: MiniPlayerConfig; playlist?: PlaylistItem[]; playlistOptions?: PlaylistOptions; thumbnailVtt?: string; chaptersVtt?: string; plugins?: PluginsConfig; className?: string; style?: React.CSSProperties; onReady?: () => void; onPlay?: () => void; onPause?: () => void; onEnded?: () => void; onTimeUpdate?: (currentTime: number, duration: number) => void; onVolumeChange?: (volume: number, muted: boolean) => void; onFullscreenChange?: (fullscreen: boolean) => void; onPipChange?: (pip: boolean) => void; onQualityChange?: (quality: QualityLevel) => void; onError?: (event: Event) => void; onBuffering?: (buffering: boolean) => void; onStateChange?: (state: PlayerState) => void; onChapterChange?: (event: CustomEvent) => void; onPlaylistChange?: (event: CustomEvent) => void; } export interface VideoPlayerRef extends PlayerAPI { next(): void; prev(): void; goTo(index: number): void; on(event: string, handler: Function): void; off(event: string, handler: Function): void; once(event: string, handler: Function): void; getCurrentTime(): number; getDuration(): number; getVolume(): number; isPaused(): boolean; getQuality(): string | number; get sessionId(): string; setMuted(muted: boolean): void; setSpeed(rate: number): void; getElement(): VideoPlayerElement | null; } export type VidstreamPlayerRef = VideoPlayerRef; export declare const VideoPlayer: React.ForwardRefExoticComponent>; export declare function usePlayerState(playerRef: React.RefObject): PlayerState; export declare function usePlayerControls(playerRef: React.RefObject): { play: () => Promise | undefined; pause: () => void | undefined; togglePlay: () => void | undefined; seek: (t: number) => void | undefined; setVolume: (v: number) => void | undefined; toggleMute: () => void | undefined; setPlaybackRate: (r: number) => void | undefined; toggleFullscreen: () => void | undefined; togglePip: () => void | undefined; next: () => void | undefined; prev: () => void | undefined; goTo: (i: number) => void | undefined; }; export default VideoPlayer;