# Generated by sila2.code_generator; sila2.__version__: 0.12.2
from __future__ import annotations

from typing import Set

from sila2.client import SilaClient
from sila2.framework import FullyQualifiedFeatureIdentifier

from . import labconfigurationcontroller, schedulingservice


class Client(SilaClient):
    LabConfigurationController: labconfigurationcontroller.LabConfigurationControllerClient

    SchedulingService: schedulingservice.SchedulingServiceClient

    _expected_features: set[FullyQualifiedFeatureIdentifier] = {
        FullyQualifiedFeatureIdentifier("org.silastandard/core/SiLAService/v1"),
        FullyQualifiedFeatureIdentifier("de.unigreifswald.biochemie/scheduling/LabConfigurationController/v1"),
        FullyQualifiedFeatureIdentifier("de.unigreifswald.biochemie/scheduling/SchedulingService/v1"),
    }

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self._register_defined_execution_error_class(
            labconfigurationcontroller.LabConfigurationControllerFeature.defined_execution_errors["FileFormatError"],
            labconfigurationcontroller.FileFormatError,
        )

        self._register_defined_execution_error_class(
            schedulingservice.SchedulingServiceFeature.defined_execution_errors["MissingAlgorithmError"],
            schedulingservice.MissingAlgorithmError,
        )

        self._register_defined_execution_error_class(
            schedulingservice.SchedulingServiceFeature.defined_execution_errors["ComputationError"],
            schedulingservice.ComputationError,
        )
