apply(module(), Kvasir.Event.t(), state :: term(), (... -> any())) :: :ok | {:ok, state :: term()} | :delete | {:error, atom()}