From 1f05abee074d5365a7d01e7fdd73f851c87f0cc4 Mon Sep 17 00:00:00 2001 From: usefahmed07 Date: Fri, 18 Sep 2026 01:19:53 +0300 Subject: [PATCH 1/2] bolt12: export DecodeOffer --- bolt12/invoice_request_test.go | 2 +- bolt12/offer.go | 4 ++-- bolt12/offer_test.go | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bolt12/invoice_request_test.go b/bolt12/invoice_request_test.go index 2e642e07153..0666ba8f7dc 100644 --- a/bolt12/invoice_request_test.go +++ b/bolt12/invoice_request_test.go @@ -152,7 +152,7 @@ func TestNewInvoiceRequestFromOfferMirrorsUnknownFields(t *testing.T) { // sorted. spliced := append(append([]byte{}, encoded...), extra.Bytes()...) - decodedOffer, err := decodeOffer(spliced) + decodedOffer, err := DecodeOffer(spliced) require.NoError(t, err) ir, err := NewInvoiceRequestFromOffer( diff --git a/bolt12/offer.go b/bolt12/offer.go index 3b8eadc2ca4..b9ae204469f 100644 --- a/bolt12/offer.go +++ b/bolt12/offer.go @@ -109,12 +109,12 @@ func (o *Offer) Encode() ([]byte, error) { return buf.Bytes(), nil } -// decodeOffer parses a TLV byte stream into an Offer. Decoding is permissive — +// DecodeOffer parses a TLV byte stream into an Offer. Decoding is permissive — // the spec writer requirements are not enforced here, so callers that need a // valid offer must run ValidateOfferRead. Unknown TLVs are preserved on the // returned offer so a later Encode can re-emit signed-range extras and keep // offer_id stable. -func decodeOffer(data []byte) (*Offer, error) { +func DecodeOffer(data []byte) (*Offer, error) { var o Offer // Prepare zero-valued records for all optional fields so the TLV diff --git a/bolt12/offer_test.go b/bolt12/offer_test.go index 4bf65ec02f9..776917ccb39 100644 --- a/bolt12/offer_test.go +++ b/bolt12/offer_test.go @@ -39,7 +39,7 @@ func TestOfferRoundTrip(t *testing.T) { require.NoError(t, err) require.NotEmpty(t, encoded) - decoded, err := decodeOffer(encoded) + decoded, err := DecodeOffer(encoded) require.NoError(t, err) require.Equal(t, TUint64(1500), decoded.OfferAmount.UnwrapOrFailV(t)) From 74bb3b2c11fdd62fbb56816ae93d35eb0ae37f51 Mon Sep 17 00:00:00 2001 From: usefahmed07 Date: Mon, 21 Sep 2026 15:53:54 +0300 Subject: [PATCH 2/2] bolt12: fix remaining decodeOffer call sites broken by DecodeOffer rename --- bolt12/decode_test.go | 2 +- bolt12/offer_test.go | 4 ++-- bolt12/validate_test.go | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bolt12/decode_test.go b/bolt12/decode_test.go index d1ff88d0670..26d533de72f 100644 --- a/bolt12/decode_test.go +++ b/bolt12/decode_test.go @@ -41,7 +41,7 @@ func TestDecodeRejectsNonMinimalFeatures(t *testing.T) { name: "offer_features", typ: 12, decode: func(b []byte) error { - _, err := decodeOffer(b) + _, err := DecodeOffer(b) return err }, }, diff --git a/bolt12/offer_test.go b/bolt12/offer_test.go index 776917ccb39..221832ee103 100644 --- a/bolt12/offer_test.go +++ b/bolt12/offer_test.go @@ -68,7 +68,7 @@ func TestDecodeOversizedRecord(t *testing.T) { require.NoError(t, tlv.WriteVarInt(&w, oversize, &buf)) w.Write(make([]byte, oversize)) - _, err := decodeOffer(w.Bytes()) + _, err := DecodeOffer(w.Bytes()) require.ErrorIs( t, err, tlv.ErrRecordTooLarge, "expected an oversize-record rejection, got %v", err, @@ -87,7 +87,7 @@ func TestDecodeOfferString(t *testing.T) { _, tlvBytes, err := Decode(offerStr) require.NoError(t, err) - offer, err := decodeOffer(tlvBytes) + offer, err := DecodeOffer(tlvBytes) require.NoError(t, err) // Verify issuer ID is present and correctly typed. diff --git a/bolt12/validate_test.go b/bolt12/validate_test.go index ee576185f1d..08f5947f63f 100644 --- a/bolt12/validate_test.go +++ b/bolt12/validate_test.go @@ -3024,7 +3024,7 @@ func TestValidateOfferReadVectors(t *testing.T) { return } - offer, decodeErr := decodeOffer(tlvBytes) + offer, decodeErr := DecodeOffer(tlvBytes) if decodeErr != nil { if tc.Valid { require.NoError( @@ -3132,7 +3132,7 @@ func TestOfferVectorsLayerCensus(t *testing.T) { continue } - offer, decodeErr := decodeOffer(tlvBytes) + offer, decodeErr := DecodeOffer(tlvBytes) if decodeErr != nil { tlvRejections++ continue