mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-11-18 10:06:51 +01:00
Define a new GraphSource interface required by the invoicerpc server and remove its access to the graphdb.ChannelGraph pointer. Add the new invoicesrpc.GraphSource interface to the GraphSource interface and let DBSource implement it.
77 lines
2.7 KiB
Go
77 lines
2.7 KiB
Go
//go:build invoicesrpc
|
|
// +build invoicesrpc
|
|
|
|
package invoicesrpc
|
|
|
|
import (
|
|
"github.com/btcsuite/btcd/chaincfg"
|
|
"github.com/lightningnetwork/lnd/channeldb"
|
|
"github.com/lightningnetwork/lnd/invoices"
|
|
"github.com/lightningnetwork/lnd/lnwire"
|
|
"github.com/lightningnetwork/lnd/macaroons"
|
|
"github.com/lightningnetwork/lnd/netann"
|
|
"google.golang.org/protobuf/proto"
|
|
)
|
|
|
|
// Config is the primary configuration struct for the invoices RPC server. It
|
|
// contains all the items required for the rpc server to carry out its
|
|
// duties. The fields with struct tags are meant to be parsed as normal
|
|
// configuration options, while if able to be populated, the latter fields MUST
|
|
// also be specified.
|
|
type Config struct {
|
|
// NetworkDir is the main network directory wherein the invoices rpc
|
|
// server will find the macaroon named DefaultInvoicesMacFilename.
|
|
NetworkDir string
|
|
|
|
// MacService is the main macaroon service that we'll use to handle
|
|
// authentication for the invoices rpc server.
|
|
MacService *macaroons.Service
|
|
|
|
// InvoiceRegistry is a central registry of all the outstanding invoices
|
|
// created by the daemon.
|
|
InvoiceRegistry *invoices.InvoiceRegistry
|
|
|
|
// HtlcModifier is a service which intercepts invoice HTLCs during the
|
|
// settlement phase, enabling a subscribed client to modify certain
|
|
// aspects of those HTLCs.
|
|
HtlcModifier invoices.HtlcModifier
|
|
|
|
// IsChannelActive is used to generate valid hop hints.
|
|
IsChannelActive func(chanID lnwire.ChannelID) bool
|
|
|
|
// ChainParams are required to properly decode invoice payment requests
|
|
// that are marshalled over rpc.
|
|
ChainParams *chaincfg.Params
|
|
|
|
// NodeSigner is an implementation of the MessageSigner implementation
|
|
// that's backed by the identity private key of the running lnd node.
|
|
NodeSigner *netann.NodeSigner
|
|
|
|
// DefaultCLTVExpiry is the default invoice expiry if no values is
|
|
// specified.
|
|
DefaultCLTVExpiry uint32
|
|
|
|
// Graph can be used for graph related queries.
|
|
Graph GraphSource
|
|
|
|
// ChanStateDB is a possibly replicated db instance which contains the
|
|
// channel state
|
|
ChanStateDB *channeldb.ChannelStateDB
|
|
|
|
// GenInvoiceFeatures returns a feature containing feature bits that
|
|
// should be advertised on freshly generated invoices.
|
|
GenInvoiceFeatures func() *lnwire.FeatureVector
|
|
|
|
// GenAmpInvoiceFeatures returns a feature containing feature bits that
|
|
// should be advertised on freshly generated AMP invoices.
|
|
GenAmpInvoiceFeatures func() *lnwire.FeatureVector
|
|
|
|
// GetAlias returns the peer's alias SCID if it exists given the
|
|
// 32-byte ChannelID.
|
|
GetAlias func(lnwire.ChannelID) (lnwire.ShortChannelID, error)
|
|
|
|
// ParseAuxData is a function that can be used to parse the auxiliary
|
|
// data from the invoice.
|
|
ParseAuxData func(message proto.Message) error
|
|
}
|