from homeassistant.const import EVENT_HOMEASSISTANT_FINAL_WRITE as EVENT_HOMEASSISTANT_FINAL_WRITE
from homeassistant.core import CALLBACK_TYPE as CALLBACK_TYPE, CoreState as CoreState, Event as Event, HomeAssistant as HomeAssistant, callback as callback
from homeassistant.helpers.event import async_call_later as async_call_later
from homeassistant.loader import bind_hass as bind_hass
from json import JSONEncoder
from typing import Any, Callable

STORAGE_DIR: str
_LOGGER: Any

async def async_migrator(hass, old_path, store, *, old_conf_load_func: Any | None = ..., old_conf_migrate_func: Any | None = ...): ...

class Store:
    version: Any
    key: Any
    hass: Any
    _private: Any
    _data: Any
    _unsub_delay_listener: Any
    _unsub_final_write_listener: Any
    _write_lock: Any
    _load_task: Any
    _encoder: Any
    def __init__(self, hass: HomeAssistant, version: int, key: str, private: bool = ..., *, encoder: Union[type[JSONEncoder], None] = ...) -> None: ...
    @property
    def path(self): ...
    async def async_load(self) -> Union[dict, list, None]: ...
    async def _async_load(self): ...
    async def _async_load_data(self): ...
    async def async_save(self, data: Union[dict, list]) -> None: ...
    def async_delay_save(self, data_func: Callable[[], dict], delay: float = ...) -> None: ...
    def _async_ensure_final_write_listener(self) -> None: ...
    def _async_cleanup_final_write_listener(self) -> None: ...
    def _async_cleanup_delay_listener(self) -> None: ...
    async def _async_callback_delayed_write(self, _now) -> None: ...
    async def _async_callback_final_write(self, _event: Event) -> None: ...
    async def _async_handle_write_data(self, *_args) -> None: ...
    def _write_data(self, path: str, data: dict) -> None: ...
    async def _async_migrate_func(self, old_version, old_data) -> None: ...
    async def async_remove(self) -> None: ...
