import { Ref, UnwrapNestedRefs } from "vue"; //#region src/types/playback.d.ts interface CaptionTrackInfo { index: number; label: string; language: string; } interface QualityLevelInfo { index: number; height: number; bitrate: number; label: string; } //#endregion //#region src/ui/player/playerState.d.ts declare function createPlayerState(props: PlayerProps): { isPlaying: import("vue").Ref; hasEnded: import("vue").Ref; isReady: import("vue").Ref; isLoaded: import("vue").Ref; isLive: import("vue").Ref; hasStarted: import("vue").Ref; isError: import("vue").Ref; errorMessage: import("vue").Ref; currentTime: import("vue").Ref; duration: import("vue").Ref; buffered: import("vue").Ref; progress: import("vue").ComputedRef; bufferedDisplay: import("vue").ComputedRef; currentVolume: import("vue").Ref; isMuted: import("vue").Ref; isAudible: import("vue").ComputedRef; isLooping: import("vue").Ref; currentPlaybackRate: import("vue").Ref; supportsPlaybackRate: import("vue").Ref; isAdPlaying: import("vue").Ref; isAdPaused: import("vue").Ref; isAdMuted: import("vue").Ref; adRemainingTime: import("vue").Ref; supportsCaptions: import("vue").Ref; captionTracks: import("vue").Ref<{ index: number; label: string; language: string; }[], CaptionTrackInfo[] | { index: number; label: string; language: string; }[]>; activeCaptionIndex: import("vue").Ref; supportsQuality: import("vue").Ref; qualityLevels: import("vue").Ref<{ index: number; height: number; bitrate: number; label: string; }[], QualityLevelInfo[] | { index: number; height: number; bitrate: number; label: string; }[]>; currentQualityHeight: import("vue").Ref; isAutoQuality: import("vue").Ref; supportsPip: import("vue").Ref; isPipActive: import("vue").Ref; isNativeUi: import("vue").Ref; }; type PlayerState = ReturnType; //#endregion //#region src/ui/player/createPlayerControls.d.ts interface PlayerControls { play: () => Promise; pause: () => void; replay: () => Promise; togglePlay: () => void; seek: (seconds: number) => void; toggleMute: () => void; setVolume: (vol: number) => void; toggleLoop: () => void; setPlaybackRate: (rate: number) => void; setCaptionTrack: (index: number | null) => void; setQuality: (height: number | null) => void; applyQuality: (height: number | null, options?: { remember?: boolean; }) => void; togglePip: () => void; } //#endregion //#region src/ui/player/usePlayer.d.ts type UsePlayerReturn = PlayerState & PlayerControls & { fire: (type: StateChangeType, extras?: Partial) => void; retry: () => void; isBuffering: Ref; toggleAdMute: () => void; isFullscreen: Ref; isFullscreenPending: Ref; toggleFullscreen: () => void; }; //#endregion //#region src/ui/player/playerSurface.d.ts declare const PLAYER_METHOD_KEYS: readonly ["retry", "play", "pause", "replay", "togglePlay", "seek", "toggleMute", "setVolume", "toggleFullscreen", "toggleLoop", "toggleAdMute", "setPlaybackRate", "setCaptionTrack", "setQuality", "togglePip"]; declare const PLAYER_STATE_KEYS: readonly ["isPlaying", "hasEnded", "isReady", "isLoaded", "isAdPlaying", "isAdPaused", "isAdMuted", "adRemainingTime", "isLive", "isBuffering", "currentTime", "duration", "currentVolume", "isMuted", "isAudible", "isLooping", "currentPlaybackRate", "hasStarted", "isError", "errorMessage", "progress", "bufferedDisplay", "isFullscreen", "supportsPlaybackRate", "supportsCaptions", "captionTracks", "activeCaptionIndex", "supportsQuality", "qualityLevels", "currentQualityHeight", "isAutoQuality", "supportsPip", "isPipActive", "isNativeUi"]; type PlayerMethodKey = (typeof PLAYER_METHOD_KEYS)[number]; type PlayerStateKey = (typeof PLAYER_STATE_KEYS)[number]; //#endregion //#region src/types/player.d.ts type BuiltinAction = 'mute' | 'loop' | 'autoplay'; interface CustomAction { icon: string; label: string; onClick: () => void; } type PlayerAction = BuiltinAction | CustomAction; type StateChangeType = 'loaded' | 'play' | 'pause' | 'ended' | 'seeked' | 'error' | 'adstart' | 'adend' | 'volumechange' | 'ratechange' | 'captionchange' | 'qualitychange' | 'pipchange' | 'loopchange' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'controlsopen' | 'controlsclose' | 'stageopen' | 'stageclose' | 'bufferstart' | 'bufferend' | 'timeupdate' | 'tap'; interface StateChangeEvent { type: StateChangeType; currentTime: number; duration: number; src: string; error?: { code: number; message: string; } | null; isMuted?: boolean; playbackRate?: number; captionIndex?: number | null; qualityHeight?: number | null; isPipActive?: boolean; isLooping?: boolean; element?: HTMLElement | null; payload?: Record; } interface HeaderBiddingAdUnit { code: string; mediaTypes: { video: Record; }; bids: Array<{ bidder: string; params?: Record; }>; } interface HeaderBiddingConfig { adUnit: HeaderBiddingAdUnit; params?: Record; timeoutMs?: number; } interface CaptionTrackDef { src: string; kind?: 'captions' | 'subtitles'; srclang?: string; label?: string; default?: boolean; } interface PlayerProps { src: string; label?: string; poster?: string; aspectRatio?: string; adTagUrl?: string; adMacroParams?: Record; headerBidding?: HeaderBiddingConfig; tracks?: CaptionTrackDef[]; captionLine?: number; autoplay?: boolean; muted?: boolean; volume?: number; playbackRate?: number; quality?: number | null; nativeUi?: boolean; payload?: Record | string; action?: PlayerAction | null; disableTapCapture?: boolean; disableKeyboardShortcuts?: boolean; controls?: boolean; playInView?: boolean; pin?: PinCorner; loop?: boolean; preload?: PreloadMode; } type PinCorner = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'; type PreloadMode = 'none' | 'metadata' | 'auto'; interface TranscriptCue { time: number; end?: number; text: string; } type PlayerHandle = Pick, PlayerMethodKey | PlayerStateKey>; //#endregion //#region src/ui/controls/useResolvedPlayer.d.ts interface ResolvedPlayerProps { player?: PlayerHandle | null; for?: string; } //#endregion //#region src/elements/controls.d.ts declare const ScrubberElement: import("vue").VueElementConstructor; declare const PlayButtonElement: import("vue").VueElementConstructor; declare const MuteButtonElement: import("vue").VueElementConstructor; declare const FullscreenButtonElement: import("vue").VueElementConstructor; declare const BufferingElement: import("vue").VueElementConstructor; declare const LoopButtonElement: import("vue").VueElementConstructor; declare const PipButtonElement: import("vue").VueElementConstructor; declare const CaptionsButtonElement: import("vue").VueElementConstructor; declare const QualityButtonElement: import("vue").VueElementConstructor; declare const PlaybackRateButtonElement: import("vue").VueElementConstructor; declare const VolumeSliderElement: import("vue").VueElementConstructor; declare const TimeDisplayElement: import("vue").VueElementConstructor; declare const TranscriptElement: import("vue").VueElementConstructor; //#endregion export { BufferingElement, CaptionsButtonElement, FullscreenButtonElement, LoopButtonElement, MuteButtonElement, PipButtonElement, PlayButtonElement, PlaybackRateButtonElement, QualityButtonElement, ScrubberElement, TimeDisplayElement, TranscriptElement, VolumeSliderElement };