public override async Task <IPaymentMethodDetails> CreatePaymentMethodDetails(InvoiceLogs logs, EthereumSupportedPaymentMethod supportedPaymentMethod, PaymentMethod paymentMethod, StoreData store, EthereumBTCPayNetwork network, object preparePaymentObject) { if (preparePaymentObject is null) { return(new EthereumLikeOnChainPaymentMethodDetails() { Activated = false }); } if (!_ethereumService.IsAvailable(network.CryptoCode, out var error)) { throw new PaymentMethodUnavailableException(error ?? $"Not configured yet"); } var invoice = paymentMethod.ParentEntity; if (!(preparePaymentObject is Prepare ethPrepare)) { throw new ArgumentException(); } var address = await ethPrepare.ReserveAddress(invoice.Id); if (address is null || address.Failed) { throw new PaymentMethodUnavailableException($"could not generate address"); } return(new EthereumLikeOnChainPaymentMethodDetails() { DepositAddress = address.Address, Index = address.Index, XPub = address.XPub, Activated = true }); }