+ /**
+ * Marks a channel in the graph as failed if a corresponding HTLC fail was sent.
+ * If permanent, removes a channel from the local storage.
+ * May cause the removal of nodes too, if this was their last channel.
+ * If not permanent, makes channels unavailable for routing.
+ */
+ public void channel_failed(long short_channel_id, boolean is_permanent) {
+ bindings.NetworkGraph_channel_failed(this.ptr, short_channel_id, is_permanent);
+ Reference.reachabilityFence(this);
+ Reference.reachabilityFence(short_channel_id);
+ Reference.reachabilityFence(is_permanent);
+ }
+
+ /**
+ * Marks a node in the graph as permanently failed, effectively removing it and its channels
+ * from local storage.
+ */
+ public void node_failed_permanent(byte[] node_id) {
+ bindings.NetworkGraph_node_failed_permanent(this.ptr, InternalUtils.check_arr_len(node_id, 33));
+ Reference.reachabilityFence(this);
+ Reference.reachabilityFence(node_id);
+ }
+
+ /**
+ * Removes information about channels that we haven't heard any updates about in some time.
+ * This can be used regularly to prune the network graph of channels that likely no longer
+ * exist.
+ *
+ * While there is no formal requirement that nodes regularly re-broadcast their channel
+ * updates every two weeks, the non-normative section of BOLT 7 currently suggests that
+ * pruning occur for updates which are at least two weeks old, which we implement here.
+ *
+ * Note that for users of the `lightning-background-processor` crate this method may be
+ * automatically called regularly for you.
+ *
+ * This method will also cause us to stop tracking removed nodes and channels if they have been
+ * in the map for a while so that these can be resynced from gossip in the future.
+ *
+ * This method is only available with the `std` feature. See
+ * [`NetworkGraph::remove_stale_channels_and_tracking_with_time`] for `no-std` use.
+ */
+ public void remove_stale_channels_and_tracking() {
+ bindings.NetworkGraph_remove_stale_channels_and_tracking(this.ptr);
+ Reference.reachabilityFence(this);
+ }
+
+ /**
+ * Removes information about channels that we haven't heard any updates about in some time.
+ * This can be used regularly to prune the network graph of channels that likely no longer
+ * exist.
+ *
+ * While there is no formal requirement that nodes regularly re-broadcast their channel
+ * updates every two weeks, the non-normative section of BOLT 7 currently suggests that
+ * pruning occur for updates which are at least two weeks old, which we implement here.
+ *
+ * This method will also cause us to stop tracking removed nodes and channels if they have been
+ * in the map for a while so that these can be resynced from gossip in the future.
+ *
+ * This function takes the current unix time as an argument. For users with the `std` feature
+ * enabled, [`NetworkGraph::remove_stale_channels_and_tracking`] may be preferable.
+ */
+ public void remove_stale_channels_and_tracking_with_time(long current_time_unix) {
+ bindings.NetworkGraph_remove_stale_channels_and_tracking_with_time(this.ptr, current_time_unix);
+ Reference.reachabilityFence(this);
+ Reference.reachabilityFence(current_time_unix);