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

from OCC.Core.Standard import *
from OCC.Core.NCollection import *
from OCC.Core.MAT import *
from OCC.Core.GeomAbs import *
from OCC.Core.Bisector import *
from OCC.Core.Geom2d import *
from OCC.Core.gp import *
from OCC.Core.TopoDS import *
from OCC.Core.TColGeom2d import *
from OCC.Core.TColStd import *


class BRepMAT2d_BisectingLocus:
	def __init__(self) -> None: ...
	def BasicElt(self, IndLine: int, Index: int) -> MAT_BasicElt: ...
	def Compute(self, anExplo: BRepMAT2d_Explorer, LineIndex: Optional[int] = 1, aSide: Optional[MAT_Side] = MAT_Left, aJoinType: Optional[GeomAbs_JoinType] = GeomAbs_Arc, IsOpenResult: Optional[bool] = False) -> None: ...
	def GeomBis(self, anArc: MAT_Arc) -> Tuple[Bisector_Bisec, bool]: ...
	@overload
	def GeomElt(self, aBasicElt: MAT_BasicElt) -> Geom2d_Geometry: ...
	@overload
	def GeomElt(self, aNode: MAT_Node) -> gp_Pnt2d: ...
	def Graph(self) -> MAT_Graph: ...
	def IsDone(self) -> bool: ...
	def NumberOfContours(self) -> int: ...
	def NumberOfElts(self, IndLine: int) -> int: ...
	def NumberOfSections(self, IndLine: int, Index: int) -> int: ...

class BRepMAT2d_Explorer:
	@overload
	def __init__(self) -> None: ...
	@overload
	def __init__(self, aFace: TopoDS_Face) -> None: ...
	def Clear(self) -> None: ...
	def Contour(self, IndexContour: int) -> TColGeom2d_SequenceOfCurve: ...
	def GetIsClosed(self) -> TColStd_SequenceOfBoolean: ...
	def Init(self, IndexContour: int) -> None: ...
	def IsModified(self, aShape: TopoDS_Shape) -> bool: ...
	def ModifiedShape(self, aShape: TopoDS_Shape) -> TopoDS_Shape: ...
	def More(self) -> bool: ...
	def Next(self) -> None: ...
	def NumberOfContours(self) -> int: ...
	def NumberOfCurves(self, IndexContour: int) -> int: ...
	def Perform(self, aFace: TopoDS_Face) -> None: ...
	def Shape(self) -> TopoDS_Shape: ...
	def Value(self) -> Geom2d_Curve: ...

class BRepMAT2d_LinkTopoBilo:
	@overload
	def __init__(self) -> None: ...
	@overload
	def __init__(self, Explo: BRepMAT2d_Explorer, BiLo: BRepMAT2d_BisectingLocus) -> None: ...
	def GeneratingShape(self, aBE: MAT_BasicElt) -> TopoDS_Shape: ...
	def Init(self, S: TopoDS_Shape) -> None: ...
	def More(self) -> bool: ...
	def Next(self) -> None: ...
	def Perform(self, Explo: BRepMAT2d_Explorer, BiLo: BRepMAT2d_BisectingLocus) -> None: ...
	def Value(self) -> MAT_BasicElt: ...

# harray1 classes
# harray2 classes
# hsequence classes

