#ifndef STATELESS_ITEM_HPP_
#define STATELESS_ITEM_HPP_

#include <Item/Item.hpp>

/**
 * @brief Represents a stateless item.
 */
class StatelessItem : public Item
{
private:
    std::string m_displayName;

public:
    StatelessItem(std::string name, std::string displayName);

    virtual void serializeState(std::vector<uint8_t> &outBytes, const ItemStack &stack) override;
    virtual size_t deserializeState(const uint8_t *data, size_t size, ItemStack &stack) override;
    virtual void copyState(ItemStack &dest, const ItemStack &src) override;
    virtual void destroyState(void *state) override;
    virtual bool isStateEqual(const ItemStack &a, const ItemStack &b) override;
    virtual std::string getDisplayName(const ItemStack &stack) override;
};

#endif