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

import numpy
import numpy.typing
__all__ = [
    "transform_to_cylinder",
]

def transform_to_cylinder(verts: numpy.typing.NDArray[numpy.float32], diameter: float, colors: numpy.typing.NDArray[numpy.float32] | None = None, degrees_input: bool = False) -> tuple[numpy.typing.NDArray[numpy.float32], numpy.typing.NDArray[numpy.float32] | None, numpy.typing.NDArray[numpy.int32]]:
    r"""
    Transform flat vertex pairs to cylindrical coordinates.
    
    The input has angular values on axis 1 (Y) and linear position
    on axis 0 (X). The output maps to:
        X = linear position along cylinder
        Y = r * sin(theta)
        Z = r * cos(theta)
    
    Line segments are subdivided as needed to follow the cylinder
    surface instead of cutting through the interior.
    
    :param verts: Float32 array of shape (N, 3) with X, Y, Z per vertex.
                  Vertices are in pairs (line segments for GL_LINES).
    :param diameter: Cylinder diameter in mm.
    :param colors: Optional float32 array of shape (N, 4) RGBA colors.
    :param degrees_input: If True, Y values are in degrees and converted
                          directly. If False (default), they are in motor
                          units (mu) and converted via mu_to_degrees.
    :returns: Tuple of (transformed_vertices, expanded_colors, cum_subs).
              cum_subs is a cumulative subdivision count array.
    :complexity: O(N * subdivisions)
    """

