/** * AnimationTrait.ts * * Declarative animation attachment for HoloScript+ nodes. * Allows any node to have animations defined as traits. * * @trait animate */ import { AnimationEngine } from './AnimationEngine'; import { SpringConfig } from './SpringAnimator'; export interface HSPlusNode { id?: string; properties?: Record; } export interface TraitHandler { name: string; defaultConfig: TConfig; onAttach(node: HSPlusNode, config: TConfig, context: unknown): void; onDetach(node: HSPlusNode, config: TConfig, context: unknown): void; onUpdate(node: HSPlusNode, config: TConfig, context: unknown, delta: number): void; } export interface AnimationTraitConfig { clips?: AnimationClipDef[]; springs?: SpringDef[]; autoPlay: boolean; } export interface AnimationClipDef { property: string; keyframes: Array<{ time: number; value: number; easing?: string; }>; duration: number; loop?: boolean; pingPong?: boolean; delay?: number; } export interface SpringDef { property: string; target: number; preset?: string; config?: Partial; } export declare function getSharedAnimationEngine(): AnimationEngine; export declare const animationTraitHandler: TraitHandler; //# sourceMappingURL=AnimationTrait.d.ts.map