from . import async_discover_devices as async_discover_devices, create_async_tplink_clientsession as create_async_tplink_clientsession, get_credentials as get_credentials, mac_alias as mac_alias, set_credentials as set_credentials
from .const import CONF_DEVICE_CONFIG as CONF_DEVICE_CONFIG, CONNECT_TIMEOUT as CONNECT_TIMEOUT, DOMAIN as DOMAIN
from _typeshed import Incomplete
from collections.abc import Mapping
from homeassistant import config_entries as config_entries
from homeassistant.components import dhcp as dhcp
from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigEntryState as ConfigEntryState, SOURCE_REAUTH as SOURCE_REAUTH
from homeassistant.const import CONF_ALIAS as CONF_ALIAS, CONF_DEVICE as CONF_DEVICE, CONF_HOST as CONF_HOST, CONF_MAC as CONF_MAC, CONF_MODEL as CONF_MODEL, CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME
from homeassistant.core import callback as callback
from homeassistant.data_entry_flow import AbortFlow as AbortFlow, FlowResult as FlowResult
from homeassistant.helpers.typing import DiscoveryInfoType as DiscoveryInfoType
from kasa import Credentials, SmartDevice
from typing import Any

STEP_AUTH_DATA_SCHEMA: Incomplete

class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
    VERSION: int
    MINOR_VERSION: int
    reauth_entry: ConfigEntry | None
    _discovered_devices: Incomplete
    _discovered_device: Incomplete
    def __init__(self) -> None: ...
    async def async_step_dhcp(self, discovery_info: dhcp.DhcpServiceInfo) -> FlowResult: ...
    async def async_step_integration_discovery(self, discovery_info: DiscoveryInfoType) -> FlowResult: ...
    def _update_config_if_entry_in_setup_error(self, entry: ConfigEntry, host: str, config: dict) -> None: ...
    async def _async_handle_discovery(self, host: str, formatted_mac: str, config: dict | None = None) -> FlowResult: ...
    async def async_step_discovery_auth_confirm(self, user_input: dict[str, Any] | None = None) -> FlowResult: ...
    def _async_make_placeholders_from_discovery(self) -> dict[str, str]: ...
    async def async_step_discovery_confirm(self, user_input: dict[str, Any] | None = None) -> FlowResult: ...
    async def async_step_user(self, user_input: dict[str, Any] | None = None) -> FlowResult: ...
    async def async_step_user_auth_confirm(self, user_input: dict[str, Any] | None = None) -> FlowResult: ...
    async def async_step_pick_device(self, user_input: dict[str, Any] | None = None) -> FlowResult: ...
    async def _async_reload_requires_auth_entries(self) -> None: ...
    def _async_create_entry_from_device(self, device: SmartDevice) -> FlowResult: ...
    async def _async_try_discover_and_update(self, host: str, credentials: Credentials | None, raise_on_progress: bool) -> SmartDevice: ...
    async def _async_try_connect(self, discovered_device: SmartDevice, credentials: Credentials | None) -> SmartDevice: ...
    async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> FlowResult: ...
    async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> FlowResult: ...
