#ifndef FUEL_RULE_HPP_
#define FUEL_RULE_HPP_

#include <ItemStack/ItemStack.hpp>

/**
 * @brief An abstract class for defining fuel properties of items.
 */
class FuelRule
{
public:
    virtual ~FuelRule() = default;

    /**
     * @brief Determine if the stack contains fuel valid under this rule.
     * 
     * @param stack The item stack.
     */
    virtual bool isValidFuel(ItemStack &stack) = 0;

    /**
     * @brief Get the amount of fuel provided by 1 unit of the given stack.
     * 
     * @param stack The stack.
     * @return The amount of fuel units to be made from 1 item in the stack.
     */
    virtual uint32_t getFuelAmount(ItemStack &stack) = 0;
};

#endif