@callback handle_batch(batch :: list(), state :: term()) :: term()
@callback handle_init(state :: term()) :: term()