from typing import Any, ClassVar

from typing import overload

class AllowedAtomsValidation:
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def validate(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class ChargeCorrection:
    __instance_size__: ClassVar[int] = ...
    Charge: Any
    Name: Any
    Smarts: Any
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class CleanupParameters:
    __instance_size__: ClassVar[int] = ...
    acidbaseFile: Any
    doCanonical: Any
    fragmentFile: Any
    largestFragmentChooserCountHeavyAtomsOnly: Any
    largestFragmentChooserUseAtomCount: Any
    maxRestarts: Any
    maxTautomers: Any
    maxTransforms: Any
    normalizationsFile: Any
    preferOrganic: Any
    tautomerReassignStereo: Any
    tautomerRemoveBondStereo: Any
    tautomerRemoveIsotopicHs: Any
    tautomerRemoveSp3Stereo: Any
    tautomerTransformsFile: Any
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class DisallowedAtomsValidation:
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def validate(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class FragmentRemover:
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def remove(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class FragmentValidation(MolVSValidations):
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def run(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class IsotopeValidation(MolVSValidations):
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def run(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class LargestFragmentChooser:
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def choose(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class MetalDisconnector:
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def Disconnect(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def SetMetalNof(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def SetMetalNon(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...
    @property
    def MetalNof(self) -> Any: ...
    @property
    def MetalNon(self) -> Any: ...

class MolVSValidation:
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def validate(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class MolVSValidations:
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def run(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class NeutralValidation(MolVSValidations):
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def run(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class NoAtomValidation(MolVSValidations):
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def run(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class Normalizer:
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def normalize(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class RDKitValidation:
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def validate(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class Reionizer:
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def reionize(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class SmilesTautomerMap:
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def items(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def keys(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def values(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __contains__(cls, other) -> Any: ...
    @classmethod
    def __delitem__(cls, other) -> Any: ...
    @classmethod
    def __getitem__(cls, index) -> Any: ...
    @classmethod
    def __iter__(cls) -> Any: ...
    @classmethod
    def __len__(cls) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...
    @classmethod
    def __setitem__(cls, index, object) -> Any: ...

class Tautomer:
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def __reduce__(cls) -> Any: ...
    @property
    def kekulized(self) -> Any: ...
    @property
    def tautomer(self) -> Any: ...

class TautomerEnumerator:
    @overload
    def __init__(self): ...
    @overload
    def __init__(self, RDKit): ...
    @classmethod
    def Canonicalize(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def Enumerate(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def GetCallback(cls, RDKit) -> Any: ...
    @classmethod
    def GetMaxTautomers(cls, RDKit) -> Any: ...
    @classmethod
    def GetMaxTransforms(cls, RDKit) -> Any: ...
    @classmethod
    def GetReassignStereo(cls, RDKit) -> Any: ...
    @classmethod
    def GetRemoveBondStereo(cls, RDKit) -> Any: ...
    @classmethod
    def GetRemoveSp3Stereo(cls, RDKit) -> Any: ...
    @classmethod
    def PickCanonical(cls, RDKit, boost) -> Any: ...
    def ScoreTautomer(self, *args, **kwargs) -> Any: ...
    @classmethod
    def SetCallback(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def SetMaxTautomers(cls, RDKit, unsignedint) -> Any: ...
    @classmethod
    def SetMaxTransforms(cls, RDKit, unsignedint) -> Any: ...
    @classmethod
    def SetReassignStereo(cls, RDKit, bool) -> Any: ...
    @classmethod
    def SetRemoveBondStereo(cls, RDKit, bool) -> Any: ...
    @classmethod
    def SetRemoveSp3Stereo(cls, RDKit, bool) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...
    @property
    def tautomerScoreVersion(self) -> Any: ...

class TautomerEnumeratorCallback:
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def __call__(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class TautomerEnumeratorResult:
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def __call__(cls, Any) -> Any: ...
    @classmethod
    def __getitem__(cls, Any, int) -> Any: ...
    @classmethod
    def __iter__(cls, boost) -> Any: ...
    @classmethod
    def __len__(cls, Any) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...
    @property
    def modifiedAtoms(self) -> Any: ...
    @property
    def modifiedBonds(self) -> Any: ...
    @property
    def smiles(self) -> Any: ...
    @property
    def smilesTautomerMap(self) -> Any: ...
    @property
    def status(self) -> Any: ...
    @property
    def tautomers(self) -> Any: ...

class TautomerEnumeratorStatus:
    Canceled: ClassVar[TautomerEnumeratorStatus] = ...
    Completed: ClassVar[TautomerEnumeratorStatus] = ...
    MaxTautomersReached: ClassVar[TautomerEnumeratorStatus] = ...
    MaxTransformsReached: ClassVar[TautomerEnumeratorStatus] = ...
    names: ClassVar[dict] = ...
    values: ClassVar[dict] = ...
    __slots__: ClassVar[tuple] = ...

class Uncharger:
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def uncharge(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class map_indexing_suite_SmilesTautomerMap_entry:
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def data(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def key(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

def CHARGE_CORRECTIONS() -> Any: ...
def CanonicalTautomer(RDKit) -> Any: ...
def ChargeParent(RDKit) -> Any: ...
def Cleanup(RDKit) -> Any: ...
def FragmentParent(RDKit) -> Any: ...
def FragmentRemoverFromData(*args, **kwargs) -> Any: ...
def GetV1TautomerEnumerator() -> Any: ...
def IsotopeParent(RDKit) -> Any: ...
def Normalize(RDKit) -> Any: ...
def NormalizerFromData(*args, **kwargs) -> Any: ...
def NormalizerFromParams(RDKit) -> Any: ...
def Reionize(RDKit) -> Any: ...
def ReionizerFromData(*args, **kwargs) -> Any: ...
def RemoveFragments(RDKit) -> Any: ...
def StandardizeSmiles(*args, **kwargs) -> Any: ...
def StereoParent(RDKit) -> Any: ...
def SuperParent(RDKit) -> Any: ...
def TautomerParent(RDKit) -> Any: ...
def UpdateParamsFromJSON(*args, **kwargs) -> Any: ...
def ValidateSmiles(*args, **kwargs) -> Any: ...
