Monero
Loading...
Searching...
No Matches
wallet2_api.h
Go to the documentation of this file.
1// Copyright (c) 2014-2022, The Monero Project
2//
3// All rights reserved.
4//
5// Redistribution and use in source and binary forms, with or without modification, are
6// permitted provided that the following conditions are met:
7//
8// 1. Redistributions of source code must retain the above copyright notice, this list of
9// conditions and the following disclaimer.
10//
11// 2. Redistributions in binary form must reproduce the above copyright notice, this list
12// of conditions and the following disclaimer in the documentation and/or other
13// materials provided with the distribution.
14//
15// 3. Neither the name of the copyright holder nor the names of its contributors may be
16// used to endorse or promote products derived from this software without specific
17// prior written permission.
18//
19// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
20// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
22// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
27// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28//
29// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
30
31#pragma once
32
33
34#include <string>
35#include <vector>
36#include <list>
37#include <set>
38#include <ctime>
39#include <iostream>
40#include <stdexcept>
41#include <cstdint>
42
43// Public interface for libwallet library
44namespace Monero {
45
51
52 namespace Utils {
53 bool isAddressLocal(const std::string &hostaddr);
54 void onStartup();
55 }
56
57 template<typename T>
58 class optional {
59 public:
61 optional(const T &t): t(t), set(true) {}
62 const T &operator*() const { return t; }
63 T &operator*() { return t; }
64 operator bool() const { return set; }
65 private:
67 bool set;
68 };
69
74{
80
88
89 virtual ~PendingTransaction() = 0;
90 virtual int status() const = 0;
91 virtual std::string errorString() const = 0;
92 // commit transaction or save to file if filename is provided.
93 virtual bool commit(const std::string &filename = "", bool overwrite = false) = 0;
94 virtual uint64_t amount() const = 0;
95 virtual uint64_t dust() const = 0;
96 virtual uint64_t fee() const = 0;
97 virtual std::vector<std::string> txid() const = 0;
102 virtual uint64_t txCount() const = 0;
103 virtual std::vector<uint32_t> subaddrAccount() const = 0;
104 virtual std::vector<std::set<uint32_t>> subaddrIndices() const = 0;
105
122 virtual std::string multisigSignData() = 0;
123 virtual void signMultisigTx() = 0;
128 virtual std::vector<std::string> signersKeys() const = 0;
129};
130
135{
141
142 virtual ~UnsignedTransaction() = 0;
143 virtual int status() const = 0;
144 virtual std::string errorString() const = 0;
145 virtual std::vector<uint64_t> amount() const = 0;
146 virtual std::vector<uint64_t> fee() const = 0;
147 virtual std::vector<uint64_t> mixin() const = 0;
148 // returns a string with information about all transactions.
149 virtual std::string confirmationMessage() const = 0;
150 virtual std::vector<std::string> paymentId() const = 0;
151 virtual std::vector<std::string> recipientAddress() const = 0;
152 virtual uint64_t minMixinCount() const = 0;
157 virtual uint64_t txCount() const = 0;
163 virtual bool sign(const std::string &signedFileName) = 0;
164};
165
170{
175
176 struct Transfer {
177 Transfer(uint64_t _amount, const std::string &address);
179 const std::string address;
180 };
181
182 virtual ~TransactionInfo() = 0;
183 virtual int direction() const = 0;
184 virtual bool isPending() const = 0;
185 virtual bool isFailed() const = 0;
186 virtual bool isCoinbase() const = 0;
187 virtual uint64_t amount() const = 0;
188 virtual uint64_t fee() const = 0;
189 virtual uint64_t blockHeight() const = 0;
190 virtual std::string description() const = 0;
191 virtual std::set<uint32_t> subaddrIndex() const = 0;
192 virtual uint32_t subaddrAccount() const = 0;
193 virtual std::string label() const = 0;
194 virtual uint64_t confirmations() const = 0;
195 virtual uint64_t unlockTime() const = 0;
197 virtual std::string hash() const = 0;
198 virtual std::time_t timestamp() const = 0;
199 virtual std::string paymentId() const = 0;
201 virtual const std::vector<Transfer> & transfers() const = 0;
202};
203
207{
208 virtual ~TransactionHistory() = 0;
209 virtual int count() const = 0;
210 virtual TransactionInfo * transaction(int index) const = 0;
211 virtual TransactionInfo * transaction(const std::string &id) const = 0;
212 virtual std::vector<TransactionInfo*> getAll() const = 0;
213 virtual void refresh() = 0;
214 virtual void setTxNote(const std::string &txid, const std::string &note) = 0;
215};
216
221public:
222 AddressBookRow(std::size_t _rowId, const std::string &_address, const std::string &_paymentId, const std::string &_description):
223 m_rowId(_rowId),
224 m_address(_address),
225 m_paymentId(_paymentId),
226 m_description(_description) {}
227
228private:
229 std::size_t m_rowId;
230 std::string m_address;
231 std::string m_paymentId;
232 std::string m_description;
233public:
234 std::string extra;
235 std::string getAddress() const {return m_address;}
236 std::string getDescription() const {return m_description;}
237 std::string getPaymentId() const {return m_paymentId;}
238 std::size_t getRowId() const {return m_rowId;}
239};
240
246{
253 virtual ~AddressBook() = 0;
254 virtual std::vector<AddressBookRow*> getAll() const = 0;
255 virtual bool addRow(const std::string &dst_addr , const std::string &payment_id, const std::string &description) = 0;
256 virtual bool deleteRow(std::size_t rowId) = 0;
257 virtual bool setDescription(std::size_t index, const std::string &description) = 0;
258 virtual void refresh() = 0;
259 virtual std::string errorString() const = 0;
260 virtual int errorCode() const = 0;
261 virtual int lookupPaymentID(const std::string &payment_id) const = 0;
262};
263
265public:
266 SubaddressRow(std::size_t _rowId, const std::string &_address, const std::string &_label):
267 m_rowId(_rowId),
268 m_address(_address),
269 m_label(_label) {}
270
271private:
272 std::size_t m_rowId;
273 std::string m_address;
274 std::string m_label;
275public:
276 std::string extra;
277 std::string getAddress() const {return m_address;}
278 std::string getLabel() const {return m_label;}
279 std::size_t getRowId() const {return m_rowId;}
280};
281
283{
284 virtual ~Subaddress() = 0;
285 virtual std::vector<SubaddressRow*> getAll() const = 0;
286 virtual void addRow(uint32_t accountIndex, const std::string &label) = 0;
287 virtual void setLabel(uint32_t accountIndex, uint32_t addressIndex, const std::string &label) = 0;
288 virtual void refresh(uint32_t accountIndex) = 0;
289};
290
292public:
293 SubaddressAccountRow(std::size_t _rowId, const std::string &_address, const std::string &_label, const std::string &_balance, const std::string &_unlockedBalance):
294 m_rowId(_rowId),
295 m_address(_address),
296 m_label(_label),
297 m_balance(_balance),
298 m_unlockedBalance(_unlockedBalance) {}
299
300private:
301 std::size_t m_rowId;
302 std::string m_address;
303 std::string m_label;
304 std::string m_balance;
305 std::string m_unlockedBalance;
306public:
307 std::string extra;
308 std::string getAddress() const {return m_address;}
309 std::string getLabel() const {return m_label;}
310 std::string getBalance() const {return m_balance;}
311 std::string getUnlockedBalance() const {return m_unlockedBalance;}
312 std::size_t getRowId() const {return m_rowId;}
313};
314
316{
317 virtual ~SubaddressAccount() = 0;
318 virtual std::vector<SubaddressAccountRow*> getAll() const = 0;
319 virtual void addRow(const std::string &label) = 0;
320 virtual void setLabel(uint32_t accountIndex, const std::string &label) = 0;
321 virtual void refresh() = 0;
322};
323
332
333
337
338 virtual double progress() const { return m_progress; }
339 virtual bool indeterminate() const { return m_indeterminate; }
340
341protected:
344};
345
346struct Wallet;
348{
349 virtual ~WalletListener() = 0;
355 virtual void moneySpent(const std::string &txId, uint64_t amount) = 0;
356
362 virtual void moneyReceived(const std::string &txId, uint64_t amount) = 0;
363
369 virtual void unconfirmedMoneyReceived(const std::string &txId, uint64_t amount) = 0;
370
375 virtual void newBlock(uint64_t height) = 0;
376
380 virtual void updated() = 0;
381
382
386 virtual void refreshed() = 0;
387
391 virtual void onDeviceButtonRequest(uint64_t code) { (void)code; }
392
396 virtual void onDeviceButtonPressed() { }
397
402 throw std::runtime_error("Not supported");
403 }
404
409 on_device = true;
410 return optional<std::string>();
411 }
412
416 virtual void onDeviceProgress(const DeviceProgress & event) { (void)event; };
417
421 virtual void onSetWallet(Wallet * wallet) { (void)wallet; };
422};
423
424
428struct Wallet
429{
435
441
447
453
459
466
467 virtual ~Wallet() = 0;
468 virtual std::string seed(const std::string& seed_offset = "") const = 0;
469 virtual std::string getSeedLanguage() const = 0;
470 virtual void setSeedLanguage(const std::string &arg) = 0;
472 virtual int status() const = 0; //deprecated: use safe alternative statusWithErrorString
474 virtual std::string errorString() const = 0; //deprecated: use safe alternative statusWithErrorString
476 virtual void statusWithErrorString(int& status, std::string& errorString) const = 0;
477 virtual bool setPassword(const std::string &password) = 0;
478 virtual const std::string& getPassword() const = 0;
479 virtual bool setDevicePin(const std::string &pin) { (void)pin; return false; };
480 virtual bool setDevicePassphrase(const std::string &passphrase) { (void)passphrase; return false; };
481 virtual std::string address(uint32_t accountIndex = 0, uint32_t addressIndex = 0) const = 0;
482 std::string mainAddress() const { return address(0, 0); }
483 virtual std::string path() const = 0;
484 virtual NetworkType nettype() const = 0;
485 bool mainnet() const { return nettype() == MAINNET; }
486 bool testnet() const { return nettype() == TESTNET; }
487 bool stagenet() const { return nettype() == STAGENET; }
489 virtual void hardForkInfo(uint8_t &version, uint64_t &earliest_height) const = 0;
491 virtual bool useForkRules(uint8_t version, int64_t early_blocks) const = 0;
501 virtual std::string integratedAddress(const std::string &payment_id) const = 0;
502
507 virtual std::string secretViewKey() const = 0;
508
513 virtual std::string publicViewKey() const = 0;
514
519 virtual std::string secretSpendKey() const = 0;
520
525 virtual std::string publicSpendKey() const = 0;
526
531 virtual std::string publicMultisigSignerKey() const = 0;
532
536 virtual void stop() = 0;
537
544 virtual bool store(const std::string &path) = 0;
549 virtual std::string filename() const = 0;
554 virtual std::string keysFilename() const = 0;
568 virtual bool init(const std::string &daemon_address, uint64_t upper_transaction_size_limit = 0, const std::string &daemon_username = "", const std::string &daemon_password = "", bool use_ssl = false, bool lightWallet = false, const std::string &proxy_address = "") = 0;
569
577 virtual bool createWatchOnly(const std::string &path, const std::string &password, const std::string &language) const = 0;
578
584 virtual void setRefreshFromBlockHeight(uint64_t refresh_from_block_height) = 0;
585
591
597 virtual void setRecoveringFromSeed(bool recoveringFromSeed) = 0;
598
604 virtual void setRecoveringFromDevice(bool recoveringFromDevice) = 0;
605
612 virtual void setSubaddressLookahead(uint32_t major, uint32_t minor) = 0;
613
618 virtual bool connectToDaemon() = 0;
619
624 virtual ConnectionStatus connected() const = 0;
625 virtual void setTrustedDaemon(bool arg) = 0;
626 virtual bool trustedDaemon() const = 0;
627 virtual bool setProxy(const std::string &address) = 0;
628 virtual uint64_t balance(uint32_t accountIndex = 0) const = 0;
630 uint64_t result = 0;
631 for (uint32_t i = 0; i < numSubaddressAccounts(); ++i)
632 result += balance(i);
633 return result;
634 }
635 virtual uint64_t unlockedBalance(uint32_t accountIndex = 0) const = 0;
637 uint64_t result = 0;
638 for (uint32_t i = 0; i < numSubaddressAccounts(); ++i)
640 return result;
641 }
642
647 virtual bool watchOnly() const = 0;
648
653 virtual bool isDeterministic() const = 0;
654
659 virtual uint64_t blockChainHeight() const = 0;
660
666
678 virtual uint64_t daemonBlockChainHeight() const = 0;
679
686
691 virtual bool synchronized() const = 0;
692
693 static std::string displayAmount(uint64_t amount);
694 static uint64_t amountFromString(const std::string &amount);
695 static uint64_t amountFromDouble(double amount);
696 static std::string genPaymentId();
697 static bool paymentIdValid(const std::string &paiment_id);
698 static bool addressValid(const std::string &str, NetworkType nettype);
699 static bool addressValid(const std::string &str, bool testnet) // deprecated
700 {
701 return addressValid(str, testnet ? TESTNET : MAINNET);
702 }
703 static bool keyValid(const std::string &secret_key_string, const std::string &address_string, bool isViewKey, NetworkType nettype, std::string &error);
704 static bool keyValid(const std::string &secret_key_string, const std::string &address_string, bool isViewKey, bool testnet, std::string &error) // deprecated
705 {
706 return keyValid(secret_key_string, address_string, isViewKey, testnet ? TESTNET : MAINNET, error);
707 }
708 static std::string paymentIdFromAddress(const std::string &str, NetworkType nettype);
709 static std::string paymentIdFromAddress(const std::string &str, bool testnet) // deprecated
710 {
712 }
714 // Easylogger wrapper
715 static void init(const char *argv0, const char *default_log_base_name) { init(argv0, default_log_base_name, "", true); }
716 static void init(const char *argv0, const char *default_log_base_name, const std::string &log_path, bool console);
717 static void debug(const std::string &category, const std::string &str);
718 static void info(const std::string &category, const std::string &str);
719 static void warning(const std::string &category, const std::string &str);
720 static void error(const std::string &category, const std::string &str);
721
725 virtual void startRefresh() = 0;
729 virtual void pauseRefresh() = 0;
730
735 virtual bool refresh() = 0;
736
740 virtual void refreshAsync() = 0;
741
746 virtual bool rescanBlockchain() = 0;
747
751 virtual void rescanBlockchainAsync() = 0;
752
757 virtual void setAutoRefreshInterval(int millis) = 0;
758
763 virtual int autoRefreshInterval() const = 0;
764
769 virtual void addSubaddressAccount(const std::string& label) = 0;
773 virtual size_t numSubaddressAccounts() const = 0;
778 virtual size_t numSubaddresses(uint32_t accountIndex) const = 0;
784 virtual void addSubaddress(uint32_t accountIndex, const std::string& label) = 0;
790 virtual std::string getSubaddressLabel(uint32_t accountIndex, uint32_t addressIndex) const = 0;
797 virtual void setSubaddressLabel(uint32_t accountIndex, uint32_t addressIndex, const std::string &label) = 0;
798
803 virtual MultisigState multisig() const = 0;
808 virtual std::string getMultisigInfo() const = 0;
815 virtual std::string makeMultisig(const std::vector<std::string>& info, uint32_t threshold) = 0;
822 virtual std::string exchangeMultisigKeys(const std::vector<std::string> &info, const bool force_update_use_with_caution) = 0;
828 virtual bool exportMultisigImages(std::string& images) = 0;
834 virtual size_t importMultisigImages(const std::vector<std::string>& images) = 0;
839 virtual bool hasMultisigPartialKeyImages() const = 0;
840
846 virtual PendingTransaction* restoreMultisigTransaction(const std::string& signData) = 0;
847
860
861 virtual PendingTransaction * createTransactionMultDest(const std::vector<std::string> &dst_addr, const std::string &payment_id,
862 optional<std::vector<uint64_t>> amount, uint32_t mixin_count,
864 uint32_t subaddr_account = 0,
865 std::set<uint32_t> subaddr_indices = {}) = 0;
866
879
880 virtual PendingTransaction * createTransaction(const std::string &dst_addr, const std::string &payment_id,
881 optional<uint64_t> amount, uint32_t mixin_count,
883 uint32_t subaddr_account = 0,
884 std::set<uint32_t> subaddr_indices = {}) = 0;
885
891
893
899 virtual UnsignedTransaction * loadUnsignedTx(const std::string &unsigned_filename) = 0;
900
905 virtual bool submitTransaction(const std::string &fileName) = 0;
906
907
913
919 virtual uint64_t estimateTransactionFee(const std::vector<std::pair<std::string, uint64_t>> &destinations,
920 PendingTransaction::Priority priority) const = 0;
921
928 virtual bool exportKeyImages(const std::string &filename, bool all = false) = 0;
929
935 virtual bool importKeyImages(const std::string &filename) = 0;
936
942 virtual bool exportOutputs(const std::string &filename, bool all = false) = 0;
943
949 virtual bool importOutputs(const std::string &filename) = 0;
950
956 virtual bool scanTransactions(const std::vector<std::string> &txids) = 0;
957
965 virtual bool setupBackgroundSync(const BackgroundSyncType background_sync_type, const std::string &wallet_password, const optional<std::string> &background_cache_password) = 0;
966
972
976 virtual bool startBackgroundSync() = 0;
977
982 virtual bool stopBackgroundSync(const std::string &wallet_password) = 0;
983
987 virtual bool isBackgroundSyncing() const = 0;
988
992 virtual bool isBackgroundWallet() const = 0;
993
995 virtual AddressBook * addressBook() = 0;
996 virtual Subaddress * subaddress() = 0;
998 virtual void setListener(WalletListener *) = 0;
1003 virtual uint32_t defaultMixin() const = 0;
1008 virtual void setDefaultMixin(uint32_t arg) = 0;
1009
1016 virtual bool setCacheAttribute(const std::string &key, const std::string &val) = 0;
1022 virtual std::string getCacheAttribute(const std::string &key) const = 0;
1029 virtual bool setUserNote(const std::string &txid, const std::string &note) = 0;
1035 virtual std::string getUserNote(const std::string &txid) const = 0;
1036 virtual std::string getTxKey(const std::string &txid) const = 0;
1037 virtual bool checkTxKey(const std::string &txid, std::string tx_key, const std::string &address, uint64_t &received, bool &in_pool, uint64_t &confirmations) = 0;
1038 virtual std::string getTxProof(const std::string &txid, const std::string &address, const std::string &message) const = 0;
1039 virtual bool checkTxProof(const std::string &txid, const std::string &address, const std::string &message, const std::string &signature, bool &good, uint64_t &received, bool &in_pool, uint64_t &confirmations) = 0;
1040 virtual std::string getSpendProof(const std::string &txid, const std::string &message) const = 0;
1041 virtual bool checkSpendProof(const std::string &txid, const std::string &message, const std::string &signature, bool &good) const = 0;
1046 virtual std::string getReserveProof(bool all, uint32_t account_index, uint64_t amount, const std::string &message) const = 0;
1047 virtual bool checkReserveProof(const std::string &address, const std::string &message, const std::string &signature, bool &good, uint64_t &total, uint64_t &spent) const = 0;
1048
1049 /*
1050 * \brief signMessage - sign a message with the spend private key
1051 * \param message - the message to sign (arbitrary byte data)
1052 * \return the signature
1053 */
1054 virtual std::string signMessage(const std::string &message, const std::string &address = "") = 0;
1062 virtual bool verifySignedMessage(const std::string &message, const std::string &addres, const std::string &signature) const = 0;
1070 virtual MessageSignatureResult verifySignedMessageWithDetails(const std::string &message, const std::string &address, const std::string &signature) const = 0;
1071
1077 virtual std::string signMultisigParticipant(const std::string &message) const = 0;
1085 virtual bool verifyMessageWithPublicKey(const std::string &message, const std::string &publicKey, const std::string &signature) const = 0;
1086
1087 virtual bool parse_uri(const std::string &uri, std::string &address, std::string &payment_id, uint64_t &amount, std::string &tx_description, std::string &recipient_name, std::vector<std::string> &unknown_parameters, std::string &error) = 0;
1088 virtual std::string make_uri(const std::string &address, const std::string &payment_id, uint64_t amount, const std::string &tx_description, const std::string &recipient_name, std::string &error) const = 0;
1089
1090 virtual std::string getDefaultDataDir() const = 0;
1091
1092 /*
1093 * \brief rescanSpent - Rescan spent outputs - Can only be used with trusted daemon
1094 * \return true on success
1095 */
1096 virtual bool rescanSpent() = 0;
1097
1098 /*
1099 * \brief setOffline - toggle set offline on/off
1100 * \param offline - true/false
1101 */
1102 virtual void setOffline(bool offline) = 0;
1103 virtual bool isOffline() const = 0;
1104
1106 virtual bool blackballOutputs(const std::vector<std::string> &outputs, bool add) = 0;
1107
1109 virtual bool blackballOutput(const std::string &amount, const std::string &offset) = 0;
1110
1112 virtual bool unblackballOutput(const std::string &amount, const std::string &offset) = 0;
1113
1115 virtual bool getRing(const std::string &key_image, std::vector<uint64_t> &ring) const = 0;
1116
1118 virtual bool getRings(const std::string &txid, std::vector<std::pair<std::string, std::vector<uint64_t>>> &rings) const = 0;
1119
1121 virtual bool setRing(const std::string &key_image, const std::vector<uint64_t> &ring, bool relative) = 0;
1122
1124 virtual void segregatePreForkOutputs(bool segregate) = 0;
1125
1127 virtual void segregationHeight(uint64_t height) = 0;
1128
1130 virtual void keyReuseMitigation2(bool mitigation) = 0;
1131
1133 virtual bool lightWalletLogin(bool &isNewWallet) const = 0;
1134
1136 virtual bool lightWalletImportWalletRequest(std::string &payment_id, uint64_t &fee, bool &new_request, bool &request_fulfilled, std::string &payment_address, std::string &status) = 0;
1137
1139 virtual bool lockKeysFile() = 0;
1140 virtual bool unlockKeysFile() = 0;
1142 virtual bool isKeysFileLocked() = 0;
1143
1148 virtual Device getDeviceType() const = 0;
1149
1151 virtual uint64_t coldKeyImageSync(uint64_t &spent, uint64_t &unspent) = 0;
1152
1154 virtual void deviceShowAddress(uint32_t accountIndex, uint32_t addressIndex, const std::string &paymentId) = 0;
1155
1157 virtual bool reconnectDevice() = 0;
1158
1161
1163 virtual uint64_t getBytesSent() = 0;
1164};
1165
1170{
1171
1181 virtual Wallet * createWallet(const std::string &path, const std::string &password, const std::string &language, NetworkType nettype, uint64_t kdf_rounds = 1) = 0;
1182 Wallet * createWallet(const std::string &path, const std::string &password, const std::string &language, bool testnet = false) // deprecated
1183 {
1184 return createWallet(path, password, language, testnet ? TESTNET : MAINNET);
1185 }
1186
1196 virtual Wallet * openWallet(const std::string &path, const std::string &password, NetworkType nettype, uint64_t kdf_rounds = 1, WalletListener * listener = nullptr) = 0;
1197 Wallet * openWallet(const std::string &path, const std::string &password, bool testnet = false) // deprecated
1198 {
1199 return openWallet(path, password, testnet ? TESTNET : MAINNET);
1200 }
1201
1213 virtual Wallet * recoveryWallet(const std::string &path, const std::string &password, const std::string &mnemonic,
1214 NetworkType nettype = MAINNET, uint64_t restoreHeight = 0, uint64_t kdf_rounds = 1,
1215 const std::string &seed_offset = {}) = 0;
1216 Wallet * recoveryWallet(const std::string &path, const std::string &password, const std::string &mnemonic,
1217 bool testnet = false, uint64_t restoreHeight = 0) // deprecated
1218 {
1219 return recoveryWallet(path, password, mnemonic, testnet ? TESTNET : MAINNET, restoreHeight);
1220 }
1221
1231 virtual Wallet * recoveryWallet(const std::string &path, const std::string &mnemonic, NetworkType nettype, uint64_t restoreHeight = 0) = 0;
1232 Wallet * recoveryWallet(const std::string &path, const std::string &mnemonic, bool testnet = false, uint64_t restoreHeight = 0) // deprecated
1233 {
1234 return recoveryWallet(path, mnemonic, testnet ? TESTNET : MAINNET, restoreHeight);
1235 }
1236
1250 virtual Wallet * createWalletFromKeys(const std::string &path,
1251 const std::string &password,
1252 const std::string &language,
1253 NetworkType nettype,
1254 uint64_t restoreHeight,
1255 const std::string &addressString,
1256 const std::string &viewKeyString,
1257 const std::string &spendKeyString = "",
1258 uint64_t kdf_rounds = 1) = 0;
1259 Wallet * createWalletFromKeys(const std::string &path,
1260 const std::string &password,
1261 const std::string &language,
1262 bool testnet,
1263 uint64_t restoreHeight,
1264 const std::string &addressString,
1265 const std::string &viewKeyString,
1266 const std::string &spendKeyString = "") // deprecated
1267 {
1268 return createWalletFromKeys(path, password, language, testnet ? TESTNET : MAINNET, restoreHeight, addressString, viewKeyString, spendKeyString);
1269 }
1270
1283 virtual Wallet * createWalletFromKeys(const std::string &path,
1284 const std::string &language,
1285 NetworkType nettype,
1286 uint64_t restoreHeight,
1287 const std::string &addressString,
1288 const std::string &viewKeyString,
1289 const std::string &spendKeyString = "") = 0;
1290 Wallet * createWalletFromKeys(const std::string &path,
1291 const std::string &language,
1292 bool testnet,
1293 uint64_t restoreHeight,
1294 const std::string &addressString,
1295 const std::string &viewKeyString,
1296 const std::string &spendKeyString = "") // deprecated
1297 {
1298 return createWalletFromKeys(path, language, testnet ? TESTNET : MAINNET, restoreHeight, addressString, viewKeyString, spendKeyString);
1299 }
1300
1313 virtual Wallet * createWalletFromDevice(const std::string &path,
1314 const std::string &password,
1315 NetworkType nettype,
1316 const std::string &deviceName,
1317 uint64_t restoreHeight = 0,
1318 const std::string &subaddressLookahead = "",
1319 uint64_t kdf_rounds = 1,
1320 WalletListener * listener = nullptr) = 0;
1321
1327 virtual bool closeWallet(Wallet *wallet, bool store = true) = 0;
1328
1329 /*
1330 * ! checks if wallet with the given name already exists
1331 */
1332
1338 virtual bool walletExists(const std::string &path) = 0;
1339
1352 virtual bool verifyWalletPassword(const std::string &keys_file_name, const std::string &password, bool no_spend_key, uint64_t kdf_rounds = 1) const = 0;
1353
1364 virtual bool queryWalletDevice(Wallet::Device& device_type, const std::string &keys_file_name, const std::string &password, uint64_t kdf_rounds = 1) const = 0;
1365
1371 virtual std::vector<std::string> findWallets(const std::string &path) = 0;
1372
1374 virtual std::string errorString() const = 0;
1375
1377 virtual void setDaemonAddress(const std::string &address) = 0;
1378
1380 virtual bool connected(uint32_t *version = NULL) = 0;
1381
1384
1387
1390
1392 virtual double miningHashRate() = 0;
1393
1395 virtual uint64_t blockTarget() = 0;
1396
1398 virtual bool isMining() = 0;
1399
1401 virtual bool startMining(const std::string &address, uint32_t threads = 1, bool background_mining = false, bool ignore_battery = true) = 0;
1402
1404 virtual bool stopMining() = 0;
1405
1407 virtual std::string resolveOpenAlias(const std::string &address, bool &dnssec_valid) const = 0;
1408
1410 static std::tuple<bool, std::string, std::string, std::string, std::string> checkUpdates(
1411 const std::string &software,
1412 std::string subdir,
1413 const char *buildtag = nullptr,
1414 const char *current_version = nullptr);
1415
1417 virtual bool setProxy(const std::string &address) = 0;
1418};
1419
1420
1422{
1423 // logging levels for underlying library
1434
1436 static void setLogLevel(int level);
1437 static void setLogCategories(const std::string &categories);
1438};
1439
1440
1441}
Definition wallet2_api.h:58
bool set
Definition wallet2_api.h:67
T & operator*()
Definition wallet2_api.h:63
const T & operator*() const
Definition wallet2_api.h:62
T t
Definition wallet2_api.h:66
optional()
Definition wallet2_api.h:60
optional(const T &t)
Definition wallet2_api.h:61
wallet init("", boost::none, "", 0, true, epee::net_utils::ssl_support_t::e_ssl_support_disabled)
std::tuple< uint64_t, uint64_t, std::vector< tools::wallet2::transfer_details > > outputs
Definition cold-outputs.cpp:53
#define true
#define false
bool isAddressLocal(const std::string &address)
Definition utils.cpp:41
void onStartup()
Definition utils.cpp:51
Definition address_book.cpp:40
NetworkType
Definition wallet2_api.h:46
@ MAINNET
Definition wallet2_api.h:47
@ TESTNET
Definition wallet2_api.h:48
@ STAGENET
Definition wallet2_api.h:49
Definition console.py:1
Definition uri.py:1
Definition wallet.py:1
tools::wallet2::message_signature_result_t result
Definition signature.cpp:62
CXA_THROW_INFO_T * info
Definition stack_trace.cpp:91
signed __int64 int64_t
Definition stdint.h:135
unsigned int uint32_t
Definition stdint.h:126
unsigned char uint8_t
Definition stdint.h:124
unsigned __int64 uint64_t
Definition stdint.h:136
AddressBookRow(std::size_t _rowId, const std::string &_address, const std::string &_paymentId, const std::string &_description)
Definition wallet2_api.h:222
std::string m_address
Definition wallet2_api.h:230
std::size_t getRowId() const
Definition wallet2_api.h:238
std::string m_description
Definition wallet2_api.h:232
std::string extra
Definition wallet2_api.h:234
std::size_t m_rowId
Definition wallet2_api.h:229
std::string getDescription() const
Definition wallet2_api.h:236
std::string getPaymentId() const
Definition wallet2_api.h:237
std::string getAddress() const
Definition wallet2_api.h:235
std::string m_paymentId
Definition wallet2_api.h:231
The AddressBook - interface for Book.
Definition wallet2_api.h:246
virtual void refresh()=0
ErrorCode
Definition wallet2_api.h:247
@ Invalid_Address
Definition wallet2_api.h:250
@ Invalid_Payment_Id
Definition wallet2_api.h:251
@ General_Error
Definition wallet2_api.h:249
@ Status_Ok
Definition wallet2_api.h:248
virtual std::string errorString() const =0
virtual bool deleteRow(std::size_t rowId)=0
virtual int errorCode() const =0
virtual int lookupPaymentID(const std::string &payment_id) const =0
virtual std::vector< AddressBookRow * > getAll() const =0
virtual bool setDescription(std::size_t index, const std::string &description)=0
virtual bool addRow(const std::string &dst_addr, const std::string &payment_id, const std::string &description)=0
Definition wallet2_api.h:334
double m_progress
Definition wallet2_api.h:342
bool m_indeterminate
Definition wallet2_api.h:343
DeviceProgress(double progress, bool indeterminate=false)
Definition wallet2_api.h:336
virtual double progress() const
Definition wallet2_api.h:338
virtual bool indeterminate() const
Definition wallet2_api.h:339
DeviceProgress()
Definition wallet2_api.h:335
Definition wallet2_api.h:324
uint32_t threshold
Definition wallet2_api.h:329
bool isReady
Definition wallet2_api.h:328
bool isMultisig
Definition wallet2_api.h:327
MultisigState()
Definition wallet2_api.h:325
uint32_t total
Definition wallet2_api.h:330
Transaction-like interface for sending money.
Definition wallet2_api.h:74
virtual bool commit(const std::string &filename="", bool overwrite=false)=0
virtual std::string errorString() const =0
virtual uint64_t dust() const =0
virtual std::vector< std::string > signersKeys() const =0
signersKeys
virtual std::vector< uint32_t > subaddrAccount() const =0
virtual uint64_t fee() const =0
virtual uint64_t amount() const =0
Status
Definition wallet2_api.h:75
@ Status_Critical
Definition wallet2_api.h:78
@ Status_Ok
Definition wallet2_api.h:76
@ Status_Error
Definition wallet2_api.h:77
virtual std::vector< std::set< uint32_t > > subaddrIndices() const =0
virtual std::vector< std::string > txid() const =0
virtual int status() const =0
virtual uint64_t txCount() const =0
txCount - number of transactions current transaction will be splitted to
Priority
Definition wallet2_api.h:81
@ Priority_Default
Definition wallet2_api.h:82
@ Priority_High
Definition wallet2_api.h:85
@ Priority_Last
Definition wallet2_api.h:86
@ Priority_Low
Definition wallet2_api.h:83
@ Priority_Medium
Definition wallet2_api.h:84
virtual void signMultisigTx()=0
virtual std::string multisigSignData()=0
multisigSignData
std::size_t m_rowId
Definition wallet2_api.h:301
SubaddressAccountRow(std::size_t _rowId, const std::string &_address, const std::string &_label, const std::string &_balance, const std::string &_unlockedBalance)
Definition wallet2_api.h:293
std::string m_address
Definition wallet2_api.h:302
std::string getLabel() const
Definition wallet2_api.h:309
std::string extra
Definition wallet2_api.h:307
std::size_t getRowId() const
Definition wallet2_api.h:312
std::string getUnlockedBalance() const
Definition wallet2_api.h:311
std::string m_unlockedBalance
Definition wallet2_api.h:305
std::string getAddress() const
Definition wallet2_api.h:308
std::string getBalance() const
Definition wallet2_api.h:310
std::string m_balance
Definition wallet2_api.h:304
std::string m_label
Definition wallet2_api.h:303
Definition wallet2_api.h:316
virtual std::vector< SubaddressAccountRow * > getAll() const =0
virtual void setLabel(uint32_t accountIndex, const std::string &label)=0
virtual void refresh()=0
virtual void addRow(const std::string &label)=0
std::string getAddress() const
Definition wallet2_api.h:277
std::size_t m_rowId
Definition wallet2_api.h:272
std::size_t getRowId() const
Definition wallet2_api.h:279
std::string m_address
Definition wallet2_api.h:273
std::string extra
Definition wallet2_api.h:276
std::string getLabel() const
Definition wallet2_api.h:278
SubaddressRow(std::size_t _rowId, const std::string &_address, const std::string &_label)
Definition wallet2_api.h:266
std::string m_label
Definition wallet2_api.h:274
Definition wallet2_api.h:283
virtual void setLabel(uint32_t accountIndex, uint32_t addressIndex, const std::string &label)=0
virtual std::vector< SubaddressRow * > getAll() const =0
virtual void refresh(uint32_t accountIndex)=0
virtual void addRow(uint32_t accountIndex, const std::string &label)=0
The TransactionHistory - interface for displaying transaction history.
Definition wallet2_api.h:207
virtual int count() const =0
virtual void refresh()=0
virtual void setTxNote(const std::string &txid, const std::string &note)=0
virtual TransactionInfo * transaction(int index) const =0
virtual std::vector< TransactionInfo * > getAll() const =0
virtual TransactionInfo * transaction(const std::string &id) const =0
Transfer(uint64_t _amount, const std::string &address)
Definition transaction_info.cpp:40
const uint64_t amount
Definition wallet2_api.h:178
const std::string address
Definition wallet2_api.h:179
The TransactionInfo - interface for displaying transaction information.
Definition wallet2_api.h:170
virtual std::string label() const =0
virtual std::string hash() const =0
transaction_id
virtual uint64_t amount() const =0
Direction
Definition wallet2_api.h:171
@ Direction_In
Definition wallet2_api.h:172
@ Direction_Out
Definition wallet2_api.h:173
virtual std::string paymentId() const =0
virtual uint32_t subaddrAccount() const =0
virtual int direction() const =0
virtual const std::vector< Transfer > & transfers() const =0
only applicable for output transactions
virtual bool isCoinbase() const =0
virtual std::set< uint32_t > subaddrIndex() const =0
virtual uint64_t unlockTime() const =0
virtual bool isPending() const =0
virtual uint64_t confirmations() const =0
virtual uint64_t blockHeight() const =0
virtual std::string description() const =0
virtual uint64_t fee() const =0
virtual std::time_t timestamp() const =0
virtual bool isFailed() const =0
Transaction-like interface for sending money.
Definition wallet2_api.h:135
virtual std::vector< uint64_t > fee() const =0
virtual std::string errorString() const =0
virtual int status() const =0
virtual uint64_t minMixinCount() const =0
virtual std::vector< uint64_t > amount() const =0
Status
Definition wallet2_api.h:136
@ Status_Critical
Definition wallet2_api.h:139
@ Status_Ok
Definition wallet2_api.h:137
@ Status_Error
Definition wallet2_api.h:138
virtual std::vector< std::string > paymentId() const =0
virtual std::vector< uint64_t > mixin() const =0
virtual uint64_t txCount() const =0
txCount - number of transactions current transaction will be splitted to
virtual bool sign(const std::string &signedFileName)=0
sign - Sign txs and saves to file
virtual std::string confirmationMessage() const =0
virtual std::vector< std::string > recipientAddress() const =0
Definition wallet2_api.h:348
virtual optional< std::string > onDevicePinRequest()
called by device when PIN is needed
Definition wallet2_api.h:401
virtual void newBlock(uint64_t height)=0
newBlock - called when new block received
virtual void onSetWallet(Wallet *wallet)
If the listener is created before the wallet this enables to set created wallet object.
Definition wallet2_api.h:421
virtual void onDeviceButtonRequest(uint64_t code)
called by device if the action is required
Definition wallet2_api.h:391
virtual optional< std::string > onDevicePassphraseRequest(bool &on_device)
called by device when passphrase entry is needed
Definition wallet2_api.h:408
virtual void refreshed()=0
refreshed - called when wallet refreshed by background thread or explicitly refreshed by calling "ref...
virtual void onDeviceProgress(const DeviceProgress &event)
Signalizes device operation progress.
Definition wallet2_api.h:416
virtual void moneyReceived(const std::string &txId, uint64_t amount)=0
moneyReceived - called when money received
virtual void updated()=0
updated - generic callback, called when any event (sent/received/block reveived/etc) happened with th...
virtual void moneySpent(const std::string &txId, uint64_t amount)=0
moneySpent - called when money spent
virtual void onDeviceButtonPressed()
called by device if the button was pressed
Definition wallet2_api.h:396
virtual void unconfirmedMoneyReceived(const std::string &txId, uint64_t amount)=0
unconfirmedMoneyReceived - called when payment arrived in tx pool
Definition wallet2_api.h:1422
static void setLogLevel(int level)
Definition wallet_manager.cpp:401
static void setLogCategories(const std::string &categories)
Definition wallet_manager.cpp:406
static WalletManager * getWalletManager()
Definition wallet_manager.cpp:389
LogLevel
Definition wallet2_api.h:1424
@ LogLevel_Max
Definition wallet2_api.h:1432
@ LogLevel_3
Definition wallet2_api.h:1429
@ LogLevel_2
Definition wallet2_api.h:1428
@ LogLevel_1
Definition wallet2_api.h:1427
@ LogLevel_4
Definition wallet2_api.h:1430
@ LogLevel_Silent
Definition wallet2_api.h:1425
@ LogLevel_Min
Definition wallet2_api.h:1431
@ LogLevel_0
Definition wallet2_api.h:1426
WalletManager - provides functions to manage wallets.
Definition wallet2_api.h:1170
Wallet * createWalletFromKeys(const std::string &path, const std::string &language, bool testnet, uint64_t restoreHeight, const std::string &addressString, const std::string &viewKeyString, const std::string &spendKeyString="")
Definition wallet2_api.h:1290
Wallet * openWallet(const std::string &path, const std::string &password, bool testnet=false)
Definition wallet2_api.h:1197
static std::tuple< bool, std::string, std::string, std::string, std::string > checkUpdates(const std::string &software, std::string subdir, const char *buildtag=nullptr, const char *current_version=nullptr)
checks for an update and returns version, hash and url
Definition wallet_manager.cpp:350
Wallet * createWalletFromKeys(const std::string &path, const std::string &password, const std::string &language, bool testnet, uint64_t restoreHeight, const std::string &addressString, const std::string &viewKeyString, const std::string &spendKeyString="")
Definition wallet2_api.h:1259
Wallet * recoveryWallet(const std::string &path, const std::string &password, const std::string &mnemonic, bool testnet=false, uint64_t restoreHeight=0)
Definition wallet2_api.h:1216
virtual void setDaemonAddress(const std::string &address)=0
set the daemon address (hostname and port)
virtual std::string resolveOpenAlias(const std::string &address, bool &dnssec_valid) const =0
resolves an OpenAlias address to a monero address
Wallet * recoveryWallet(const std::string &path, const std::string &mnemonic, bool testnet=false, uint64_t restoreHeight=0)
Definition wallet2_api.h:1232
virtual std::string errorString() const =0
returns verbose error string regarding last error;
virtual bool verifyWalletPassword(const std::string &keys_file_name, const std::string &password, bool no_spend_key, uint64_t kdf_rounds=1) const =0
verifyWalletPassword - check if the given filename is the wallet
virtual Wallet * createWalletFromKeys(const std::string &path, const std::string &password, const std::string &language, NetworkType nettype, uint64_t restoreHeight, const std::string &addressString, const std::string &viewKeyString, const std::string &spendKeyString="", uint64_t kdf_rounds=1)=0
recovers existing wallet using keys. Creates a view only wallet if spend key is omitted
virtual uint64_t networkDifficulty()=0
returns current network difficulty
virtual bool stopMining()=0
stops mining
virtual uint64_t blockchainTargetHeight()=0
returns current blockchain target height
virtual std::vector< std::string > findWallets(const std::string &path)=0
findWallets - searches for the wallet files by given path name recursively
virtual bool walletExists(const std::string &path)=0
TODO: delme walletExists - check if the given filename is the wallet.
virtual Wallet * createWalletFromDevice(const std::string &path, const std::string &password, NetworkType nettype, const std::string &deviceName, uint64_t restoreHeight=0, const std::string &subaddressLookahead="", uint64_t kdf_rounds=1, WalletListener *listener=nullptr)=0
creates wallet using hardware device.
virtual bool closeWallet(Wallet *wallet, bool store=true)=0
Closes wallet. In case operation succeeded, wallet object deleted. in case operation failed,...
virtual bool isMining()=0
returns true iff mining
virtual bool startMining(const std::string &address, uint32_t threads=1, bool background_mining=false, bool ignore_battery=true)=0
starts mining with the set number of threads
virtual bool setProxy(const std::string &address)=0
sets proxy address, empty string to disable
virtual uint64_t blockchainHeight()=0
returns current blockchain height
virtual Wallet * recoveryWallet(const std::string &path, const std::string &password, const std::string &mnemonic, NetworkType nettype=MAINNET, uint64_t restoreHeight=0, uint64_t kdf_rounds=1, const std::string &seed_offset={})=0
recovers existing wallet using mnemonic (electrum seed)
Wallet * createWallet(const std::string &path, const std::string &password, const std::string &language, bool testnet=false)
Definition wallet2_api.h:1182
virtual bool queryWalletDevice(Wallet::Device &device_type, const std::string &keys_file_name, const std::string &password, uint64_t kdf_rounds=1) const =0
determine the key storage for the specified wallet file
virtual uint64_t blockTarget()=0
returns current block target
virtual Wallet * recoveryWallet(const std::string &path, const std::string &mnemonic, NetworkType nettype, uint64_t restoreHeight=0)=0
recovers existing wallet using mnemonic (electrum seed)
virtual Wallet * createWallet(const std::string &path, const std::string &password, const std::string &language, NetworkType nettype, uint64_t kdf_rounds=1)=0
Creates new wallet.
virtual bool connected(uint32_t *version=NULL)=0
returns whether the daemon can be reached, and its version number
virtual double miningHashRate()=0
returns current mining hash rate (0 if not mining)
virtual Wallet * createWalletFromKeys(const std::string &path, const std::string &language, NetworkType nettype, uint64_t restoreHeight, const std::string &addressString, const std::string &viewKeyString, const std::string &spendKeyString="")=0
recovers existing wallet using keys. Creates a view only wallet if spend key is omitted
virtual Wallet * openWallet(const std::string &path, const std::string &password, NetworkType nettype, uint64_t kdf_rounds=1, WalletListener *listener=nullptr)=0
Opens existing wallet.
Definition wallet2_api.h:460
unsigned version
Definition wallet2_api.h:462
MessageSignatureType type
Definition wallet2_api.h:464
bool valid
Definition wallet2_api.h:461
bool old
Definition wallet2_api.h:463
Interface for wallet operations.
Definition wallet2_api.h:429
static std::string paymentIdFromAddress(const std::string &str, bool testnet)
Definition wallet2_api.h:709
bool testnet() const
Definition wallet2_api.h:486
virtual size_t importMultisigImages(const std::vector< std::string > &images)=0
importMultisigImages - imports other participants' multisig images
virtual PendingTransaction * createTransactionMultDest(const std::vector< std::string > &dst_addr, const std::string &payment_id, optional< std::vector< uint64_t > > amount, uint32_t mixin_count, PendingTransaction::Priority=PendingTransaction::Priority_Low, uint32_t subaddr_account=0, std::set< uint32_t > subaddr_indices={})=0
createTransactionMultDest creates transaction with multiple destinations. if dst_addr is an integrate...
virtual std::string address(uint32_t accountIndex=0, uint32_t addressIndex=0) const =0
virtual void keyReuseMitigation2(bool mitigation)=0
secondary key reuse mitigation
virtual SubaddressAccount * subaddressAccount()=0
virtual uint64_t getRefreshFromBlockHeight() const =0
getRestoreHeight - get wallet creation height
virtual uint64_t estimateTransactionFee(const std::vector< std::pair< std::string, uint64_t > > &destinations, PendingTransaction::Priority priority) const =0
Estimates transaction fee.
virtual bool setupBackgroundSync(const BackgroundSyncType background_sync_type, const std::string &wallet_password, const optional< std::string > &background_cache_password)=0
setupBackgroundSync - setup background sync mode with just a view key
virtual bool useForkRules(uint8_t version, int64_t early_blocks) const =0
check if hard fork rules should be used
virtual uint64_t blockChainHeight() const =0
blockChainHeight - returns current blockchain height
virtual bool exportKeyImages(const std::string &filename, bool all=false)=0
exportKeyImages - exports key images to file
MessageSignatureType
Definition wallet2_api.h:454
@ MessageSignatureType_Invalid
Definition wallet2_api.h:455
@ MessageSignatureType_View
Definition wallet2_api.h:457
@ MessageSignatureType_Spend
Definition wallet2_api.h:456
virtual bool verifySignedMessage(const std::string &message, const std::string &addres, const std::string &signature) const =0
verifySignedMessage - verify a signature matches a given message
virtual std::string publicViewKey() const =0
publicViewKey - returns public view key
virtual bool lockKeysFile()=0
locks/unlocks the keys file; returns true on success
virtual void addSubaddress(uint32_t accountIndex, const std::string &label)=0
addSubaddress - appends a new subaddress at the end of the last minor index of the specified subaddre...
virtual void setRecoveringFromSeed(bool recoveringFromSeed)=0
setRecoveringFromSeed - set state recover form seed
virtual std::string secretViewKey() const =0
secretViewKey - returns secret view key
virtual void setRecoveringFromDevice(bool recoveringFromDevice)=0
setRecoveringFromDevice - set state to recovering from device
static void init(const char *argv0, const char *default_log_base_name)
Definition wallet2_api.h:715
virtual bool watchOnly() const =0
watchOnly - checks if wallet is watch only
virtual bool importKeyImages(const std::string &filename)=0
importKeyImages - imports key images from file
virtual std::string getReserveProof(bool all, uint32_t account_index, uint64_t amount, const std::string &message) const =0
getReserveProof - Generates a proof that proves the reserve of unspent funds Parameters account_index...
virtual bool getRings(const std::string &txid, std::vector< std::pair< std::string, std::vector< uint64_t > > > &rings) const =0
gets the rings used for a txid, if any
virtual std::string make_uri(const std::string &address, const std::string &payment_id, uint64_t amount, const std::string &tx_description, const std::string &recipient_name, std::string &error) const =0
static bool keyValid(const std::string &secret_key_string, const std::string &address_string, bool isViewKey, bool testnet, std::string &error)
Definition wallet2_api.h:704
virtual uint32_t defaultMixin() const =0
defaultMixin - returns number of mixins used in transactions
virtual std::string publicSpendKey() const =0
publicSpendKey - returns public spend key
virtual uint64_t balance(uint32_t accountIndex=0) const =0
virtual bool setDevicePin(const std::string &pin)
Definition wallet2_api.h:479
virtual void setListener(WalletListener *)=0
virtual NetworkType nettype() const =0
virtual bool stopBackgroundSync(const std::string &wallet_password)=0
stopBackgroundSync - bring back spend key and process background synced txs
virtual void setOffline(bool offline)=0
virtual uint64_t estimateBlockChainHeight() const =0
estimateBlockChainHeight - returns estimate blockchain height. More accurate than approximateBlockCha...
static std::string displayAmount(uint64_t amount)
Definition wallet.cpp:332
ConnectionStatus
Definition wallet2_api.h:442
@ ConnectionStatus_WrongVersion
Definition wallet2_api.h:445
@ ConnectionStatus_Connected
Definition wallet2_api.h:444
@ ConnectionStatus_Disconnected
Definition wallet2_api.h:443
virtual BackgroundSyncType getBackgroundSyncType() const =0
getBackgroundSyncType - get mode the wallet background syncs in
virtual bool getRing(const std::string &key_image, std::vector< uint64_t > &ring) const =0
gets the ring used for a key image, if any
virtual bool parse_uri(const std::string &uri, std::string &address, std::string &payment_id, uint64_t &amount, std::string &tx_description, std::string &recipient_name, std::vector< std::string > &unknown_parameters, std::string &error)=0
virtual uint64_t getBytesSent()=0
get bytes sent
virtual Subaddress * subaddress()=0
virtual size_t numSubaddressAccounts() const =0
numSubaddressAccounts - returns the number of existing subaddress accounts
virtual std::string errorString() const =0
in case error status, returns error string
static bool addressValid(const std::string &str, bool testnet)
Definition wallet2_api.h:699
virtual void startRefresh()=0
StartRefresh - Start/resume refresh thread (refresh every 10 seconds).
virtual bool setCacheAttribute(const std::string &key, const std::string &val)=0
setCacheAttribute - attach an arbitrary string to a wallet cache attribute
virtual bool rescanSpent()=0
virtual bool lightWalletLogin(bool &isNewWallet) const =0
Light wallet authenticate and login.
virtual bool checkTxProof(const std::string &txid, const std::string &address, const std::string &message, const std::string &signature, bool &good, uint64_t &received, bool &in_pool, uint64_t &confirmations)=0
virtual bool verifyMessageWithPublicKey(const std::string &message, const std::string &publicKey, const std::string &signature) const =0
verifyMessageWithPublicKey verifies that message was signed with the given public key
virtual std::string keysFilename() const =0
keysFilename - returns keys filename. usually this formed as "wallet_filename".keys
virtual void setSubaddressLookahead(uint32_t major, uint32_t minor)=0
setSubaddressLookahead - set size of subaddress lookahead
static void warning(const std::string &category, const std::string &str)
Definition wallet.cpp:444
virtual void refreshAsync()=0
refreshAsync - refreshes wallet asynchronously.
virtual bool isDeterministic() const =0
isDeterministic - checks if wallet keys are deterministic
virtual uint64_t getBytesReceived()=0
get bytes received
std::string mainAddress() const
Definition wallet2_api.h:482
virtual bool store(const std::string &path)=0
store - stores wallet to file.
virtual std::string getMultisigInfo() const =0
getMultisigInfo
virtual TransactionHistory * history()=0
virtual uint64_t coldKeyImageSync(uint64_t &spent, uint64_t &unspent)=0
cold-device protocol key image sync
static bool keyValid(const std::string &secret_key_string, const std::string &address_string, bool isViewKey, NetworkType nettype, std::string &error)
Definition wallet.cpp:375
virtual Device getDeviceType() const =0
Queries backing device for wallet keys.
virtual void setTrustedDaemon(bool arg)=0
virtual bool blackballOutputs(const std::vector< std::string > &outputs, bool add)=0
blackballs a set of outputs
virtual void setAutoRefreshInterval(int millis)=0
setAutoRefreshInterval - setup interval for automatic refresh.
virtual std::string exchangeMultisigKeys(const std::vector< std::string > &info, const bool force_update_use_with_caution)=0
exchange_multisig_keys - provides additional key exchange round for arbitrary multisig schemes (like ...
virtual bool importOutputs(const std::string &filename)=0
importOutputs - imports outputs from file
virtual std::string getCacheAttribute(const std::string &key) const =0
getCacheAttribute - return an arbitrary string attached to a wallet cache attribute
virtual std::string signMessage(const std::string &message, const std::string &address="")=0
virtual bool reconnectDevice()=0
attempt to reconnect to hardware device
virtual bool submitTransaction(const std::string &fileName)=0
submitTransaction - submits transaction in signed tx file
virtual const std::string & getPassword() const =0
virtual bool lightWalletImportWalletRequest(std::string &payment_id, uint64_t &fee, bool &new_request, bool &request_fulfilled, std::string &payment_address, std::string &status)=0
Initiates a light wallet import wallet request.
virtual PendingTransaction * createSweepUnmixableTransaction()=0
createSweepUnmixableTransaction creates transaction with unmixable outputs.
bool stagenet() const
Definition wallet2_api.h:487
virtual bool createWatchOnly(const std::string &path, const std::string &password, const std::string &language) const =0
createWatchOnly - Creates a watch only wallet
BackgroundSyncType
Definition wallet2_api.h:448
@ BackgroundSync_CustomPassword
Definition wallet2_api.h:451
@ BackgroundSync_ReusePassword
Definition wallet2_api.h:450
@ BackgroundSync_Off
Definition wallet2_api.h:449
virtual bool isKeysFileLocked()=0
returns true if the keys file is locked
virtual uint64_t approximateBlockChainHeight() const =0
approximateBlockChainHeight - returns approximate blockchain height calculated from date/time
virtual size_t numSubaddresses(uint32_t accountIndex) const =0
numSubaddresses - returns the number of existing subaddresses associated with the specified subaddres...
static std::string genPaymentId()
Definition wallet.cpp:351
virtual void setSubaddressLabel(uint32_t accountIndex, uint32_t addressIndex, const std::string &label)=0
setSubaddressLabel - sets the label of the specified subaddress
virtual std::string getSpendProof(const std::string &txid, const std::string &message) const =0
virtual void disposeTransaction(PendingTransaction *t)=0
disposeTransaction - destroys transaction object
virtual std::string seed(const std::string &seed_offset="") const =0
virtual bool setUserNote(const std::string &txid, const std::string &note)=0
setUserNote - attach an arbitrary string note to a txid
virtual bool isBackgroundSyncing() const =0
isBackgroundSyncing - returns true if the wallet is background syncing
virtual void pauseRefresh()=0
pauseRefresh - pause refresh thread
virtual void segregatePreForkOutputs(bool segregate)=0
sets whether pre-fork outs are to be segregated
virtual void stop()=0
stop - interrupts wallet refresh() loop once (doesn't stop background refresh thread)
virtual bool scanTransactions(const std::vector< std::string > &txids)=0
scanTransactions - scan a list of transaction ids, this operation may reveal the txids to the remote ...
virtual std::string path() const =0
virtual bool exportMultisigImages(std::string &images)=0
exportMultisigImages - exports transfers' key images
static uint64_t amountFromString(const std::string &amount)
Definition wallet.cpp:337
virtual bool isOffline() const =0
virtual bool connectToDaemon()=0
connectToDaemon - connects to the daemon. TODO: check if it can be removed
virtual bool rescanBlockchain()=0
rescanBlockchain - rescans the wallet, updating transactions from daemon
virtual std::string filename() const =0
filename - returns wallet filename
virtual std::string getTxKey(const std::string &txid) const =0
virtual bool init(const std::string &daemon_address, uint64_t upper_transaction_size_limit=0, const std::string &daemon_username="", const std::string &daemon_password="", bool use_ssl=false, bool lightWallet=false, const std::string &proxy_address="")=0
init - initializes wallet with daemon connection params. if daemon_address is local address,...
static bool paymentIdValid(const std::string &paiment_id)
Definition wallet.cpp:358
virtual bool unlockKeysFile()=0
Status
Definition wallet2_api.h:436
@ Status_Error
Definition wallet2_api.h:438
@ Status_Ok
Definition wallet2_api.h:437
@ Status_Critical
Definition wallet2_api.h:439
Device
Definition wallet2_api.h:430
@ Device_Trezor
Definition wallet2_api.h:433
@ Device_Software
Definition wallet2_api.h:431
@ Device_Ledger
Definition wallet2_api.h:432
virtual PendingTransaction * restoreMultisigTransaction(const std::string &signData)=0
restoreMultisigTransaction creates PendingTransaction from signData
virtual std::string getTxProof(const std::string &txid, const std::string &address, const std::string &message) const =0
virtual std::string integratedAddress(const std::string &payment_id) const =0
integratedAddress - returns integrated address for current wallet address and given payment_id....
virtual bool trustedDaemon() const =0
virtual std::string signMultisigParticipant(const std::string &message) const =0
signMultisigParticipant signs given message with the multisig public signer key
virtual std::string secretSpendKey() const =0
secretSpendKey - returns secret spend key
virtual bool unblackballOutput(const std::string &amount, const std::string &offset)=0
unblackballs an output
virtual void setRefreshFromBlockHeight(uint64_t refresh_from_block_height)=0
setRefreshFromBlockHeight - start refresh from block height on recover
virtual ConnectionStatus connected() const =0
connected - checks if the wallet connected to the daemon
virtual bool setProxy(const std::string &address)=0
virtual int autoRefreshInterval() const =0
autoRefreshInterval - returns automatic refresh interval in millis
uint64_t unlockedBalanceAll() const
Definition wallet2_api.h:636
virtual void addSubaddressAccount(const std::string &label)=0
addSubaddressAccount - appends a new subaddress account at the end of the last major index of existin...
static void error(const std::string &category, const std::string &str)
Definition wallet.cpp:448
static void info(const std::string &category, const std::string &str)
Definition wallet.cpp:440
virtual bool startBackgroundSync()=0
startBackgroundSync - sync the chain in the background with just view key
virtual bool blackballOutput(const std::string &amount, const std::string &offset)=0
blackballs an output
virtual MessageSignatureResult verifySignedMessageWithDetails(const std::string &message, const std::string &address, const std::string &signature) const =0
verifySignedMessageWithDetails - verify a signature and identify the signing key and algorithm
virtual std::string getUserNote(const std::string &txid) const =0
getUserNote - return an arbitrary string note attached to a txid
static uint64_t maximumAllowedAmount()
Definition wallet.cpp:421
virtual void deviceShowAddress(uint32_t accountIndex, uint32_t addressIndex, const std::string &paymentId)=0
shows address on device display
virtual std::string publicMultisigSignerKey() const =0
publicMultisigSignerKey - returns public signer key
virtual std::string getSeedLanguage() const =0
virtual uint64_t daemonBlockChainHeight() const =0
daemonBlockChainHeight - returns daemon blockchain height
virtual std::string getDefaultDataDir() const =0
virtual void hardForkInfo(uint8_t &version, uint64_t &earliest_height) const =0
returns current hard fork info
virtual bool refresh()=0
refresh - refreshes the wallet, updating transactions from daemon
virtual PendingTransaction * createTransaction(const std::string &dst_addr, const std::string &payment_id, optional< uint64_t > amount, uint32_t mixin_count, PendingTransaction::Priority=PendingTransaction::Priority_Low, uint32_t subaddr_account=0, std::set< uint32_t > subaddr_indices={})=0
createTransaction creates transaction. if dst_addr is an integrated address, payment_id is ignored
virtual bool hasMultisigPartialKeyImages() const =0
hasMultisigPartialKeyImages - checks if wallet needs to import multisig key images from other partici...
virtual std::string getSubaddressLabel(uint32_t accountIndex, uint32_t addressIndex) const =0
getSubaddressLabel - gets the label of the specified subaddress
virtual uint64_t daemonBlockChainTargetHeight() const =0
daemonBlockChainTargetHeight - returns daemon blockchain target height
static uint64_t amountFromDouble(double amount)
Definition wallet.cpp:344
virtual AddressBook * addressBook()=0
virtual uint64_t unlockedBalance(uint32_t accountIndex=0) const =0
virtual bool isBackgroundWallet() const =0
isBackgroundWallet - returns true if the wallet is a background wallet
static void debug(const std::string &category, const std::string &str)
Definition wallet.cpp:436
virtual bool checkSpendProof(const std::string &txid, const std::string &message, const std::string &signature, bool &good) const =0
uint64_t balanceAll() const
Definition wallet2_api.h:629
virtual void segregationHeight(uint64_t height)=0
sets the height where segregation should occur
bool mainnet() const
Definition wallet2_api.h:485
virtual void statusWithErrorString(int &status, std::string &errorString) const =0
returns both error and error string atomically. suggested to use in instead of status() and errorStri...
virtual bool setPassword(const std::string &password)=0
static bool addressValid(const std::string &str, NetworkType nettype)
Definition wallet.cpp:369
virtual void setDefaultMixin(uint32_t arg)=0
setDefaultMixin - setum number of mixins to be used for new transactions
virtual bool checkReserveProof(const std::string &address, const std::string &message, const std::string &signature, bool &good, uint64_t &total, uint64_t &spent) const =0
virtual int status() const =0
returns wallet status (Status_Ok | Status_Error)
virtual bool checkTxKey(const std::string &txid, std::string tx_key, const std::string &address, uint64_t &received, bool &in_pool, uint64_t &confirmations)=0
virtual bool setRing(const std::string &key_image, const std::vector< uint64_t > &ring, bool relative)=0
sets the ring used for a key image
virtual bool exportOutputs(const std::string &filename, bool all=false)=0
importOutputs - exports outputs to file
virtual void rescanBlockchainAsync()=0
rescanBlockchainAsync - rescans wallet asynchronously, starting from genesys
virtual std::string makeMultisig(const std::vector< std::string > &info, uint32_t threshold)=0
makeMultisig - switches wallet in multisig state. The one and only creation phase for N / N wallets
virtual void setSeedLanguage(const std::string &arg)=0
virtual MultisigState multisig() const =0
multisig - returns current state of multisig wallet creation process
static std::string paymentIdFromAddress(const std::string &str, NetworkType nettype)
Definition wallet.cpp:411
virtual bool setDevicePassphrase(const std::string &passphrase)
Definition wallet2_api.h:480
virtual UnsignedTransaction * loadUnsignedTx(const std::string &unsigned_filename)=0
loadUnsignedTx - creates transaction from unsigned tx file
Definition main.cpp:101
string daemon_address
Definition transfers.cpp:41
#define T(x)