# DO NOT EDIT - AUTOMATICALLY GENERATED BY tests/make_test_stubs.py!
from __future__ import annotations
from typing import List
from numpy import (
    float64,
    ndarray,
)
from typing import (
    List,
    Optional,
    Union,
)


def cdf_Gates_Gaudin_Schuhman(d: float, d_characteristic: float, m: float) -> float: ...


def cdf_Rosin_Rammler(d: float, k: float, m: float) -> float: ...


def cdf_lognormal(d: float, d_characteristic: float, s: float) -> float: ...


def pdf_Gates_Gaudin_Schuhman(d: float, d_characteristic: float, m: float) -> float: ...


def pdf_Gates_Gaudin_Schuhman_basis_integral(d: float, d_characteristic: float, m: float, n: int) -> float: ...


def pdf_Rosin_Rammler(d: float, k: float, m: float) -> float: ...


def pdf_Rosin_Rammler_basis_integral(d: float, k: float, m: float, n: int) -> float: ...


def pdf_lognormal(d: float, d_characteristic: float, s: float) -> float: ...


def pdf_lognormal_basis_integral(d: float, d_characteristic: float, s: float, n: float) -> float: ...


def psd_spacing(
    d_min: Optional[float] = ...,
    d_max: Optional[float] = ...,
    pts: int = ...,
    method: str = ...
) -> List[float]: ...


class PSDInterpolated:
    def __init__(
        self,
        ds: Union[List[float], ndarray, List[float64]],
        fractions: Union[List[float], List[float64]],
        order: int = ...,
        monotonic: bool = ...
    ) -> None: ...
    def _cdf(self, d: Union[int, float64, float]) -> float: ...
    def _pdf(self, d: float) -> float: ...
    def _pdf_basis_integral(self, d: Union[float64, float], n: int) -> float: ...


class PSDLognormal:
    def __init__(
        self,
        d_characteristic: float,
        s: float,
        order: int = ...,
        d_min: Optional[float] = ...,
        d_max: Optional[float] = ...
    ) -> None: ...
    def _cdf(self, d: float) -> float: ...
    def _pdf(self, d: float) -> float: ...
    def _pdf_basis_integral(self, d: float, n: float) -> float: ...


class ParticleSizeDistribution:
    @property
    def Dis(self) -> Union[List[float], List[float64]]: ...
    def __init__(
        self,
        ds: Union[List[float], List[float], ndarray],
        fractions: Union[List[float], List[int]],
        cdf: bool = ...,
        order: int = ...,
        monotonic: bool = ...
    ) -> None: ...
    def _cdf(self, d: Union[int, float64, float]) -> float: ...
    def _pdf(self, d: float) -> float: ...
    def _pdf_basis_integral(self, d: Union[float64, float], n: int) -> float: ...
    def di_power(self, i: int, power: int = ...) -> Union[float64, float]: ...
    @property
    def interpolated(self) -> PSDInterpolated: ...
    def mean_size(self, p: int, q: int) -> Union[float64, float]: ...
    @property
    def vssa(self) -> float: ...


class ParticleSizeDistributionContinuous:
    def _pdf_basis_integral_definite(
        self,
        d_min: Union[float64, float],
        d_max: Union[float64, float],
        n: float
    ) -> float: ...
    def cdf(self, d: Union[int, float64, float], n: Optional[int] = ...) -> float: ...
    def cdf_discrete(self, ds: Union[List[float], ndarray], n: None = ...) -> List[float]: ...
    def dn(self, fraction: Union[int, float64, float], n: None = ...) -> Union[float64, float]: ...
    def ds_discrete(
        self,
        d_min: Optional[float] = ...,
        d_max: Optional[float] = ...,
        pts: int = ...,
        limit: float = ...,
        method: str = ...
    ) -> List[float]: ...
    def fractions_discrete(self, ds: Union[List[float], ndarray], n: None = ...) -> List[float]: ...
    def mean_size(self, p: float, q: float) -> float: ...
    def mean_size_ISO(self, k: int, r: int) -> float: ...
    def pdf(self, d: float, n: Optional[int] = ...) -> float: ...
    @property
    def vssa(self) -> float: ...


class Sieve:
    def __init__(
        self,
        designation: str,
        old_designation: Optional[str] = ...,
        opening: Optional[float] = ...,
        opening_inch: Optional[float] = ...,
        Y_variation_avg: Optional[float] = ...,
        X_variation_max: Optional[float] = ...,
        max_opening: Optional[float] = ...,
        compliance_samples: Optional[float] = ...,
        compliance_sd: Optional[float] = ...,
        inspection_samples: Optional[float] = ...,
        inspection_sd: Optional[float] = ...,
        calibration_samples: Optional[float] = ...,
        calibration_sd: Optional[float] = ...,
        d_wire: Optional[float] = ...,
        d_wire_min: Optional[float] = ...,
        d_wire_max: Optional[float] = ...
    ) -> None: ...

__all__: List[str]