class Config:
    def __init__(
        self,
        ubound: float | None = None,
        place_ubound: float | None = None,
        max_candidates: int | None = None,
        metric: str | None = None,
        max_threads: int | None = None,
        path_to_streets: str | None = None,
    ): ...
    @property
    def ubound(self) -> float | None: ...
    @property
    def place_ubound(self) -> float | None: ...
    @property
    def max_candidates(self) -> int | None: ...
    @property
    def metric(self) -> str | None: ...
    @property
    def max_threads(self) -> int | None: ...
    @property
    def path_to_streets(self) -> str | None: ...
    @ubound.setter
    def ubound(self, value: float | None) -> None: ...
    @place_ubound.setter
    def place_ubound(self, value: float | None) -> None: ...
    @max_candidates.setter
    def max_candidates(self, value: int | None) -> None: ...
    @metric.setter
    def metric(self, value: str | None) -> None: ...
    @max_threads.setter
    def max_threads(self, value: int | None) -> None: ...
    @path_to_streets.setter
    def path_to_streets(self, value: str | None) -> None: ...

class Candidate:
    def __init__(self, street: str, location: str | int | None): ...
    @property
    def street(self) -> str | int: ...
    @property
    def location(self) -> str | int | None: ...
    @street.setter
    def street(self, value: str | int): ...
    @location.setter
    def location(self, value: str | int | None): ...

def guess_address(
    street: str,
    location: str | int | None = None,
    config: Config | None = None,
) -> Candidate | None: ...
