lightning

package
v0.0.0-...-71c933f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 15, 2025 License: MIT Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const (
	InvoiceExpiry          = 3600
	FakePreimage           = "0000000000000000"
	FailPaymentDescription = "fail the payment"
)
View Source
const (
	// 1 hour
	InvoiceExpiryTime         = 3600
	FeePercent        float64 = 0.01
)

Variables

View Source
var (
	OutgoingPaymentNotFound = errors.New("outgoing payment not found")
)

Functions

func CreateFakeInvoice

func CreateFakeInvoice(amount uint64, failPayment bool) (string, string, string, error)

Types

type CLNClient

type CLNClient struct {
	// contains filtered or unexported fields
}

func SetupCLNClient

func SetupCLNClient(config CLNConfig) (*CLNClient, error)

func (*CLNClient) ConnectionStatus

func (cln *CLNClient) ConnectionStatus() error

func (*CLNClient) CreateInvoice

func (cln *CLNClient) CreateInvoice(amount uint64) (Invoice, error)

func (*CLNClient) FeeReserve

func (cln *CLNClient) FeeReserve(amount uint64) uint64

func (*CLNClient) InvoiceStatus

func (cln *CLNClient) InvoiceStatus(hash string) (Invoice, error)

func (*CLNClient) OutgoingPaymentStatus

func (cln *CLNClient) OutgoingPaymentStatus(ctx context.Context, paymentHash string) (PaymentStatus, error)

func (*CLNClient) PayPartialAmount

func (cln *CLNClient) PayPartialAmount(
	ctx context.Context,
	request string,
	amountMsat uint64,
	maxFee uint64,
) (PaymentStatus, error)

func (*CLNClient) Post

func (cln *CLNClient) Post(ctx context.Context, url string, body interface{}) (*http.Response, error)

func (*CLNClient) SendPayment

func (cln *CLNClient) SendPayment(ctx context.Context, request string, maxFee uint64) (PaymentStatus, error)

func (*CLNClient) SubscribeInvoice

func (cln *CLNClient) SubscribeInvoice(ctx context.Context, paymentHash string) (InvoiceSubscriptionClient, error)

type CLNConfig

type CLNConfig struct {
	RestURL string
	Rune    string
}

type CLNInvoiceSub

type CLNInvoiceSub struct {
	// contains filtered or unexported fields
}

func (*CLNInvoiceSub) Recv

func (clnSub *CLNInvoiceSub) Recv() (Invoice, error)

type Client

type Client interface {
	ConnectionStatus() error
	CreateInvoice(amount uint64) (Invoice, error)
	InvoiceStatus(hash string) (Invoice, error)
	SendPayment(ctx context.Context, request string, maxFee uint64) (PaymentStatus, error)
	PayPartialAmount(ctx context.Context, request string, amountMsat uint64, maxFee uint64) (PaymentStatus, error)
	OutgoingPaymentStatus(ctx context.Context, hash string) (PaymentStatus, error)
	FeeReserve(amount uint64) uint64
	SubscribeInvoice(ctx context.Context, paymentHash string) (InvoiceSubscriptionClient, error)
}

Client interface to interact with a Lightning backend

type ErrorResponse

type ErrorResponse struct {
	Code    int    `json:"code"`
	Message string `json:"message,omitempty"`
}

type FakeBackend

type FakeBackend struct {
	Invoices     []FakeBackendInvoice
	PaymentDelay int64
}

func (*FakeBackend) ConnectionStatus

func (fb *FakeBackend) ConnectionStatus() error

func (*FakeBackend) CreateInvoice

func (fb *FakeBackend) CreateInvoice(amount uint64) (Invoice, error)

func (*FakeBackend) FeeReserve

func (fb *FakeBackend) FeeReserve(amount uint64) uint64

func (*FakeBackend) InvoiceStatus

func (fb *FakeBackend) InvoiceStatus(hash string) (Invoice, error)

func (*FakeBackend) OutgoingPaymentStatus

func (fb *FakeBackend) OutgoingPaymentStatus(ctx context.Context, hash string) (PaymentStatus, error)

func (*FakeBackend) PayPartialAmount

func (fb *FakeBackend) PayPartialAmount(ctx context.Context, request string, amountMsat, maxFee uint64) (PaymentStatus, error)

func (*FakeBackend) SendPayment

func (fb *FakeBackend) SendPayment(ctx context.Context, request string, maxFee uint64) (PaymentStatus, error)

func (*FakeBackend) SetInvoiceStatus

func (fb *FakeBackend) SetInvoiceStatus(hash string, status State)

func (*FakeBackend) SubscribeInvoice

func (fb *FakeBackend) SubscribeInvoice(ctx context.Context, paymentHash string) (InvoiceSubscriptionClient, error)

type FakeBackendInvoice

type FakeBackendInvoice struct {
	PaymentRequest string
	PaymentHash    string
	Preimage       string
	Status         State
	Amount         uint64
	Expiry         uint64
}

func (*FakeBackendInvoice) ToInvoice

func (i *FakeBackendInvoice) ToInvoice() Invoice

type FakeInvoiceSub

type FakeInvoiceSub struct {
	// contains filtered or unexported fields
}

func (*FakeInvoiceSub) Recv

func (fakeSub *FakeInvoiceSub) Recv() (Invoice, error)

type Invoice

type Invoice struct {
	PaymentRequest string
	PaymentHash    string
	Preimage       string
	Settled        bool
	Amount         uint64
	Expiry         uint64
}

type InvoiceSubscriptionClient

type InvoiceSubscriptionClient interface {
	// This blocks until there is an update
	Recv() (Invoice, error)
}

InvoiceSubscriptionClient subscribes to get updates on the status of an invoice

type LndClient

type LndClient struct {
	// contains filtered or unexported fields
}

func SetupLndClient

func SetupLndClient(config LndConfig) (*LndClient, error)

func (*LndClient) ConnectionStatus

func (lnd *LndClient) ConnectionStatus() error

func (*LndClient) CreateInvoice

func (lnd *LndClient) CreateInvoice(amount uint64) (Invoice, error)

func (*LndClient) FeeReserve

func (lnd *LndClient) FeeReserve(amount uint64) uint64

func (*LndClient) InvoiceStatus

func (lnd *LndClient) InvoiceStatus(hash string) (Invoice, error)

func (*LndClient) OutgoingPaymentStatus

func (lnd *LndClient) OutgoingPaymentStatus(ctx context.Context, hash string) (PaymentStatus, error)

func (*LndClient) PayPartialAmount

func (lnd *LndClient) PayPartialAmount(
	ctx context.Context,
	request string,
	amountMsat uint64,
	maxFee uint64,
) (PaymentStatus, error)

func (*LndClient) SendPayment

func (lnd *LndClient) SendPayment(ctx context.Context, request string, maxFee uint64) (PaymentStatus, error)

func (*LndClient) SubscribeInvoice

func (lnd *LndClient) SubscribeInvoice(ctx context.Context, paymentHash string) (InvoiceSubscriptionClient, error)

type LndConfig

type LndConfig struct {
	GRPCHost string
	Cert     credentials.TransportCredentials
	Macaroon macaroons.MacaroonCredential
}

type LndInvoiceSub

type LndInvoiceSub struct {
	// contains filtered or unexported fields
}

func (*LndInvoiceSub) Recv

func (lndSub *LndInvoiceSub) Recv() (Invoice, error)

type PaymentStatus

type PaymentStatus struct {
	Preimage             string
	PaymentStatus        State
	PaymentFailureReason string
}

type State

type State int
const (
	Succeeded State = iota
	Failed
	Pending
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL