@callback handle_event(
type :: String.t(),
payload :: term(),
meta :: map(),
state :: term()
) ::
{:ack, term()}
| {:nack, term()}
| {:nack, term(), [{:delay_ms, non_neg_integer()}]}
| {:term, term()}
| {:term, term(), String.t()}
| {:defer, term()}