#ifndef ITEM_USAGE_PROVIDER_HPP_
#define ITEM_USAGE_PROVIDER_HPP_

#include <ItemStack/ItemStack.hpp>
#include <ItemUsageRequest/ItemUsageRequest.hpp>

/**
 * @brief Base class for item usage providers, for the item usage popup.
 */
class ItemUsageProvider
{
public:
    virtual ~ItemUsageProvider() = default;

    /**
     * @brief Fill the `usage` with widgets demonstrating usages of the reference stack.
     */
    virtual void getItemUsages(const ItemStack &refStack, ItemUsageRequest &usage) = 0;
};

#endif