# This file is automatically generated by pyo3_stub_gen
# ruff: noqa: E501, F401, F403, F405
r"""
Type aliases used throughout the raygeo API.

Point — a 2D coordinate as ``(x, y)``.
Point3D — a 3D coordinate as ``(x, y, z)``.
Point2DOr3D — union of Point and Point3D for functions that accept both.
Polygon — a list of points forming a closed shape.
Rect — a bounding rectangle as ``(x_min, y_min, x_max, y_max)``.
TransformMatrix — a 4x4 affine transformation matrix for 2D/3D transforms.
Edge — a pair of points ``((x1, y1), (x2, y2))``.
CubicBezier — four control points ``(p0, p1, p2, p3)``.
"""

import numpy
from raygeo import geo
import typing
from typing import TypeAlias
__all__ = [
    "CubicBezier",
    "Edge",
    "Point",
    "Point2DOr3D",
    "Point3D",
    "Polygon",
    "Polygon3D",
    "Rect",
    "Rect3D",
    "TransformMatrix",
]

CubicBezier: TypeAlias = tuple[tuple[float, float], tuple[float, float], tuple[float, float], tuple[float, float]]
Edge: TypeAlias = tuple[tuple[float, float], tuple[float, float]]
Point: TypeAlias = tuple[float, float]
Point2DOr3D: TypeAlias = Point | Point3D
Point3D: TypeAlias = tuple[float, float, float]
Polygon: TypeAlias = list[Point]
Polygon3D: TypeAlias = list[tuple[float, float, float]]
Rect: TypeAlias = tuple[float, float, float, float]
Rect3D: TypeAlias = tuple[float, float, float, float, float, float]
TransformMatrix: TypeAlias = geo.Matrix | list[list[float]] | numpy.ndarray[tuple[int, ...], typing.Any]
