-type filter() :: all | {name, atom() | binary()} | {pattern, binary()}.
-spec notify(term()) -> ok.
-spec subscribe(pid()) -> ok.
-spec subscribe(pid(), filter()) -> ok.
-spec unsubscribe(pid()) -> ok.