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
            });
        }