from enum import IntEnum
from typing import overload, NewType, Optional, Tuple

from OCC.Core.Standard import *
from OCC.Core.NCollection import *
from OCC.Core.TopoDS import *
from OCC.Core.ShapeBuild import *
from OCC.Core.Message import *
from OCC.Core.ShapeExtend import *
from OCC.Core.Geom import *
from OCC.Core.TopLoc import *
from OCC.Core.ShapeAnalysis import *
from OCC.Core.ShapeConstruct import *
from OCC.Core.Geom2d import *
from OCC.Core.TopAbs import *
from OCC.Core.TopTools import *


class ShapeFix_SequenceOfWireSegment:
    def __init__(self) -> None: ...
    def __len__(self) -> int: ...
    def Size(self) -> int: ...
    def Clear(self) -> None: ...
    def First(self) -> ShapeFix_WireSegment: ...
    def Last(self) -> ShapeFix_WireSegment: ...
    def Length(self) -> int: ...
    def Append(self, theItem: ShapeFix_WireSegment) -> ShapeFix_WireSegment: ...
    def Prepend(self, theItem: ShapeFix_WireSegment) -> ShapeFix_WireSegment: ...
    def RemoveFirst(self) -> None: ...
    def Reverse(self) -> None: ...
    def Value(self, theIndex: int) -> ShapeFix_WireSegment: ...
    def SetValue(self, theIndex: int, theValue: ShapeFix_WireSegment) -> None: ...

class shapefix:
    @staticmethod
    def EncodeRegularity(shape: TopoDS_Shape, tolang: Optional[float] = 1.0e-10) -> None: ...
    @staticmethod
    def FixVertexPosition(theshape: TopoDS_Shape, theTolerance: float, thecontext: ShapeBuild_ReShape) -> bool: ...
    @staticmethod
    def LeastEdgeSize(theshape: TopoDS_Shape) -> float: ...
    @staticmethod
    def RemoveSmallEdges(shape: TopoDS_Shape, Tolerance: float, context: ShapeBuild_ReShape) -> TopoDS_Shape: ...
    @staticmethod
    def SameParameter(shape: TopoDS_Shape, enforce: bool, preci: Optional[float] = 0.0, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange(), theMsgReg: Optional[ShapeExtend_BasicMsgRegistrator] = 0) -> bool: ...

class ShapeFix_Edge(Standard_Transient):
    def __init__(self) -> None: ...
    def FixAddCurve3d(self, edge: TopoDS_Edge) -> bool: ...
    @overload
    def FixAddPCurve(self, edge: TopoDS_Edge, face: TopoDS_Face, isSeam: bool, prec: Optional[float] = 0.0) -> bool: ...
    @overload
    def FixAddPCurve(self, edge: TopoDS_Edge, surface: Geom_Surface, location: TopLoc_Location, isSeam: bool, prec: Optional[float] = 0.0) -> bool: ...
    @overload
    def FixAddPCurve(self, edge: TopoDS_Edge, face: TopoDS_Face, isSeam: bool, surfana: ShapeAnalysis_Surface, prec: Optional[float] = 0.0) -> bool: ...
    @overload
    def FixAddPCurve(self, edge: TopoDS_Edge, surface: Geom_Surface, location: TopLoc_Location, isSeam: bool, surfana: ShapeAnalysis_Surface, prec: Optional[float] = 0.0) -> bool: ...
    def FixRemoveCurve3d(self, edge: TopoDS_Edge) -> bool: ...
    @overload
    def FixRemovePCurve(self, edge: TopoDS_Edge, face: TopoDS_Face) -> bool: ...
    @overload
    def FixRemovePCurve(self, edge: TopoDS_Edge, surface: Geom_Surface, location: TopLoc_Location) -> bool: ...
    @overload
    def FixReversed2d(self, edge: TopoDS_Edge, face: TopoDS_Face) -> bool: ...
    @overload
    def FixReversed2d(self, edge: TopoDS_Edge, surface: Geom_Surface, location: TopLoc_Location) -> bool: ...
    @overload
    def FixSameParameter(self, edge: TopoDS_Edge, tolerance: Optional[float] = 0.0) -> bool: ...
    @overload
    def FixSameParameter(self, edge: TopoDS_Edge, face: TopoDS_Face, tolerance: Optional[float] = 0.0) -> bool: ...
    @overload
    def FixVertexTolerance(self, edge: TopoDS_Edge, face: TopoDS_Face) -> bool: ...
    @overload
    def FixVertexTolerance(self, edge: TopoDS_Edge) -> bool: ...
    def Projector(self) -> ShapeConstruct_ProjectCurveOnSurface: ...
    def SetContext(self, context: ShapeBuild_ReShape) -> None: ...
    def Status(self, status: ShapeExtend_Status) -> bool: ...

