#include <common/cryptomsg.h>
#include <common/features.h>
#include <common/wireaddr.h>
#include <wire/peer_wire.h>
#include <wire/onion_wire.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,rgb,u8,3
msgdata,gossipd_init,alias,u8,32
msgdata,gossipd_init,num_announceable,u16,
msgdata,gossipd_init,announceable,wireaddr,num_announceable
msgdata,gossipd_init,dev_gossip_time,?u32,
msgdata,gossipd_init,dev_fast_gossip,bool,
msgdata,gossipd_init,dev_fast_gossip_prune,bool,

msgtype,gossipd_init_reply,3100

# In developer mode, we can mess with time.
msgtype,gossipd_dev_set_time,3001
msgdata,gossipd_dev_set_time,dev_gossip_time,u32,

# Set artificial maximum reply_channel_range size.  Master->gossipd
msgtype,gossipd_dev_set_max_scids_encode_size,3030
msgdata,gossipd_dev_set_max_scids_encode_size,max,u32,

# gossipd->master: we're closing this channel.
msgtype,gossipd_local_channel_close,3027
msgdata,gossipd_local_channel_close,short_channel_id,short_channel_id,

# 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: a potential funding outpoint was spent, please forget the eventual channel
msgtype,gossipd_outpoint_spent,3024
msgdata,gossipd_outpoint_spent,short_channel_id,short_channel_id,

# 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: ok
msgtype,gossipd_dev_compact_store_reply,3134
msgdata,gossipd_dev_compact_store_reply,success,bool,

# 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

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

# Updated lease rates available
msgtype,gossipd_new_lease_rates,3046
msgdata,gossipd_new_lease_rates,rates,lease_rates,

# Lightningd asks gossipd for any known addresses for that node.
msgtype,gossipd_get_addrs,3050
msgdata,gossipd_get_addrs,id,node_id,

msgtype,gossipd_get_addrs_reply,3150
msgdata,gossipd_get_addrs_reply,num,u16,
msgdata,gossipd_get_addrs_reply,addrs,wireaddr,num

# Tell master a local channel update (so it can serve errors).
msgtype,gossipd_got_local_channel_update,3151
msgdata,gossipd_got_local_channel_update,scid,short_channel_id,
msgdata,gossipd_got_local_channel_update,len,u16,
msgdata,gossipd_got_local_channel_update,channel_update,u8,len

# Send this channel_update.
msgtype,gossipd_local_channel_update,3004
msgdata,gossipd_local_channel_update,id,node_id,
msgdata,gossipd_local_channel_update,short_channel_id,short_channel_id,
msgdata,gossipd_local_channel_update,disable,bool,
msgdata,gossipd_local_channel_update,cltv_expiry_delta,u16,
msgdata,gossipd_local_channel_update,htlc_minimum_msat,amount_msat,
msgdata,gossipd_local_channel_update,fee_base_msat,u32,
msgdata,gossipd_local_channel_update,fee_proportional_millionths,u32,
msgdata,gossipd_local_channel_update,htlc_maximum_msat,amount_msat,

# Send this channel_announcement
msgtype,gossipd_local_channel_announcement,3006
msgdata,gossipd_local_channel_announcement,id,node_id,
msgdata,gossipd_local_channel_announcement,len,u16,
msgdata,gossipd_local_channel_announcement,cannounce,u8,len

# Tell gossipd about a private channel (to put it in the store)
# cannounce has same structure, dummy sigs.
msgtype,gossipd_local_private_channel,3008
msgdata,gossipd_local_private_channel,id,node_id,
msgdata,gossipd_local_private_channel,capacity,amount_sat,
msgdata,gossipd_local_private_channel,scid,short_channel_id,
msgdata,gossipd_local_private_channel,len,u16,
msgdata,gossipd_local_private_channel,features,u8,len

# Tell gossipd we used the channel update (in case it was deferred)
msgtype,gossipd_used_local_channel_update,3052
msgdata,gossipd_used_local_channel_update,scid,short_channel_id,

# Tell gossipd we have verified a new public IP by the remote_addr feature
msgtype,gossipd_discovered_ip,3009
msgdata,gossipd_discovered_ip,discovered_ip,wireaddr,
