+ if (ptr != 0) { bindings.ChainMonitor_free(ptr); }
+ }
+
+ /**
+ * Dispatches to per-channel monitors, which are responsible for updating their on-chain view
+ * of a channel and reacting accordingly based on transactions in the connected block. See
+ * [`ChannelMonitor::block_connected`] for details. Any HTLCs that were resolved on chain will
+ * be returned by [`chain::Watch::release_pending_monitor_events`].
+ *
+ * Calls back to [`chain::Filter`] if any monitor indicated new outputs to watch. Subsequent
+ * calls must not exclude any transactions matching the new outputs nor any in-block
+ * descendants of such transactions. It is not necessary to re-fetch the block to obtain
+ * updated `txdata`.
+ */
+ public void block_connected(byte[] header, TwoTuple<Long, byte[]>[] txdata, int height) {
+ bindings.ChainMonitor_block_connected(this.ptr, header, Arrays.stream(txdata).mapToLong(txdata_conv_24 -> bindings.C2Tuple_usizeTransactionZ_new(txdata_conv_24.a, txdata_conv_24.b)).toArray(), height);
+ /* TODO 2 TwoTuple<Long, byte[]> */;
+ }
+
+ /**
+ * Dispatches to per-channel monitors, which are responsible for updating their on-chain view
+ * of a channel and reacting accordingly to newly confirmed transactions. For details, see
+ * [`ChannelMonitor::transactions_confirmed`].
+ *
+ * Used instead of [`block_connected`] by clients that are notified of transactions rather than
+ * blocks. May be called before or after [`update_best_block`] for transactions in the
+ * corresponding block. See [`update_best_block`] for further calling expectations.
+ *
+ * [`block_connected`]: Self::block_connected
+ * [`update_best_block`]: Self::update_best_block
+ */
+ public void transactions_confirmed(byte[] header, TwoTuple<Long, byte[]>[] txdata, int height) {
+ bindings.ChainMonitor_transactions_confirmed(this.ptr, header, Arrays.stream(txdata).mapToLong(txdata_conv_24 -> bindings.C2Tuple_usizeTransactionZ_new(txdata_conv_24.a, txdata_conv_24.b)).toArray(), height);
+ /* TODO 2 TwoTuple<Long, byte[]> */;
+ }
+
+ /**
+ * Dispatches to per-channel monitors, which are responsible for updating their on-chain view
+ * of a channel and reacting accordingly based on the new chain tip. For details, see
+ * [`ChannelMonitor::update_best_block`].
+ *
+ * Used instead of [`block_connected`] by clients that are notified of transactions rather than
+ * blocks. May be called before or after [`transactions_confirmed`] for the corresponding
+ * block.
+ *
+ * Must be called after new blocks become available for the most recent block. Intermediary
+ * blocks, however, may be safely skipped. In the event of a chain re-organization, this only
+ * needs to be called for the most recent block assuming `transaction_unconfirmed` is called
+ * for any affected transactions.
+ *
+ * [`block_connected`]: Self::block_connected
+ * [`transactions_confirmed`]: Self::transactions_confirmed
+ * [`transaction_unconfirmed`]: Self::transaction_unconfirmed
+ */
+ public void update_best_block(byte[] header, int height) {
+ bindings.ChainMonitor_update_best_block(this.ptr, header, height);