Skip to content

account/MintTransactionV2.hpp

Header file of the Version 2 of the Mint transaction class. More...

Namespaces

Name
sgns

Classes

Name
class sgns::MintTransactionV2
Implements a Mint Version 2 transaction.

Detailed Description

Header file of the Version 2 of the Mint transaction class.

Date: 2026-03-19 Henrique A. Klein ([email protected])

Source code

#pragma once

#include <vector>
#include <cstdint>

#include "account/IGeniusTransactions.hpp"
#include "account/TokenID.hpp"
#include "account/UTXOStructs.hpp"

namespace sgns
{
    class MintTransactionV2 final : public IGeniusTransactions
    {
    public:
        ~MintTransactionV2() override = default;

        static std::shared_ptr<MintTransactionV2> DeSerializeByteVector( const std::vector<uint8_t> &data );

        static MintTransactionV2 New( uint64_t                 new_amount,
                                      std::string              chain_id,
                                      TokenID                  token_id,
                                      SGTransaction::DAGStruct dag,
                                      std::string              mint_destination );

        std::vector<uint8_t> SerializeByteVector() override;

        uint64_t GetAmount() const;

        TokenID GetTokenID() const;

        UTXOTxParameters GetUTXOParameters() const;

        bool HasUTXOParameters() const override;

        std::optional<UTXOTxParameters> GetUTXOParametersOpt() const override;

        std::string GetTransactionSpecificPath() const override
        {
            return GetType();
        }

        std::unordered_set<std::string> GetTopics() const override;

    private:
        MintTransactionV2( UTXOTxParameters         utxo_params,
                           std::string              chain_id,
                           TokenID                  token_id,
                           SGTransaction::DAGStruct dag );

        UTXOTxParameters utxo_params_; 
        std::string      chain_id_;    
        TokenID          token_id_;    

        static bool Register()
        {
            RegisterDeserializer( "mint-v2", &MintTransactionV2::DeSerializeByteVector );
            return true;
        }

        static inline bool registered = Register();
    };
}

Updated on 2026-04-13 at 23:22:46 -0700