from typing import Any, Callable, Generator

def identity(x) -> Generator[Any, Any, None]:
    ...

def exhaust(brule) -> Callable[..., Generator[Any, Any, None]]:
    ...

def onaction(brule, fn) -> Callable[..., Generator[Any, Any, None]]:
    ...

def debug(brule, file=...) -> Callable[..., Generator[Any, Any, None]]:
    ...

def multiplex(*brules) -> Callable[..., Generator[Any, Any, None]]:
    ...

def condition(cond, brule) -> Callable[..., Generator[Any, Any, None]]:
    ...

def sfilter(pred, brule) -> Callable[..., Generator[Any, Any, None]]:
    ...

def notempty(brule) -> Callable[..., Generator[Any, Any, None]]:
    ...

def do_one(*brules) -> Callable[..., Generator[Any, Any, None]]:
    ...

def chain(*brules) -> Callable[..., Generator[Any, Any, None]]:
    ...

def yieldify(rl) -> Callable[..., Generator[Any, Any, None]]:
    ...

