@@ -17,7 +17,7 @@ use lightning::chain;
17
17
use lightning:: chain:: chaininterface:: { BroadcasterInterface , FeeEstimator } ;
18
18
use lightning:: sign:: { NodeSigner , SignerProvider , EntropySource } ;
19
19
use lightning:: ln:: PaymentHash ;
20
- use lightning:: ln:: channelmanager:: { ChannelManager , PaymentId , Retry , RetryableSendFailure , RecipientOnionFields , ProbeSendFailure } ;
20
+ use lightning:: ln:: channelmanager:: { AChannelManager , ChannelManager , PaymentId , Retry , RetryableSendFailure , RecipientOnionFields , ProbeSendFailure } ;
21
21
use lightning:: routing:: router:: { PaymentParameters , RouteParameters , Router } ;
22
22
use lightning:: util:: logger:: Logger ;
23
23
@@ -32,22 +32,13 @@ use core::time::Duration;
32
32
/// with the same [`PaymentHash`] is never sent.
33
33
///
34
34
/// If you wish to use a different payment idempotency token, see [`pay_invoice_with_id`].
35
- pub fn pay_invoice < M : Deref , T : Deref , ES : Deref , NS : Deref , SP : Deref , F : Deref , R : Deref , L : Deref > (
35
+ pub fn pay_invoice < C : AChannelManager > (
36
36
invoice : & Bolt11Invoice , retry_strategy : Retry ,
37
- channelmanager : & ChannelManager < M , T , ES , NS , SP , F , R , L >
37
+ channelmanager : & C
38
38
) -> Result < PaymentId , PaymentError >
39
- where
40
- M :: Target : chain:: Watch < <SP :: Target as SignerProvider >:: Signer > ,
41
- T :: Target : BroadcasterInterface ,
42
- ES :: Target : EntropySource ,
43
- NS :: Target : NodeSigner ,
44
- SP :: Target : SignerProvider ,
45
- F :: Target : FeeEstimator ,
46
- R :: Target : Router ,
47
- L :: Target : Logger ,
48
39
{
49
40
let payment_id = PaymentId ( invoice. payment_hash ( ) . into_inner ( ) ) ;
50
- pay_invoice_with_id ( invoice, payment_id, retry_strategy, channelmanager)
41
+ pay_invoice_with_id ( invoice, payment_id, retry_strategy, channelmanager. get_cm ( ) )
51
42
. map ( |( ) | payment_id)
52
43
}
53
44
@@ -61,22 +52,13 @@ where
61
52
/// [`PaymentHash`] has never been paid before.
62
53
///
63
54
/// See [`pay_invoice`] for a variant which uses the [`PaymentHash`] for the idempotency token.
64
- pub fn pay_invoice_with_id < M : Deref , T : Deref , ES : Deref , NS : Deref , SP : Deref , F : Deref , R : Deref , L : Deref > (
55
+ pub fn pay_invoice_with_id < C : AChannelManager > (
65
56
invoice : & Bolt11Invoice , payment_id : PaymentId , retry_strategy : Retry ,
66
- channelmanager : & ChannelManager < M , T , ES , NS , SP , F , R , L >
57
+ channelmanager : & C
67
58
) -> Result < ( ) , PaymentError >
68
- where
69
- M :: Target : chain:: Watch < <SP :: Target as SignerProvider >:: Signer > ,
70
- T :: Target : BroadcasterInterface ,
71
- ES :: Target : EntropySource ,
72
- NS :: Target : NodeSigner ,
73
- SP :: Target : SignerProvider ,
74
- F :: Target : FeeEstimator ,
75
- R :: Target : Router ,
76
- L :: Target : Logger ,
77
59
{
78
60
let amt_msat = invoice. amount_milli_satoshis ( ) . ok_or ( PaymentError :: Invoice ( "amount missing" ) ) ?;
79
- pay_invoice_using_amount ( invoice, amt_msat, payment_id, retry_strategy, channelmanager)
61
+ pay_invoice_using_amount ( invoice, amt_msat, payment_id, retry_strategy, channelmanager. get_cm ( ) )
80
62
}
81
63
82
64
/// Pays the given zero-value [`Bolt11Invoice`] using the given amount, retrying if needed based on
@@ -88,19 +70,10 @@ where
88
70
///
89
71
/// If you wish to use a different payment idempotency token, see
90
72
/// [`pay_zero_value_invoice_with_id`].
91
- pub fn pay_zero_value_invoice < M : Deref , T : Deref , ES : Deref , NS : Deref , SP : Deref , F : Deref , R : Deref , L : Deref > (
73
+ pub fn pay_zero_value_invoice < C : AChannelManager > (
92
74
invoice : & Bolt11Invoice , amount_msats : u64 , retry_strategy : Retry ,
93
- channelmanager : & ChannelManager < M , T , ES , NS , SP , F , R , L >
75
+ channelmanager : & C
94
76
) -> Result < PaymentId , PaymentError >
95
- where
96
- M :: Target : chain:: Watch < <SP :: Target as SignerProvider >:: Signer > ,
97
- T :: Target : BroadcasterInterface ,
98
- ES :: Target : EntropySource ,
99
- NS :: Target : NodeSigner ,
100
- SP :: Target : SignerProvider ,
101
- F :: Target : FeeEstimator ,
102
- R :: Target : Router ,
103
- L :: Target : Logger ,
104
77
{
105
78
let payment_id = PaymentId ( invoice. payment_hash ( ) . into_inner ( ) ) ;
106
79
pay_zero_value_invoice_with_id ( invoice, amount_msats, payment_id, retry_strategy,
@@ -119,25 +92,16 @@ where
119
92
///
120
93
/// See [`pay_zero_value_invoice`] for a variant which uses the [`PaymentHash`] for the
121
94
/// idempotency token.
122
- pub fn pay_zero_value_invoice_with_id < M : Deref , T : Deref , ES : Deref , NS : Deref , SP : Deref , F : Deref , R : Deref , L : Deref > (
95
+ pub fn pay_zero_value_invoice_with_id < C : AChannelManager > (
123
96
invoice : & Bolt11Invoice , amount_msats : u64 , payment_id : PaymentId , retry_strategy : Retry ,
124
- channelmanager : & ChannelManager < M , T , ES , NS , SP , F , R , L >
97
+ channelmanager : & C
125
98
) -> Result < ( ) , PaymentError >
126
- where
127
- M :: Target : chain:: Watch < <SP :: Target as SignerProvider >:: Signer > ,
128
- T :: Target : BroadcasterInterface ,
129
- ES :: Target : EntropySource ,
130
- NS :: Target : NodeSigner ,
131
- SP :: Target : SignerProvider ,
132
- F :: Target : FeeEstimator ,
133
- R :: Target : Router ,
134
- L :: Target : Logger ,
135
99
{
136
100
if invoice. amount_milli_satoshis ( ) . is_some ( ) {
137
101
Err ( PaymentError :: Invoice ( "amount unexpected" ) )
138
102
} else {
139
103
pay_invoice_using_amount ( invoice, amount_msats, payment_id, retry_strategy,
140
- channelmanager)
104
+ channelmanager. get_cm ( ) )
141
105
}
142
106
}
143
107
@@ -166,19 +130,9 @@ fn pay_invoice_using_amount<P: Deref>(
166
130
/// Sends payment probes over all paths of a route that would be used to pay the given invoice.
167
131
///
168
132
/// See [`ChannelManager::send_preflight_probes`] for more information.
169
- pub fn preflight_probe_invoice < M : Deref , T : Deref , ES : Deref , NS : Deref , SP : Deref , F : Deref , R : Deref , L : Deref > (
170
- invoice : & Bolt11Invoice , channelmanager : & ChannelManager < M , T , ES , NS , SP , F , R , L > ,
171
- liquidity_limit_multiplier : Option < u64 > ,
133
+ pub fn preflight_probe_invoice < C : AChannelManager > (
134
+ invoice : & Bolt11Invoice , channelmanager : & C , liquidity_limit_multiplier : Option < u64 > ,
172
135
) -> Result < Vec < ( PaymentHash , PaymentId ) > , ProbingError >
173
- where
174
- M :: Target : chain:: Watch < <SP :: Target as SignerProvider >:: Signer > ,
175
- T :: Target : BroadcasterInterface ,
176
- ES :: Target : EntropySource ,
177
- NS :: Target : NodeSigner ,
178
- SP :: Target : SignerProvider ,
179
- F :: Target : FeeEstimator ,
180
- R :: Target : Router ,
181
- L :: Target : Logger ,
182
136
{
183
137
let amount_msat = if let Some ( invoice_amount_msat) = invoice. amount_milli_satoshis ( ) {
184
138
invoice_amount_msat
@@ -199,27 +153,18 @@ where
199
153
}
200
154
let route_params = RouteParameters { payment_params, final_value_msat : amount_msat } ;
201
155
202
- channelmanager. send_preflight_probes ( route_params, liquidity_limit_multiplier)
156
+ channelmanager. get_cm ( ) . send_preflight_probes ( route_params, liquidity_limit_multiplier)
203
157
. map_err ( ProbingError :: Sending )
204
158
}
205
159
206
160
/// Sends payment probes over all paths of a route that would be used to pay the given zero-value
207
161
/// invoice using the given amount.
208
162
///
209
163
/// See [`ChannelManager::send_preflight_probes`] for more information.
210
- pub fn preflight_probe_zero_value_invoice < M : Deref , T : Deref , ES : Deref , NS : Deref , SP : Deref , F : Deref , R : Deref , L : Deref > (
211
- invoice : & Bolt11Invoice , amount_msat : u64 , channelmanager : & ChannelManager < M , T , ES , NS , SP , F , R , L > ,
164
+ pub fn preflight_probe_zero_value_invoice < C : AChannelManager > (
165
+ invoice : & Bolt11Invoice , amount_msat : u64 , channelmanager : & C ,
212
166
liquidity_limit_multiplier : Option < u64 > ,
213
167
) -> Result < Vec < ( PaymentHash , PaymentId ) > , ProbingError >
214
- where
215
- M :: Target : chain:: Watch < <SP :: Target as SignerProvider >:: Signer > ,
216
- T :: Target : BroadcasterInterface ,
217
- ES :: Target : EntropySource ,
218
- NS :: Target : NodeSigner ,
219
- SP :: Target : SignerProvider ,
220
- F :: Target : FeeEstimator ,
221
- R :: Target : Router ,
222
- L :: Target : Logger ,
223
168
{
224
169
if invoice. amount_milli_satoshis ( ) . is_some ( ) {
225
170
return Err ( ProbingError :: Invoice ( "amount unexpected" ) ) ;
@@ -238,7 +183,7 @@ where
238
183
}
239
184
let route_params = RouteParameters { payment_params, final_value_msat : amount_msat } ;
240
185
241
- channelmanager. send_preflight_probes ( route_params, liquidity_limit_multiplier)
186
+ channelmanager. get_cm ( ) . send_preflight_probes ( route_params, liquidity_limit_multiplier)
242
187
. map_err ( ProbingError :: Sending )
243
188
}
244
189
0 commit comments