import { OpenCascadeInstance, TopoDS_Shape, TDocStd_Document } from "../../bitbybit-dev-occt/bitbybit-dev-occt";
import { OccHelper } from "../occ-helper";
export interface AssemblyComponent {
    id: string;
    name: string;
    type: "assembly" | "part";
    shape?: TopoDS_Shape;
    children: AssemblyComponent[];
    transformation: {
        translation: [number, number, number];
        rotation: [number, number, number, number];
        scale: [number, number, number];
        matrix: number[];
    };
    properties: {
        volume?: number;
        surfaceArea?: number;
        centerOfMass?: [number, number, number];
        boundingBox?: {
            min: [number, number, number];
            max: [number, number, number];
        };
    };
    attributes: {
        material?: string;
        density?: number;
        mass?: number;
        [key: string]: any;
    };
    color?: {
        r: number;
        g: number;
        b: number;
        a: number;
    };
    pmi?: PMIData[];
}
export interface PMIData {
    type: "dimension" | "tolerance" | "annotation" | "feature";
    text: string;
    position: [number, number, number];
    direction: [number, number, number];
    properties: {
        [key: string]: any;
    };
}
export interface AssemblyStructure {
    version: string;
    units: string;
    root: AssemblyComponent;
    metadata: {
        totalParts: number;
        totalAssemblies: number;
        createdAt: string;
        source: string;
    };
}
export declare class OCCTIOAssembly {
    private readonly occ;
    private readonly och;
    constructor(occ: OpenCascadeInstance, och: OccHelper);
    private colorAssignments;
    private parseComponentWithXCAF;
    private extractChildrenWithXCAF;
    private extractColorFromXCAF;
    private convertQuantityColorToRgba;
    private extractSubShapeColor;
    private extractNameFromLabel;
    private extractAttributesFromXCAF;
    private extractProperties;
    private extractPMI;
    private extractAnnotationsFromShape;
    private extractCylindricalFeatures;
    private extractTransformation;
    private extractTransformationMatrix;
    private matrixToQuaternion;
    private generateId;
    private countComponents;
    serializeAssembly(assembly: AssemblyStructure): string;
    private cleanAssemblyForSerialization;
    parseXCAFDocument(doc: TDocStd_Document): AssemblyStructure;
    private createEmptyRootComponent;
    private parseXCAFComponent;
    private extractXCAFChildren;
    private extractNameFromXCAFLabel;
    private extractXCAFColor;
    private extractXCAFAttributes;
    private extractMaterialFromLabel;
    private extractMaterialName;
    private extractMaterialDensity;
    private extractAdditionalMaterialProperties;
    private buildColorAssignments;
}
