from .integration_platform import async_process_integration_platforms as async_process_integration_platforms
from _typeshed import Incomplete
from collections.abc import Callable
from homeassistant.const import STATE_UNAVAILABLE as STATE_UNAVAILABLE, STATE_UNKNOWN as STATE_UNKNOWN
from homeassistant.core import HomeAssistant as HomeAssistant, State as State, callback as callback
from typing import Any

PLATFORM: str
DATA_FUNCTIONS: str
CheckTypeFunc: Incomplete
ExtraCheckTypeFunc: Incomplete

async def create_checker(hass: HomeAssistant, _domain: str, extra_significant_check: ExtraCheckTypeFunc | None = None) -> SignificantlyChangedChecker: ...
async def _initialize(hass: HomeAssistant) -> None: ...
def either_one_none(val1: Any | None, val2: Any | None) -> bool: ...
def _check_numeric_change(old_state: int | float | None, new_state: int | float | None, change: int | float, metric: Callable[[int | float, int | float], int | float]) -> bool: ...
def check_absolute_change(val1: int | float | None, val2: int | float | None, change: int | float) -> bool: ...
def check_percentage_change(old_state: int | float | None, new_state: int | float | None, change: int | float) -> bool: ...
def check_valid_float(value: str | int | float) -> bool: ...

class SignificantlyChangedChecker:
    hass: Incomplete
    last_approved_entities: Incomplete
    extra_significant_check: Incomplete
    def __init__(self, hass: HomeAssistant, extra_significant_check: ExtraCheckTypeFunc | None = None) -> None: ...
    def async_is_significant_change(self, new_state: State, *, extra_arg: Any | None = None) -> bool: ...
