@type name() :: atom()
@type value() :: non_neg_integer()
@callback inc(name()) :: {:ok, value()} | {:error, any()}
@callback reset(name(), value()) :: :ok | {:error, any()}
@callback value(name()) :: {:ok, value()} | {:error, any()}