import type { CameraPathRecord, Vector3Value } from "@skenora/contracts"; import type { CameraController } from "./camera-controller.js"; import { AnimationPropertyOwners } from "./animation-property-owners.js"; export interface CameraPathPlaybackOptions { loop?: boolean; playbackRate?: number; startProgress?: number; restoreCameraOnStop?: boolean; signal?: AbortSignal; } export interface CameraPathPlaybackState { status: "idle" | "playing" | "paused"; pathId: string | null; progress: number; elapsedMs: number; } export interface CameraPathPose { position: Vector3Value; target: Vector3Value; } /** Smooth, dependency-free camera path playback with pause/seek/state support. */ export declare class CameraPathController { #private; readonly owners: AnimationPropertyOwners; readonly camera: CameraController; constructor(camera: CameraController, paths?: Readonly>, owners?: AnimationPropertyOwners); get state(): CameraPathPlaybackState; get paths(): Readonly>; setPaths(paths: Readonly>): void; subscribe(listener: (state: CameraPathPlaybackState) => void): () => void; validate(pathId: string, options?: CameraPathPlaybackOptions): void; play(pathId: string, options?: CameraPathPlaybackOptions): Promise; pause(): boolean; resume(): boolean; stop(restoreCamera?: boolean): void; seek(pathId: string, progress: number): void; jumpToKeyframe(pathId: string, keyframeId: string): void; dispose(): void; } /** Evaluates a path without mutating a camera, useful for previews and tools. */ export declare function evaluateCameraPath(path: Readonly, timeMs: number): CameraPathPose | null; //# sourceMappingURL=camera-path-controller.d.ts.map