import { VRM, VRMHumanBoneName, VRMPose } from "@davidcks/r3f-vrm";
type PartialPosePositoins = Partial<Record<VRMHumanBoneName, {
    position: [number, number, number];
}>>;
export declare class PoseConversionProfileManager {
    private _leftArmPoseProfileManager;
    private _bodyPoseProfileManager;
    private _managerPrefixRecords;
    private _basePosesPrefixRecords;
    private _mode;
    private _vrm;
    private _poseConversionManager;
    private _poseConverterPrefixRecords;
    constructor(vrm: VRM, mode?: "default" | "normalized", opt?: {
        preset?: "";
    });
    private _getGlobalBonePositions;
    private _getNormalizedRelevantBonePositionsByBodyPart;
    autoCalibrate(onPose: (pose: VRMPose) => Promise<void> | void): Promise<void>;
    private _spreadPosePositions;
    private _getRelevantPosePositionsByBodyPart;
    private _getRelevantBlendShapesByPrefix;
    /**
     * Predict emotions from current blendshape values with better scoring
     */
    predictPose(posePositions: PartialPosePositoins, slerp?: boolean): VRMPose;
    predictBodyPose(blendshapes: Map<string, number>, slerp?: boolean): {
        score: [name: string, value: number][];
        slerpedScore: number;
        pose: VRMPose;
    };
    predictLeftArmPose(blendshapes: Map<string, number>, slerp?: boolean): {
        score: [name: string, value: number][];
        slerpedScore: number;
        pose: VRMPose;
    };
    /**
     *
     * @param data - Array of pose preset keys and scores. The scores should go
     *  from [0] - worst score, to [data.length - 1] - best score
     * @param basePoses - Pose presets corresponding with the keys of data
     */
    private _slerpPoseData;
    private _resolvePoseKey;
    addSample(key: ReturnType<typeof this.getProfileKeys>[number], posePositions: PartialPosePositoins): void;
    trainProfiles(): Promise<void>;
    hasProfile(key: ReturnType<typeof this.getProfileKeys>[number]): boolean;
    getProfileKeys(): (`la__${string}` | `la__${number}` | `bo__${string}` | `bo__${number}`)[];
    getVRMPoseForProfileKey(key: ReturnType<typeof this.getProfileKeys>[number]): VRMPose;
}
export {};
//# sourceMappingURL=PoseConversionProfileManager.d.ts.map