import { type SceneAnimationCancellationReason, type SceneAnimationTrackPlayOptions, type SceneAnimationTrackResult, type SceneAnimationTracks, type SceneAnimationTrackState, type SceneAnimationTrackV1, type SceneAnimationTrackValue } from "@skenora/contracts"; import { AnimationPropertyOwners } from "./animation-property-owners.js"; import type { RuntimeClock } from "./runtime-clock.js"; export interface SceneAnimationTrackBinding { /** Includes projection identity, target identity and disposed status. */ isCurrent(): boolean; write(value: SceneAnimationTrackValue): void; prepareWrite?(value: SceneAnimationTrackValue): () => void; } export interface SceneAnimationTrackTarget { /** Validate every keyframe and target instance, without mutating any target. */ prepare(track: Readonly): SceneAnimationTrackBinding; } /** Internal engine-independent player. RuntimeSession integration is separate. */ export declare class SceneAnimationTrackController implements SceneAnimationTracks { #private; readonly target: SceneAnimationTrackTarget; readonly owners: AnimationPropertyOwners; readonly onState: (state: SceneAnimationTrackState) => void; constructor(clock: RuntimeClock, target: SceneAnimationTrackTarget, owners?: AnimationPropertyOwners, onState?: (state: SceneAnimationTrackState) => void); setTracks(tracks: Readonly>): void; play(trackId: string, options?: SceneAnimationTrackPlayOptions): Promise; pause(trackId: string): boolean; resume(trackId: string): boolean; seek(trackId: string, timeMs: number): SceneAnimationTrackState; stop(trackId: string): void; reset(trackId: string): void; getState(trackId: string): SceneAnimationTrackState | null; cancelTarget(kind: "entity" | "material", id: string, reason?: SceneAnimationCancellationReason): void; stopAll(reason?: SceneAnimationCancellationReason): void; cancelTargets(kind: "entity" | "material", reason: SceneAnimationCancellationReason): void; dispose(): void; } //# sourceMappingURL=scene-animation-track-controller.d.ts.map