import { Matrix } from "@babylonjs/core/Maths/math.vector";
import type { Mesh } from "@babylonjs/core/Meshes/mesh";
import type { TransformNode } from "@babylonjs/core/Meshes/transformNode";
import type { IMmdModel } from "../IMmdModel";
import type { IMmdRuntime } from "../IMmdRuntime";
/**
 * Options for creating MMD model from humanoid
 */
export interface CreateMmdModelFromHumanoidOptions {
    /**
     * Humanoid bone name to MMD bone name map (default: {})
     *
     * Usually created by `MmdHumanoidMapper`
     *
     * Bones where the map is not defined will be ignored
     */
    boneMap?: {
        [key: string]: string;
    };
    /**
     * Humanoid morph name to MMD morph name map (default: {})
     *
     * Morphs where the map is not defined will be mapped to the same name
     */
    morphMap?: {
        [key: string]: string;
    };
    /**
     * Transform offset for match skeleton space (default: Matrix.Identity())
     */
    transformOffset?: TransformNode | Matrix;
}
/**
 * Virtualizes the humanoid model as MMD model
 */
export declare class HumanoidMmd {
    private static readonly _StandardSkeletonMetaData;
    private _createMetadata;
    private _removeScaleFromOffsetMatrix;
    private _copyBonePosition;
    private _getAverageBonePosition;
    private _buildBoneProxyTree;
    /**
     * Force Create MMD model from humanoid mesh
     * @param mmdRuntime MMD runtime
     * @param humanoidMesh Humanoid model root mesh
     * @param meshes Meshes
     * @param options Options
     * @returns MMD model created from humanoid mesh
     */
    createMmdModelFromHumanoid<T extends IMmdModel>(mmdRuntime: IMmdRuntime<T>, humanoidMesh: Mesh, meshes: readonly Mesh[], options?: CreateMmdModelFromHumanoidOptions): T;
}
