# 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 typing import Any, Iterable, List, Optional

    from modulethermocycler_types import (
        CloseLid_Responses,
        CurrentBlockTemperature_Responses,
        CurrentBlockTemperatureStatus_Responses,
        CurrentLidPosition_Responses,
        CurrentLidTemperature_Responses,
        CurrentLidTemperatureStatus_Responses,
        Deactivate_Responses,
        DeactivateBlockHeater_Responses,
        DeactivateLidHeater_Responses,
        ExecuteProfile_Responses,
        OpenLid_Responses,
        SetBlockTemperature_Responses,
        SetLidTemperature_Responses,
    )
    from sila2.client import ClientMetadataInstance, ClientObservableCommandInstance


class ModuleThermocyclerClient:
    """

    This feature contains all methods used for the thermocycler

    """

    def Deactivate(self, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None) -> Deactivate_Responses:
        """
        Stops heating

        """
        ...

    def DeactivateBlockHeater(
        self, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None
    ) -> DeactivateBlockHeater_Responses:
        """
        Stops heating

        """
        ...

    def DeactivateLidHeater(
        self, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None
    ) -> DeactivateLidHeater_Responses:
        """
        Stops heating

        """
        ...

    def CloseLid(self, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None) -> CloseLid_Responses:
        """
        Closes the absorbance plate lid

        """
        ...

    def OpenLid(self, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None) -> OpenLid_Responses:
        """
        Opens the absorbance plate lid

        """
        ...

    def SetLidTemperature(
        self, Temperature: float, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None
    ) -> SetLidTemperature_Responses:
        """

        Set the lid target temperature and waits for temperature to be reached.

        """
        ...

    def SetBlockTemperature(
        self,
        Temperature: float,
        HoldTimeMinutes: float,
        HoldTimeSeconds: float,
        BlockMaxVolume: float,
        *,
        metadata: Optional[Iterable[ClientMetadataInstance]] = None,
    ) -> SetBlockTemperature_Responses:
        """

        Set the block target temperature and waits for temperature to be reached.

        """
        ...

    def ExecuteProfile(
        self,
        Steps: List[Any],
        Repetitions: int,
        BlockMaxVolume: float,
        *,
        metadata: Optional[Iterable[ClientMetadataInstance]] = None,
    ) -> ExecuteProfile_Responses:
        """
        Executes the thermocycler profile
        """
        ...

    def CurrentBlockTemperature(
        self, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None
    ) -> ClientObservableCommandInstance[CurrentBlockTemperature_Responses]:
        """
        Returns the current block temperature in Celsius

        """
        ...

    def CurrentLidTemperature(
        self, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None
    ) -> ClientObservableCommandInstance[CurrentLidTemperature_Responses]:
        """
        Returns the current lid temperature in Celsius

        """
        ...

    def CurrentLidTemperatureStatus(
        self, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None
    ) -> ClientObservableCommandInstance[CurrentLidTemperatureStatus_Responses]:
        """
        Returns the current lid temperature status

        """
        ...

    def CurrentBlockTemperatureStatus(
        self, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None
    ) -> ClientObservableCommandInstance[CurrentBlockTemperatureStatus_Responses]:
        """
        Returns the current block temperature status

        """
        ...

    def CurrentLidPosition(
        self, *, metadata: Optional[Iterable[ClientMetadataInstance]] = None
    ) -> ClientObservableCommandInstance[CurrentLidPosition_Responses]:
        """
        Returns the current lid position
        """
        ...
