#ifndef BASIC_SMELTING_RULE_HPP_
#define BASIC_SMELTING_RULE_HPP_

#include <SmeltingRule/SmeltingRule.hpp>

/**
 * @brief Basic smelting rule, maps one item stack to another.
 */
class BasicSmeltingRule : public SmeltingRule
{
private:
    ItemStack m_input;
    ItemStack m_output;

public:
    /**
     * @brief Construct this rule.
     * 
     * @param input Input stacks (must have 1 item).
     * @param output The output stack (any number of items).
     */
    BasicSmeltingRule(ItemStack input, ItemStack output);

    virtual bool canSmelt(ItemStack &stack) override;
    virtual ItemStack getSmeltingResult(ItemStack &input) override;
};

#endif