import { Pose, Timeline } from '../types/index.ts'; import { Animation } from './animation'; export type MultiAnimationMode = "parallel" | "sequence"; export interface MultiAnimationOptions { mode?: MultiAnimationMode; /** * Per-child start progress (0..1), keyed off the *previous* child. Only * meaningful for `parallel` mode. `startAt[i]` = the progress the (i-1)th * child must reach before the i-th child plays. `startAt[0]` is ignored * (the first child always starts immediately). * * Omit (or use all zeros) for true simultaneous start — the existing * parallel behavior. Use a fractional value (e.g. `[0, 0.4]`) for * fade-through / shared-axis style overlap that's robust to spring tuning * changes (the trigger moves with the spring, not with wall-clock time). */ startAt?: number[]; } /** * Composite that drives several child Animations. * * - `parallel`: all children play together (optionally staggered via `startAt`) * - `sequence`: each child waits for the previous to settle, then plays * * Pose/Timeline reads fan out to every child for diagnostic / inspection use. */ export declare class MultiAnimation extends Animation { private children; private startAt; private pendingComplete; private running; private pendingStartTimers; constructor(children: Animation[], opts?: MultiAnimationOptions); play(): void; reverse(): void; pause(): void; complete(): void; get progress(): number; getPose(): Pose[]; getTimeline(): Timeline[]; matchInto(_poses: Pose[]): void; get isAnimating(): boolean; get isPaused(): boolean; get isComplete(): boolean; get isReversing(): boolean; get playbackRate(): number; set playbackRate(rate: number); private startRun; private scheduleStart; private clearPendingStartTimers; private handleChildComplete; private handleFinished; findTimeForProgress(_threshold: number): number | null; } //# sourceMappingURL=multi-animation.d.ts.map