@@ -33,7 +33,7 @@ use lightning::ln::channelmanager::{AChannelManager, ChainParameters};
3333use lightning:: ln:: msgs:: { ErrorAction , LightningError } ;
3434use lightning:: ln:: peer_handler:: CustomMessageHandler ;
3535use lightning:: ln:: wire:: CustomMessageReader ;
36- use lightning:: sign:: EntropySource ;
36+ use lightning:: sign:: { EntropySource , NodeSigner } ;
3737use lightning:: util:: logger:: Level ;
3838use lightning:: util:: ser:: { LengthLimitedRead , LengthReadable } ;
3939use lightning:: util:: wakers:: Future ;
@@ -86,6 +86,10 @@ pub trait ALiquidityManager {
8686 type EntropySource : EntropySource + ?Sized ;
8787 /// A type that may be dereferenced to [`Self::EntropySource`].
8888 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 ;
8993 /// A type implementing [`AChannelManager`]
9094 type AChannelManager : AChannelManager + ?Sized ;
9195 /// A type that may be dereferenced to [`Self::AChannelManager`].
@@ -99,26 +103,34 @@ pub trait ALiquidityManager {
99103 /// A type that may be dereferenced to [`Self::TimeProvider`].
100104 type TP : Deref < Target = Self :: TimeProvider > + Clone ;
101105 /// 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 > ;
103107}
104108
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 >
107116where
108117 ES :: Target : EntropySource ,
118+ NS :: Target : NodeSigner ,
109119 CM :: Target : AChannelManager ,
110120 C :: Target : Filter ,
111121 TP :: Target : TimeProvider ,
112122{
113123 type EntropySource = ES :: Target ;
114124 type ES = ES ;
125+ type NodeSigner = NS :: Target ;
126+ type NS = NS ;
115127 type AChannelManager = CM :: Target ;
116128 type CM = CM ;
117129 type Filter = C :: Target ;
118130 type C = C ;
119131 type TimeProvider = TP :: Target ;
120132 type TP = TP ;
121- fn get_lm ( & self ) -> & LiquidityManager < ES , CM , C , TP > {
133+ fn get_lm ( & self ) -> & LiquidityManager < ES , NS , CM , C , TP > {
122134 self
123135 }
124136}
@@ -144,11 +156,13 @@ where
144156/// [`Event::PaymentForwarded`]: lightning::events::Event::PaymentForwarded
145157pub struct LiquidityManager <
146158 ES : Deref + Clone ,
159+ NS : Deref + Clone ,
147160 CM : Deref + Clone ,
148161 C : Deref + Clone ,
149162 TP : Deref + Clone ,
150163> where
151164 ES :: Target : EntropySource ,
165+ NS :: Target : NodeSigner ,
152166 CM :: Target : AChannelManager ,
153167 C :: Target : Filter ,
154168 TP :: Target : TimeProvider ,
@@ -165,7 +179,7 @@ pub struct LiquidityManager<
165179 lsps1_client_handler : Option < LSPS1ClientHandler < ES > > ,
166180 lsps2_service_handler : Option < LSPS2ServiceHandler < CM > > ,
167181 lsps2_client_handler : Option < LSPS2ClientHandler < ES > > ,
168- lsps5_service_handler : Option < LSPS5ServiceHandler < CM , TP > > ,
182+ lsps5_service_handler : Option < LSPS5ServiceHandler < CM , NS , TP > > ,
169183 lsps5_client_handler : Option < LSPS5ClientHandler < ES , TP > > ,
170184 service_config : Option < LiquidityServiceConfig > ,
171185 _client_config : Option < LiquidityClientConfig > ,
@@ -174,22 +188,24 @@ pub struct LiquidityManager<
174188}
175189
176190#[ 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 > >
179193where
180194 ES :: Target : EntropySource ,
195+ NS :: Target : NodeSigner ,
181196 CM :: Target : AChannelManager ,
182197 C :: Target : Filter ,
183198{
184199 /// Constructor for the [`LiquidityManager`] using the default system clock
185200 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 > ,
187202 chain_params : Option < ChainParameters > , service_config : Option < LiquidityServiceConfig > ,
188203 client_config : Option < LiquidityClientConfig > ,
189204 ) -> Self {
190205 let time_provider = Arc :: new ( DefaultTimeProvider ) ;
191206 Self :: new_with_custom_time_provider (
192207 entropy_source,
208+ node_signer,
193209 channel_manager,
194210 chain_source,
195211 chain_params,
@@ -200,10 +216,16 @@ where
200216 }
201217}
202218
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 >
205226where
206227 ES :: Target : EntropySource ,
228+ NS :: Target : NodeSigner ,
207229 CM :: Target : AChannelManager ,
208230 C :: Target : Filter ,
209231 TP :: Target : TimeProvider ,
@@ -215,7 +237,7 @@ where
215237 /// Sets up the required protocol message handlers based on the given
216238 /// [`LiquidityClientConfig`] and [`LiquidityServiceConfig`].
217239 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 > ,
219241 chain_params : Option < ChainParameters > , service_config : Option < LiquidityServiceConfig > ,
220242 client_config : Option < LiquidityClientConfig > , time_provider : TP ,
221243 ) -> Self {
@@ -266,18 +288,19 @@ where
266288 let lsps5_service_handler = service_config. as_ref ( ) . and_then ( |config| {
267289 config. lsps5_service_config . as_ref ( ) . map ( |config| {
268290 if let Some ( number) =
269- <LSPS5ServiceHandler < CM , TP > as LSPSProtocolMessageHandler >:: PROTOCOL_NUMBER
291+ <LSPS5ServiceHandler < CM , NS , TP > as LSPSProtocolMessageHandler >:: PROTOCOL_NUMBER
270292 {
271293 supported_protocols. push ( number) ;
272294 }
273295
274- return LSPS5ServiceHandler :: new_with_time_provider (
296+ LSPS5ServiceHandler :: new_with_time_provider (
275297 Arc :: clone ( & pending_events) ,
276298 Arc :: clone ( & pending_messages) ,
277299 channel_manager. clone ( ) ,
300+ node_signer,
278301 config. clone ( ) ,
279- time_provider,
280- ) ;
302+ time_provider. clone ( ) ,
303+ )
281304 } )
282305 } ) ;
283306
@@ -394,7 +417,7 @@ where
394417 /// Returns a reference to the LSPS5 server-side handler.
395418 ///
396419 /// 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 > > {
398421 self . lsps5_service_handler . as_ref ( )
399422 }
400423
@@ -548,10 +571,16 @@ where
548571 }
549572}
550573
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 >
553581where
554582 ES :: Target : EntropySource ,
583+ NS :: Target : NodeSigner ,
555584 CM :: Target : AChannelManager ,
556585 C :: Target : Filter ,
557586 TP :: Target : TimeProvider ,
@@ -570,10 +599,16 @@ where
570599 }
571600}
572601
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 >
575609where
576610 ES :: Target : EntropySource ,
611+ NS :: Target : NodeSigner ,
577612 CM :: Target : AChannelManager ,
578613 C :: Target : Filter ,
579614 TP :: Target : TimeProvider ,
@@ -683,10 +718,16 @@ where
683718 }
684719}
685720
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 >
688728where
689729 ES :: Target : EntropySource ,
730+ NS :: Target : NodeSigner ,
690731 CM :: Target : AChannelManager ,
691732 C :: Target : Filter ,
692733 TP :: Target : TimeProvider ,
@@ -722,10 +763,16 @@ where
722763 }
723764}
724765
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 >
727773where
728774 ES :: Target : EntropySource ,
775+ NS :: Target : NodeSigner ,
729776 CM :: Target : AChannelManager ,
730777 C :: Target : Filter ,
731778 TP :: Target : TimeProvider ,
0 commit comments