Struct breez_sdk_core::lightning::offers::refund::Refund

pub struct Refund { /* private fields */ }
Expand description

A Refund is a request to send an Bolt12Invoice without a preceding Offer.

Typically, after an invoice is paid, the recipient may publish a refund allowing the sender to recoup their funds. A refund may be used more generally as an “offer for money”, such as with a bitcoin ATM.

Implementations§

§

impl Refund

pub fn description(&self) -> PrintableString<'_>

A complete description of the purpose of the refund. Intended to be displayed to the user but with the caveat that it has not been verified in any way.

pub fn absolute_expiry(&self) -> Option<Duration>

Duration since the Unix epoch when an invoice should no longer be sent.

If None, the refund does not expire.

pub fn is_expired(&self) -> bool

Whether the refund has expired.

pub fn issuer(&self) -> Option<PrintableString<'_>>

The issuer of the refund, possibly beginning with user@domain or domain. Intended to be displayed to the user but with the caveat that it has not been verified in any way.

pub fn paths(&self) -> &[BlindedPath]

Paths to the sender originating from publicly reachable nodes. Blinded paths provide sender privacy by obfuscating its node id.

pub fn payer_metadata(&self) -> &[u8]

An unpredictable series of bytes, typically containing information about the derivation of payer_id.

pub fn chain(&self) -> ChainHash

A chain that the refund is valid for.

pub fn amount_msats(&self) -> u64

The amount to refund in msats (i.e., the minimum lightning-payable unit for chain).

pub fn features(&self) -> &Features<InvoiceRequestContext>

Features pertaining to requesting an invoice.

pub fn quantity(&self) -> Option<u64>

The quantity of an item that refund is for.

pub fn payer_id(&self) -> PublicKey

A public node id to send to in the case where there are no paths. Otherwise, a possibly transient pubkey.

pub fn payer_note(&self) -> Option<PrintableString<'_>>

Payer provided note to include in the invoice.

pub fn respond_with( &self, payment_paths: Vec<(BlindedPayInfo, BlindedPath)>, payment_hash: PaymentHash, signing_pubkey: PublicKey, ) -> Result<InvoiceBuilder<'_, ExplicitSigningPubkey>, Bolt12SemanticError>

Creates an InvoiceBuilder for the refund with the given required fields and using the Duration since std::time::SystemTime::UNIX_EPOCH as the creation time.

See Refund::respond_with_no_std for further details where the aforementioned creation time is used for the created_at parameter.

This is not exported to bindings users as builder patterns don’t map outside of move semantics.

pub fn respond_with_no_std( &self, payment_paths: Vec<(BlindedPayInfo, BlindedPath)>, payment_hash: PaymentHash, signing_pubkey: PublicKey, created_at: Duration, ) -> Result<InvoiceBuilder<'_, ExplicitSigningPubkey>, Bolt12SemanticError>

Creates an InvoiceBuilder for the refund with the given required fields.

Unless InvoiceBuilder::relative_expiry is set, the invoice will expire two hours after created_at, which is used to set Bolt12Invoice::created_at. Useful for no-std builds where std::time::SystemTime is not available.

The caller is expected to remember the preimage of payment_hash in order to claim a payment for the invoice.

The signing_pubkey is required to sign the invoice since refunds are not in response to an offer, which does have a signing_pubkey.

The payment_paths parameter is useful for maintaining the payment recipient’s privacy. It must contain one or more elements ordered from most-preferred to least-preferred, if there’s a preference. Note, however, that any privacy is lost if a public node id is used for signing_pubkey.

Errors if the request contains unknown required features.

This is not exported to bindings users as builder patterns don’t map outside of move semantics.

pub fn respond_using_derived_keys<ES>( &self, payment_paths: Vec<(BlindedPayInfo, BlindedPath)>, payment_hash: PaymentHash, expanded_key: &ExpandedKey, entropy_source: ES, ) -> Result<InvoiceBuilder<'_, DerivedSigningPubkey>, Bolt12SemanticError>
where ES: Deref, <ES as Deref>::Target: EntropySource,

Creates an InvoiceBuilder for the refund using the given required fields and that uses derived signing keys to sign the Bolt12Invoice.

