# This file is automatically generated by pyo3_stub_gen
# ruff: noqa: E501, F401, F403, F405
r"""
Flat Archimedean spiral path generation.

Produces a constant-Z spiral from a start radius to an end radius with
configurable direction, revolutions, and angular resolution. Used for
widening after a helical entry (EntryStrategy.Helix expand_to_diameter).
"""

import collections.abc
from raygeo.geo.algo import helix
from raygeo.geo import types
__all__ = [
    "generate_spiral_3d",
]

def generate_spiral_3d(center: tuple[float, float], z: float, start_radius: float, end_radius: float, revolutions: float, direction: helix.HelixDirection, angular_step: float = 0.1, start_angle: float = 0) -> list[tuple[float, float, float]]:
    r"""
    Generate a flat Archimedean spiral at constant Z.
    
    The spiral sweeps linearly from `start_radius` to `end_radius`
    over the requested number of revolutions.
    
    :param center: Center (x, y) of the spiral.
    :param z: Constant Z height of the spiral.
    :param start_radius: Starting radius.
    :param end_radius: Ending radius.
    :param revolutions: Total turns (may be fractional).
    :param direction: CW or CCW revolution.
    :param angular_step: Angular step in radians per vertex (default 0.1).
    :param start_angle: Starting angle in radians, 0 = +X axis (default 0.0).
    :returns: List of (x, y, z) points approximating the spiral.
    :complexity: O(n) time, O(n) space where n = total_angle / angular_step
    """

