import { Ref, UnwrapNestedRefs } from "vue"; //#region src/adapters/emitter.d.ts type PlaybackListener = (...args: unknown[]) => void; //#endregion //#region src/types/playback.d.ts interface MediaErrorLike { code: number; message: string; } interface CaptionTrackInfo { index: number; label: string; language: string; } interface QualityLevelInfo { index: number; height: number; bitrate: number; label: string; } interface AdapterCaptions { tracks(): CaptionTrackInfo[]; active(): number | null; select(index: number | null): void; } interface AdapterQuality { levels(): QualityLevelInfo[]; current(): number | null; isAuto(): boolean; select(index: number | null): void; } interface AdapterPip { isSupported(): boolean; isActive(): boolean; toggle(): void; } type PlaybackEvent = 'play' | 'pause' | 'playing' | 'ended' | 'error' | 'timeupdate' | 'durationchange' | 'progress' | 'volumechange' | 'ratechange' | 'seeked' | 'waiting' | 'canplay' | 'qualitychange' | 'captionschange' | 'pipchange' | 'adstart' | 'adend' | 'nativefullscreenenter' | 'nativefullscreenexit' | 'fullscreen-pending' | 'fullscreen-pending-done'; interface PlaybackAdapter { readonly el: HTMLElement; play(): Promise; pause(): void; paused(): boolean; currentTime(): number; setCurrentTime(seconds: number): void; duration(): number; volume(): number; setVolume(vol: number): void; muted(): boolean; setMuted(muted: boolean): void; playbackRate(): number; setPlaybackRate(rate: number): void; bufferedEnd(): number; error(): MediaErrorLike | null; load(src: string, type?: string): void; retry(): void; supportsPlaybackRate(): boolean; captions?: AdapterCaptions; quality?: AdapterQuality; pip?: AdapterPip; reveal?(videoEl: HTMLVideoElement): void; enterFullscreen(): void; exitFullscreen(): void; on(event: PlaybackEvent, listener: PlaybackListener): void; off(event: PlaybackEvent, listener: PlaybackListener): void; dispose(): void; } interface ResolvedSource { src: string; type?: string; poster?: string | null; adTagUrl?: string | null; } interface Matcher { test: (src: string) => boolean; key: string; embed: boolean; } interface EmbedAdapterOptions { src: string; poster?: string; autoplay?: boolean; muted?: boolean; volume?: number; nativeUi?: boolean; } type EmbedAdapterFactory = (videoEl: HTMLVideoElement, options: EmbedAdapterOptions) => PlaybackAdapter; type SourceResolver = (url: string) => ResolvedSource | Promise; type PlatformConfig = Pick & ({ embed: true; createAdapter: EmbedAdapterFactory; } | { embed: false; resolveSource?: SourceResolver; }); //#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 VideoEntry extends PlayerProps { lazy?: boolean; autoStage?: boolean; } interface TranscriptCue { time: number; end?: number; text: string; } type PlayerHandle = Pick, PlayerMethodKey | PlayerStateKey>; //#endregion //#region src/adapters/index.d.ts export declare function resolvePlatform(url: string): { key: string; embed: boolean; }; export declare function registerPlatform(config: PlatformConfig): void; //#endregion //#region src/elements/core.d.ts declare const VideoPlayerElement: import("vue").VueElementConstructor; declare const VideoStageElement: import("vue").VueElementConstructor; declare const VideoPlaceholderElement: import("vue").VueElementConstructor; declare const VideoCardElement: import("vue").VueElementConstructor; declare const HideMarkerElement: import("vue").VueElementConstructor<{}>; export declare function defineElements(): void; //#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 { type AdapterCaptions, type AdapterPip, type AdapterQuality, BufferingElement, CaptionsButtonElement, type EmbedAdapterFactory, type EmbedAdapterOptions, FullscreenButtonElement, HideMarkerElement, LoopButtonElement, type Matcher, type MediaErrorLike, MuteButtonElement, PipButtonElement, type PlatformConfig, PlayButtonElement, type PlaybackAdapter, type PlaybackEvent, PlaybackRateButtonElement, QualityButtonElement, type ResolvedSource, ScrubberElement, type SourceResolver, TimeDisplayElement, TranscriptElement, VideoCardElement, VideoPlaceholderElement, VideoPlayerElement, VideoStageElement, VolumeSliderElement };