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

class autodock_vina:
    def __init__(self, protein=..., auto_ligand=..., size=..., center=..., exhaustiveness=..., num_modes=..., energy_range=..., seed=..., prefix_dir=..., n_cpu=..., executable=..., autocleanup=..., skip_bad_mols=...) -> None:
        """Autodock Vina docking engine, which extends it's capabilities:
        automatic box (auto-centering on ligand).

        Parameters
        ----------
        protein: oddt.toolkit.Molecule object (default=None)
            Protein object to be used while generating descriptors.

        auto_ligand: oddt.toolkit.Molecule object or string (default=None)
            Ligand use to center the docking box. Either ODDT molecule or
            a file (opened based on extesion and read to ODDT molecule).
            Box is centered on geometric center of molecule.

        size: tuple, shape=[3] (default=(20, 20, 20))
            Dimentions of docking box (in Angstroms)

        center: tuple, shape=[3] (default=(0,0,0))
            The center of docking box in cartesian space.

        exhaustiveness: int (default=8)
            Exhaustiveness parameter of Autodock Vina

        num_modes: int (default=9)
            Number of conformations generated by Autodock Vina. The maximum
            number of docked poses is 9 (due to Autodock Vina limitation).

        energy_range: int (default=3)
            Energy range cutoff for Autodock Vina

        seed: int or None (default=None)
            Random seed for Autodock Vina

        prefix_dir: string (default=/tmp)
            Temporary directory for Autodock Vina files

        executable: string or None (default=None)
            Autodock Vina executable location in the system.
            It's realy necessary if autodetection fails.

        autocleanup: bool (default=True)
            Should the docking engine clean up after execution?

        skip_bad_mols: bool (default=True)
            Should molecules that crash Autodock Vina be skipped.
        """
        ...
    
    @property
    def tmp_dir(self): # -> str:
        ...
    
    @tmp_dir.setter
    def tmp_dir(self, value): # -> None:
        ...
    
    def set_protein(self, protein): # -> None:
        """Change protein to dock to.

        Parameters
        ----------
        protein: oddt.toolkit.Molecule object
            Protein object to be used.
        """
        ...
    
    def score(self, ligands, protein=...): # -> list[Unknown]:
        """Automated scoring procedure.

        Parameters
        ----------
        ligands: iterable of oddt.toolkit.Molecule objects
            Ligands to score

        protein: oddt.toolkit.Molecule object or None
            Protein object to be used. If None, then the default
            one is used, else the protein is new default.

        Returns
        -------
        ligands : array of oddt.toolkit.Molecule objects
            Array of ligands (scores are stored in mol.data method)
        """
        ...
    
    def dock(self, ligands, protein=...): # -> list[Unknown]:
        """Automated docking procedure.

        Parameters
        ----------
        ligands: iterable of oddt.toolkit.Molecule objects
            Ligands to dock

        protein: oddt.toolkit.Molecule object or None
            Protein object to be used. If None, then the default one
            is used, else the protein is new default.

        Returns
        -------
        ligands : array of oddt.toolkit.Molecule objects
            Array of ligands (scores are stored in mol.data method)
        """
        ...
    
    def clean(self): # -> None:
        ...
    
    def predict_ligand(self, ligand):
        """Local method to score one ligand and update it's scores.

        Parameters
        ----------
        ligand: oddt.toolkit.Molecule object
            Ligand to be scored

        Returns
        -------
        ligand: oddt.toolkit.Molecule object
            Scored ligand with updated scores
        """
        ...
    
    def predict_ligands(self, ligands): # -> list[Unknown]:
        """Method to score ligands lazily

        Parameters
        ----------
        ligands: iterable of oddt.toolkit.Molecule objects
            Ligands to be scored

        Returns
        -------
        ligand: iterator of oddt.toolkit.Molecule objects
            Scored ligands with updated scores
        """
        ...
    


def write_vina_pdbqt(mol, directory, flexible=..., name_id=...): # -> str:
    """Write single PDBQT molecule to a given directory. For proteins use
    `flexible=False` to avoid encoding torsions. Additionally an name ID can
    be appended to a name to avoid conflicts.
    """
    ...

def parse_vina_scoring_output(output): # -> dict[Unknown, Unknown]:
    """Function parsing Autodock Vina scoring output to a dictionary

    Parameters
    ----------
    output : string
        Autodock Vina standard ouptud (STDOUT).

    Returns
    -------
    out : dict
        dicitionary containing scores computed by Autodock Vina
    """
    ...

def parse_vina_docking_output(output): # -> list[Unknown]:
    """Function parsing Autodock Vina docking output to a dictionary

    Parameters
    ----------
    output : string
        Autodock Vina standard ouptud (STDOUT).

    Returns
    -------
    out : dict
        dicitionary containing scores computed by Autodock Vina
    """
    ...

