public override void Configure(PoolConfig poolConfig, ClusterConfig clusterConfig)
        {
            _extraPoolConfig = poolConfig.Extra.SafeExtensionDataAs <CommerciumPoolConfigExtra>();
            _extraPoolPaymentProcessingConfig = poolConfig.PaymentProcessing?.Extra?.SafeExtensionDataAs <CommerciumPoolPaymentProcessingConfigExtra>();

            if (_extraPoolConfig?.MaxActiveJobs.HasValue == true)
            {
                _maxActiveJobs = _extraPoolConfig.MaxActiveJobs.Value;
            }

            base.Configure(poolConfig, clusterConfig);
        }
        public virtual Task ConfigureAsync(ClusterConfig clusterConfig, PoolConfig poolConfig)
        {
            Contract.RequiresNonNull(poolConfig, nameof(poolConfig));

            this.poolConfig    = poolConfig;
            this.clusterConfig = clusterConfig;

            extraPoolConfig = poolConfig.Extra.SafeExtensionDataAs <CommerciumPoolConfigExtra>();
            extraPoolPaymentProcessingConfig = poolConfig.PaymentProcessing.Extra.SafeExtensionDataAs <BitcoinPoolPaymentProcessingConfigExtra>();
            coinProperties = BitcoinProperties.GetCoinProperties(poolConfig.Coin.Type, poolConfig.Coin.Algorithm);

            logger = LogUtil.GetPoolScopedLogger(typeof(CommerciumPayoutHandler), poolConfig);

            var jsonSerializerSettings = ctx.Resolve <JsonSerializerSettings>();

            daemon = new DaemonClient(jsonSerializerSettings, messageBus, clusterConfig.ClusterName ?? poolConfig.PoolName, poolConfig.Id);
            daemon.Configure(extraPoolConfig.Wallets);

            return(Task.FromResult(true));
        }