import { Adaptor3d_Curve, BRepAdaptor_CompCurve_2, Geom2d_Curve, TopoDS_Shell, TopoDS_Solid, Geom_Circle, Geom_Curve, Geom_Ellipse, Geom_Surface, gp_Ax1, gp_Ax2, gp_Ax22d_2, gp_Ax2d_2, gp_Ax3, gp_Dir2d_4, gp_Dir_4, gp_Pln_3, gp_Pnt2d_3, gp_Pnt_3, gp_Vec2d_4, gp_Vec_4, gp_XYZ_2, Handle_Geom_Curve, OpenCascadeInstance, TopoDS_Compound, TopoDS_Edge, TopoDS_Face, TopoDS_Shape, TopoDS_Vertex, TopoDS_Wire } from "../bitbybit-dev-occt/bitbybit-dev-occt";
import { VectorHelperService } from "./api/vector-helper.service";
import { Base } from "./api/inputs/base-inputs";
import * as Inputs from "./api/inputs/inputs";
import { ShapesHelperService } from "./api/shapes-helper.service";
export declare enum typeSpecificityEnum {
    curve = 0,
    edge = 1,
    wire = 2,
    face = 3
}
interface TopoDS_ShapeHash extends TopoDS_Shape {
    hash?: number;
}
export declare class OccHelper {
    readonly vecHelper: VectorHelperService;
    readonly shapesHelperService: ShapesHelperService;
    readonly occ: OpenCascadeInstance;
    private occRefReturns;
    constructor(vecHelper: VectorHelperService, shapesHelperService: ShapesHelperService, occ: OpenCascadeInstance);
    getCornerPointsOfEdgesForShape(inputs: Inputs.OCCT.ShapeDto<TopoDS_Shape>): Inputs.Base.Point3[];
    splitShapeWithShapes(inputs: Inputs.OCCT.SplitDto<TopoDS_Shape>): TopoDS_Shape;
    extrude(inputs: Inputs.OCCT.ExtrudeDto<TopoDS_Shape>): TopoDS_Shape;
    makeCompound(inputs: Inputs.OCCT.CompoundShapesDto<TopoDS_Shape>): TopoDS_Compound;
    makeCompoundIfNeeded(shapes: TopoDS_Shape[], returnCompound: boolean): TopoDS_Shape[] | TopoDS_Compound;
    gpAx3(point: Base.Point3, direction: Base.Vector3): gp_Ax3;
    gpAx2(point: Base.Point3, direction: Base.Vector3): gp_Ax2;
    gpAx2FromTwoVectors(point: Base.Point3, directionFirst: Base.Vector3, directionSecond: Base.Vector3): gp_Ax2;
    gpAx1(point: Base.Point3, direction: Base.Vector3): gp_Ax1;
    gpAx2d(point: Base.Point2, direction: Base.Vector2): gp_Ax2d_2;
    gpAx22d(point: Base.Point2, direction1: Base.Vector2, direction2: Base.Vector2): gp_Ax22d_2;
    gpPln(point: Base.Point3, direction: Base.Vector3): gp_Pln_3;
    gpPnt2d(point: Base.Point2): gp_Pnt2d_3;
    gpPnt(point: Base.Point3): gp_Pnt_3;
    gpVec(vec: Base.Vector3): gp_Vec_4;
    gpXYZ(point: Base.Point3): gp_XYZ_2;
    gpVec2d(vec: Base.Vector2): gp_Vec2d_4;
    gpDir(direction: Base.Vector3): gp_Dir_4;
    gpDir2d(direction: Base.Point2): gp_Dir2d_4;
    gcMakeCircle(center: Base.Point3, direction: Base.Vector3, radius: number): Geom_Circle;
    gcMakeEllipse(center: Base.Point3, direction: Base.Vector3, minorRadius: number, majorRadius: number): Geom_Ellipse;
    bRepBuilderAPIMakeEdge(curve: Geom_Curve): TopoDS_Edge;
    bRepBuilderAPIMakeWire(edge: TopoDS_Edge): TopoDS_Wire;
    makeVertex(pt: Base.Point3): TopoDS_Vertex;
    bRepBuilderAPIMakeShell(face: TopoDS_Face): TopoDS_Shell;
    bRepBuilderAPIMakeFaceFromWires(wires: TopoDS_Wire[], planar: boolean): TopoDS_Face;
    bRepBuilderAPIMakeFaceFromWire(wire: TopoDS_Wire, planar: boolean): TopoDS_Face;
    bRepBuilderAPIMakeFaceFromSurface(surface: Geom_Surface, tolDegen: number): TopoDS_Face;
    bRepBuilderAPIMakeFaceFromSurfaceAndWire(surface: Geom_Surface, wire: TopoDS_Wire, inside: boolean): TopoDS_Face;
    bRepPrimAPIMakeSphere(center: Base.Point3, direction: Base.Vector3, radius: number): TopoDS_Shape;
    closestPointsBetweenTwoShapes(shape1: TopoDS_Shape, shape2: TopoDS_Shape): [Base.Point3, Base.Point3];
    bRepPrimAPIMakeCylinder(center: Base.Point3, direction: Base.Vector3, radius: any, height: any): TopoDS_Shape;
    bRepPrimAPIMakeCylinderBetweenPoints(start: Base.Point3, end: Base.Point3, radius: number): TopoDS_Shape;
    bRepPrimAPIMakeBox(width: number, length: number, height: number, center: number[]): TopoDS_Shape;
    getEdges(inputs: Inputs.OCCT.ShapeDto<TopoDS_Shape>): TopoDS_Edge[];
    lineEdge(inputs: Inputs.OCCT.LineDto): TopoDS_Edge;
    getEdgeLength(inputs: Inputs.OCCT.ShapeDto<TopoDS_Edge>): number;
    getEdgesLengths(inputs: Inputs.OCCT.ShapesDto<TopoDS_Edge>): number[];
    getLinearCenterOfMass(inputs: Inputs.OCCT.ShapeDto<TopoDS_Shape>): Base.Point3;
    getShapesCentersOfMass(inputs: Inputs.OCCT.ShapesDto<TopoDS_Edge>): Base.Point3[];
    getWireLength(inputs: Inputs.OCCT.ShapeDto<TopoDS_Wire>): number;
    getWiresLengths(inputs: Inputs.OCCT.ShapesDto<TopoDS_Wire>): number[];
    getFaces(inputs: Inputs.OCCT.ShapeDto<TopoDS_Shape>): TopoDS_Face[];
    getSolids(inputs: Inputs.OCCT.ShapeDto<TopoDS_Shape>): TopoDS_Solid[];
    getFaceArea(inputs: Inputs.OCCT.ShapeDto<TopoDS_Face>): number;
    getFacesAreas(inputs: Inputs.OCCT.ShapesDto<TopoDS_Face>): number[];
    getFaceCenterOfMass(inputs: Inputs.OCCT.ShapeDto<TopoDS_Face>): Base.Point3;
    getFacesCentersOfMass(inputs: Inputs.OCCT.ShapesDto<TopoDS_Face>): Base.Point3[];
    getSolidVolume(inputs: Inputs.OCCT.ShapeDto<TopoDS_Solid>): number;
    getShellSurfaceArea(inputs: Inputs.OCCT.ShapeDto<TopoDS_Shell>): number;
    getSolidSurfaceArea(inputs: Inputs.OCCT.ShapeDto<TopoDS_Solid>): number;
    getSolidsVolumes(inputs: Inputs.OCCT.ShapesDto<TopoDS_Solid>): number[];
    getSolidCenterOfMass(inputs: Inputs.OCCT.ShapeDto<TopoDS_Solid>): Base.Point3;
    getSolidsCentersOfMass(inputs: Inputs.OCCT.ShapesDto<TopoDS_Solid>): Base.Point3[];
    castToHandleGeomCurve(curve: Geom_Curve): Handle_Geom_Curve;
    getActualTypeOfShape(shape: TopoDS_Shape): TopoDS_Edge | TopoDS_Wire | TopoDS_Vertex | TopoDS_Solid | TopoDS_Shell | TopoDS_Face | TopoDS_Compound;
    getShapeTypeEnum(shape: TopoDS_Shape): Inputs.OCCT.shapeTypeEnum;
    createCircle(radius: number, center: Base.Point3, direction: Base.Vector3, type: typeSpecificityEnum): TopoDS_Edge | TopoDS_Face | Geom_Circle | TopoDS_Wire;
    createEllipse(minorRadius: number, majorRadius: number, center: Base.Point3, direction: Base.Vector3, type: typeSpecificityEnum): TopoDS_Edge | TopoDS_Face | Geom_Ellipse | TopoDS_Wire;
    createSquareFace(inputs: Inputs.OCCT.SquareDto): TopoDS_Face;
    createRectangleFace(inputs: Inputs.OCCT.RectangleDto): TopoDS_Face;
    createRectangleWire(inputs: Inputs.OCCT.RectangleDto): TopoDS_Wire;
    alignAndTranslate(inputs: Inputs.OCCT.AlignAndTranslateDto<TopoDS_Shape>): TopoDS_Shape;
    createSquareWire(inputs: Inputs.OCCT.SquareDto): TopoDS_Wire;
    createStarWire(inputs: Inputs.OCCT.StarDto): TopoDS_Shape;
    createParallelogramWire(inputs: Inputs.OCCT.ParallelogramDto): TopoDS_Shape;
    createHeartWire(inputs: Inputs.OCCT.Heart2DDto): TopoDS_Shape;
    createNGonWire(inputs: Inputs.OCCT.NGonWireDto): TopoDS_Shape;
    createLPolygonWire(inputs: Inputs.OCCT.LPolygonDto): TopoDS_Shape;
    createPolygonWire(inputs: Inputs.OCCT.PolygonDto): TopoDS_Wire;
    createPolylineWire(inputs: Inputs.OCCT.PolylineDto): TopoDS_Wire;
    createLineWire(inputs: Inputs.OCCT.LineDto): TopoDS_Wire;
    private makeWireBetweenTwoPoints;
    divideEdgeByParamsToPoints(inputs: Inputs.OCCT.DivideDto<TopoDS_Edge>): Inputs.Base.Point3[];
    divideEdgeByEqualDistanceToPoints(inputs: Inputs.OCCT.DivideDto<TopoDS_Edge>): Base.Point3[];
    pointOnEdgeAtParam(inputs: Inputs.OCCT.DataOnGeometryAtParamDto<TopoDS_Edge>): Base.Point3;
    tangentOnEdgeAtParam(inputs: Inputs.OCCT.DataOnGeometryAtParamDto<TopoDS_Edge>): Base.Vector3;
    pointOnEdgeAtLength(inputs: Inputs.OCCT.DataOnGeometryAtLengthDto<TopoDS_Edge>): Base.Point3;
    tangentOnEdgeAtLength(inputs: Inputs.OCCT.DataOnGeometryAtLengthDto<TopoDS_Edge>): Base.Point3;
    divideWireByParamsToPoints(inputs: Inputs.OCCT.DivideDto<TopoDS_Wire>): Inputs.Base.Point3[];
    divideWireByEqualDistanceToPoints(inputs: Inputs.OCCT.DivideDto<TopoDS_Wire>): Base.Point3[];
    pointOnWireAtParam(inputs: Inputs.OCCT.DataOnGeometryAtParamDto<TopoDS_Wire>): Base.Point3;
    tangentOnWireAtParam(inputs: Inputs.OCCT.DataOnGeometryAtParamDto<TopoDS_Wire>): Base.Point3;
    pointOnWireAtLength(inputs: Inputs.OCCT.DataOnGeometryAtLengthDto<TopoDS_Wire>): Base.Point3;
    tangentOnWireAtLength(inputs: Inputs.OCCT.DataOnGeometryAtLengthDto<TopoDS_Wire>): Base.Point3;
    pointOnCurveAtParam(inputs: Inputs.OCCT.DataOnGeometryAtParamDto<Geom_Curve | BRepAdaptor_CompCurve_2>): Base.Point3;
    tangentOnCurveAtParam(inputs: Inputs.OCCT.DataOnGeometryAtParamDto<Geom_Curve | BRepAdaptor_CompCurve_2>): Base.Point3;
    divideCurveByEqualLengthDistance(inputs: Inputs.OCCT.DivideDto<Adaptor3d_Curve>): Base.Point3[];
    divideCurveToNrSegments(inputs: Inputs.OCCT.DivideDto<Geom_Curve | BRepAdaptor_CompCurve_2>, uMin: number, uMax: number): Base.Point3[];
    interpolatePoints(inputs: Inputs.OCCT.InterpolationDto): TopoDS_Wire;
    getNumSolidsInCompound(shape: TopoDS_Shape): number;
    getSolidFromCompound(shape: TopoDS_ShapeHash, index: number): TopoDS_ShapeHash;
    forEachSolid(shape: TopoDS_Shape, callback: (index: number, solid: TopoDS_Solid) => void): void;
    getWires(inputs: Inputs.OCCT.ShapeDto<TopoDS_Wire>): TopoDS_Wire[];
    getWireCenterOfMass(inputs: Inputs.OCCT.ShapeDto<TopoDS_Wire>): Base.Point3;
    forEachWire(shape: TopoDS_Shape, callback: (index: number, wire: TopoDS_Wire) => void): void;
    forEachEdge(shape: TopoDS_Shape, callback: (index: number, edge: TopoDS_Edge) => void): {};
    forEachFace(shape: TopoDS_Shape, callback: (index: number, face: TopoDS_Face) => void): void;
    forEachShell(shape: TopoDS_Shape, callback: (index: number, shell: TopoDS_Shell) => void): void;
    forEachVertex(shape: TopoDS_Shape, callback: (index: number, vertex: TopoDS_Vertex) => void): void;
    isArrayLike(item: any): boolean;
    intersection(inputs: Inputs.OCCT.IntersectionDto<TopoDS_Shape>): TopoDS_Shape[];
    difference(inputs: Inputs.OCCT.DifferenceDto<TopoDS_Shape>): TopoDS_Shape;
    filletEdges(inputs: Inputs.OCCT.FilletDto<TopoDS_Shape>): TopoDS_Shape;
    fillet3DWire(inputs: Inputs.OCCT.Fillet3DWireDto<TopoDS_Wire>): TopoDS_Wire;
    createWireFromEdges(inputs: Inputs.OCCT.ShapeDto<TopoDS_Edge>): TopoDS_Wire;
    combineEdgesAndWiresIntoAWire(inputs: Inputs.OCCT.ShapesDto<TopoDS_Edge | TopoDS_Wire>): TopoDS_Wire;
    createBSpline(inputs: Inputs.OCCT.BSplineDto): TopoDS_Wire;
    align(inputs: Inputs.OCCT.AlignDto<TopoDS_Shape>): TopoDS_Edge | TopoDS_Face | TopoDS_Compound | TopoDS_Wire | TopoDS_Vertex | TopoDS_Shell | TopoDS_Solid;
    translate(inputs: Inputs.OCCT.TranslateDto<TopoDS_Shape>): TopoDS_Edge | TopoDS_Face | TopoDS_Compound | TopoDS_Wire | TopoDS_Vertex | TopoDS_Shell | TopoDS_Solid;
    mirror(inputs: Inputs.OCCT.MirrorDto<TopoDS_Shape>): TopoDS_Edge | TopoDS_Face | TopoDS_Compound | TopoDS_Wire | TopoDS_Vertex | TopoDS_Shell | TopoDS_Solid;
    mirrorAlongNormal(inputs: Inputs.OCCT.MirrorAlongNormalDto<TopoDS_Shape>): TopoDS_Edge | TopoDS_Face | TopoDS_Compound | TopoDS_Wire | TopoDS_Vertex | TopoDS_Shell | TopoDS_Solid;
    rotate(inputs: Inputs.OCCT.RotateDto<TopoDS_Shape>): TopoDS_Edge | TopoDS_Face | TopoDS_Compound | TopoDS_Wire | TopoDS_Vertex | TopoDS_Shell | TopoDS_Solid;
    surfaceFromFace(inputs: Inputs.OCCT.ShapeDto<TopoDS_Face>): Geom_Surface;
    makeEdgeFromGeom2dCurveAndSurfaceBounded(inputs: Inputs.OCCT.CurveAndSurfaceDto<Geom2d_Curve, Geom_Surface>, umin: number, umax: number): TopoDS_Edge;
    makeEdgeFromGeom2dCurveAndSurface(inputs: Inputs.OCCT.CurveAndSurfaceDto<Geom2d_Curve, Geom_Surface>): TopoDS_Edge;
    startPointOnEdge(inputs: Inputs.OCCT.ShapeDto<TopoDS_Edge>): Base.Point3;
    endPointOnEdge(inputs: Inputs.OCCT.ShapeDto<TopoDS_Edge>): Base.Point3;
    startPointOnWire(inputs: Inputs.OCCT.ShapeDto<TopoDS_Wire>): Base.Point3;
    endPointOnWire(inputs: Inputs.OCCT.ShapeDto<TopoDS_Wire>): Base.Point3;
    placeWire(wire: TopoDS_Wire, surface: Geom_Surface): TopoDS_Wire;
    startPointOnCurve(inputs: Inputs.OCCT.ShapeDto<Geom_Curve | BRepAdaptor_CompCurve_2>): Inputs.Base.Point3;
    endPointOnCurve(inputs: Inputs.OCCT.ShapeDto<Geom_Curve | BRepAdaptor_CompCurve_2>): Inputs.Base.Point3;
    getGeomCurveFromEdge(edge: TopoDS_Edge, uMin: number, uMax: number): Geom_Curve;
    getEdgeBounds(edge: TopoDS_Edge): {
        uMin: number;
        uMax: number;
    };
    getUVBounds(face: TopoDS_Face): {
        uMin: number;
        uMax: number;
        vMin: number;
        vMax: number;
    };
    remap(value: number, from1: number, to1: number, from2: number, to2: number): number;
    makeThickSolidSimple(inputs: Inputs.OCCT.ThisckSolidSimpleDto<TopoDS_Shape>): TopoDS_Edge | TopoDS_Face | TopoDS_Compound | TopoDS_Wire | TopoDS_Vertex | TopoDS_Shell | TopoDS_Solid;
}
export {};
