31 #ifndef LEDGER_CORE_BITCOINLIKETRANSACTIONAPI_H 32 #define LEDGER_CORE_BITCOINLIKETRANSACTIONAPI_H 34 #include <api/BitcoinLikeTransaction.hpp> 35 #include <wallet/common/api_impl/OperationApi.h> 36 #include <wallet/bitcoin/explorers/BitcoinLikeBlockchainExplorer.hpp> 37 #include "BitcoinLikeInputApi.h" 38 #include "BitcoinLikeOutputApi.h" 39 #include <api/BitcoinLikeBlock.hpp> 40 #include "BitcoinLikeBlockApi.h" 41 #include <api/EstimatedSize.hpp> 42 #include <wallet/bitcoin/api_impl/BitcoinLikeWritableInputApi.h> 43 #include <api/KeychainEngines.hpp> 44 #include <api/BitcoinLikeSignature.hpp> 45 #include <api/BitcoinLikeSignatureState.hpp> 53 std::string previousTxHash;
55 std::vector<std::vector<uint8_t>> pubKeys;
61 const std::string &address_,
62 const std::string &previousTxHash_,
64 std::vector<std::vector<uint8_t>> pubKeys_,
67 previousTxHash(previousTxHash_),
68 outputIndex(outputIndex_),
70 output.value = output_.value;
71 output.index = output_.index;
72 output.address = output_.address;
73 output.script = output_.script;
74 output.transactionHash = output_.transactionHash;
75 output.time = output_.time;
85 const std::string &keychainEngine = api::KeychainEngines::BIP32_P2PKH,
86 uint64_t currentBlockHeight = 0);
90 std::vector<std::shared_ptr<api::BitcoinLikeInput>> getInputs()
override;
92 std::vector<std::shared_ptr<api::BitcoinLikeOutput>> getOutputs()
override;
94 std::shared_ptr<api::BitcoinLikeBlock> getBlock()
override;
96 int64_t getLockTime()
override;
98 std::shared_ptr<api::Amount> getFees()
override;
100 std::string getHash()
override;
102 std::chrono::system_clock::time_point getTime()
override;
106 std::vector<uint8_t> serialize()
override;
112 std::vector<uint8_t> serializeOutputs()
override;
114 int32_t getVersion()
override;
116 api::BitcoinLikeSignatureState setSignatures(
const std::vector<api::BitcoinLikeSignature> & signatures,
bool override =
false)
override;
118 api::BitcoinLikeSignatureState setDERSignatures(
const std::vector<std::vector<uint8_t>> & signatures,
bool override =
false)
override;
133 static std::shared_ptr<api::BitcoinLikeTransaction> parseRawTransaction(
const api::Currency ¤cy,
134 const std::vector<uint8_t> &rawTransaction,
138 static std::shared_ptr<api::BitcoinLikeTransaction> parseRawSignedTransaction(
const api::Currency ¤cy,
139 const std::vector<uint8_t> &rawTransaction,
143 std::size_t outputCount,
145 const std::string &keychainEngine);
148 inline bool isWriteable()
const;
150 inline bool isReadOnly()
const;
162 std::vector<std::shared_ptr<api::BitcoinLikeInput>> _inputs;
163 std::vector<std::shared_ptr<api::BitcoinLikeOutput>> _outputs;
165 std::shared_ptr<api::Amount> _fees;
166 std::chrono::system_clock::time_point _time;
167 std::shared_ptr<BitcoinLikeBlockApi> _block;
173 std::string _keychainEngine;
174 uint64_t _currentBlockHeight;
180 #endif //LEDGER_CORE_BITCOINLIKETRANSACTIONAPI_H Definition: EstimatedSize.hpp:18
Definition: BitcoinLikeBlockchainExplorer.hpp:65
Definition: BitcoinLikeTransaction.hpp:32
Definition: BytesWriter.h:44
Definition: Currency.hpp:23
Definition: Account.cpp:8
Definition: BitcoinLikeTransactionApi.h:82
Definition: optional.hpp:177
Definition: BitcoinLikeNetworkParameters.hpp:17