"""
This type stub file was generated by pyright.
"""

import rdkit
from __future__ import absolute_import, print_function
from math import isinf, isnan
from itertools import combinations
from rdkit import Chem
from rdkit.Chem import AllChem

METALS = ...
def PathFromAtomList(mol, amap): # -> list[Unknown]:
    ...

def AtomListToSubMol(mol, amap, includeConformer=...):
    """
    Parameters
    ----------
        mol: rdkit.Chem.rdchem.Mol
            Molecule
        amap: array-like
            List of atom indices (zero-based)
        includeConformer: bool (default=True)
            Toogle to include atoms coordinates in submolecule.

    Returns
    -------
        submol: rdkit.Chem.rdchem.RWMol
            Submol determined by specified atom list
    """
    ...

def MolFromPDBBlock(molBlock, sanitize=..., removeHs=..., flavor=...): # -> Mol | None:
    ...

def MolFromPDBQTBlock(block, sanitize=..., removeHs=...):
    """Read PDBQT block to a RDKit Molecule

    Parameters
    ----------
        block: string
            Residue name which explicitly pint to a ligand(s).
        sanitize: bool (default=True)
            Should the sanitization be performed
        removeHs: bool (default=True)
            Should hydrogens be removed when reading molecule.

    Returns
    -------
        mol: rdkit.Chem.rdchem.Mol
            Molecule read from PDBQT
    """
    ...

def PDBQTAtomLines(mol, donors, acceptors): # -> list[Unknown]:
    """Create a list with PDBQT atom lines for each atom in molecule. Donors
    and acceptors are given as a list of atom indices.
    """
    ...

def MolToPDBQTBlock(mol, flexible=..., addHs=..., computeCharges=...): # -> str:
    """Write RDKit Molecule to a PDBQT block

    Parameters
    ----------
        mol: rdkit.Chem.rdchem.Mol
            Molecule with a protein ligand complex
        flexible: bool (default=True)
            Should the molecule encode torsions. Ligands should be flexible,
            proteins in turn can be rigid.
        addHs: bool (default=False)
            The PDBQT format requires at least polar Hs on donors. By default Hs
            are added.
        computeCharges: bool (default=False)
            Should the partial charges be automatically computed. If the Hs are
            added the charges must and will be recomputed. If there are no
            partial charge information, they are set to 0.0.

    Returns
    -------
        block: str
            String wit PDBQT encoded molecule
    """
    ...

