# DO NOT EDIT - AUTOMATICALLY GENERATED BY tests/make_test_stubs.py!
from typing import List
from typing import (
    Dict,
    List,
    Optional,
    Tuple,
    Union,
)


def atom_fractions(atoms: Dict[str, int]) -> Dict[str, float]: ...


def atom_matrix(
    atomss: List[Dict[str, int]],
    atom_IDs: Optional[List[str]] = ...
) -> Union[List[Union[List[float], List[float]]], List[List[float]]]: ...


def atoms_to_Hill(atoms: Dict[str, int]) -> str: ...


def charge_from_formula(formula: str) -> int: ...


def mass_fractions(atoms: Dict[str, int], MW: Optional[int] = ...) -> Dict[str, float]: ...


def mixture_atomic_composition(atomss: List[Dict[str, int]], zs: List[float]) -> Dict[str, float]: ...


def mixture_atomic_composition_ordered(atomss: List[Dict[str, int]], zs: List[float]) -> Tuple[List[float], List[str]]: ...


def molecular_weight(atoms: Dict[str, int]) -> float: ...


def nested_formula_parser(formula: str, check: bool = ...) -> Dict[str, float]: ...


def serialize_formula(formula: str) -> str: ...


def similarity_variable(atoms: Dict[str, int], MW: Optional[float] = ...) -> float: ...


def simple_formula_parser(formula: str) -> Dict[str, float]: ...


class Element:
    @property
    def CAS_standard(self) -> str: ...
    @property
    def InChI(self) -> str: ...
    def __init__(
        self,
        number: int,
        symbol: str,
        name: str,
        MW: float,
        CAS: str,
        AReneg: Optional[float],
        rcov: Optional[float],
        rvdw: Optional[float],
        maxbonds: Optional[int],
        elneg: Optional[float],
        ionization: Optional[float],
        elaffinity: Optional[float],
        period: int,
        group: Optional[int],
        PubChem: Optional[int],
        phase: str,
        Hf: Optional[float],
        S0: Optional[float],
        InChI_key: Optional[str] = ...
    ) -> None: ...
    def __repr__(self) -> str: ...
    @property
    def block(self) -> str: ...
    @property
    def electrons(self) -> int: ...
    @property
    def protons(self) -> int: ...
    @property
    def smiles(self) -> str: ...


class PeriodicTable:
    def __contains__(self, key: str) -> bool: ...
    def __getattr__(self, key: str) -> Element: ...
    def __getitem__(self, key: Union[str, int]) -> Element: ...
    def __init__(self, elements: List[Element]) -> None: ...
    def __len__(self) -> int: ...

__all__: List[str]