__all__ = [
    "RemoteCallManager",
    "NetworkInterface",
    "RuntimeProtocol",
    "TcpPacketTransport",
    "UdsPacketTransport",
    "ShmPacketTransport",
    "TransportSelector",
    "TransportHub",
]


def __getattr__(name: str):
    if name == "RemoteCallManager":
        from flownet.runtime.transport.call_manager import RemoteCallManager
        return RemoteCallManager
    if name == "NetworkInterface":
        from flownet.runtime.transport.network_interface import NetworkInterface
        return NetworkInterface
    if name == "TcpPacketTransport":
        from flownet.runtime.transport.tcp_transport import TcpPacketTransport
        return TcpPacketTransport
    if name == "UdsPacketTransport":
        from flownet.runtime.transport.uds_transport import UdsPacketTransport
        return UdsPacketTransport
    if name == "ShmPacketTransport":
        from flownet.runtime.transport.shm_transport import ShmPacketTransport
        return ShmPacketTransport
    if name == "TransportSelector":
        from flownet.runtime.transport.transport_selector import TransportSelector
        return TransportSelector
    if name == "TransportHub":
        from flownet.runtime.transport.transport_hub import TransportHub
        return TransportHub
    if name == "RuntimeProtocol":
        from flownet.runtime.transport.runtime_protocol import RuntimeProtocol
        return RuntimeProtocol
    raise AttributeError(name)
