import typing, abc
from SIMULTAN.Data.Geometry import SimMeshGeometryData
from System import Exception
from System.Collections import IDictionary
from System.Reflection import MethodBase

class AssimpGeometryImporter(IGeometryImporter):
    @classmethod
    @property
    def Instance(cls) -> AssimpGeometryImporter: ...
    def Import(self, path: str) -> SimMeshGeometryData: ...


class GeometryImporterException(Exception):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, message: str) -> None: ...
    @typing.overload
    def __init__(self, message: str, innerException: Exception) -> None: ...
    @property
    def Data(self) -> IDictionary: ...
    @property
    def HelpLink(self) -> str: ...
    @HelpLink.setter
    def HelpLink(self, value: str) -> str: ...
    @property
    def HResult(self) -> int: ...
    @HResult.setter
    def HResult(self, value: int) -> int: ...
    @property
    def InnerException(self) -> Exception: ...
    @property
    def Message(self) -> str: ...
    @property
    def Source(self) -> str: ...
    @Source.setter
    def Source(self, value: str) -> str: ...
    @property
    def StackTrace(self) -> str: ...
    @property
    def TargetSite(self) -> MethodBase: ...


class IGeometryImporter(typing.Protocol):
    @abc.abstractmethod
    def Import(self, path: str) -> SimMeshGeometryData: ...