class ShapeFix_EdgeConnect:
    def __init__(self) -> None: ...
    @overload
    def Add(self, aFirst: TopoDS_Edge, aSecond: TopoDS_Edge) -> None: ...
    @overload
    def Add(self, aShape: TopoDS_Shape) -> None: ...
    def Build(self) -> None: ...
    def Clear(self) -> None: ...

class ShapeFix_EdgeProjAux(Standard_Transient):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, F: TopoDS_Face, E: TopoDS_Edge) -> None: ...
    def Compute(self, preci: float) -> None: ...
    def FirstParam(self) -> float: ...
    def Init(self, F: TopoDS_Face, E: TopoDS_Edge) -> None: ...
    def IsFirstDone(self) -> bool: ...
    def IsIso(self, C: Geom2d_Curve) -> bool: ...
    def IsLastDone(self) -> bool: ...
    def LastParam(self) -> float: ...

class ShapeFix_FaceConnect:
    def __init__(self) -> None: ...
    def Add(self, aFirst: TopoDS_Face, aSecond: TopoDS_Face) -> bool: ...
    def Build(self, shell: TopoDS_Shell, sewtoler: float, fixtoler: float) -> TopoDS_Shell: ...
    def Clear(self) -> None: ...

class ShapeFix_FreeBounds:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, shape: TopoDS_Shape, sewtoler: float, closetoler: float, splitclosed: bool, splitopen: bool) -> None: ...
    @overload
    def __init__(self, shape: TopoDS_Shape, closetoler: float, splitclosed: bool, splitopen: bool) -> None: ...
    def GetClosedWires(self) -> TopoDS_Compound: ...
    def GetOpenWires(self) -> TopoDS_Compound: ...
    def GetShape(self) -> TopoDS_Shape: ...

class ShapeFix_IntersectionTool:
    def __init__(self, context: ShapeBuild_ReShape, preci: float, maxtol: Optional[float] = 1.0) -> None: ...
    def Context(self) -> ShapeBuild_ReShape: ...
    def CutEdge(self, edge: TopoDS_Edge, pend: float, cut: float, face: TopoDS_Face) -> Tuple[bool, bool]: ...
    def FixIntersectingWires(self, face: TopoDS_Face) -> bool: ...
    def FixSelfIntersectWire(self, sewd: ShapeExtend_WireData, face: TopoDS_Face) -> Tuple[bool, int, int, int]: ...
    def SplitEdge(self, edge: TopoDS_Edge, param: float, vert: TopoDS_Vertex, face: TopoDS_Face, newE1: TopoDS_Edge, newE2: TopoDS_Edge, preci: float) -> bool: ...

class ShapeFix_Root(Standard_Transient):
    def __init__(self) -> None: ...
    def Context(self) -> ShapeBuild_ReShape: ...
    def LimitTolerance(self, toler: float) -> float: ...
    def MaxTolerance(self) -> float: ...
    def MinTolerance(self) -> float: ...
    def MsgRegistrator(self) -> ShapeExtend_BasicMsgRegistrator: ...
    def Precision(self) -> float: ...
    @overload
    def SendFail(self, shape: TopoDS_Shape, message: Message_Msg) -> None: ...
    @overload
    def SendFail(self, message: Message_Msg) -> None: ...
    @overload
    def SendMsg(self, shape: TopoDS_Shape, message: Message_Msg, gravity: Optional[Message_Gravity] = Message_Info) -> None: ...
    @overload
    def SendMsg(self, message: Message_Msg, gravity: Optional[Message_Gravity] = Message_Info) -> None: ...
    @overload
    def SendWarning(self, shape: TopoDS_Shape, message: Message_Msg) -> None: ...
    @overload
    def SendWarning(self, message: Message_Msg) -> None: ...
    def Set(self, Root: ShapeFix_Root) -> None: ...
    def SetContext(self, context: ShapeBuild_ReShape) -> None: ...
    def SetMaxTolerance(self, maxtol: float) -> None: ...
    def SetMinTolerance(self, mintol: float) -> None: ...
    def SetMsgRegistrator(self, msgreg: ShapeExtend_BasicMsgRegistrator) -> None: ...
    def SetPrecision(self, preci: float) -> None: ...

