Line data Source code
1 : // Copyright (c) 2017-2020 The Bitcoin Core developers 2 : // Distributed under the MIT software license, see the accompanying 3 : // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 : 5 : #ifndef BITCOIN_WALLETINITINTERFACE_H 6 : #define BITCOIN_WALLETINITINTERFACE_H 7 : 8 : class ArgsManager; 9 : namespace interfaces { 10 : class WalletLoader; 11 : namespace CoinJoin { 12 : class Loader; 13 : } // namespace CoinJoin 14 : } // namespace interfaces 15 : namespace node { 16 : struct NodeContext; 17 : } // namespace node 18 : 19 : class WalletInitInterface { 20 : public: 21 : /** Is the wallet component enabled */ 22 : virtual bool HasWalletSupport() const = 0; 23 : /** Get wallet help string */ 24 : virtual void AddWalletOptions(ArgsManager& argsman) const = 0; 25 : /** Check wallet parameter interaction */ 26 : virtual bool ParameterInteraction() const = 0; 27 : /** Add wallets that should be opened to list of chain clients. */ 28 : virtual void Construct(node::NodeContext& node) const = 0; 29 : 30 : // Dash Specific WalletInitInterface 31 : virtual void AutoLockMasternodeCollaterals(interfaces::WalletLoader& wallet_loader) const = 0; 32 : virtual void InitCoinJoinSettings(interfaces::CoinJoin::Loader& coinjoin_loader, interfaces::WalletLoader& wallet_loader) const = 0; 33 : virtual void InitAutoBackup() const = 0; 34 : 35 0 : virtual ~WalletInitInterface() {} 36 : }; 37 : 38 : extern const WalletInitInterface& g_wallet_init_interface; 39 : 40 : #endif // BITCOIN_WALLETINITINTERFACE_H