# Generated by sila2.code_generator; sila2.__version__: 0.10.3
# -----
# 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 typing import Iterable, Optional

    from laborchestratorservice_types import (
        GetStatus_Responses,
        LoadLabConfiguration_Responses,
        LoadLabConfigurationFile_Responses,
        LoadProcess_Responses,
        LoadProcessFile_Responses,
        StartProcess_Responses,
        StopProcess_Responses,
    )
    from sila2.client import ClientMetadataInstance


class LabOrchestratorServiceClient:
    """

    This feature controls the Lab Orchestrator

    """

    def LoadProcess(
        self, LabProcessName: str, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None
    ) -> LoadProcess_Responses:
        """
        Load a pythonLab Process
        """
        ...

    def LoadProcessFile(
        self, LabProcessFileName: str, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None
    ) -> LoadProcessFile_Responses:
        """
        Load a pythonLab Process file
        """
        ...

    def LoadLabConfiguration(
        self, LabConfigurationName: str, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None
    ) -> LoadLabConfiguration_Responses:
        """
        Load a Lab Configuration from Database
        """
        ...

    def LoadLabConfigurationFile(
        self, LabConfigurationFileName: str, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None
    ) -> LoadLabConfigurationFile_Responses:
        """
        Load a Lab Configuration from YAML file
        """
        ...

    def StartProcess(
        self, ProcessName: str, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None
    ) -> StartProcess_Responses:
        """
        Starts a given process
        """
        ...

    def StopProcess(
        self, ProcessName: str, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None
    ) -> StopProcess_Responses:
        """
        Stops a given process
        """
        ...

    def GetStatus(
        self, ProcessName: str, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None
    ) -> GetStatus_Responses:
        """
        Returns the status of the specified process
        """
        ...
