#ifndef LIGHTNING_LIGHTNINGD_NOTIFICATION_H #define LIGHTNING_LIGHTNINGD_NOTIFICATION_H #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include struct onionreply; bool notifications_have_topic(const char *topic); struct notification { const char *topic; /* the serialization interface */ void *serialize; }; AUTODATA_TYPE(notifications, struct notification); /* FIXME: Find a way to avoid back-to-back declaration and definition */ #define REGISTER_NOTIFICATION(topic, serialize) \ struct notification topic##_notification_gen = { \ stringify(topic), \ serialize, \ }; \ AUTODATA(notifications, &topic##_notification_gen); void notify_connect(struct lightningd *ld, struct node_id *nodeid, struct wireaddr_internal *addr); void notify_disconnect(struct lightningd *ld, struct node_id *nodeid); void notify_warning(struct lightningd *ld, struct log_entry *l); void notify_invoice_payment(struct lightningd *ld, struct amount_msat amount, struct preimage preimage, const struct json_escape *label); void notify_channel_opened(struct lightningd *ld, struct node_id *node_id, struct amount_sat *funding_sat, struct bitcoin_txid *funding_txid, bool *funding_locked); void notify_forward_event(struct lightningd *ld, const struct htlc_in *in, /* May be NULL if we don't know. */ const struct short_channel_id *scid_out, /* May be NULL. */ const struct amount_msat *amount_out, enum forward_status state, enum onion_type failcode, struct timeabs *resolved_time); void notify_sendpay_success(struct lightningd *ld, const struct wallet_payment *payment); void notify_sendpay_failure(struct lightningd *ld, const struct wallet_payment *payment, errcode_t pay_errcode, const struct onionreply *onionreply, const struct routing_failure *fail, const char *errmsg); #endif /* LIGHTNING_LIGHTNINGD_NOTIFICATION_H */