import typing
import zelll

class CellGrid:
    def __getstate__(self, /) -> typing.Any: ...
    def __iter__(self, /) -> zelll.CellGridIter: ...
    def __new__(cls, particles: typing.Iterable[typing.Sequence[float]] | None = None, /, cutoff: float = 1.0) -> zelll.CellGrid: ...
    def __setstate__(self, /, state: typing.Any) -> typing.Any: ...
    def aabb(self, /) -> tuple[list[float], list[float]]: ...
    def cutoff(self, /) -> float: ...
    def neighbors(self, /, coordinates: typing.Sequence[float]) -> list[tuple[int, list[float]]] | None: ...
    def query_neighbors(self, /, coordinates: typing.Sequence[float]) -> zelll.CellQueryIter | None: ...
    def rebuild(self, particles: typing.Iterable[typing.Sequence[float]], /, cutoff: float | None = None) -> None: ...

class CellGridIter:
    def __iter__(self, /) -> typing.Any: ...
    def __next__(self, /) -> typing.Any: ...

class CellQueryIter:
    def __iter__(self, /) -> typing.Any: ...
    def __next__(self, /) -> typing.Any: ...
