from _typeshed import Incomplete
import ntpath
from ase.cell import Cell as Cell
from ase.geometry import complete_cell as complete_cell
from ase.geometry.minkowski_reduction import minkowski_reduce as minkowski_reduce
from ase.utils import pbc2pbc as pbc2pbc
import numpy.typing as npt

def translate_pretty(fractional, pbc): ...
def wrap_positions(positions, cell, pbc: bool | npt.ArrayLike[bool] = ..., center: ntpath.ArrayLike[float]=..., pretty_translation: bool = ..., eps: float = ...): ...
def get_layers(atoms, miller, tolerance: float = ...): ...
def naive_find_mic(v, cell): ...
def general_find_mic(v, cell, pbc: bool = ...): ...
def find_mic(v, cell, pbc: bool = ...): ...
def conditional_find_mic(vectors, cell, pbc): ...
def get_angles(v0, v1, cell: Incomplete | None = ..., pbc: Incomplete | None = ...): ...
def get_angles_derivatives(v0, v1, cell: Incomplete | None = ..., pbc: Incomplete | None = ...): ...
def get_dihedrals(v0, v1, v2, cell: Incomplete | None = ..., pbc: Incomplete | None = ...): ...
def get_dihedrals_derivatives(v0, v1, v2, cell: Incomplete | None = ..., pbc: Incomplete | None = ...): ...
def get_distances(p1, p2: Incomplete | None = ..., cell: Incomplete | None = ..., pbc: Incomplete | None = ...): ...
def get_distances_derivatives(v0, cell: Incomplete | None = ..., pbc: Incomplete | None = ...): ...
def get_duplicate_atoms(atoms, cutoff: float = ..., delete: bool = ...): ...
def permute_axes(atoms, permutation): ...