See Refund::respond_with for further details.

This is not exported to bindings users as builder patterns don’t map outside of move semantics.

pub fn respond_using_derived_keys_no_std<ES>( &self, payment_paths: Vec<(BlindedPayInfo, BlindedPath)>, payment_hash: PaymentHash, created_at: Duration, expanded_key: &ExpandedKey, entropy_source: ES, ) -> Result<InvoiceBuilder<'_, DerivedSigningPubkey>, Bolt12SemanticError>
where ES: Deref, <ES as Deref>::Target: EntropySource,

Creates an InvoiceBuilder for the refund using the given required fields and that uses derived signing keys to sign the Bolt12Invoice.

See Refund::respond_with_no_std for further details.

This is not exported to bindings users as builder patterns don’t map outside of move semantics.

Trait Implementations§

§

impl AsRef<[u8]> for Refund

§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
§

impl Clone for Refund

§

fn clone(&self) -> Refund

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for Refund

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Display for Refund

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl FromStr for Refund

§

type Err = Bolt12ParseError

The associated error which can be returned from parsing.
§

fn from_str(s: &str) -> Result<Refund, <Refund as FromStr>::Err>

Parses a string s to return a value of this type. Read more
§

impl TryFrom<Vec<u8>> for Refund

§

type Error = Bolt12ParseError

The type returned in the event of a conversion error.
§

fn try_from( bytes: Vec<u8>, ) -> Result<Refund, <Refund as TryFrom<Vec<u8>>>::Error>

Performs the conversion.
§

impl Writeable for Refund

§

fn write<W>(&self, writer: &mut W) -> Result<(), Error>
where W: Writer,

Writes self out to the given Writer.
§

fn encode(&self) -> Vec<u8>

Writes self out to a Vec<u8>.
§

fn serialized_length(&self) -> usize

Gets the length of this object after it has been serialized. This can be overridden to optimize cases where we prepend an object with its length.

Auto Trait Implementations§

§

impl Freeze for Refund

§

impl RefUnwindSafe for Refund

§

impl Send for Refund

§

impl Sync for Refund

§

impl Unpin for Refund

§

impl UnwindSafe for Refund

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Any for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

§

fn type_name(&self) -> &'static str

§

impl<T> AnySync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

§

impl<T> AsAny for T
where T: Any,

§

fn as_any(&self) -> &(dyn Any + 'static)

§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

§

fn type_name(&self) -> &'static str

Gets the type name of self
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

§

impl<T> Base32Len for T
where T: AsRef<[u8]>,

§

fn base32_len(&self) -> usize

Calculate the base32 serialized length
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CheckBase32<Vec<u5>> for T
where T: AsRef<[u8]>,

§

type Err = Error

Error type if conversion fails
§

fn check_base32(self) -> Result<Vec<u5>, <T as CheckBase32<Vec<u5>>>::Err>

Check if all values are in range and return array-like struct of u5 values
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<T> Downcast for T
where T: AsAny + ?Sized,

§

fn is<T>(&self) -> bool
where T: AsAny,

Returns true if the boxed type is the same as T. Read more
§

fn downcast_ref<T>(&self) -> Option<&T>
where T: AsAny,

Forward to the method defined on the type Any.
§

fn downcast_mut<T>(&mut self) -> Option<&mut T>
where T: AsAny,

Forward to the method defined on the type Any.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T> ToBase32 for T
where T: AsRef<[u8]>,

§

fn write_base32<W>(&self, writer: &mut W) -> Result<(), <W as WriteBase32>::Err>
where W: WriteBase32,

Encode as base32 and write it to the supplied writer Implementations shouldn’t allocate.
§

fn to_base32(&self) -> Vec<u5>

Convert Self to base32 vector
source§

impl<T> ToHex for T
where T: AsRef<[u8]>,

source§

fn encode_hex<U>(&self) -> U
where U: FromIterator<char>,

Encode the hex strict representing self into the result. Lower case letters are used (e.g. f9b4ca)
source§

fn encode_hex_upper<U>(&self) -> U
where U: FromIterator<char>,

Encode the hex strict representing self into the result. Upper case letters are used (e.g. F9B4CA)
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> DartSafe for T