#include <common/cryptomsg.h>
#include <common/features.h>
#include <common/wireaddr.h>
#include <wire/peer_wire.h>
#include <wire/onion_wiregen.h>

# Initialize the gossip daemon.
msgtype,gossipd_init,3000
msgdata,gossipd_init,chainparams,chainparams,
msgdata,gossipd_init,our_features,feature_set,
msgdata,gossipd_init,id,node_id,
msgdata,gossipd_init,autoconnect_seeker_peers,u32,
msgdata,gossipd_init,compactd_helper,wirestring,
msgdata,gossipd_init,dev_fast_gossip,bool,
msgdata,gossipd_init,dev_fast_gossip_prune,bool,

# Gossipd tells us all our public channel_updates before init_reply.
msgtype,gossipd_init_cupdate,3101
msgdata,gossipd_init_cupdate,scid,short_channel_id,
msgdata,gossipd_init_cupdate,len,u16,
msgdata,gossipd_init_cupdate,cupdate,u8,len

# Gossipd tells us our node_announcement before init_reply.
msgtype,gossipd_init_nannounce,3102
msgdata,gossipd_init_nannounce,len,u16,
msgdata,gossipd_init_nannounce,nannounce,u8,len

msgtype,gossipd_init_reply,3100

# Gossipd->master get this tx output please.
msgtype,gossipd_get_txout,3018
msgdata,gossipd_get_txout,short_channel_id,short_channel_id,

# master->gossipd here is the output, or empty if none.
msgtype,gossipd_get_txout_reply,3118
msgdata,gossipd_get_txout_reply,short_channel_id,short_channel_id,
msgdata,gossipd_get_txout_reply,satoshis,amount_sat,
msgdata,gossipd_get_txout_reply,len,u16,
msgdata,gossipd_get_txout_reply,outscript,u8,len

# master -> gossipd: these potential funding outpoints were spent, please forget any channels
msgtype,gossipd_outpoints_spent,3024
msgdata,gossipd_outpoints_spent,blockheight,u32,
msgdata,gossipd_outpoints_spent,len,u32,
msgdata,gossipd_outpoints_spent,short_channel_id,short_channel_id,len

# master -> gossipd: do you have a memleak?
msgtype,gossipd_dev_memleak,3033

msgtype,gossipd_dev_memleak_reply,3133
msgdata,gossipd_dev_memleak_reply,leak,bool,

# master -> gossipd: please rewrite the gossip_store
msgtype,gossipd_dev_compact_store,3034

# gossipd -> master: empty string means no problem.
msgtype,gossipd_dev_compact_store_reply,3134
msgdata,gossipd_dev_compact_store_reply,result,wirestring,

# master -> gossipd: blockheight increased.
msgtype,gossipd_new_blockheight,3026
msgdata,gossipd_new_blockheight,blockheight,u32,

# gossipd: got it!
msgtype,gossipd_new_blockheight_reply,3126

# Lightningd tells us to inject a gossip message (for addgossip RPC)
msgtype,gossipd_addgossip,3044
msgdata,gossipd_addgossip,len,u16,
msgdata,gossipd_addgossip,msg,u8,len
msgdata,gossipd_addgossip,known_channel,?amount_sat,

# Empty string means no problem.
msgtype,gossipd_addgossip_reply,3144
msgdata,gossipd_addgossip_reply,err,wirestring,

subtype,peer_update
subtypedata,peer_update,scid,short_channel_id,
subtypedata,peer_update,fee_base,u32,
subtypedata,peer_update,fee_ppm,u32,
subtypedata,peer_update,cltv_delta,u16,
subtypedata,peer_update,htlc_minimum_msat,amount_msat,
subtypedata,peer_update,htlc_maximum_msat,amount_msat,

# Tell lightningd we received channel update info for a local channel
msgtype,gossipd_remote_channel_update,3010
msgdata,gossipd_remote_channel_update,source_node,?node_id,
msgdata,gossipd_remote_channel_update,peer_update,peer_update,

# Ask lightningd to try to connect to a peer.
msgtype,gossipd_connect_to_peer,3011
msgdata,gossipd_connect_to_peer,id,node_id,
