23cc8389f2
In this commit, we update the `HopIterator` to gain awareness of the new TLV hop payload. The default `HopIterator` will now hide the details of the TLV from the caller, and return the same `ForwardingInfo` struct in a uniform manner. We also add a new method: `ExtraOnionBlob` to allow the caller to obtain the raw EOB (the serialized TLV stream) to pass around. Within the link, we'll now pass the EOB information into the invoice registry. This allows the registry to parse out any additional information from the EOB that it needs to settle the payment, such as a preimage shard in the AMP case.
31 lines
1.3 KiB
Go
31 lines
1.3 KiB
Go
package contractcourt
|
|
|
|
import (
|
|
"github.com/lightningnetwork/lnd/channeldb"
|
|
"github.com/lightningnetwork/lnd/invoices"
|
|
"github.com/lightningnetwork/lnd/lntypes"
|
|
"github.com/lightningnetwork/lnd/lnwire"
|
|
)
|
|
|
|
// Registry is an interface which represents the invoice registry.
|
|
type Registry interface {
|
|
// LookupInvoice attempts to look up an invoice according to its 32
|
|
// byte payment hash. This method should also reutrn the min final CLTV
|
|
// delta for this invoice. We'll use this to ensure that the HTLC
|
|
// extended to us gives us enough time to settle as we prescribe.
|
|
LookupInvoice(lntypes.Hash) (channeldb.Invoice, uint32, error)
|
|
|
|
// NotifyExitHopHtlc attempts to mark an invoice as settled. If the
|
|
// invoice is a debug invoice, then this method is a noop as debug
|
|
// invoices are never fully settled. The return value describes how the
|
|
// htlc should be resolved. If the htlc cannot be resolved immediately,
|
|
// the resolution is sent on the passed in hodlChan later.
|
|
NotifyExitHopHtlc(payHash lntypes.Hash, paidAmount lnwire.MilliSatoshi,
|
|
expiry uint32, currentHeight int32,
|
|
hodlChan chan<- interface{},
|
|
eob []byte) (*invoices.HodlEvent, error)
|
|
|
|
// HodlUnsubscribeAll unsubscribes from all hodl events.
|
|
HodlUnsubscribeAll(subscriber chan<- interface{})
|
|
}
|