import { OCCTBooleans } from "./services/booleans";
import { OCCTGeom } from "./services/geom/geom";
import { OCCTIO } from "./services/io";
import { OCCTOperations } from "./services/operations";
import { OCCTShapes } from "./services/shapes/shapes";
import { OCCTTransforms } from "./services/transforms";
import { OCCTFillets } from "./services/fillets";
import { OCCTDimensions } from "./services/dimensions";
import { OCCTShapeFix } from "./services/shape-fix";
export class OCCTService {
    constructor(occ, och) {
        this.occ = occ;
        this.och = och;
        this.shapes = new OCCTShapes(occ, och);
        this.geom = new OCCTGeom(occ, och);
        this.transforms = new OCCTTransforms(occ, och);
        this.operations = new OCCTOperations(occ, och);
        this.booleans = new OCCTBooleans(occ, och);
        this.fillets = new OCCTFillets(occ, och);
        this.shapeFix = new OCCTShapeFix(occ, och);
        this.dimensions = new OCCTDimensions(occ, och);
        // this.assembly = new OCCTAssembly(occ, och);
        this.io = new OCCTIO(occ, och);
    }
    shapeFacesToPolygonPoints(inputs) {
        return this.och.meshingService.shapeFacesToPolygonPoints(inputs);
    }
    shapesToMeshes(inputs) {
        return inputs.shapes.map(shape => this.shapeToMesh({ shape, precision: inputs.precision, adjustYtoZ: inputs.adjustYtoZ }));
    }
    shapeToMesh(inputs) {
        return this.och.meshingService.shapeToMesh(inputs);
    }
}