class ShapeFix_ShapeTolerance:
    def __init__(self) -> None: ...
    def LimitTolerance(self, shape: TopoDS_Shape, tmin: float, tmax: Optional[float] = 0.0, styp: Optional[TopAbs_ShapeEnum] = TopAbs_SHAPE) -> bool: ...
    def SetTolerance(self, shape: TopoDS_Shape, preci: float, styp: Optional[TopAbs_ShapeEnum] = TopAbs_SHAPE) -> None: ...

class ShapeFix_SplitTool:
    def __init__(self) -> None: ...
    def CutEdge(self, edge: TopoDS_Edge, pend: float, cut: float, face: TopoDS_Face) -> Tuple[bool, bool]: ...
    @overload
    def SplitEdge(self, edge: TopoDS_Edge, param: float, vert: TopoDS_Vertex, face: TopoDS_Face, newE1: TopoDS_Edge, newE2: TopoDS_Edge, tol3d: float, tol2d: float) -> bool: ...
    @overload
    def SplitEdge(self, edge: TopoDS_Edge, param1: float, param2: float, vert: TopoDS_Vertex, face: TopoDS_Face, newE1: TopoDS_Edge, newE2: TopoDS_Edge, tol3d: float, tol2d: float) -> bool: ...
    @overload
    def SplitEdge(self, edge: TopoDS_Edge, fp: float, V1: TopoDS_Vertex, lp: float, V2: TopoDS_Vertex, face: TopoDS_Face, SeqE: TopTools_SequenceOfShape, context: ShapeBuild_ReShape, tol3d: float, tol2d: float) -> Tuple[bool, int]: ...

class ShapeFix_WireVertex:
    def __init__(self) -> None: ...
    def Analyzer(self) -> ShapeAnalysis_WireVertex: ...
    def Fix(self) -> int: ...
    def FixSame(self) -> int: ...
    @overload
    def Init(self, wire: TopoDS_Wire, preci: float) -> None: ...
    @overload
    def Init(self, sbwd: ShapeExtend_WireData, preci: float) -> None: ...
    @overload
    def Init(self, sawv: ShapeAnalysis_WireVertex) -> None: ...
    def Wire(self) -> TopoDS_Wire: ...
    def WireData(self) -> ShapeExtend_WireData: ...

class ShapeFix_ComposeShell(ShapeFix_Root):
    def __init__(self) -> None: ...
    def GetClosedMode(self) -> bool: ...
    def SetClosedMode(self, value: bool) -> None: ...
    def DispatchWires(self, faces: TopTools_SequenceOfShape, wires: ShapeFix_SequenceOfWireSegment) -> None: ...
    def GetTransferParamTool(self) -> ShapeAnalysis_TransferParameters: ...
    def Init(self, Grid: ShapeExtend_CompositeSurface, L: TopLoc_Location, Face: TopoDS_Face, Prec: float) -> None: ...
    def Perform(self) -> bool: ...
    def Result(self) -> TopoDS_Shape: ...
    def SetTransferParamTool(self, TransferParam: ShapeAnalysis_TransferParameters) -> None: ...
    def SplitEdges(self) -> None: ...
    def Status(self, status: ShapeExtend_Status) -> bool: ...

