import hist
import zfit_interface as zinterface
from _typeshed import Incomplete
from collections.abc import Iterable
from zfit._interfaces import ZfitBinning as ZfitBinning

class Variable(zinterface.variables.ZfitVar):
    def __init__(self, name) -> None: ...
    @property
    def name(self): ...

class SpaceV2:
    axes: Incomplete
    def __init__(self, axes) -> None: ...
    def __getitem__(self, key): ...
    def __iter__(self): ...
    @property
    def names(self): ...

def to_var_str(value): ...

class Axis(Variable):
    def __init__(self, name) -> None: ...

class UnbinnedAxis(Axis):
    lower: Incomplete
    upper: Incomplete
    def __init__(self, name, lower=None, upper=None) -> None: ...

class HashableAxisMixin:
    def __init__(self, *args, **kwargs) -> None: ...
    def __hash__(self): ...

class RegularBinning(HashableAxisMixin, hist.axis.Regular, ZfitBinning, family='zfit'):
    def __init__(self, bins: int, start: float, stop: float, *, name: str) -> None: ...

class VariableBinning(HashableAxisMixin, hist.axis.Variable, ZfitBinning, family='zfit'):
    def __init__(self, edges: Iterable[float], *, name: str) -> None: ...

class Binnings(hist.axestuple.NamedAxesTuple): ...

HIST_BINNING_TYPES: Incomplete

def histaxis_to_axis(axis): ...
def axis_to_histaxis(axis): ...
def new_from_axis(axis): ...
def histaxes_to_binning(binnings): ...
def binning_to_histaxes(binnings): ...
