export.h raw

   1  // Copyright (c) 2026-present The Bitcoin Core developers
   2  // Distributed under the MIT software license, see the accompanying
   3  // file COPYING or https://www.opensource.org/licenses/mit-license.php.
   4  
   5  #ifndef BITCOIN_WALLET_EXPORT_H
   6  #define BITCOIN_WALLET_EXPORT_H
   7  
   8  #include <threadsafety.h>
   9  #include <util/expected.h>
  10  #include <wallet/wallet.h>
  11  
  12  #include <optional>
  13  #include <vector>
  14  
  15  namespace wallet {
  16  // Struct containing all of the info from WalletDescriptor, except with the descriptor as a string,
  17  // and without its ID or cache.
  18  // Used when exporting descriptors from the wallet.
  19  struct WalletDescInfo {
  20      std::string descriptor;
  21      uint64_t creation_time;
  22      bool active;
  23      std::optional<bool> internal;
  24      std::optional<std::pair<int64_t,int64_t>> range;
  25      int64_t next_index;
  26  };
  27  
  28  //! Export the descriptors from a wallet so that they can be imported elsewhere
  29  util::Expected<std::vector<WalletDescInfo>, std::string> ExportDescriptors(const CWallet& wallet, bool export_private) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet);
  30  
  31  //! Make a new watchonly wallet file containing the public descriptors from this wallet
  32  //! The exported watchonly wallet file will be named and placed at the path specified in 'destination'
  33  util::Result<std::string> ExportWatchOnlyWallet(const CWallet& wallet, const fs::path& destination, WalletContext& context) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet);
  34  } // namespace wallet
  35  
  36  #endif // BITCOIN_WALLET_EXPORT_H
  37