# DO NOT EDIT - AUTOMATICALLY GENERATED BY tests/make_test_stubs.py!
from __future__ import annotations
from typing import List
from datetime import datetime
from typing import (
    Callable,
    List,
    Optional,
    Tuple,
)


def H_for_P_ATMOSPHERE_1976_err(H: float, P1: float) -> float: ...


def _get_extra_radiation_shim(
    datetime_or_doy: int,
    solar_constant: float = ...,
    method: str = ...,
    epoch_year: int = ...,
    **kwargs
) -> float: ...


def airmass(
    func: Callable,
    angle: float,
    H_max: float = ...,
    R_planet: float = ...,
    RI: float = ...
) -> float: ...


def earthsun_distance(moment: datetime) -> float: ...


def hwm14(
    Z: float,
    latitude: float = ...,
    longitude: float = ...,
    day: float = ...,
    seconds: float = ...,
    geomagnetic_disturbance_index: float = ...
) -> Tuple[float, float]: ...


def hwm93(
    Z: float,
    latitude: float = ...,
    longitude: float = ...,
    day: float = ...,
    seconds: float = ...,
    f107: float = ...,
    f107_avg: float = ...,
    geomagnetic_disturbance_index: float = ...
) -> Tuple[float, float]: ...


def solar_irradiation(
    latitude: float,
    longitude: float,
    Z: float,
    moment: datetime,
    surface_tilt: float,
    surface_azimuth: float,
    T: None = ...,
    P: None = ...,
    solar_constant: float = ...,
    atmos_refract: float = ...,
    albedo: float = ...,
    linke_turbidity: Optional[int] = ...,
    extraradiation_method: str = ...,
    airmass_model: str = ...,
    cache: None = ...
) -> Tuple[float, float, float, float, float]: ...


def solar_position(
    moment: datetime,
    latitude: float,
    longitude: float,
    Z: float = ...,
    T: float = ...,
    P: float = ...,
    atmos_refract: float = ...
) -> List[float]: ...


def sunrise_sunset(
    moment: datetime,
    latitude: float,
    longitude: float
) -> Tuple[datetime, datetime, datetime]: ...


def to_int_airmass(Z: float, c1: float, c2: float, angle_term: float, R_planet_inv: float, func: Callable) -> float: ...


def to_int_dP_ATMOSPHERE_1976(Z: float, dT: float) -> float: ...


class ATMOSPHERE_1976:
    def __init__(self, Z: float, dT: float = ...) -> None: ...
    @staticmethod
    def _get_ind_from_H(H: float) -> int: ...
    @staticmethod
    def density(T: float, P: float) -> float: ...
    @staticmethod
    def gravity(Z: float) -> float: ...
    @staticmethod
    def pressure_integral(T1: float, P1: float, dH: float) -> float: ...
    @staticmethod
    def sonic_velocity(T: float) -> float: ...
    @staticmethod
    def thermal_conductivity(T: float) -> float: ...
    @staticmethod
    def viscosity(T: float) -> float: ...


class ATMOSPHERE_NRLMSISE00:
    def __init__(
        self,
        Z: float,
        latitude: float = ...,
        longitude: float = ...,
        day: int = ...,
        seconds: float = ...,
        f107: float = ...,
        f107_avg: float = ...,
        geomagnetic_disturbance_indices: None = ...
    ) -> None: ...

__all__: List[str]