/// <summary> /// Initializes a new instance of the <see cref="ColdStakingFeature"/> class. /// </summary> /// <param name="walletSyncManager">The synchronization manager for the wallet, tasked with keeping the wallet synced with the network.</param> /// <param name="walletManager">The wallet manager.</param> /// <param name="addressBookManager">The address book manager.</param> /// <param name="signals">The signals responsible for receiving blocks and transactions from the network.</param> /// <param name="chain">The chain of blocks.</param> /// <param name="connectionManager">The connection manager.</param> /// <param name="nodeSettings">The settings for the node.</param> /// <param name="walletSettings">The settings for the wallet.</param> /// <param name="loggerFactory">The factory used to create instance loggers.</param> /// <param name="nodeStats">The node stats object used to register node stats.</param> public ColdStakingFeature( IWalletSyncManager walletSyncManager, IWalletManager walletManager, IAddressBookManager addressBookManager, IConnectionManager connectionManager, NodeSettings nodeSettings, WalletSettings walletSettings, ILoggerFactory loggerFactory, INodeStats nodeStats) { Guard.NotNull(walletManager, nameof(walletManager)); Guard.NotNull(loggerFactory, nameof(loggerFactory)); this.coldStakingManager = walletManager as ColdStakingManager; Guard.NotNull(this.coldStakingManager, nameof(this.coldStakingManager)); this.logger = loggerFactory.CreateLogger(this.GetType().FullName); this.loggerFactory = loggerFactory; this.walletSyncManager = walletSyncManager; this.addressBookManager = addressBookManager; this.connectionManager = connectionManager; this.nodeSettings = nodeSettings; this.walletSettings = walletSettings; nodeStats.RemoveStats(StatsType.Component, typeof(WalletFeature).Name); nodeStats.RemoveStats(StatsType.Inline, typeof(WalletFeature).Name); nodeStats.RegisterStats(this.AddComponentStats, StatsType.Component, this.GetType().Name); nodeStats.RegisterStats(this.AddInlineStats, StatsType.Inline, this.GetType().Name, 800); }