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

from OCC.Core.Standard import *
from OCC.Core.NCollection import *
from OCC.Core.IFSelect import *
from OCC.Core.TopoDS import *
from OCC.Core.Transfer import *
from OCC.Core.TopAbs import *
from OCC.Core.TColStd import *
from OCC.Core.Interface import *
from OCC.Core.TCollection import *
from OCC.Core.Message import *
from OCC.Core.TopTools import *
from OCC.Core.DE import *
from OCC.Core.Geom import *
from OCC.Core.Geom2d import *
from OCC.Core.gp import *


class xscontrol:
    @staticmethod
    def Session(pilot: IFSelect_SessionPilot) -> XSControl_WorkSession: ...
    @staticmethod
    def Vars(pilot: IFSelect_SessionPilot) -> XSControl_Vars: ...

class XSControl_ConnectedShapes(IFSelect_SelectExplore):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, TR: XSControl_TransferReader) -> None: ...
    @staticmethod
    def AdjacentEntities(ashape: TopoDS_Shape, TP: Transfer_TransientProcess, type: TopAbs_ShapeEnum) -> TColStd_HSequenceOfTransient: ...
    def Explore(self, level: int, ent: Standard_Transient, G: Interface_Graph, explored: Interface_EntityIterator) -> bool: ...
    def ExploreLabel(self) -> str: ...
    def SetReader(self, TR: XSControl_TransferReader) -> None: ...

