+ _create_invoice_from_channelmanager_and_duration_since_epoch_with_payment_hash(
+ channelmanager, keys_manager, logger, network, amt_msat, description, duration_since_epoch, invoice_expiry_delta_secs, payment_hash, payment_secret)
+}
+
+/// See [`create_invoice_from_channelmanager_and_duration_since_epoch`]
+/// This version allows for providing a custom [`PaymentHash`] for the invoice.
+/// This may be useful if you're building an on-chain swap or involving another protocol where
+/// the payment hash is also involved outside the scope of lightning.
+pub fn create_invoice_from_channelmanager_and_duration_since_epoch_with_payment_hash<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>(
+ channelmanager: &ChannelManager<M, T, K, F, L>, keys_manager: K, logger: L,
+ network: Currency, amt_msat: Option<u64>, description: String, duration_since_epoch: Duration,
+ invoice_expiry_delta_secs: u32, payment_hash: PaymentHash
+) -> Result<Invoice, SignOrCreationError<()>>
+ where
+ M::Target: chain::Watch<<K::Target as KeysInterface>::Signer>,
+ T::Target: BroadcasterInterface,
+ K::Target: KeysInterface,
+ F::Target: FeeEstimator,
+ L::Target: Logger,
+{
+ let payment_secret = channelmanager
+ .create_inbound_payment_for_hash(payment_hash,amt_msat, invoice_expiry_delta_secs)
+ .map_err(|()| SignOrCreationError::CreationError(CreationError::InvalidAmount))?;
+ _create_invoice_from_channelmanager_and_duration_since_epoch_with_payment_hash(
+ channelmanager, keys_manager, logger, network, amt_msat,
+ InvoiceDescription::Direct(
+ &Description::new(description).map_err(SignOrCreationError::CreationError)?,
+ ),
+ duration_since_epoch, invoice_expiry_delta_secs, payment_hash, payment_secret
+ )
+}
+
+fn _create_invoice_from_channelmanager_and_duration_since_epoch_with_payment_hash<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>(
+ channelmanager: &ChannelManager<M, T, K, F, L>, keys_manager: K, logger: L,
+ network: Currency, amt_msat: Option<u64>, description: InvoiceDescription, duration_since_epoch: Duration,
+ invoice_expiry_delta_secs: u32, payment_hash: PaymentHash, payment_secret: PaymentSecret
+) -> Result<Invoice, SignOrCreationError<()>>
+ where
+ M::Target: chain::Watch<<K::Target as KeysInterface>::Signer>,
+ T::Target: BroadcasterInterface,
+ K::Target: KeysInterface,
+ F::Target: FeeEstimator,
+ L::Target: Logger,
+{