from .base import BaseMesh, BaseMeshPytree, SurfaceWithFacetMap
from .hex import HexMesh, HexMeshPytree, StructuredHexBox, tag_axis_minmax_facets
from .tet import TetMesh, TetMeshPytree, StructuredTetBox, StructuredTetTensorBox
from .predicate import bbox_predicate, plane_predicate, axis_plane_predicate, slab_predicate
from .surface import SurfaceMesh, SurfaceMeshPytree, SurfaceWithElemConn, surface_with_elem_conn
from .supermesh import SurfaceSupermesh, build_surface_supermesh
from .contact_interface import (
    ContactCouplingMatrix,
    assemble_contact_coupling_matrices,
    assemble_contact_onesided_floor,
    map_surface_facets_to_tet_elements,
    map_surface_facets_to_hex_elements,
    assemble_contact_interface_jacobian,
    assemble_contact_interface_residual,
    tri_area,
    tri_quadrature,
    facet_triangles,
    facet_shape_values,
    volume_shape_values_at_points,
    quad_shape_and_local,
    quad9_shape_values,
    hex27_gradN,
)
from .contact import (
    ContactOperators,
    ContactSurfaceSpace,
    ContactSide,
    OneSidedContact,
    OneSidedContactSurfaceSpace,
    OneToManyContactSurfaceSpace,
    assemble_contact_operators,
    assemble_contact_interface_residual,
    assemble_contact_interface_jacobian,
    assemble_contact_coupling_matrices,
    assemble_contact_kkt,
    solve_contact_kkt,
    facet_gap_values,
    active_contact_facets,
)
from .io import load_gmsh_mesh, load_gmsh_hex_mesh, load_gmsh_tet_mesh, make_surface_from_facets

__all__ = [
    "BaseMesh",
    "BaseMeshPytree",
    "SurfaceWithFacetMap",
    "bbox_predicate",
    "plane_predicate",
    "axis_plane_predicate",
    "slab_predicate",
    "HexMesh",
    "HexMeshPytree",
    "StructuredHexBox",
    "tag_axis_minmax_facets",
    "TetMesh",
    "TetMeshPytree",
    "StructuredTetBox",
    "StructuredTetTensorBox",
    "SurfaceMesh",
    "SurfaceMeshPytree",
    "SurfaceWithElemConn",
    "surface_with_elem_conn",
    "SurfaceSupermesh",
    "build_surface_supermesh",
    "ContactCouplingMatrix",
    "assemble_contact_coupling_matrices",
    "assemble_contact_onesided_floor",
    "assemble_contact_interface_residual",
    "assemble_contact_interface_jacobian",
    "map_surface_facets_to_tet_elements",
    "map_surface_facets_to_hex_elements",
    "tri_area",
    "tri_quadrature",
    "facet_triangles",
    "facet_shape_values",
    "volume_shape_values_at_points",
    "quad_shape_and_local",
    "quad9_shape_values",
    "hex27_gradN",
    "ContactSurfaceSpace",
    "ContactSide",
    "ContactOperators",
    "OneSidedContact",
    "OneSidedContactSurfaceSpace",
    "OneToManyContactSurfaceSpace",
    "assemble_contact_operators",
    "assemble_contact_interface_residual",
    "assemble_contact_interface_jacobian",
    "assemble_contact_coupling_matrices",
    "assemble_contact_kkt",
    "solve_contact_kkt",
    "facet_gap_values",
    "active_contact_facets",
    "load_gmsh_mesh",
    "load_gmsh_hex_mesh",
    "load_gmsh_tet_mesh",
    "make_surface_from_facets",
]
