@@ -847,13 +847,14 @@ where
847
847
///
848
848
/// Returns an error if the refund targets a different chain or if no valid
849
849
/// blinded path can be constructed.
850
- pub fn create_invoice_builder_from_refund < ' a , ES : Deref , R : Deref > (
851
- & ' a self , router : & R , entropy_source : ES , refund : & ' a Refund , payment_hash : PaymentHash ,
852
- payment_secret : PaymentSecret , usable_channels : Vec < ChannelDetails > ,
850
+ pub fn create_invoice_builder_from_refund < ' a , ES : Deref , R : Deref , F > (
851
+ & ' a self , router : & R , entropy_source : ES , refund : & ' a Refund ,
852
+ usable_channels : Vec < ChannelDetails > , get_payment_info : F ,
853
853
) -> Result < InvoiceBuilder < ' a , DerivedSigningPubkey > , Bolt12SemanticError >
854
854
where
855
855
ES :: Target : EntropySource ,
856
856
R :: Target : Router ,
857
+ F : Fn ( u64 , u32 ) -> Result < ( PaymentHash , PaymentSecret ) , Bolt12SemanticError > ,
857
858
{
858
859
if refund. chain ( ) != self . chain_hash {
859
860
return Err ( Bolt12SemanticError :: UnsupportedChain ) ;
@@ -865,6 +866,8 @@ where
865
866
let amount_msats = refund. amount_msats ( ) ;
866
867
let relative_expiry = DEFAULT_RELATIVE_EXPIRY . as_secs ( ) as u32 ;
867
868
869
+ let ( payment_hash, payment_secret) = get_payment_info ( amount_msats, relative_expiry) ?;
870
+
868
871
let payment_context = PaymentContext :: Bolt12Refund ( Bolt12RefundContext { } ) ;
869
872
let payment_paths = self
870
873
. create_blinded_payment_paths (
@@ -914,20 +917,25 @@ where
914
917
/// Returns a [`Bolt12SemanticError`] if:
915
918
/// - Valid blinded payment paths could not be generated for the [`Bolt12Invoice`].
916
919
/// - The [`InvoiceBuilder`] could not be created from the [`InvoiceRequest`].
917
- pub fn create_invoice_builder_from_invoice_request_with_keys < ' a , ES : Deref , R : Deref > (
920
+ pub fn create_invoice_builder_from_invoice_request_with_keys < ' a , ES : Deref , R : Deref , F > (
918
921
& self , router : & R , entropy_source : ES ,
919
- invoice_request : & ' a VerifiedInvoiceRequest < DerivedSigningPubkey > , amount_msats : u64 ,
920
- payment_hash : PaymentHash , payment_secret : PaymentSecret ,
921
- usable_channels : Vec < ChannelDetails > ,
922
+ invoice_request : & ' a VerifiedInvoiceRequest < DerivedSigningPubkey > ,
923
+ usable_channels : Vec < ChannelDetails > , get_payment_info : F ,
922
924
) -> Result < ( InvoiceBuilder < ' a , DerivedSigningPubkey > , MessageContext ) , Bolt12SemanticError >
923
925
where
924
926
ES :: Target : EntropySource ,
925
927
926
928
R :: Target : Router ,
929
+ F : Fn ( u64 , u32 ) -> Result < ( PaymentHash , PaymentSecret ) , Bolt12SemanticError > ,
927
930
{
928
931
let entropy = & * entropy_source;
929
932
let relative_expiry = DEFAULT_RELATIVE_EXPIRY . as_secs ( ) as u32 ;
930
933
934
+ let amount_msats =
935
+ InvoiceBuilder :: < DerivedSigningPubkey > :: amount_msats ( & invoice_request. inner ) ?;
936
+
937
+ let ( payment_hash, payment_secret) = get_payment_info ( amount_msats, relative_expiry) ?;
938
+
931
939
let context = PaymentContext :: Bolt12Offer ( Bolt12OfferContext {
932
940
offer_id : invoice_request. offer_id ,
933
941
invoice_request : invoice_request. fields ( ) ,
@@ -974,19 +982,24 @@ where
974
982
/// Returns a [`Bolt12SemanticError`] if:
975
983
/// - Valid blinded payment paths could not be generated for the [`Bolt12Invoice`].
976
984
/// - The [`InvoiceBuilder`] could not be created from the [`InvoiceRequest`].
977
- pub fn create_invoice_builder_from_invoice_request_without_keys < ' a , ES : Deref , R : Deref > (
985
+ pub fn create_invoice_builder_from_invoice_request_without_keys < ' a , ES : Deref , R : Deref , F > (
978
986
& self , router : & R , entropy_source : ES ,
979
- invoice_request : & ' a VerifiedInvoiceRequest < ExplicitSigningPubkey > , amount_msats : u64 ,
980
- payment_hash : PaymentHash , payment_secret : PaymentSecret ,
981
- usable_channels : Vec < ChannelDetails > ,
987
+ invoice_request : & ' a VerifiedInvoiceRequest < ExplicitSigningPubkey > ,
988
+ usable_channels : Vec < ChannelDetails > , get_payment_info : F ,
982
989
) -> Result < ( InvoiceBuilder < ' a , ExplicitSigningPubkey > , MessageContext ) , Bolt12SemanticError >
983
990
where
984
991
ES :: Target : EntropySource ,
985
992
R :: Target : Router ,
993
+ F : Fn ( u64 , u32 ) -> Result < ( PaymentHash , PaymentSecret ) , Bolt12SemanticError > ,
986
994
{
987
995
let entropy = & * entropy_source;
988
996
let relative_expiry = DEFAULT_RELATIVE_EXPIRY . as_secs ( ) as u32 ;
989
997
998
+ let amount_msats =
999
+ InvoiceBuilder :: < DerivedSigningPubkey > :: amount_msats ( & invoice_request. inner ) ?;
1000
+
1001
+ let ( payment_hash, payment_secret) = get_payment_info ( amount_msats, relative_expiry) ?;
1002
+
990
1003
let context = PaymentContext :: Bolt12Offer ( Bolt12OfferContext {
991
1004
offer_id : invoice_request. offer_id ,
992
1005
invoice_request : invoice_request. fields ( ) ,
0 commit comments