class XSControl_Controller(Standard_Transient):
    def ActorRead(self, model: Interface_InterfaceModel) -> Transfer_ActorOfTransientProcess: ...
    def ActorWrite(self) -> Transfer_ActorOfFinderProcess: ...
    def AdaptorSession(self) -> False: ...
    def AddSessionItem(self, theItem: Standard_Transient, theName: str, toApply: Optional[bool] = False) -> None: ...
    def AutoRecord(self) -> None: ...
    def Customise(self, WS: XSControl_WorkSession) -> None: ...
    def IsModeWrite(self, modetrans: int, shape: Optional[bool] = True) -> bool: ...
    def ModeWriteBounds(self, shape: Optional[bool] = True) -> Tuple[bool, int, int]: ...
    def ModeWriteHelp(self, modetrans: int, shape: Optional[bool] = True) -> str: ...
    def Name(self, rsc: Optional[bool] = False) -> str: ...
    def NewModel(self) -> Interface_InterfaceModel: ...
    def Protocol(self) -> Interface_Protocol: ...
    def RecognizeWriteShape(self, shape: TopoDS_Shape, modetrans: Optional[int] = 0) -> bool: ...
    def RecognizeWriteTransient(self, obj: Standard_Transient, modetrans: Optional[int] = 0) -> bool: ...
    def Record(self, name: str) -> None: ...
    @staticmethod
    def Recorded(name: str) -> XSControl_Controller: ...
    def SessionItem(self, theName: str) -> Standard_Transient: ...
    def SetModeWrite(self, modemin: int, modemax: int, shape: Optional[bool] = True) -> None: ...
    def SetModeWriteHelp(self, modetrans: int, help: str, shape: Optional[bool] = True) -> None: ...
    def SetNames(self, theLongName: str, theShortName: str) -> None: ...
    def TransferWriteShape(self, shape: TopoDS_Shape, FP: Transfer_FinderProcess, model: Interface_InterfaceModel, modetrans: Optional[int] = 0, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> IFSelect_ReturnStatus: ...
    def TransferWriteTransient(self, obj: Standard_Transient, FP: Transfer_FinderProcess, model: Interface_InterfaceModel, modetrans: Optional[int] = 0, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> IFSelect_ReturnStatus: ...
    def WorkLibrary(self) -> IFSelect_WorkLibrary: ...

class XSControl_FuncShape:
    @staticmethod
    def FileAndVar(session: XSControl_WorkSession, file: str, var: str, def_: str, resfile: str, resvar: str) -> bool: ...
    @staticmethod
    def Init() -> None: ...
    @staticmethod
    def MoreShapes(session: XSControl_WorkSession, list: TopTools_HSequenceOfShape, name: str) -> int: ...

class XSControl_Functions:
    @staticmethod
    def Init() -> None: ...

class XSControl_Reader:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, norm: str) -> None: ...
    @overload
    def __init__(self, WS: XSControl_WorkSession, scratch: Optional[bool] = True) -> None: ...
    def ClearShapes(self) -> None: ...
    def GetShapeFixParameters(self) -> False: ...
    def GetShapeProcessFlags(self) -> False: ...
    def GetStatsTransfer(self, list: TColStd_HSequenceOfTransient) -> Tuple[int, int, int]: ...
    @overload
    def GiveList(self, first: Optional[str] = "", second: Optional[str] = "") -> TColStd_HSequenceOfTransient: ...
    @overload
    def GiveList(self, first: str, ent: Standard_Transient) -> TColStd_HSequenceOfTransient: ...
    def Model(self) -> Interface_InterfaceModel: ...
    def NbRootsForTransfer(self) -> int: ...
    def NbShapes(self) -> int: ...
    def OneShape(self) -> TopoDS_Shape: ...
    @overload
    def PrintCheckLoad(self, failsonly: bool, mode: IFSelect_PrintCount) -> None: ...
    @overload
    def PrintCheckLoad(self, failsonly: bool, mode: IFSelect_PrintCount) -> str: ...
    @overload
    def PrintCheckTransfer(self, failsonly: bool, mode: IFSelect_PrintCount) -> None: ...
    @overload
    def PrintCheckTransfer(self, failsonly: bool, mode: IFSelect_PrintCount) -> str: ...
    @overload
    def PrintStatsTransfer(self, what: int, mode: Optional[int] = 0) -> None: ...
    @overload
    def PrintStatsTransfer(self, what: int, mode: Optional[int] = 0) -> str: ...
    def ReadFile(self, filename: str) -> IFSelect_ReturnStatus: ...
    def ReadStream(self, theName: str, theIStream: str) -> IFSelect_ReturnStatus: ...
    def RootForTransfer(self, num: Optional[int] = 1) -> Standard_Transient: ...
    def SetNorm(self, norm: str) -> bool: ...
    def SetWS(self, WS: XSControl_WorkSession, scratch: Optional[bool] = True) -> None: ...
    def Shape(self, num: Optional[int] = 1) -> TopoDS_Shape: ...
    def TransferEntity(self, start: Standard_Transient, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> bool: ...
    def TransferList(self, list: TColStd_HSequenceOfTransient, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> int: ...
    def TransferOne(self, num: int, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> bool: ...
    def TransferOneRoot(self, num: Optional[int] = 1, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> bool: ...
    def TransferRoots(self, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> int: ...
    def WS(self) -> XSControl_WorkSession: ...

class XSControl_SelectForTransfer(IFSelect_SelectExtract):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, TR: XSControl_TransferReader) -> None: ...
    def Actor(self) -> Transfer_ActorOfTransientProcess: ...
    def ExtractLabel(self) -> str: ...
    def Reader(self) -> XSControl_TransferReader: ...
    def SetActor(self, act: Transfer_ActorOfTransientProcess) -> None: ...
    def SetReader(self, TR: XSControl_TransferReader) -> None: ...
    def Sort(self, rank: int, ent: Standard_Transient, model: Interface_InterfaceModel) -> bool: ...

class XSControl_SignTransferStatus(IFSelect_Signature):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, TR: XSControl_TransferReader) -> None: ...
    def Map(self) -> Transfer_TransientProcess: ...
    def Reader(self) -> XSControl_TransferReader: ...
    def SetMap(self, TP: Transfer_TransientProcess) -> None: ...
    def SetReader(self, TR: XSControl_TransferReader) -> None: ...
    def Value(self, ent: Standard_Transient, model: Interface_InterfaceModel) -> str: ...

class XSControl_TransferReader(Standard_Transient):
    def __init__(self) -> None: ...
    def Actor(self) -> Transfer_ActorOfTransientProcess: ...
    def BeginTransfer(self) -> bool: ...
    def CheckList(self, theEnt: Standard_Transient, theLevel: Optional[int] = 0) -> Interface_CheckIterator: ...
    def CheckedList(self, theEnt: Standard_Transient, WithCheck: Optional[Interface_CheckStatus] = Interface_CheckAny, theResult: Optional[bool] = True) -> TColStd_HSequenceOfTransient: ...
    def Clear(self, theMode: int) -> None: ...
    def ClearResult(self, theEnt: Standard_Transient, theMode: int) -> bool: ...
    def Context(self) -> False: ...
    def EntitiesFromShapeList(self, theRes: TopTools_HSequenceOfShape, theMode: Optional[int] = 0) -> TColStd_HSequenceOfTransient: ...
    def EntityFromResult(self, theRes: Standard_Transient, theMode: Optional[int] = 0) -> Standard_Transient: ...
    def EntityFromShapeResult(self, theRes: TopoDS_Shape, theMode: Optional[int] = 0) -> Standard_Transient: ...
    def FileName(self) -> str: ...
    def FinalEntityLabel(self, theEnt: Standard_Transient) -> str: ...
    def FinalEntityNumber(self, theEnt: Standard_Transient) -> int: ...
    def FinalResult(self, theEnt: Standard_Transient) -> Transfer_ResultFromModel: ...
    def GetContext(self, theName: str, theType: Standard_Type, theCtx: Standard_Transient) -> bool: ...
    def HasChecks(self, theEnt: Standard_Transient, FailsOnly: bool) -> bool: ...
    def HasResult(self, theEnt: Standard_Transient) -> bool: ...
    def IsMarked(self, theEnt: Standard_Transient) -> bool: ...
    def IsRecorded(self, theEnt: Standard_Transient) -> bool: ...
    def IsSkipped(self, theEnt: Standard_Transient) -> bool: ...
    def LastCheckList(self) -> Interface_CheckIterator: ...
    def LastTransferList(self, theRoots: bool) -> TColStd_HSequenceOfTransient: ...
    def Model(self) -> Interface_InterfaceModel: ...
    def PrintStats(self, theWhat: int, theMode: Optional[int] = 0) -> str: ...
    @staticmethod
    def PrintStatsOnList(theTP: Transfer_TransientProcess, theList: TColStd_HSequenceOfTransient, theWhat: int, theMode: Optional[int] = 0) -> None: ...
    @staticmethod
    def PrintStatsProcess(theTP: Transfer_TransientProcess, theWhat: int, theMode: Optional[int] = 0) -> None: ...
    def Recognize(self, theEnt: Standard_Transient) -> bool: ...
    def RecordResult(self, theEnt: Standard_Transient) -> bool: ...
    def RecordedList(self) -> TColStd_HSequenceOfTransient: ...
    def ResultFromNumber(self, theNum: int) -> Transfer_ResultFromModel: ...
    def SetActor(self, theActor: Transfer_ActorOfTransientProcess) -> None: ...
    def SetContext(self, theName: str, theCtx: Standard_Transient) -> None: ...
    def SetController(self, theControl: XSControl_Controller) -> None: ...
    def SetFileName(self, theName: str) -> None: ...
    def SetGraph(self, theGraph: Interface_HGraph) -> None: ...
    def SetModel(self, theModel: Interface_InterfaceModel) -> None: ...
    def SetTransientProcess(self, theTP: Transfer_TransientProcess) -> None: ...
    def ShapeResult(self, theEnt: Standard_Transient) -> TopoDS_Shape: ...
    def ShapeResultList(self, theRec: bool) -> TopTools_HSequenceOfShape: ...
    def Skip(self, theEnt: Standard_Transient) -> bool: ...
    def TransferClear(self, theEnt: Standard_Transient, theLevel: Optional[int] = 0) -> None: ...
    def TransferList(self, theList: TColStd_HSequenceOfTransient, theRec: Optional[bool] = True, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> int: ...
    def TransferOne(self, theEnt: Standard_Transient, theRec: Optional[bool] = True, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> int: ...
    def TransferRoots(self, theGraph: Interface_Graph, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> int: ...
    def TransientProcess(self) -> Transfer_TransientProcess: ...
    def TransientResult(self, theEnt: Standard_Transient) -> Standard_Transient: ...

class XSControl_TransferWriter(Standard_Transient):
    def __init__(self) -> None: ...
    def CheckList(self) -> Interface_CheckIterator: ...
    def Clear(self, theMode: int) -> None: ...
    def Controller(self) -> XSControl_Controller: ...
    def FinderProcess(self) -> Transfer_FinderProcess: ...
    def PrintStats(self, theWhat: int, theMode: Optional[int] = 0) -> None: ...
    def RecognizeShape(self, theShape: TopoDS_Shape) -> bool: ...
    def RecognizeTransient(self, theObj: Standard_Transient) -> bool: ...
    def ResultCheckList(self, theModel: Interface_InterfaceModel) -> Interface_CheckIterator: ...
    def SetController(self, theCtl: XSControl_Controller) -> None: ...
    def SetFinderProcess(self, theFP: Transfer_FinderProcess) -> None: ...
    def SetTransferMode(self, theMode: int) -> None: ...
    def TransferMode(self) -> int: ...
    def TransferWriteShape(self, theModel: Interface_InterfaceModel, theShape: TopoDS_Shape, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> IFSelect_ReturnStatus: ...
    def TransferWriteTransient(self, theModel: Interface_InterfaceModel, theObj: Standard_Transient, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> IFSelect_ReturnStatus: ...

class XSControl_Utils:
    def __init__(self) -> None: ...
    def AppendCStr(self, seqval: TColStd_HSequenceOfHAsciiString, strval: str) -> None: ...
    def AppendEStr(self, seqval: TColStd_HSequenceOfHExtendedString, strval: Standard_ExtString) -> None: ...
    def AppendShape(self, seqv: TopTools_HSequenceOfShape, shape: TopoDS_Shape) -> None: ...
    def AppendTra(self, seqval: TColStd_HSequenceOfTransient, traval: Standard_Transient) -> None: ...
    def ArrToSeq(self, arr: Standard_Transient) -> Standard_Transient: ...
    def AsciiToExtended(self, str: str) -> Standard_ExtString: ...
    def BinderShape(self, tr: Standard_Transient) -> TopoDS_Shape: ...
    def CStrValue(self, list: Standard_Transient, num: int) -> str: ...
    def CompoundFromSeq(self, seqval: TopTools_HSequenceOfShape) -> TopoDS_Shape: ...
    def DateString(self, yy: int, mm: int, dd: int, hh: int, mn: int, ss: int) -> str: ...
    def DateValues(self, text: str) -> Tuple[int, int, int, int, int, int]: ...
    def EStrValue(self, list: Standard_Transient, num: int) -> Standard_ExtString: ...
    def ExtendedToAscii(self, str: Standard_ExtString) -> str: ...
    def IsAscii(self, str: Standard_ExtString) -> bool: ...
    def IsKind(self, item: Standard_Transient, what: Standard_Type) -> bool: ...
    def NewSeqCStr(self) -> TColStd_HSequenceOfHAsciiString: ...
    def NewSeqEStr(self) -> TColStd_HSequenceOfHExtendedString: ...
    def NewSeqShape(self) -> TopTools_HSequenceOfShape: ...
    def NewSeqTra(self) -> TColStd_HSequenceOfTransient: ...
    def SeqIntValue(self, list: TColStd_HSequenceOfInteger, num: int) -> int: ...
    def SeqLength(self, list: Standard_Transient) -> int: ...
    def SeqToArr(self, seq: Standard_Transient, first: Optional[int] = 1) -> Standard_Transient: ...
    def ShapeBinder(self, shape: TopoDS_Shape, hs: Optional[bool] = True) -> Standard_Transient: ...
    def ShapeType(self, shape: TopoDS_Shape, compound: bool) -> TopAbs_ShapeEnum: ...
    def ShapeValue(self, seqv: TopTools_HSequenceOfShape, num: int) -> TopoDS_Shape: ...
    def SortedCompound(self, shape: TopoDS_Shape, type: TopAbs_ShapeEnum, explore: bool, compound: bool) -> TopoDS_Shape: ...
    def ToAString(self, strcon: str) -> str: ...
    @overload
    def ToCString(self, strval: TCollection_HAsciiString) -> str: ...
    @overload
    def ToCString(self, strval: str) -> str: ...
    @overload
    def ToEString(self, strval: TCollection_HExtendedString) -> Standard_ExtString: ...
    @overload
    def ToEString(self, strval: str) -> Standard_ExtString: ...
    @overload
    def ToHString(self, strcon: str) -> TCollection_HAsciiString: ...
    @overload
    def ToHString(self, strcon: Standard_ExtString) -> TCollection_HExtendedString: ...
    def ToXString(self, strcon: Standard_ExtString) -> str: ...
    def TraValue(self, list: Standard_Transient, num: int) -> Standard_Transient: ...
    def TraceLine(self, line: str) -> None: ...
    def TraceLines(self, lines: Standard_Transient) -> None: ...
    def TypeName(self, item: Standard_Transient, nopk: Optional[bool] = False) -> str: ...

class XSControl_Vars(Standard_Transient):
    def __init__(self) -> None: ...
    def Get(self, name: str) -> Standard_Transient: ...
    def GetCurve(self, name: str) -> Geom_Curve: ...
    def GetCurve2d(self, name: str) -> Geom2d_Curve: ...
    def GetGeom(self, name: str) -> Geom_Geometry: ...
    def GetPoint(self, name: str, pnt: gp_Pnt) -> bool: ...
    def GetPoint2d(self, name: str, pnt: gp_Pnt2d) -> bool: ...
    def GetShape(self, name: str) -> TopoDS_Shape: ...
    def GetSurface(self, name: str) -> Geom_Surface: ...
    def Set(self, name: str, val: Standard_Transient) -> None: ...
    def SetPoint(self, name: str, val: gp_Pnt) -> None: ...
    def SetPoint2d(self, name: str, val: gp_Pnt2d) -> None: ...
    def SetShape(self, name: str, val: TopoDS_Shape) -> None: ...

class XSControl_WorkSession(IFSelect_WorkSession):
    def __init__(self) -> None: ...
    def ClearContext(self) -> None: ...
    def ClearData(self, theMode: int) -> None: ...
    def Context(self) -> False: ...
    def InitTransferReader(self, theMode: int) -> None: ...
    def MapReader(self) -> Transfer_TransientProcess: ...
    def NewModel(self) -> Interface_InterfaceModel: ...
    def NormAdaptor(self) -> XSControl_Controller: ...
    def PrintTransferStatus(self, theNum: int, theWri: bool) -> Tuple[bool, str]: ...
    def Result(self, theEnt: Standard_Transient, theMode: int) -> Standard_Transient: ...
    def SelectNorm(self, theNormName: str) -> bool: ...
    def SelectedNorm(self, theRsc: Optional[bool] = False) -> str: ...
    def SetController(self, theCtl: XSControl_Controller) -> None: ...
    def SetMapReader(self, theTP: Transfer_TransientProcess) -> bool: ...
    def SetMapWriter(self, theFP: Transfer_FinderProcess) -> bool: ...
    def SetTransferReader(self, theTR: XSControl_TransferReader) -> None: ...
    def SetVars(self, theVars: XSControl_Vars) -> None: ...
    def TransferReadOne(self, theEnts: Standard_Transient, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> int: ...
    def TransferReadRoots(self, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> int: ...
    def TransferReader(self) -> XSControl_TransferReader: ...
    def TransferWriteCheckList(self) -> Interface_CheckIterator: ...
    def TransferWriteShape(self, theShape: TopoDS_Shape, theCompGraph: Optional[bool] = True, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> IFSelect_ReturnStatus: ...
    def TransferWriter(self) -> XSControl_TransferWriter: ...
    def Vars(self) -> XSControl_Vars: ...

class XSControl_Writer:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, norm: str) -> None: ...
    @overload
    def __init__(self, WS: XSControl_WorkSession, scratch: Optional[bool] = True) -> None: ...
    def Model(self, newone: Optional[bool] = False) -> Interface_InterfaceModel: ...
    def PrintStatsTransfer(self, what: int, mode: Optional[int] = 0) -> None: ...
    def SetNorm(self, norm: str) -> bool: ...
    def SetWS(self, WS: XSControl_WorkSession, scratch: Optional[bool] = True) -> None: ...
    def TransferShape(self, sh: TopoDS_Shape, mode: Optional[int] = 0, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()) -> IFSelect_ReturnStatus: ...
    def WS(self) -> XSControl_WorkSession: ...
    def WriteFile(self, filename: str) -> IFSelect_ReturnStatus: ...

# harray1 classes
# harray2 classes
# hsequence classes

