import type { GeometryEntry, GeometryBone, GeometryCube } from '../geometry';
import type { FaceName } from './textures/face-map';
export interface FaceUVRect {
    x: number;
    y: number;
    width: number;
    height: number;
}
export interface HumanoidSourceCube {
    bone: GeometryBone;
    cube: GeometryCube;
    faces: Record<FaceName, FaceUVRect>;
}
export type HumanoidOverlayCube = HumanoidSourceCube;
export type HumanoidPartKey = 'torso' | 'head' | 'arm_left' | 'arm_right' | 'leg_left' | 'leg_right';
export interface HumanoidSourceScan {
    geometryId: string;
    bones: GeometryBone[];
    parts: Map<HumanoidPartKey, {
        base: HumanoidSourceCube;
        overlay?: HumanoidOverlayCube | undefined;
    }>;
    textureWidth: number;
    textureHeight: number;
    texturePixels: Uint8Array;
    baseTextureWidth: number;
    baseTextureHeight: number;
    textureScaleX: number;
    textureScaleY: number;
}
export interface ScanHumanoidSourceOptions {
    geometryId: string;
    geometry: GeometryEntry;
    textureWidth: number;
    textureHeight: number;
    texturePixels: Uint8Array;
    baseTextureWidth?: number;
    baseTextureHeight?: number;
    textureScaleX?: number;
    textureScaleY?: number;
}
export declare function scanHumanoidSource(options: ScanHumanoidSourceOptions): HumanoidSourceScan;
