import typing, abc
from SIMULTAN.Data.Geometry import GeometryModel, BaseGeometry, Vertex
from SIMULTAN.Data.SimNetworks import SimNetwork, ISimNetworkElement
from SIMULTAN.Exchange import ComponentGeometryExchange
from System.Collections.Generic import List_1, IEnumerable_1

class BaseSimnetworkGeometryConnector(abc.ABC):
    def Dispose(self) -> None: ...


class SimNetworkGeometryModelConnector:
    def __init__(self, model: GeometryModel, network: SimNetwork, exchange: ComponentGeometryExchange) -> None: ...
    def EndPartialTransform(self, effectedGeoms: List_1[BaseGeometry]) -> None: ...
    def GetNetworkElements(self, geometry: BaseGeometry) -> IEnumerable_1[ISimNetworkElement]: ...
    def GetStaticGroupGeometries(self, geom: BaseGeometry) -> IEnumerable_1[BaseGeometry]: ...
    def IstAssociatedWithStaticBlock(self, geom: BaseGeometry) -> bool: ...
    def StartMoveRotatePartialOperation(self, geom: BaseGeometry) -> IEnumerable_1[BaseGeometry]: ...
    def UpdateNetwork(self, network: SimNetwork) -> None: ...
    def UpdateStaticConnectors(self, geoms: List_1[Vertex]) -> None: ...


class ValidationError(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    RotationError : ValidationError # 0
    DistanceError : ValidationError # 1

