import type { ILogger } from "../ILogger";
import type { IMmdModel } from "../IMmdModel";
import type { IMmdBindableModelAnimation } from "./IMmdBindableAnimation";
import type { IMmdRuntimeModelAnimation } from "./IMmdRuntimeAnimation";
import { MmdCompositeAnimation } from "./mmdCompositeAnimation";
/**
 * Mmd composite runtime model animation
 *
 * An object with mmd composite animation and model binding information
 */
export declare class MmdCompositeRuntimeModelAnimation implements IMmdRuntimeModelAnimation {
    /**
     * The animation data
     */
    animation: MmdCompositeAnimation;
    private readonly _ikSolverStates;
    private readonly _morphController;
    private readonly _meshes;
    private readonly _runtimeAnimations;
    private _onSpanAdded;
    private _onSpanRemoved;
    private constructor();
    private static readonly _RuntimeAnimationIdMap;
    private static _RuntimeAnimationIdCounter;
    private static _GetRuntimeAnimationId;
    private readonly _boneResultMap;
    private readonly _movableBoneResultMap;
    private readonly _morphResultMap;
    private readonly _ikSolverResultMap;
    private readonly _activeAnimationSpans;
    private readonly _activeRuntimeAnimations;
    private _activeRuntimeAnimationIds;
    private _lastActiveRuntimeAnimationIds;
    private readonly _boneRestPosition;
    private static readonly _IdentityQuaternion;
    /**
     * Update animation
     * @param frameTime frame time in 30fps
     */
    animate(frameTime: number): void;
    /**
     * Induce material recompile
     *
     * This method must run once before the animation runs
     *
     * This method prevents frame drop during animation by inducing properties to be recompiled that are used in morph animation
     * @param updateMorphTarget Whether to update morph target manager numMaxInfluencers
     * @param logger Logger
     */
    induceMaterialRecompile(updateMorphTarget: boolean, logger?: ILogger): void;
    /**
     * Dispose. remove all event listeners
     */
    dispose(): void;
    /**
     * Bind animation to model and prepare material for morph animation
     * @param animation Animation to bind
     * @param model Bind target
     * @param retargetingMap Model bone name to animation bone name map
     * @param logger Logger
     * @return MmdCompositeRuntimeModelAnimation instance
     */
    static Create(animation: MmdCompositeAnimation, model: IMmdModel, retargetingMap?: {
        [key: string]: string;
    }, logger?: ILogger): MmdCompositeRuntimeModelAnimation;
}
declare module "./mmdCompositeAnimation" {
    interface MmdCompositeAnimation extends IMmdBindableModelAnimation<MmdCompositeRuntimeModelAnimation> {
    }
}