class ShapeFix_Face(ShapeFix_Root):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, face: TopoDS_Face) -> None: ...
    def Add(self, wire: TopoDS_Wire) -> None: ...
    def GetAutoCorrectPrecisionMode(self) -> int: ...
    def SetAutoCorrectPrecisionMode(self, value: int) -> None: ...
    def ClearModes(self) -> None: ...
    def Face(self) -> TopoDS_Face: ...
    def FixAddNaturalBound(self) -> bool: ...
    def GetFixAddNaturalBoundMode(self) -> int: ...
    def SetFixAddNaturalBoundMode(self, value: int) -> None: ...
    def FixIntersectingWires(self) -> bool: ...
    def GetFixIntersectingWiresMode(self) -> int: ...
    def SetFixIntersectingWiresMode(self, value: int) -> None: ...
    def FixLoopWire(self, aResWires: TopTools_SequenceOfShape) -> bool: ...
    def GetFixLoopWiresMode(self) -> int: ...
    def SetFixLoopWiresMode(self, value: int) -> None: ...
    def FixMissingSeam(self) -> bool: ...
    def GetFixMissingSeamMode(self) -> int: ...
    def SetFixMissingSeamMode(self, value: int) -> None: ...
    @overload
    def FixOrientation(self) -> bool: ...
    @overload
    def FixOrientation(self, MapWires: TopTools_DataMapOfShapeListOfShape) -> bool: ...
    def GetFixOrientationMode(self) -> int: ...
    def SetFixOrientationMode(self, value: int) -> None: ...
    def FixPeriodicDegenerated(self) -> bool: ...
    def GetFixPeriodicDegeneratedMode(self) -> int: ...
    def SetFixPeriodicDegeneratedMode(self, value: int) -> None: ...
    def FixSmallAreaWire(self, theIsRemoveSmallFace: bool) -> bool: ...
    def GetFixSmallAreaWireMode(self) -> int: ...
    def SetFixSmallAreaWireMode(self, value: int) -> None: ...
    def FixSplitFace(self, MapWires: TopTools_DataMapOfShapeListOfShape) -> bool: ...
    def GetFixSplitFaceMode(self) -> int: ...
    def SetFixSplitFaceMode(self, value: int) -> None: ...
    def GetFixWireMode(self) -> int: ...
    def SetFixWireMode(self, value: int) -> None: ...
    def FixWireTool(self) -> ShapeFix_Wire: ...
    def FixWiresTwoCoincEdges(self) -> bool: ...
    @overload
    def Init(self, face: TopoDS_Face) -> None: ...
    @overload
    def Init(self, surf: Geom_Surface, preci: float, fwd: Optional[bool] = True) -> None: ...
    @overload
    def Init(self, surf: ShapeAnalysis_Surface, preci: float, fwd: Optional[bool] = True) -> None: ...
    def Perform(self) -> bool: ...
    def GetRemoveSmallAreaFaceMode(self) -> int: ...
    def SetRemoveSmallAreaFaceMode(self, value: int) -> None: ...
    def Result(self) -> TopoDS_Shape: ...
    def SetMaxTolerance(self, maxtol: float) -> None: ...
    def SetMinTolerance(self, mintol: float) -> None: ...
    def SetMsgRegistrator(self, msgreg: ShapeExtend_BasicMsgRegistrator) -> None: ...
    def SetPrecision(self, preci: float) -> None: ...
    def Status(self, status: ShapeExtend_Status) -> bool: ...

class ShapeFix_FixSmallFace(ShapeFix_Root):
    def __init__(self) -> None: ...
    def ComputeSharedEdgeForStripFace(self, F: TopoDS_Face, E1: TopoDS_Edge, E2: TopoDS_Edge, F1: TopoDS_Face, tol: float) -> TopoDS_Edge: ...
    def FixFace(self, F: TopoDS_Face) -> TopoDS_Face: ...
    def FixPinFace(self, F: TopoDS_Face) -> bool: ...
    def FixShape(self) -> TopoDS_Shape: ...
    def FixSplitFace(self, S: TopoDS_Shape) -> TopoDS_Shape: ...
    def FixSpotFace(self) -> TopoDS_Shape: ...
    def FixStripFace(self, wasdone: Optional[bool] = False) -> TopoDS_Shape: ...
    def Init(self, S: TopoDS_Shape) -> None: ...
    def Perform(self) -> None: ...
    def RemoveFacesInCaseOfSpot(self, F: TopoDS_Face) -> bool: ...
    def RemoveFacesInCaseOfStrip(self, F: TopoDS_Face) -> bool: ...
    def ReplaceInCaseOfStrip(self, F: TopoDS_Face, E1: TopoDS_Edge, E2: TopoDS_Edge, tol: float) -> bool: ...
    def ReplaceVerticesInCaseOfSpot(self, F: TopoDS_Face, tol: float) -> bool: ...
    def Shape(self) -> TopoDS_Shape: ...
    def SplitOneFace(self, F: TopoDS_Face, theSplittedFaces: TopoDS_Compound) -> bool: ...

