from .coordinator import OverkizDataUpdateCoordinator as OverkizDataUpdateCoordinator
from _typeshed import Incomplete
from pyoverkiz.enums import OverkizCommand
from pyoverkiz.models import Device as Device, StateDefinition as StateDefinition
from pyoverkiz.types import StateType as OverkizStateType
from typing import Any

COMMANDS_WITHOUT_DELAY: Incomplete

class OverkizExecutor:
    device_url: Incomplete
    coordinator: Incomplete
    base_device_url: Incomplete
    def __init__(self, device_url: str, coordinator: OverkizDataUpdateCoordinator) -> None: ...
    @property
    def device(self) -> Device: ...
    def linked_device(self, index: int) -> Device: ...
    def select_command(self, *commands: str) -> Union[str, None]: ...
    def has_command(self, *commands: str) -> bool: ...
    def select_definition_state(self, *states: str) -> Union[StateDefinition, None]: ...
    def select_state(self, *states: str) -> OverkizStateType: ...
    def has_state(self, *states: str) -> bool: ...
    def select_attribute(self, *attributes: str) -> OverkizStateType: ...
    async def async_execute_command(self, command_name: str, *args: Any) -> None: ...
    async def async_cancel_command(self, commands_to_cancel: list[OverkizCommand]) -> bool: ...
    async def async_cancel_execution(self, exec_id: str) -> None: ...
    def get_gateway_id(self) -> str: ...
