from _typeshed import Incomplete
from rdkit import Geometry as Geometry
from rdkit.Chem import ChemicalFeatures as ChemicalFeatures
from rdkit.RDLogger import logger as logger

class Pharmacophore:
    _boundsMat: Incomplete
    _boundsMat2D: Incomplete
    def __init__(self, feats, initMats: bool = ...) -> None: ...
    _feats: Incomplete
    def _initializeFeats(self, feats) -> None: ...
    def _initializeMatrices(self) -> None: ...
    def getFeatures(self): ...
    def getFeature(self, i): ...
    def getUpperBound(self, i, j): ...
    def getLowerBound(self, i, j): ...
    def _checkBounds(self, i, j): ...
    def setUpperBound(self, i, j, val, checkBounds: bool = ...) -> None: ...
    def setLowerBound(self, i, j, val, checkBounds: bool = ...) -> None: ...
    def getUpperBound2D(self, i, j): ...
    def getLowerBound2D(self, i, j): ...
    def setUpperBound2D(self, i, j, val, checkBounds: bool = ...) -> None: ...
    def setLowerBound2D(self, i, j, val, checkBounds: bool = ...) -> None: ...
    def __str__(self): ...

class ExplicitPharmacophore:
    def __init__(
        self, feats: Incomplete | None = ..., radii: Incomplete | None = ...
    ) -> None: ...
    _feats: Incomplete
    _radii: Incomplete
    def _initializeFeats(self, feats, radii) -> None: ...
    def getFeatures(self): ...
    def getRadii(self): ...
    def getFeature(self, i): ...
    def getRadius(self, i): ...
    def setRadius(self, i, rad) -> None: ...
    def initFromString(self, text) -> None: ...
    def initFromFile(self, inF) -> None: ...
    def initFromLines(self, lines) -> None: ...
    def __str__(self): ...
