from typing import Any, Type, overload

from pandera.typing import DataFrame

from .variables import _SCHEMA, _T, DFVar, SVar

@overload
def sconsume(var: SVar[_T], /) -> _T: ...
@overload
def sconsume(var: DFVar[_SCHEMA], /) -> DataFrame[_SCHEMA]: ...
@overload
def sconsume(var: Type[_T], /) -> _T: ...
@overload
def sconsume(var: None = ...) -> Any: ...
@overload
def sproduce(var: SVar[_T], /) -> _T: ...
@overload
def sproduce(var: DFVar[_SCHEMA], /) -> DataFrame[_SCHEMA]: ...
@overload
def sproduce(var: Type[_T], /) -> _T: ...
@overload
def sproduce(var: None = ...) -> Any: ...
@overload
def stransform(var: SVar[_T], /) -> _T: ...
@overload
def stransform(var: DFVar[_SCHEMA], /) -> DataFrame[_SCHEMA]: ...
@overload
def stransform(var: Type[_T], /) -> _T: ...
@overload
def stransform(var: None = ...) -> Any: ...
