"""
This type stub file was generated by pyright.
"""

from dataclasses import dataclass
from typing import Callable, Generic, TypeVar

T = TypeVar("T")
W = TypeVar("W")
def add_inner(x: W, y: W) -> W:
    ...

@dataclass
class Writer(Generic[T, W]):
    """Writer Monad"""
    a: T
    w: W
    ...


def bind(f: Callable[[T], Writer[T, W]]) -> Callable[[Writer[T, W]], Writer[T, W]]:
    ...

def map(f: Callable[[T], T]) -> Callable[[Writer[T, W]], Writer[T, W]]:
    ...

def add(f: Callable[[T, T], T]) -> Callable[[Writer[T, W], Writer[T, W]], Writer[T, W]]:
    ...

def compose(*funcs: Callable[[T], Writer[T, W]]) -> Callable[[T], Writer[T, W]]:
    ...

