from _typeshed import Incomplete

def _CheckCombArgument(n: int, k: int) -> None: ...

nPointDistDict: Incomplete
nDistPointDict: Incomplete
_trianglesInPharmacophore: Incomplete

def GetTriangles(nPts): ...
def BinsTriangleInequality(d1, d2, d3): ...
def ScaffoldPasses(combo, bins: Incomplete | None = ...): ...

_numCombDict: Incomplete

def NumCombinations(nItems, nSlots): ...

_verbose: int
_countCache: Incomplete

def CountUpTo(nItems, nSlots, vs, idx: int = ..., startAt: int = ...): ...

_indexCombinations: Incomplete

def GetIndexCombinations(nItems, nSlots, slot: int = ..., lastItemVal: int = ...): ...
def GetAllCombinations(choices, noDups: int = ..., which: int = ...): ...
def GetUniqueCombinations(choices, classes, which: int = ...): ...
def GetUniqueCombinations_new(choices, classes, which: int = ...): ...
def UniquifyCombinations(combos): ...
def GetPossibleScaffolds(nPts, bins, useTriangleInequality: bool = ...): ...
def OrderTriangle(featIndices, dists): ...
def _runDoctests(verbose: Incomplete | None = ...) -> None: ...
