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

import collections.abc
__all__ = [
    "analyze_pocket",
]

def analyze_pocket(polygon: collections.abc.Sequence[tuple[float, float]], holes: collections.abc.Sequence[collections.abc.Sequence[tuple[float, float]]] | None = None, tool_radius: float = 3, tolerance: float = 0.5, min_slot_width: float | None = None) -> list[tuple[list[tuple[float, float]], str, float, list[int]]]:
    r"""
    Analyze a pocket and return classified narrow regions.
    
    Calls ``find_narrow_passages`` with ``max_width = 1.5 × 2 × tool_radius``,
    then classifies each passage as Narrow (toroidal), Slot, or Unreachable
    based on the minimum passage width.  Each entry in the returned list
    is a tuple of ``(polygon, class, min_width, entry_edge_indices)``.
    
    * ``polygon`` — list of ``(x, y)`` vertices of the narrow passage.
    * ``class`` — ``"narrow"``, ``"slot"``, or ``"unreachable"``.
    * ``min_width`` — estimated minimum passage width in mm.
    * ``entry_edge_indices`` — list of vertex indices of entry-side edges.
    
    :param polygon: Outer boundary polygon.
    :param holes: List of hole (island) polygons.
    :param tool_radius: Tool radius in mm.
    :param tolerance: Additional clearance tolerance in mm.
    :param min_slot_width: Minimum passage width for slotting in mm.
        Defaults to ``2 × tool_radius`` (tool diameter) when ``None``.
    :returns: List of ``(polygon, class, min_width, entry_edge_indices)`` tuples.
    :raises RuntimeError: If the polygon cannot be analyzed.
    """

