from typing import Any, Callable

from typing_extensions import Self

def _log_fn(arg0: float) -> float: ...
def _exp_fn(arg0: float) -> float: ...
def _sqrt_fn(arg0: float) -> float: ...
def _sq_fn(arg0: float) -> float: ...

class _BaseTransform:
    def forward(self, arg0: float) -> float: ...
    def inverse(self, arg0: float) -> float: ...
    def __copy__(self) -> Self: ...
    def __deepcopy__(self, memo: Any) -> Self: ...

class id(_BaseTransform): ...
class sqrt(_BaseTransform): ...
class log(_BaseTransform): ...

class pow(_BaseTransform):
    def __init__(self, power: float) -> None: ...
    @property
    def power(self) -> float: ...

class func_transform(_BaseTransform):
    def __init__(
        self,
        forward: Callable[[float], float],
        inverse: Callable[[float], float],
        convert: Callable[[float], float],
        name: str,
    ) -> None: ...
