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


def HHV_modified_Dulong(mass_fractions: Dict[str, float]) -> float: ...


def HHV_stoichiometry(
    stoichiometry: Dict[str, float],
    Hf: float,
    Hf_chemicals: Optional[Dict[str, float]] = ...
) -> float: ...


def LHV_from_HHV(HHV: float, N_H2O: float) -> float: ...


def air_fuel_ratio_solver(
    ratio: Optional[float],
    Vm_air: float,
    Vm_fuel: float,
    MW_air: float,
    MW_fuel: float,
    n_air: Optional[float] = ...,
    n_fuel: Optional[float] = ...,
    basis: str = ...
) -> Tuple[float, float, float, float, float]: ...


def as_atoms(
    formula: Union[str, Dict[str, int], Dict[str, float], Dict[str, float]]
) -> Dict[str, float]: ...


def combustion_data(
    formula: Union[str, Dict[str, int], Dict[str, float], Dict[str, float]],
    Hf: Optional[float] = ...,
    MW: None = ...,
    method: Optional[str] = ...
) -> CombustionData: ...


def combustion_products_mixture(
    atoms_list: List[Dict[str, int]],
    zs: List[float],
    reactivities: Optional[List[bool]] = ...,
    CASs: Optional[List[str]] = ...,
    missing_handling: str = ...,
    combustion_stoichiometries: None = ...
) -> Dict[str, float]: ...


def combustion_products_to_list(products: Dict[str, float], CASs: List[str]) -> List[float]: ...


def combustion_spec_solver(
    zs_air: List[float],
    zs_fuel: List[float],
    zs_third: List[float],
    CASs: List[str],
    atomss: List[Dict[str, int]],
    n_third: float,
    n_fuel: Optional[float] = ...,
    n_air: Optional[float] = ...,
    n_out: Optional[float] = ...,
    O2_excess: Optional[float] = ...,
    frac_out_O2: Optional[float] = ...,
    frac_out_O2_dry: Optional[float] = ...,
    ratio: Optional[float] = ...,
    Vm_air: Optional[float] = ...,
    Vm_fuel: Optional[float] = ...,
    Vm_third: Optional[float] = ...,
    MW_air: Optional[float] = ...,
    MW_fuel: Optional[float] = ...,
    MW_third: Optional[float] = ...,
    ratio_basis: str = ...,
    reactivities: Optional[List[bool]] = ...,
    combustion_stoichiometries: None = ...
) -> Dict[str, Union[float, List[float]]]: ...


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


def fuel_air_spec_solver(
    zs_air: List[float],
    zs_fuel: List[float],
    CASs: List[str],
    atomss: List[Dict[str, int]],
    n_fuel: Optional[float] = ...,
    n_air: Optional[float] = ...,
    n_out: Optional[float] = ...,
    O2_excess: Optional[float] = ...,
    frac_out_O2: Optional[float] = ...,
    frac_out_O2_dry: Optional[float] = ...,
    ratio: Optional[float] = ...,
    Vm_air: Optional[float] = ...,
    Vm_fuel: Optional[float] = ...,
    MW_air: Optional[float] = ...,
    MW_fuel: Optional[float] = ...,
    ratio_basis: str = ...,
    reactivities: Optional[List[bool]] = ...,
    combustion_stoichiometries: None = ...
) -> Dict[str, Union[float, List[float]]]: ...


def fuel_air_third_spec_solver(
    zs_air: List[float],
    zs_fuel: List[float],
    zs_third: List[float],
    CASs: List[str],
    atomss: List[Dict[str, int]],
    n_third: float,
    n_fuel: Optional[float] = ...,
    n_air: Optional[float] = ...,
    n_out: Optional[float] = ...,
    O2_excess: Optional[float] = ...,
    frac_out_O2: Optional[float] = ...,
    frac_out_O2_dry: Optional[float] = ...,
    ratio: Optional[float] = ...,
    Vm_air: Optional[float] = ...,
    Vm_fuel: Optional[float] = ...,
    Vm_third: Optional[float] = ...,
    MW_air: Optional[float] = ...,
    MW_fuel: Optional[float] = ...,
    MW_third: Optional[float] = ...,
    ratio_basis: str = ...,
    reactivities: Optional[List[bool]] = ...,
    combustion_stoichiometries: None = ...
) -> Dict[str, Union[float, List[float]]]: ...


def is_combustible(CAS: str, atoms: Dict[str, int], reactive: bool = ...) -> bool: ...


class CombustionData:
    @property
    def LHV(self) -> float: ...
    def __init__(
        self,
        stoichiometry: Dict[str, float],
        HHV: float,
        Hf: float,
        MW: float
    ) -> None: ...

__all__: List[str]