export default interface IModelGeometry {
    format_version: string;
    __comment__?: string;
    "minecraft:geometry": IGeometry[];
}
export interface IGeometry {
    description: IGeometryDescription;
    bones: IGeometryBone[];
    item_display_transforms?: ItemDisplayTransformsCollection;
    texturewidth?: number;
    textureheight?: number;
    visible_bounds_width?: number;
    visible_bounds_height?: number;
    visible_bounds_offset?: number[];
}
export interface ItemDisplayTransformsCollection {
    thirdperson_righthand?: ItemDisplayTransforms;
    thirdperson_lefthand?: ItemDisplayTransforms;
    firstperson_righthand?: ItemDisplayTransforms;
    firstperson_lefthand?: ItemDisplayTransforms;
    head?: ItemDisplayTransforms;
    embedded?: ItemDisplayTransforms;
    gui?: ItemDisplayTransforms;
    ground?: ItemDisplayTransforms;
    fixed?: ItemDisplayTransforms;
}
export interface ItemDisplayTransforms {
    rotation?: number[];
    translation?: number[];
    scale?: number[];
    rotation_pivot?: number[];
    scale_pivot?: number[];
    fit_to_frame?: boolean;
}
export interface IGeometryDescription {
    identifier: string;
    texture_width: number;
    texture_height: number;
    visible_bounds_width: number;
    visible_bounds_height: number;
    visible_bounds_offset: number[];
}
export interface IGeometryPolyMesh {
    normalized_uvs?: boolean;
    positions?: number[][];
    normals?: number[][];
    uvs?: number[][];
    polys?: number[][][] | "tri_list" | "quad_list";
}
export interface IGeometryBone {
    name: string;
    pivot: number[];
    rotation?: number[];
    parent?: string;
    binding?: string;
    bind_pose_rotation?: number[];
    cubes?: IGeometryBoneCube[];
    locators?: {
        [name: string]: number[];
    };
    poly_mesh?: IGeometryPolyMesh;
    texture_meshes?: IGeometryBoneTextureMesh[];
}
/**
 * A texture_mesh creates a flat billboard/sprite from a texture image.
 * Each pixel becomes a 1×1 unit (1/16 block) on a plane.
 * Used by attachables like bow, crossbow to render 2D item sprites in 3D.
 */
export interface IGeometryBoneTextureMesh {
    texture: string;
    local_pivot?: number[];
    position?: number[];
    rotation?: number[];
    scale?: number[];
}
export interface IGeometryBoneCube {
    origin: number[];
    size: number[];
    uv: number[] | IGeometryUVFaces;
    rotation?: number[];
    pivot?: number[];
    inflate?: number;
    mirror?: boolean;
}
export interface IGeometryUVFaces {
    north?: IGeometryUVFace;
    east?: IGeometryUVFace;
    south?: IGeometryUVFace;
    west?: IGeometryUVFace;
    up?: IGeometryUVFace;
    down?: IGeometryUVFace;
}
export interface IGeometryUVFace {
    uv: number[];
    uv_size: number[];
    uv_rotation?: number;
    material_instance?: string;
}
