# This file is automatically generated by pyo3_stub_gen
# ruff: noqa: E501, F401, F403, F405
r"""
Helical and conical helical path generation.

Provides generation of 3D helical polylines (cylindrical or conical)
with configurable direction (CW/CCW), pitch, and expansion/reduction.
"""

import collections.abc
import enum
from raygeo.geo import types
import typing
__all__ = [
    "HelixDirection",
    "generate_helix_3d",
]

@typing.final
class HelixDirection(enum.Enum):
    Cw = ...
    Ccw = ...

def generate_helix_3d(center: tuple[float, float], start_radius: float, end_radius: float, z_start: float, z_end: float, pitch: float, direction: HelixDirection, angular_step: float = 0.1, min_revolutions: int | None = None) -> list[tuple[float, float, float]]:
    r"""
    Generate a 3D helical polyline.
    
    :param center: Center (x, y) of the helix.
    :param start_radius: Starting radius at z_start.
    :param end_radius: Ending radius at z_end.
    :param z_start: Starting Z height.
    :param z_end: Ending Z height (must be lower than z_start).
    :param pitch: Z descent per full revolution.
    :param direction: CW or CCW revolution.
    :param angular_step: Angular step in radians per vertex (default 0.1).
    :param min_revolutions: Minimum number of revolutions (optional).
    :returns: List of (x, y, z) points approximating the helix.
    :complexity: O(n) time, O(n) space where n = total_angle / angular_step
    """

