#  Copyright (c) yibocat 2025 All Rights Reserved
#  Python: 3.12.7
#  Date: 2025/8/18 18:23
#  Author: yibow
#  Email: yibocat@yeah.net
#  Software: AxisFuzzy

from typing import Union, Tuple, List, Optional, Any, Callable, Dict

from .registry import MixinFunctionRegistry
from ..core import Fuzznum, Fuzzarray

# --- Public Functions ---

def get_registry_mixin() -> MixinFunctionRegistry: ...

# --- Dynamically Injected Top-Level Functions ---
# These signatures should match the ones in the top-level __init__.pyi

def reshape(obj: Union[Fuzznum, Fuzzarray], *shape: int) -> Fuzzarray: ...
def flatten(obj: Union[Fuzznum, Fuzzarray]) -> Fuzzarray: ...
def squeeze(obj: Union[Fuzznum, Fuzzarray],
            axis: Union[int, Tuple[int, ...], None] = ...) -> Union[Fuzznum, Fuzzarray]: ...
def copy(obj: Any) -> Any: ...
def ravel(obj: Union[Fuzznum, Fuzzarray]) -> Fuzzarray: ...
def transpose(obj: Union[Fuzznum, Fuzzarray], *axes) -> Union[Fuzznum, Fuzzarray]: ...
def broadcast_to(obj: Union[Fuzznum, Fuzzarray], *shape: int) -> Fuzzarray: ...
def item(obj: Union[Fuzznum, Fuzzarray], *args) -> Fuzznum: ...
def any(obj: Fuzzarray) -> bool: ...
def all(obj: Fuzzarray) -> bool: ...
def concat(obj: Fuzzarray, *others: Fuzzarray, axis: int = ...) -> Fuzzarray: ...
def stack(obj: Fuzzarray, *others: Fuzzarray, axis: int = ...) -> Fuzzarray: ...
def append(obj: Union[Fuzznum, Fuzzarray],
           item: Union[Fuzznum, Fuzzarray, List[Fuzznum]],
           axis: Optional[int] = ...,
           inplace: bool = ...) -> Union[Fuzzarray, None]: ...
def pop(obj: Fuzzarray, index: int = ..., inplace: bool = ...) -> Union[Fuzznum, Tuple[Fuzznum, Fuzzarray], None]: ...


__all__: List[str]

def apply_mixins(target_module_globals: Dict[str, Any] | None = None) -> bool: ...
