git / moonbite-core / src/libmw/include/mw/models/tx/PegInCoin.h · raw

#pragma once#include <mw/common/Traits.h>#include <mw/models/crypto/Hash.h>#include <mw/util/StringUtil.h>#include <amount.h>//// Represents coins being pegged in, i.e. moved from canonical chain to the extension block.//class PegInCoin : public Traits::ISerializable, public Traits::IPrintable{public:    PegInCoin() = default;    PegInCoin(const CAmount amount, mw::Hash kernel_id)        : m_amount(amount), m_kernelID(std::move(kernel_id)) {}    bool operator==(const PegInCoin& rhs) const noexcept    {        return m_amount == rhs.m_amount && m_kernelID == rhs.m_kernelID;    }    CAmount GetAmount() const noexcept { return m_amount; }    const mw::Hash& GetKernelID() const noexcept { return m_kernelID; }    //    // Serialization/Deserialization    //    IMPL_SERIALIZABLE(PegInCoin, obj)    {        READWRITE(VARINT_MODE(obj.m_amount, VarIntMode::NONNEGATIVE_SIGNED));        READWRITE(obj.m_kernelID);    }    std::string Format() const noexcept final    {        return StringUtil::Format("PegInCoin(kernel_id: {}, amount: {})", m_kernelID, m_amount);    }private:    CAmount m_amount;    mw::Hash m_kernelID;};