class ShapeFix_FixSmallSolid(ShapeFix_Root):
    def __init__(self) -> None: ...
    def Merge(self, theShape: TopoDS_Shape, theContext: ShapeBuild_ReShape) -> TopoDS_Shape: ...
    def Remove(self, theShape: TopoDS_Shape, theContext: ShapeBuild_ReShape) -> TopoDS_Shape: ...
    def SetFixMode(self, theMode: int) -> None: ...
    def SetVolumeThreshold(self, theThreshold: Optional[float] = -1.0) -> None: ...
    def SetWidthFactorThreshold(self, theThreshold: Optional[float] = -1.0) -> None: ...

class ShapeFix_Shape(ShapeFix_Root):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, shape: TopoDS_Shape) -> None: ...
    def FixEdgeTool(self) -> ShapeFix_Edge: ...
    def FixFaceTool(self) -> ShapeFix_Face: ...
    def GetFixFreeFaceMode(self) -> int: ...
    def SetFixFreeFaceMode(self, value: int) -> None: ...
    def GetFixFreeShellMode(self) -> int: ...
    def SetFixFreeShellMode(self, value: int) -> None: ...
    def GetFixFreeWireMode(self) -> int: ...
    def SetFixFreeWireMode(self, value: int) -> None: ...
    def GetFixSameParameterMode(self) -> int: ...
    def SetFixSameParameterMode(self, value: int) -> None: ...
    def FixShellTool(self) -> ShapeFix_Shell: ...
    def GetFixSolidMode(self) -> int: ...
    def SetFixSolidMode(self, value: int) -> None: ...
    def FixSolidTool(self) -> ShapeFix_Solid: ...
    def GetFixVertexPositionMode(self) -> int: ...
    def SetFixVertexPositionMode(self, value: int) -> None: ...
    def GetFixVertexTolMode(self) -> int: ...
    def SetFixVertexTolMode(self, value: int) -> None: ...
    def FixWireTool(self) -> ShapeFix_Wire: ...
    def Init(self, shape: TopoDS_Shape) -> None: ...
    def Perform(self, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> bool: ...
    def SetMaxTolerance(self, maxtol: float) -> None: ...
    def SetMinTolerance(self, mintol: float) -> None: ...
    def SetMsgRegistrator(self, msgreg: ShapeExtend_BasicMsgRegistrator) -> None: ...
    def SetPrecision(self, preci: float) -> None: ...
    def Shape(self) -> TopoDS_Shape: ...
    def Status(self, status: ShapeExtend_Status) -> bool: ...

class ShapeFix_Shell(ShapeFix_Root):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, shape: TopoDS_Shell) -> None: ...
    def ErrorFaces(self) -> TopoDS_Compound: ...
    def GetFixFaceMode(self) -> int: ...
    def SetFixFaceMode(self, value: int) -> None: ...
    def FixFaceOrientation(self, shell: TopoDS_Shell, isAccountMultiConex: Optional[bool] = True, NonManifold: Optional[bool] = False) -> bool: ...
    def FixFaceTool(self) -> ShapeFix_Face: ...
    def GetFixOrientationMode(self) -> int: ...
    def SetFixOrientationMode(self, value: int) -> None: ...
    def Init(self, shell: TopoDS_Shell) -> None: ...
    def NbShells(self) -> int: ...
    def Perform(self, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> bool: ...
    def SetMaxTolerance(self, maxtol: float) -> None: ...
    def SetMinTolerance(self, mintol: float) -> None: ...
    def SetMsgRegistrator(self, msgreg: ShapeExtend_BasicMsgRegistrator) -> None: ...
    def SetNonManifoldFlag(self, isNonManifold: bool) -> None: ...
    def SetPrecision(self, preci: float) -> None: ...
    def Shape(self) -> TopoDS_Shape: ...
    def Shell(self) -> TopoDS_Shell: ...
    def Status(self, status: ShapeExtend_Status) -> bool: ...

class ShapeFix_Solid(ShapeFix_Root):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, solid: TopoDS_Solid) -> None: ...
    def GetCreateOpenSolidMode(self) -> bool: ...
    def SetCreateOpenSolidMode(self, value: bool) -> None: ...
    def GetFixShellMode(self) -> int: ...
    def SetFixShellMode(self, value: int) -> None: ...
    def GetFixShellOrientationMode(self) -> int: ...
    def SetFixShellOrientationMode(self, value: int) -> None: ...
    def FixShellTool(self) -> ShapeFix_Shell: ...
    def Init(self, solid: TopoDS_Solid) -> None: ...
    def Perform(self, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> bool: ...
    def SetMaxTolerance(self, maxtol: float) -> None: ...
    def SetMinTolerance(self, mintol: float) -> None: ...
    def SetMsgRegistrator(self, msgreg: ShapeExtend_BasicMsgRegistrator) -> None: ...
    def SetPrecision(self, preci: float) -> None: ...
    def Shape(self) -> TopoDS_Shape: ...
    def Solid(self) -> TopoDS_Shape: ...
    def SolidFromShell(self, shell: TopoDS_Shell) -> TopoDS_Solid: ...
    def Status(self, status: ShapeExtend_Status) -> bool: ...

class ShapeFix_SplitCommonVertex(ShapeFix_Root):
    def __init__(self) -> None: ...
    def Init(self, S: TopoDS_Shape) -> None: ...
    def Perform(self) -> None: ...
    def Shape(self) -> TopoDS_Shape: ...

class ShapeFix_Wire(ShapeFix_Root):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, wire: TopoDS_Wire, face: TopoDS_Face, prec: float) -> None: ...
    def Analyzer(self) -> ShapeAnalysis_Wire: ...
    def ClearModes(self) -> None: ...
    def ClearStatuses(self) -> None: ...
    def GetClosedWireMode(self) -> bool: ...
    def SetClosedWireMode(self, value: bool) -> None: ...
    def Face(self) -> TopoDS_Face: ...
    def GetFixAddCurve3dMode(self) -> int: ...
    def SetFixAddCurve3dMode(self, value: int) -> None: ...
    def GetFixAddPCurveMode(self) -> int: ...
    def SetFixAddPCurveMode(self, value: int) -> None: ...
    def FixClosed(self, prec: Optional[float] = -1.0) -> bool: ...
    @overload
    def FixConnected(self, prec: Optional[float] = -1.0) -> bool: ...
    @overload
    def FixConnected(self, num: int, prec: float) -> bool: ...
    def GetFixConnectedMode(self) -> int: ...
    def SetFixConnectedMode(self, value: int) -> None: ...
    @overload
    def FixDegenerated(self) -> bool: ...
    @overload
    def FixDegenerated(self, num: int) -> bool: ...
    def GetFixDegeneratedMode(self) -> int: ...
    def SetFixDegeneratedMode(self, value: int) -> None: ...
    def FixEdgeCurves(self) -> bool: ...
    def GetFixEdgeCurvesMode(self) -> int: ...
    def SetFixEdgeCurvesMode(self, value: int) -> None: ...
    def FixEdgeTool(self) -> ShapeFix_Edge: ...
    def FixGap2d(self, num: int, convert: Optional[bool] = False) -> bool: ...
    def FixGap3d(self, num: int, convert: Optional[bool] = False) -> bool: ...
    def FixGaps2d(self) -> bool: ...
    def GetFixGaps2dMode(self) -> int: ...
    def SetFixGaps2dMode(self, value: int) -> None: ...
    def FixGaps3d(self) -> bool: ...
    def GetFixGaps3dMode(self) -> int: ...
    def SetFixGaps3dMode(self, value: int) -> None: ...
    def GetFixGapsByRangesMode(self) -> bool: ...
    def SetFixGapsByRangesMode(self, value: bool) -> None: ...
    def GetFixIntersectingEdgesMode(self) -> int: ...
    def SetFixIntersectingEdgesMode(self, value: int) -> None: ...
    @overload
    def FixLacking(self, force: Optional[bool] = False) -> bool: ...
    @overload
    def FixLacking(self, num: int, force: Optional[bool] = False) -> bool: ...
    def GetFixLackingMode(self) -> int: ...
    def SetFixLackingMode(self, value: int) -> None: ...
    def GetFixNonAdjacentIntersectingEdgesMode(self) -> int: ...
    def SetFixNonAdjacentIntersectingEdgesMode(self, value: int) -> None: ...
    def FixNotchedEdges(self) -> bool: ...
    def GetFixNotchedEdgesMode(self) -> int: ...
    def SetFixNotchedEdgesMode(self, value: int) -> None: ...
    def GetFixRemoveCurve3dMode(self) -> int: ...
    def SetFixRemoveCurve3dMode(self, value: int) -> None: ...
    def GetFixRemovePCurveMode(self) -> int: ...
    def SetFixRemovePCurveMode(self, value: int) -> None: ...
    @overload
    def FixReorder(self) -> bool: ...
    @overload
    def FixReorder(self, wi: ShapeAnalysis_WireOrder) -> bool: ...
    def GetFixReorderMode(self) -> int: ...
    def SetFixReorderMode(self, value: int) -> None: ...
    def GetFixReversed2dMode(self) -> int: ...
    def SetFixReversed2dMode(self, value: int) -> None: ...
    def GetFixSameParameterMode(self) -> int: ...
    def SetFixSameParameterMode(self, value: int) -> None: ...
    def FixSeam(self, num: int) -> bool: ...
    def GetFixSeamMode(self) -> int: ...
    def SetFixSeamMode(self, value: int) -> None: ...
    def GetFixSelfIntersectingEdgeMode(self) -> int: ...
    def SetFixSelfIntersectingEdgeMode(self, value: int) -> None: ...
    def FixSelfIntersection(self) -> bool: ...
    def GetFixSelfIntersectionMode(self) -> int: ...
    def SetFixSelfIntersectionMode(self, value: int) -> None: ...
    def FixShifted(self) -> bool: ...
    def GetFixShiftedMode(self) -> int: ...
    def SetFixShiftedMode(self, value: int) -> None: ...
    @overload
    def FixSmall(self, lockvtx: bool, precsmall: Optional[float] = 0.0) -> int: ...
    @overload
    def FixSmall(self, num: int, lockvtx: bool, precsmall: float) -> bool: ...
    def GetFixSmallMode(self) -> int: ...
    def SetFixSmallMode(self, value: int) -> None: ...
    def GetFixTailMode(self) -> int: ...
    def SetFixTailMode(self, value: int) -> None: ...
    def FixTails(self) -> bool: ...
    def GetFixVertexToleranceMode(self) -> int: ...
    def SetFixVertexToleranceMode(self, value: int) -> None: ...
    @overload
    def Init(self, wire: TopoDS_Wire, face: TopoDS_Face, prec: float) -> None: ...
    @overload
    def Init(self, saw: ShapeAnalysis_Wire) -> None: ...
    def IsLoaded(self) -> bool: ...
    def IsReady(self) -> bool: ...
    def LastFixStatus(self, status: ShapeExtend_Status) -> bool: ...
    @overload
    def Load(self, wire: TopoDS_Wire) -> None: ...
    @overload
    def Load(self, sbwd: ShapeExtend_WireData) -> None: ...
    def GetModifyGeometryMode(self) -> bool: ...
    def SetModifyGeometryMode(self, value: bool) -> None: ...
    def GetModifyRemoveLoopMode(self) -> int: ...
    def SetModifyRemoveLoopMode(self, value: int) -> None: ...
    def GetModifyTopologyMode(self) -> bool: ...
    def SetModifyTopologyMode(self, value: bool) -> None: ...
    def NbEdges(self) -> int: ...
    def Perform(self) -> bool: ...
    def GetPreferencePCurveMode(self) -> bool: ...
    def SetPreferencePCurveMode(self, value: bool) -> None: ...
    def SetFace(self, face: TopoDS_Face) -> None: ...
    def SetMaxTailAngle(self, theMaxTailAngle: float) -> None: ...
    def SetMaxTailWidth(self, theMaxTailWidth: float) -> None: ...
    def SetPrecision(self, prec: float) -> None: ...
    @overload
    def SetSurface(self, surf: Geom_Surface) -> None: ...
    @overload
    def SetSurface(self, surf: Geom_Surface, loc: TopLoc_Location) -> None: ...
    def StatusClosed(self, status: ShapeExtend_Status) -> bool: ...
    def StatusConnected(self, status: ShapeExtend_Status) -> bool: ...
    def StatusDegenerated(self, status: ShapeExtend_Status) -> bool: ...
    def StatusEdgeCurves(self, status: ShapeExtend_Status) -> bool: ...
    def StatusFixTails(self, status: ShapeExtend_Status) -> bool: ...
    def StatusGaps2d(self, status: ShapeExtend_Status) -> bool: ...
    def StatusGaps3d(self, status: ShapeExtend_Status) -> bool: ...
    def StatusLacking(self, status: ShapeExtend_Status) -> bool: ...
    def StatusNotches(self, status: ShapeExtend_Status) -> bool: ...
    def StatusRemovedSegment(self) -> bool: ...
    def StatusReorder(self, status: ShapeExtend_Status) -> bool: ...
    def StatusSelfIntersection(self, status: ShapeExtend_Status) -> bool: ...
    def StatusSmall(self, status: ShapeExtend_Status) -> bool: ...
    def Wire(self) -> TopoDS_Wire: ...
    def WireAPIMake(self) -> TopoDS_Wire: ...
    def WireData(self) -> ShapeExtend_WireData: ...

