import type { ChapterCameraKeyframe, ChapterCameraTrack } from '../core/types/story'; import type { ViewBox } from '../core/types/viewer'; export type CameraTrackSample = Pick; export declare const retimeCameraKeyframes: (keyframes: ChapterCameraKeyframe[], durationMs: number) => ChapterCameraKeyframe[]; export declare const catmullRom: (p0: number, p1: number, p2: number, p3: number, t: number) => number; export declare const generateCameraPreset: (preset: NonNullable, viewBox: ViewBox, durationMs?: number, initialDwellMs?: number) => ChapterCameraTrack; /** * How long a track actually animates for, which is what a chapter's length * should be measured against. * * A track needs two keyframes to move between — the motion editor says as much * before it enables its controls. Opening the motion tools and setting a * duration without placing points leaves a track that animates nothing, and * counting its duration held chapters on screen long after their narration had * finished, with no camera movement to show for it. */ export declare const animatableCameraDurationMs: (track: ChapterCameraTrack | undefined) => number; export declare const configureCameraTrackPreset: (track: ChapterCameraTrack | undefined, preset: NonNullable, currentView: ViewBox, durationMs?: number, options?: { preservePoints?: boolean; }) => ChapterCameraTrack; /** * Returns authored points on the exact clock playback will use. Dwell is * added before movement and every movement leg receives an equal share of the * duration, so deleting, replacing, or moving a point cannot unpredictably * reshuffle all of the other timestamps. */ export declare const balanceCameraTrackKeyframes: (track: ChapterCameraTrack) => ChapterCameraKeyframe[]; /** * Deterministically samples an in-chapter camera path at a presentation time. * * Motion-point timing is automatic in the authoring UI. Playback adds all * dwell time before movement, then divides the movement duration equally * between legs. This keeps the timeline predictable and ensures a hold can * never overlap a later point's displayed arrival time. */ export declare const sampleCameraTrack: (track: ChapterCameraTrack, timeMs: number) => CameraTrackSample | null;