import aioshelly
from .const import BASIC_INPUTS_EVENTS_TYPES as BASIC_INPUTS_EVENTS_TYPES, CONF_COAP_PORT as CONF_COAP_PORT, DEFAULT_COAP_PORT as DEFAULT_COAP_PORT, DOMAIN as DOMAIN, SHBTN_INPUTS_EVENTS_TYPES as SHBTN_INPUTS_EVENTS_TYPES, SHBTN_MODELS as SHBTN_MODELS, SHIX3_1_INPUTS_EVENTS_TYPES as SHIX3_1_INPUTS_EVENTS_TYPES, UPTIME_DEVIATION as UPTIME_DEVIATION
from homeassistant.const import EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP, TEMP_CELSIUS as TEMP_CELSIUS, TEMP_FAHRENHEIT as TEMP_FAHRENHEIT
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
from homeassistant.helpers import singleton as singleton
from homeassistant.helpers.typing import EventType as EventType
from homeassistant.util.dt import utcnow as utcnow
from typing import Any, Final

_LOGGER: Final[Any]

async def async_remove_shelly_entity(hass: HomeAssistant, domain: str, unique_id: str) -> None: ...
def temperature_unit(block_info: dict[str, Any]) -> str: ...
def get_device_name(device: aioshelly.Device) -> str: ...
def get_number_of_channels(device: aioshelly.Device, block: aioshelly.Block) -> int: ...
def get_entity_name(device: aioshelly.Device, block: aioshelly.Block, description: Union[str, None] = ...) -> str: ...
def get_device_channel_name(device: aioshelly.Device, block: aioshelly.Block) -> str: ...
def is_momentary_input(settings: dict[str, Any], block: aioshelly.Block) -> bool: ...
def get_device_uptime(status: dict[str, Any], last_uptime: Union[str, None]) -> str: ...
def get_input_triggers(device: aioshelly.Device, block: aioshelly.Block) -> list[tuple[str, str]]: ...
async def get_coap_context(hass: HomeAssistant) -> aioshelly.COAP: ...
def get_device_sleep_period(settings: dict[str, Any]) -> int: ...
