"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import avikom.generic.modality_pb2
import avikom.generic.rpc_endpoint_pb2
import avikom.generic.user_pb2
import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import sys

if sys.version_info >= (3, 8):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing_extensions.final
class Peer(google.protobuf.message.Message):
    """*
    A representation of a service system to connect to or to exchange data with.
    @author Alexander Neumann <alneuman@techfak.uni-bielefeld.de>
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NAME_FIELD_NUMBER: builtins.int
    IP_FIELD_NUMBER: builtins.int
    HOST_NAME_FIELD_NUMBER: builtins.int
    PORT_FIELD_NUMBER: builtins.int
    USER_FIELD_NUMBER: builtins.int
    MODAL_FITNESS_FIELD_NUMBER: builtins.int
    GATEWAY_FIELD_NUMBER: builtins.int
    SERVICES_FIELD_NUMBER: builtins.int
    ENDPOINTS_FIELD_NUMBER: builtins.int
    name: builtins.str
    """/ unique identifier of peer"""
    ip: builtins.str
    """/ the ip under which the peer can be reached"""
    host_name: builtins.str
    """/ name of the host; only interpreted if ip not set"""
    port: builtins.int
    """/ port under which the peer can be reached"""
    @property
    def user(self) -> avikom.generic.user_pb2.User:
        """/ the user currently associated with that peer"""
    @property
    def modal_fitness(self) -> avikom.generic.modality_pb2.Modality:
        """/ the modality or combination of modalities the peer supports"""
    gateway: builtins.str
    """/ a gateway URL in cases where the peer cannot be reached directly"""
    @property
    def services(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """/ a list of services the peer provides for task step resolution"""
    @property
    def endpoints(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[avikom.generic.rpc_endpoint_pb2.RpcEndpoint.ValueType]:
        """/ a list of endpoints that are provied by the peer"""
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        ip: builtins.str = ...,
        host_name: builtins.str = ...,
        port: builtins.int = ...,
        user: avikom.generic.user_pb2.User | None = ...,
        modal_fitness: avikom.generic.modality_pb2.Modality | None = ...,
        gateway: builtins.str = ...,
        services: collections.abc.Iterable[builtins.str] | None = ...,
        endpoints: collections.abc.Iterable[avikom.generic.rpc_endpoint_pb2.RpcEndpoint.ValueType] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["modal_fitness", b"modal_fitness", "user", b"user"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["endpoints", b"endpoints", "gateway", b"gateway", "host_name", b"host_name", "ip", b"ip", "modal_fitness", b"modal_fitness", "name", b"name", "port", b"port", "services", b"services", "user", b"user"]) -> None: ...

global___Peer = Peer

@typing_extensions.final
class PeerList(google.protobuf.message.Message):
    """*
    A list of peers that is commonly associated with steps and or runtime task steps.
    @author Alexander Neumann <alneuman@techfak.uni-bielefeld.de>
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PEERS_FIELD_NUMBER: builtins.int
    @property
    def peers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Peer]:
        """/ A list of peers."""
    def __init__(
        self,
        *,
        peers: collections.abc.Iterable[global___Peer] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["peers", b"peers"]) -> None: ...

global___PeerList = PeerList
