from collections.abc import Callable

class Hookable:
    def __init__(self) -> None: ...
    def register_hook(self, hook_type: str, hook: Callable[..., None]) -> None: ...
    def execute_hook(self, hook_type: str, *args, **kwargs) -> None: ...

def hooked(func=None, before: str | None = None, after: str | None = None): ...
