from ..util import ztyping as ztyping
from ..util.container import convert_to_container as convert_to_container
from ..util.exception import SpaceIncompatibleError as SpaceIncompatibleError
from collections.abc import Iterable
from zfit._interfaces import ZfitDimensional as ZfitDimensional

class BaseDimensional(ZfitDimensional):
    @classmethod
    def __init_subclass__(cls, **kwargs) -> None: ...
    @property
    def obs(self) -> ztyping.ObsTypeReturn: ...
    @property
    def axes(self) -> ztyping.AxesTypeReturn: ...
    @property
    def n_obs(self) -> int: ...

def get_same_obs(obs): ...
def limits_overlap(spaces: ztyping.SpaceOrSpacesTypeInput, allow_exact_match: bool = False) -> bool: ...
def common_obs(spaces: ztyping.SpaceOrSpacesTypeInput) -> list[str] | bool: ...
def common_axes(spaces: ztyping.SpaceOrSpacesTypeInput) -> list[str] | bool: ...
def obs_subsets(dimensionals: Iterable[ZfitDimensional]) -> dict[set[str], ZfitDimensional]: ...
