import { easeAnimationParameter } from "@skenora/contracts"; import { type MaterialAnimatedProperty, type MaterialAnimationPlayOptions, type MaterialAnimationResult, type MaterialAnimationState, type MaterialAnimationValue, type MaterialOverride, type MaterialParameterAnimation } from "@skenora/contracts"; import type { RuntimeClock } from "./runtime-clock.js"; import { AnimationPropertyOwners } from "./animation-property-owners.js"; interface MaterialAnimationTarget { /** Preflight both endpoints and every target instance without changing it. */ validate(materialId: string, animation: Readonly): void; write(materialId: string, property: MaterialAnimatedProperty, value: MaterialAnimationValue): void; } /** One transient writer per material/property; never mutates document definitions. */ export declare class MaterialAnimationController { #private; constructor(clock: RuntimeClock, target: MaterialAnimationTarget, onState?: (state: MaterialAnimationState) => void, maxRunning?: number, owners?: AnimationPropertyOwners); setMaterials(materials: Readonly>): void; startAuto(): void; play(materialId: string, animationId: string, options?: MaterialAnimationPlayOptions): Promise; pause(materialId: string, animationId: string): boolean; resume(materialId: string, animationId: string): boolean; stop(materialId: string, animationId: string): void; reset(materialId: string, animationId: string): void; getState(materialId: string, animationId: string): MaterialAnimationState | null; cancelTarget(materialId: string, property: string): void; stopAll(): void; dispose(): void; } export declare const easeParameter: typeof easeAnimationParameter; export {}; //# sourceMappingURL=material-animation-controller.d.ts.map