import { CustomVideoElement } from 'custom-media-element'; interface NanoPlayerInstance { setup: (config: NanoPlayerConfig) => Promise; destroy: () => void; play: () => void; pause: () => void; mute: () => void; unmute: () => void; setAdaption: (options: { rule: string; }) => void; switchStream: (index: number) => Promise; } interface NanoSetupResult { source: { entries?: Array<{ info: { height: number; width: number; bitrate: number; framerate: number; }; }>; }; } interface NanoPlayerEvent { name: string; player: string; id: string; version: string; data: T; state: number; } interface NanoPlayerConfig { source: unknown; playback: { autoplay: boolean; muted: boolean; reconnect?: { minDelay: number; maxDelay: number; delaySteps: number; maxRetries: number; }; buffer?: { min: number; max: number; target: number; }; }; style: { width: string | number; height: string | number; controls: boolean; view?: boolean; interactive?: boolean; }; events: { onReady?: (event: NanoPlayerEvent) => void; onPlay?: (event: NanoPlayerEvent) => void; onPause?: (event: NanoPlayerEvent<{ reason: string; }>) => void; onLoading?: (event: NanoPlayerEvent) => void; onStartBuffering?: (event: NanoPlayerEvent) => void; onStopBuffering?: (event: NanoPlayerEvent) => void; onError?: (event: NanoPlayerEvent<{ code: number; message?: string; }>) => void; onSwitchStreamSuccess?: (event: NanoPlayerEvent<{ id: string; index: number; }>) => void; onSwitchStreamFail?: (event: NanoPlayerEvent<{ id: string; index: number; }>) => void; onActiveVideoElementChange?: (event: NanoPlayerEvent<{ activeVideoElement: HTMLVideoElement; videoElementList: HTMLVideoElement[]; }>) => void; }; } interface NanoVideoConfig { /** Direct URL to the NanoPlayer script. When set, bypasses libraryLocation construction. */ scriptUrl?: string; reconnect?: { minDelay: number; maxDelay: number; delaySteps: number; maxRetries: number; }; buffer?: { min: number; max: number; target: number; }; } declare const MediaTracksVideoElement: import("media-tracks").WithMediaTracks; declare class NanoVideoElement extends MediaTracksVideoElement { #private; static get observedAttributes(): string[]; static shadowRootOptions: { clonable?: boolean; customElementRegistry?: CustomElementRegistry; delegatesFocus?: boolean; mode: ShadowRootMode; serializable?: boolean; slotAssignment?: SlotAssignmentMode; }; static getTemplateHTML(attrs: Record, props?: { config?: NanoVideoConfig; }): string; api: NanoPlayerInstance | null; constructor(); /** * The actively playing inner