import { LeviarObject } from '../LeviarObject.js'; import type { LeviarObjectOptions } from '../types.js'; import type { VideoManager } from '../VideoManager.js'; import type { VideoClip } from '../VideoManager.js'; export interface VideoAttribute { currentTime?: number; playbackRate?: number; volume?: number; src?: string; } export declare class LeviarVideo = Record> extends LeviarObject { /** 연결된 VideoManager */ private manager; /** 현재 재생 중인 클립 이름 */ private clipName; /** 현재 클립 정보 (Renderer에서 직접 참조) */ __clip: VideoClip | null; /** 생성자 시점에 __manager가 없어서 보류된 src 값 */ private pendingSrc; /** 현재 재생할 에셋 키 (Renderer에서 직접 참조) */ __src: string | null; /** Renderer에서 활성화된 실제 VideoElement 인스턴스 참조 */ __videoElement: HTMLVideoElement | null; /** 재생 중 여부 */ __playing: boolean; /** 일시정지 여부 */ __paused: boolean; /** 재생 시작 시 시작 위치로 이동해야하는지 여부 (Renderer에서 참조 및 리셋) */ __needsSeekToStart: boolean; /** currentTime setter에서 __videoElement가 null일 때 대기 중인 seek 값 (Renderer에서 적용 후 null로 리셋) */ __pendingSeek: number | null; private static readonly DELEGATED_GETTERS; private static readonly DELEGATED_SETTERS; constructor(options?: LeviarObjectOptions); /** * VideoManager를 연결합니다. */ __setManager(manager: VideoManager): this; /** * 저장된 비디오 클립을 재생합니다. */ play(): this; /** * 재생을 일시정지합니다. */ pause(): this; /** * 재생을 정지하고 처음으로 되돌립니다. loop=false일 때 'ended'를 emit합니다. */ stop(): this; /** * Renderer에서 루프 완료 시 호출 — 'repeat' 이벤트를 emit합니다. * @internal */ __onRepeat(): void; /** * Renderer에서 재생 종료 시 호출 — 'ended' 이벤트를 emit합니다. * @internal */ __onEnded(): void; protected _getDelegatedAttribute(key: string): any; protected _setDelegatedAttribute(key: string, value: any): void; }