Struct lightning_invoice::InvoiceBuilder [−][src]
pub struct InvoiceBuilder<D: Bool, H: Bool, T: Bool, C: Bool, S: Bool> { /* fields omitted */ }
Expand description
Builder for Invoice
s. It’s the most convenient and advised way to use this library. It ensures
that only a semantically and syntactically correct Invoice can be built using it.
extern crate secp256k1;
extern crate lightning;
extern crate lightning_invoice;
extern crate bitcoin_hashes;
use bitcoin_hashes::Hash;
use bitcoin_hashes::sha256;
use secp256k1::Secp256k1;
use secp256k1::key::SecretKey;
use lightning::ln::PaymentSecret;
use lightning_invoice::{Currency, InvoiceBuilder};
let private_key = SecretKey::from_slice(
&[
0xe1, 0x26, 0xf6, 0x8f, 0x7e, 0xaf, 0xcc, 0x8b, 0x74, 0xf5, 0x4d, 0x26, 0x9f,
0xe2, 0x06, 0xbe, 0x71, 0x50, 0x00, 0xf9, 0x4d, 0xac, 0x06, 0x7d, 0x1c, 0x04,
0xa8, 0xca, 0x3b, 0x2d, 0xb7, 0x34
][..]
).unwrap();
let payment_hash = sha256::Hash::from_slice(&[0; 32][..]).unwrap();
let payment_secret = PaymentSecret([42u8; 32]);
let invoice = InvoiceBuilder::new(Currency::Bitcoin)
.description("Coins pls!".into())
.payment_hash(payment_hash)
.payment_secret(payment_secret)
.current_timestamp()
.min_final_cltv_expiry(144)
.build_signed(|hash| {
Secp256k1::new().sign_recoverable(hash, &private_key)
})
.unwrap();
assert!(invoice.to_string().starts_with("lnbc1"));
Type parameters
The two parameters D
and H
signal if the builder already contains the correct amount of the
given field:
D
: exactly oneDescription
orDescriptionHash
H
: exactly onePaymentHash
T
: the timestamp is set
(C-not exported) as we likely need to manually select one set of boolean type parameters.
Implementations
Sets the amount in millisatoshis. The optimal SI prefix is chosen automatically.
Sets the payee’s public key.
Sets the expiry time
Adds a private route.
Builds a RawInvoice
if no CreationError
occurred while construction any of the fields.
Set the description. This function is only available if no description (hash) was set.
Set the description hash. This function is only available if no description (hash) was set.
Set the payment hash. This function is only available if no payment hash was set.
Sets the timestamp.
Sets the timestamp to the current UNIX timestamp.
pub fn min_final_cltv_expiry(
self,
min_final_cltv_expiry: u64
) -> InvoiceBuilder<D, H, T, True, S>
pub fn min_final_cltv_expiry(
self,
min_final_cltv_expiry: u64
) -> InvoiceBuilder<D, H, T, True, S>
Sets min_final_cltv_expiry
.
pub fn payment_secret(
self,
payment_secret: PaymentSecret
) -> InvoiceBuilder<D, H, T, C, True>
pub fn payment_secret(
self,
payment_secret: PaymentSecret
) -> InvoiceBuilder<D, H, T, C, True>
Sets the payment secret and relevant features.
pub fn build_signed<F>(self, sign_function: F) -> Result<Invoice, CreationError> where
F: FnOnce(&Message) -> RecoverableSignature,
pub fn build_signed<F>(self, sign_function: F) -> Result<Invoice, CreationError> where
F: FnOnce(&Message) -> RecoverableSignature,
Builds and signs an invoice using the supplied sign_function
. This function MAY NOT fail
and MUST produce a recoverable signature valid for the given hash and if applicable also for
the included payee public key.
pub fn try_build_signed<F, E>(
self,
sign_function: F
) -> Result<Invoice, SignOrCreationError<E>> where
F: FnOnce(&Message) -> Result<RecoverableSignature, E>,
pub fn try_build_signed<F, E>(
self,
sign_function: F
) -> Result<Invoice, SignOrCreationError<E>> where
F: FnOnce(&Message) -> Result<RecoverableSignature, E>,
Builds and signs an invoice using the supplied sign_function
. This function MAY fail with
an error of type E
and MUST produce a recoverable signature valid for the given hash and
if applicable also for the included payee public key.
Trait Implementations
impl<D: PartialEq + Bool, H: PartialEq + Bool, T: PartialEq + Bool, C: PartialEq + Bool, S: PartialEq + Bool> PartialEq<InvoiceBuilder<D, H, T, C, S>> for InvoiceBuilder<D, H, T, C, S>
impl<D: PartialEq + Bool, H: PartialEq + Bool, T: PartialEq + Bool, C: PartialEq + Bool, S: PartialEq + Bool> PartialEq<InvoiceBuilder<D, H, T, C, S>> for InvoiceBuilder<D, H, T, C, S>
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
This method tests for !=
.
impl<D: Eq + Bool, H: Eq + Bool, T: Eq + Bool, C: Eq + Bool, S: Eq + Bool> Eq for InvoiceBuilder<D, H, T, C, S>
impl<D: Bool, H: Bool, T: Bool, C: Bool, S: Bool> StructuralEq for InvoiceBuilder<D, H, T, C, S>
impl<D: Bool, H: Bool, T: Bool, C: Bool, S: Bool> StructuralPartialEq for InvoiceBuilder<D, H, T, C, S>
Auto Trait Implementations
impl<D, H, T, C, S> RefUnwindSafe for InvoiceBuilder<D, H, T, C, S> where
C: RefUnwindSafe,
D: RefUnwindSafe,
H: RefUnwindSafe,
S: RefUnwindSafe,
T: RefUnwindSafe,
impl<D, H, T, C, S> Send for InvoiceBuilder<D, H, T, C, S> where
C: Send,
D: Send,
H: Send,
S: Send,
T: Send,
impl<D, H, T, C, S> Sync for InvoiceBuilder<D, H, T, C, S> where
C: Sync,
D: Sync,
H: Sync,
S: Sync,
T: Sync,
impl<D, H, T, C, S> Unpin for InvoiceBuilder<D, H, T, C, S> where
C: Unpin,
D: Unpin,
H: Unpin,
S: Unpin,
T: Unpin,
impl<D, H, T, C, S> UnwindSafe for InvoiceBuilder<D, H, T, C, S> where
C: UnwindSafe,
D: UnwindSafe,
H: UnwindSafe,
S: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more