mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-01-19 05:45:21 +01:00
9f54ec90aa
All the structs defined in the `channeldb/models` package are graph related. So once we move all the graph CRUD code to the graph package, it makes sense to have the schema structs there too. So this just moves the `models` package over to `graph/db/models`.
74 lines
2.8 KiB
Go
74 lines
2.8 KiB
Go
package contractcourt
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
|
|
"github.com/btcsuite/btcd/wire"
|
|
"github.com/lightningnetwork/lnd/channeldb"
|
|
"github.com/lightningnetwork/lnd/graph/db/models"
|
|
"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/lnwallet/chainfee"
|
|
"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(context.Context, lntypes.Hash) (invoices.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 models.CircuitKey, hodlChan chan<- interface{},
|
|
wireCustomRecords lnwire.CustomRecords,
|
|
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,
|
|
blindingInfo hop.ReconstructBlindingInfo) (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)
|
|
|
|
// RelayFeePerKW returns the minimum fee rate required for transactions
|
|
// to be relayed.
|
|
RelayFeePerKW() chainfee.SatPerKWeight
|
|
|
|
// UpdateParams allows updating the sweep parameters of a pending input
|
|
// in the UtxoSweeper. This function can be used to provide an updated
|
|
// fee preference that will be used for a new sweep transaction of the
|
|
// input that will act as a replacement transaction (RBF) of the
|
|
// original sweeping transaction, if any.
|
|
UpdateParams(input wire.OutPoint, params sweep.Params) (
|
|
chan sweep.Result, error)
|
|
}
|
|
|
|
// HtlcNotifier defines the notification functions that contract court requires.
|
|
type HtlcNotifier interface {
|
|
// NotifyFinalHtlcEvent notifies the HtlcNotifier that the final outcome
|
|
// for an htlc has been determined.
|
|
NotifyFinalHtlcEvent(key models.CircuitKey,
|
|
info channeldb.FinalHtlcInfo)
|
|
}
|