import type { VzEventEmitter } from '../core/event-emitter.js'; import type { HubItem } from './hub-model.js'; export interface HubControllerOptions { items: HubItem[]; events: VzEventEmitter; /** Enter an item: swap the lobby scene for that item's playback. */ onShowItem: (item: HubItem, index: number) => void; /** Return to the lobby scene. */ onShowLobby: () => void; } /** * Selection state machine for vz-hub. Tracks whether the viewer is in the lobby * (activeIndex -1) or playing an item, drives the show-item/show-lobby callbacks * the element wires to the renderer, and fires `vz-hub-select` on entry. Kept * separate from the WebGL element so the transitions are unit-tested. */ export declare class HubController { private items; private events; private onShowItem; private onShowLobby; private activeIndex; constructor(opts: HubControllerOptions); isInLobby(): boolean; getActiveIndex(): number; /** Select an item by index: play it and fire vz-hub-select. No-op if invalid or already active. */ select(index: number): void; /** Return to the lobby. No-op if already there. */ back(): void; } //# sourceMappingURL=hub-controller.d.ts.map