git / moonbite-core / src/libmw/include/mw/wallet/TxBuilder.h · raw
#pragma once#include <mw/models/crypto/BlindingFactor.h>#include <mw/models/tx/Transaction.h>#include <mw/models/tx/PegInCoin.h>#include <mw/models/tx/PegOutCoin.h>#include <mw/models/wallet/Coin.h>#include <mw/models/wallet/Recipient.h>class TxBuilder{ struct Inputs { BlindingFactor total_blind; SecretKey total_key; std::vector<Input> inputs; }; struct Outputs { BlindingFactor total_blind; SecretKey total_key; std::vector<Output> outputs; std::vector<mw::Coin> coins; };public: static mw::Transaction::CPtr BuildTx( const std::vector<mw::Coin>& input_coins, const std::vector<mw::Recipient>& recipients, const std::vector<PegOutCoin>& pegouts, const boost::optional<CAmount>& pegin_amount, const CAmount fee, std::vector<mw::Coin>& output_coins );private: static Inputs CreateInputs(const std::vector<mw::Coin>& input_coins); static Outputs CreateOutputs(const std::vector<mw::Recipient>& recipients); static CAmount TotalAmount(const std::vector<mw::Coin>& coins);};