import type { PlayerState } from '../core/player-state.js'; import type { VzEventEmitter } from '../core/event-emitter.js'; import { type PlayerChapter, type ChapterMarker } from './chapter-logic.js'; import { type PlayerStrings } from '../core/strings.js'; /** Minimal structural view of SeekBar the manager needs (keeps it testable). */ export interface ChapterSeekBar { setChapterMarkers(markers: ChapterMarker[]): void; } /** Minimal structural view of ControlsOverlay the manager needs. */ export interface ChapterControlsOverlay { addControl(el: HTMLElement, section: 'left' | 'center' | 'right' | 'seek'): void; } export interface ChapterManagerOptions { chapters: PlayerChapter[]; state: PlayerState; events: VzEventEmitter; /** Seek callback (media element's seek). */ seek: (time: number) => void; seekBar?: ChapterSeekBar | null; controlsOverlay?: ChapterControlsOverlay | null; /** Resolved UI strings (per-element `strings` overrides applied). */ strings?: PlayerStrings; } /** * Wires manual chapters into a media element: renders seek-bar tick markers * (reactive to duration), adds a chapter menu to the controls bar, and tracks * the active chapter from `currentTime`, firing `vz-chapter-change` on each * boundary crossing. Created only when the tier includes chapters (the gate * lives in the media element's onLicenseResolved). */ export declare class ChapterManager { private chapters; private state; private events; private seek; private seekBar; private menu; private activeId; private unsubscribes; constructor(opts: ChapterManagerOptions); private renderMarkers; private updateActive; dispose(): void; } //# sourceMappingURL=chapter-manager.d.ts.map