Merge pull request #225 from TheBlueMatt/2018-10-214-redo
[rust-lightning] / src / util / events.rs
index e11e4e82c1ccbf2b735c804ab288c4ea215bc13e..3a077a4b5ba9caad01086b23bad35a404217a57f 100644 (file)
@@ -14,6 +14,7 @@
 
 use ln::msgs;
 use chain::transaction::OutPoint;
+use chain::keysinterface::SpendableOutputDescriptor;
 
 use bitcoin::blockdata::script::Script;
 
@@ -50,8 +51,11 @@ pub enum Event {
        },
        /// Indicates we've received money! Just gotta dig out that payment preimage and feed it to
        /// ChannelManager::claim_funds to get it....
-       /// Note that if the preimage is not known, you must call ChannelManager::fail_htlc_backwards
-       /// to free up resources for this HTLC.
+       /// Note that if the preimage is not known or the amount paid is incorrect, you must call
+       /// ChannelManager::fail_htlc_backwards with PaymentFailReason::PreimageUnknown or
+       /// PaymentFailReason::AmountMismatch, respectively, to free up resources for this HTLC.
+       /// The amount paid should be considered 'incorrect' when it is less than or more than twice
+       /// the amount expected.
        PaymentReceived {
                /// The hash for which the preimage should be handed to the ChannelManager.
                payment_hash: [u8; 32],
@@ -86,6 +90,13 @@ pub enum Event {
                /// The earliest time at which process_pending_htlc_forwards should be called.
                time_forwardable: Instant,
        },
+       /// Used to indicate that an output was generated on-chain which you should know how to spend.
+       /// Such an output will *not* ever be spent by rust-lightning, so you need to store them
+       /// somewhere and spend them when you create on-chain spends.
+       SpendableOutputs {
+               /// The outputs which you should store as spendable by you.
+               outputs: Vec<SpendableOutputDescriptor>,
+       },
 
        // Events indicating the network loop should send a message to a peer:
        // TODO: Move these into a separate struct and make a top-level enum