@@ -76,11 +76,16 @@ use crate::util::logger::{Level, Logger, WithContext};
76
76
use crate::util::errors::APIError;
77
77
#[cfg(not(c_bindings))]
78
78
use {
79
+ crate::offers::offer::{DerivedMetadata, OfferBuilder},
79
80
crate::routing::router::DefaultRouter,
80
81
crate::routing::gossip::NetworkGraph,
81
82
crate::routing::scoring::{ProbabilisticScorer, ProbabilisticScoringFeeParameters},
82
83
crate::sign::KeysManager,
83
84
};
85
+ #[cfg(c_bindings)]
86
+ use {
87
+ crate::offers::offer::OfferWithDerivedMetadataBuilder,
88
+ };
84
89
85
90
use alloc::collections::{btree_map, BTreeMap};
86
91
@@ -98,12 +103,6 @@ use core::ops::Deref;
98
103
pub use crate::ln::outbound_payment::{PaymentSendFailure, ProbeSendFailure, Retry, RetryableSendFailure, RecipientOnionFields};
99
104
use crate::ln::script::ShutdownScript;
100
105
101
- #[cfg(not(c_bindings))]
102
- type OfferBuilder<'a> =
103
- crate::offers::offer::OfferBuilder<'a, crate::offers::offer::DerivedMetadata, secp256k1::All>;
104
- #[cfg(c_bindings)]
105
- type OfferBuilder<'a> = crate::offers::offer::OfferWithDerivedMetadataBuilder<'a>;
106
-
107
106
// We hold various information about HTLC relay in the HTLC objects in Channel itself:
108
107
//
109
108
// Upon receipt of an HTLC from a peer, we'll give it a PendingHTLCStatus indicating if it should
@@ -7526,7 +7525,9 @@ where
7526
7525
self.finish_close_channel(failure);
7527
7526
}
7528
7527
}
7528
+ }
7529
7529
7530
+ macro_rules! create_offer_builder { ($self: ident, $builder: ty) => {
7530
7531
/// Creates an [`OfferBuilder`] such that the [`Offer`] it builds is recognized by the
7531
7532
/// [`ChannelManager`] when handling [`InvoiceRequest`] messages for the offer. The offer will
7532
7533
/// not have an expiration unless otherwise set on the builder.
@@ -7555,34 +7556,52 @@ where
7555
7556
/// [`Offer`]: crate::offers::offer::Offer
7556
7557
/// [`InvoiceRequest`]: crate::offers::invoice_request::InvoiceRequest
7557
7558
pub fn create_offer_builder(
7558
- &self, description: String
7559
- ) -> Result<OfferBuilder , Bolt12SemanticError> {
7560
- let node_id = self.get_our_node_id();
7561
- let expanded_key = &self.inbound_payment_key;
7562
- let entropy = &*self.entropy_source;
7559
+ &$ self, description: String
7560
+ ) -> Result<$builder , Bolt12SemanticError> {
7561
+ let node_id = $ self.get_our_node_id();
7562
+ let expanded_key = &$ self.inbound_payment_key;
7563
+ let entropy = &*$ self.entropy_source;
7563
7564
7564
- let path = self.create_blinded_path().map_err(|_| Bolt12SemanticError::MissingPaths)?;
7565
+ let path = $ self.create_blinded_path().map_err(|_| Bolt12SemanticError::MissingPaths)?;
7565
7566
7566
7567
#[cfg(not(c_bindings))] {
7567
- let builder = OfferBuilder ::deriving_signing_pubkey(
7568
- description, node_id, expanded_key, entropy, &self.secp_ctx
7568
+ let builder = <$builder> ::deriving_signing_pubkey(
7569
+ description, node_id, expanded_key, entropy, &$ self.secp_ctx
7569
7570
)
7570
- .chain_hash(self.chain_hash)
7571
+ .chain_hash($ self.chain_hash)
7571
7572
.path(path);
7572
7573
7573
7574
Ok(builder)
7574
7575
}
7575
7576
7576
7577
#[cfg(c_bindings)] {
7577
- let mut builder = OfferBuilder ::deriving_signing_pubkey(
7578
- description, node_id, expanded_key, entropy, &self.secp_ctx
7578
+ let mut builder = <$builder> ::deriving_signing_pubkey(
7579
+ description, node_id, expanded_key, entropy, &$ self.secp_ctx
7579
7580
);
7580
- builder.chain_hash(self.chain_hash);
7581
+ builder.chain_hash($ self.chain_hash);
7581
7582
builder.path(path);
7582
7583
7583
7584
Ok(builder)
7584
7585
}
7585
7586
}
7587
+ } }
7588
+
7589
+ impl<M: Deref, T: Deref, ES: Deref, NS: Deref, SP: Deref, F: Deref, R: Deref, L: Deref> ChannelManager<M, T, ES, NS, SP, F, R, L>
7590
+ where
7591
+ M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
7592
+ T::Target: BroadcasterInterface,
7593
+ ES::Target: EntropySource,
7594
+ NS::Target: NodeSigner,
7595
+ SP::Target: SignerProvider,
7596
+ F::Target: FeeEstimator,
7597
+ R::Target: Router,
7598
+ L::Target: Logger,
7599
+ {
7600
+ #[cfg(not(c_bindings))]
7601
+ create_offer_builder!(self, OfferBuilder<DerivedMetadata, secp256k1::All>);
7602
+
7603
+ #[cfg(c_bindings)]
7604
+ create_offer_builder!(self, OfferWithDerivedMetadataBuilder);
7586
7605
7587
7606
/// Creates a [`RefundBuilder`] such that the [`Refund`] it builds is recognized by the
7588
7607
/// [`ChannelManager`] when handling [`Bolt12Invoice`] messages for the refund.
0 commit comments