import type { MmdModelMetadata } from "../../Loader/mmdModelMetadata";
import type { IMmdRuntimeLinkedBone } from "../IMmdRuntimeLinkedBone";
/**
 * mmd model metadata representation in binary
 *
 * boneCount: uint32
 * appendTransformCount: uint32
 * ikCount: uint32
 * {
 *  restPosition: float32[3]
 *  parentBoneIndex: int32
 *  transformOrder: int32
 *  flag: uint16
 *  -- padding: uint16
 *  appendTransform: { // optional
 *   parentIndex: int32
 *   ratio: float32
 *  }
 *  ik: { // optional
 *   target: int32
 *   iteration: int32
 *   rotationConstraint: float32
 *   linkCount: uint32
 *   {
 *    target: int32
 *    hasLimitation: uint8
 *    -- padding: uint8
 *    -- padding: uint16
 *    limitation: { // optional
 *     minimumAngle: float32[3]
 *     maximumAngle: float32[3]
 *    }
 *   }[linkCount]
 *  }
 * }[boneCount]
 *
 * morphCount: uint32
 * { // if boneMorph
 *  kind: uint8
 *  -- padding: uint8
 *  -- padding: uint16
 *  boneCount: uint32
 *  indices: int32[boneCount]
 *  positions: float32[boneCount * 3]
 *  rotations: float32[boneCount * 4]
 * } | { // if groupMorph
 *  kind: uint8
 *  -- padding: uint8
 *  -- padding: uint16
 *  indexCount: uint32
 *  indices: int32[indexCount]
 *  ratios: float32[indexCount]
 * }[morphCount]
 *
 * rigidBodyCount: uint32
 * {
 *  boneIndex: int32
 *  collisionGroup: uint8
 *  shapeType: uint8
 *  collisionMask: uint16
 *  shapeSize: float32[3]
 *  shapePosition: float32[3]
 *  shapeRotation: float32[3]
 *  mass: float32
 *  linearDamping: float32
 *  angularDamping: float32
 *  repulsion: float32
 *  friction: float32
 *  physicsMode: uint8
 *  -- padding: uint8
 *  -- padding: uint16
 * }[rigidBodyCount]
 *
 * jointCount: uint32
 * {
 *  type: uint8
 *  -- padding: uint8
 *  -- padding: uint16
 *  rigidBodyIndexA: int32
 *  rigidBodyIndexB: int32
 *  position: float32[3]
 *  rotation: float32[3]
 *  positionMin: float32[3]
 *  positionMax: float32[3]
 *  rotationMin: float32[3]
 *  rotationMax: float32[3]
 *  springPosition: float32[3]
 *  springRotation: float32[3]
 * }[jointCount]
 */
/**
 * @internal
 */
export declare class MmdMetadataEncoder {
    encodePhysics: boolean;
    constructor();
    computeSize(metadata: MmdModelMetadata): number;
    encode(metadata: MmdModelMetadata, linkedBone: IMmdRuntimeLinkedBone[], buffer: Uint8Array): Int32Array;
}
