@callback handle_batch(batch_stream :: Enumerable.t(), state :: term()) :: term()
@callback handle_hibernate(state :: term()) :: term()
@callback handle_init(state :: term()) :: term()