class ShapeFix_Wireframe(ShapeFix_Root):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, shape: TopoDS_Shape) -> None: ...
    def CheckSmallEdges(self, theSmallEdges: TopTools_MapOfShape, theEdgeToFaces: TopTools_DataMapOfShapeListOfShape, theFaceWithSmall: TopTools_DataMapOfShapeListOfShape, theMultyEdges: TopTools_MapOfShape) -> bool: ...
    def ClearStatuses(self) -> None: ...
    def FixSmallEdges(self) -> bool: ...
    def FixWireGaps(self) -> bool: ...
    def LimitAngle(self) -> float: ...
    def Load(self, shape: TopoDS_Shape) -> None: ...
    def MergeSmallEdges(self, theSmallEdges: TopTools_MapOfShape, theEdgeToFaces: TopTools_DataMapOfShapeListOfShape, theFaceWithSmall: TopTools_DataMapOfShapeListOfShape, theMultyEdges: TopTools_MapOfShape, theModeDrop: Optional[bool] = False, theLimitAngle: Optional[float] = -1) -> bool: ...
    def GetModeDropSmallEdges(self) -> bool: ...
    def SetModeDropSmallEdges(self, value: bool) -> None: ...
    def SetLimitAngle(self, theLimitAngle: float) -> None: ...
    def Shape(self) -> TopoDS_Shape: ...
    def StatusSmallEdges(self, status: ShapeExtend_Status) -> bool: ...
    def StatusWireGaps(self, status: ShapeExtend_Status) -> bool: ...

#classnotwrapped
class ShapeFix_WireSegment: ...

# harray1 classes
# harray2 classes
# hsequence classes

shapefix_EncodeRegularity = shapefix.EncodeRegularity
shapefix_FixVertexPosition = shapefix.FixVertexPosition
shapefix_LeastEdgeSize = shapefix.LeastEdgeSize
shapefix_RemoveSmallEdges = shapefix.RemoveSmallEdges
shapefix_SameParameter = shapefix.SameParameter
