mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-01-19 05:45:21 +01:00
74a4b1922b
This is a pure refactor commit. It moves over all the graph related CRUD code from `channeldb` to `graph/db`.
79 lines
2.8 KiB
Go
79 lines
2.8 KiB
Go
//go:build invoicesrpc
|
|
// +build invoicesrpc
|
|
|
|
package invoicesrpc
|
|
|
|
import (
|
|
"github.com/btcsuite/btcd/chaincfg"
|
|
"github.com/lightningnetwork/lnd/channeldb"
|
|
graphdb "github.com/lightningnetwork/lnd/graph/db"
|
|
"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
|
|
|
|
// GraphDB is a global database instance which is needed to access the
|
|
// channel graph.
|
|
GraphDB *graphdb.ChannelGraph
|
|
|
|
// 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
|
|
}
|