# Generated by sila2.code_generator; sila2.__version__: 0.12.2
# -----
# This class does not do anything useful at runtime. Its only purpose is to provide type annotations.
# Since sphinx does not support .pyi files (yet?), this is a .py file.
# -----

from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from collections.abc import Iterable
    from typing import List, Optional

    from labconfigurationcontroller_types import ConfigureJobShop_Responses, LoadJobShopFromFile_Responses
    from sila2.client import ClientMetadataInstance, ClientUnobservableProperty

    from .labconfigurationcontroller_types import Machine


class LabConfigurationControllerClient:
    """
    This feature is used to configure the lab environment (called JobShop in this context),
      the scheduler can use to schedule processes on.
    """

    CurrentJobShop: ClientUnobservableProperty[list[Machine]]
    """
    The currently used job-shop
    """

    def LoadJobShopFromFile(
        self,
        ConfigurationFile: str,
        *,
        metadata: Iterable[ClientMetadataInstance] | None = None,
    ) -> LoadJobShopFromFile_Responses:
        """
        Sets the Job-Shop (set of devices in the lab) for the scheduler.
        It will be kept until this method is called again. You can also use the ConfigureJobShop method which only uses
        basic types to achieve the same result.
        """

    def ConfigureJobShop(
        self,
        JobShop: list[Machine],
        *,
        metadata: Iterable[ClientMetadataInstance] | None = None,
    ) -> ConfigureJobShop_Responses:
        """
        Sets the Job-Shop (set of devices in the lab) for the scheduler.
            It will be kept until this method is called again.
        """
