### Question:
EclairWallet extends AbstractLightningWallet { @Override public String sendCoins(String destinationAddress, BigDecimal amount, String cryptoCurrency, String description) { Invoice invoice = callChecked(cryptoCurrency, () -> api.parseInvoice(destinationAddress)); log.info("Paying {} to invoice {}", amount, invoice); if (invoice.amount != null) { log.info("Invoices with amount not supported"); return null; } List<SentInfo> sentInfo = callChecked(() -> api.getSentInfoByPaymentHash(invoice.paymentHash)); if (sentInfo.stream().filter(i -> i.status == SentInfo.Status.SUCCEEDED).findAny().isPresent()) { log.info("Invoice already paid"); return null; } Long amountMsat = bitcoinToMSat(amount); String paymentId = callChecked(() -> api.payInvoice(destinationAddress, amountMsat)); for (int millis = 0; millis < API_POLL_MAX; millis += API_POLL_INTERVAL) { sleep(API_POLL_INTERVAL); SentInfo sentInfo2 = callChecked(() -> api.getSentInfoById(paymentId).get(0)); switch (sentInfo2.status) { case FAILED: log.error("Payment failed: id={}, paymentHash={}", sentInfo2.id, sentInfo2.paymentHash); return null; case SUCCEEDED: return sentInfo2.paymentHash; } } log.error("Payment result unknown; paymentId={}", paymentId); return null; } EclairWallet(String scheme, String host, int port, String password); @Override String sendCoins(String destinationAddress, BigDecimal amount, String cryptoCurrency, String description); @Override String getInvoice(BigDecimal cryptoAmount, String cryptoCurrency, Long paymentValidityInSec, String description); @Override List<? extends ILightningChannel> getChannels(); @Override boolean canSend(String invoice, BigDecimal amount, String cryptoCurrency); @Override BigDecimal getCryptoBalance(String cryptoCurrency); BigDecimal getReceivedAmount(String destinationAddress, String cryptoCurrency); @Override String getPubKey();  }### Answer:
@Ignore @Test public void sendCoins() { String paymentHash = w.sendCoins("lnbc1pws08zjpp5cnjgqj4qapr98uawh58wx6mc6s7vvtrg3ev7ezj4n7xpkztrhlzsdqu2askcmr9wssx7e3q2dshgmmndp5scqzysxqrrssug40fe2sj24n848p69w8093y0j5fl809qvxhjultkudcnnn3x8r8u3l5xq0ulllxdcthvzp5p2x3f3zrzfs23gmvvxkauewx2vqqnjcp629yl5", new BigDecimal("0.00000001"), CryptoCurrency.LBTC.getCode(), ""); System.out.println(paymentHash); }