import type { VzFormat, StereoMode, VzError, QualityLevel, LicenseResult } from '@vizor-vr/shared'; /** Shape of all player state */ export interface PlayerStateShape { playing: boolean; paused: boolean; currentTime: number; duration: number; buffered: number; seeking: boolean; ended: boolean; volume: number; muted: boolean; playbackRate: number; loading: boolean; loadProgress: number; format: VzFormat | null; stereoMode: StereoMode; currentQuality: string; availableQualities: QualityLevel[]; autoQuality: boolean; lat: number; lon: number; fov: number; xrSupported: boolean; xrActive: boolean; controlsVisible: boolean; fullscreen: boolean; isLive: boolean; isAtLiveEdge: boolean; license: LicenseResult | null; currentProbeId: string | null; tourProbeCount: number; error: VzError | null; } type Listener = (value: T, prev: T) => void; type AnyListener = (key: string, value: unknown, prev: unknown) => void; /** * Lightweight reactive state store for the player. * Supports per-key subscriptions and batch updates. */ export declare class PlayerState { private state; private listeners; private globalListeners; constructor(initial?: Partial); /** Get the current value of a state key */ get(key: K): PlayerStateShape[K]; /** Get the entire state snapshot (read-only) */ getSnapshot(): Readonly; /** Set a single state value. No-op if value is unchanged. */ set(key: K, value: PlayerStateShape[K]): void; /** Batch multiple state updates. Notifications fire after all values are set. */ batch(updates: Partial): void; /** Subscribe to changes on a specific state key. Returns unsubscribe function. */ subscribe(key: K, listener: Listener): () => void; /** Subscribe to all state changes. Returns unsubscribe function. */ subscribeAll(listener: AnyListener): () => void; /** Reset state to initial values */ reset(): void; private notify; } export {}; //# sourceMappingURL=player-state.d.ts.map