Expose send_payment_for_bolt12_invoice
[rust-lightning] / lightning / src / util / ser.rs
index 5e7c6f8565946a938d198fd412583c07922372da..5f109e1a93c64529d09e462899fb539abf662c68 100644 (file)
@@ -27,6 +27,7 @@ use bitcoin::secp256k1::{PublicKey, SecretKey};
 use bitcoin::secp256k1::constants::{PUBLIC_KEY_SIZE, SECRET_KEY_SIZE, COMPACT_SIGNATURE_SIZE, SCHNORR_SIGNATURE_SIZE};
 use bitcoin::secp256k1::ecdsa;
 use bitcoin::secp256k1::schnorr;
+use bitcoin::amount::Amount;
 use bitcoin::blockdata::constants::ChainHash;
 use bitcoin::blockdata::script::{self, ScriptBuf};
 use bitcoin::blockdata::transaction::{OutPoint, Transaction, TxOut};
@@ -900,7 +901,7 @@ impl Writeable for Vec<Witness> {
        fn write<W: Writer>(&self, w: &mut W) -> Result<(), io::Error> {
                (self.len() as u16).write(w)?;
                for witness in self {
-                       (witness.serialized_len() as u16).write(w)?;
+                       (witness.size() as u16).write(w)?;
                        witness.write(w)?;
                }
                Ok(())
@@ -920,7 +921,7 @@ impl Readable for Vec<Witness> {
                        // of witnesses. We'll just do a sanity check for the lengths and error if there is a mismatch.
                        let witness_len = <u16 as Readable>::read(r)? as usize;
                        let witness = <Witness as Readable>::read(r)?;
-                       if witness.serialized_len() != witness_len {
+                       if witness.size() != witness_len {
                                return Err(DecodeError::BadLengthDescriptor);
                        }
                        witnesses.push(witness);
@@ -1145,6 +1146,20 @@ impl<T: Readable> Readable for Option<T>
        }
 }
 
+impl Writeable for Amount {
+       fn write<W: Writer>(&self, w: &mut W) -> Result<(), io::Error> {
+               self.to_sat().write(w)
+       }
+}
+
+
+impl Readable for Amount {
+       fn read<R: Read>(r: &mut R) -> Result<Self, DecodeError> {
+               let amount: u64 = Readable::read(r)?;
+               Ok(Amount::from_sat(amount))
+       }
+}
+
 impl Writeable for Txid {
        fn write<W: Writer>(&self, w: &mut W) -> Result<(), io::Error> {
                w.write_all(&self[..])