Skip to content

Commit 47e425e

Browse files
committed
Add a lightning-types dependency to lightning-invoice
`lightning-invoice` currently has a dependency on the entire `lightning` crate just because it wants to use some of the useful types from it. This is obviously backwards and leads to some awkwardness like the BOLT 11 invoice signing API in the `lightning` crate taking a `[u5]` rather than a `Bolt11Invoice`. This takes tees us up for the final step, adding a `lightning-types` dependency to `lightning-invoice` and using it for imports rather than the `lightning` crate.
1 parent f9ec3a3 commit 47e425e

File tree

3 files changed

+15
-17
lines changed

3 files changed

+15
-17
lines changed

lightning-invoice/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ std = ["bitcoin/std", "lightning/std", "bech32/std"]
2121

2222
[dependencies]
2323
bech32 = { version = "0.9.1", default-features = false }
24+
lightning-types = { version = "0.1", path = "../lightning-types", default-features = false }
2425
lightning = { version = "0.0.123-beta", path = "../lightning", default-features = false }
2526
secp256k1 = { version = "0.28.0", default-features = false, features = ["recovery", "alloc"] }
2627
serde = { version = "1.0.118", optional = true }

lightning-invoice/src/de.rs

+4-6
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,8 @@ use bitcoin::{PubkeyHash, ScriptHash, WitnessVersion};
1414
use bitcoin::hashes::Hash;
1515
use bitcoin::hashes::sha256;
1616
use crate::prelude::*;
17-
use lightning::ln::types::PaymentSecret;
18-
use lightning::routing::gossip::RoutingFees;
19-
use lightning::routing::router::{RouteHint, RouteHintHop};
17+
use lightning_types::PaymentSecret;
18+
use lightning_types::routing::{RoutingFees, RouteHint, RouteHintHop};
2019

2120
use secp256k1::ecdsa::{RecoveryId, RecoverableSignature};
2221
use secp256k1::PublicKey;
@@ -918,8 +917,7 @@ mod test {
918917

919918
#[test]
920919
fn test_parse_route() {
921-
use lightning::routing::gossip::RoutingFees;
922-
use lightning::routing::router::{RouteHint, RouteHintHop};
920+
use lightning_types::routing::{RoutingFees, RouteHint, RouteHintHop};
923921
use crate::PrivateRoute;
924922
use bech32::FromBase32;
925923

@@ -974,7 +972,7 @@ mod test {
974972

975973
#[test]
976974
fn test_payment_secret_and_features_de_and_ser() {
977-
use lightning::ln::features::Bolt11InvoiceFeatures;
975+
use lightning_types::features::Bolt11InvoiceFeatures;
978976
use secp256k1::ecdsa::{RecoveryId, RecoverableSignature};
979977
use crate::TaggedField::*;
980978
use crate::{SiPrefix, SignedRawBolt11Invoice, Bolt11InvoiceSignature, RawBolt11Invoice, RawHrp, RawDataPart,

lightning-invoice/src/lib.rs

+10-11
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ pub mod utils;
3030

3131
extern crate bech32;
3232
#[macro_use] extern crate lightning;
33+
extern crate lightning_types;
3334
extern crate secp256k1;
3435
extern crate alloc;
3536
#[cfg(any(test, feature = "std"))]
@@ -44,7 +45,7 @@ use bech32::u5;
4445
use bitcoin::{Address, Network, PubkeyHash, ScriptHash, WitnessProgram, WitnessVersion};
4546
use bitcoin::address::Payload;
4647
use bitcoin::hashes::{Hash, sha256};
47-
use lightning::ln::features::Bolt11InvoiceFeatures;
48+
use lightning_types::features::Bolt11InvoiceFeatures;
4849
use lightning::util::invoice::construct_invoice_preimage;
4950

5051
use secp256k1::PublicKey;
@@ -64,12 +65,10 @@ use core::str;
6465
use serde::{Deserialize, Deserializer,Serialize, Serializer, de::Error};
6566

6667
#[doc(no_inline)]
67-
pub use lightning::ln::types::PaymentSecret;
68+
pub use lightning_types::PaymentSecret;
6869
#[doc(no_inline)]
69-
pub use lightning::routing::router::{RouteHint, RouteHintHop};
70-
#[doc(no_inline)]
71-
pub use lightning::routing::gossip::RoutingFees;
72-
use lightning::util::string::UntrustedString;
70+
pub use lightning_types::routing::{RoutingFees, RouteHint, RouteHintHop};
71+
use lightning_types::string::UntrustedString;
7372

7473
mod de;
7574
mod ser;
@@ -161,7 +160,7 @@ pub const DEFAULT_MIN_FINAL_CLTV_EXPIRY_DELTA: u64 = 18;
161160
/// use secp256k1::Secp256k1;
162161
/// use secp256k1::SecretKey;
163162
///
164-
/// use lightning::ln::types::PaymentSecret;
163+
/// use lightning_types::PaymentSecret;
165164
///
166165
/// use lightning_invoice::{Currency, InvoiceBuilder};
167166
///
@@ -1877,14 +1876,14 @@ mod test {
18771876
#[test]
18781877
fn test_check_feature_bits() {
18791878
use crate::TaggedField::*;
1880-
use lightning::ln::features::Bolt11InvoiceFeatures;
1879+
use lightning_types::features::Bolt11InvoiceFeatures;
18811880
use secp256k1::Secp256k1;
18821881
use secp256k1::SecretKey;
18831882
use crate::{Bolt11Invoice, RawBolt11Invoice, RawHrp, RawDataPart, Currency, Sha256, PositiveTimestamp,
18841883
Bolt11SemanticError};
18851884

18861885
let private_key = SecretKey::from_slice(&[42; 32]).unwrap();
1887-
let payment_secret = lightning::ln::types::PaymentSecret([21; 32]);
1886+
let payment_secret = lightning_types::PaymentSecret([21; 32]);
18881887
let invoice_template = RawBolt11Invoice {
18891888
hrp: RawHrp {
18901889
currency: Currency::Bitcoin,
@@ -1998,7 +1997,7 @@ mod test {
19981997
#[test]
19991998
fn test_builder_fail() {
20001999
use crate::*;
2001-
use lightning::routing::router::RouteHintHop;
2000+
use lightning_types::routing::RouteHintHop;
20022001
use std::iter::FromIterator;
20032002
use secp256k1::PublicKey;
20042003

@@ -2052,7 +2051,7 @@ mod test {
20522051
#[test]
20532052
fn test_builder_ok() {
20542053
use crate::*;
2055-
use lightning::routing::router::RouteHintHop;
2054+
use lightning_types::routing::RouteHintHop;
20562055
use secp256k1::Secp256k1;
20572056
use secp256k1::{SecretKey, PublicKey};
20582057
use std::time::Duration;

0 commit comments

Comments
 (0)