import typing

import java
import java.lang

class BooleanAction(ControlAction):
    @typing.overload
    def __init__(self, templateId: str | java.lang.String, newState: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def __init__(self, templateId: str | java.lang.String, newState: bool | java.jboolean | java.lang.Boolean, challengeValue: str | java.lang.String, /) -> None: ...
    def getActionType(self) -> int: ...
    def getNewState(self) -> bool: ...

class CommandAction(ControlAction):
    @typing.overload
    def __init__(self, templateId: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, templateId: str | java.lang.String, challengeValue: str | java.lang.String, /) -> None: ...
    def getActionType(self) -> int: ...

class ControlAction(java.lang.Object):
    RESPONSE_CHALLENGE_ACK: typing.ClassVar[int] = ...
    RESPONSE_CHALLENGE_PASSPHRASE: typing.ClassVar[int] = ...
    RESPONSE_CHALLENGE_PIN: typing.ClassVar[int] = ...
    RESPONSE_FAIL: typing.ClassVar[int] = ...
    RESPONSE_OK: typing.ClassVar[int] = ...
    RESPONSE_UNKNOWN: typing.ClassVar[int] = ...
    TYPE_BOOLEAN: typing.ClassVar[int] = ...
    TYPE_COMMAND: typing.ClassVar[int] = ...
    TYPE_ERROR: typing.ClassVar[int] = ...
    TYPE_FLOAT: typing.ClassVar[int] = ...
    TYPE_MODE: typing.ClassVar[int] = ...
    def getActionType(self) -> int: ...
    def getChallengeValue(self) -> str | None: ...
    @staticmethod
    def getErrorAction() -> ControlAction: ...
    def getTemplateId(self) -> str: ...
    @staticmethod
    def isValidResponse(response: int | java.jint | java.lang.Integer, /) -> bool: ...

class FloatAction(ControlAction):
    @typing.overload
    def __init__(self, templateId: str | java.lang.String, newValue: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def __init__(self, templateId: str | java.lang.String, newValue: float | java.jfloat | java.lang.Float, challengeValue: str | java.lang.String, /) -> None: ...
    def getActionType(self) -> int: ...
    def getNewValue(self) -> float: ...

class ModeAction(ControlAction):
    @typing.overload
    def __init__(self, templateId: str | java.lang.String, newMode: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, templateId: str | java.lang.String, newMode: int | java.jint | java.lang.Integer, challengeValue: str | java.lang.String, /) -> None: ...
    def getActionType(self) -> int: ...
    def getNewMode(self) -> int: ...
