from . import RoborockConfigEntry as RoborockConfigEntry
from .const import CONF_BASE_URL as CONF_BASE_URL, CONF_ENTRY_CODE as CONF_ENTRY_CODE, CONF_REGION as CONF_REGION, CONF_SHOW_BACKGROUND as CONF_SHOW_BACKGROUND, CONF_USER_DATA as CONF_USER_DATA, DEFAULT_DRAWABLES as DEFAULT_DRAWABLES, DOMAIN as DOMAIN, DRAWABLES as DRAWABLES, REGION_OPTIONS as REGION_OPTIONS
from _typeshed import Incomplete
from collections.abc import Mapping
from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlowWithReload as OptionsFlowWithReload, SOURCE_REAUTH as SOURCE_REAUTH
from homeassistant.const import CONF_USERNAME as CONF_USERNAME
from homeassistant.core import callback as callback
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
from homeassistant.helpers.selector import SelectSelector as SelectSelector, SelectSelectorConfig as SelectSelectorConfig, SelectSelectorMode as SelectSelectorMode
from homeassistant.helpers.service_info.dhcp import DhcpServiceInfo as DhcpServiceInfo
from roborock.data import UserData as UserData
from roborock.web_api import RoborockApiClient
from typing import Any

_LOGGER: Incomplete

class RoborockFlowHandler(ConfigFlow, domain=DOMAIN):
    VERSION: int
    MINOR_VERSION: int
    _username: str | None
    _client: RoborockApiClient | None
    def __init__(self) -> None: ...
    async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
    async def _request_code(self) -> dict: ...
    async def async_step_code(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
    async def async_step_dhcp(self, discovery_info: DhcpServiceInfo) -> ConfigFlowResult: ...
    async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
    async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
    async def _create_entry(self, client: RoborockApiClient, username: str, user_data: UserData) -> ConfigFlowResult: ...
    @staticmethod
    @callback
    def async_get_options_flow(config_entry: RoborockConfigEntry) -> RoborockOptionsFlowHandler: ...

class RoborockOptionsFlowHandler(OptionsFlowWithReload):
    options: Incomplete
    def __init__(self, config_entry: RoborockConfigEntry) -> None: ...
    async def async_step_init(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
    async def async_step_drawables(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
