mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 09:53:54 +01:00
2569b4d08a
This commit repalces the htlcResolution struct with an interface. This interface is implemeted by failure, settle and accept resolution structs. Only settles and fails are exported because the existing code that handles htlc resolutions uses a nil resolution to indicate that a htlc was accepted. The accept resolution is used internally to report on the resolution result of the accepted htlc, but a nil resolution is surfaced. Further refactoring of all the functions that call NotifyExitHopHtlc to handle a htlc accept case (rather than having a nil check) is required.
55 lines
2.1 KiB
Go
55 lines
2.1 KiB
Go
package contractcourt
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/btcsuite/btcd/wire"
|
|
"github.com/lightningnetwork/lnd/channeldb"
|
|
"github.com/lightningnetwork/lnd/htlcswitch/hop"
|
|
"github.com/lightningnetwork/lnd/input"
|
|
"github.com/lightningnetwork/lnd/invoices"
|
|
"github.com/lightningnetwork/lnd/lntypes"
|
|
"github.com/lightningnetwork/lnd/lnwire"
|
|
"github.com/lightningnetwork/lnd/sweep"
|
|
)
|
|
|
|
// 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.
|
|
LookupInvoice(lntypes.Hash) (channeldb.Invoice, 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,
|
|
circuitKey channeldb.CircuitKey, hodlChan chan<- interface{},
|
|
payload invoices.Payload) (invoices.HtlcResolution, error)
|
|
|
|
// HodlUnsubscribeAll unsubscribes from all htlc resolutions.
|
|
HodlUnsubscribeAll(subscriber chan<- interface{})
|
|
}
|
|
|
|
// OnionProcessor is an interface used to decode onion blobs.
|
|
type OnionProcessor interface {
|
|
// ReconstructHopIterator attempts to decode a valid sphinx packet from
|
|
// the passed io.Reader instance.
|
|
ReconstructHopIterator(r io.Reader, rHash []byte) (hop.Iterator, error)
|
|
}
|
|
|
|
// UtxoSweeper defines the sweep functions that contract court requires.
|
|
type UtxoSweeper interface {
|
|
// SweepInput sweeps inputs back into the wallet.
|
|
SweepInput(input input.Input, params sweep.Params) (chan sweep.Result,
|
|
error)
|
|
|
|
// CreateSweepTx accepts a list of inputs and signs and generates a txn
|
|
// that spends from them. This method also makes an accurate fee
|
|
// estimate before generating the required witnesses.
|
|
CreateSweepTx(inputs []input.Input, feePref sweep.FeePreference,
|
|
currentBlockHeight uint32) (*wire.MsgTx, error)
|
|
}
|