diff --git a/src/wallet/MoneroWallet.cpp b/src/wallet/MoneroWallet.cpp index bb45625..267c6d3 100644 --- a/src/wallet/MoneroWallet.cpp +++ b/src/wallet/MoneroWallet.cpp @@ -274,17 +274,7 @@ namespace monero { MoneroAccount account; account.index = accountIdx; account.primaryAddress = MoneroWallet::getAddress(0, 0); - - // build subaddresses - if (includeSubaddresses) { - for (uint32_t subaddressIdx = 0; subaddressIdx < wallet2->get_num_subaddresses(accountIdx); subaddressIdx++) { - MoneroSubaddress subaddress; - subaddress.accountIndex = accountIdx; - subaddress.index = subaddressIdx; - subaddress.address = MoneroWallet::getAddress(accountIdx, subaddressIdx); - account.subaddresses.push_back(subaddress); - } - } + if (includeSubaddresses) account.subaddresses = getSubaddresses(accountIdx); accounts.push_back(account); } @@ -303,10 +293,46 @@ namespace monero { throw runtime_error("Not implemented"); } + MoneroAccount MoneroWallet::createAccount(const string label) { + throw runtime_error("Not implemented"); + } + + vector MoneroWallet::getSubaddresses(const uint32_t accountIdx) const { + vector subaddresses; + for (uint32_t subaddressIdx = 0; subaddressIdx < wallet2->get_num_subaddresses(accountIdx); subaddressIdx++) { + MoneroSubaddress subaddress; + subaddress.accountIndex = accountIdx; + subaddress.index = subaddressIdx; + subaddress.address = getAddress(accountIdx, subaddressIdx); + subaddresses.push_back(subaddress); + } + return subaddresses; + } + + vector MoneroWallet::getSubaddresses(const uint32_t accountIdx, const vector subaddressIndices) const { + throw runtime_error("Not implemented"); + } + + MoneroSubaddress MoneroWallet::getSubaddress(const uint32_t accountIdx, const uint32_t subaddressIdx) const { + throw runtime_error("Not implemented"); + } + + MoneroSubaddress MoneroWallet::createSubaddress(const uint32_t accountIdx, const string label) { + throw runtime_error("Not implemented"); + } + + // create account + + // getSubaddresses + + // createSubaddress + string MoneroWallet::getAddress(uint32_t accountIdx, uint32_t subaddressIdx) const { return wallet2->get_subaddress_as_str({accountIdx, subaddressIdx}); } + // get address index + uint64_t MoneroWallet::getBalance() const { return wallet2->balance_all(); } diff --git a/src/wallet/MoneroWallet.h b/src/wallet/MoneroWallet.h index cf1e9b1..611fc9b 100644 --- a/src/wallet/MoneroWallet.h +++ b/src/wallet/MoneroWallet.h @@ -403,64 +403,49 @@ namespace monero { * @return the retrieved account */ MoneroAccount getAccount(const uint32_t accountIdx, const bool includeSubaddresses) const; -// -// /** -// * Create a new account without a label. -// * -// * @return the created account -// */ -// public MoneroAccount createAccount(); -// -// /** -// * Create a new account. -// * -// * @param label specifies the label for the account (optional) -// * @return the created account -// */ -// public MoneroAccount createAccount(String label); -// -// /** -// * Get all subaddresses in an account. -// * -// * @param accountIdx specifies the account to get subaddresses within -// * @return List are the retrieved subaddresses -// */ -// public List getSubaddresses(int accountIdx); -// -// /** -// * Get subaddresses in an account. -// * -// * @param accountIdx specifies the account to get subaddresses within -// * @param subaddressIndices are specific subaddresses to get (optional) -// * @return the retrieved subaddresses -// */ -// public List getSubaddresses(int accountIdx, List subaddressIndices); -// -// /** -// * Get a subaddress. -// * -// * @param accountIdx specifies the index of the subaddress's account -// * @param subaddressIdx specifies index of the subaddress within the account -// * @return the retrieved subaddress -// */ -// public MoneroSubaddress getSubaddress(int accountIdx, int subaddressIdx); -// -// /** -// * Create a subaddress within an account and without a label. -// * -// * @param accountIdx specifies the index of the account to create the subaddress within -// * @return the created subaddress -// */ -// public MoneroSubaddress createSubaddress(int accountIdx); -// -// /** -// * Create a subaddress within an account. -// * -// * @param accountIdx specifies the index of the account to create the subaddress within -// * @param label specifies the the label for the subaddress (optional) -// * @return the created subaddress -// */ -// public MoneroSubaddress createSubaddress(int accountIdx, String label); + + /** + * Create a new account. + * + * @param label specifies the label for the account (optional) + * @return the created account + */ + MoneroAccount createAccount(const string label = ""); + + /** + * Get all subaddresses in an account. + * + * @param accountIdx specifies the account to get subaddresses within + * @return List are the retrieved subaddresses + */ + vector getSubaddresses(const uint32_t accountIdx) const; + + /** + * Get subaddresses in an account. + * + * @param accountIdx specifies the account to get subaddresses within + * @param subaddressIndices are specific subaddresses to get (optional) + * @return the retrieved subaddresses + */ + vector getSubaddresses(const uint32_t accountIdx, const vector subaddressIndices) const; + + /** + * Get a subaddress. + * + * @param accountIdx specifies the index of the subaddress's account + * @param subaddressIdx specifies index of the subaddress within the account + * @return the retrieved subaddress + */ + MoneroSubaddress getSubaddress(const uint32_t accountIdx, const uint32_t subaddressIdx) const; + + /** + * Create a subaddress within an account. + * + * @param accountIdx specifies the index of the account to create the subaddress within + * @param label specifies the the label for the subaddress (optional) + * @return the created subaddress + */ + MoneroSubaddress createSubaddress(uint32_t accountIdx, const string label = ""); /** * Get the address of a specific subaddress. @@ -469,7 +454,9 @@ namespace monero { * @param subaddressIdx specifies the subaddress index within the account * @return the receive address of the specified subaddress */ - string getAddress(uint32_t accountIdx, uint32_t subaddressIdx) const; + string getAddress(const uint32_t accountIdx, const uint32_t subaddressIdx) const; + + // get address index // /** // * Get the account and subaddress index of the given address. @@ -493,7 +480,7 @@ namespace monero { * @param accountIdx is the index of the account to get the balance of * @return the account's balance */ - uint64_t getBalance(uint32_t accountIdx) const; + uint64_t getBalance(uint32_t accountIdx) const; // TODO: this param should be const and others /** * Get a subaddress's balance.