/** * Top-bar concern — title bar DOM construction and title/show-info update. * Also owns the TV current-item info block (show title, episode, episode * title) in the top-right corner. * * Integration: `buildTitleBar()` is called from `DesktopUiPlugin.buildDom()`. * It returns `TopBarRefs` which the plugin stores for later updates via * `updateTitleBar()`; back/close visibility is the plugin's * `applyStateVisibility()` (listener gate composed with PiP hiding). */ import type { IVideoPlayer, VideoPlaylistItem } from '../../../index.js'; import type { DesktopUiOptions } from '../index.js'; export interface TopBarRefs { bar: HTMLDivElement; /** * Right column containing title + show-info. Toggle this for hideTitle, * not the whole bar — the left column carries back/cast/close buttons that * must stay reachable even when titles are hidden. */ right: HTMLDivElement; titleText: HTMLSpanElement; showInfoText: HTMLSpanElement; backBtn: HTMLButtonElement; /** * Opt-in cast affordance. Click only emits the `cast` player event — the * consumer opens its own device picker. Never wire this to * `CastSenderPlugin` / `session.loadMedia()`. */ castBtn: HTMLButtonElement; closeBtn: HTMLButtonElement; } /** Build the top bar (back/cast/close buttons + show info + title + TV current item) and return named refs. */ export declare function buildTitleBar(player: IVideoPlayer, parent: HTMLElement, opts?: DesktopUiOptions): TopBarRefs; /** * Sync the title bar text content to the current playlist item. * Mirrors `MobileTopBar.kt` (Android): primary line is the show name when the * item belongs to a series, otherwise the movie title; secondary line is * `S{n}E{n} • {episodeTitle}` for TV, `Extras E{n} • {episodeTitle}` for * season-0 specials, blank for movies. */ export declare function updateTitleBar(player: IVideoPlayer, refs: TopBarRefs, item: VideoPlaylistItem | undefined | null): void;