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

import collections.abc
from raygeo.mesh import types
__all__ = [
    "build_triangle_mesh",
    "build_uniform_mesh",
]

def build_triangle_mesh(outer: collections.abc.Sequence[tuple[float, float]], holes: collections.abc.Sequence[collections.abc.Sequence[tuple[float, float]]] = (), tool_radius: float = 0, min_angle: float = 20) -> types.TriangleMesh:
    r"""
    Build a constrained Delaunay triangle mesh from polygon boundaries.
    
    :param outer: Outer boundary polygon vertices as (x, y) tuples.
    :param holes: Sequence of hole/island polygons.
    :param tool_radius: Tool radius for offsetting the outer boundary inwards.
    :param min_angle: Minimum triangle angle for Steiner point refinement.
    :returns: TriangleMesh with boundary tags.
    :complexity: O(n log n) where n = number of Steiner points
    """

def build_uniform_mesh(outer: collections.abc.Sequence[tuple[float, float]], holes: collections.abc.Sequence[collections.abc.Sequence[tuple[float, float]]] = (), tool_radius: float = 0, target_edge_len: float = 1) -> types.TriangleMesh:
    r"""
    Build a triangle mesh with approximately uniform edge length.
    
    Computes the Steiner point density needed to achieve
    *target_edge_len* and delegates to ``build_triangle_mesh``.
    
    :param outer: Outer boundary polygon.
    :param holes: List of hole/island polygons.
    :param tool_radius: Offsets outer boundary inward.
    :param target_edge_len: Desired edge length.
    :returns: TriangleMesh with uniform-sized elements.
    :complexity: O(n log n) where n = number of Steiner points
    """

