@@ -33,7 +33,7 @@ use lightning::ln::channelmanager::{AChannelManager, ChainParameters};
33
33
use lightning:: ln:: msgs:: { ErrorAction , LightningError } ;
34
34
use lightning:: ln:: peer_handler:: CustomMessageHandler ;
35
35
use lightning:: ln:: wire:: CustomMessageReader ;
36
- use lightning:: sign:: EntropySource ;
36
+ use lightning:: sign:: { EntropySource , NodeSigner } ;
37
37
use lightning:: util:: logger:: Level ;
38
38
use lightning:: util:: ser:: { LengthLimitedRead , LengthReadable } ;
39
39
use lightning:: util:: wakers:: Future ;
@@ -86,6 +86,10 @@ pub trait ALiquidityManager {
86
86
type EntropySource : EntropySource + ?Sized ;
87
87
/// A type that may be dereferenced to [`Self::EntropySource`].
88
88
type ES : Deref < Target = Self :: EntropySource > + Clone ;
89
+ /// A type implementing [`NodeSigner`]
90
+ type NodeSigner : NodeSigner + ?Sized ;
91
+ /// A type that may be dereferenced to [`Self::NodeSigner`].
92
+ type NS : Deref < Target = Self :: NodeSigner > + Clone ;
89
93
/// A type implementing [`AChannelManager`]
90
94
type AChannelManager : AChannelManager + ?Sized ;
91
95
/// A type that may be dereferenced to [`Self::AChannelManager`].
@@ -99,26 +103,34 @@ pub trait ALiquidityManager {
99
103
/// A type that may be dereferenced to [`Self::TimeProvider`].
100
104
type TP : Deref < Target = Self :: TimeProvider > + Clone ;
101
105
/// Returns a reference to the actual [`LiquidityManager`] object.
102
- fn get_lm ( & self ) -> & LiquidityManager < Self :: ES , Self :: CM , Self :: C , Self :: TP > ;
106
+ fn get_lm ( & self ) -> & LiquidityManager < Self :: ES , Self :: NS , Self :: CM , Self :: C , Self :: TP > ;
103
107
}
104
108
105
- impl < ES : Deref + Clone , CM : Deref + Clone , C : Deref + Clone , TP : Deref + Clone > ALiquidityManager
106
- for LiquidityManager < ES , CM , C , TP >
109
+ impl <
110
+ ES : Deref + Clone ,
111
+ NS : Deref + Clone ,
112
+ CM : Deref + Clone ,
113
+ C : Deref + Clone ,
114
+ TP : Deref + Clone ,
115
+ > ALiquidityManager for LiquidityManager < ES , NS , CM , C , TP >
107
116
where
108
117
ES :: Target : EntropySource ,
118
+ NS :: Target : NodeSigner ,
109
119
CM :: Target : AChannelManager ,
110
120
C :: Target : Filter ,
111
121
TP :: Target : TimeProvider ,
112
122
{
113
123
type EntropySource = ES :: Target ;
114
124
type ES = ES ;
125
+ type NodeSigner = NS :: Target ;
126
+ type NS = NS ;
115
127
type AChannelManager = CM :: Target ;
116
128
type CM = CM ;
117
129
type Filter = C :: Target ;
118
130
type C = C ;
119
131
type TimeProvider = TP :: Target ;
120
132
type TP = TP ;
121
- fn get_lm ( & self ) -> & LiquidityManager < ES , CM , C , TP > {
133
+ fn get_lm ( & self ) -> & LiquidityManager < ES , NS , CM , C , TP > {
122
134
self
123
135
}
124
136
}
@@ -144,11 +156,13 @@ where
144
156
/// [`Event::PaymentForwarded`]: lightning::events::Event::PaymentForwarded
145
157
pub struct LiquidityManager <
146
158
ES : Deref + Clone ,
159
+ NS : Deref + Clone ,
147
160
CM : Deref + Clone ,
148
161
C : Deref + Clone ,
149
162
TP : Deref + Clone ,
150
163
> where
151
164
ES :: Target : EntropySource ,
165
+ NS :: Target : NodeSigner ,
152
166
CM :: Target : AChannelManager ,
153
167
C :: Target : Filter ,
154
168
TP :: Target : TimeProvider ,
@@ -165,7 +179,7 @@ pub struct LiquidityManager<
165
179
lsps1_client_handler : Option < LSPS1ClientHandler < ES > > ,
166
180
lsps2_service_handler : Option < LSPS2ServiceHandler < CM > > ,
167
181
lsps2_client_handler : Option < LSPS2ClientHandler < ES > > ,
168
- lsps5_service_handler : Option < LSPS5ServiceHandler < CM , TP > > ,
182
+ lsps5_service_handler : Option < LSPS5ServiceHandler < CM , NS , TP > > ,
169
183
lsps5_client_handler : Option < LSPS5ClientHandler < ES , TP > > ,
170
184
service_config : Option < LiquidityServiceConfig > ,
171
185
_client_config : Option < LiquidityClientConfig > ,
@@ -174,22 +188,24 @@ pub struct LiquidityManager<
174
188
}
175
189
176
190
#[ cfg( feature = "time" ) ]
177
- impl < ES : Deref + Clone , CM : Deref + Clone , C : Deref + Clone >
178
- LiquidityManager < ES , CM , C , Arc < DefaultTimeProvider > >
191
+ impl < ES : Deref + Clone , NS : Deref + Clone , CM : Deref + Clone , C : Deref + Clone >
192
+ LiquidityManager < ES , NS , CM , C , Arc < DefaultTimeProvider > >
179
193
where
180
194
ES :: Target : EntropySource ,
195
+ NS :: Target : NodeSigner ,
181
196
CM :: Target : AChannelManager ,
182
197
C :: Target : Filter ,
183
198
{
184
199
/// Constructor for the [`LiquidityManager`] using the default system clock
185
200
pub fn new (
186
- entropy_source : ES , channel_manager : CM , chain_source : Option < C > ,
201
+ entropy_source : ES , node_signer : NS , channel_manager : CM , chain_source : Option < C > ,
187
202
chain_params : Option < ChainParameters > , service_config : Option < LiquidityServiceConfig > ,
188
203
client_config : Option < LiquidityClientConfig > ,
189
204
) -> Self {
190
205
let time_provider = Arc :: new ( DefaultTimeProvider ) ;
191
206
Self :: new_with_custom_time_provider (
192
207
entropy_source,
208
+ node_signer,
193
209
channel_manager,
194
210
chain_source,
195
211
chain_params,
@@ -200,10 +216,16 @@ where
200
216
}
201
217
}
202
218
203
- impl < ES : Deref + Clone , CM : Deref + Clone , C : Deref + Clone , TP : Deref + Clone >
204
- LiquidityManager < ES , CM , C , TP >
219
+ impl <
220
+ ES : Deref + Clone ,
221
+ NS : Deref + Clone ,
222
+ CM : Deref + Clone ,
223
+ C : Deref + Clone ,
224
+ TP : Deref + Clone ,
225
+ > LiquidityManager < ES , NS , CM , C , TP >
205
226
where
206
227
ES :: Target : EntropySource ,
228
+ NS :: Target : NodeSigner ,
207
229
CM :: Target : AChannelManager ,
208
230
C :: Target : Filter ,
209
231
TP :: Target : TimeProvider ,
@@ -215,7 +237,7 @@ where
215
237
/// Sets up the required protocol message handlers based on the given
216
238
/// [`LiquidityClientConfig`] and [`LiquidityServiceConfig`].
217
239
pub fn new_with_custom_time_provider (
218
- entropy_source : ES , channel_manager : CM , chain_source : Option < C > ,
240
+ entropy_source : ES , node_signer : NS , channel_manager : CM , chain_source : Option < C > ,
219
241
chain_params : Option < ChainParameters > , service_config : Option < LiquidityServiceConfig > ,
220
242
client_config : Option < LiquidityClientConfig > , time_provider : TP ,
221
243
) -> Self {
@@ -266,18 +288,19 @@ where
266
288
let lsps5_service_handler = service_config. as_ref ( ) . and_then ( |config| {
267
289
config. lsps5_service_config . as_ref ( ) . map ( |config| {
268
290
if let Some ( number) =
269
- <LSPS5ServiceHandler < CM , TP > as LSPSProtocolMessageHandler >:: PROTOCOL_NUMBER
291
+ <LSPS5ServiceHandler < CM , NS , TP > as LSPSProtocolMessageHandler >:: PROTOCOL_NUMBER
270
292
{
271
293
supported_protocols. push ( number) ;
272
294
}
273
295
274
- return LSPS5ServiceHandler :: new_with_time_provider (
296
+ LSPS5ServiceHandler :: new_with_time_provider (
275
297
Arc :: clone ( & pending_events) ,
276
298
Arc :: clone ( & pending_messages) ,
277
299
channel_manager. clone ( ) ,
300
+ node_signer,
278
301
config. clone ( ) ,
279
- time_provider,
280
- ) ;
302
+ time_provider. clone ( ) ,
303
+ )
281
304
} )
282
305
} ) ;
283
306
@@ -394,7 +417,7 @@ where
394
417
/// Returns a reference to the LSPS5 server-side handler.
395
418
///
396
419
/// The returned hendler allows to initiate the LSPS5 service-side flow.
397
- pub fn lsps5_service_handler ( & self ) -> Option < & LSPS5ServiceHandler < CM , TP > > {
420
+ pub fn lsps5_service_handler ( & self ) -> Option < & LSPS5ServiceHandler < CM , NS , TP > > {
398
421
self . lsps5_service_handler . as_ref ( )
399
422
}
400
423
@@ -548,10 +571,16 @@ where
548
571
}
549
572
}
550
573
551
- impl < ES : Deref + Clone , CM : Deref + Clone , C : Deref + Clone , TP : Deref + Clone > CustomMessageReader
552
- for LiquidityManager < ES , CM , C , TP >
574
+ impl <
575
+ ES : Deref + Clone ,
576
+ NS : Deref + Clone ,
577
+ CM : Deref + Clone ,
578
+ C : Deref + Clone ,
579
+ TP : Deref + Clone ,
580
+ > CustomMessageReader for LiquidityManager < ES , NS , CM , C , TP >
553
581
where
554
582
ES :: Target : EntropySource ,
583
+ NS :: Target : NodeSigner ,
555
584
CM :: Target : AChannelManager ,
556
585
C :: Target : Filter ,
557
586
TP :: Target : TimeProvider ,
@@ -570,10 +599,16 @@ where
570
599
}
571
600
}
572
601
573
- impl < ES : Deref + Clone , CM : Deref + Clone , C : Deref + Clone , TP : Deref + Clone > CustomMessageHandler
574
- for LiquidityManager < ES , CM , C , TP >
602
+ impl <
603
+ ES : Deref + Clone ,
604
+ NS : Deref + Clone ,
605
+ CM : Deref + Clone ,
606
+ C : Deref + Clone ,
607
+ TP : Deref + Clone ,
608
+ > CustomMessageHandler for LiquidityManager < ES , NS , CM , C , TP >
575
609
where
576
610
ES :: Target : EntropySource ,
611
+ NS :: Target : NodeSigner ,
577
612
CM :: Target : AChannelManager ,
578
613
C :: Target : Filter ,
579
614
TP :: Target : TimeProvider ,
@@ -683,10 +718,16 @@ where
683
718
}
684
719
}
685
720
686
- impl < ES : Deref + Clone , CM : Deref + Clone , C : Deref + Clone , TP : Deref + Clone > Listen
687
- for LiquidityManager < ES , CM , C , TP >
721
+ impl <
722
+ ES : Deref + Clone ,
723
+ NS : Deref + Clone ,
724
+ CM : Deref + Clone ,
725
+ C : Deref + Clone ,
726
+ TP : Deref + Clone ,
727
+ > Listen for LiquidityManager < ES , NS , CM , C , TP >
688
728
where
689
729
ES :: Target : EntropySource ,
730
+ NS :: Target : NodeSigner ,
690
731
CM :: Target : AChannelManager ,
691
732
C :: Target : Filter ,
692
733
TP :: Target : TimeProvider ,
@@ -722,10 +763,16 @@ where
722
763
}
723
764
}
724
765
725
- impl < ES : Deref + Clone , CM : Deref + Clone , C : Deref + Clone , TP : Deref + Clone > Confirm
726
- for LiquidityManager < ES , CM , C , TP >
766
+ impl <
767
+ ES : Deref + Clone ,
768
+ NS : Deref + Clone ,
769
+ CM : Deref + Clone ,
770
+ C : Deref + Clone ,
771
+ TP : Deref + Clone ,
772
+ > Confirm for LiquidityManager < ES , NS , CM , C , TP >
727
773
where
728
774
ES :: Target : EntropySource ,
775
+ NS :: Target : NodeSigner ,
729
776
CM :: Target : AChannelManager ,
730
777
C :: Target : Filter ,
731
778
TP :: Target : TimeProvider ,
0 commit comments