"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import avikom.assistance.assistance_level_pb2
import avikom.assistance.choices_config_pb2
import avikom.assistance.service_configuration_pb2
import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import sys
import typing

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _TaskStereotypeCategory:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _TaskStereotypeCategoryEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TaskStereotypeCategory.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    TASK_UNKOWN: _TaskStereotypeCategory.ValueType  # 0
    """/ default value; should not be used actively"""
    TASK_PENDING: _TaskStereotypeCategory.ValueType  # 1
    """/ waiting for user/peer to finish task, a failure needs to be raised if impossible"""
    TASK_DECISION: _TaskStereotypeCategory.ValueType  # 2
    """/ chose answer out of 'choices'"""
    TASK_ASSIGN: _TaskStereotypeCategory.ValueType  # 3
    """/ assign a 'target'"""
    TASK_GUIDE: _TaskStereotypeCategory.ValueType  # 4
    """/ guide user to a 'target'"""
    TASK_APPROVE: _TaskStereotypeCategory.ValueType  # 5
    """/ can be approved or declined, simple yes no question"""
    TASK_INPUT: _TaskStereotypeCategory.ValueType  # 6
    """/ user needs to provide further information; multiple input 'services' might be provided;"""
    TASK_INTERNAL: _TaskStereotypeCategory.ValueType  # 7
    """/ informs users/peers about ongoing processes; should not be used for critical information; might not be perceivable by the user"""

class TaskStereotypeCategory(_TaskStereotypeCategory, metaclass=_TaskStereotypeCategoryEnumTypeWrapper): ...

TASK_UNKOWN: TaskStereotypeCategory.ValueType  # 0
"""/ default value; should not be used actively"""
TASK_PENDING: TaskStereotypeCategory.ValueType  # 1
"""/ waiting for user/peer to finish task, a failure needs to be raised if impossible"""
TASK_DECISION: TaskStereotypeCategory.ValueType  # 2
"""/ chose answer out of 'choices'"""
TASK_ASSIGN: TaskStereotypeCategory.ValueType  # 3
"""/ assign a 'target'"""
TASK_GUIDE: TaskStereotypeCategory.ValueType  # 4
"""/ guide user to a 'target'"""
TASK_APPROVE: TaskStereotypeCategory.ValueType  # 5
"""/ can be approved or declined, simple yes no question"""
TASK_INPUT: TaskStereotypeCategory.ValueType  # 6
"""/ user needs to provide further information; multiple input 'services' might be provided;"""
TASK_INTERNAL: TaskStereotypeCategory.ValueType  # 7
"""/ informs users/peers about ongoing processes; should not be used for critical information; might not be perceivable by the user"""
global___TaskStereotypeCategory = TaskStereotypeCategory

@typing_extensions.final
class TaskStereotype(google.protobuf.message.Message):
    """*
    This messages classifies the assistance mechanism needed for a `TaskStep`.
    Paramaters may contain variable names in `{curly brackets}`.
    These should be resolved during runtime with the session's variable content.
    @author: Alexander Neumann <alneuman@techfak.uni-bielefeld.de>
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CATEGORY_FIELD_NUMBER: builtins.int
    CHOICES_FIELD_NUMBER: builtins.int
    TARGET_FIELD_NUMBER: builtins.int
    SERVICES_FIELD_NUMBER: builtins.int
    DEFAULT_ASSISTANCE_FIELD_NUMBER: builtins.int
    MINIMAL_ASSISTANCE_FIELD_NUMBER: builtins.int
    ASSISTANCE_DECREASE_FIELD_NUMBER: builtins.int
    category: global___TaskStereotypeCategory.ValueType
    """/ defines the kind of action a user can conduct to process this task"""
    @property
    def choices(self) -> avikom.assistance.choices_config_pb2.ChoicesConfig:
        """/ a set of choices a user can choose; will be only be considered for tasks where decisions have to be made"""
    target: builtins.str
    """/ the name of a  virtual or real object of central importance for that task (e.g. the target location during guidance)"""
    @property
    def services(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[avikom.assistance.service_configuration_pb2.ServiceConfiguration]:
        """/ a set of services that can be used to solve that task"""
    default_assistance: avikom.assistance.assistance_level_pb2.AssistanceLevel.ValueType
    """/ the default assistance for this step if no step proficiency is available"""
    minimal_assistance: avikom.assistance.assistance_level_pb2.AssistanceLevel.ValueType
    """/ overrides the category-induced minimal assistance levels but cannot be lower"""
    assistance_decrease: builtins.float
    """/ factor to reduce `tendency` when a task was conducted successfully, this will be combined with user preferences; 0 is considered unset and will be ignored"""
    def __init__(
        self,
        *,
        category: global___TaskStereotypeCategory.ValueType = ...,
        choices: avikom.assistance.choices_config_pb2.ChoicesConfig | None = ...,
        target: builtins.str = ...,
        services: collections.abc.Iterable[avikom.assistance.service_configuration_pb2.ServiceConfiguration] | None = ...,
        default_assistance: avikom.assistance.assistance_level_pb2.AssistanceLevel.ValueType = ...,
        minimal_assistance: avikom.assistance.assistance_level_pb2.AssistanceLevel.ValueType = ...,
        assistance_decrease: builtins.float = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["choices", b"choices"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["assistance_decrease", b"assistance_decrease", "category", b"category", "choices", b"choices", "default_assistance", b"default_assistance", "minimal_assistance", b"minimal_assistance", "services", b"services", "target", b"target"]) -> None: ...

global___TaskStereotype = TaskStereotype
