/** * CutsceneTimeline.ts * * Sequenced animation/event timeline for cutscenes. * Supports parallel tracks, timed events, camera control, and dialogue cues. * * @module animation */ export type TimelineEventType = 'animation' | 'camera' | 'dialogue' | 'audio' | 'effect' | 'wait' | 'callback'; export interface TimelineEvent { id: string; type: TimelineEventType; startTime: number; duration: number; data: Record; } export interface TimelineTrack { id: string; name: string; targetEntity?: string; events: TimelineEvent[]; muted: boolean; } export interface CutsceneDefinition { id: string; name: string; duration: number; tracks: TimelineTrack[]; loop: boolean; } export interface CutsceneState { definition: CutsceneDefinition; currentTime: number; isPlaying: boolean; isPaused: boolean; speed: number; activeEvents: Set; completedEvents: Set; triggeredCallbacks: string[]; } export declare class CutsceneTimeline { private cutscenes; private callbacks; load(definition: CutsceneDefinition): string; play(id: string, startTime?: number): boolean; pause(id: string): void; resume(id: string): void; stop(id: string): void; setSpeed(id: string, speed: number): void; seek(id: string, time: number): void; registerCallback(callbackId: string, fn: () => void): void; unregisterCallback(callbackId: string): void; update(dt: number): Map; getState(id: string): CutsceneState | undefined; isPlaying(id: string): boolean; getCurrentTime(id: string): number; getProgress(id: string): number; removeCutscene(id: string): boolean; } export declare class CutsceneBuilder { private tracks; private eventCounter; private id; private name; constructor(id: string, name: string); addTrack(name: string, targetEntity?: string): CutsceneBuilder; addEvent(trackIndex: number, type: TimelineEventType, startTime: number, duration: number, data?: Record): CutsceneBuilder; build(): CutsceneDefinition; } //# sourceMappingURL=CutsceneTimeline.d.ts.map