import logging
from .api import ConfigFlowVolvoAuth as ConfigFlowVolvoAuth
from .const import CONF_VIN as CONF_VIN, DOMAIN as DOMAIN, MANUFACTURER as MANUFACTURER
from _typeshed import Incomplete
from collections.abc import Mapping
from homeassistant.config_entries import ConfigFlowResult as ConfigFlowResult, SOURCE_REAUTH as SOURCE_REAUTH, SOURCE_RECONFIGURE as SOURCE_RECONFIGURE
from homeassistant.const import CONF_ACCESS_TOKEN as CONF_ACCESS_TOKEN, CONF_API_KEY as CONF_API_KEY, CONF_NAME as CONF_NAME, CONF_TOKEN as CONF_TOKEN
from homeassistant.core import HomeAssistant as HomeAssistant
from homeassistant.helpers import aiohttp_client as aiohttp_client
from homeassistant.helpers.config_entry_oauth2_flow import AbstractOAuth2FlowHandler as AbstractOAuth2FlowHandler
from homeassistant.helpers.selector import SelectOptionDict as SelectOptionDict, SelectSelector as SelectSelector, SelectSelectorConfig as SelectSelectorConfig, TextSelector as TextSelector, TextSelectorConfig as TextSelectorConfig, TextSelectorType as TextSelectorType
from typing import Any
from volvocarsapi.api import VolvoCarsApi
from volvocarsapi.models import VolvoCarsVehicle as VolvoCarsVehicle

_LOGGER: Incomplete

def _create_volvo_cars_api(hass: HomeAssistant, access_token: str, api_key: str) -> VolvoCarsApi: ...

class VolvoOAuth2FlowHandler(AbstractOAuth2FlowHandler, domain=DOMAIN):
    DOMAIN = DOMAIN
    _vehicles: list[VolvoCarsVehicle]
    _config_data: dict
    def __init__(self) -> None: ...
    @property
    def extra_authorize_data(self) -> dict: ...
    @property
    def logger(self) -> logging.Logger: ...
    async def async_oauth_create_entry(self, data: dict) -> ConfigFlowResult: ...
    async def async_step_reauth(self, _: Mapping[str, Any]) -> ConfigFlowResult: ...
    async def async_step_reconfigure(self, data: dict[str, Any] | None = None) -> ConfigFlowResult: ...
    async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
    async def async_step_api_key(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
    async def async_step_vin(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
    async def _async_create_or_update(self) -> ConfigFlowResult: ...
    async def _async_load_vehicles(self, api: VolvoCarsApi) -> None: ...
