# This file is automatically generated by pyo3_stub_gen
# ruff: noqa: E501, F401, F403, F405

import builtins
import collections.abc
import typing
__all__ = [
    "AStarPath",
    "find_path",
]

@typing.final
class AStarPath:
    @property
    def waypoints(self) -> builtins.list[tuple[builtins.float, builtins.float]]: ...
    @property
    def visited(self) -> builtins.int: ...
    @property
    def length(self) -> builtins.float: ...

def find_path(from_: tuple[float, float], to: tuple[float, float], free_space: collections.abc.Sequence[collections.abc.Sequence[tuple[float, float]]], obstacles: collections.abc.Sequence[collections.abc.Sequence[tuple[float, float]]] = [], obstacle_margin: float = 0, cell_size: float = 1) -> AStarPath | None:
    r"""
    Find a path from *from_* to *to* inside *free_space*, avoiding *obstacles*.
    
    The walkable area is rasterised at *cell_size* resolution.
    Obstacles are dilated by *obstacle_margin* before pathfinding.
    
    :param from_: Start point (x, y).
    :param to: Goal point (x, y).
    :param free_space: Polygons defining the walkable region.
    :param obstacles: Polygons defining forbidden zones (default []).
    :param obstacle_margin: Radius by which obstacles are expanded (default 0).
    :param cell_size: Raster grid resolution (default 1.0).
    :returns: AStarPath with waypoints, visited count, and length, or None.
    """

