[][src]Struct lightning_invoice::InvoiceBuilder

pub struct InvoiceBuilder<D: Bool, H: Bool, T: Bool> { /* fields omitted */ }

Builder for Invoices. 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_invoice;
extern crate bitcoin_hashes;

use bitcoin_hashes::Hash;
use bitcoin_hashes::sha256;

use secp256k1::Secp256k1;
use secp256k1::key::SecretKey;

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 invoice = InvoiceBuilder::new(Currency::Bitcoin)
	.description("Coins pls!".into())
	.payment_hash(payment_hash)
	.current_timestamp()
	.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 one Description or DescriptionHash
  • H: exactly one PaymentHash
  • T: the timestamp is set

Implementations

impl InvoiceBuilder<False, False, False>[src]

pub fn new(currrency: Currency) -> Self[src]

Construct new, empty InvoiceBuilder. All necessary fields have to be filled first before InvoiceBuilder::build(self) becomes available.

impl<D: Bool, H: Bool, T: Bool> InvoiceBuilder<D, H, T>[src]

pub fn amount_pico_btc(mut self: Self, amount: u64) -> Self[src]

Sets the amount in pico BTC. The optimal SI prefix is choosen automatically.

pub fn payee_pub_key(mut self: Self, pub_key: PublicKey) -> Self[src]

Sets the payee's public key.

pub fn expiry_time(mut self: Self, expiry_time: Duration) -> Self[src]

Sets the expiry time

pub fn min_final_cltv_expiry(mut self: Self, min_final_cltv_expiry: u64) -> Self[src]

Sets min_final_cltv_expiry.

pub fn fallback(mut self: Self, fallback: Fallback) -> Self[src]

Adds a fallback address.

pub fn route(mut self: Self, route: Vec<RouteHop>) -> Self[src]

Adds a private route.

impl<D: Bool, H: Bool> InvoiceBuilder<D, H, True>[src]

pub fn build_raw(self) -> Result<RawInvoice, CreationError>[src]

Builds a RawInvoice if no CreationError occurred while construction any of the fields.

impl<H: Bool, T: Bool> InvoiceBuilder<False, H, T>[src]

pub fn description(
    mut self: Self,
    description: String
) -> InvoiceBuilder<True, H, T>
[src]

Set the description. This function is only available if no description (hash) was set.

pub fn description_hash(
    mut self: Self,
    description_hash: Hash
) -> InvoiceBuilder<True, H, T>
[src]

Set the description hash. This function is only available if no description (hash) was set.

impl<D: Bool, T: Bool> InvoiceBuilder<D, False, T>[src]

pub fn payment_hash(mut self: Self, hash: Hash) -> InvoiceBuilder<D, True, T>[src]

Set the payment hash. This function is only available if no payment hash was set.

impl<D: Bool, H: Bool> InvoiceBuilder<D, H, False>[src]

pub fn timestamp(mut self: Self, time: SystemTime) -> InvoiceBuilder<D, H, True>[src]

Sets the timestamp.

pub fn current_timestamp(mut self: Self) -> InvoiceBuilder<D, H, True>[src]

Sets the timestamp to the current UNIX timestamp.

impl InvoiceBuilder<True, True, True>[src]

pub fn build_signed<F>(self, sign_function: F) -> Result<Invoice, CreationError> where
    F: FnOnce(&Message) -> RecoverableSignature
[src]

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>, 
[src]

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: Clone + Bool, H: Clone + Bool, T: Clone + Bool> Clone for InvoiceBuilder<D, H, T>[src]

impl<D: Debug + Bool, H: Debug + Bool, T: Debug + Bool> Debug for InvoiceBuilder<D, H, T>[src]

impl<D: Eq + Bool, H: Eq + Bool, T: Eq + Bool> Eq for InvoiceBuilder<D, H, T>[src]

impl<D: PartialEq + Bool, H: PartialEq + Bool, T: PartialEq + Bool> PartialEq<InvoiceBuilder<D, H, T>> for InvoiceBuilder<D, H, T>[src]

impl<D: Bool, H: Bool, T: Bool> StructuralEq for InvoiceBuilder<D, H, T>[src]

impl<D: Bool, H: Bool, T: Bool> StructuralPartialEq for InvoiceBuilder<D, H, T>[src]

Auto Trait Implementations

impl<D, H, T> RefUnwindSafe for InvoiceBuilder<D, H, T> where
    D: RefUnwindSafe,
    H: RefUnwindSafe,
    T: RefUnwindSafe
[src]

impl<D, H, T> Send for InvoiceBuilder<D, H, T> where
    D: Send,
    H: Send,
    T: Send
[src]

impl<D, H, T> Sync for InvoiceBuilder<D, H, T> where
    D: Sync,
    H: Sync,
    T: Sync
[src]

impl<D, H, T> Unpin for InvoiceBuilder<D, H, T> where
    D: Unpin,
    H: Unpin,
    T: Unpin
[src]

impl<D, H, T> UnwindSafe for InvoiceBuilder<D, H, T> where
    D: UnwindSafe,
    H: UnwindSafe,
    T: UnwindSafe
[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.