def METHOD_NAME(cls, geom: BaseGeometry,
                vertices_offset: int, faces_offset: int) -> tuple[THybridGeometry,
                                                                  np.ndarray[tuple[int, Literal[2]], np.uint32],
                                                                  np.ndarray[tuple[int, Literal[3]], np.uint32]]:
    """
    Create by triangulating a polygon and adding the resulting facets to the total list.
    """
    if isinstance(geom, (LineString, MultiLineString, Point)):
        return HybridGeometry(geom, tuple()), np.empty((0, 2), dtype=np.int32), np.empty((0, 3), dtype=np.uint32)
    geom: Polygon | MultiPolygon | GeometryCollection
    vertices: deque = deque()
    faces: deque = deque()
    faces_i: deque = deque()
    for subgeom in assert_multipolygon(geom):
        new_vertices, new_faces = triangulate_polygon(subgeom)
        new_faces += vertices_offset
        vertices.append(new_vertices)
        faces.append(new_faces)
        faces_i.append(set(range(faces_offset, faces_offset+new_faces.shape[0])))
        vertices_offset += new_vertices.shape[0]
        faces_offset += new_faces.shape[0]
    if not vertices:
        return HybridGeometry(geom, tuple()), np.empty((0, 2), dtype=np.int32), np.empty((0, 3), dtype=np.uint32)
    vertices: np.ndarray[tuple[int, Literal[2]], np.uint32] = np.vstack(vertices)
    faces: np.ndarray[tuple[int, Literal[3]], np.uint32] = np.vstack(faces)
    return HybridGeometry(geom, tuple(faces_i)), vertices, faces