from __future__ import annotations

from typing import Any, Optional

from ...tensor import manipulation as manipulation
from ...tensor import math as math
from .. import Layer as Layer

class FloatFunctionalLayer(Layer):
    def __init__(self) -> None: ...

class add(FloatFunctionalLayer):
    def __init__(self) -> None: ...
    def forward(self, x: Any, y: Any, name: Optional[Any] = ...): ...

class subtract(FloatFunctionalLayer):
    def __init__(self) -> None: ...
    def forward(self, x: Any, y: Any, name: Optional[Any] = ...): ...

class multiply(FloatFunctionalLayer):
    def __init__(self) -> None: ...
    def forward(self, x: Any, y: Any, name: Optional[Any] = ...): ...

class divide(FloatFunctionalLayer):
    def __init__(self) -> None: ...
    def forward(self, x: Any, y: Any, name: Optional[Any] = ...): ...

class reshape(FloatFunctionalLayer):
    def __init__(self) -> None: ...
    def forward(self, x: Any, shape: Any, name: Optional[Any] = ...): ...

class transpose(FloatFunctionalLayer):
    def __init__(self) -> None: ...
    def forward(self, x: Any, perm: Any, name: Optional[Any] = ...): ...

class concat(FloatFunctionalLayer):
    def __init__(self) -> None: ...
    def forward(self, x: Any, axis: int = ..., name: Optional[Any] = ...): ...

class flatten(FloatFunctionalLayer):
    def __init__(self) -> None: ...
    def forward(self, x: Any, start_axis: int = ..., stop_axis: int = ..., name: Optional[Any] = ...): ...
