ChannelManager initialization docs with example
[rust-lightning] / lightning / src / offers / payer.rs
index 1705be85ed8f53bb316154f81edacbd9f2f391ab..19aef23363d8e0afc9a5ddd758d5808098d1d03f 100644 (file)
@@ -9,6 +9,9 @@
 
 //! Data structures and encoding for `invoice_request_metadata` records.
 
+use crate::offers::signer::Metadata;
+use crate::util::ser::WithoutLength;
+
 use crate::prelude::*;
 
 /// An unpredictable sequence of bytes typically containing information needed to derive
@@ -16,4 +19,15 @@ use crate::prelude::*;
 ///
 /// [`InvoiceRequest::payer_id`]: crate::offers::invoice_request::InvoiceRequest::payer_id
 #[derive(Clone, Debug)]
-pub(crate) struct PayerContents(pub Vec<u8>);
+#[cfg_attr(test, derive(PartialEq))]
+pub(super) struct PayerContents(pub Metadata);
+
+/// TLV record type for [`InvoiceRequest::payer_metadata`] and [`Refund::payer_metadata`].
+///
+/// [`InvoiceRequest::payer_metadata`]: crate::offers::invoice_request::InvoiceRequest::payer_metadata
+/// [`Refund::payer_metadata`]: crate::offers::refund::Refund::payer_metadata
+pub(super) const PAYER_METADATA_TYPE: u64 = 0;
+
+tlv_stream!(PayerTlvStream, PayerTlvStreamRef, 0..1, {
+       (PAYER_METADATA_TYPE, metadata: (Vec<u8>, WithoutLength)),
+});