import "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/types/player.d.ts type BuiltinAction = 'mute' | 'loop' | 'autoplay'; interface CustomAction { icon: string; label: string; onClick: () => void; } type PlayerAction = BuiltinAction | CustomAction; 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; } //#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 export { type AdapterCaptions, type AdapterPip, type AdapterQuality, type EmbedAdapterFactory, type EmbedAdapterOptions, HideMarkerElement, type Matcher, type MediaErrorLike, type PlatformConfig, type PlaybackAdapter, type PlaybackEvent, type ResolvedSource, type SourceResolver, VideoCardElement, VideoPlaceholderElement, VideoPlayerElement, VideoStageElement };