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

import builtins
import raygeo
import typing
__all__ = [
    "SpiralSpec",
    "generate_spiral",
]

@typing.final
class SpiralSpec:
    r"""
    Parameters for the ``spiral`` assembler.
    """
    @property
    def center(self) -> tuple[builtins.float, builtins.float]: ...
    @property
    def z(self) -> builtins.float: ...
    @property
    def start_radius(self) -> builtins.float: ...
    @property
    def end_radius(self) -> builtins.float: ...
    @property
    def revolutions(self) -> builtins.float: ...
    @property
    def direction(self) -> builtins.str:
        r"""
        ``"CW"`` or ``"CCW"``.
        """
    @property
    def angular_step(self) -> builtins.float: ...
    @property
    def start_angle(self) -> builtins.float: ...
    def __eq__(self, other: builtins.object, /) -> builtins.bool: ...
    def __new__(cls, center: tuple[builtins.float, builtins.float], z: builtins.float, start_radius: builtins.float, end_radius: builtins.float, revolutions: builtins.float, direction: builtins.str = 'CW', angular_step: builtins.float = 0.1, start_angle: builtins.float = 0.0) -> SpiralSpec: ...

def generate_spiral(part: raygeo.ops.part.Part, center: tuple[float, float], z: float, start_radius: float, end_radius: float, revolutions: float, direction: str = 'CW', angular_step: float = 0.1, start_angle: float = 0, state: raygeo.ops.state.State | None = None) -> raygeo.ops.assembly.AssemblyResult:
    r"""
    Generate a flat spiral entry path.
    
    Produces an Archimedean spiral from *start_radius* to *end_radius*
    at constant Z, followed by a smoothing full-circle pass at
    *end_radius*.
    
    :param center: ``(x, y)`` center of the spiral.
    :param z: Cutting Z height.
    :param start_radius: Starting radius in mm.
    :param end_radius: Ending radius in mm.
    :param revolutions: Number of full turns (may be fractional).
    :param direction: ``"CW"`` or ``"CCW"`` (default ``"CW"``).
    :param angular_step: Angular step in radians (default 0.1).
    :param start_angle: Starting angle in radians (default 0.0).
    :param state: Optional machine state to apply before the path.
    :returns: An :class:`AssemblyResult` with the spiral path.
    """

