/**
 * Perform a 2-3 flip on two tetrahedra that share a face.
 *
 * Input two tets t1, t2 sharing a triangle face. The flip removes that face
 * and replaces it with a new edge connecting the two "apex" vertices (the
 * vertex of each tet that's NOT on the shared face). The shared bipyramid is
 * re-tetrahedralised into three new tets, each containing the new edge plus
 * one edge of the original shared face.
 *
 * Counts go from (2 tets, 5 vertices total, 1 internal face) to (3 tets, 5
 * vertices, 3 internal faces). No vertex IDs change; the operation is purely
 * topological — it doesn't touch the points array.
 *
 * Geometric validity (positive volume of each new tet under any specific
 * embedding) is the caller's responsibility. The flip preserves orientation
 * — if t1 was positively wound the new tets are too — but the new edge
 * (d, e) must actually lie inside the convex region formed by the original
 * two tets for the result to be a valid embedding. Outside Delaunay /
 * constraint-recovery contexts this is the caller's domain knowledge.
 *
 * Implementation notes:
 *   - t1's storage slot is reused for one of the new tets ("T_alpha")
 *   - t2's slot for another ("T_beta")
 *   - one fresh slot is allocated for the third ("T_gamma")
 *   - all four external neighbour back-pointers around each of t1 and t2
 *     are rewritten to point at the right new tet/slot
 *
 * @param {TetrahedralMesh} mesh
 * @param {number} t1
 * @param {number} t2 must share a face with t1
 * @param {Uint32Array|number[]} out output storage; out[0..2] receive the 3
 *        new tet IDs. Caller provides — the function performs no allocation.
 *        Must have length ≥ 3.
 */
export function tetrahedral_mesh_flip_23(mesh: TetrahedralMesh, t1: number, t2: number, out: Uint32Array | number[]): void;
//# sourceMappingURL=tetrahedral_mesh_flip_23.d.ts.map