Monero
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
44 namespace Monero {
45 
47  MAINNET = 0,
50 };
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:
66  T t;
67  bool set;
68  };
69 
74 {
75  enum Status {
79  };
80 
81  enum Priority {
87  };
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 {
136  enum Status {
140  };
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 {
171  enum Direction {
174  };
175 
176  struct Transfer {
177  Transfer(uint64_t _amount, 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 };
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 
221 public:
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 
228 private:
229  std::size_t m_rowId;
233 public:
235  std::string getAddress() const {return m_address;}
238  std::size_t getRowId() const {return m_rowId;}
239 };
240 
246 {
247  enum ErrorCode {
252  };
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 
265 public:
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 
271 private:
272  std::size_t m_rowId;
275 public:
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 
292 public:
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 
300 private:
301  std::size_t m_rowId;
306 public:
308  std::string getAddress() const {return m_address;}
309  std::string getLabel() const {return m_label;}
310  std::string getBalance() const {return m_balance;}
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 
326 
328  bool isReady;
331 };
332 
333 
337 
338  virtual double progress() const { return m_progress; }
339  virtual bool indeterminate() const { return m_indeterminate; }
340 
341 protected:
342  double m_progress;
344 };
345 
346 struct 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 
428 struct Wallet
429 {
430  enum Device {
434  };
435 
436  enum Status {
440  };
441 
446  };
447 
452  };
453 
454  virtual ~Wallet() = 0;
455  virtual std::string seed(const std::string& seed_offset = "") const = 0;
456  virtual std::string getSeedLanguage() const = 0;
457  virtual void setSeedLanguage(const std::string &arg) = 0;
459  virtual int status() const = 0; //deprecated: use safe alternative statusWithErrorString
461  virtual std::string errorString() const = 0; //deprecated: use safe alternative statusWithErrorString
463  virtual void statusWithErrorString(int& status, std::string& errorString) const = 0;
464  virtual bool setPassword(const std::string &password) = 0;
465  virtual const std::string& getPassword() const = 0;
466  virtual bool setDevicePin(const std::string &pin) { (void)pin; return false; };
467  virtual bool setDevicePassphrase(const std::string &passphrase) { (void)passphrase; return false; };
468  virtual std::string address(uint32_t accountIndex = 0, uint32_t addressIndex = 0) const = 0;
469  std::string mainAddress() const { return address(0, 0); }
470  virtual std::string path() const = 0;
471  virtual NetworkType nettype() const = 0;
472  bool mainnet() const { return nettype() == MAINNET; }
473  bool testnet() const { return nettype() == TESTNET; }
474  bool stagenet() const { return nettype() == STAGENET; }
476  virtual void hardForkInfo(uint8_t &version, uint64_t &earliest_height) const = 0;
478  virtual bool useForkRules(uint8_t version, int64_t early_blocks) const = 0;
488  virtual std::string integratedAddress(const std::string &payment_id) const = 0;
489 
494  virtual std::string secretViewKey() const = 0;
495 
500  virtual std::string publicViewKey() const = 0;
501 
506  virtual std::string secretSpendKey() const = 0;
507 
512  virtual std::string publicSpendKey() const = 0;
513 
518  virtual std::string publicMultisigSignerKey() const = 0;
519 
523  virtual void stop() = 0;
524 
531  virtual bool store(const std::string &path) = 0;
536  virtual std::string filename() const = 0;
541  virtual std::string keysFilename() const = 0;
555  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;
556 
564  virtual bool createWatchOnly(const std::string &path, const std::string &password, const std::string &language) const = 0;
565 
571  virtual void setRefreshFromBlockHeight(uint64_t refresh_from_block_height) = 0;
572 
577  virtual uint64_t getRefreshFromBlockHeight() const = 0;
578 
584  virtual void setRecoveringFromSeed(bool recoveringFromSeed) = 0;
585 
591  virtual void setRecoveringFromDevice(bool recoveringFromDevice) = 0;
592 
599  virtual void setSubaddressLookahead(uint32_t major, uint32_t minor) = 0;
600 
605  virtual bool connectToDaemon() = 0;
606 
611  virtual ConnectionStatus connected() const = 0;
612  virtual void setTrustedDaemon(bool arg) = 0;
613  virtual bool trustedDaemon() const = 0;
614  virtual bool setProxy(const std::string &address) = 0;
615  virtual uint64_t balance(uint32_t accountIndex = 0) const = 0;
617  uint64_t result = 0;
618  for (uint32_t i = 0; i < numSubaddressAccounts(); ++i)
619  result += balance(i);
620  return result;
621  }
622  virtual uint64_t unlockedBalance(uint32_t accountIndex = 0) const = 0;
624  uint64_t result = 0;
625  for (uint32_t i = 0; i < numSubaddressAccounts(); ++i)
627  return result;
628  }
629 
634  virtual bool watchOnly() const = 0;
635 
640  virtual bool isDeterministic() const = 0;
641 
646  virtual uint64_t blockChainHeight() const = 0;
647 
652  virtual uint64_t approximateBlockChainHeight() const = 0;
653 
659  virtual uint64_t estimateBlockChainHeight() const = 0;
665  virtual uint64_t daemonBlockChainHeight() const = 0;
666 
672  virtual uint64_t daemonBlockChainTargetHeight() const = 0;
673 
678  virtual bool synchronized() const = 0;
679 
680  static std::string displayAmount(uint64_t amount);
681  static uint64_t amountFromString(const std::string &amount);
682  static uint64_t amountFromDouble(double amount);
683  static std::string genPaymentId();
684  static bool paymentIdValid(const std::string &paiment_id);
685  static bool addressValid(const std::string &str, NetworkType nettype);
686  static bool addressValid(const std::string &str, bool testnet) // deprecated
687  {
688  return addressValid(str, testnet ? TESTNET : MAINNET);
689  }
690  static bool keyValid(const std::string &secret_key_string, const std::string &address_string, bool isViewKey, NetworkType nettype, std::string &error);
691  static bool keyValid(const std::string &secret_key_string, const std::string &address_string, bool isViewKey, bool testnet, std::string &error) // deprecated
692  {
693  return keyValid(secret_key_string, address_string, isViewKey, testnet ? TESTNET : MAINNET, error);
694  }
696  static std::string paymentIdFromAddress(const std::string &str, bool testnet) // deprecated
697  {
699  }
701  // Easylogger wrapper
702  static void init(const char *argv0, const char *default_log_base_name) { init(argv0, default_log_base_name, "", true); }
703  static void init(const char *argv0, const char *default_log_base_name, const std::string &log_path, bool console);
704  static void debug(const std::string &category, const std::string &str);
705  static void info(const std::string &category, const std::string &str);
706  static void warning(const std::string &category, const std::string &str);
707  static void error(const std::string &category, const std::string &str);
708 
712  virtual void startRefresh() = 0;
716  virtual void pauseRefresh() = 0;
717 
722  virtual bool refresh() = 0;
723 
727  virtual void refreshAsync() = 0;
728 
733  virtual bool rescanBlockchain() = 0;
734 
738  virtual void rescanBlockchainAsync() = 0;
739 
744  virtual void setAutoRefreshInterval(int millis) = 0;
745 
750  virtual int autoRefreshInterval() const = 0;
751 
756  virtual void addSubaddressAccount(const std::string& label) = 0;
760  virtual size_t numSubaddressAccounts() const = 0;
765  virtual size_t numSubaddresses(uint32_t accountIndex) const = 0;
771  virtual void addSubaddress(uint32_t accountIndex, const std::string& label) = 0;
777  virtual std::string getSubaddressLabel(uint32_t accountIndex, uint32_t addressIndex) const = 0;
784  virtual void setSubaddressLabel(uint32_t accountIndex, uint32_t addressIndex, const std::string &label) = 0;
785 
790  virtual MultisigState multisig() const = 0;
795  virtual std::string getMultisigInfo() const = 0;
802  virtual std::string makeMultisig(const std::vector<std::string>& info, uint32_t threshold) = 0;
809  virtual std::string exchangeMultisigKeys(const std::vector<std::string> &info, const bool force_update_use_with_caution) = 0;
815  virtual bool exportMultisigImages(std::string& images) = 0;
821  virtual size_t importMultisigImages(const std::vector<std::string>& images) = 0;
826  virtual bool hasMultisigPartialKeyImages() const = 0;
827 
833  virtual PendingTransaction* restoreMultisigTransaction(const std::string& signData) = 0;
834 
848  virtual PendingTransaction * createTransactionMultDest(const std::vector<std::string> &dst_addr, const std::string &payment_id,
849  optional<std::vector<uint64_t>> amount, uint32_t mixin_count,
851  uint32_t subaddr_account = 0,
852  std::set<uint32_t> subaddr_indices = {}) = 0;
853 
867  virtual PendingTransaction * createTransaction(const std::string &dst_addr, const std::string &payment_id,
868  optional<uint64_t> amount, uint32_t mixin_count,
870  uint32_t subaddr_account = 0,
871  std::set<uint32_t> subaddr_indices = {}) = 0;
872 
879  virtual PendingTransaction * createSweepUnmixableTransaction() = 0;
880 
886  virtual UnsignedTransaction * loadUnsignedTx(const std::string &unsigned_filename) = 0;
887 
892  virtual bool submitTransaction(const std::string &fileName) = 0;
893 
894 
899  virtual void disposeTransaction(PendingTransaction * t) = 0;
900 
906  virtual uint64_t estimateTransactionFee(const std::vector<std::pair<std::string, uint64_t>> &destinations,
908 
915  virtual bool exportKeyImages(const std::string &filename, bool all = false) = 0;
916 
922  virtual bool importKeyImages(const std::string &filename) = 0;
923 
929  virtual bool exportOutputs(const std::string &filename, bool all = false) = 0;
930 
936  virtual bool importOutputs(const std::string &filename) = 0;
937 
943  virtual bool scanTransactions(const std::vector<std::string> &txids) = 0;
944 
952  virtual bool setupBackgroundSync(const BackgroundSyncType background_sync_type, const std::string &wallet_password, const optional<std::string> &background_cache_password) = 0;
953 
958  virtual BackgroundSyncType getBackgroundSyncType() const = 0;
959 
963  virtual bool startBackgroundSync() = 0;
964 
969  virtual bool stopBackgroundSync(const std::string &wallet_password) = 0;
970 
974  virtual bool isBackgroundSyncing() const = 0;
975 
979  virtual bool isBackgroundWallet() const = 0;
980 
981  virtual TransactionHistory * history() = 0;
982  virtual AddressBook * addressBook() = 0;
983  virtual Subaddress * subaddress() = 0;
984  virtual SubaddressAccount * subaddressAccount() = 0;
985  virtual void setListener(WalletListener *) = 0;
990  virtual uint32_t defaultMixin() const = 0;
995  virtual void setDefaultMixin(uint32_t arg) = 0;
996 
1003  virtual bool setCacheAttribute(const std::string &key, const std::string &val) = 0;
1009  virtual std::string getCacheAttribute(const std::string &key) const = 0;
1016  virtual bool setUserNote(const std::string &txid, const std::string &note) = 0;
1022  virtual std::string getUserNote(const std::string &txid) const = 0;
1023  virtual std::string getTxKey(const std::string &txid) const = 0;
1024  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;
1025  virtual std::string getTxProof(const std::string &txid, const std::string &address, const std::string &message) const = 0;
1026  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;
1027  virtual std::string getSpendProof(const std::string &txid, const std::string &message) const = 0;
1028  virtual bool checkSpendProof(const std::string &txid, const std::string &message, const std::string &signature, bool &good) const = 0;
1033  virtual std::string getReserveProof(bool all, uint32_t account_index, uint64_t amount, const std::string &message) const = 0;
1034  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;
1035 
1036  /*
1037  * \brief signMessage - sign a message with the spend private key
1038  * \param message - the message to sign (arbitrary byte data)
1039  * \return the signature
1040  */
1041  virtual std::string signMessage(const std::string &message, const std::string &address = "") = 0;
1049  virtual bool verifySignedMessage(const std::string &message, const std::string &addres, const std::string &signature) const = 0;
1050 
1056  virtual std::string signMultisigParticipant(const std::string &message) const = 0;
1064  virtual bool verifyMessageWithPublicKey(const std::string &message, const std::string &publicKey, const std::string &signature) const = 0;
1065 
1066  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;
1067  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;
1068 
1069  virtual std::string getDefaultDataDir() const = 0;
1070 
1071  /*
1072  * \brief rescanSpent - Rescan spent outputs - Can only be used with trusted daemon
1073  * \return true on success
1074  */
1075  virtual bool rescanSpent() = 0;
1076 
1077  /*
1078  * \brief setOffline - toggle set offline on/off
1079  * \param offline - true/false
1080  */
1081  virtual void setOffline(bool offline) = 0;
1082  virtual bool isOffline() const = 0;
1083 
1085  virtual bool blackballOutputs(const std::vector<std::string> &outputs, bool add) = 0;
1086 
1088  virtual bool blackballOutput(const std::string &amount, const std::string &offset) = 0;
1089 
1091  virtual bool unblackballOutput(const std::string &amount, const std::string &offset) = 0;
1092 
1094  virtual bool getRing(const std::string &key_image, std::vector<uint64_t> &ring) const = 0;
1095 
1097  virtual bool getRings(const std::string &txid, std::vector<std::pair<std::string, std::vector<uint64_t>>> &rings) const = 0;
1098 
1100  virtual bool setRing(const std::string &key_image, const std::vector<uint64_t> &ring, bool relative) = 0;
1101 
1103  virtual void segregatePreForkOutputs(bool segregate) = 0;
1104 
1106  virtual void segregationHeight(uint64_t height) = 0;
1107 
1109  virtual void keyReuseMitigation2(bool mitigation) = 0;
1110 
1112  virtual bool lightWalletLogin(bool &isNewWallet) const = 0;
1113 
1115  virtual bool lightWalletImportWalletRequest(std::string &payment_id, uint64_t &fee, bool &new_request, bool &request_fulfilled, std::string &payment_address, std::string &status) = 0;
1116 
1118  virtual bool lockKeysFile() = 0;
1119  virtual bool unlockKeysFile() = 0;
1121  virtual bool isKeysFileLocked() = 0;
1122 
1127  virtual Device getDeviceType() const = 0;
1128 
1130  virtual uint64_t coldKeyImageSync(uint64_t &spent, uint64_t &unspent) = 0;
1131 
1133  virtual void deviceShowAddress(uint32_t accountIndex, uint32_t addressIndex, const std::string &paymentId) = 0;
1134 
1136  virtual bool reconnectDevice() = 0;
1137 
1139  virtual uint64_t getBytesReceived() = 0;
1140 
1142  virtual uint64_t getBytesSent() = 0;
1143 };
1144 
1149 {
1150 
1160  virtual Wallet * createWallet(const std::string &path, const std::string &password, const std::string &language, NetworkType nettype, uint64_t kdf_rounds = 1) = 0;
1161  Wallet * createWallet(const std::string &path, const std::string &password, const std::string &language, bool testnet = false) // deprecated
1162  {
1163  return createWallet(path, password, language, testnet ? TESTNET : MAINNET);
1164  }
1165 
1175  virtual Wallet * openWallet(const std::string &path, const std::string &password, NetworkType nettype, uint64_t kdf_rounds = 1, WalletListener * listener = nullptr) = 0;
1176  Wallet * openWallet(const std::string &path, const std::string &password, bool testnet = false) // deprecated
1177  {
1178  return openWallet(path, password, testnet ? TESTNET : MAINNET);
1179  }
1180 
1192  virtual Wallet * recoveryWallet(const std::string &path, const std::string &password, const std::string &mnemonic,
1193  NetworkType nettype = MAINNET, uint64_t restoreHeight = 0, uint64_t kdf_rounds = 1,
1194  const std::string &seed_offset = {}) = 0;
1195  Wallet * recoveryWallet(const std::string &path, const std::string &password, const std::string &mnemonic,
1196  bool testnet = false, uint64_t restoreHeight = 0) // deprecated
1197  {
1198  return recoveryWallet(path, password, mnemonic, testnet ? TESTNET : MAINNET, restoreHeight);
1199  }
1200 
1210  virtual Wallet * recoveryWallet(const std::string &path, const std::string &mnemonic, NetworkType nettype, uint64_t restoreHeight = 0) = 0;
1211  Wallet * recoveryWallet(const std::string &path, const std::string &mnemonic, bool testnet = false, uint64_t restoreHeight = 0) // deprecated
1212  {
1213  return recoveryWallet(path, mnemonic, testnet ? TESTNET : MAINNET, restoreHeight);
1214  }
1215 
1229  virtual Wallet * createWalletFromKeys(const std::string &path,
1230  const std::string &password,
1231  const std::string &language,
1232  NetworkType nettype,
1233  uint64_t restoreHeight,
1234  const std::string &addressString,
1235  const std::string &viewKeyString,
1236  const std::string &spendKeyString = "",
1237  uint64_t kdf_rounds = 1) = 0;
1239  const std::string &password,
1240  const std::string &language,
1241  bool testnet,
1242  uint64_t restoreHeight,
1243  const std::string &addressString,
1244  const std::string &viewKeyString,
1245  const std::string &spendKeyString = "") // deprecated
1246  {
1247  return createWalletFromKeys(path, password, language, testnet ? TESTNET : MAINNET, restoreHeight, addressString, viewKeyString, spendKeyString);
1248  }
1249 
1262  virtual Wallet * createWalletFromKeys(const std::string &path,
1263  const std::string &language,
1264  NetworkType nettype,
1265  uint64_t restoreHeight,
1266  const std::string &addressString,
1267  const std::string &viewKeyString,
1268  const std::string &spendKeyString = "") = 0;
1270  const std::string &language,
1271  bool testnet,
1272  uint64_t restoreHeight,
1273  const std::string &addressString,
1274  const std::string &viewKeyString,
1275  const std::string &spendKeyString = "") // deprecated
1276  {
1277  return createWalletFromKeys(path, language, testnet ? TESTNET : MAINNET, restoreHeight, addressString, viewKeyString, spendKeyString);
1278  }
1279 
1292  virtual Wallet * createWalletFromDevice(const std::string &path,
1293  const std::string &password,
1294  NetworkType nettype,
1295  const std::string &deviceName,
1296  uint64_t restoreHeight = 0,
1297  const std::string &subaddressLookahead = "",
1298  uint64_t kdf_rounds = 1,
1299  WalletListener * listener = nullptr) = 0;
1300 
1306  virtual bool closeWallet(Wallet *wallet, bool store = true) = 0;
1307 
1308  /*
1309  * ! checks if wallet with the given name already exists
1310  */
1311 
1317  virtual bool walletExists(const std::string &path) = 0;
1318 
1331  virtual bool verifyWalletPassword(const std::string &keys_file_name, const std::string &password, bool no_spend_key, uint64_t kdf_rounds = 1) const = 0;
1332 
1343  virtual bool queryWalletDevice(Wallet::Device& device_type, const std::string &keys_file_name, const std::string &password, uint64_t kdf_rounds = 1) const = 0;
1344 
1350  virtual std::vector<std::string> findWallets(const std::string &path) = 0;
1351 
1353  virtual std::string errorString() const = 0;
1354 
1356  virtual void setDaemonAddress(const std::string &address) = 0;
1357 
1359  virtual bool connected(uint32_t *version = NULL) = 0;
1360 
1362  virtual uint64_t blockchainHeight() = 0;
1363 
1365  virtual uint64_t blockchainTargetHeight() = 0;
1366 
1368  virtual uint64_t networkDifficulty() = 0;
1369 
1371  virtual double miningHashRate() = 0;
1372 
1374  virtual uint64_t blockTarget() = 0;
1375 
1377  virtual bool isMining() = 0;
1378 
1380  virtual bool startMining(const std::string &address, uint32_t threads = 1, bool background_mining = false, bool ignore_battery = true) = 0;
1381 
1383  virtual bool stopMining() = 0;
1384 
1386  virtual std::string resolveOpenAlias(const std::string &address, bool &dnssec_valid) const = 0;
1387 
1389  static std::tuple<bool, std::string, std::string, std::string, std::string> checkUpdates(
1390  const std::string &software,
1391  std::string subdir,
1392  const char *buildtag = nullptr,
1393  const char *current_version = nullptr);
1394 
1396  virtual bool setProxy(const std::string &address) = 0;
1397 };
1398 
1399 
1401 {
1402  // logging levels for underlying library
1403  enum LogLevel {
1412  };
1413 
1414  static WalletManager * getWalletManager();
1415  static void setLogLevel(int level);
1416  static void setLogCategories(const std::string &categories);
1417 };
1418 
1419 
1420 }
virtual int autoRefreshInterval() const =0
autoRefreshInterval - returns automatic refresh interval in millis
bool stagenet() const
Definition: wallet2_api.h:474
virtual std::vector< std::set< uint32_t > > subaddrIndices() const =0
virtual std::string getSeedLanguage() const =0
virtual bool exportKeyImages(const std::string &filename, bool all=false)=0
exportKeyImages - exports key images to file
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 uint64_t blockHeight() const =0
description
Definition: setupmingw32.py:29
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
virtual int errorCode() const =0
virtual std::vector< std::string > signersKeys() const =0
signersKeys
virtual uint64_t balance(uint32_t accountIndex=0) const =0
virtual bool isDeterministic() const =0
isDeterministic - checks if wallet keys are deterministic
virtual uint64_t blockTarget()=0
returns current block target
const uint32_t T[512]
Definition: groestl_tables.h:36
Transfer(uint64_t _amount, const std::string &address)
Definition: transaction_info.cpp:40
virtual void refreshed()=0
refreshed - called when wallet refreshed by background thread or explicitly refreshed by calling "ref...
std::size_t getRowId() const
Definition: wallet2_api.h:312
T & operator*()
Definition: wallet2_api.h:63
virtual bool isBackgroundWallet() const =0
isBackgroundWallet - returns true if the wallet is a background wallet
std::size_t m_rowId
Definition: wallet2_api.h:229
virtual bool stopBackgroundSync(const std::string &wallet_password)=0
stopBackgroundSync - bring back spend key and process background synced txs
virtual void updated()=0
updated - generic callback, called when any event (sent/received/block reveived/etc) happened with th...
std::string m_address
Definition: wallet2_api.h:230
virtual void segregatePreForkOutputs(bool segregate)=0
sets whether pre-fork outs are to be segregated
Definition: wallet2_api.h:431
virtual void hardForkInfo(uint8_t &version, uint64_t &earliest_height) const =0
returns current hard fork info
virtual bool importKeyImages(const std::string &filename)=0
importKeyImages - imports key images from file
virtual bool importOutputs(const std::string &filename)=0
importOutputs - imports outputs from file
virtual bool watchOnly() const =0
watchOnly - checks if wallet is watch only
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 void setListener(WalletListener *)=0
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 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 std::string secretViewKey() const =0
secretViewKey - returns secret view key
std::string extra
Definition: wallet2_api.h:307
Device
Definition: wallet2_api.h:430
Definition: wallet2_api.h:1408
virtual ~Wallet()=0
Definition: wallet.cpp:327
static void debug(const std::string &category, const std::string &str)
Definition: wallet.cpp:436
Wallet * createWallet(const std::string &path, const std::string &password, const std::string &language, bool testnet=false)
Definition: wallet2_api.h:1161
virtual void segregationHeight(uint64_t height)=0
sets the height where segregation should occur
bool m_indeterminate
Definition: wallet2_api.h:343
virtual std::vector< uint64_t > mixin() const =0
std::string m_address
Definition: wallet2_api.h:273
std::size_t m_rowId
Definition: wallet2_api.h:272
int i
Definition: pymoduletest.py:23
virtual uint64_t estimateBlockChainHeight() const =0
estimateBlockChainHeight - returns estimate blockchain height. More accurate than approximateBlockCha...
virtual void unconfirmedMoneyReceived(const std::string &txId, uint64_t amount)=0
unconfirmedMoneyReceived - called when payment arrived in tx pool
virtual uint64_t getRefreshFromBlockHeight() const =0
getRestoreHeight - get wallet creation height
virtual bool isOffline() const =0
virtual bool isPending() const =0
std::string getAddress() const
Definition: wallet2_api.h:235
virtual bool useForkRules(uint8_t version, int64_t early_blocks) const =0
check if hard fork rules should be used
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:1269
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 ...
Definition: wallet2_api.h:49
::std::string string
Definition: gtest-port.h:1097
virtual bool hasMultisigPartialKeyImages() const =0
hasMultisigPartialKeyImages - checks if wallet needs to import multisig key images from other partici...
virtual void setRecoveringFromSeed(bool recoveringFromSeed)=0
setRecoveringFromSeed - set state recover form seed
virtual bool setCacheAttribute(const std::string &key, const std::string &val)=0
setCacheAttribute - attach an arbitrary string to a wallet cache attribute
virtual bool commit(const std::string &filename="", bool overwrite=false)=0
virtual std::string address(uint32_t accountIndex=0, uint32_t addressIndex=0) const =0
virtual std::string filename() const =0
filename - returns wallet filename
virtual std::string path() const =0
uint32_t threshold
Definition: wallet2_api.h:329
virtual std::string resolveOpenAlias(const std::string &address, bool &dnssec_valid) const =0
resolves an OpenAlias address to a monero address
virtual void setLabel(uint32_t accountIndex, const std::string &label)=0
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...
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 bool setProxy(const std::string &address)=0
sets proxy address, empty string to disable
virtual std::vector< uint64_t > amount() const =0
virtual std::string multisigSignData()=0
multisigSignData
t
Definition: console.py:33
virtual void signMultisigTx()=0
virtual uint64_t txCount() const =0
txCount - number of transactions current transaction will be splitted to
Status
Definition: wallet2_api.h:75
virtual std::string errorString() const =0
in case error status, returns error string
virtual std::string getCacheAttribute(const std::string &key) const =0
getCacheAttribute - return an arbitrary string attached to a wallet cache attribute ...
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 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
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:1195
virtual size_t numSubaddresses(uint32_t accountIndex) const =0
numSubaddresses - returns the number of existing subaddresses associated with the specified subaddres...
virtual bool deleteRow(std::size_t rowId)=0
virtual bool addRow(const std::string &dst_addr, const std::string &payment_id, const std::string &description)=0
virtual uint64_t daemonBlockChainTargetHeight() const =0
daemonBlockChainTargetHeight - returns daemon blockchain target height
std::string getLabel() const
Definition: wallet2_api.h:309
Definition: wallet2_api.h:444
Definition: wallet2_api.h:251
virtual void setTrustedDaemon(bool arg)=0
Definition: wallet2_api.h:85
virtual bool indeterminate() const
Definition: wallet2_api.h:339
virtual bool store(const std::string &path)=0
store - stores wallet to file.
virtual void addSubaddressAccount(const std::string &label)=0
addSubaddressAccount - appends a new subaddress account at the end of the last major index of existin...
const char * key
Definition: hmac_keccak.cpp:40
Definition: wallet2_api.h:138
Definition: wallet2_api.h:58
virtual bool lockKeysFile()=0
locks/unlocks the keys file; returns true on success
static void warning(const std::string &category, const std::string &str)
Definition: wallet.cpp:444
AddressBookRow - provides functions to manage address book.
Definition: wallet2_api.h:220
Definition: wallet2_api.h:334
Definition: minixmlvalid.c:15
virtual void setLabel(uint32_t accountIndex, uint32_t addressIndex, const std::string &label)=0
The AddressBook - interface for Book.
Definition: wallet2_api.h:245
Definition: wallet2_api.h:176
virtual TransactionHistory * history()=0
virtual std::vector< TransactionInfo * > getAll() const =0
virtual void addRow(uint32_t accountIndex, const std::string &label)=0
std::string m_unlockedBalance
Definition: wallet2_api.h:305
virtual void pauseRefresh()=0
pauseRefresh - pause refresh thread
Definition: wallet2_api.h:291
virtual void setOffline(bool offline)=0
virtual ~WalletListener()=0
Definition: wallet.cpp:329
std::tuple< uint64_t, uint64_t, std::vector< tools::wallet2::transfer_details > > outputs
Definition: cold-outputs.cpp:53
Interface for wallet operations.
Definition: wallet2_api.h:428
virtual void addRow(const std::string &label)=0
virtual size_t importMultisigImages(const std::vector< std::string > &images)=0
importMultisigImages - imports other participants&#39; multisig images
virtual int status() const =0
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 void setSubaddressLabel(uint32_t accountIndex, uint32_t addressIndex, const std::string &label)=0
setSubaddressLabel - sets the label of the specified subaddress
Definition: wallet2_api.h:249
std::string mainAddress() const
Definition: wallet2_api.h:469
virtual bool startBackgroundSync()=0
startBackgroundSync - sync the chain in the background with just view key
tools::wallet2::message_signature_result_t result
Definition: signature.cpp:62
virtual uint64_t approximateBlockChainHeight() const =0
approximateBlockChainHeight - returns approximate blockchain height calculated from date/time ...
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.
unsigned char uint8_t
Definition: stdint.h:124
virtual ~AddressBook()=0
Definition: address_book.cpp:42
virtual size_t numSubaddressAccounts() const =0
numSubaddressAccounts - returns the number of existing subaddress accounts
Definition: address_book.cpp:40
Definition: wallet2_api.h:86
virtual UnsignedTransaction * loadUnsignedTx(const std::string &unsigned_filename)=0
loadUnsignedTx - creates transaction from unsigned tx file
Definition: wallet2_api.h:47
virtual bool isBackgroundSyncing() const =0
isBackgroundSyncing - returns true if the wallet is background syncing
virtual bool sign(const std::string &signedFileName)=0
sign - Sign txs and saves to file
virtual bool setUserNote(const std::string &txid, const std::string &note)=0
setUserNote - attach an arbitrary string note to a txid
Definition: wallet2_api.h:250
MultisigState()
Definition: wallet2_api.h:325
virtual bool setPassword(const std::string &password)=0
virtual void setRefreshFromBlockHeight(uint64_t refresh_from_block_height)=0
setRefreshFromBlockHeight - start refresh from block height on recover
Definition: wallet2_api.h:1404
Definition: wallet2_api.h:77
Definition: wallet2_api.h:1407
Wallet * openWallet(const std::string &path, const std::string &password, bool testnet=false)
Definition: wallet2_api.h:1176
LogLevel
Definition: wallet2_api.h:1403
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
std::string m_paymentId
Definition: wallet2_api.h:231
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 secretSpendKey() const =0
secretSpendKey - returns secret spend key
Direction
Definition: wallet2_api.h:171
virtual bool checkSpendProof(const std::string &txid, const std::string &message, const std::string &signature, bool &good) const =0
virtual uint64_t blockchainTargetHeight()=0
returns current blockchain target height
virtual PendingTransaction * createSweepUnmixableTransaction()=0
createSweepUnmixableTransaction creates transaction with unmixable outputs.
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)
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 uint64_t unlockedBalance(uint32_t accountIndex=0) const =0
virtual std::vector< SubaddressAccountRow * > getAll() const =0
virtual void setTxNote(const std::string &txid, const std::string &note)=0
Definition: wallet2_api.h:1406
virtual void setDaemonAddress(const std::string &address)=0
set the daemon address (hostname and port)
virtual std::string signMultisigParticipant(const std::string &message) const =0
signMultisigParticipant signs given message with the multisig public signer key
virtual void moneyReceived(const std::string &txId, uint64_t amount)=0
moneyReceived - called when money received
virtual void refresh()=0
virtual std::vector< uint64_t > fee() const =0
Priority
Definition: wallet2_api.h:81
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:691
virtual uint64_t txCount() const =0
txCount - number of transactions current transaction will be splitted to
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:303
virtual std::string errorString() const =0
returns verbose error string regarding last error;
virtual std::string getSpendProof(const std::string &txid, const std::string &message) const =0
virtual std::string confirmationMessage() const =0
virtual std::string errorString() const =0
Definition: wallet2_api.h:76
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 ...
Definition: wallet2_api.h:83
virtual void deviceShowAddress(uint32_t accountIndex, uint32_t addressIndex, const std::string &paymentId)=0
shows address on device display
virtual bool connected(uint32_t *version=NULL)=0
returns whether the daemon can be reached, and its version number
virtual void setSeedLanguage(const std::string &arg)=0
virtual bool reconnectDevice()=0
attempt to reconnect to hardware device
static uint64_t maximumAllowedAmount()
Definition: wallet.cpp:421
WalletManager - provides functions to manage wallets.
Definition: wallet2_api.h:1148
const portMappingElt code
Definition: portlistingparse.c:22
virtual bool setDevicePin(const std::string &pin)
Definition: wallet2_api.h:466
virtual bool isFailed() const =0
virtual void keyReuseMitigation2(bool mitigation)=0
secondary key reuse mitigation
virtual optional< std::string > onDevicePassphraseRequest(bool &on_device)
called by device when passphrase entry is needed
Definition: wallet2_api.h:408
virtual uint32_t subaddrAccount() const =0
std::string getAddress() const
Definition: wallet2_api.h:277
virtual bool setDescription(std::size_t index, const std::string &description)=0
bool set
Definition: wallet2_api.h:67
uint64_t unlockedBalanceAll() const
Definition: wallet2_api.h:623
virtual std::vector< uint32_t > subaddrAccount() const =0
uint32_t total
Definition: wallet2_api.h:330
bool testnet() const
Definition: wallet2_api.h:473
virtual Device getDeviceType() const =0
Queries backing device for wallet keys.
static void add(ge_p3 &p3, const ge_cached &other)
Definition: multiexp.cc:144
virtual bool unlockKeysFile()=0
virtual double miningHashRate()=0
returns current mining hash rate (0 if not mining)
virtual PendingTransaction * restoreMultisigTransaction(const std::string &signData)=0
restoreMultisigTransaction creates PendingTransaction from signData
The TransactionHistory - interface for displaying transaction history.
Definition: wallet2_api.h:206
unsigned int uint32_t
Definition: stdint.h:126
virtual double progress() const
Definition: wallet2_api.h:338
static std::string paymentIdFromAddress(const std::string &str, bool testnet)
Definition: wallet2_api.h:696
virtual void setSubaddressLookahead(uint32_t major, uint32_t minor)=0
setSubaddressLookahead - set size of subaddress lookahead
virtual int lookupPaymentID(const std::string &payment_id) const =0
Definition: wallet2_api.h:172
virtual std::string getMultisigInfo() const =0
getMultisigInfo
virtual std::string publicViewKey() const =0
publicViewKey - returns public view key
virtual uint64_t fee() const =0
virtual std::string signMessage(const std::string &message, const std::string &address="")=0
std::string extra
Definition: wallet2_api.h:234
virtual uint64_t coldKeyImageSync(uint64_t &spent, uint64_t &unspent)=0
cold-device protocol key image sync
virtual bool connectToDaemon()=0
connectToDaemon - connects to the daemon. TODO: check if it can be removed
static void error(const std::string &category, const std::string &str)
Definition: wallet.cpp:448
ConnectionStatus
Definition: wallet2_api.h:442
virtual void disposeTransaction(PendingTransaction *t)=0
disposeTransaction - destroys transaction object
virtual bool closeWallet(Wallet *wallet, bool store=true)=0
Closes wallet. In case operation succeeded, wallet object deleted. in case operation failed...
AddressBookRow(std::size_t _rowId, const std::string &_address, const std::string &_paymentId, const std::string &_description)
Definition: wallet2_api.h:222
std::string getBalance() const
Definition: wallet2_api.h:310
virtual void startRefresh()=0
StartRefresh - Start/resume refresh thread (refresh every 10 seconds)
virtual std::vector< AddressBookRow * > getAll() const =0
virtual std::time_t timestamp() const =0
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 getBytesReceived()=0
get bytes received
std::string m_label
Definition: wallet2_api.h:274
Definition: wallet2_api.h:264
virtual std::string getTxKey(const std::string &txid) const =0
virtual void onDeviceButtonPressed()
called by device if the button was pressed
Definition: wallet2_api.h:396
virtual void onDeviceProgress(const DeviceProgress &event)
Signalizes device operation progress.
Definition: wallet2_api.h:416
virtual bool isCoinbase() const =0
bool isAddressLocal(const std::string &address)
Definition: utils.cpp:41
unsigned __int64 uint64_t
Definition: stdint.h:136
virtual std::string keysFilename() const =0
keysFilename - returns keys filename. usually this formed as "wallet_filename".keys ...
virtual int status() const =0
static bool paymentIdValid(const std::string &paiment_id)
Definition: wallet.cpp:358
virtual void stop()=0
stop - interrupts wallet refresh() loop once (doesn&#39;t stop background refresh thread) ...
std::string m_balance
Definition: wallet2_api.h:304
std::size_t getRowId() const
Definition: wallet2_api.h:279
Definition: wallet2_api.h:347
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
virtual void newBlock(uint64_t height)=0
newBlock - called when new block received
Definition: wallet2_api.h:282
virtual TransactionInfo * transaction(int index) const =0
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:1238
virtual uint64_t unlockTime() const =0
Definition: wallet2_api.h:1405
virtual bool blackballOutput(const std::string &amount, const std::string &offset)=0
blackballs an output
virtual bool isMining()=0
returns true iff mining
static void init(const char *argv0, const char *default_log_base_name)
Definition: wallet2_api.h:702
NetworkType
Definition: wallet2_api.h:46
virtual void onDeviceButtonRequest(uint64_t code)
called by device if the action is required
Definition: wallet2_api.h:391
virtual bool isKeysFileLocked()=0
returns true if the keys file is locked
Definition: wallet2_api.h:48
virtual bool stopMining()=0
stops mining
#define false
Definition: stdbool.h:37
virtual bool exportOutputs(const std::string &filename, bool all=false)=0
importOutputs - exports outputs to file
virtual std::string seed(const std::string &seed_offset="") const =0
virtual AddressBook * addressBook()=0
Definition: wallet.py:1
virtual void moneySpent(const std::string &txId, uint64_t amount)=0
moneySpent - called when money spent
std::string getAddress() const
Definition: wallet2_api.h:308
The TransactionInfo - interface for displaying transaction information.
Definition: wallet2_api.h:169
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 ...
const std::string address
Definition: wallet2_api.h:179
version
Supported socks variants.
Definition: socks.h:57
virtual bool lightWalletLogin(bool &isNewWallet) const =0
Light wallet authenticate and login.
std::string getDescription() const
Definition: wallet2_api.h:236
virtual uint64_t confirmations() const =0
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 daemonBlockChainHeight() const =0
daemonBlockChainHeight - returns daemon blockchain height
virtual std::set< uint32_t > subaddrIndex() const =0
virtual uint64_t networkDifficulty()=0
returns current network difficulty
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...
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...
static bool addressValid(const std::string &str, bool testnet)
Definition: wallet2_api.h:686
virtual void refreshAsync()=0
refreshAsync - refreshes wallet asynchronously.
virtual std::vector< SubaddressRow * > getAll() const =0
std::string getLabel() const
Definition: wallet2_api.h:278
Definition: wallet2_api.h:1400
std::string m_description
Definition: wallet2_api.h:232
Definition: wallet2_api.h:137
virtual const std::vector< Transfer > & transfers() const =0
only applicable for output transactions
virtual ~TransactionInfo()=0
Definition: transaction_info.cpp:38
const char *const str
Definition: portlistingparse.c:23
virtual bool unblackballOutput(const std::string &amount, const std::string &offset)=0
unblackballs an output
virtual std::string publicMultisigSignerKey() const =0
publicMultisigSignerKey - returns public signer key
std::string getPaymentId() const
Definition: wallet2_api.h:237
virtual SubaddressAccount * subaddressAccount()=0
virtual ~Subaddress()=0
Definition: subaddress.cpp:39
uint32_t address
Definition: getifaddr.c:269
POD_CLASS signature
Definition: crypto.h:98
virtual optional< std::string > onDevicePinRequest()
called by device when PIN is needed
Definition: wallet2_api.h:401
virtual std::vector< std::string > txid() const =0
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 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
static uint64_t amountFromString(const std::string &amount)
Definition: wallet.cpp:337
virtual ~SubaddressAccount()=0
Definition: subaddress_account.cpp:39
virtual bool refresh()=0
refresh - refreshes the wallet, updating transactions from daemon
virtual void refresh(uint32_t accountIndex)=0
static void setLogLevel(int level)
Definition: wallet_manager.cpp:401
Definition: wallet2_api.h:437
Definition: wallet2_api.h:315
static std::string displayAmount(uint64_t amount)
Definition: wallet.cpp:332
string daemon_address
Definition: transfers.cpp:41
virtual std::string label() const =0
virtual std::string description() const =0
virtual std::vector< std::string > paymentId() const =0
bool isMultisig
Definition: wallet2_api.h:327
POD_CLASS key_image
Definition: crypto.h:92
virtual const std::string & getPassword() const =0
BackgroundSyncType
Definition: wallet2_api.h:448
bool isReady
Definition: wallet2_api.h:328
virtual std::string errorString() const =0
virtual std::string publicSpendKey() const =0
publicSpendKey - returns public spend key
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.
Status
Definition: wallet2_api.h:136
virtual MultisigState multisig() const =0
multisig - returns current state of multisig wallet creation process
virtual void setRecoveringFromDevice(bool recoveringFromDevice)=0
setRecoveringFromDevice - set state to recovering from device
const T & operator*() const
Definition: wallet2_api.h:62
virtual void refresh()=0
virtual bool trustedDaemon() const =0
virtual uint32_t defaultMixin() const =0
defaultMixin - returns number of mixins used in transactions
Definition: wallet2_api.h:1411
signed __int64 int64_t
Definition: stdint.h:135
Definition: console.py:1
virtual uint64_t getBytesSent()=0
get bytes sent
int bool
Definition: stdbool.h:35
Definition: main.cpp:100
virtual uint64_t blockChainHeight() const =0
blockChainHeight - returns current blockchain height
optional()
Definition: wallet2_api.h:60
virtual std::string getTxProof(const std::string &txid, const std::string &address, const std::string &message) const =0
virtual void rescanBlockchainAsync()=0
rescanBlockchainAsync - rescans wallet asynchronously, starting from genesys
Transaction-like interface for sending money.
Definition: wallet2_api.h:73
Definition: wallet2_api.h:324
static std::string genPaymentId()
Definition: wallet.cpp:351
virtual std::string integratedAddress(const std::string &payment_id) const =0
integratedAddress - returns integrated address for current wallet address and given payment_id...
const uint64_t amount
Definition: wallet2_api.h:178
virtual bool blackballOutputs(const std::vector< std::string > &outputs, bool add)=0
blackballs a set of outputs
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 bool setProxy(const std::string &address)=0
virtual std::vector< std::string > recipientAddress() const =0
std::string extra
Definition: wallet2_api.h:276
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
virtual bool createWatchOnly(const std::string &path, const std::string &password, const std::string &language) const =0
createWatchOnly - Creates a watch only wallet
virtual int direction() const =0
virtual uint64_t amount() const =0
ErrorCode
Definition: wallet2_api.h:247
virtual uint64_t minMixinCount() const =0
Definition: wallet2_api.h:449
Definition: uri.py:1
virtual NetworkType nettype() const =0
virtual bool rescanBlockchain()=0
rescanBlockchain - rescans the wallet, updating transactions from daemon
virtual std::string paymentId() const =0
Definition: wallet2_api.h:433
virtual uint64_t dust() const =0
virtual void refresh()=0
static uint64_t amountFromDouble(double amount)
Definition: wallet.cpp:344
static int priority(Level level)
Definition: easylogging++.cc:2128
virtual bool walletExists(const std::string &path)=0
TODO: delme walletExists - check if the given filename is the wallet.
virtual Subaddress * subaddress()=0
Wallet * recoveryWallet(const std::string &path, const std::string &mnemonic, bool testnet=false, uint64_t restoreHeight=0)
Definition: wallet2_api.h:1211
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 ConnectionStatus connected() const =0
connected - checks if the wallet connected to the daemon
std::size_t m_rowId
Definition: wallet2_api.h:301
virtual std::string errorString() const =0
static void info(const std::string &category, const std::string &str)
Definition: wallet.cpp:440
void onStartup()
Definition: utils.cpp:51
virtual bool rescanSpent()=0
virtual std::vector< std::string > findWallets(const std::string &path)=0
findWallets - searches for the wallet files by given path name recursively
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 ...
Definition: wallet2_api.h:1410
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 ~PendingTransaction()=0
Definition: pending_transaction.cpp:49
virtual int status() const =0
returns wallet status (Status_Ok | Status_Error)
virtual std::string getSubaddressLabel(uint32_t accountIndex, uint32_t addressIndex) const =0
getSubaddressLabel - gets the label of the specified subaddress
double m_progress
Definition: wallet2_api.h:342
std::string getUnlockedBalance() const
Definition: wallet2_api.h:311
virtual std::string hash() const =0
transaction_id
static std::string paymentIdFromAddress(const std::string &str, NetworkType nettype)
Definition: wallet.cpp:411
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
Definition: wallet2_api.h:438
virtual ~TransactionHistory()=0
Definition: transaction_history.cpp:47
virtual bool setDevicePassphrase(const std::string &passphrase)
Definition: wallet2_api.h:467
virtual uint64_t fee() const =0
DeviceProgress(double progress, bool indeterminate=false)
Definition: wallet2_api.h:336
Definition: wallet2_api.h:432
Definition: wallet2_api.h:439
uint64_t balanceAll() const
Definition: wallet2_api.h:616
virtual void setAutoRefreshInterval(int millis)=0
setAutoRefreshInterval - setup interval for automatic refresh.
tuple message
Definition: gtest_output_test.py:331
virtual bool exportMultisigImages(std::string &images)=0
exportMultisigImages - exports transfers&#39; key images
std::size_t getRowId() const
Definition: wallet2_api.h:238
virtual int count() const =0
virtual uint64_t amount() const =0
DeviceProgress()
Definition: wallet2_api.h:335
Definition: wallet2_api.h:248
#define true
Definition: stdbool.h:36
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
static bool addressValid(const std::string &str, NetworkType nettype)
Definition: wallet.cpp:369
Transaction-like interface for sending money.
Definition: wallet2_api.h:134
bool mainnet() const
Definition: wallet2_api.h:472
Status
Definition: wallet2_api.h:436
static WalletManager * getWalletManager()
Definition: wallet_manager.cpp:389
optional(const T &t)
Definition: wallet2_api.h:61
virtual ~UnsignedTransaction()=0
Definition: unsigned_transaction.cpp:47
virtual uint64_t blockchainHeight()=0
returns current blockchain height
virtual std::string getDefaultDataDir() const =0
virtual BackgroundSyncType getBackgroundSyncType() const =0
getBackgroundSyncType - get mode the wallet background syncs in
Definition: wallet2_api.h:173
std::string m_address
Definition: wallet2_api.h:302
T t
Definition: wallet2_api.h:66
virtual bool submitTransaction(const std::string &fileName)=0
submitTransaction - submits transaction in signed tx file
Definition: wallet2_api.h:1409
virtual uint64_t estimateTransactionFee(const std::vector< std::pair< std::string, uint64_t >> &destinations, PendingTransaction::Priority priority) const =0
Estimates transaction fee.
virtual std::string getUserNote(const std::string &txid) const =0
getUserNote - return an arbitrary string note attached to a txid
static void setLogCategories(const std::string &categories)
Definition: wallet_manager.cpp:406