mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 18:10:34 +01:00
5ff5225245
Now that we have the new package `lnd/channeldb/models` we can invert the depenency between `channeldb` and `invoices`. - Move all the invoice related types and errors to the `invoices` package. - Ensure that all the packages dealing with invoices use the types and interfaces defined in the `invoices` package. - Implement the InvoiceDB interface (defined in `lnd/invoices`) in channeldb. - Add new mock for InterfaceDB. - `InvoiceRegistery` tests are now in its own subpacakge (they need to import both invoices & channeldb). This is temporary until we can decouple them.
109 lines
3.9 KiB
Go
109 lines
3.9 KiB
Go
package invoices
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
var (
|
|
// ErrInvoiceAlreadySettled is returned when the invoice is already
|
|
// settled.
|
|
ErrInvoiceAlreadySettled = errors.New("invoice already settled")
|
|
|
|
// ErrInvoiceAlreadyCanceled is returned when the invoice is already
|
|
// canceled.
|
|
ErrInvoiceAlreadyCanceled = errors.New("invoice already canceled")
|
|
|
|
// ErrInvoiceAlreadyAccepted is returned when the invoice is already
|
|
// accepted.
|
|
ErrInvoiceAlreadyAccepted = errors.New("invoice already accepted")
|
|
|
|
// ErrInvoiceStillOpen is returned when the invoice is still open.
|
|
ErrInvoiceStillOpen = errors.New("invoice still open")
|
|
|
|
// ErrInvoiceCannotOpen is returned when an attempt is made to move an
|
|
// invoice to the open state.
|
|
ErrInvoiceCannotOpen = errors.New("cannot move invoice to open")
|
|
|
|
// ErrInvoiceCannotAccept is returned when an attempt is made to accept
|
|
// an invoice while the invoice is not in the open state.
|
|
ErrInvoiceCannotAccept = errors.New("cannot accept invoice")
|
|
|
|
// ErrInvoicePreimageMismatch is returned when the preimage doesn't
|
|
// match the invoice hash.
|
|
ErrInvoicePreimageMismatch = errors.New("preimage does not match")
|
|
|
|
// ErrHTLCPreimageMissing is returned when trying to accept/settle an
|
|
// AMP HTLC but the HTLC-level preimage has not been set.
|
|
ErrHTLCPreimageMissing = errors.New("AMP htlc missing preimage")
|
|
|
|
// ErrHTLCPreimageMismatch is returned when trying to accept/settle an
|
|
// AMP HTLC but the HTLC-level preimage does not satisfying the
|
|
// HTLC-level payment hash.
|
|
ErrHTLCPreimageMismatch = errors.New("htlc preimage mismatch")
|
|
|
|
// ErrHTLCAlreadySettled is returned when trying to settle an invoice
|
|
// but HTLC already exists in the settled state.
|
|
ErrHTLCAlreadySettled = errors.New("htlc already settled")
|
|
|
|
// ErrInvoiceHasHtlcs is returned when attempting to insert an invoice
|
|
// that already has HTLCs.
|
|
ErrInvoiceHasHtlcs = errors.New("cannot add invoice with htlcs")
|
|
|
|
// ErrEmptyHTLCSet is returned when attempting to accept or settle and
|
|
// HTLC set that has no HTLCs.
|
|
ErrEmptyHTLCSet = errors.New("cannot settle/accept empty HTLC set")
|
|
|
|
// ErrUnexpectedInvoicePreimage is returned when an invoice-level
|
|
// preimage is provided when trying to settle an invoice that shouldn't
|
|
// have one, e.g. an AMP invoice.
|
|
ErrUnexpectedInvoicePreimage = errors.New(
|
|
"unexpected invoice preimage provided on settle",
|
|
)
|
|
|
|
// ErrHTLCPreimageAlreadyExists is returned when trying to set an
|
|
// htlc-level preimage but one is already known.
|
|
ErrHTLCPreimageAlreadyExists = errors.New(
|
|
"htlc-level preimage already exists",
|
|
)
|
|
|
|
// ErrInvoiceNotFound is returned when a targeted invoice can't be
|
|
// found.
|
|
ErrInvoiceNotFound = errors.New("unable to locate invoice")
|
|
|
|
// ErrNoInvoicesCreated is returned when we don't have invoices in
|
|
// our database to return.
|
|
ErrNoInvoicesCreated = errors.New("there are no existing invoices")
|
|
|
|
// ErrDuplicateInvoice is returned when an invoice with the target
|
|
// payment hash already exists.
|
|
ErrDuplicateInvoice = errors.New(
|
|
"invoice with payment hash already exists",
|
|
)
|
|
|
|
// ErrDuplicatePayAddr is returned when an invoice with the target
|
|
// payment addr already exists.
|
|
ErrDuplicatePayAddr = errors.New(
|
|
"invoice with payemnt addr already exists",
|
|
)
|
|
|
|
// ErrInvRefEquivocation is returned when an InvoiceRef targets
|
|
// multiple, distinct invoices.
|
|
ErrInvRefEquivocation = errors.New("inv ref matches multiple invoices")
|
|
|
|
// ErrNoPaymentsCreated is returned when bucket of payments hasn't been
|
|
// created.
|
|
ErrNoPaymentsCreated = errors.New("there are no existing payments")
|
|
)
|
|
|
|
// ErrDuplicateSetID is an error returned when attempting to adding an AMP HTLC
|
|
// to an invoice, but another invoice is already indexed by the same set id.
|
|
type ErrDuplicateSetID struct {
|
|
SetID [32]byte
|
|
}
|
|
|
|
// Error returns a human-readable description of ErrDuplicateSetID.
|
|
func (e ErrDuplicateSetID) Error() string {
|
|
return fmt.Sprintf("invoice with set_id=%x already exists", e.SetID)
|
|
}
|