from .const import ATTR_MESSAGE as ATTR_MESSAGE, DOMAIN as DOMAIN
from .data import ProtectData as ProtectData
from .utils import _async_unifi_mac_from_hass as _async_unifi_mac_from_hass
from homeassistant.config_entries import ConfigEntryState as ConfigEntryState
from homeassistant.const import ATTR_DEVICE_ID as ATTR_DEVICE_ID
from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, callback as callback
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
from homeassistant.helpers import device_registry as dr
from homeassistant.helpers.service import async_extract_referenced_entity_ids as async_extract_referenced_entity_ids
from pyunifiprotect.api import ProtectApiClient as ProtectApiClient
from typing import Any

SERVICE_ADD_DOORBELL_TEXT: str
SERVICE_REMOVE_DOORBELL_TEXT: str
SERVICE_SET_DEFAULT_DOORBELL_TEXT: str
ALL_GLOBAL_SERIVCES: Any
DOORBELL_TEXT_SCHEMA: Any

def _async_all_ufp_instances(hass: HomeAssistant) -> list[ProtectApiClient]: ...
def _async_get_macs_for_device(device_entry: dr.DeviceEntry) -> list[str]: ...
def _async_get_ufp_instances(hass: HomeAssistant, device_id: str) -> tuple[dr.DeviceEntry, ProtectApiClient]: ...
def _async_get_protect_from_call(hass: HomeAssistant, call: ServiceCall) -> list[tuple[dr.DeviceEntry, ProtectApiClient]]: ...
async def _async_call_nvr(instances: list[tuple[dr.DeviceEntry, ProtectApiClient]], method: str, *args: Any, **kwargs: Any) -> None: ...
async def add_doorbell_text(hass: HomeAssistant, call: ServiceCall) -> None: ...
async def remove_doorbell_text(hass: HomeAssistant, call: ServiceCall) -> None: ...
async def set_default_doorbell_text(hass: HomeAssistant, call: ServiceCall) -> None: ...
def async_setup_services(hass: HomeAssistant) -> None: ...
def async_cleanup_services(hass: HomeAssistant) -> None: ...
