import React from "react"; export interface MediaFile { id: string; type: "audio" | "video"; src: string; title?: string; description?: string; duration?: number; thumbnail?: string; poster?: string; size?: number; format?: string; quality?: "auto" | "144p" | "240p" | "360p" | "480p" | "720p" | "1080p" | "1440p" | "2160p"; chapters?: MediaChapter[]; subtitles?: MediaSubtitle[]; metadata?: Record; } export interface MediaChapter { id: string; title: string; startTime: number; endTime: number; thumbnail?: string; description?: string; } export interface MediaSubtitle { id: string; language: string; label: string; src?: string; content?: SubtitleEntry[]; isDefault?: boolean; } export interface SubtitleEntry { id: string; startTime: number; endTime: number; text: string; speaker?: string; confidence?: number; } export interface TranscriptEntry { id: string; startTime: number; endTime: number; text: string; speaker?: string; confidence?: number; keywords?: string[]; sentiment?: "positive" | "neutral" | "negative"; summary?: string; } export interface MediaAnalytics { totalViews: number; averageWatchTime: number; completionRate: number; engagementPoints: Array<{ time: number; engagement: number; }>; heatmapData: Array<{ time: number; views: number; }>; deviceStats: Record; locationStats: Record; } export interface PlaybackState { mediaId: string; currentTime: number; duration: number; isPlaying: boolean; isLoading: boolean; isError: boolean; volume: number; playbackRate: number; quality: string; isFullscreen: boolean; isMuted: boolean; buffered: TimeRanges | null; activeChapter?: string; activeSubtitle?: string; } interface MediaContextValue { mediaFiles: MediaFile[]; addMediaFile: (file: MediaFile) => void; removeMediaFile: (id: string) => void; getMediaFile: (id: string) => MediaFile | undefined; updateMediaFile: (id: string, updates: Partial) => void; playbackState: PlaybackState | null; setPlaybackState: (state: PlaybackState | null) => void; play: (mediaId: string) => void; pause: () => void; stop: () => void; seekTo: (time: number) => void; setVolume: (volume: number) => void; setPlaybackRate: (rate: number) => void; toggleMute: () => void; toggleFullscreen: () => void; setQuality: (quality: string) => void; transcripts: Record; generateTranscript: (mediaId: string) => Promise; searchTranscript: (mediaId: string, query: string) => TranscriptEntry[]; getTranscriptAtTime: (mediaId: string, time: number) => TranscriptEntry | undefined; setActiveChapter: (mediaId: string, chapterId: string) => void; getChapterAtTime: (mediaId: string, time: number) => MediaChapter | undefined; setActiveSubtitle: (mediaId: string, subtitleId: string) => void; generateSubtitles: (mediaId: string, language: string) => Promise; analytics: Record; trackView: (mediaId: string, watchTime: number) => void; trackEngagement: (mediaId: string, time: number, type: "play" | "pause" | "seek" | "fullscreen") => void; generateSummary: (mediaId: string) => Promise; identifySpeakers: (mediaId: string) => Promise; extractKeywords: (mediaId: string) => Promise; analyzeSentiment: (mediaId: string) => Promise>; isRecording: boolean; recordingDevices: MediaDeviceInfo[]; startRecording: (type: "audio" | "video", options?: RecordingOptions) => Promise; stopRecording: () => Promise; pauseRecording: () => void; resumeRecording: () => void; } export interface RecordingOptions { audio?: { deviceId?: string; echoCancellation?: boolean; noiseSuppression?: boolean; sampleRate?: number; }; video?: { deviceId?: string; width?: number; height?: number; frameRate?: number; facingMode?: "user" | "environment"; }; quality?: "low" | "medium" | "high"; format?: "webm" | "mp4" | "ogg"; } export declare const MediaProvider: React.FC<{ children: React.ReactNode; className?: string; "data-testid"?: string; }>; export { MediaProvider as GlassMediaProvider }; export declare const useMedia: () => MediaContextValue; //# sourceMappingURL=GlassMediaProvider.d.ts.map