#include <common/derive_basepoints.h>
#include <common/htlc_wire.h>

# Begin!  Here's the onchain tx which spends funding tx, followed by all HTLCs.
onchain_init,5001
onchain_init,,shachain,struct shachain
onchain_init,,funding_amount_satoshi,struct amount_sat
# Remote per commit point for committed tx.
onchain_init,,old_remote_per_commitment_point,struct pubkey
# Remote per commit point for current tx (needed if we haven't got revoke_and_ack yet).
onchain_init,,remote_per_commitment_point,struct pubkey
onchain_init,,local_to_self_delay,u32
onchain_init,,remote_to_self_delay,u32
onchain_init,,feerate_per_kw,u32
onchain_init,,local_dust_limit_satoshi,struct amount_sat
# Gives an easy way to tell if it's our unilateral close or theirs...
onchain_init,,our_broadcast_txid,struct bitcoin_txid
onchain_init,,local_scriptpubkey_len,u16
onchain_init,,local_scriptpubkey,local_scriptpubkey_len*u8
onchain_init,,remote_scriptpubkey_len,u16
onchain_init,,remote_scriptpubkey,remote_scriptpubkey_len*u8
onchain_init,,ourwallet_pubkey,struct pubkey
# We need these two for commit number obscurer
onchain_init,,funder,enum side
onchain_init,,local_basepoints,struct basepoints
onchain_init,,remote_basepoints,struct basepoints
onchain_init,,tx,struct bitcoin_tx
onchain_init,,tx_blockheight,u32
onchain_init,,reasonable_depth,u32
onchain_init,,num_htlc_sigs,u16
onchain_init,,htlc_signature,num_htlc_sigs*secp256k1_ecdsa_signature
onchain_init,,num_htlcs,u64
onchain_init,,min_possible_feerate,u32
onchain_init,,max_possible_feerate,u32
onchain_init,,possible_remote_per_commit_point,?struct pubkey

#include <onchaind/onchain_wire.h>
# This is all the HTLCs: one per message
onchain_htlc,5002
onchain_htlc,,htlc,struct htlc_stub
# If it's not in the commitment tx, tell us (immediately or htlc_missing_depth)
onchain_htlc,,tell_if_missing,bool
onchain_htlc,,tell_immediately,bool

# This says we're ready; give us preimages.
onchain_init_reply,5101

# onchaind->master: Send out a tx.
onchain_broadcast_tx,5003
onchain_broadcast_tx,,tx,struct bitcoin_tx

# master->onchaind: Notifier that an output has been spent by input_num of tx.
onchain_spent,5004
onchain_spent,,tx,struct bitcoin_tx
onchain_spent,,input_num,u32
onchain_spent,,blockheight,u32

# master->onchaind: We will receive more than one of these, as depth changes.
onchain_depth,5005
onchain_depth,,txid,struct bitcoin_txid
onchain_depth,,depth,u32

# onchaind->master: We don't want to watch this tx, or its outputs
onchain_unwatch_tx,5006
onchain_unwatch_tx,,txid,struct bitcoin_txid

# master->onchaind: We know HTLC preimage
onchain_known_preimage,5007
onchain_known_preimage,,preimage,struct preimage

# onchaind->master: We discovered HTLC preimage
onchain_extracted_preimage,5008
onchain_extracted_preimage,,preimage,struct preimage

# onchaind->master: this HTLC was missing from commit tx.
onchain_missing_htlc_output,5009
onchain_missing_htlc_output,,htlc,struct htlc_stub

# onchaind->master: this HTLC has timed out (after reasonable_depth)
onchain_htlc_timeout,5010
onchain_htlc_timeout,,htlc,struct htlc_stub

# onchaind->master: this peer can be forgotten
onchain_all_irrevocably_resolved,5011

# onchaind->master: hey, I identified an UTXO you'll want to track
onchain_add_utxo,5012
onchain_add_utxo,,prev_out_tx,struct bitcoin_txid
onchain_add_utxo,,prev_out_index,u32
onchain_add_utxo,,per_commit_point,struct pubkey
onchain_add_utxo,,value,struct amount_sat
onchain_add_utxo,,blockheight,u32
onchain_add_utxo,,len,u16
onchain_add_utxo,,scriptpubkey,len*u8

# master -> onchaind: do you have a memleak?
onchain_dev_memleak,5033

onchain_dev_memleak_reply,5133
onchain_dev_memleak_reply,,leak,bool
