Skip to main content

cln_rpc/
model.rs

1
2// This file was automatically generated using the following command:
3//
4// ```bash
5// contrib/msggen/msggen/__main__.py -s generate
6// ```
7//
8// Do not edit this file, it'll be overwritten. Rather edit the schema that
9// this file was generated from
10
11#![allow(deprecated)]
12
13//! A collection of models to describe [requests] and [responses].
14//!
15use serde::{Deserialize, Serialize};
16
17#[derive(Clone, Debug, Serialize, Deserialize)]
18#[serde(tag = "method", content = "params")]
19#[serde(rename_all = "lowercase")]
20pub enum Request {
21	Getinfo(requests::GetinfoRequest),
22	ListPeers(requests::ListpeersRequest),
23	ListFunds(requests::ListfundsRequest),
24	SendPay(requests::SendpayRequest),
25	ListChannels(requests::ListchannelsRequest),
26	AddGossip(requests::AddgossipRequest),
27	AddPsbtOutput(requests::AddpsbtoutputRequest),
28	#[serde(rename = "autoclean-once")]
29	AutoCleanOnce(requests::AutocleanonceRequest),
30	#[serde(rename = "autoclean-status")]
31	AutoCleanStatus(requests::AutocleanstatusRequest),
32	CheckMessage(requests::CheckmessageRequest),
33	Close(requests::CloseRequest),
34	Connect(requests::ConnectRequest),
35	CreateInvoice(requests::CreateinvoiceRequest),
36	Datastore(requests::DatastoreRequest),
37	DatastoreUsage(requests::DatastoreusageRequest),
38	CreateOnion(requests::CreateonionRequest),
39	DelDatastore(requests::DeldatastoreRequest),
40	DelInvoice(requests::DelinvoiceRequest),
41	#[serde(rename = "dev-forget-channel")]
42	DevForgetChannel(requests::DevforgetchannelRequest),
43	EmergencyRecover(requests::EmergencyrecoverRequest),
44	GetEmergencyRecoverData(requests::GetemergencyrecoverdataRequest),
45	ExposeSecret(requests::ExposesecretRequest),
46	Recover(requests::RecoverRequest),
47	RecoverChannel(requests::RecoverchannelRequest),
48	Invoice(requests::InvoiceRequest),
49	InvoiceRequest(requests::InvoicerequestRequest),
50	DisableInvoiceRequest(requests::DisableinvoicerequestRequest),
51	ListInvoiceRequests(requests::ListinvoicerequestsRequest),
52	ListDatastore(requests::ListdatastoreRequest),
53	ListInvoices(requests::ListinvoicesRequest),
54	SendOnion(requests::SendonionRequest),
55	ListSendPays(requests::ListsendpaysRequest),
56	ListTransactions(requests::ListtransactionsRequest),
57	MakeSecret(requests::MakesecretRequest),
58	Pay(requests::PayRequest),
59	ListNodes(requests::ListnodesRequest),
60	WaitAnyInvoice(requests::WaitanyinvoiceRequest),
61	WaitInvoice(requests::WaitinvoiceRequest),
62	WaitSendPay(requests::WaitsendpayRequest),
63	NewAddr(requests::NewaddrRequest),
64	Withdraw(requests::WithdrawRequest),
65	KeySend(requests::KeysendRequest),
66	FundPsbt(requests::FundpsbtRequest),
67	SendPsbt(requests::SendpsbtRequest),
68	SignPsbt(requests::SignpsbtRequest),
69	UtxoPsbt(requests::UtxopsbtRequest),
70	TxDiscard(requests::TxdiscardRequest),
71	TxPrepare(requests::TxprepareRequest),
72	TxSend(requests::TxsendRequest),
73	ListPeerChannels(requests::ListpeerchannelsRequest),
74	ListClosedChannels(requests::ListclosedchannelsRequest),
75	Decode(requests::DecodeRequest),
76	DelPay(requests::DelpayRequest),
77	DelForward(requests::DelforwardRequest),
78	DisableOffer(requests::DisableofferRequest),
79	EnableOffer(requests::EnableofferRequest),
80	Disconnect(requests::DisconnectRequest),
81	Feerates(requests::FeeratesRequest),
82	FetchBip353(requests::Fetchbip353Request),
83	FetchInvoice(requests::FetchinvoiceRequest),
84	CancelRecurringInvoice(requests::CancelrecurringinvoiceRequest),
85	#[serde(rename = "fundchannel_cancel")]
86	FundChannelCancel(requests::FundchannelCancelRequest),
87	#[serde(rename = "fundchannel_complete")]
88	FundChannelComplete(requests::FundchannelCompleteRequest),
89	FundChannel(requests::FundchannelRequest),
90	#[serde(rename = "fundchannel_start")]
91	FundChannelStart(requests::FundchannelStartRequest),
92	GetLog(requests::GetlogRequest),
93	FunderUpdate(requests::FunderupdateRequest),
94	GetRoute(requests::GetrouteRequest),
95	ListAddresses(requests::ListaddressesRequest),
96	ListForwards(requests::ListforwardsRequest),
97	ListOffers(requests::ListoffersRequest),
98	ListPays(requests::ListpaysRequest),
99	ListHtlcs(requests::ListhtlcsRequest),
100	MultiFundChannel(requests::MultifundchannelRequest),
101	MultiWithdraw(requests::MultiwithdrawRequest),
102	Offer(requests::OfferRequest),
103	#[serde(rename = "openchannel_abort")]
104	OpenChannelAbort(requests::OpenchannelAbortRequest),
105	#[serde(rename = "openchannel_bump")]
106	OpenChannelBump(requests::OpenchannelBumpRequest),
107	#[serde(rename = "openchannel_init")]
108	OpenChannelInit(requests::OpenchannelInitRequest),
109	#[serde(rename = "openchannel_signed")]
110	OpenChannelSigned(requests::OpenchannelSignedRequest),
111	#[serde(rename = "openchannel_update")]
112	OpenChannelUpdate(requests::OpenchannelUpdateRequest),
113	Ping(requests::PingRequest),
114	Plugin(requests::PluginRequest),
115	RenePayStatus(requests::RenepaystatusRequest),
116	RenePay(requests::RenepayRequest),
117	ReserveInputs(requests::ReserveinputsRequest),
118	SendCustomMsg(requests::SendcustommsgRequest),
119	SendInvoice(requests::SendinvoiceRequest),
120	SetChannel(requests::SetchannelRequest),
121	SetConfig(requests::SetconfigRequest),
122	SetPsbtVersion(requests::SetpsbtversionRequest),
123	SignInvoice(requests::SigninvoiceRequest),
124	SignMessage(requests::SignmessageRequest),
125	#[serde(rename = "splice_init")]
126	SpliceInit(requests::SpliceInitRequest),
127	#[serde(rename = "splice_signed")]
128	SpliceSigned(requests::SpliceSignedRequest),
129	#[serde(rename = "splice_update")]
130	SpliceUpdate(requests::SpliceUpdateRequest),
131	SpliceIn(requests::SpliceinRequest),
132	SpliceOut(requests::SpliceoutRequest),
133	#[serde(rename = "dev-splice")]
134	DevSplice(requests::DevspliceRequest),
135	UnreserveInputs(requests::UnreserveinputsRequest),
136	UpgradeWallet(requests::UpgradewalletRequest),
137	WaitBlockHeight(requests::WaitblockheightRequest),
138	Wait(requests::WaitRequest),
139	ListConfigs(requests::ListconfigsRequest),
140	Stop(requests::StopRequest),
141	Help(requests::HelpRequest),
142	PreApproveKeysend(requests::PreapprovekeysendRequest),
143	PreApproveInvoice(requests::PreapproveinvoiceRequest),
144	StaticBackup(requests::StaticbackupRequest),
145	#[serde(rename = "bkpr-channelsapy")]
146	BkprChannelsApy(requests::BkprchannelsapyRequest),
147	#[serde(rename = "bkpr-dumpincomecsv")]
148	BkprDumpIncomeCsv(requests::BkprdumpincomecsvRequest),
149	#[serde(rename = "bkpr-inspect")]
150	BkprInspect(requests::BkprinspectRequest),
151	#[serde(rename = "bkpr-listaccountevents")]
152	BkprListAccountEvents(requests::BkprlistaccounteventsRequest),
153	#[serde(rename = "bkpr-listbalances")]
154	BkprListBalances(requests::BkprlistbalancesRequest),
155	#[serde(rename = "bkpr-listincome")]
156	BkprListIncome(requests::BkprlistincomeRequest),
157	#[serde(rename = "bkpr-editdescriptionbypaymentid")]
158	BkprEditDescriptionByPaymentId(requests::BkpreditdescriptionbypaymentidRequest),
159	#[serde(rename = "bkpr-editdescriptionbyoutpoint")]
160	BkprEditDescriptionByOutpoint(requests::BkpreditdescriptionbyoutpointRequest),
161	#[serde(rename = "bkpr-report")]
162	BkprReport(requests::BkprreportRequest),
163	BlacklistRune(requests::BlacklistruneRequest),
164	CheckRune(requests::CheckruneRequest),
165	CreateRune(requests::CreateruneRequest),
166	ShowRunes(requests::ShowrunesRequest),
167	#[serde(rename = "askrene-unreserve")]
168	AskReneUnreserve(requests::AskreneunreserveRequest),
169	#[serde(rename = "askrene-listlayers")]
170	AskReneListLayers(requests::AskrenelistlayersRequest),
171	#[serde(rename = "askrene-create-layer")]
172	AskReneCreateLayer(requests::AskrenecreatelayerRequest),
173	#[serde(rename = "askrene-remove-layer")]
174	AskReneRemoveLayer(requests::AskreneremovelayerRequest),
175	#[serde(rename = "askrene-remove-channel-update")]
176	AskReneRemoveChannelUpdate(requests::AskreneremovechannelupdateRequest),
177	#[serde(rename = "askrene-reserve")]
178	AskReneReserve(requests::AskrenereserveRequest),
179	#[serde(rename = "askrene-age")]
180	AskReneAge(requests::AskreneageRequest),
181	GetRoutes(requests::GetroutesRequest),
182	#[serde(rename = "askrene-disable-node")]
183	AskReneDisableNode(requests::AskrenedisablenodeRequest),
184	#[serde(rename = "askrene-inform-channel")]
185	AskReneInformChannel(requests::AskreneinformchannelRequest),
186	#[serde(rename = "askrene-create-channel")]
187	AskReneCreateChannel(requests::AskrenecreatechannelRequest),
188	#[serde(rename = "askrene-update-channel")]
189	AskReneUpdateChannel(requests::AskreneupdatechannelRequest),
190	#[serde(rename = "askrene-bias-channel")]
191	AskReneBiasChannel(requests::AskrenebiaschannelRequest),
192	#[serde(rename = "askrene-bias-node")]
193	AskreneBiasNode(requests::AskrenebiasnodeRequest),
194	#[serde(rename = "askrene-listreservations")]
195	AskReneListReservations(requests::AskrenelistreservationsRequest),
196	InjectPaymentOnion(requests::InjectpaymentonionRequest),
197	InjectOnionMessage(requests::InjectonionmessageRequest),
198	Xpay(requests::XpayRequest),
199	SignMessageWithKey(requests::SignmessagewithkeyRequest),
200	ListChannelMoves(requests::ListchannelmovesRequest),
201	ListChainMoves(requests::ListchainmovesRequest),
202	ListNetworkEvents(requests::ListnetworkeventsRequest),
203	DelNetworkEvent(requests::DelnetworkeventRequest),
204	#[serde(rename = "clnrest-register-path")]
205	ClnrestRegisterPath(requests::ClnrestregisterpathRequest),
206	ListCurrencyRates(requests::ListcurrencyratesRequest),
207	CurrencyConvert(requests::CurrencyconvertRequest),
208	CurrencyRate(requests::CurrencyrateRequest),
209	SendAmount(requests::SendamountRequest),
210	CreateProof(requests::CreateproofRequest),
211	Xkeysend(requests::XkeysendRequest),
212	Graceful(requests::GracefulRequest),
213}
214
215#[derive(Clone, Debug, Serialize, Deserialize)]
216#[serde(tag = "method", content = "result")]
217#[serde(rename_all = "lowercase")]
218pub enum Response {
219	Getinfo(responses::GetinfoResponse),
220	ListPeers(responses::ListpeersResponse),
221	ListFunds(responses::ListfundsResponse),
222	SendPay(responses::SendpayResponse),
223	ListChannels(responses::ListchannelsResponse),
224	AddGossip(responses::AddgossipResponse),
225	AddPsbtOutput(responses::AddpsbtoutputResponse),
226	#[serde(rename = "autoclean-once")]
227	AutoCleanOnce(responses::AutocleanonceResponse),
228	#[serde(rename = "autoclean-status")]
229	AutoCleanStatus(responses::AutocleanstatusResponse),
230	CheckMessage(responses::CheckmessageResponse),
231	Close(responses::CloseResponse),
232	Connect(responses::ConnectResponse),
233	CreateInvoice(responses::CreateinvoiceResponse),
234	Datastore(responses::DatastoreResponse),
235	DatastoreUsage(responses::DatastoreusageResponse),
236	CreateOnion(responses::CreateonionResponse),
237	DelDatastore(responses::DeldatastoreResponse),
238	DelInvoice(responses::DelinvoiceResponse),
239	#[serde(rename = "dev-forget-channel")]
240	DevForgetChannel(responses::DevforgetchannelResponse),
241	EmergencyRecover(responses::EmergencyrecoverResponse),
242	GetEmergencyRecoverData(responses::GetemergencyrecoverdataResponse),
243	ExposeSecret(responses::ExposesecretResponse),
244	Recover(responses::RecoverResponse),
245	RecoverChannel(responses::RecoverchannelResponse),
246	Invoice(responses::InvoiceResponse),
247	InvoiceRequest(responses::InvoicerequestResponse),
248	DisableInvoiceRequest(responses::DisableinvoicerequestResponse),
249	ListInvoiceRequests(responses::ListinvoicerequestsResponse),
250	ListDatastore(responses::ListdatastoreResponse),
251	ListInvoices(responses::ListinvoicesResponse),
252	SendOnion(responses::SendonionResponse),
253	ListSendPays(responses::ListsendpaysResponse),
254	ListTransactions(responses::ListtransactionsResponse),
255	MakeSecret(responses::MakesecretResponse),
256	Pay(responses::PayResponse),
257	ListNodes(responses::ListnodesResponse),
258	WaitAnyInvoice(responses::WaitanyinvoiceResponse),
259	WaitInvoice(responses::WaitinvoiceResponse),
260	WaitSendPay(responses::WaitsendpayResponse),
261	NewAddr(responses::NewaddrResponse),
262	Withdraw(responses::WithdrawResponse),
263	KeySend(responses::KeysendResponse),
264	FundPsbt(responses::FundpsbtResponse),
265	SendPsbt(responses::SendpsbtResponse),
266	SignPsbt(responses::SignpsbtResponse),
267	UtxoPsbt(responses::UtxopsbtResponse),
268	TxDiscard(responses::TxdiscardResponse),
269	TxPrepare(responses::TxprepareResponse),
270	TxSend(responses::TxsendResponse),
271	ListPeerChannels(responses::ListpeerchannelsResponse),
272	ListClosedChannels(responses::ListclosedchannelsResponse),
273	Decode(responses::DecodeResponse),
274	DelPay(responses::DelpayResponse),
275	DelForward(responses::DelforwardResponse),
276	DisableOffer(responses::DisableofferResponse),
277	EnableOffer(responses::EnableofferResponse),
278	Disconnect(responses::DisconnectResponse),
279	Feerates(responses::FeeratesResponse),
280	FetchBip353(responses::Fetchbip353Response),
281	FetchInvoice(responses::FetchinvoiceResponse),
282	CancelRecurringInvoice(responses::CancelrecurringinvoiceResponse),
283	#[serde(rename = "fundchannel_cancel")]
284	FundChannelCancel(responses::FundchannelCancelResponse),
285	#[serde(rename = "fundchannel_complete")]
286	FundChannelComplete(responses::FundchannelCompleteResponse),
287	FundChannel(responses::FundchannelResponse),
288	#[serde(rename = "fundchannel_start")]
289	FundChannelStart(responses::FundchannelStartResponse),
290	GetLog(responses::GetlogResponse),
291	FunderUpdate(responses::FunderupdateResponse),
292	GetRoute(responses::GetrouteResponse),
293	ListAddresses(responses::ListaddressesResponse),
294	ListForwards(responses::ListforwardsResponse),
295	ListOffers(responses::ListoffersResponse),
296	ListPays(responses::ListpaysResponse),
297	ListHtlcs(responses::ListhtlcsResponse),
298	MultiFundChannel(responses::MultifundchannelResponse),
299	MultiWithdraw(responses::MultiwithdrawResponse),
300	Offer(responses::OfferResponse),
301	#[serde(rename = "openchannel_abort")]
302	OpenChannelAbort(responses::OpenchannelAbortResponse),
303	#[serde(rename = "openchannel_bump")]
304	OpenChannelBump(responses::OpenchannelBumpResponse),
305	#[serde(rename = "openchannel_init")]
306	OpenChannelInit(responses::OpenchannelInitResponse),
307	#[serde(rename = "openchannel_signed")]
308	OpenChannelSigned(responses::OpenchannelSignedResponse),
309	#[serde(rename = "openchannel_update")]
310	OpenChannelUpdate(responses::OpenchannelUpdateResponse),
311	Ping(responses::PingResponse),
312	Plugin(responses::PluginResponse),
313	RenePayStatus(responses::RenepaystatusResponse),
314	RenePay(responses::RenepayResponse),
315	ReserveInputs(responses::ReserveinputsResponse),
316	SendCustomMsg(responses::SendcustommsgResponse),
317	SendInvoice(responses::SendinvoiceResponse),
318	SetChannel(responses::SetchannelResponse),
319	SetConfig(responses::SetconfigResponse),
320	SetPsbtVersion(responses::SetpsbtversionResponse),
321	SignInvoice(responses::SigninvoiceResponse),
322	SignMessage(responses::SignmessageResponse),
323	#[serde(rename = "splice_init")]
324	SpliceInit(responses::SpliceInitResponse),
325	#[serde(rename = "splice_signed")]
326	SpliceSigned(responses::SpliceSignedResponse),
327	#[serde(rename = "splice_update")]
328	SpliceUpdate(responses::SpliceUpdateResponse),
329	SpliceIn(responses::SpliceinResponse),
330	SpliceOut(responses::SpliceoutResponse),
331	#[serde(rename = "dev-splice")]
332	DevSplice(responses::DevspliceResponse),
333	UnreserveInputs(responses::UnreserveinputsResponse),
334	UpgradeWallet(responses::UpgradewalletResponse),
335	WaitBlockHeight(responses::WaitblockheightResponse),
336	Wait(responses::WaitResponse),
337	ListConfigs(responses::ListconfigsResponse),
338	Stop(responses::StopResponse),
339	Help(responses::HelpResponse),
340	PreApproveKeysend(responses::PreapprovekeysendResponse),
341	PreApproveInvoice(responses::PreapproveinvoiceResponse),
342	StaticBackup(responses::StaticbackupResponse),
343	#[serde(rename = "bkpr-channelsapy")]
344	BkprChannelsApy(responses::BkprchannelsapyResponse),
345	#[serde(rename = "bkpr-dumpincomecsv")]
346	BkprDumpIncomeCsv(responses::BkprdumpincomecsvResponse),
347	#[serde(rename = "bkpr-inspect")]
348	BkprInspect(responses::BkprinspectResponse),
349	#[serde(rename = "bkpr-listaccountevents")]
350	BkprListAccountEvents(responses::BkprlistaccounteventsResponse),
351	#[serde(rename = "bkpr-listbalances")]
352	BkprListBalances(responses::BkprlistbalancesResponse),
353	#[serde(rename = "bkpr-listincome")]
354	BkprListIncome(responses::BkprlistincomeResponse),
355	#[serde(rename = "bkpr-editdescriptionbypaymentid")]
356	BkprEditDescriptionByPaymentId(responses::BkpreditdescriptionbypaymentidResponse),
357	#[serde(rename = "bkpr-editdescriptionbyoutpoint")]
358	BkprEditDescriptionByOutpoint(responses::BkpreditdescriptionbyoutpointResponse),
359	#[serde(rename = "bkpr-report")]
360	BkprReport(responses::BkprreportResponse),
361	BlacklistRune(responses::BlacklistruneResponse),
362	CheckRune(responses::CheckruneResponse),
363	CreateRune(responses::CreateruneResponse),
364	ShowRunes(responses::ShowrunesResponse),
365	#[serde(rename = "askrene-unreserve")]
366	AskReneUnreserve(responses::AskreneunreserveResponse),
367	#[serde(rename = "askrene-listlayers")]
368	AskReneListLayers(responses::AskrenelistlayersResponse),
369	#[serde(rename = "askrene-create-layer")]
370	AskReneCreateLayer(responses::AskrenecreatelayerResponse),
371	#[serde(rename = "askrene-remove-layer")]
372	AskReneRemoveLayer(responses::AskreneremovelayerResponse),
373	#[serde(rename = "askrene-remove-channel-update")]
374	AskReneRemoveChannelUpdate(responses::AskreneremovechannelupdateResponse),
375	#[serde(rename = "askrene-reserve")]
376	AskReneReserve(responses::AskrenereserveResponse),
377	#[serde(rename = "askrene-age")]
378	AskReneAge(responses::AskreneageResponse),
379	GetRoutes(responses::GetroutesResponse),
380	#[serde(rename = "askrene-disable-node")]
381	AskReneDisableNode(responses::AskrenedisablenodeResponse),
382	#[serde(rename = "askrene-inform-channel")]
383	AskReneInformChannel(responses::AskreneinformchannelResponse),
384	#[serde(rename = "askrene-create-channel")]
385	AskReneCreateChannel(responses::AskrenecreatechannelResponse),
386	#[serde(rename = "askrene-update-channel")]
387	AskReneUpdateChannel(responses::AskreneupdatechannelResponse),
388	#[serde(rename = "askrene-bias-channel")]
389	AskReneBiasChannel(responses::AskrenebiaschannelResponse),
390	#[serde(rename = "askrene-bias-node")]
391	AskreneBiasNode(responses::AskrenebiasnodeResponse),
392	#[serde(rename = "askrene-listreservations")]
393	AskReneListReservations(responses::AskrenelistreservationsResponse),
394	InjectPaymentOnion(responses::InjectpaymentonionResponse),
395	InjectOnionMessage(responses::InjectonionmessageResponse),
396	Xpay(responses::XpayResponse),
397	SignMessageWithKey(responses::SignmessagewithkeyResponse),
398	ListChannelMoves(responses::ListchannelmovesResponse),
399	ListChainMoves(responses::ListchainmovesResponse),
400	ListNetworkEvents(responses::ListnetworkeventsResponse),
401	DelNetworkEvent(responses::DelnetworkeventResponse),
402	#[serde(rename = "clnrest-register-path")]
403	ClnrestRegisterPath(responses::ClnrestregisterpathResponse),
404	ListCurrencyRates(responses::ListcurrencyratesResponse),
405	CurrencyConvert(responses::CurrencyconvertResponse),
406	CurrencyRate(responses::CurrencyrateResponse),
407	SendAmount(responses::SendamountResponse),
408	CreateProof(responses::CreateproofResponse),
409	Xkeysend(responses::XkeysendResponse),
410	Graceful(responses::GracefulResponse),
411}
412
413
414pub trait IntoRequest: Into<Request> {
415    type Response: TryFrom<Response, Error = TryFromResponseError>;
416}
417
418pub trait TypedRequest {
419    type Response;
420
421    fn method(&self) -> &str;
422}
423
424#[derive(Debug)]
425pub struct TryFromResponseError;
426
427pub mod requests {
428    #[allow(unused_imports)]
429    use crate::primitives::*;
430    #[allow(unused_imports)]
431    use serde::{{Deserialize, Serialize}};
432    use core::fmt::Debug;
433    use std::collections::HashMap;
434    use super::{IntoRequest, Request, TypedRequest};
435	#[derive(Clone, Debug, Deserialize, Serialize)]
436	pub struct GetinfoRequest {
437	}
438
439	impl From<GetinfoRequest> for Request {
440	    fn from(r: GetinfoRequest) -> Self {
441	        Request::Getinfo(r)
442	    }
443	}
444
445	impl IntoRequest for GetinfoRequest {
446	    type Response = super::responses::GetinfoResponse;
447	}
448
449	impl TypedRequest for GetinfoRequest {
450	    type Response = super::responses::GetinfoResponse;
451
452	    fn method(&self) -> &str {
453	        "getinfo"
454	    }
455	}
456	/// ['Supplying level will show log entries related to that peer at the given log level.']
457	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
458	#[allow(non_camel_case_types)]
459	pub enum ListpeersLevel {
460	    #[serde(rename = "io")]
461	    IO = 0,
462	    #[serde(rename = "debug")]
463	    DEBUG = 1,
464	    #[serde(rename = "info")]
465	    INFO = 2,
466	    #[serde(rename = "unusual")]
467	    UNUSUAL = 3,
468	    #[serde(rename = "trace")]
469	    TRACE = 4,
470	}
471
472	impl TryFrom<i32> for ListpeersLevel {
473	    type Error = anyhow::Error;
474	    fn try_from(c: i32) -> Result<ListpeersLevel, anyhow::Error> {
475	        match c {
476	    0 => Ok(ListpeersLevel::IO),
477	    1 => Ok(ListpeersLevel::DEBUG),
478	    2 => Ok(ListpeersLevel::INFO),
479	    3 => Ok(ListpeersLevel::UNUSUAL),
480	    4 => Ok(ListpeersLevel::TRACE),
481	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListpeersLevel", o)),
482	        }
483	    }
484	}
485
486	impl ToString for ListpeersLevel {
487	    fn to_string(&self) -> String {
488	        match self {
489	            ListpeersLevel::IO => "IO",
490	            ListpeersLevel::TRACE => "TRACE",
491	            ListpeersLevel::DEBUG => "DEBUG",
492	            ListpeersLevel::INFO => "INFO",
493	            ListpeersLevel::UNUSUAL => "UNUSUAL",
494	        }.to_string()
495	    }
496	}
497
498	#[derive(Clone, Debug, Deserialize, Serialize)]
499	pub struct ListpeersRequest {
500	    #[serde(skip_serializing_if = "Option::is_none")]
501	    pub id: Option<PublicKey>,
502	    #[serde(skip_serializing_if = "Option::is_none")]
503	    pub level: Option<ListpeersLevel>,
504	}
505
506	impl From<ListpeersRequest> for Request {
507	    fn from(r: ListpeersRequest) -> Self {
508	        Request::ListPeers(r)
509	    }
510	}
511
512	impl IntoRequest for ListpeersRequest {
513	    type Response = super::responses::ListpeersResponse;
514	}
515
516	impl TypedRequest for ListpeersRequest {
517	    type Response = super::responses::ListpeersResponse;
518
519	    fn method(&self) -> &str {
520	        "listpeers"
521	    }
522	}
523	#[derive(Clone, Debug, Deserialize, Serialize)]
524	pub struct ListfundsRequest {
525	    #[serde(skip_serializing_if = "Option::is_none")]
526	    pub spent: Option<bool>,
527	}
528
529	impl From<ListfundsRequest> for Request {
530	    fn from(r: ListfundsRequest) -> Self {
531	        Request::ListFunds(r)
532	    }
533	}
534
535	impl IntoRequest for ListfundsRequest {
536	    type Response = super::responses::ListfundsResponse;
537	}
538
539	impl TypedRequest for ListfundsRequest {
540	    type Response = super::responses::ListfundsResponse;
541
542	    fn method(&self) -> &str {
543	        "listfunds"
544	    }
545	}
546	#[derive(Clone, Debug, Deserialize, Serialize)]
547	pub struct SendpayRoute {
548	    #[serde(skip_serializing_if = "Option::is_none")]
549	    pub amount_msat: Option<Amount>,
550	    #[serde(skip_serializing_if = "Option::is_none")]
551	    pub amount_out_msat: Option<Amount>,
552	    #[serde(skip_serializing_if = "Option::is_none")]
553	    pub channel: Option<ShortChannelId>,
554	    #[serde(skip_serializing_if = "Option::is_none")]
555	    pub cltv_out: Option<u32>,
556	    #[serde(skip_serializing_if = "Option::is_none")]
557	    pub delay: Option<u32>,
558	    #[serde(skip_serializing_if = "Option::is_none")]
559	    pub id: Option<PublicKey>,
560	    #[serde(skip_serializing_if = "Option::is_none")]
561	    pub node_id_out: Option<PublicKey>,
562	    #[serde(skip_serializing_if = "Option::is_none")]
563	    pub short_channel_id_dir: Option<ShortChannelIdDir>,
564	}
565
566	#[derive(Clone, Debug, Deserialize, Serialize)]
567	pub struct SendpayRequest {
568	    #[serde(skip_serializing_if = "Option::is_none")]
569	    pub amount_msat: Option<Amount>,
570	    #[serde(skip_serializing_if = "Option::is_none")]
571	    pub bolt11: Option<String>,
572	    #[serde(skip_serializing_if = "Option::is_none")]
573	    pub description: Option<String>,
574	    #[serde(skip_serializing_if = "Option::is_none")]
575	    pub groupid: Option<u64>,
576	    #[serde(skip_serializing_if = "Option::is_none")]
577	    pub label: Option<String>,
578	    #[serde(skip_serializing_if = "Option::is_none")]
579	    pub localinvreqid: Option<String>,
580	    #[serde(skip_serializing_if = "Option::is_none")]
581	    pub partid: Option<u64>,
582	    #[serde(skip_serializing_if = "Option::is_none")]
583	    pub payment_metadata: Option<String>,
584	    #[serde(skip_serializing_if = "Option::is_none")]
585	    pub payment_secret: Option<Secret>,
586	    pub payment_hash: Sha256,
587	    pub route: Vec<SendpayRoute>,
588	}
589
590	impl From<SendpayRequest> for Request {
591	    fn from(r: SendpayRequest) -> Self {
592	        Request::SendPay(r)
593	    }
594	}
595
596	impl IntoRequest for SendpayRequest {
597	    type Response = super::responses::SendpayResponse;
598	}
599
600	impl TypedRequest for SendpayRequest {
601	    type Response = super::responses::SendpayResponse;
602
603	    fn method(&self) -> &str {
604	        "sendpay"
605	    }
606	}
607	#[derive(Clone, Debug, Deserialize, Serialize)]
608	pub struct ListchannelsRequest {
609	    #[serde(skip_serializing_if = "Option::is_none")]
610	    pub destination: Option<PublicKey>,
611	    #[serde(skip_serializing_if = "Option::is_none")]
612	    pub short_channel_id: Option<ShortChannelId>,
613	    #[serde(skip_serializing_if = "Option::is_none")]
614	    pub source: Option<PublicKey>,
615	}
616
617	impl From<ListchannelsRequest> for Request {
618	    fn from(r: ListchannelsRequest) -> Self {
619	        Request::ListChannels(r)
620	    }
621	}
622
623	impl IntoRequest for ListchannelsRequest {
624	    type Response = super::responses::ListchannelsResponse;
625	}
626
627	impl TypedRequest for ListchannelsRequest {
628	    type Response = super::responses::ListchannelsResponse;
629
630	    fn method(&self) -> &str {
631	        "listchannels"
632	    }
633	}
634	#[derive(Clone, Debug, Deserialize, Serialize)]
635	pub struct AddgossipRequest {
636	    pub message: String,
637	}
638
639	impl From<AddgossipRequest> for Request {
640	    fn from(r: AddgossipRequest) -> Self {
641	        Request::AddGossip(r)
642	    }
643	}
644
645	impl IntoRequest for AddgossipRequest {
646	    type Response = super::responses::AddgossipResponse;
647	}
648
649	impl TypedRequest for AddgossipRequest {
650	    type Response = super::responses::AddgossipResponse;
651
652	    fn method(&self) -> &str {
653	        "addgossip"
654	    }
655	}
656	#[derive(Clone, Debug, Deserialize, Serialize)]
657	pub struct AddpsbtoutputRequest {
658	    #[serde(skip_serializing_if = "Option::is_none")]
659	    pub destination: Option<String>,
660	    #[serde(skip_serializing_if = "Option::is_none")]
661	    pub initialpsbt: Option<String>,
662	    #[serde(skip_serializing_if = "Option::is_none")]
663	    pub locktime: Option<u32>,
664	    pub satoshi: Amount,
665	}
666
667	impl From<AddpsbtoutputRequest> for Request {
668	    fn from(r: AddpsbtoutputRequest) -> Self {
669	        Request::AddPsbtOutput(r)
670	    }
671	}
672
673	impl IntoRequest for AddpsbtoutputRequest {
674	    type Response = super::responses::AddpsbtoutputResponse;
675	}
676
677	impl TypedRequest for AddpsbtoutputRequest {
678	    type Response = super::responses::AddpsbtoutputResponse;
679
680	    fn method(&self) -> &str {
681	        "addpsbtoutput"
682	    }
683	}
684	#[derive(Clone, Debug, Deserialize, Serialize)]
685	pub struct AutocleanonceRequest {
686	    // Path `AutoClean-Once.subsystem`
687	    pub subsystem: AutocleanSubsystem,
688	    pub age: u64,
689	}
690
691	impl From<AutocleanonceRequest> for Request {
692	    fn from(r: AutocleanonceRequest) -> Self {
693	        Request::AutoCleanOnce(r)
694	    }
695	}
696
697	impl IntoRequest for AutocleanonceRequest {
698	    type Response = super::responses::AutocleanonceResponse;
699	}
700
701	impl TypedRequest for AutocleanonceRequest {
702	    type Response = super::responses::AutocleanonceResponse;
703
704	    fn method(&self) -> &str {
705	        "autoclean-once"
706	    }
707	}
708	#[derive(Clone, Debug, Deserialize, Serialize)]
709	pub struct AutocleanstatusRequest {
710	    #[serde(skip_serializing_if = "Option::is_none")]
711	    pub subsystem: Option<AutocleanSubsystem>,
712	}
713
714	impl From<AutocleanstatusRequest> for Request {
715	    fn from(r: AutocleanstatusRequest) -> Self {
716	        Request::AutoCleanStatus(r)
717	    }
718	}
719
720	impl IntoRequest for AutocleanstatusRequest {
721	    type Response = super::responses::AutocleanstatusResponse;
722	}
723
724	impl TypedRequest for AutocleanstatusRequest {
725	    type Response = super::responses::AutocleanstatusResponse;
726
727	    fn method(&self) -> &str {
728	        "autoclean-status"
729	    }
730	}
731	#[derive(Clone, Debug, Deserialize, Serialize)]
732	pub struct CheckmessageRequest {
733	    #[serde(skip_serializing_if = "Option::is_none")]
734	    pub pubkey: Option<PublicKey>,
735	    pub message: String,
736	    pub zbase: String,
737	}
738
739	impl From<CheckmessageRequest> for Request {
740	    fn from(r: CheckmessageRequest) -> Self {
741	        Request::CheckMessage(r)
742	    }
743	}
744
745	impl IntoRequest for CheckmessageRequest {
746	    type Response = super::responses::CheckmessageResponse;
747	}
748
749	impl TypedRequest for CheckmessageRequest {
750	    type Response = super::responses::CheckmessageResponse;
751
752	    fn method(&self) -> &str {
753	        "checkmessage"
754	    }
755	}
756	#[derive(Clone, Debug, Deserialize, Serialize)]
757	pub struct CloseRequest {
758	    #[serde(skip_serializing_if = "Option::is_none")]
759	    pub destination: Option<String>,
760	    #[serde(skip_serializing_if = "Option::is_none")]
761	    pub fee_negotiation_step: Option<String>,
762	    #[serde(skip_serializing_if = "Option::is_none")]
763	    pub force_lease_closed: Option<bool>,
764	    #[serde(skip_serializing_if = "Option::is_none")]
765	    pub unilateraltimeout: Option<u32>,
766	    #[serde(skip_serializing_if = "Option::is_none")]
767	    pub wrong_funding: Option<Outpoint>,
768	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
769	    pub feerange: Option<Vec<Feerate>>,
770	    pub id: String,
771	}
772
773	impl From<CloseRequest> for Request {
774	    fn from(r: CloseRequest) -> Self {
775	        Request::Close(r)
776	    }
777	}
778
779	impl IntoRequest for CloseRequest {
780	    type Response = super::responses::CloseResponse;
781	}
782
783	impl TypedRequest for CloseRequest {
784	    type Response = super::responses::CloseResponse;
785
786	    fn method(&self) -> &str {
787	        "close"
788	    }
789	}
790	#[derive(Clone, Debug, Deserialize, Serialize)]
791	pub struct ConnectRequest {
792	    #[serde(skip_serializing_if = "Option::is_none")]
793	    pub host: Option<String>,
794	    #[serde(skip_serializing_if = "Option::is_none")]
795	    pub port: Option<u16>,
796	    pub id: String,
797	}
798
799	impl From<ConnectRequest> for Request {
800	    fn from(r: ConnectRequest) -> Self {
801	        Request::Connect(r)
802	    }
803	}
804
805	impl IntoRequest for ConnectRequest {
806	    type Response = super::responses::ConnectResponse;
807	}
808
809	impl TypedRequest for ConnectRequest {
810	    type Response = super::responses::ConnectResponse;
811
812	    fn method(&self) -> &str {
813	        "connect"
814	    }
815	}
816	#[derive(Clone, Debug, Deserialize, Serialize)]
817	pub struct CreateinvoiceRequest {
818	    pub invstring: String,
819	    pub label: String,
820	    pub preimage: String,
821	}
822
823	impl From<CreateinvoiceRequest> for Request {
824	    fn from(r: CreateinvoiceRequest) -> Self {
825	        Request::CreateInvoice(r)
826	    }
827	}
828
829	impl IntoRequest for CreateinvoiceRequest {
830	    type Response = super::responses::CreateinvoiceResponse;
831	}
832
833	impl TypedRequest for CreateinvoiceRequest {
834	    type Response = super::responses::CreateinvoiceResponse;
835
836	    fn method(&self) -> &str {
837	        "createinvoice"
838	    }
839	}
840	/// ['Write mode to determine how the record is updated:', '    * `must-create`: fails if it already exists.', "    * `must-replace`: fails if it doesn't already exist.", '    * `create-or-replace`: never fails.', "    * `must-append`: must already exist, append this to what's already there.", '    * `create-or-append`: append if anything is there, otherwise create.']
841	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
842	#[allow(non_camel_case_types)]
843	pub enum DatastoreMode {
844	    #[serde(rename = "must-create")]
845	    MUST_CREATE = 0,
846	    #[serde(rename = "must-replace")]
847	    MUST_REPLACE = 1,
848	    #[serde(rename = "create-or-replace")]
849	    CREATE_OR_REPLACE = 2,
850	    #[serde(rename = "must-append")]
851	    MUST_APPEND = 3,
852	    #[serde(rename = "create-or-append")]
853	    CREATE_OR_APPEND = 4,
854	}
855
856	impl TryFrom<i32> for DatastoreMode {
857	    type Error = anyhow::Error;
858	    fn try_from(c: i32) -> Result<DatastoreMode, anyhow::Error> {
859	        match c {
860	    0 => Ok(DatastoreMode::MUST_CREATE),
861	    1 => Ok(DatastoreMode::MUST_REPLACE),
862	    2 => Ok(DatastoreMode::CREATE_OR_REPLACE),
863	    3 => Ok(DatastoreMode::MUST_APPEND),
864	    4 => Ok(DatastoreMode::CREATE_OR_APPEND),
865	            o => Err(anyhow::anyhow!("Unknown variant {} for enum DatastoreMode", o)),
866	        }
867	    }
868	}
869
870	impl ToString for DatastoreMode {
871	    fn to_string(&self) -> String {
872	        match self {
873	            DatastoreMode::MUST_CREATE => "MUST_CREATE",
874	            DatastoreMode::MUST_REPLACE => "MUST_REPLACE",
875	            DatastoreMode::CREATE_OR_REPLACE => "CREATE_OR_REPLACE",
876	            DatastoreMode::MUST_APPEND => "MUST_APPEND",
877	            DatastoreMode::CREATE_OR_APPEND => "CREATE_OR_APPEND",
878	        }.to_string()
879	    }
880	}
881
882	#[derive(Clone, Debug, Deserialize, Serialize)]
883	pub struct DatastoreRequest {
884	    #[serde(skip_serializing_if = "Option::is_none")]
885	    pub generation: Option<u64>,
886	    #[serde(skip_serializing_if = "Option::is_none")]
887	    pub hex: Option<String>,
888	    #[serde(skip_serializing_if = "Option::is_none")]
889	    pub mode: Option<DatastoreMode>,
890	    #[serde(skip_serializing_if = "Option::is_none")]
891	    pub string: Option<String>,
892	    pub key: Vec<String>,
893	}
894
895	impl From<DatastoreRequest> for Request {
896	    fn from(r: DatastoreRequest) -> Self {
897	        Request::Datastore(r)
898	    }
899	}
900
901	impl IntoRequest for DatastoreRequest {
902	    type Response = super::responses::DatastoreResponse;
903	}
904
905	impl TypedRequest for DatastoreRequest {
906	    type Response = super::responses::DatastoreResponse;
907
908	    fn method(&self) -> &str {
909	        "datastore"
910	    }
911	}
912	#[derive(Clone, Debug, Deserialize, Serialize)]
913	pub struct DatastoreusageRequest {
914	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
915	    pub key: Option<Vec<String>>,
916	}
917
918	impl From<DatastoreusageRequest> for Request {
919	    fn from(r: DatastoreusageRequest) -> Self {
920	        Request::DatastoreUsage(r)
921	    }
922	}
923
924	impl IntoRequest for DatastoreusageRequest {
925	    type Response = super::responses::DatastoreusageResponse;
926	}
927
928	impl TypedRequest for DatastoreusageRequest {
929	    type Response = super::responses::DatastoreusageResponse;
930
931	    fn method(&self) -> &str {
932	        "datastoreusage"
933	    }
934	}
935	#[derive(Clone, Debug, Deserialize, Serialize)]
936	pub struct CreateonionHops {
937	    pub payload: String,
938	    pub pubkey: PublicKey,
939	}
940
941	#[derive(Clone, Debug, Deserialize, Serialize)]
942	pub struct CreateonionRequest {
943	    #[serde(skip_serializing_if = "Option::is_none")]
944	    pub onion_size: Option<u16>,
945	    #[serde(skip_serializing_if = "Option::is_none")]
946	    pub session_key: Option<Secret>,
947	    pub assocdata: String,
948	    pub hops: Vec<CreateonionHops>,
949	}
950
951	impl From<CreateonionRequest> for Request {
952	    fn from(r: CreateonionRequest) -> Self {
953	        Request::CreateOnion(r)
954	    }
955	}
956
957	impl IntoRequest for CreateonionRequest {
958	    type Response = super::responses::CreateonionResponse;
959	}
960
961	impl TypedRequest for CreateonionRequest {
962	    type Response = super::responses::CreateonionResponse;
963
964	    fn method(&self) -> &str {
965	        "createonion"
966	    }
967	}
968	#[derive(Clone, Debug, Deserialize, Serialize)]
969	pub struct DeldatastoreRequest {
970	    #[serde(skip_serializing_if = "Option::is_none")]
971	    pub generation: Option<u64>,
972	    pub key: Vec<String>,
973	}
974
975	impl From<DeldatastoreRequest> for Request {
976	    fn from(r: DeldatastoreRequest) -> Self {
977	        Request::DelDatastore(r)
978	    }
979	}
980
981	impl IntoRequest for DeldatastoreRequest {
982	    type Response = super::responses::DeldatastoreResponse;
983	}
984
985	impl TypedRequest for DeldatastoreRequest {
986	    type Response = super::responses::DeldatastoreResponse;
987
988	    fn method(&self) -> &str {
989	        "deldatastore"
990	    }
991	}
992	/// ['Label of the invoice to be deleted. The caller should be particularly aware of the error case caused by the *status* changing just before this command is invoked!']
993	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
994	#[allow(non_camel_case_types)]
995	pub enum DelinvoiceStatus {
996	    #[serde(rename = "paid")]
997	    PAID = 0,
998	    #[serde(rename = "expired")]
999	    EXPIRED = 1,
1000	    #[serde(rename = "unpaid")]
1001	    UNPAID = 2,
1002	}
1003
1004	impl TryFrom<i32> for DelinvoiceStatus {
1005	    type Error = anyhow::Error;
1006	    fn try_from(c: i32) -> Result<DelinvoiceStatus, anyhow::Error> {
1007	        match c {
1008	    0 => Ok(DelinvoiceStatus::PAID),
1009	    1 => Ok(DelinvoiceStatus::EXPIRED),
1010	    2 => Ok(DelinvoiceStatus::UNPAID),
1011	            o => Err(anyhow::anyhow!("Unknown variant {} for enum DelinvoiceStatus", o)),
1012	        }
1013	    }
1014	}
1015
1016	impl ToString for DelinvoiceStatus {
1017	    fn to_string(&self) -> String {
1018	        match self {
1019	            DelinvoiceStatus::PAID => "PAID",
1020	            DelinvoiceStatus::EXPIRED => "EXPIRED",
1021	            DelinvoiceStatus::UNPAID => "UNPAID",
1022	        }.to_string()
1023	    }
1024	}
1025
1026	#[derive(Clone, Debug, Deserialize, Serialize)]
1027	pub struct DelinvoiceRequest {
1028	    #[serde(skip_serializing_if = "Option::is_none")]
1029	    pub desconly: Option<bool>,
1030	    // Path `DelInvoice.status`
1031	    pub status: DelinvoiceStatus,
1032	    pub label: String,
1033	}
1034
1035	impl From<DelinvoiceRequest> for Request {
1036	    fn from(r: DelinvoiceRequest) -> Self {
1037	        Request::DelInvoice(r)
1038	    }
1039	}
1040
1041	impl IntoRequest for DelinvoiceRequest {
1042	    type Response = super::responses::DelinvoiceResponse;
1043	}
1044
1045	impl TypedRequest for DelinvoiceRequest {
1046	    type Response = super::responses::DelinvoiceResponse;
1047
1048	    fn method(&self) -> &str {
1049	        "delinvoice"
1050	    }
1051	}
1052	#[derive(Clone, Debug, Deserialize, Serialize)]
1053	pub struct DevforgetchannelRequest {
1054	    #[serde(skip_serializing_if = "Option::is_none")]
1055	    pub channel_id: Option<Sha256>,
1056	    #[serde(skip_serializing_if = "Option::is_none")]
1057	    pub force: Option<bool>,
1058	    #[serde(skip_serializing_if = "Option::is_none")]
1059	    pub short_channel_id: Option<ShortChannelId>,
1060	    pub id: PublicKey,
1061	}
1062
1063	impl From<DevforgetchannelRequest> for Request {
1064	    fn from(r: DevforgetchannelRequest) -> Self {
1065	        Request::DevForgetChannel(r)
1066	    }
1067	}
1068
1069	impl IntoRequest for DevforgetchannelRequest {
1070	    type Response = super::responses::DevforgetchannelResponse;
1071	}
1072
1073	impl TypedRequest for DevforgetchannelRequest {
1074	    type Response = super::responses::DevforgetchannelResponse;
1075
1076	    fn method(&self) -> &str {
1077	        "dev-forget-channel"
1078	    }
1079	}
1080	#[derive(Clone, Debug, Deserialize, Serialize)]
1081	pub struct EmergencyrecoverRequest {
1082	}
1083
1084	impl From<EmergencyrecoverRequest> for Request {
1085	    fn from(r: EmergencyrecoverRequest) -> Self {
1086	        Request::EmergencyRecover(r)
1087	    }
1088	}
1089
1090	impl IntoRequest for EmergencyrecoverRequest {
1091	    type Response = super::responses::EmergencyrecoverResponse;
1092	}
1093
1094	impl TypedRequest for EmergencyrecoverRequest {
1095	    type Response = super::responses::EmergencyrecoverResponse;
1096
1097	    fn method(&self) -> &str {
1098	        "emergencyrecover"
1099	    }
1100	}
1101	#[derive(Clone, Debug, Deserialize, Serialize)]
1102	pub struct GetemergencyrecoverdataRequest {
1103	}
1104
1105	impl From<GetemergencyrecoverdataRequest> for Request {
1106	    fn from(r: GetemergencyrecoverdataRequest) -> Self {
1107	        Request::GetEmergencyRecoverData(r)
1108	    }
1109	}
1110
1111	impl IntoRequest for GetemergencyrecoverdataRequest {
1112	    type Response = super::responses::GetemergencyrecoverdataResponse;
1113	}
1114
1115	impl TypedRequest for GetemergencyrecoverdataRequest {
1116	    type Response = super::responses::GetemergencyrecoverdataResponse;
1117
1118	    fn method(&self) -> &str {
1119	        "getemergencyrecoverdata"
1120	    }
1121	}
1122	#[derive(Clone, Debug, Deserialize, Serialize)]
1123	pub struct ExposesecretRequest {
1124	    #[serde(skip_serializing_if = "Option::is_none")]
1125	    pub identifier: Option<String>,
1126	    pub passphrase: String,
1127	}
1128
1129	impl From<ExposesecretRequest> for Request {
1130	    fn from(r: ExposesecretRequest) -> Self {
1131	        Request::ExposeSecret(r)
1132	    }
1133	}
1134
1135	impl IntoRequest for ExposesecretRequest {
1136	    type Response = super::responses::ExposesecretResponse;
1137	}
1138
1139	impl TypedRequest for ExposesecretRequest {
1140	    type Response = super::responses::ExposesecretResponse;
1141
1142	    fn method(&self) -> &str {
1143	        "exposesecret"
1144	    }
1145	}
1146	#[derive(Clone, Debug, Deserialize, Serialize)]
1147	pub struct RecoverRequest {
1148	    pub hsmsecret: String,
1149	}
1150
1151	impl From<RecoverRequest> for Request {
1152	    fn from(r: RecoverRequest) -> Self {
1153	        Request::Recover(r)
1154	    }
1155	}
1156
1157	impl IntoRequest for RecoverRequest {
1158	    type Response = super::responses::RecoverResponse;
1159	}
1160
1161	impl TypedRequest for RecoverRequest {
1162	    type Response = super::responses::RecoverResponse;
1163
1164	    fn method(&self) -> &str {
1165	        "recover"
1166	    }
1167	}
1168	#[derive(Clone, Debug, Deserialize, Serialize)]
1169	pub struct RecoverchannelRequest {
1170	    pub scb: Vec<String>,
1171	}
1172
1173	impl From<RecoverchannelRequest> for Request {
1174	    fn from(r: RecoverchannelRequest) -> Self {
1175	        Request::RecoverChannel(r)
1176	    }
1177	}
1178
1179	impl IntoRequest for RecoverchannelRequest {
1180	    type Response = super::responses::RecoverchannelResponse;
1181	}
1182
1183	impl TypedRequest for RecoverchannelRequest {
1184	    type Response = super::responses::RecoverchannelResponse;
1185
1186	    fn method(&self) -> &str {
1187	        "recoverchannel"
1188	    }
1189	}
1190	#[derive(Clone, Debug, Deserialize, Serialize)]
1191	pub struct InvoiceRequest {
1192	    #[serde(skip_serializing_if = "Option::is_none")]
1193	    pub cltv: Option<u32>,
1194	    #[serde(skip_serializing_if = "Option::is_none")]
1195	    pub deschashonly: Option<bool>,
1196	    #[serde(skip_serializing_if = "Option::is_none")]
1197	    pub expiry: Option<u64>,
1198	    #[serde(skip_serializing_if = "Option::is_none")]
1199	    pub preimage: Option<String>,
1200	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
1201	    pub exposeprivatechannels: Option<Vec<ShortChannelId>>,
1202	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
1203	    pub fallbacks: Option<Vec<String>>,
1204	    pub amount_msat: AmountOrAny,
1205	    pub description: String,
1206	    pub label: String,
1207	}
1208
1209	impl From<InvoiceRequest> for Request {
1210	    fn from(r: InvoiceRequest) -> Self {
1211	        Request::Invoice(r)
1212	    }
1213	}
1214
1215	impl IntoRequest for InvoiceRequest {
1216	    type Response = super::responses::InvoiceResponse;
1217	}
1218
1219	impl TypedRequest for InvoiceRequest {
1220	    type Response = super::responses::InvoiceResponse;
1221
1222	    fn method(&self) -> &str {
1223	        "invoice"
1224	    }
1225	}
1226	#[derive(Clone, Debug, Deserialize, Serialize)]
1227	pub struct InvoicerequestRequest {
1228	    #[serde(skip_serializing_if = "Option::is_none")]
1229	    pub absolute_expiry: Option<u64>,
1230	    #[serde(skip_serializing_if = "Option::is_none")]
1231	    pub issuer: Option<String>,
1232	    #[serde(skip_serializing_if = "Option::is_none")]
1233	    pub label: Option<String>,
1234	    #[serde(skip_serializing_if = "Option::is_none")]
1235	    pub single_use: Option<bool>,
1236	    pub amount: Amount,
1237	    pub description: String,
1238	}
1239
1240	impl From<InvoicerequestRequest> for Request {
1241	    fn from(r: InvoicerequestRequest) -> Self {
1242	        Request::InvoiceRequest(r)
1243	    }
1244	}
1245
1246	impl IntoRequest for InvoicerequestRequest {
1247	    type Response = super::responses::InvoicerequestResponse;
1248	}
1249
1250	impl TypedRequest for InvoicerequestRequest {
1251	    type Response = super::responses::InvoicerequestResponse;
1252
1253	    fn method(&self) -> &str {
1254	        "invoicerequest"
1255	    }
1256	}
1257	#[derive(Clone, Debug, Deserialize, Serialize)]
1258	pub struct DisableinvoicerequestRequest {
1259	    pub invreq_id: String,
1260	}
1261
1262	impl From<DisableinvoicerequestRequest> for Request {
1263	    fn from(r: DisableinvoicerequestRequest) -> Self {
1264	        Request::DisableInvoiceRequest(r)
1265	    }
1266	}
1267
1268	impl IntoRequest for DisableinvoicerequestRequest {
1269	    type Response = super::responses::DisableinvoicerequestResponse;
1270	}
1271
1272	impl TypedRequest for DisableinvoicerequestRequest {
1273	    type Response = super::responses::DisableinvoicerequestResponse;
1274
1275	    fn method(&self) -> &str {
1276	        "disableinvoicerequest"
1277	    }
1278	}
1279	#[derive(Clone, Debug, Deserialize, Serialize)]
1280	pub struct ListinvoicerequestsRequest {
1281	    #[serde(skip_serializing_if = "Option::is_none")]
1282	    pub active_only: Option<bool>,
1283	    #[serde(skip_serializing_if = "Option::is_none")]
1284	    pub invreq_id: Option<String>,
1285	}
1286
1287	impl From<ListinvoicerequestsRequest> for Request {
1288	    fn from(r: ListinvoicerequestsRequest) -> Self {
1289	        Request::ListInvoiceRequests(r)
1290	    }
1291	}
1292
1293	impl IntoRequest for ListinvoicerequestsRequest {
1294	    type Response = super::responses::ListinvoicerequestsResponse;
1295	}
1296
1297	impl TypedRequest for ListinvoicerequestsRequest {
1298	    type Response = super::responses::ListinvoicerequestsResponse;
1299
1300	    fn method(&self) -> &str {
1301	        "listinvoicerequests"
1302	    }
1303	}
1304	#[derive(Clone, Debug, Deserialize, Serialize)]
1305	pub struct ListdatastoreRequest {
1306	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
1307	    pub key: Option<Vec<String>>,
1308	}
1309
1310	impl From<ListdatastoreRequest> for Request {
1311	    fn from(r: ListdatastoreRequest) -> Self {
1312	        Request::ListDatastore(r)
1313	    }
1314	}
1315
1316	impl IntoRequest for ListdatastoreRequest {
1317	    type Response = super::responses::ListdatastoreResponse;
1318	}
1319
1320	impl TypedRequest for ListdatastoreRequest {
1321	    type Response = super::responses::ListdatastoreResponse;
1322
1323	    fn method(&self) -> &str {
1324	        "listdatastore"
1325	    }
1326	}
1327	/// ['If neither *in_channel* nor *out_channel* is specified, it controls ordering.']
1328	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
1329	#[allow(non_camel_case_types)]
1330	pub enum ListinvoicesIndex {
1331	    #[serde(rename = "created")]
1332	    CREATED = 0,
1333	    #[serde(rename = "updated")]
1334	    UPDATED = 1,
1335	}
1336
1337	impl TryFrom<i32> for ListinvoicesIndex {
1338	    type Error = anyhow::Error;
1339	    fn try_from(c: i32) -> Result<ListinvoicesIndex, anyhow::Error> {
1340	        match c {
1341	    0 => Ok(ListinvoicesIndex::CREATED),
1342	    1 => Ok(ListinvoicesIndex::UPDATED),
1343	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListinvoicesIndex", o)),
1344	        }
1345	    }
1346	}
1347
1348	impl ToString for ListinvoicesIndex {
1349	    fn to_string(&self) -> String {
1350	        match self {
1351	            ListinvoicesIndex::CREATED => "CREATED",
1352	            ListinvoicesIndex::UPDATED => "UPDATED",
1353	        }.to_string()
1354	    }
1355	}
1356
1357	#[derive(Clone, Debug, Deserialize, Serialize)]
1358	pub struct ListinvoicesRequest {
1359	    #[serde(skip_serializing_if = "Option::is_none")]
1360	    pub index: Option<ListinvoicesIndex>,
1361	    #[serde(skip_serializing_if = "Option::is_none")]
1362	    pub invstring: Option<String>,
1363	    #[serde(skip_serializing_if = "Option::is_none")]
1364	    pub label: Option<String>,
1365	    #[serde(skip_serializing_if = "Option::is_none")]
1366	    pub limit: Option<u32>,
1367	    #[serde(skip_serializing_if = "Option::is_none")]
1368	    pub offer_id: Option<String>,
1369	    #[serde(skip_serializing_if = "Option::is_none")]
1370	    pub payment_hash: Option<String>,
1371	    #[serde(skip_serializing_if = "Option::is_none")]
1372	    pub start: Option<u64>,
1373	}
1374
1375	impl From<ListinvoicesRequest> for Request {
1376	    fn from(r: ListinvoicesRequest) -> Self {
1377	        Request::ListInvoices(r)
1378	    }
1379	}
1380
1381	impl IntoRequest for ListinvoicesRequest {
1382	    type Response = super::responses::ListinvoicesResponse;
1383	}
1384
1385	impl TypedRequest for ListinvoicesRequest {
1386	    type Response = super::responses::ListinvoicesResponse;
1387
1388	    fn method(&self) -> &str {
1389	        "listinvoices"
1390	    }
1391	}
1392	#[derive(Clone, Debug, Deserialize, Serialize)]
1393	pub struct SendonionFirstHop {
1394	    pub amount_msat: Amount,
1395	    pub delay: u16,
1396	    pub id: PublicKey,
1397	}
1398
1399	#[derive(Clone, Debug, Deserialize, Serialize)]
1400	pub struct SendonionRequest {
1401	    #[serde(skip_serializing_if = "Option::is_none")]
1402	    pub amount_msat: Option<Amount>,
1403	    #[serde(skip_serializing_if = "Option::is_none")]
1404	    pub bolt11: Option<String>,
1405	    #[serde(skip_serializing_if = "Option::is_none")]
1406	    pub description: Option<String>,
1407	    #[serde(skip_serializing_if = "Option::is_none")]
1408	    pub destination: Option<PublicKey>,
1409	    #[serde(skip_serializing_if = "Option::is_none")]
1410	    pub groupid: Option<u64>,
1411	    #[serde(skip_serializing_if = "Option::is_none")]
1412	    pub label: Option<String>,
1413	    #[serde(skip_serializing_if = "Option::is_none")]
1414	    pub localinvreqid: Option<Sha256>,
1415	    #[serde(skip_serializing_if = "Option::is_none")]
1416	    pub partid: Option<u16>,
1417	    #[serde(skip_serializing_if = "Option::is_none")]
1418	    pub total_amount_msat: Option<Amount>,
1419	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
1420	    pub shared_secrets: Option<Vec<Secret>>,
1421	    pub first_hop: SendonionFirstHop,
1422	    pub onion: String,
1423	    pub payment_hash: Sha256,
1424	}
1425
1426	impl From<SendonionRequest> for Request {
1427	    fn from(r: SendonionRequest) -> Self {
1428	        Request::SendOnion(r)
1429	    }
1430	}
1431
1432	impl IntoRequest for SendonionRequest {
1433	    type Response = super::responses::SendonionResponse;
1434	}
1435
1436	impl TypedRequest for SendonionRequest {
1437	    type Response = super::responses::SendonionResponse;
1438
1439	    fn method(&self) -> &str {
1440	        "sendonion"
1441	    }
1442	}
1443	/// ['If neither bolt11 or payment_hash is specified, `index` controls ordering, by `created` (default) or `updated`.']
1444	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
1445	#[allow(non_camel_case_types)]
1446	pub enum ListsendpaysIndex {
1447	    #[serde(rename = "created")]
1448	    CREATED = 0,
1449	    #[serde(rename = "updated")]
1450	    UPDATED = 1,
1451	}
1452
1453	impl TryFrom<i32> for ListsendpaysIndex {
1454	    type Error = anyhow::Error;
1455	    fn try_from(c: i32) -> Result<ListsendpaysIndex, anyhow::Error> {
1456	        match c {
1457	    0 => Ok(ListsendpaysIndex::CREATED),
1458	    1 => Ok(ListsendpaysIndex::UPDATED),
1459	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListsendpaysIndex", o)),
1460	        }
1461	    }
1462	}
1463
1464	impl ToString for ListsendpaysIndex {
1465	    fn to_string(&self) -> String {
1466	        match self {
1467	            ListsendpaysIndex::CREATED => "CREATED",
1468	            ListsendpaysIndex::UPDATED => "UPDATED",
1469	        }.to_string()
1470	    }
1471	}
1472
1473	/// ['Whether the invoice has been paid, pending, or failed.']
1474	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
1475	#[allow(non_camel_case_types)]
1476	pub enum ListsendpaysStatus {
1477	    #[serde(rename = "pending")]
1478	    PENDING = 0,
1479	    #[serde(rename = "complete")]
1480	    COMPLETE = 1,
1481	    #[serde(rename = "failed")]
1482	    FAILED = 2,
1483	}
1484
1485	impl TryFrom<i32> for ListsendpaysStatus {
1486	    type Error = anyhow::Error;
1487	    fn try_from(c: i32) -> Result<ListsendpaysStatus, anyhow::Error> {
1488	        match c {
1489	    0 => Ok(ListsendpaysStatus::PENDING),
1490	    1 => Ok(ListsendpaysStatus::COMPLETE),
1491	    2 => Ok(ListsendpaysStatus::FAILED),
1492	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListsendpaysStatus", o)),
1493	        }
1494	    }
1495	}
1496
1497	impl ToString for ListsendpaysStatus {
1498	    fn to_string(&self) -> String {
1499	        match self {
1500	            ListsendpaysStatus::PENDING => "PENDING",
1501	            ListsendpaysStatus::COMPLETE => "COMPLETE",
1502	            ListsendpaysStatus::FAILED => "FAILED",
1503	        }.to_string()
1504	    }
1505	}
1506
1507	#[derive(Clone, Debug, Deserialize, Serialize)]
1508	pub struct ListsendpaysRequest {
1509	    #[serde(skip_serializing_if = "Option::is_none")]
1510	    pub bolt11: Option<String>,
1511	    #[serde(skip_serializing_if = "Option::is_none")]
1512	    pub index: Option<ListsendpaysIndex>,
1513	    #[serde(skip_serializing_if = "Option::is_none")]
1514	    pub limit: Option<u32>,
1515	    #[serde(skip_serializing_if = "Option::is_none")]
1516	    pub payment_hash: Option<Sha256>,
1517	    #[serde(skip_serializing_if = "Option::is_none")]
1518	    pub start: Option<u64>,
1519	    #[serde(skip_serializing_if = "Option::is_none")]
1520	    pub status: Option<ListsendpaysStatus>,
1521	}
1522
1523	impl From<ListsendpaysRequest> for Request {
1524	    fn from(r: ListsendpaysRequest) -> Self {
1525	        Request::ListSendPays(r)
1526	    }
1527	}
1528
1529	impl IntoRequest for ListsendpaysRequest {
1530	    type Response = super::responses::ListsendpaysResponse;
1531	}
1532
1533	impl TypedRequest for ListsendpaysRequest {
1534	    type Response = super::responses::ListsendpaysResponse;
1535
1536	    fn method(&self) -> &str {
1537	        "listsendpays"
1538	    }
1539	}
1540	#[derive(Clone, Debug, Deserialize, Serialize)]
1541	pub struct ListtransactionsRequest {
1542	}
1543
1544	impl From<ListtransactionsRequest> for Request {
1545	    fn from(r: ListtransactionsRequest) -> Self {
1546	        Request::ListTransactions(r)
1547	    }
1548	}
1549
1550	impl IntoRequest for ListtransactionsRequest {
1551	    type Response = super::responses::ListtransactionsResponse;
1552	}
1553
1554	impl TypedRequest for ListtransactionsRequest {
1555	    type Response = super::responses::ListtransactionsResponse;
1556
1557	    fn method(&self) -> &str {
1558	        "listtransactions"
1559	    }
1560	}
1561	#[derive(Clone, Debug, Deserialize, Serialize)]
1562	pub struct MakesecretRequest {
1563	    #[serde(skip_serializing_if = "Option::is_none")]
1564	    pub hex: Option<String>,
1565	    #[serde(skip_serializing_if = "Option::is_none")]
1566	    pub string: Option<String>,
1567	}
1568
1569	impl From<MakesecretRequest> for Request {
1570	    fn from(r: MakesecretRequest) -> Self {
1571	        Request::MakeSecret(r)
1572	    }
1573	}
1574
1575	impl IntoRequest for MakesecretRequest {
1576	    type Response = super::responses::MakesecretResponse;
1577	}
1578
1579	impl TypedRequest for MakesecretRequest {
1580	    type Response = super::responses::MakesecretResponse;
1581
1582	    fn method(&self) -> &str {
1583	        "makesecret"
1584	    }
1585	}
1586	#[deprecated = "deprecated since CLN v26.06"]
1587	#[derive(Clone, Debug, Deserialize, Serialize)]
1588	pub struct PayRequest {
1589	    #[deprecated]
1590	    #[serde(skip_serializing_if = "Option::is_none")]
1591	    pub amount_msat: Option<Amount>,
1592	    #[deprecated]
1593	    #[serde(skip_serializing_if = "Option::is_none")]
1594	    pub description: Option<String>,
1595	    #[deprecated]
1596	    #[serde(skip_serializing_if = "Option::is_none")]
1597	    pub exemptfee: Option<Amount>,
1598	    #[deprecated]
1599	    #[serde(skip_serializing_if = "Option::is_none")]
1600	    pub label: Option<String>,
1601	    #[deprecated]
1602	    #[serde(skip_serializing_if = "Option::is_none")]
1603	    pub localinvreqid: Option<String>,
1604	    #[deprecated]
1605	    #[serde(skip_serializing_if = "Option::is_none")]
1606	    pub maxdelay: Option<u16>,
1607	    #[deprecated]
1608	    #[serde(skip_serializing_if = "Option::is_none")]
1609	    pub maxfee: Option<Amount>,
1610	    #[deprecated]
1611	    #[serde(skip_serializing_if = "Option::is_none")]
1612	    pub maxfeepercent: Option<f64>,
1613	    #[deprecated]
1614	    #[serde(skip_serializing_if = "Option::is_none")]
1615	    pub partial_msat: Option<Amount>,
1616	    #[deprecated]
1617	    #[serde(skip_serializing_if = "Option::is_none")]
1618	    pub retry_for: Option<u16>,
1619	    #[deprecated]
1620	    #[serde(skip_serializing_if = "Option::is_none")]
1621	    pub riskfactor: Option<f64>,
1622	    #[deprecated]
1623	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
1624	    pub exclude: Option<Vec<String>>,
1625	    #[deprecated]
1626	    pub bolt11: String,
1627	}
1628
1629	impl From<PayRequest> for Request {
1630	    fn from(r: PayRequest) -> Self {
1631	        Request::Pay(r)
1632	    }
1633	}
1634
1635	impl IntoRequest for PayRequest {
1636	    type Response = super::responses::PayResponse;
1637	}
1638
1639	impl TypedRequest for PayRequest {
1640	    type Response = super::responses::PayResponse;
1641
1642	    fn method(&self) -> &str {
1643	        "pay"
1644	    }
1645	}
1646	#[derive(Clone, Debug, Deserialize, Serialize)]
1647	pub struct ListnodesRequest {
1648	    #[serde(skip_serializing_if = "Option::is_none")]
1649	    pub id: Option<PublicKey>,
1650	}
1651
1652	impl From<ListnodesRequest> for Request {
1653	    fn from(r: ListnodesRequest) -> Self {
1654	        Request::ListNodes(r)
1655	    }
1656	}
1657
1658	impl IntoRequest for ListnodesRequest {
1659	    type Response = super::responses::ListnodesResponse;
1660	}
1661
1662	impl TypedRequest for ListnodesRequest {
1663	    type Response = super::responses::ListnodesResponse;
1664
1665	    fn method(&self) -> &str {
1666	        "listnodes"
1667	    }
1668	}
1669	#[derive(Clone, Debug, Deserialize, Serialize)]
1670	pub struct WaitanyinvoiceRequest {
1671	    #[serde(skip_serializing_if = "Option::is_none")]
1672	    pub lastpay_index: Option<u64>,
1673	    #[serde(skip_serializing_if = "Option::is_none")]
1674	    pub timeout: Option<u64>,
1675	}
1676
1677	impl From<WaitanyinvoiceRequest> for Request {
1678	    fn from(r: WaitanyinvoiceRequest) -> Self {
1679	        Request::WaitAnyInvoice(r)
1680	    }
1681	}
1682
1683	impl IntoRequest for WaitanyinvoiceRequest {
1684	    type Response = super::responses::WaitanyinvoiceResponse;
1685	}
1686
1687	impl TypedRequest for WaitanyinvoiceRequest {
1688	    type Response = super::responses::WaitanyinvoiceResponse;
1689
1690	    fn method(&self) -> &str {
1691	        "waitanyinvoice"
1692	    }
1693	}
1694	#[derive(Clone, Debug, Deserialize, Serialize)]
1695	pub struct WaitinvoiceRequest {
1696	    pub label: String,
1697	}
1698
1699	impl From<WaitinvoiceRequest> for Request {
1700	    fn from(r: WaitinvoiceRequest) -> Self {
1701	        Request::WaitInvoice(r)
1702	    }
1703	}
1704
1705	impl IntoRequest for WaitinvoiceRequest {
1706	    type Response = super::responses::WaitinvoiceResponse;
1707	}
1708
1709	impl TypedRequest for WaitinvoiceRequest {
1710	    type Response = super::responses::WaitinvoiceResponse;
1711
1712	    fn method(&self) -> &str {
1713	        "waitinvoice"
1714	    }
1715	}
1716	#[derive(Clone, Debug, Deserialize, Serialize)]
1717	pub struct WaitsendpayRequest {
1718	    #[serde(skip_serializing_if = "Option::is_none")]
1719	    pub groupid: Option<u64>,
1720	    #[serde(skip_serializing_if = "Option::is_none")]
1721	    pub partid: Option<u64>,
1722	    #[serde(skip_serializing_if = "Option::is_none")]
1723	    pub timeout: Option<u32>,
1724	    pub payment_hash: Sha256,
1725	}
1726
1727	impl From<WaitsendpayRequest> for Request {
1728	    fn from(r: WaitsendpayRequest) -> Self {
1729	        Request::WaitSendPay(r)
1730	    }
1731	}
1732
1733	impl IntoRequest for WaitsendpayRequest {
1734	    type Response = super::responses::WaitsendpayResponse;
1735	}
1736
1737	impl TypedRequest for WaitsendpayRequest {
1738	    type Response = super::responses::WaitsendpayResponse;
1739
1740	    fn method(&self) -> &str {
1741	        "waitsendpay"
1742	    }
1743	}
1744	/// ['It specifies the type of address wanted; currently *bech32* (e.g. `tb1qu9j4lg5f9rgjyfhvfd905vw46eg39czmktxqgg` on bitcoin testnet or `bc1qwqdg6squsna38e46795at95yu9atm8azzmyvckulcc7kytlcckxswvvzej` on bitcoin mainnet), or *p2tr* taproot addresses. The special value *all* generates all known address types for the same underlying key.']
1745	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
1746	#[allow(non_camel_case_types)]
1747	pub enum NewaddrAddresstype {
1748	    #[serde(rename = "bech32")]
1749	    BECH32 = 0,
1750	    #[serde(rename = "all")]
1751	    ALL = 2,
1752	    #[serde(rename = "p2tr")]
1753	    P2TR = 3,
1754	}
1755
1756	impl TryFrom<i32> for NewaddrAddresstype {
1757	    type Error = anyhow::Error;
1758	    fn try_from(c: i32) -> Result<NewaddrAddresstype, anyhow::Error> {
1759	        match c {
1760	    0 => Ok(NewaddrAddresstype::BECH32),
1761	    2 => Ok(NewaddrAddresstype::ALL),
1762	    3 => Ok(NewaddrAddresstype::P2TR),
1763	            o => Err(anyhow::anyhow!("Unknown variant {} for enum NewaddrAddresstype", o)),
1764	        }
1765	    }
1766	}
1767
1768	impl ToString for NewaddrAddresstype {
1769	    fn to_string(&self) -> String {
1770	        match self {
1771	            NewaddrAddresstype::BECH32 => "BECH32",
1772	            NewaddrAddresstype::P2TR => "P2TR",
1773	            NewaddrAddresstype::ALL => "ALL",
1774	        }.to_string()
1775	    }
1776	}
1777
1778	#[derive(Clone, Debug, Deserialize, Serialize)]
1779	pub struct NewaddrRequest {
1780	    #[serde(skip_serializing_if = "Option::is_none")]
1781	    pub addresstype: Option<NewaddrAddresstype>,
1782	}
1783
1784	impl From<NewaddrRequest> for Request {
1785	    fn from(r: NewaddrRequest) -> Self {
1786	        Request::NewAddr(r)
1787	    }
1788	}
1789
1790	impl IntoRequest for NewaddrRequest {
1791	    type Response = super::responses::NewaddrResponse;
1792	}
1793
1794	impl TypedRequest for NewaddrRequest {
1795	    type Response = super::responses::NewaddrResponse;
1796
1797	    fn method(&self) -> &str {
1798	        "newaddr"
1799	    }
1800	}
1801	#[derive(Clone, Debug, Deserialize, Serialize)]
1802	pub struct WithdrawRequest {
1803	    #[serde(skip_serializing_if = "Option::is_none")]
1804	    pub feerate: Option<Feerate>,
1805	    #[serde(skip_serializing_if = "Option::is_none")]
1806	    pub minconf: Option<u16>,
1807	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
1808	    pub utxos: Option<Vec<Outpoint>>,
1809	    pub destination: String,
1810	    pub satoshi: AmountOrAll,
1811	}
1812
1813	impl From<WithdrawRequest> for Request {
1814	    fn from(r: WithdrawRequest) -> Self {
1815	        Request::Withdraw(r)
1816	    }
1817	}
1818
1819	impl IntoRequest for WithdrawRequest {
1820	    type Response = super::responses::WithdrawResponse;
1821	}
1822
1823	impl TypedRequest for WithdrawRequest {
1824	    type Response = super::responses::WithdrawResponse;
1825
1826	    fn method(&self) -> &str {
1827	        "withdraw"
1828	    }
1829	}
1830	#[deprecated = "deprecated since CLN v26.06"]
1831	#[derive(Clone, Debug, Deserialize, Serialize)]
1832	pub struct KeysendRequest {
1833	    #[deprecated]
1834	    #[serde(skip_serializing_if = "Option::is_none")]
1835	    pub exemptfee: Option<Amount>,
1836	    #[deprecated]
1837	    #[serde(skip_serializing_if = "Option::is_none")]
1838	    pub extratlvs: Option<TlvStream>,
1839	    #[deprecated]
1840	    #[serde(skip_serializing_if = "Option::is_none")]
1841	    pub label: Option<String>,
1842	    #[deprecated]
1843	    #[serde(skip_serializing_if = "Option::is_none")]
1844	    pub maxdelay: Option<u32>,
1845	    #[deprecated]
1846	    #[serde(skip_serializing_if = "Option::is_none")]
1847	    pub maxfee: Option<Amount>,
1848	    #[deprecated]
1849	    #[serde(skip_serializing_if = "Option::is_none")]
1850	    pub maxfeepercent: Option<f64>,
1851	    #[deprecated]
1852	    #[serde(skip_serializing_if = "Option::is_none")]
1853	    pub retry_for: Option<u32>,
1854	    #[deprecated]
1855	    #[serde(skip_serializing_if = "Option::is_none")]
1856	    pub routehints: Option<RoutehintList>,
1857	    #[deprecated]
1858	    pub amount_msat: Amount,
1859	    #[deprecated]
1860	    pub destination: PublicKey,
1861	}
1862
1863	impl From<KeysendRequest> for Request {
1864	    fn from(r: KeysendRequest) -> Self {
1865	        Request::KeySend(r)
1866	    }
1867	}
1868
1869	impl IntoRequest for KeysendRequest {
1870	    type Response = super::responses::KeysendResponse;
1871	}
1872
1873	impl TypedRequest for KeysendRequest {
1874	    type Response = super::responses::KeysendResponse;
1875
1876	    fn method(&self) -> &str {
1877	        "keysend"
1878	    }
1879	}
1880	#[derive(Clone, Debug, Deserialize, Serialize)]
1881	pub struct FundpsbtRequest {
1882	    #[serde(skip_serializing_if = "Option::is_none")]
1883	    pub excess_as_change: Option<bool>,
1884	    #[serde(skip_serializing_if = "Option::is_none")]
1885	    pub locktime: Option<u32>,
1886	    #[serde(skip_serializing_if = "Option::is_none")]
1887	    pub min_witness_weight: Option<u32>,
1888	    #[serde(skip_serializing_if = "Option::is_none")]
1889	    pub minconf: Option<u32>,
1890	    #[serde(skip_serializing_if = "Option::is_none")]
1891	    pub nonwrapped: Option<bool>,
1892	    #[serde(skip_serializing_if = "Option::is_none")]
1893	    pub opening_anchor_channel: Option<bool>,
1894	    #[serde(skip_serializing_if = "Option::is_none")]
1895	    pub reserve: Option<u32>,
1896	    pub feerate: Feerate,
1897	    pub satoshi: AmountOrAll,
1898	    pub startweight: u32,
1899	}
1900
1901	impl From<FundpsbtRequest> for Request {
1902	    fn from(r: FundpsbtRequest) -> Self {
1903	        Request::FundPsbt(r)
1904	    }
1905	}
1906
1907	impl IntoRequest for FundpsbtRequest {
1908	    type Response = super::responses::FundpsbtResponse;
1909	}
1910
1911	impl TypedRequest for FundpsbtRequest {
1912	    type Response = super::responses::FundpsbtResponse;
1913
1914	    fn method(&self) -> &str {
1915	        "fundpsbt"
1916	    }
1917	}
1918	#[derive(Clone, Debug, Deserialize, Serialize)]
1919	pub struct SendpsbtRequest {
1920	    #[serde(skip_serializing_if = "Option::is_none")]
1921	    pub reserve: Option<u32>,
1922	    pub psbt: String,
1923	}
1924
1925	impl From<SendpsbtRequest> for Request {
1926	    fn from(r: SendpsbtRequest) -> Self {
1927	        Request::SendPsbt(r)
1928	    }
1929	}
1930
1931	impl IntoRequest for SendpsbtRequest {
1932	    type Response = super::responses::SendpsbtResponse;
1933	}
1934
1935	impl TypedRequest for SendpsbtRequest {
1936	    type Response = super::responses::SendpsbtResponse;
1937
1938	    fn method(&self) -> &str {
1939	        "sendpsbt"
1940	    }
1941	}
1942	#[derive(Clone, Debug, Deserialize, Serialize)]
1943	pub struct SignpsbtRequest {
1944	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
1945	    pub signonly: Option<Vec<u32>>,
1946	    pub psbt: String,
1947	}
1948
1949	impl From<SignpsbtRequest> for Request {
1950	    fn from(r: SignpsbtRequest) -> Self {
1951	        Request::SignPsbt(r)
1952	    }
1953	}
1954
1955	impl IntoRequest for SignpsbtRequest {
1956	    type Response = super::responses::SignpsbtResponse;
1957	}
1958
1959	impl TypedRequest for SignpsbtRequest {
1960	    type Response = super::responses::SignpsbtResponse;
1961
1962	    fn method(&self) -> &str {
1963	        "signpsbt"
1964	    }
1965	}
1966	#[derive(Clone, Debug, Deserialize, Serialize)]
1967	pub struct UtxopsbtRequest {
1968	    #[serde(skip_serializing_if = "Option::is_none")]
1969	    pub excess_as_change: Option<bool>,
1970	    #[serde(skip_serializing_if = "Option::is_none")]
1971	    pub locktime: Option<u32>,
1972	    #[serde(skip_serializing_if = "Option::is_none")]
1973	    pub min_witness_weight: Option<u32>,
1974	    #[serde(skip_serializing_if = "Option::is_none")]
1975	    pub opening_anchor_channel: Option<bool>,
1976	    #[serde(skip_serializing_if = "Option::is_none")]
1977	    pub reserve: Option<u32>,
1978	    #[serde(skip_serializing_if = "Option::is_none")]
1979	    pub reservedok: Option<bool>,
1980	    pub feerate: Feerate,
1981	    pub satoshi: AmountOrAll,
1982	    pub startweight: u32,
1983	    pub utxos: Vec<Outpoint>,
1984	}
1985
1986	impl From<UtxopsbtRequest> for Request {
1987	    fn from(r: UtxopsbtRequest) -> Self {
1988	        Request::UtxoPsbt(r)
1989	    }
1990	}
1991
1992	impl IntoRequest for UtxopsbtRequest {
1993	    type Response = super::responses::UtxopsbtResponse;
1994	}
1995
1996	impl TypedRequest for UtxopsbtRequest {
1997	    type Response = super::responses::UtxopsbtResponse;
1998
1999	    fn method(&self) -> &str {
2000	        "utxopsbt"
2001	    }
2002	}
2003	#[derive(Clone, Debug, Deserialize, Serialize)]
2004	pub struct TxdiscardRequest {
2005	    pub txid: String,
2006	}
2007
2008	impl From<TxdiscardRequest> for Request {
2009	    fn from(r: TxdiscardRequest) -> Self {
2010	        Request::TxDiscard(r)
2011	    }
2012	}
2013
2014	impl IntoRequest for TxdiscardRequest {
2015	    type Response = super::responses::TxdiscardResponse;
2016	}
2017
2018	impl TypedRequest for TxdiscardRequest {
2019	    type Response = super::responses::TxdiscardResponse;
2020
2021	    fn method(&self) -> &str {
2022	        "txdiscard"
2023	    }
2024	}
2025	#[derive(Clone, Debug, Deserialize, Serialize)]
2026	pub struct TxprepareRequest {
2027	    #[serde(skip_serializing_if = "Option::is_none")]
2028	    pub feerate: Option<Feerate>,
2029	    #[serde(skip_serializing_if = "Option::is_none")]
2030	    pub minconf: Option<u32>,
2031	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
2032	    pub utxos: Option<Vec<Outpoint>>,
2033	    pub outputs: Vec<OutputDesc>,
2034	}
2035
2036	impl From<TxprepareRequest> for Request {
2037	    fn from(r: TxprepareRequest) -> Self {
2038	        Request::TxPrepare(r)
2039	    }
2040	}
2041
2042	impl IntoRequest for TxprepareRequest {
2043	    type Response = super::responses::TxprepareResponse;
2044	}
2045
2046	impl TypedRequest for TxprepareRequest {
2047	    type Response = super::responses::TxprepareResponse;
2048
2049	    fn method(&self) -> &str {
2050	        "txprepare"
2051	    }
2052	}
2053	#[derive(Clone, Debug, Deserialize, Serialize)]
2054	pub struct TxsendRequest {
2055	    pub txid: String,
2056	}
2057
2058	impl From<TxsendRequest> for Request {
2059	    fn from(r: TxsendRequest) -> Self {
2060	        Request::TxSend(r)
2061	    }
2062	}
2063
2064	impl IntoRequest for TxsendRequest {
2065	    type Response = super::responses::TxsendResponse;
2066	}
2067
2068	impl TypedRequest for TxsendRequest {
2069	    type Response = super::responses::TxsendResponse;
2070
2071	    fn method(&self) -> &str {
2072	        "txsend"
2073	    }
2074	}
2075	#[derive(Clone, Debug, Deserialize, Serialize)]
2076	pub struct ListpeerchannelsRequest {
2077	    #[serde(skip_serializing_if = "Option::is_none")]
2078	    pub channel_id: Option<Sha256>,
2079	    #[serde(skip_serializing_if = "Option::is_none")]
2080	    pub id: Option<PublicKey>,
2081	    #[serde(skip_serializing_if = "Option::is_none")]
2082	    pub short_channel_id: Option<ShortChannelId>,
2083	}
2084
2085	impl From<ListpeerchannelsRequest> for Request {
2086	    fn from(r: ListpeerchannelsRequest) -> Self {
2087	        Request::ListPeerChannels(r)
2088	    }
2089	}
2090
2091	impl IntoRequest for ListpeerchannelsRequest {
2092	    type Response = super::responses::ListpeerchannelsResponse;
2093	}
2094
2095	impl TypedRequest for ListpeerchannelsRequest {
2096	    type Response = super::responses::ListpeerchannelsResponse;
2097
2098	    fn method(&self) -> &str {
2099	        "listpeerchannels"
2100	    }
2101	}
2102	#[derive(Clone, Debug, Deserialize, Serialize)]
2103	pub struct ListclosedchannelsRequest {
2104	    #[serde(skip_serializing_if = "Option::is_none")]
2105	    pub id: Option<PublicKey>,
2106	}
2107
2108	impl From<ListclosedchannelsRequest> for Request {
2109	    fn from(r: ListclosedchannelsRequest) -> Self {
2110	        Request::ListClosedChannels(r)
2111	    }
2112	}
2113
2114	impl IntoRequest for ListclosedchannelsRequest {
2115	    type Response = super::responses::ListclosedchannelsResponse;
2116	}
2117
2118	impl TypedRequest for ListclosedchannelsRequest {
2119	    type Response = super::responses::ListclosedchannelsResponse;
2120
2121	    fn method(&self) -> &str {
2122	        "listclosedchannels"
2123	    }
2124	}
2125	#[derive(Clone, Debug, Deserialize, Serialize)]
2126	pub struct DecodeRequest {
2127	    pub string: String,
2128	}
2129
2130	impl From<DecodeRequest> for Request {
2131	    fn from(r: DecodeRequest) -> Self {
2132	        Request::Decode(r)
2133	    }
2134	}
2135
2136	impl IntoRequest for DecodeRequest {
2137	    type Response = super::responses::DecodeResponse;
2138	}
2139
2140	impl TypedRequest for DecodeRequest {
2141	    type Response = super::responses::DecodeResponse;
2142
2143	    fn method(&self) -> &str {
2144	        "decode"
2145	    }
2146	}
2147	/// ['Expected status of the payment. Only deletes if the payment status matches. Deleting a `pending` payment will return an error.']
2148	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
2149	#[allow(non_camel_case_types)]
2150	pub enum DelpayStatus {
2151	    #[serde(rename = "complete")]
2152	    COMPLETE = 0,
2153	    #[serde(rename = "failed")]
2154	    FAILED = 1,
2155	}
2156
2157	impl TryFrom<i32> for DelpayStatus {
2158	    type Error = anyhow::Error;
2159	    fn try_from(c: i32) -> Result<DelpayStatus, anyhow::Error> {
2160	        match c {
2161	    0 => Ok(DelpayStatus::COMPLETE),
2162	    1 => Ok(DelpayStatus::FAILED),
2163	            o => Err(anyhow::anyhow!("Unknown variant {} for enum DelpayStatus", o)),
2164	        }
2165	    }
2166	}
2167
2168	impl ToString for DelpayStatus {
2169	    fn to_string(&self) -> String {
2170	        match self {
2171	            DelpayStatus::COMPLETE => "COMPLETE",
2172	            DelpayStatus::FAILED => "FAILED",
2173	        }.to_string()
2174	    }
2175	}
2176
2177	#[derive(Clone, Debug, Deserialize, Serialize)]
2178	pub struct DelpayRequest {
2179	    #[serde(skip_serializing_if = "Option::is_none")]
2180	    pub groupid: Option<u64>,
2181	    #[serde(skip_serializing_if = "Option::is_none")]
2182	    pub partid: Option<u64>,
2183	    // Path `DelPay.status`
2184	    pub status: DelpayStatus,
2185	    pub payment_hash: Sha256,
2186	}
2187
2188	impl From<DelpayRequest> for Request {
2189	    fn from(r: DelpayRequest) -> Self {
2190	        Request::DelPay(r)
2191	    }
2192	}
2193
2194	impl IntoRequest for DelpayRequest {
2195	    type Response = super::responses::DelpayResponse;
2196	}
2197
2198	impl TypedRequest for DelpayRequest {
2199	    type Response = super::responses::DelpayResponse;
2200
2201	    fn method(&self) -> &str {
2202	        "delpay"
2203	    }
2204	}
2205	/// ['The status of the forward to delete. You cannot delete forwards which have status *offered* (i.e. are currently active).']
2206	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
2207	#[allow(non_camel_case_types)]
2208	pub enum DelforwardStatus {
2209	    #[serde(rename = "settled")]
2210	    SETTLED = 0,
2211	    #[serde(rename = "local_failed")]
2212	    LOCAL_FAILED = 1,
2213	    #[serde(rename = "failed")]
2214	    FAILED = 2,
2215	}
2216
2217	impl TryFrom<i32> for DelforwardStatus {
2218	    type Error = anyhow::Error;
2219	    fn try_from(c: i32) -> Result<DelforwardStatus, anyhow::Error> {
2220	        match c {
2221	    0 => Ok(DelforwardStatus::SETTLED),
2222	    1 => Ok(DelforwardStatus::LOCAL_FAILED),
2223	    2 => Ok(DelforwardStatus::FAILED),
2224	            o => Err(anyhow::anyhow!("Unknown variant {} for enum DelforwardStatus", o)),
2225	        }
2226	    }
2227	}
2228
2229	impl ToString for DelforwardStatus {
2230	    fn to_string(&self) -> String {
2231	        match self {
2232	            DelforwardStatus::SETTLED => "SETTLED",
2233	            DelforwardStatus::LOCAL_FAILED => "LOCAL_FAILED",
2234	            DelforwardStatus::FAILED => "FAILED",
2235	        }.to_string()
2236	    }
2237	}
2238
2239	#[derive(Clone, Debug, Deserialize, Serialize)]
2240	pub struct DelforwardRequest {
2241	    // Path `DelForward.status`
2242	    pub status: DelforwardStatus,
2243	    pub in_channel: ShortChannelId,
2244	    pub in_htlc_id: u64,
2245	}
2246
2247	impl From<DelforwardRequest> for Request {
2248	    fn from(r: DelforwardRequest) -> Self {
2249	        Request::DelForward(r)
2250	    }
2251	}
2252
2253	impl IntoRequest for DelforwardRequest {
2254	    type Response = super::responses::DelforwardResponse;
2255	}
2256
2257	impl TypedRequest for DelforwardRequest {
2258	    type Response = super::responses::DelforwardResponse;
2259
2260	    fn method(&self) -> &str {
2261	        "delforward"
2262	    }
2263	}
2264	#[derive(Clone, Debug, Deserialize, Serialize)]
2265	pub struct DisableofferRequest {
2266	    pub offer_id: Sha256,
2267	}
2268
2269	impl From<DisableofferRequest> for Request {
2270	    fn from(r: DisableofferRequest) -> Self {
2271	        Request::DisableOffer(r)
2272	    }
2273	}
2274
2275	impl IntoRequest for DisableofferRequest {
2276	    type Response = super::responses::DisableofferResponse;
2277	}
2278
2279	impl TypedRequest for DisableofferRequest {
2280	    type Response = super::responses::DisableofferResponse;
2281
2282	    fn method(&self) -> &str {
2283	        "disableoffer"
2284	    }
2285	}
2286	#[derive(Clone, Debug, Deserialize, Serialize)]
2287	pub struct EnableofferRequest {
2288	    pub offer_id: Sha256,
2289	}
2290
2291	impl From<EnableofferRequest> for Request {
2292	    fn from(r: EnableofferRequest) -> Self {
2293	        Request::EnableOffer(r)
2294	    }
2295	}
2296
2297	impl IntoRequest for EnableofferRequest {
2298	    type Response = super::responses::EnableofferResponse;
2299	}
2300
2301	impl TypedRequest for EnableofferRequest {
2302	    type Response = super::responses::EnableofferResponse;
2303
2304	    fn method(&self) -> &str {
2305	        "enableoffer"
2306	    }
2307	}
2308	#[derive(Clone, Debug, Deserialize, Serialize)]
2309	pub struct DisconnectRequest {
2310	    #[serde(skip_serializing_if = "Option::is_none")]
2311	    pub force: Option<bool>,
2312	    pub id: PublicKey,
2313	}
2314
2315	impl From<DisconnectRequest> for Request {
2316	    fn from(r: DisconnectRequest) -> Self {
2317	        Request::Disconnect(r)
2318	    }
2319	}
2320
2321	impl IntoRequest for DisconnectRequest {
2322	    type Response = super::responses::DisconnectResponse;
2323	}
2324
2325	impl TypedRequest for DisconnectRequest {
2326	    type Response = super::responses::DisconnectResponse;
2327
2328	    fn method(&self) -> &str {
2329	        "disconnect"
2330	    }
2331	}
2332	/// ['Fee rate style to use. This can be:', '    *perkw* - provide feerate in units of satoshis per 1000 weight (e.g. the minimum fee is usually `253perkw`).', '    *perkb* - provide feerate in units of satoshis per 1000 virtual bytes (eg. the minimum fee is usually `1000perkb`).']
2333	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
2334	#[allow(non_camel_case_types)]
2335	pub enum FeeratesStyle {
2336	    #[serde(rename = "perkb")]
2337	    PERKB = 0,
2338	    #[serde(rename = "perkw")]
2339	    PERKW = 1,
2340	}
2341
2342	impl TryFrom<i32> for FeeratesStyle {
2343	    type Error = anyhow::Error;
2344	    fn try_from(c: i32) -> Result<FeeratesStyle, anyhow::Error> {
2345	        match c {
2346	    0 => Ok(FeeratesStyle::PERKB),
2347	    1 => Ok(FeeratesStyle::PERKW),
2348	            o => Err(anyhow::anyhow!("Unknown variant {} for enum FeeratesStyle", o)),
2349	        }
2350	    }
2351	}
2352
2353	impl ToString for FeeratesStyle {
2354	    fn to_string(&self) -> String {
2355	        match self {
2356	            FeeratesStyle::PERKB => "PERKB",
2357	            FeeratesStyle::PERKW => "PERKW",
2358	        }.to_string()
2359	    }
2360	}
2361
2362	#[derive(Clone, Debug, Deserialize, Serialize)]
2363	pub struct FeeratesRequest {
2364	    // Path `Feerates.style`
2365	    pub style: FeeratesStyle,
2366	}
2367
2368	impl From<FeeratesRequest> for Request {
2369	    fn from(r: FeeratesRequest) -> Self {
2370	        Request::Feerates(r)
2371	    }
2372	}
2373
2374	impl IntoRequest for FeeratesRequest {
2375	    type Response = super::responses::FeeratesResponse;
2376	}
2377
2378	impl TypedRequest for FeeratesRequest {
2379	    type Response = super::responses::FeeratesResponse;
2380
2381	    fn method(&self) -> &str {
2382	        "feerates"
2383	    }
2384	}
2385	#[derive(Clone, Debug, Deserialize, Serialize)]
2386	pub struct Fetchbip353Request {
2387	    pub address: String,
2388	}
2389
2390	impl From<Fetchbip353Request> for Request {
2391	    fn from(r: Fetchbip353Request) -> Self {
2392	        Request::FetchBip353(r)
2393	    }
2394	}
2395
2396	impl IntoRequest for Fetchbip353Request {
2397	    type Response = super::responses::Fetchbip353Response;
2398	}
2399
2400	impl TypedRequest for Fetchbip353Request {
2401	    type Response = super::responses::Fetchbip353Response;
2402
2403	    fn method(&self) -> &str {
2404	        "fetchbip353"
2405	    }
2406	}
2407	#[derive(Clone, Debug, Deserialize, Serialize)]
2408	pub struct FetchinvoiceRequest {
2409	    #[serde(skip_serializing_if = "Option::is_none")]
2410	    pub amount_msat: Option<Amount>,
2411	    #[serde(skip_serializing_if = "Option::is_none")]
2412	    pub bip353: Option<String>,
2413	    #[serde(skip_serializing_if = "Option::is_none")]
2414	    pub payer_metadata: Option<String>,
2415	    #[serde(skip_serializing_if = "Option::is_none")]
2416	    pub payer_note: Option<String>,
2417	    #[serde(skip_serializing_if = "Option::is_none")]
2418	    pub quantity: Option<u64>,
2419	    #[serde(skip_serializing_if = "Option::is_none")]
2420	    pub recurrence_counter: Option<u64>,
2421	    #[serde(skip_serializing_if = "Option::is_none")]
2422	    pub recurrence_label: Option<String>,
2423	    #[serde(skip_serializing_if = "Option::is_none")]
2424	    pub recurrence_start: Option<f64>,
2425	    #[serde(skip_serializing_if = "Option::is_none")]
2426	    pub timeout: Option<f64>,
2427	    pub offer: String,
2428	}
2429
2430	impl From<FetchinvoiceRequest> for Request {
2431	    fn from(r: FetchinvoiceRequest) -> Self {
2432	        Request::FetchInvoice(r)
2433	    }
2434	}
2435
2436	impl IntoRequest for FetchinvoiceRequest {
2437	    type Response = super::responses::FetchinvoiceResponse;
2438	}
2439
2440	impl TypedRequest for FetchinvoiceRequest {
2441	    type Response = super::responses::FetchinvoiceResponse;
2442
2443	    fn method(&self) -> &str {
2444	        "fetchinvoice"
2445	    }
2446	}
2447	#[derive(Clone, Debug, Deserialize, Serialize)]
2448	pub struct CancelrecurringinvoiceRequest {
2449	    #[serde(skip_serializing_if = "Option::is_none")]
2450	    pub bip353: Option<String>,
2451	    #[serde(skip_serializing_if = "Option::is_none")]
2452	    pub payer_note: Option<String>,
2453	    #[serde(skip_serializing_if = "Option::is_none")]
2454	    pub recurrence_start: Option<f64>,
2455	    pub offer: String,
2456	    pub recurrence_counter: u64,
2457	    pub recurrence_label: String,
2458	}
2459
2460	impl From<CancelrecurringinvoiceRequest> for Request {
2461	    fn from(r: CancelrecurringinvoiceRequest) -> Self {
2462	        Request::CancelRecurringInvoice(r)
2463	    }
2464	}
2465
2466	impl IntoRequest for CancelrecurringinvoiceRequest {
2467	    type Response = super::responses::CancelrecurringinvoiceResponse;
2468	}
2469
2470	impl TypedRequest for CancelrecurringinvoiceRequest {
2471	    type Response = super::responses::CancelrecurringinvoiceResponse;
2472
2473	    fn method(&self) -> &str {
2474	        "cancelrecurringinvoice"
2475	    }
2476	}
2477	#[derive(Clone, Debug, Deserialize, Serialize)]
2478	pub struct FundchannelCancelRequest {
2479	    pub id: PublicKey,
2480	}
2481
2482	impl From<FundchannelCancelRequest> for Request {
2483	    fn from(r: FundchannelCancelRequest) -> Self {
2484	        Request::FundChannelCancel(r)
2485	    }
2486	}
2487
2488	impl IntoRequest for FundchannelCancelRequest {
2489	    type Response = super::responses::FundchannelCancelResponse;
2490	}
2491
2492	impl TypedRequest for FundchannelCancelRequest {
2493	    type Response = super::responses::FundchannelCancelResponse;
2494
2495	    fn method(&self) -> &str {
2496	        "fundchannel_cancel"
2497	    }
2498	}
2499	#[derive(Clone, Debug, Deserialize, Serialize)]
2500	pub struct FundchannelCompleteRequest {
2501	    #[serde(skip_serializing_if = "Option::is_none")]
2502	    pub withhold: Option<bool>,
2503	    pub id: PublicKey,
2504	    pub psbt: String,
2505	}
2506
2507	impl From<FundchannelCompleteRequest> for Request {
2508	    fn from(r: FundchannelCompleteRequest) -> Self {
2509	        Request::FundChannelComplete(r)
2510	    }
2511	}
2512
2513	impl IntoRequest for FundchannelCompleteRequest {
2514	    type Response = super::responses::FundchannelCompleteResponse;
2515	}
2516
2517	impl TypedRequest for FundchannelCompleteRequest {
2518	    type Response = super::responses::FundchannelCompleteResponse;
2519
2520	    fn method(&self) -> &str {
2521	        "fundchannel_complete"
2522	    }
2523	}
2524	#[derive(Clone, Debug, Deserialize, Serialize)]
2525	pub struct FundchannelRequest {
2526	    #[serde(skip_serializing_if = "Option::is_none")]
2527	    pub announce: Option<bool>,
2528	    #[serde(skip_serializing_if = "Option::is_none")]
2529	    pub close_to: Option<String>,
2530	    #[serde(skip_serializing_if = "Option::is_none")]
2531	    pub compact_lease: Option<String>,
2532	    #[serde(skip_serializing_if = "Option::is_none")]
2533	    pub feerate: Option<Feerate>,
2534	    #[serde(skip_serializing_if = "Option::is_none")]
2535	    pub minconf: Option<u32>,
2536	    #[serde(skip_serializing_if = "Option::is_none")]
2537	    pub mindepth: Option<u32>,
2538	    #[serde(skip_serializing_if = "Option::is_none")]
2539	    pub push_msat: Option<Amount>,
2540	    #[serde(skip_serializing_if = "Option::is_none")]
2541	    pub request_amt: Option<Amount>,
2542	    #[serde(skip_serializing_if = "Option::is_none")]
2543	    pub reserve: Option<Amount>,
2544	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
2545	    pub channel_type: Option<Vec<u32>>,
2546	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
2547	    pub utxos: Option<Vec<Outpoint>>,
2548	    pub amount: AmountOrAll,
2549	    pub id: PublicKey,
2550	}
2551
2552	impl From<FundchannelRequest> for Request {
2553	    fn from(r: FundchannelRequest) -> Self {
2554	        Request::FundChannel(r)
2555	    }
2556	}
2557
2558	impl IntoRequest for FundchannelRequest {
2559	    type Response = super::responses::FundchannelResponse;
2560	}
2561
2562	impl TypedRequest for FundchannelRequest {
2563	    type Response = super::responses::FundchannelResponse;
2564
2565	    fn method(&self) -> &str {
2566	        "fundchannel"
2567	    }
2568	}
2569	#[derive(Clone, Debug, Deserialize, Serialize)]
2570	pub struct FundchannelStartRequest {
2571	    #[serde(skip_serializing_if = "Option::is_none")]
2572	    pub announce: Option<bool>,
2573	    #[serde(skip_serializing_if = "Option::is_none")]
2574	    pub close_to: Option<String>,
2575	    #[serde(skip_serializing_if = "Option::is_none")]
2576	    pub feerate: Option<Feerate>,
2577	    #[serde(skip_serializing_if = "Option::is_none")]
2578	    pub mindepth: Option<u32>,
2579	    #[serde(skip_serializing_if = "Option::is_none")]
2580	    pub push_msat: Option<Amount>,
2581	    #[serde(skip_serializing_if = "Option::is_none")]
2582	    pub reserve: Option<Amount>,
2583	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
2584	    pub channel_type: Option<Vec<u32>>,
2585	    pub amount: Amount,
2586	    pub id: PublicKey,
2587	}
2588
2589	impl From<FundchannelStartRequest> for Request {
2590	    fn from(r: FundchannelStartRequest) -> Self {
2591	        Request::FundChannelStart(r)
2592	    }
2593	}
2594
2595	impl IntoRequest for FundchannelStartRequest {
2596	    type Response = super::responses::FundchannelStartResponse;
2597	}
2598
2599	impl TypedRequest for FundchannelStartRequest {
2600	    type Response = super::responses::FundchannelStartResponse;
2601
2602	    fn method(&self) -> &str {
2603	        "fundchannel_start"
2604	    }
2605	}
2606	/// ['A string that represents the log level.']
2607	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
2608	#[allow(non_camel_case_types)]
2609	pub enum GetlogLevel {
2610	    #[serde(rename = "broken")]
2611	    BROKEN = 0,
2612	    #[serde(rename = "unusual")]
2613	    UNUSUAL = 1,
2614	    #[serde(rename = "info")]
2615	    INFO = 2,
2616	    #[serde(rename = "debug")]
2617	    DEBUG = 3,
2618	    #[serde(rename = "io")]
2619	    IO = 4,
2620	    #[serde(rename = "trace")]
2621	    TRACE = 5,
2622	}
2623
2624	impl TryFrom<i32> for GetlogLevel {
2625	    type Error = anyhow::Error;
2626	    fn try_from(c: i32) -> Result<GetlogLevel, anyhow::Error> {
2627	        match c {
2628	    0 => Ok(GetlogLevel::BROKEN),
2629	    1 => Ok(GetlogLevel::UNUSUAL),
2630	    2 => Ok(GetlogLevel::INFO),
2631	    3 => Ok(GetlogLevel::DEBUG),
2632	    4 => Ok(GetlogLevel::IO),
2633	    5 => Ok(GetlogLevel::TRACE),
2634	            o => Err(anyhow::anyhow!("Unknown variant {} for enum GetlogLevel", o)),
2635	        }
2636	    }
2637	}
2638
2639	impl ToString for GetlogLevel {
2640	    fn to_string(&self) -> String {
2641	        match self {
2642	            GetlogLevel::BROKEN => "BROKEN",
2643	            GetlogLevel::UNUSUAL => "UNUSUAL",
2644	            GetlogLevel::INFO => "INFO",
2645	            GetlogLevel::DEBUG => "DEBUG",
2646	            GetlogLevel::TRACE => "TRACE",
2647	            GetlogLevel::IO => "IO",
2648	        }.to_string()
2649	    }
2650	}
2651
2652	#[derive(Clone, Debug, Deserialize, Serialize)]
2653	pub struct GetlogRequest {
2654	    #[serde(skip_serializing_if = "Option::is_none")]
2655	    pub level: Option<GetlogLevel>,
2656	}
2657
2658	impl From<GetlogRequest> for Request {
2659	    fn from(r: GetlogRequest) -> Self {
2660	        Request::GetLog(r)
2661	    }
2662	}
2663
2664	impl IntoRequest for GetlogRequest {
2665	    type Response = super::responses::GetlogResponse;
2666	}
2667
2668	impl TypedRequest for GetlogRequest {
2669	    type Response = super::responses::GetlogResponse;
2670
2671	    fn method(&self) -> &str {
2672	        "getlog"
2673	    }
2674	}
2675	/// ['Funder plugin will use to decide how much capital to commit to a v2 open channel request.', 'There are three policy options, detailed below:', '    * `match` -- Contribute *policy_mod* percent of their requested funds. Valid *policy_mod* values are 0 to 200. If this is a channel lease request, we match based on their requested funds. If it is not a channel lease request (and *lease_only* is false), then we match their funding amount. Note: any lease match less than 100 will likely fail, as clients will not accept a lease less than their request.', '    * `available` -- Contribute *policy_mod* percent of our available node wallet funds. Valid *policy_mod* values are 0 to 100.', '    * `fixed` -- Contributes a fixed  *policy_mod* sats to v2 channel open requests.']
2676	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
2677	#[allow(non_camel_case_types)]
2678	pub enum FunderupdatePolicy {
2679	    #[serde(rename = "match")]
2680	    MATCH = 0,
2681	    #[serde(rename = "available")]
2682	    AVAILABLE = 1,
2683	    #[serde(rename = "fixed")]
2684	    FIXED = 2,
2685	}
2686
2687	impl TryFrom<i32> for FunderupdatePolicy {
2688	    type Error = anyhow::Error;
2689	    fn try_from(c: i32) -> Result<FunderupdatePolicy, anyhow::Error> {
2690	        match c {
2691	    0 => Ok(FunderupdatePolicy::MATCH),
2692	    1 => Ok(FunderupdatePolicy::AVAILABLE),
2693	    2 => Ok(FunderupdatePolicy::FIXED),
2694	            o => Err(anyhow::anyhow!("Unknown variant {} for enum FunderupdatePolicy", o)),
2695	        }
2696	    }
2697	}
2698
2699	impl ToString for FunderupdatePolicy {
2700	    fn to_string(&self) -> String {
2701	        match self {
2702	            FunderupdatePolicy::MATCH => "MATCH",
2703	            FunderupdatePolicy::AVAILABLE => "AVAILABLE",
2704	            FunderupdatePolicy::FIXED => "FIXED",
2705	        }.to_string()
2706	    }
2707	}
2708
2709	#[derive(Clone, Debug, Deserialize, Serialize)]
2710	pub struct FunderupdateRequest {
2711	    #[serde(skip_serializing_if = "Option::is_none")]
2712	    pub channel_fee_max_base_msat: Option<Amount>,
2713	    #[serde(skip_serializing_if = "Option::is_none")]
2714	    pub channel_fee_max_proportional_thousandths: Option<u32>,
2715	    #[serde(skip_serializing_if = "Option::is_none")]
2716	    pub compact_lease: Option<String>,
2717	    #[serde(skip_serializing_if = "Option::is_none")]
2718	    pub fund_probability: Option<u32>,
2719	    #[serde(skip_serializing_if = "Option::is_none")]
2720	    pub funding_weight: Option<u32>,
2721	    #[serde(skip_serializing_if = "Option::is_none")]
2722	    pub fuzz_percent: Option<u32>,
2723	    #[serde(skip_serializing_if = "Option::is_none")]
2724	    pub lease_fee_base_msat: Option<Amount>,
2725	    #[serde(skip_serializing_if = "Option::is_none")]
2726	    pub lease_fee_basis: Option<u32>,
2727	    #[serde(skip_serializing_if = "Option::is_none")]
2728	    pub leases_only: Option<bool>,
2729	    #[serde(skip_serializing_if = "Option::is_none")]
2730	    pub max_their_funding_msat: Option<Amount>,
2731	    #[serde(skip_serializing_if = "Option::is_none")]
2732	    pub min_their_funding_msat: Option<Amount>,
2733	    #[serde(skip_serializing_if = "Option::is_none")]
2734	    pub per_channel_max_msat: Option<Amount>,
2735	    #[serde(skip_serializing_if = "Option::is_none")]
2736	    pub per_channel_min_msat: Option<Amount>,
2737	    #[serde(skip_serializing_if = "Option::is_none")]
2738	    pub policy: Option<FunderupdatePolicy>,
2739	    #[serde(skip_serializing_if = "Option::is_none")]
2740	    pub policy_mod: Option<Amount>,
2741	    #[serde(skip_serializing_if = "Option::is_none")]
2742	    pub reserve_tank_msat: Option<Amount>,
2743	}
2744
2745	impl From<FunderupdateRequest> for Request {
2746	    fn from(r: FunderupdateRequest) -> Self {
2747	        Request::FunderUpdate(r)
2748	    }
2749	}
2750
2751	impl IntoRequest for FunderupdateRequest {
2752	    type Response = super::responses::FunderupdateResponse;
2753	}
2754
2755	impl TypedRequest for FunderupdateRequest {
2756	    type Response = super::responses::FunderupdateResponse;
2757
2758	    fn method(&self) -> &str {
2759	        "funderupdate"
2760	    }
2761	}
2762	#[deprecated = "deprecated since CLN v26.06"]
2763	#[derive(Clone, Debug, Deserialize, Serialize)]
2764	pub struct GetrouteRequest {
2765	    #[deprecated]
2766	    #[serde(skip_serializing_if = "Option::is_none")]
2767	    pub cltv: Option<u32>,
2768	    #[deprecated]
2769	    #[serde(skip_serializing_if = "Option::is_none")]
2770	    pub fromid: Option<PublicKey>,
2771	    #[deprecated]
2772	    #[serde(skip_serializing_if = "Option::is_none")]
2773	    pub fuzzpercent: Option<u32>,
2774	    #[deprecated]
2775	    #[serde(skip_serializing_if = "Option::is_none")]
2776	    pub maxhops: Option<u32>,
2777	    #[deprecated]
2778	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
2779	    pub exclude: Option<Vec<String>>,
2780	    #[deprecated]
2781	    pub amount_msat: Amount,
2782	    #[deprecated]
2783	    pub id: PublicKey,
2784	    #[deprecated]
2785	    pub riskfactor: u64,
2786	}
2787
2788	impl From<GetrouteRequest> for Request {
2789	    fn from(r: GetrouteRequest) -> Self {
2790	        Request::GetRoute(r)
2791	    }
2792	}
2793
2794	impl IntoRequest for GetrouteRequest {
2795	    type Response = super::responses::GetrouteResponse;
2796	}
2797
2798	impl TypedRequest for GetrouteRequest {
2799	    type Response = super::responses::GetrouteResponse;
2800
2801	    fn method(&self) -> &str {
2802	        "getroute"
2803	    }
2804	}
2805	#[derive(Clone, Debug, Deserialize, Serialize)]
2806	pub struct ListaddressesRequest {
2807	    #[serde(skip_serializing_if = "Option::is_none")]
2808	    pub address: Option<String>,
2809	    #[serde(skip_serializing_if = "Option::is_none")]
2810	    pub limit: Option<u32>,
2811	    #[serde(skip_serializing_if = "Option::is_none")]
2812	    pub start: Option<u64>,
2813	}
2814
2815	impl From<ListaddressesRequest> for Request {
2816	    fn from(r: ListaddressesRequest) -> Self {
2817	        Request::ListAddresses(r)
2818	    }
2819	}
2820
2821	impl IntoRequest for ListaddressesRequest {
2822	    type Response = super::responses::ListaddressesResponse;
2823	}
2824
2825	impl TypedRequest for ListaddressesRequest {
2826	    type Response = super::responses::ListaddressesResponse;
2827
2828	    fn method(&self) -> &str {
2829	        "listaddresses"
2830	    }
2831	}
2832	/// ['If neither *in_channel* nor *out_channel* is specified, it controls ordering.']
2833	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
2834	#[allow(non_camel_case_types)]
2835	pub enum ListforwardsIndex {
2836	    #[serde(rename = "created")]
2837	    CREATED = 0,
2838	    #[serde(rename = "updated")]
2839	    UPDATED = 1,
2840	}
2841
2842	impl TryFrom<i32> for ListforwardsIndex {
2843	    type Error = anyhow::Error;
2844	    fn try_from(c: i32) -> Result<ListforwardsIndex, anyhow::Error> {
2845	        match c {
2846	    0 => Ok(ListforwardsIndex::CREATED),
2847	    1 => Ok(ListforwardsIndex::UPDATED),
2848	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListforwardsIndex", o)),
2849	        }
2850	    }
2851	}
2852
2853	impl ToString for ListforwardsIndex {
2854	    fn to_string(&self) -> String {
2855	        match self {
2856	            ListforwardsIndex::CREATED => "CREATED",
2857	            ListforwardsIndex::UPDATED => "UPDATED",
2858	        }.to_string()
2859	    }
2860	}
2861
2862	/// ['If specified, then only the forwards with the given status are returned.']
2863	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
2864	#[allow(non_camel_case_types)]
2865	pub enum ListforwardsStatus {
2866	    #[serde(rename = "offered")]
2867	    OFFERED = 0,
2868	    #[serde(rename = "settled")]
2869	    SETTLED = 1,
2870	    #[serde(rename = "local_failed")]
2871	    LOCAL_FAILED = 2,
2872	    #[serde(rename = "failed")]
2873	    FAILED = 3,
2874	}
2875
2876	impl TryFrom<i32> for ListforwardsStatus {
2877	    type Error = anyhow::Error;
2878	    fn try_from(c: i32) -> Result<ListforwardsStatus, anyhow::Error> {
2879	        match c {
2880	    0 => Ok(ListforwardsStatus::OFFERED),
2881	    1 => Ok(ListforwardsStatus::SETTLED),
2882	    2 => Ok(ListforwardsStatus::LOCAL_FAILED),
2883	    3 => Ok(ListforwardsStatus::FAILED),
2884	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListforwardsStatus", o)),
2885	        }
2886	    }
2887	}
2888
2889	impl ToString for ListforwardsStatus {
2890	    fn to_string(&self) -> String {
2891	        match self {
2892	            ListforwardsStatus::OFFERED => "OFFERED",
2893	            ListforwardsStatus::SETTLED => "SETTLED",
2894	            ListforwardsStatus::LOCAL_FAILED => "LOCAL_FAILED",
2895	            ListforwardsStatus::FAILED => "FAILED",
2896	        }.to_string()
2897	    }
2898	}
2899
2900	#[derive(Clone, Debug, Deserialize, Serialize)]
2901	pub struct ListforwardsRequest {
2902	    #[serde(skip_serializing_if = "Option::is_none")]
2903	    pub in_channel: Option<ShortChannelId>,
2904	    #[serde(skip_serializing_if = "Option::is_none")]
2905	    pub index: Option<ListforwardsIndex>,
2906	    #[serde(skip_serializing_if = "Option::is_none")]
2907	    pub limit: Option<u32>,
2908	    #[serde(skip_serializing_if = "Option::is_none")]
2909	    pub out_channel: Option<ShortChannelId>,
2910	    #[serde(skip_serializing_if = "Option::is_none")]
2911	    pub start: Option<u64>,
2912	    #[serde(skip_serializing_if = "Option::is_none")]
2913	    pub status: Option<ListforwardsStatus>,
2914	}
2915
2916	impl From<ListforwardsRequest> for Request {
2917	    fn from(r: ListforwardsRequest) -> Self {
2918	        Request::ListForwards(r)
2919	    }
2920	}
2921
2922	impl IntoRequest for ListforwardsRequest {
2923	    type Response = super::responses::ListforwardsResponse;
2924	}
2925
2926	impl TypedRequest for ListforwardsRequest {
2927	    type Response = super::responses::ListforwardsResponse;
2928
2929	    fn method(&self) -> &str {
2930	        "listforwards"
2931	    }
2932	}
2933	#[derive(Clone, Debug, Deserialize, Serialize)]
2934	pub struct ListoffersRequest {
2935	    #[serde(skip_serializing_if = "Option::is_none")]
2936	    pub active_only: Option<bool>,
2937	    #[serde(skip_serializing_if = "Option::is_none")]
2938	    pub offer_id: Option<Sha256>,
2939	}
2940
2941	impl From<ListoffersRequest> for Request {
2942	    fn from(r: ListoffersRequest) -> Self {
2943	        Request::ListOffers(r)
2944	    }
2945	}
2946
2947	impl IntoRequest for ListoffersRequest {
2948	    type Response = super::responses::ListoffersResponse;
2949	}
2950
2951	impl TypedRequest for ListoffersRequest {
2952	    type Response = super::responses::ListoffersResponse;
2953
2954	    fn method(&self) -> &str {
2955	        "listoffers"
2956	    }
2957	}
2958	/// ['If neither *in_channel* nor *out_channel* is specified, it controls ordering, by `created` or `updated`.']
2959	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
2960	#[allow(non_camel_case_types)]
2961	pub enum ListpaysIndex {
2962	    #[serde(rename = "created")]
2963	    CREATED = 0,
2964	    #[serde(rename = "updated")]
2965	    UPDATED = 1,
2966	}
2967
2968	impl TryFrom<i32> for ListpaysIndex {
2969	    type Error = anyhow::Error;
2970	    fn try_from(c: i32) -> Result<ListpaysIndex, anyhow::Error> {
2971	        match c {
2972	    0 => Ok(ListpaysIndex::CREATED),
2973	    1 => Ok(ListpaysIndex::UPDATED),
2974	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListpaysIndex", o)),
2975	        }
2976	    }
2977	}
2978
2979	impl ToString for ListpaysIndex {
2980	    fn to_string(&self) -> String {
2981	        match self {
2982	            ListpaysIndex::CREATED => "CREATED",
2983	            ListpaysIndex::UPDATED => "UPDATED",
2984	        }.to_string()
2985	    }
2986	}
2987
2988	/// ['To filter the payment by status.']
2989	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
2990	#[allow(non_camel_case_types)]
2991	pub enum ListpaysStatus {
2992	    #[serde(rename = "pending")]
2993	    PENDING = 0,
2994	    #[serde(rename = "complete")]
2995	    COMPLETE = 1,
2996	    #[serde(rename = "failed")]
2997	    FAILED = 2,
2998	}
2999
3000	impl TryFrom<i32> for ListpaysStatus {
3001	    type Error = anyhow::Error;
3002	    fn try_from(c: i32) -> Result<ListpaysStatus, anyhow::Error> {
3003	        match c {
3004	    0 => Ok(ListpaysStatus::PENDING),
3005	    1 => Ok(ListpaysStatus::COMPLETE),
3006	    2 => Ok(ListpaysStatus::FAILED),
3007	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListpaysStatus", o)),
3008	        }
3009	    }
3010	}
3011
3012	impl ToString for ListpaysStatus {
3013	    fn to_string(&self) -> String {
3014	        match self {
3015	            ListpaysStatus::PENDING => "PENDING",
3016	            ListpaysStatus::COMPLETE => "COMPLETE",
3017	            ListpaysStatus::FAILED => "FAILED",
3018	        }.to_string()
3019	    }
3020	}
3021
3022	#[derive(Clone, Debug, Deserialize, Serialize)]
3023	pub struct ListpaysRequest {
3024	    #[serde(skip_serializing_if = "Option::is_none")]
3025	    pub bolt11: Option<String>,
3026	    #[serde(skip_serializing_if = "Option::is_none")]
3027	    pub index: Option<ListpaysIndex>,
3028	    #[serde(skip_serializing_if = "Option::is_none")]
3029	    pub limit: Option<u32>,
3030	    #[serde(skip_serializing_if = "Option::is_none")]
3031	    pub payment_hash: Option<Sha256>,
3032	    #[serde(skip_serializing_if = "Option::is_none")]
3033	    pub start: Option<u64>,
3034	    #[serde(skip_serializing_if = "Option::is_none")]
3035	    pub status: Option<ListpaysStatus>,
3036	}
3037
3038	impl From<ListpaysRequest> for Request {
3039	    fn from(r: ListpaysRequest) -> Self {
3040	        Request::ListPays(r)
3041	    }
3042	}
3043
3044	impl IntoRequest for ListpaysRequest {
3045	    type Response = super::responses::ListpaysResponse;
3046	}
3047
3048	impl TypedRequest for ListpaysRequest {
3049	    type Response = super::responses::ListpaysResponse;
3050
3051	    fn method(&self) -> &str {
3052	        "listpays"
3053	    }
3054	}
3055	/// ['This controls the ordering of results.']
3056	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
3057	#[allow(non_camel_case_types)]
3058	pub enum ListhtlcsIndex {
3059	    #[serde(rename = "created")]
3060	    CREATED = 0,
3061	    #[serde(rename = "updated")]
3062	    UPDATED = 1,
3063	}
3064
3065	impl TryFrom<i32> for ListhtlcsIndex {
3066	    type Error = anyhow::Error;
3067	    fn try_from(c: i32) -> Result<ListhtlcsIndex, anyhow::Error> {
3068	        match c {
3069	    0 => Ok(ListhtlcsIndex::CREATED),
3070	    1 => Ok(ListhtlcsIndex::UPDATED),
3071	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListhtlcsIndex", o)),
3072	        }
3073	    }
3074	}
3075
3076	impl ToString for ListhtlcsIndex {
3077	    fn to_string(&self) -> String {
3078	        match self {
3079	            ListhtlcsIndex::CREATED => "CREATED",
3080	            ListhtlcsIndex::UPDATED => "UPDATED",
3081	        }.to_string()
3082	    }
3083	}
3084
3085	#[derive(Clone, Debug, Deserialize, Serialize)]
3086	pub struct ListhtlcsRequest {
3087	    #[serde(skip_serializing_if = "Option::is_none")]
3088	    pub id: Option<String>,
3089	    #[serde(skip_serializing_if = "Option::is_none")]
3090	    pub index: Option<ListhtlcsIndex>,
3091	    #[serde(skip_serializing_if = "Option::is_none")]
3092	    pub limit: Option<u32>,
3093	    #[serde(skip_serializing_if = "Option::is_none")]
3094	    pub start: Option<u64>,
3095	}
3096
3097	impl From<ListhtlcsRequest> for Request {
3098	    fn from(r: ListhtlcsRequest) -> Self {
3099	        Request::ListHtlcs(r)
3100	    }
3101	}
3102
3103	impl IntoRequest for ListhtlcsRequest {
3104	    type Response = super::responses::ListhtlcsResponse;
3105	}
3106
3107	impl TypedRequest for ListhtlcsRequest {
3108	    type Response = super::responses::ListhtlcsResponse;
3109
3110	    fn method(&self) -> &str {
3111	        "listhtlcs"
3112	    }
3113	}
3114	#[derive(Clone, Debug, Deserialize, Serialize)]
3115	pub struct MultifundchannelDestinations {
3116	    #[serde(skip_serializing_if = "Option::is_none")]
3117	    pub announce: Option<bool>,
3118	    #[serde(skip_serializing_if = "Option::is_none")]
3119	    pub close_to: Option<String>,
3120	    #[serde(skip_serializing_if = "Option::is_none")]
3121	    pub compact_lease: Option<String>,
3122	    #[serde(skip_serializing_if = "Option::is_none")]
3123	    pub mindepth: Option<u32>,
3124	    #[serde(skip_serializing_if = "Option::is_none")]
3125	    pub push_msat: Option<Amount>,
3126	    #[serde(skip_serializing_if = "Option::is_none")]
3127	    pub request_amt: Option<Amount>,
3128	    #[serde(skip_serializing_if = "Option::is_none")]
3129	    pub reserve: Option<Amount>,
3130	    pub amount: AmountOrAll,
3131	    pub id: String,
3132	}
3133
3134	#[derive(Clone, Debug, Deserialize, Serialize)]
3135	pub struct MultifundchannelRequest {
3136	    #[serde(skip_serializing_if = "Option::is_none")]
3137	    pub commitment_feerate: Option<Feerate>,
3138	    #[serde(skip_serializing_if = "Option::is_none")]
3139	    pub feerate: Option<Feerate>,
3140	    #[serde(skip_serializing_if = "Option::is_none")]
3141	    pub minchannels: Option<i64>,
3142	    #[serde(skip_serializing_if = "Option::is_none")]
3143	    pub minconf: Option<i64>,
3144	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
3145	    pub utxos: Option<Vec<Outpoint>>,
3146	    pub destinations: Vec<MultifundchannelDestinations>,
3147	}
3148
3149	impl From<MultifundchannelRequest> for Request {
3150	    fn from(r: MultifundchannelRequest) -> Self {
3151	        Request::MultiFundChannel(r)
3152	    }
3153	}
3154
3155	impl IntoRequest for MultifundchannelRequest {
3156	    type Response = super::responses::MultifundchannelResponse;
3157	}
3158
3159	impl TypedRequest for MultifundchannelRequest {
3160	    type Response = super::responses::MultifundchannelResponse;
3161
3162	    fn method(&self) -> &str {
3163	        "multifundchannel"
3164	    }
3165	}
3166	#[derive(Clone, Debug, Deserialize, Serialize)]
3167	pub struct MultiwithdrawRequest {
3168	    #[serde(skip_serializing_if = "Option::is_none")]
3169	    pub feerate: Option<Feerate>,
3170	    #[serde(skip_serializing_if = "Option::is_none")]
3171	    pub minconf: Option<u32>,
3172	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
3173	    pub utxos: Option<Vec<Outpoint>>,
3174	    pub outputs: Vec<OutputDesc>,
3175	}
3176
3177	impl From<MultiwithdrawRequest> for Request {
3178	    fn from(r: MultiwithdrawRequest) -> Self {
3179	        Request::MultiWithdraw(r)
3180	    }
3181	}
3182
3183	impl IntoRequest for MultiwithdrawRequest {
3184	    type Response = super::responses::MultiwithdrawResponse;
3185	}
3186
3187	impl TypedRequest for MultiwithdrawRequest {
3188	    type Response = super::responses::MultiwithdrawResponse;
3189
3190	    fn method(&self) -> &str {
3191	        "multiwithdraw"
3192	    }
3193	}
3194	#[derive(Clone, Debug, Deserialize, Serialize)]
3195	pub struct OfferRequest {
3196	    #[serde(skip_serializing_if = "Option::is_none")]
3197	    pub absolute_expiry: Option<u64>,
3198	    #[serde(skip_serializing_if = "Option::is_none")]
3199	    pub description: Option<String>,
3200	    #[serde(skip_serializing_if = "Option::is_none")]
3201	    pub issuer: Option<String>,
3202	    #[serde(skip_serializing_if = "Option::is_none")]
3203	    pub label: Option<String>,
3204	    #[serde(skip_serializing_if = "Option::is_none")]
3205	    pub optional_recurrence: Option<bool>,
3206	    #[serde(skip_serializing_if = "Option::is_none")]
3207	    pub proportional_amount: Option<bool>,
3208	    #[serde(skip_serializing_if = "Option::is_none")]
3209	    pub quantity_max: Option<u64>,
3210	    #[serde(skip_serializing_if = "Option::is_none")]
3211	    pub recurrence: Option<String>,
3212	    #[serde(skip_serializing_if = "Option::is_none")]
3213	    pub recurrence_base: Option<String>,
3214	    #[serde(skip_serializing_if = "Option::is_none")]
3215	    pub recurrence_limit: Option<u32>,
3216	    #[serde(skip_serializing_if = "Option::is_none")]
3217	    pub recurrence_paywindow: Option<String>,
3218	    #[serde(skip_serializing_if = "Option::is_none")]
3219	    pub single_use: Option<bool>,
3220	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
3221	    pub fronting_nodes: Option<Vec<PublicKey>>,
3222	    pub amount: String,
3223	}
3224
3225	impl From<OfferRequest> for Request {
3226	    fn from(r: OfferRequest) -> Self {
3227	        Request::Offer(r)
3228	    }
3229	}
3230
3231	impl IntoRequest for OfferRequest {
3232	    type Response = super::responses::OfferResponse;
3233	}
3234
3235	impl TypedRequest for OfferRequest {
3236	    type Response = super::responses::OfferResponse;
3237
3238	    fn method(&self) -> &str {
3239	        "offer"
3240	    }
3241	}
3242	#[derive(Clone, Debug, Deserialize, Serialize)]
3243	pub struct OpenchannelAbortRequest {
3244	    pub channel_id: Sha256,
3245	}
3246
3247	impl From<OpenchannelAbortRequest> for Request {
3248	    fn from(r: OpenchannelAbortRequest) -> Self {
3249	        Request::OpenChannelAbort(r)
3250	    }
3251	}
3252
3253	impl IntoRequest for OpenchannelAbortRequest {
3254	    type Response = super::responses::OpenchannelAbortResponse;
3255	}
3256
3257	impl TypedRequest for OpenchannelAbortRequest {
3258	    type Response = super::responses::OpenchannelAbortResponse;
3259
3260	    fn method(&self) -> &str {
3261	        "openchannel_abort"
3262	    }
3263	}
3264	#[derive(Clone, Debug, Deserialize, Serialize)]
3265	pub struct OpenchannelBumpRequest {
3266	    #[serde(skip_serializing_if = "Option::is_none")]
3267	    pub funding_feerate: Option<Feerate>,
3268	    pub amount: Amount,
3269	    pub channel_id: Sha256,
3270	    pub initialpsbt: String,
3271	}
3272
3273	impl From<OpenchannelBumpRequest> for Request {
3274	    fn from(r: OpenchannelBumpRequest) -> Self {
3275	        Request::OpenChannelBump(r)
3276	    }
3277	}
3278
3279	impl IntoRequest for OpenchannelBumpRequest {
3280	    type Response = super::responses::OpenchannelBumpResponse;
3281	}
3282
3283	impl TypedRequest for OpenchannelBumpRequest {
3284	    type Response = super::responses::OpenchannelBumpResponse;
3285
3286	    fn method(&self) -> &str {
3287	        "openchannel_bump"
3288	    }
3289	}
3290	#[derive(Clone, Debug, Deserialize, Serialize)]
3291	pub struct OpenchannelInitRequest {
3292	    #[serde(skip_serializing_if = "Option::is_none")]
3293	    pub announce: Option<bool>,
3294	    #[serde(skip_serializing_if = "Option::is_none")]
3295	    pub close_to: Option<String>,
3296	    #[serde(skip_serializing_if = "Option::is_none")]
3297	    pub commitment_feerate: Option<Feerate>,
3298	    #[serde(skip_serializing_if = "Option::is_none")]
3299	    pub compact_lease: Option<String>,
3300	    #[serde(skip_serializing_if = "Option::is_none")]
3301	    pub funding_feerate: Option<Feerate>,
3302	    #[serde(skip_serializing_if = "Option::is_none")]
3303	    pub request_amt: Option<Amount>,
3304	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
3305	    pub channel_type: Option<Vec<u32>>,
3306	    pub amount: Amount,
3307	    pub id: PublicKey,
3308	    pub initialpsbt: String,
3309	}
3310
3311	impl From<OpenchannelInitRequest> for Request {
3312	    fn from(r: OpenchannelInitRequest) -> Self {
3313	        Request::OpenChannelInit(r)
3314	    }
3315	}
3316
3317	impl IntoRequest for OpenchannelInitRequest {
3318	    type Response = super::responses::OpenchannelInitResponse;
3319	}
3320
3321	impl TypedRequest for OpenchannelInitRequest {
3322	    type Response = super::responses::OpenchannelInitResponse;
3323
3324	    fn method(&self) -> &str {
3325	        "openchannel_init"
3326	    }
3327	}
3328	#[derive(Clone, Debug, Deserialize, Serialize)]
3329	pub struct OpenchannelSignedRequest {
3330	    pub channel_id: Sha256,
3331	    pub signed_psbt: String,
3332	}
3333
3334	impl From<OpenchannelSignedRequest> for Request {
3335	    fn from(r: OpenchannelSignedRequest) -> Self {
3336	        Request::OpenChannelSigned(r)
3337	    }
3338	}
3339
3340	impl IntoRequest for OpenchannelSignedRequest {
3341	    type Response = super::responses::OpenchannelSignedResponse;
3342	}
3343
3344	impl TypedRequest for OpenchannelSignedRequest {
3345	    type Response = super::responses::OpenchannelSignedResponse;
3346
3347	    fn method(&self) -> &str {
3348	        "openchannel_signed"
3349	    }
3350	}
3351	#[derive(Clone, Debug, Deserialize, Serialize)]
3352	pub struct OpenchannelUpdateRequest {
3353	    pub channel_id: Sha256,
3354	    pub psbt: String,
3355	}
3356
3357	impl From<OpenchannelUpdateRequest> for Request {
3358	    fn from(r: OpenchannelUpdateRequest) -> Self {
3359	        Request::OpenChannelUpdate(r)
3360	    }
3361	}
3362
3363	impl IntoRequest for OpenchannelUpdateRequest {
3364	    type Response = super::responses::OpenchannelUpdateResponse;
3365	}
3366
3367	impl TypedRequest for OpenchannelUpdateRequest {
3368	    type Response = super::responses::OpenchannelUpdateResponse;
3369
3370	    fn method(&self) -> &str {
3371	        "openchannel_update"
3372	    }
3373	}
3374	#[derive(Clone, Debug, Deserialize, Serialize)]
3375	pub struct PingRequest {
3376	    #[serde(skip_serializing_if = "Option::is_none")]
3377	    pub len: Option<u16>,
3378	    #[serde(skip_serializing_if = "Option::is_none")]
3379	    pub pongbytes: Option<u16>,
3380	    pub id: PublicKey,
3381	}
3382
3383	impl From<PingRequest> for Request {
3384	    fn from(r: PingRequest) -> Self {
3385	        Request::Ping(r)
3386	    }
3387	}
3388
3389	impl IntoRequest for PingRequest {
3390	    type Response = super::responses::PingResponse;
3391	}
3392
3393	impl TypedRequest for PingRequest {
3394	    type Response = super::responses::PingResponse;
3395
3396	    fn method(&self) -> &str {
3397	        "ping"
3398	    }
3399	}
3400	#[derive(Clone, Debug, Deserialize, Serialize)]
3401	pub struct PluginRequest {
3402	    #[serde(skip_serializing_if = "Option::is_none")]
3403	    pub directory: Option<String>,
3404	    #[serde(skip_serializing_if = "Option::is_none")]
3405	    pub plugin: Option<String>,
3406	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
3407	    pub options: Option<Vec<String>>,
3408	    // Path `Plugin.subcommand`
3409	    pub subcommand: PluginSubcommand,
3410	}
3411
3412	impl From<PluginRequest> for Request {
3413	    fn from(r: PluginRequest) -> Self {
3414	        Request::Plugin(r)
3415	    }
3416	}
3417
3418	impl IntoRequest for PluginRequest {
3419	    type Response = super::responses::PluginResponse;
3420	}
3421
3422	impl TypedRequest for PluginRequest {
3423	    type Response = super::responses::PluginResponse;
3424
3425	    fn method(&self) -> &str {
3426	        "plugin"
3427	    }
3428	}
3429	#[deprecated = "deprecated since CLN v26.06"]
3430	#[derive(Clone, Debug, Deserialize, Serialize)]
3431	pub struct RenepaystatusRequest {
3432	    #[deprecated]
3433	    #[serde(skip_serializing_if = "Option::is_none")]
3434	    pub invstring: Option<String>,
3435	}
3436
3437	impl From<RenepaystatusRequest> for Request {
3438	    fn from(r: RenepaystatusRequest) -> Self {
3439	        Request::RenePayStatus(r)
3440	    }
3441	}
3442
3443	impl IntoRequest for RenepaystatusRequest {
3444	    type Response = super::responses::RenepaystatusResponse;
3445	}
3446
3447	impl TypedRequest for RenepaystatusRequest {
3448	    type Response = super::responses::RenepaystatusResponse;
3449
3450	    fn method(&self) -> &str {
3451	        "renepaystatus"
3452	    }
3453	}
3454	#[deprecated = "deprecated since CLN v26.06"]
3455	#[derive(Clone, Debug, Deserialize, Serialize)]
3456	pub struct RenepayRequest {
3457	    #[deprecated]
3458	    #[serde(skip_serializing_if = "Option::is_none")]
3459	    pub amount_msat: Option<Amount>,
3460	    #[deprecated]
3461	    #[serde(skip_serializing_if = "Option::is_none")]
3462	    pub description: Option<String>,
3463	    #[deprecated]
3464	    #[serde(skip_serializing_if = "Option::is_none")]
3465	    pub dev_use_shadow: Option<bool>,
3466	    #[deprecated]
3467	    #[serde(skip_serializing_if = "Option::is_none")]
3468	    pub label: Option<String>,
3469	    #[deprecated]
3470	    #[serde(skip_serializing_if = "Option::is_none")]
3471	    pub maxdelay: Option<u32>,
3472	    #[deprecated]
3473	    #[serde(skip_serializing_if = "Option::is_none")]
3474	    pub maxfee: Option<Amount>,
3475	    #[deprecated]
3476	    #[serde(skip_serializing_if = "Option::is_none")]
3477	    pub retry_for: Option<u32>,
3478	    #[deprecated]
3479	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
3480	    pub exclude: Option<Vec<String>>,
3481	    #[deprecated]
3482	    pub invstring: String,
3483	}
3484
3485	impl From<RenepayRequest> for Request {
3486	    fn from(r: RenepayRequest) -> Self {
3487	        Request::RenePay(r)
3488	    }
3489	}
3490
3491	impl IntoRequest for RenepayRequest {
3492	    type Response = super::responses::RenepayResponse;
3493	}
3494
3495	impl TypedRequest for RenepayRequest {
3496	    type Response = super::responses::RenepayResponse;
3497
3498	    fn method(&self) -> &str {
3499	        "renepay"
3500	    }
3501	}
3502	#[derive(Clone, Debug, Deserialize, Serialize)]
3503	pub struct ReserveinputsRequest {
3504	    #[serde(skip_serializing_if = "Option::is_none")]
3505	    pub exclusive: Option<bool>,
3506	    #[serde(skip_serializing_if = "Option::is_none")]
3507	    pub reserve: Option<u32>,
3508	    pub psbt: String,
3509	}
3510
3511	impl From<ReserveinputsRequest> for Request {
3512	    fn from(r: ReserveinputsRequest) -> Self {
3513	        Request::ReserveInputs(r)
3514	    }
3515	}
3516
3517	impl IntoRequest for ReserveinputsRequest {
3518	    type Response = super::responses::ReserveinputsResponse;
3519	}
3520
3521	impl TypedRequest for ReserveinputsRequest {
3522	    type Response = super::responses::ReserveinputsResponse;
3523
3524	    fn method(&self) -> &str {
3525	        "reserveinputs"
3526	    }
3527	}
3528	#[derive(Clone, Debug, Deserialize, Serialize)]
3529	pub struct SendcustommsgRequest {
3530	    pub msg: String,
3531	    pub node_id: PublicKey,
3532	}
3533
3534	impl From<SendcustommsgRequest> for Request {
3535	    fn from(r: SendcustommsgRequest) -> Self {
3536	        Request::SendCustomMsg(r)
3537	    }
3538	}
3539
3540	impl IntoRequest for SendcustommsgRequest {
3541	    type Response = super::responses::SendcustommsgResponse;
3542	}
3543
3544	impl TypedRequest for SendcustommsgRequest {
3545	    type Response = super::responses::SendcustommsgResponse;
3546
3547	    fn method(&self) -> &str {
3548	        "sendcustommsg"
3549	    }
3550	}
3551	#[derive(Clone, Debug, Deserialize, Serialize)]
3552	pub struct SendinvoiceRequest {
3553	    #[serde(skip_serializing_if = "Option::is_none")]
3554	    pub amount_msat: Option<Amount>,
3555	    #[serde(skip_serializing_if = "Option::is_none")]
3556	    pub quantity: Option<u64>,
3557	    #[serde(skip_serializing_if = "Option::is_none")]
3558	    pub timeout: Option<u32>,
3559	    pub invreq: String,
3560	    pub label: String,
3561	}
3562
3563	impl From<SendinvoiceRequest> for Request {
3564	    fn from(r: SendinvoiceRequest) -> Self {
3565	        Request::SendInvoice(r)
3566	    }
3567	}
3568
3569	impl IntoRequest for SendinvoiceRequest {
3570	    type Response = super::responses::SendinvoiceResponse;
3571	}
3572
3573	impl TypedRequest for SendinvoiceRequest {
3574	    type Response = super::responses::SendinvoiceResponse;
3575
3576	    fn method(&self) -> &str {
3577	        "sendinvoice"
3578	    }
3579	}
3580	#[derive(Clone, Debug, Deserialize, Serialize)]
3581	pub struct SetchannelRequest {
3582	    #[serde(skip_serializing_if = "Option::is_none")]
3583	    pub enforcedelay: Option<u32>,
3584	    #[serde(skip_serializing_if = "Option::is_none")]
3585	    pub feebase: Option<Amount>,
3586	    #[serde(skip_serializing_if = "Option::is_none")]
3587	    pub feeppm: Option<u32>,
3588	    #[serde(skip_serializing_if = "Option::is_none")]
3589	    pub htlcmax: Option<Amount>,
3590	    #[serde(skip_serializing_if = "Option::is_none")]
3591	    pub htlcmin: Option<Amount>,
3592	    #[serde(skip_serializing_if = "Option::is_none")]
3593	    pub ignorefeelimits: Option<bool>,
3594	    pub id: String,
3595	}
3596
3597	impl From<SetchannelRequest> for Request {
3598	    fn from(r: SetchannelRequest) -> Self {
3599	        Request::SetChannel(r)
3600	    }
3601	}
3602
3603	impl IntoRequest for SetchannelRequest {
3604	    type Response = super::responses::SetchannelResponse;
3605	}
3606
3607	impl TypedRequest for SetchannelRequest {
3608	    type Response = super::responses::SetchannelResponse;
3609
3610	    fn method(&self) -> &str {
3611	        "setchannel"
3612	    }
3613	}
3614	#[derive(Clone, Debug, Deserialize, Serialize)]
3615	pub struct SetconfigRequest {
3616	    #[serde(skip_serializing_if = "Option::is_none")]
3617	    pub transient: Option<bool>,
3618	    #[serde(skip_serializing_if = "Option::is_none")]
3619	    pub val: Option<String>,
3620	    pub config: String,
3621	}
3622
3623	impl From<SetconfigRequest> for Request {
3624	    fn from(r: SetconfigRequest) -> Self {
3625	        Request::SetConfig(r)
3626	    }
3627	}
3628
3629	impl IntoRequest for SetconfigRequest {
3630	    type Response = super::responses::SetconfigResponse;
3631	}
3632
3633	impl TypedRequest for SetconfigRequest {
3634	    type Response = super::responses::SetconfigResponse;
3635
3636	    fn method(&self) -> &str {
3637	        "setconfig"
3638	    }
3639	}
3640	#[derive(Clone, Debug, Deserialize, Serialize)]
3641	pub struct SetpsbtversionRequest {
3642	    pub psbt: String,
3643	    pub version: u32,
3644	}
3645
3646	impl From<SetpsbtversionRequest> for Request {
3647	    fn from(r: SetpsbtversionRequest) -> Self {
3648	        Request::SetPsbtVersion(r)
3649	    }
3650	}
3651
3652	impl IntoRequest for SetpsbtversionRequest {
3653	    type Response = super::responses::SetpsbtversionResponse;
3654	}
3655
3656	impl TypedRequest for SetpsbtversionRequest {
3657	    type Response = super::responses::SetpsbtversionResponse;
3658
3659	    fn method(&self) -> &str {
3660	        "setpsbtversion"
3661	    }
3662	}
3663	#[derive(Clone, Debug, Deserialize, Serialize)]
3664	pub struct SigninvoiceRequest {
3665	    pub invstring: String,
3666	}
3667
3668	impl From<SigninvoiceRequest> for Request {
3669	    fn from(r: SigninvoiceRequest) -> Self {
3670	        Request::SignInvoice(r)
3671	    }
3672	}
3673
3674	impl IntoRequest for SigninvoiceRequest {
3675	    type Response = super::responses::SigninvoiceResponse;
3676	}
3677
3678	impl TypedRequest for SigninvoiceRequest {
3679	    type Response = super::responses::SigninvoiceResponse;
3680
3681	    fn method(&self) -> &str {
3682	        "signinvoice"
3683	    }
3684	}
3685	#[derive(Clone, Debug, Deserialize, Serialize)]
3686	pub struct SignmessageRequest {
3687	    pub message: String,
3688	}
3689
3690	impl From<SignmessageRequest> for Request {
3691	    fn from(r: SignmessageRequest) -> Self {
3692	        Request::SignMessage(r)
3693	    }
3694	}
3695
3696	impl IntoRequest for SignmessageRequest {
3697	    type Response = super::responses::SignmessageResponse;
3698	}
3699
3700	impl TypedRequest for SignmessageRequest {
3701	    type Response = super::responses::SignmessageResponse;
3702
3703	    fn method(&self) -> &str {
3704	        "signmessage"
3705	    }
3706	}
3707	#[derive(Clone, Debug, Deserialize, Serialize)]
3708	pub struct SpliceInitRequest {
3709	    #[serde(skip_serializing_if = "Option::is_none")]
3710	    pub feerate_per_kw: Option<u32>,
3711	    #[serde(skip_serializing_if = "Option::is_none")]
3712	    pub force_feerate: Option<bool>,
3713	    #[serde(skip_serializing_if = "Option::is_none")]
3714	    pub initialpsbt: Option<String>,
3715	    pub channel_id: Sha256,
3716	    pub relative_amount: i64,
3717	}
3718
3719	impl From<SpliceInitRequest> for Request {
3720	    fn from(r: SpliceInitRequest) -> Self {
3721	        Request::SpliceInit(r)
3722	    }
3723	}
3724
3725	impl IntoRequest for SpliceInitRequest {
3726	    type Response = super::responses::SpliceInitResponse;
3727	}
3728
3729	impl TypedRequest for SpliceInitRequest {
3730	    type Response = super::responses::SpliceInitResponse;
3731
3732	    fn method(&self) -> &str {
3733	        "splice_init"
3734	    }
3735	}
3736	#[derive(Clone, Debug, Deserialize, Serialize)]
3737	pub struct SpliceSignedRequest {
3738	    #[serde(skip_serializing_if = "Option::is_none")]
3739	    pub sign_first: Option<bool>,
3740	    pub channel_id: Sha256,
3741	    pub psbt: String,
3742	}
3743
3744	impl From<SpliceSignedRequest> for Request {
3745	    fn from(r: SpliceSignedRequest) -> Self {
3746	        Request::SpliceSigned(r)
3747	    }
3748	}
3749
3750	impl IntoRequest for SpliceSignedRequest {
3751	    type Response = super::responses::SpliceSignedResponse;
3752	}
3753
3754	impl TypedRequest for SpliceSignedRequest {
3755	    type Response = super::responses::SpliceSignedResponse;
3756
3757	    fn method(&self) -> &str {
3758	        "splice_signed"
3759	    }
3760	}
3761	#[derive(Clone, Debug, Deserialize, Serialize)]
3762	pub struct SpliceUpdateRequest {
3763	    pub channel_id: Sha256,
3764	    pub psbt: String,
3765	}
3766
3767	impl From<SpliceUpdateRequest> for Request {
3768	    fn from(r: SpliceUpdateRequest) -> Self {
3769	        Request::SpliceUpdate(r)
3770	    }
3771	}
3772
3773	impl IntoRequest for SpliceUpdateRequest {
3774	    type Response = super::responses::SpliceUpdateResponse;
3775	}
3776
3777	impl TypedRequest for SpliceUpdateRequest {
3778	    type Response = super::responses::SpliceUpdateResponse;
3779
3780	    fn method(&self) -> &str {
3781	        "splice_update"
3782	    }
3783	}
3784	#[derive(Clone, Debug, Deserialize, Serialize)]
3785	pub struct SpliceinRequest {
3786	    pub amount: String,
3787	    pub channel: String,
3788	}
3789
3790	impl From<SpliceinRequest> for Request {
3791	    fn from(r: SpliceinRequest) -> Self {
3792	        Request::SpliceIn(r)
3793	    }
3794	}
3795
3796	impl IntoRequest for SpliceinRequest {
3797	    type Response = super::responses::SpliceinResponse;
3798	}
3799
3800	impl TypedRequest for SpliceinRequest {
3801	    type Response = super::responses::SpliceinResponse;
3802
3803	    fn method(&self) -> &str {
3804	        "splicein"
3805	    }
3806	}
3807	#[derive(Clone, Debug, Deserialize, Serialize)]
3808	pub struct SpliceoutRequest {
3809	    #[serde(skip_serializing_if = "Option::is_none")]
3810	    pub destination: Option<String>,
3811	    #[serde(skip_serializing_if = "Option::is_none")]
3812	    pub force_feerate: Option<bool>,
3813	    pub amount: String,
3814	    pub channel: String,
3815	}
3816
3817	impl From<SpliceoutRequest> for Request {
3818	    fn from(r: SpliceoutRequest) -> Self {
3819	        Request::SpliceOut(r)
3820	    }
3821	}
3822
3823	impl IntoRequest for SpliceoutRequest {
3824	    type Response = super::responses::SpliceoutResponse;
3825	}
3826
3827	impl TypedRequest for SpliceoutRequest {
3828	    type Response = super::responses::SpliceoutResponse;
3829
3830	    fn method(&self) -> &str {
3831	        "spliceout"
3832	    }
3833	}
3834	#[derive(Clone, Debug, Deserialize, Serialize)]
3835	pub struct DevspliceRequest {
3836	    #[serde(rename = "dev-wetrun")]
3837	    #[serde(skip_serializing_if = "Option::is_none")]
3838	    pub dev_wetrun: Option<bool>,
3839	    #[serde(skip_serializing_if = "Option::is_none")]
3840	    pub debug_log: Option<bool>,
3841	    #[serde(skip_serializing_if = "Option::is_none")]
3842	    pub dryrun: Option<bool>,
3843	    #[serde(skip_serializing_if = "Option::is_none")]
3844	    pub force_feerate: Option<bool>,
3845	    pub script_or_json: String,
3846	}
3847
3848	impl From<DevspliceRequest> for Request {
3849	    fn from(r: DevspliceRequest) -> Self {
3850	        Request::DevSplice(r)
3851	    }
3852	}
3853
3854	impl IntoRequest for DevspliceRequest {
3855	    type Response = super::responses::DevspliceResponse;
3856	}
3857
3858	impl TypedRequest for DevspliceRequest {
3859	    type Response = super::responses::DevspliceResponse;
3860
3861	    fn method(&self) -> &str {
3862	        "dev-splice"
3863	    }
3864	}
3865	#[derive(Clone, Debug, Deserialize, Serialize)]
3866	pub struct UnreserveinputsRequest {
3867	    #[serde(skip_serializing_if = "Option::is_none")]
3868	    pub reserve: Option<u32>,
3869	    pub psbt: String,
3870	}
3871
3872	impl From<UnreserveinputsRequest> for Request {
3873	    fn from(r: UnreserveinputsRequest) -> Self {
3874	        Request::UnreserveInputs(r)
3875	    }
3876	}
3877
3878	impl IntoRequest for UnreserveinputsRequest {
3879	    type Response = super::responses::UnreserveinputsResponse;
3880	}
3881
3882	impl TypedRequest for UnreserveinputsRequest {
3883	    type Response = super::responses::UnreserveinputsResponse;
3884
3885	    fn method(&self) -> &str {
3886	        "unreserveinputs"
3887	    }
3888	}
3889	#[derive(Clone, Debug, Deserialize, Serialize)]
3890	pub struct UpgradewalletRequest {
3891	    #[serde(skip_serializing_if = "Option::is_none")]
3892	    pub feerate: Option<Feerate>,
3893	    #[serde(skip_serializing_if = "Option::is_none")]
3894	    pub reservedok: Option<bool>,
3895	}
3896
3897	impl From<UpgradewalletRequest> for Request {
3898	    fn from(r: UpgradewalletRequest) -> Self {
3899	        Request::UpgradeWallet(r)
3900	    }
3901	}
3902
3903	impl IntoRequest for UpgradewalletRequest {
3904	    type Response = super::responses::UpgradewalletResponse;
3905	}
3906
3907	impl TypedRequest for UpgradewalletRequest {
3908	    type Response = super::responses::UpgradewalletResponse;
3909
3910	    fn method(&self) -> &str {
3911	        "upgradewallet"
3912	    }
3913	}
3914	#[derive(Clone, Debug, Deserialize, Serialize)]
3915	pub struct WaitblockheightRequest {
3916	    #[serde(skip_serializing_if = "Option::is_none")]
3917	    pub timeout: Option<u32>,
3918	    pub blockheight: u32,
3919	}
3920
3921	impl From<WaitblockheightRequest> for Request {
3922	    fn from(r: WaitblockheightRequest) -> Self {
3923	        Request::WaitBlockHeight(r)
3924	    }
3925	}
3926
3927	impl IntoRequest for WaitblockheightRequest {
3928	    type Response = super::responses::WaitblockheightResponse;
3929	}
3930
3931	impl TypedRequest for WaitblockheightRequest {
3932	    type Response = super::responses::WaitblockheightResponse;
3933
3934	    fn method(&self) -> &str {
3935	        "waitblockheight"
3936	    }
3937	}
3938	/// ['The name of the index to get the next value for.', '  `created` is incremented by one for every new object.', '  `updated` is incremented by one every time an object is changed.', '  `deleted` is incremented by one every time an object is deleted.']
3939	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
3940	#[allow(non_camel_case_types)]
3941	pub enum WaitIndexname {
3942	    #[serde(rename = "created")]
3943	    CREATED = 0,
3944	    #[serde(rename = "updated")]
3945	    UPDATED = 1,
3946	    #[serde(rename = "deleted")]
3947	    DELETED = 2,
3948	}
3949
3950	impl TryFrom<i32> for WaitIndexname {
3951	    type Error = anyhow::Error;
3952	    fn try_from(c: i32) -> Result<WaitIndexname, anyhow::Error> {
3953	        match c {
3954	    0 => Ok(WaitIndexname::CREATED),
3955	    1 => Ok(WaitIndexname::UPDATED),
3956	    2 => Ok(WaitIndexname::DELETED),
3957	            o => Err(anyhow::anyhow!("Unknown variant {} for enum WaitIndexname", o)),
3958	        }
3959	    }
3960	}
3961
3962	impl ToString for WaitIndexname {
3963	    fn to_string(&self) -> String {
3964	        match self {
3965	            WaitIndexname::CREATED => "CREATED",
3966	            WaitIndexname::UPDATED => "UPDATED",
3967	            WaitIndexname::DELETED => "DELETED",
3968	        }.to_string()
3969	    }
3970	}
3971
3972	/// ['The subsystem to get the next index value from.', '  `invoices`: corresponding to `listinvoices` (added in *v23.08*).', '  `sendpays`: corresponding to `listsendpays` (added in *v23.11*).', '  `forwards`: corresponding to `listforwards` (added in *v23.11*).', '  `htlcs`: corresponding to `listhtlcs` (added in *v25.05*).', '  `chainmoves`: corresponding to `listchainmoves` (added in *v25.09*).', '  `channelmoves`: corresponding to `listchannelmoves` (added in *v25.09*).', '  `networkevents`: corresponding to `listnetworkevents` (added in *v25.12*).']
3973	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
3974	#[allow(non_camel_case_types)]
3975	pub enum WaitSubsystem {
3976	    #[serde(rename = "invoices")]
3977	    INVOICES = 0,
3978	    #[serde(rename = "forwards")]
3979	    FORWARDS = 1,
3980	    #[serde(rename = "sendpays")]
3981	    SENDPAYS = 2,
3982	    #[serde(rename = "htlcs")]
3983	    HTLCS = 3,
3984	    #[serde(rename = "chainmoves")]
3985	    CHAINMOVES = 4,
3986	    #[serde(rename = "channelmoves")]
3987	    CHANNELMOVES = 5,
3988	    #[serde(rename = "networkevents")]
3989	    NETWORKEVENTS = 6,
3990	}
3991
3992	impl TryFrom<i32> for WaitSubsystem {
3993	    type Error = anyhow::Error;
3994	    fn try_from(c: i32) -> Result<WaitSubsystem, anyhow::Error> {
3995	        match c {
3996	    0 => Ok(WaitSubsystem::INVOICES),
3997	    1 => Ok(WaitSubsystem::FORWARDS),
3998	    2 => Ok(WaitSubsystem::SENDPAYS),
3999	    3 => Ok(WaitSubsystem::HTLCS),
4000	    4 => Ok(WaitSubsystem::CHAINMOVES),
4001	    5 => Ok(WaitSubsystem::CHANNELMOVES),
4002	    6 => Ok(WaitSubsystem::NETWORKEVENTS),
4003	            o => Err(anyhow::anyhow!("Unknown variant {} for enum WaitSubsystem", o)),
4004	        }
4005	    }
4006	}
4007
4008	impl ToString for WaitSubsystem {
4009	    fn to_string(&self) -> String {
4010	        match self {
4011	            WaitSubsystem::INVOICES => "INVOICES",
4012	            WaitSubsystem::FORWARDS => "FORWARDS",
4013	            WaitSubsystem::SENDPAYS => "SENDPAYS",
4014	            WaitSubsystem::HTLCS => "HTLCS",
4015	            WaitSubsystem::CHAINMOVES => "CHAINMOVES",
4016	            WaitSubsystem::CHANNELMOVES => "CHANNELMOVES",
4017	            WaitSubsystem::NETWORKEVENTS => "NETWORKEVENTS",
4018	        }.to_string()
4019	    }
4020	}
4021
4022	#[derive(Clone, Debug, Deserialize, Serialize)]
4023	pub struct WaitRequest {
4024	    // Path `Wait.indexname`
4025	    pub indexname: WaitIndexname,
4026	    // Path `Wait.subsystem`
4027	    pub subsystem: WaitSubsystem,
4028	    pub nextvalue: u64,
4029	}
4030
4031	impl From<WaitRequest> for Request {
4032	    fn from(r: WaitRequest) -> Self {
4033	        Request::Wait(r)
4034	    }
4035	}
4036
4037	impl IntoRequest for WaitRequest {
4038	    type Response = super::responses::WaitResponse;
4039	}
4040
4041	impl TypedRequest for WaitRequest {
4042	    type Response = super::responses::WaitResponse;
4043
4044	    fn method(&self) -> &str {
4045	        "wait"
4046	    }
4047	}
4048	#[derive(Clone, Debug, Deserialize, Serialize)]
4049	pub struct ListconfigsRequest {
4050	    #[serde(skip_serializing_if = "Option::is_none")]
4051	    pub config: Option<String>,
4052	}
4053
4054	impl From<ListconfigsRequest> for Request {
4055	    fn from(r: ListconfigsRequest) -> Self {
4056	        Request::ListConfigs(r)
4057	    }
4058	}
4059
4060	impl IntoRequest for ListconfigsRequest {
4061	    type Response = super::responses::ListconfigsResponse;
4062	}
4063
4064	impl TypedRequest for ListconfigsRequest {
4065	    type Response = super::responses::ListconfigsResponse;
4066
4067	    fn method(&self) -> &str {
4068	        "listconfigs"
4069	    }
4070	}
4071	#[derive(Clone, Debug, Deserialize, Serialize)]
4072	pub struct StopRequest {
4073	}
4074
4075	impl From<StopRequest> for Request {
4076	    fn from(r: StopRequest) -> Self {
4077	        Request::Stop(r)
4078	    }
4079	}
4080
4081	impl IntoRequest for StopRequest {
4082	    type Response = super::responses::StopResponse;
4083	}
4084
4085	impl TypedRequest for StopRequest {
4086	    type Response = super::responses::StopResponse;
4087
4088	    fn method(&self) -> &str {
4089	        "stop"
4090	    }
4091	}
4092	#[derive(Clone, Debug, Deserialize, Serialize)]
4093	pub struct HelpRequest {
4094	    #[serde(skip_serializing_if = "Option::is_none")]
4095	    pub command: Option<String>,
4096	}
4097
4098	impl From<HelpRequest> for Request {
4099	    fn from(r: HelpRequest) -> Self {
4100	        Request::Help(r)
4101	    }
4102	}
4103
4104	impl IntoRequest for HelpRequest {
4105	    type Response = super::responses::HelpResponse;
4106	}
4107
4108	impl TypedRequest for HelpRequest {
4109	    type Response = super::responses::HelpResponse;
4110
4111	    fn method(&self) -> &str {
4112	        "help"
4113	    }
4114	}
4115	#[derive(Clone, Debug, Deserialize, Serialize)]
4116	pub struct PreapprovekeysendRequest {
4117	    pub amount_msat: Amount,
4118	    pub destination: PublicKey,
4119	    pub payment_hash: String,
4120	}
4121
4122	impl From<PreapprovekeysendRequest> for Request {
4123	    fn from(r: PreapprovekeysendRequest) -> Self {
4124	        Request::PreApproveKeysend(r)
4125	    }
4126	}
4127
4128	impl IntoRequest for PreapprovekeysendRequest {
4129	    type Response = super::responses::PreapprovekeysendResponse;
4130	}
4131
4132	impl TypedRequest for PreapprovekeysendRequest {
4133	    type Response = super::responses::PreapprovekeysendResponse;
4134
4135	    fn method(&self) -> &str {
4136	        "preapprovekeysend"
4137	    }
4138	}
4139	#[derive(Clone, Debug, Deserialize, Serialize)]
4140	pub struct PreapproveinvoiceRequest {
4141	    pub bolt11: String,
4142	}
4143
4144	impl From<PreapproveinvoiceRequest> for Request {
4145	    fn from(r: PreapproveinvoiceRequest) -> Self {
4146	        Request::PreApproveInvoice(r)
4147	    }
4148	}
4149
4150	impl IntoRequest for PreapproveinvoiceRequest {
4151	    type Response = super::responses::PreapproveinvoiceResponse;
4152	}
4153
4154	impl TypedRequest for PreapproveinvoiceRequest {
4155	    type Response = super::responses::PreapproveinvoiceResponse;
4156
4157	    fn method(&self) -> &str {
4158	        "preapproveinvoice"
4159	    }
4160	}
4161	#[derive(Clone, Debug, Deserialize, Serialize)]
4162	pub struct StaticbackupRequest {
4163	}
4164
4165	impl From<StaticbackupRequest> for Request {
4166	    fn from(r: StaticbackupRequest) -> Self {
4167	        Request::StaticBackup(r)
4168	    }
4169	}
4170
4171	impl IntoRequest for StaticbackupRequest {
4172	    type Response = super::responses::StaticbackupResponse;
4173	}
4174
4175	impl TypedRequest for StaticbackupRequest {
4176	    type Response = super::responses::StaticbackupResponse;
4177
4178	    fn method(&self) -> &str {
4179	        "staticbackup"
4180	    }
4181	}
4182	#[derive(Clone, Debug, Deserialize, Serialize)]
4183	pub struct BkprchannelsapyRequest {
4184	    #[serde(skip_serializing_if = "Option::is_none")]
4185	    pub end_time: Option<u64>,
4186	    #[serde(skip_serializing_if = "Option::is_none")]
4187	    pub start_time: Option<u64>,
4188	}
4189
4190	impl From<BkprchannelsapyRequest> for Request {
4191	    fn from(r: BkprchannelsapyRequest) -> Self {
4192	        Request::BkprChannelsApy(r)
4193	    }
4194	}
4195
4196	impl IntoRequest for BkprchannelsapyRequest {
4197	    type Response = super::responses::BkprchannelsapyResponse;
4198	}
4199
4200	impl TypedRequest for BkprchannelsapyRequest {
4201	    type Response = super::responses::BkprchannelsapyResponse;
4202
4203	    fn method(&self) -> &str {
4204	        "bkpr-channelsapy"
4205	    }
4206	}
4207	#[derive(Clone, Debug, Deserialize, Serialize)]
4208	pub struct BkprdumpincomecsvRequest {
4209	    #[serde(skip_serializing_if = "Option::is_none")]
4210	    pub consolidate_fees: Option<bool>,
4211	    #[serde(skip_serializing_if = "Option::is_none")]
4212	    pub csv_file: Option<String>,
4213	    #[serde(skip_serializing_if = "Option::is_none")]
4214	    pub end_time: Option<u64>,
4215	    #[serde(skip_serializing_if = "Option::is_none")]
4216	    pub start_time: Option<u64>,
4217	    pub csv_format: String,
4218	}
4219
4220	impl From<BkprdumpincomecsvRequest> for Request {
4221	    fn from(r: BkprdumpincomecsvRequest) -> Self {
4222	        Request::BkprDumpIncomeCsv(r)
4223	    }
4224	}
4225
4226	impl IntoRequest for BkprdumpincomecsvRequest {
4227	    type Response = super::responses::BkprdumpincomecsvResponse;
4228	}
4229
4230	impl TypedRequest for BkprdumpincomecsvRequest {
4231	    type Response = super::responses::BkprdumpincomecsvResponse;
4232
4233	    fn method(&self) -> &str {
4234	        "bkpr-dumpincomecsv"
4235	    }
4236	}
4237	#[derive(Clone, Debug, Deserialize, Serialize)]
4238	pub struct BkprinspectRequest {
4239	    pub account: String,
4240	}
4241
4242	impl From<BkprinspectRequest> for Request {
4243	    fn from(r: BkprinspectRequest) -> Self {
4244	        Request::BkprInspect(r)
4245	    }
4246	}
4247
4248	impl IntoRequest for BkprinspectRequest {
4249	    type Response = super::responses::BkprinspectResponse;
4250	}
4251
4252	impl TypedRequest for BkprinspectRequest {
4253	    type Response = super::responses::BkprinspectResponse;
4254
4255	    fn method(&self) -> &str {
4256	        "bkpr-inspect"
4257	    }
4258	}
4259	#[derive(Clone, Debug, Deserialize, Serialize)]
4260	pub struct BkprlistaccounteventsRequest {
4261	    #[serde(skip_serializing_if = "Option::is_none")]
4262	    pub account: Option<String>,
4263	    #[serde(skip_serializing_if = "Option::is_none")]
4264	    pub payment_id: Option<String>,
4265	}
4266
4267	impl From<BkprlistaccounteventsRequest> for Request {
4268	    fn from(r: BkprlistaccounteventsRequest) -> Self {
4269	        Request::BkprListAccountEvents(r)
4270	    }
4271	}
4272
4273	impl IntoRequest for BkprlistaccounteventsRequest {
4274	    type Response = super::responses::BkprlistaccounteventsResponse;
4275	}
4276
4277	impl TypedRequest for BkprlistaccounteventsRequest {
4278	    type Response = super::responses::BkprlistaccounteventsResponse;
4279
4280	    fn method(&self) -> &str {
4281	        "bkpr-listaccountevents"
4282	    }
4283	}
4284	#[derive(Clone, Debug, Deserialize, Serialize)]
4285	pub struct BkprlistbalancesRequest {
4286	}
4287
4288	impl From<BkprlistbalancesRequest> for Request {
4289	    fn from(r: BkprlistbalancesRequest) -> Self {
4290	        Request::BkprListBalances(r)
4291	    }
4292	}
4293
4294	impl IntoRequest for BkprlistbalancesRequest {
4295	    type Response = super::responses::BkprlistbalancesResponse;
4296	}
4297
4298	impl TypedRequest for BkprlistbalancesRequest {
4299	    type Response = super::responses::BkprlistbalancesResponse;
4300
4301	    fn method(&self) -> &str {
4302	        "bkpr-listbalances"
4303	    }
4304	}
4305	#[derive(Clone, Debug, Deserialize, Serialize)]
4306	pub struct BkprlistincomeRequest {
4307	    #[serde(skip_serializing_if = "Option::is_none")]
4308	    pub consolidate_fees: Option<bool>,
4309	    #[serde(skip_serializing_if = "Option::is_none")]
4310	    pub end_time: Option<u32>,
4311	    #[serde(skip_serializing_if = "Option::is_none")]
4312	    pub start_time: Option<u32>,
4313	}
4314
4315	impl From<BkprlistincomeRequest> for Request {
4316	    fn from(r: BkprlistincomeRequest) -> Self {
4317	        Request::BkprListIncome(r)
4318	    }
4319	}
4320
4321	impl IntoRequest for BkprlistincomeRequest {
4322	    type Response = super::responses::BkprlistincomeResponse;
4323	}
4324
4325	impl TypedRequest for BkprlistincomeRequest {
4326	    type Response = super::responses::BkprlistincomeResponse;
4327
4328	    fn method(&self) -> &str {
4329	        "bkpr-listincome"
4330	    }
4331	}
4332	#[derive(Clone, Debug, Deserialize, Serialize)]
4333	pub struct BkpreditdescriptionbypaymentidRequest {
4334	    pub description: String,
4335	    pub payment_id: String,
4336	}
4337
4338	impl From<BkpreditdescriptionbypaymentidRequest> for Request {
4339	    fn from(r: BkpreditdescriptionbypaymentidRequest) -> Self {
4340	        Request::BkprEditDescriptionByPaymentId(r)
4341	    }
4342	}
4343
4344	impl IntoRequest for BkpreditdescriptionbypaymentidRequest {
4345	    type Response = super::responses::BkpreditdescriptionbypaymentidResponse;
4346	}
4347
4348	impl TypedRequest for BkpreditdescriptionbypaymentidRequest {
4349	    type Response = super::responses::BkpreditdescriptionbypaymentidResponse;
4350
4351	    fn method(&self) -> &str {
4352	        "bkpr-editdescriptionbypaymentid"
4353	    }
4354	}
4355	#[derive(Clone, Debug, Deserialize, Serialize)]
4356	pub struct BkpreditdescriptionbyoutpointRequest {
4357	    pub description: String,
4358	    pub outpoint: String,
4359	}
4360
4361	impl From<BkpreditdescriptionbyoutpointRequest> for Request {
4362	    fn from(r: BkpreditdescriptionbyoutpointRequest) -> Self {
4363	        Request::BkprEditDescriptionByOutpoint(r)
4364	    }
4365	}
4366
4367	impl IntoRequest for BkpreditdescriptionbyoutpointRequest {
4368	    type Response = super::responses::BkpreditdescriptionbyoutpointResponse;
4369	}
4370
4371	impl TypedRequest for BkpreditdescriptionbyoutpointRequest {
4372	    type Response = super::responses::BkpreditdescriptionbyoutpointResponse;
4373
4374	    fn method(&self) -> &str {
4375	        "bkpr-editdescriptionbyoutpoint"
4376	    }
4377	}
4378	#[derive(Clone, Debug, Deserialize, Serialize)]
4379	pub struct BkprreportRequest {
4380	    #[serde(skip_serializing_if = "Option::is_none")]
4381	    pub end_time: Option<u32>,
4382	    #[serde(skip_serializing_if = "Option::is_none")]
4383	    pub escape: Option<String>,
4384	    #[serde(skip_serializing_if = "Option::is_none")]
4385	    pub format: Option<String>,
4386	    #[serde(skip_serializing_if = "Option::is_none")]
4387	    pub start_time: Option<u32>,
4388	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
4389	    pub headers: Option<Vec<String>>,
4390	}
4391
4392	impl From<BkprreportRequest> for Request {
4393	    fn from(r: BkprreportRequest) -> Self {
4394	        Request::BkprReport(r)
4395	    }
4396	}
4397
4398	impl IntoRequest for BkprreportRequest {
4399	    type Response = super::responses::BkprreportResponse;
4400	}
4401
4402	impl TypedRequest for BkprreportRequest {
4403	    type Response = super::responses::BkprreportResponse;
4404
4405	    fn method(&self) -> &str {
4406	        "bkpr-report"
4407	    }
4408	}
4409	#[derive(Clone, Debug, Deserialize, Serialize)]
4410	pub struct BlacklistruneRequest {
4411	    #[serde(skip_serializing_if = "Option::is_none")]
4412	    pub end: Option<u64>,
4413	    #[serde(skip_serializing_if = "Option::is_none")]
4414	    pub relist: Option<bool>,
4415	    #[serde(skip_serializing_if = "Option::is_none")]
4416	    pub start: Option<u64>,
4417	}
4418
4419	impl From<BlacklistruneRequest> for Request {
4420	    fn from(r: BlacklistruneRequest) -> Self {
4421	        Request::BlacklistRune(r)
4422	    }
4423	}
4424
4425	impl IntoRequest for BlacklistruneRequest {
4426	    type Response = super::responses::BlacklistruneResponse;
4427	}
4428
4429	impl TypedRequest for BlacklistruneRequest {
4430	    type Response = super::responses::BlacklistruneResponse;
4431
4432	    fn method(&self) -> &str {
4433	        "blacklistrune"
4434	    }
4435	}
4436	#[derive(Clone, Debug, Deserialize, Serialize)]
4437	pub struct CheckruneRequest {
4438	    #[serde(skip_serializing_if = "Option::is_none")]
4439	    pub method: Option<String>,
4440	    #[serde(skip_serializing_if = "Option::is_none")]
4441	    pub nodeid: Option<String>,
4442	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
4443	    pub params: Option<Vec<String>>,
4444	    pub rune: String,
4445	}
4446
4447	impl From<CheckruneRequest> for Request {
4448	    fn from(r: CheckruneRequest) -> Self {
4449	        Request::CheckRune(r)
4450	    }
4451	}
4452
4453	impl IntoRequest for CheckruneRequest {
4454	    type Response = super::responses::CheckruneResponse;
4455	}
4456
4457	impl TypedRequest for CheckruneRequest {
4458	    type Response = super::responses::CheckruneResponse;
4459
4460	    fn method(&self) -> &str {
4461	        "checkrune"
4462	    }
4463	}
4464	#[derive(Clone, Debug, Deserialize, Serialize)]
4465	pub struct CreateruneRequest {
4466	    #[serde(skip_serializing_if = "Option::is_none")]
4467	    pub rune: Option<String>,
4468	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
4469	    pub restrictions: Option<Vec<String>>,
4470	}
4471
4472	impl From<CreateruneRequest> for Request {
4473	    fn from(r: CreateruneRequest) -> Self {
4474	        Request::CreateRune(r)
4475	    }
4476	}
4477
4478	impl IntoRequest for CreateruneRequest {
4479	    type Response = super::responses::CreateruneResponse;
4480	}
4481
4482	impl TypedRequest for CreateruneRequest {
4483	    type Response = super::responses::CreateruneResponse;
4484
4485	    fn method(&self) -> &str {
4486	        "createrune"
4487	    }
4488	}
4489	#[derive(Clone, Debug, Deserialize, Serialize)]
4490	pub struct ShowrunesRequest {
4491	    #[serde(skip_serializing_if = "Option::is_none")]
4492	    pub rune: Option<String>,
4493	}
4494
4495	impl From<ShowrunesRequest> for Request {
4496	    fn from(r: ShowrunesRequest) -> Self {
4497	        Request::ShowRunes(r)
4498	    }
4499	}
4500
4501	impl IntoRequest for ShowrunesRequest {
4502	    type Response = super::responses::ShowrunesResponse;
4503	}
4504
4505	impl TypedRequest for ShowrunesRequest {
4506	    type Response = super::responses::ShowrunesResponse;
4507
4508	    fn method(&self) -> &str {
4509	        "showrunes"
4510	    }
4511	}
4512	#[derive(Clone, Debug, Deserialize, Serialize)]
4513	pub struct AskreneunreservePath {
4514	    #[serde(skip_serializing_if = "Option::is_none")]
4515	    pub layer: Option<String>,
4516	    pub amount_msat: Amount,
4517	    pub short_channel_id_dir: ShortChannelIdDir,
4518	}
4519
4520	#[derive(Clone, Debug, Deserialize, Serialize)]
4521	pub struct AskreneunreserveRequest {
4522	    #[serde(skip_serializing_if = "Option::is_none")]
4523	    pub dev_remove_all: Option<bool>,
4524	    pub path: Vec<AskreneunreservePath>,
4525	}
4526
4527	impl From<AskreneunreserveRequest> for Request {
4528	    fn from(r: AskreneunreserveRequest) -> Self {
4529	        Request::AskReneUnreserve(r)
4530	    }
4531	}
4532
4533	impl IntoRequest for AskreneunreserveRequest {
4534	    type Response = super::responses::AskreneunreserveResponse;
4535	}
4536
4537	impl TypedRequest for AskreneunreserveRequest {
4538	    type Response = super::responses::AskreneunreserveResponse;
4539
4540	    fn method(&self) -> &str {
4541	        "askrene-unreserve"
4542	    }
4543	}
4544	#[derive(Clone, Debug, Deserialize, Serialize)]
4545	pub struct AskrenelistlayersRequest {
4546	    #[serde(skip_serializing_if = "Option::is_none")]
4547	    pub layer: Option<String>,
4548	}
4549
4550	impl From<AskrenelistlayersRequest> for Request {
4551	    fn from(r: AskrenelistlayersRequest) -> Self {
4552	        Request::AskReneListLayers(r)
4553	    }
4554	}
4555
4556	impl IntoRequest for AskrenelistlayersRequest {
4557	    type Response = super::responses::AskrenelistlayersResponse;
4558	}
4559
4560	impl TypedRequest for AskrenelistlayersRequest {
4561	    type Response = super::responses::AskrenelistlayersResponse;
4562
4563	    fn method(&self) -> &str {
4564	        "askrene-listlayers"
4565	    }
4566	}
4567	#[derive(Clone, Debug, Deserialize, Serialize)]
4568	pub struct AskrenecreatelayerRequest {
4569	    #[serde(skip_serializing_if = "Option::is_none")]
4570	    pub persistent: Option<bool>,
4571	    pub layer: String,
4572	}
4573
4574	impl From<AskrenecreatelayerRequest> for Request {
4575	    fn from(r: AskrenecreatelayerRequest) -> Self {
4576	        Request::AskReneCreateLayer(r)
4577	    }
4578	}
4579
4580	impl IntoRequest for AskrenecreatelayerRequest {
4581	    type Response = super::responses::AskrenecreatelayerResponse;
4582	}
4583
4584	impl TypedRequest for AskrenecreatelayerRequest {
4585	    type Response = super::responses::AskrenecreatelayerResponse;
4586
4587	    fn method(&self) -> &str {
4588	        "askrene-create-layer"
4589	    }
4590	}
4591	#[derive(Clone, Debug, Deserialize, Serialize)]
4592	pub struct AskreneremovelayerRequest {
4593	    pub layer: String,
4594	}
4595
4596	impl From<AskreneremovelayerRequest> for Request {
4597	    fn from(r: AskreneremovelayerRequest) -> Self {
4598	        Request::AskReneRemoveLayer(r)
4599	    }
4600	}
4601
4602	impl IntoRequest for AskreneremovelayerRequest {
4603	    type Response = super::responses::AskreneremovelayerResponse;
4604	}
4605
4606	impl TypedRequest for AskreneremovelayerRequest {
4607	    type Response = super::responses::AskreneremovelayerResponse;
4608
4609	    fn method(&self) -> &str {
4610	        "askrene-remove-layer"
4611	    }
4612	}
4613	#[derive(Clone, Debug, Deserialize, Serialize)]
4614	pub struct AskreneremovechannelupdateRequest {
4615	    pub layer: String,
4616	    pub short_channel_id_dir: ShortChannelIdDir,
4617	}
4618
4619	impl From<AskreneremovechannelupdateRequest> for Request {
4620	    fn from(r: AskreneremovechannelupdateRequest) -> Self {
4621	        Request::AskReneRemoveChannelUpdate(r)
4622	    }
4623	}
4624
4625	impl IntoRequest for AskreneremovechannelupdateRequest {
4626	    type Response = super::responses::AskreneremovechannelupdateResponse;
4627	}
4628
4629	impl TypedRequest for AskreneremovechannelupdateRequest {
4630	    type Response = super::responses::AskreneremovechannelupdateResponse;
4631
4632	    fn method(&self) -> &str {
4633	        "askrene-remove-channel-update"
4634	    }
4635	}
4636	#[derive(Clone, Debug, Deserialize, Serialize)]
4637	pub struct AskrenereservePath {
4638	    #[serde(skip_serializing_if = "Option::is_none")]
4639	    pub layer: Option<String>,
4640	    pub amount_msat: Amount,
4641	    pub short_channel_id_dir: ShortChannelIdDir,
4642	}
4643
4644	#[derive(Clone, Debug, Deserialize, Serialize)]
4645	pub struct AskrenereserveRequest {
4646	    pub path: Vec<AskrenereservePath>,
4647	}
4648
4649	impl From<AskrenereserveRequest> for Request {
4650	    fn from(r: AskrenereserveRequest) -> Self {
4651	        Request::AskReneReserve(r)
4652	    }
4653	}
4654
4655	impl IntoRequest for AskrenereserveRequest {
4656	    type Response = super::responses::AskrenereserveResponse;
4657	}
4658
4659	impl TypedRequest for AskrenereserveRequest {
4660	    type Response = super::responses::AskrenereserveResponse;
4661
4662	    fn method(&self) -> &str {
4663	        "askrene-reserve"
4664	    }
4665	}
4666	#[derive(Clone, Debug, Deserialize, Serialize)]
4667	pub struct AskreneageRequest {
4668	    pub cutoff: u64,
4669	    pub layer: String,
4670	}
4671
4672	impl From<AskreneageRequest> for Request {
4673	    fn from(r: AskreneageRequest) -> Self {
4674	        Request::AskReneAge(r)
4675	    }
4676	}
4677
4678	impl IntoRequest for AskreneageRequest {
4679	    type Response = super::responses::AskreneageResponse;
4680	}
4681
4682	impl TypedRequest for AskreneageRequest {
4683	    type Response = super::responses::AskreneageResponse;
4684
4685	    fn method(&self) -> &str {
4686	        "askrene-age"
4687	    }
4688	}
4689	#[derive(Clone, Debug, Deserialize, Serialize)]
4690	pub struct GetroutesRequest {
4691	    #[serde(skip_serializing_if = "Option::is_none")]
4692	    pub maxdelay: Option<u32>,
4693	    #[serde(skip_serializing_if = "Option::is_none")]
4694	    pub maxparts: Option<u32>,
4695	    pub amount_msat: Amount,
4696	    pub destination: PublicKey,
4697	    pub final_cltv: u32,
4698	    pub layers: Vec<String>,
4699	    pub maxfee_msat: Amount,
4700	    pub source: PublicKey,
4701	}
4702
4703	impl From<GetroutesRequest> for Request {
4704	    fn from(r: GetroutesRequest) -> Self {
4705	        Request::GetRoutes(r)
4706	    }
4707	}
4708
4709	impl IntoRequest for GetroutesRequest {
4710	    type Response = super::responses::GetroutesResponse;
4711	}
4712
4713	impl TypedRequest for GetroutesRequest {
4714	    type Response = super::responses::GetroutesResponse;
4715
4716	    fn method(&self) -> &str {
4717	        "getroutes"
4718	    }
4719	}
4720	#[derive(Clone, Debug, Deserialize, Serialize)]
4721	pub struct AskrenedisablenodeRequest {
4722	    pub layer: String,
4723	    pub node: PublicKey,
4724	}
4725
4726	impl From<AskrenedisablenodeRequest> for Request {
4727	    fn from(r: AskrenedisablenodeRequest) -> Self {
4728	        Request::AskReneDisableNode(r)
4729	    }
4730	}
4731
4732	impl IntoRequest for AskrenedisablenodeRequest {
4733	    type Response = super::responses::AskrenedisablenodeResponse;
4734	}
4735
4736	impl TypedRequest for AskrenedisablenodeRequest {
4737	    type Response = super::responses::AskrenedisablenodeResponse;
4738
4739	    fn method(&self) -> &str {
4740	        "askrene-disable-node"
4741	    }
4742	}
4743	/// ['Whether this payment passed (implying capacity of at least that amount), failed (implying maximum capacity of one msat less), or succeeded (implying capacity has been reduced in this direction)']
4744	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
4745	#[allow(non_camel_case_types)]
4746	pub enum AskreneinformchannelInform {
4747	    #[serde(rename = "constrained")]
4748	    CONSTRAINED = 0,
4749	    #[serde(rename = "unconstrained")]
4750	    UNCONSTRAINED = 1,
4751	    #[serde(rename = "succeeded")]
4752	    SUCCEEDED = 2,
4753	}
4754
4755	impl TryFrom<i32> for AskreneinformchannelInform {
4756	    type Error = anyhow::Error;
4757	    fn try_from(c: i32) -> Result<AskreneinformchannelInform, anyhow::Error> {
4758	        match c {
4759	    0 => Ok(AskreneinformchannelInform::CONSTRAINED),
4760	    1 => Ok(AskreneinformchannelInform::UNCONSTRAINED),
4761	    2 => Ok(AskreneinformchannelInform::SUCCEEDED),
4762	            o => Err(anyhow::anyhow!("Unknown variant {} for enum AskreneinformchannelInform", o)),
4763	        }
4764	    }
4765	}
4766
4767	impl ToString for AskreneinformchannelInform {
4768	    fn to_string(&self) -> String {
4769	        match self {
4770	            AskreneinformchannelInform::CONSTRAINED => "CONSTRAINED",
4771	            AskreneinformchannelInform::UNCONSTRAINED => "UNCONSTRAINED",
4772	            AskreneinformchannelInform::SUCCEEDED => "SUCCEEDED",
4773	        }.to_string()
4774	    }
4775	}
4776
4777	#[derive(Clone, Debug, Deserialize, Serialize)]
4778	pub struct AskreneinformchannelRequest {
4779	    // Path `AskRene-Inform-Channel.inform`
4780	    pub inform: AskreneinformchannelInform,
4781	    pub amount_msat: Amount,
4782	    pub layer: String,
4783	    pub short_channel_id_dir: ShortChannelIdDir,
4784	}
4785
4786	impl From<AskreneinformchannelRequest> for Request {
4787	    fn from(r: AskreneinformchannelRequest) -> Self {
4788	        Request::AskReneInformChannel(r)
4789	    }
4790	}
4791
4792	impl IntoRequest for AskreneinformchannelRequest {
4793	    type Response = super::responses::AskreneinformchannelResponse;
4794	}
4795
4796	impl TypedRequest for AskreneinformchannelRequest {
4797	    type Response = super::responses::AskreneinformchannelResponse;
4798
4799	    fn method(&self) -> &str {
4800	        "askrene-inform-channel"
4801	    }
4802	}
4803	#[derive(Clone, Debug, Deserialize, Serialize)]
4804	pub struct AskrenecreatechannelRequest {
4805	    pub capacity_msat: Amount,
4806	    pub destination: PublicKey,
4807	    pub layer: String,
4808	    pub short_channel_id: ShortChannelId,
4809	    pub source: PublicKey,
4810	}
4811
4812	impl From<AskrenecreatechannelRequest> for Request {
4813	    fn from(r: AskrenecreatechannelRequest) -> Self {
4814	        Request::AskReneCreateChannel(r)
4815	    }
4816	}
4817
4818	impl IntoRequest for AskrenecreatechannelRequest {
4819	    type Response = super::responses::AskrenecreatechannelResponse;
4820	}
4821
4822	impl TypedRequest for AskrenecreatechannelRequest {
4823	    type Response = super::responses::AskrenecreatechannelResponse;
4824
4825	    fn method(&self) -> &str {
4826	        "askrene-create-channel"
4827	    }
4828	}
4829	#[derive(Clone, Debug, Deserialize, Serialize)]
4830	pub struct AskreneupdatechannelRequest {
4831	    #[serde(skip_serializing_if = "Option::is_none")]
4832	    pub cltv_expiry_delta: Option<u16>,
4833	    #[serde(skip_serializing_if = "Option::is_none")]
4834	    pub enabled: Option<bool>,
4835	    #[serde(skip_serializing_if = "Option::is_none")]
4836	    pub fee_base_msat: Option<Amount>,
4837	    #[serde(skip_serializing_if = "Option::is_none")]
4838	    pub fee_proportional_millionths: Option<u32>,
4839	    #[serde(skip_serializing_if = "Option::is_none")]
4840	    pub htlc_maximum_msat: Option<Amount>,
4841	    #[serde(skip_serializing_if = "Option::is_none")]
4842	    pub htlc_minimum_msat: Option<Amount>,
4843	    pub layer: String,
4844	    pub short_channel_id_dir: ShortChannelIdDir,
4845	}
4846
4847	impl From<AskreneupdatechannelRequest> for Request {
4848	    fn from(r: AskreneupdatechannelRequest) -> Self {
4849	        Request::AskReneUpdateChannel(r)
4850	    }
4851	}
4852
4853	impl IntoRequest for AskreneupdatechannelRequest {
4854	    type Response = super::responses::AskreneupdatechannelResponse;
4855	}
4856
4857	impl TypedRequest for AskreneupdatechannelRequest {
4858	    type Response = super::responses::AskreneupdatechannelResponse;
4859
4860	    fn method(&self) -> &str {
4861	        "askrene-update-channel"
4862	    }
4863	}
4864	#[derive(Clone, Debug, Deserialize, Serialize)]
4865	pub struct AskrenebiaschannelRequest {
4866	    #[serde(skip_serializing_if = "Option::is_none")]
4867	    pub description: Option<String>,
4868	    #[serde(skip_serializing_if = "Option::is_none")]
4869	    pub relative: Option<bool>,
4870	    pub bias: i64,
4871	    pub layer: String,
4872	    pub short_channel_id_dir: ShortChannelIdDir,
4873	}
4874
4875	impl From<AskrenebiaschannelRequest> for Request {
4876	    fn from(r: AskrenebiaschannelRequest) -> Self {
4877	        Request::AskReneBiasChannel(r)
4878	    }
4879	}
4880
4881	impl IntoRequest for AskrenebiaschannelRequest {
4882	    type Response = super::responses::AskrenebiaschannelResponse;
4883	}
4884
4885	impl TypedRequest for AskrenebiaschannelRequest {
4886	    type Response = super::responses::AskrenebiaschannelResponse;
4887
4888	    fn method(&self) -> &str {
4889	        "askrene-bias-channel"
4890	    }
4891	}
4892	#[derive(Clone, Debug, Deserialize, Serialize)]
4893	pub struct AskrenebiasnodeRequest {
4894	    #[serde(skip_serializing_if = "Option::is_none")]
4895	    pub description: Option<String>,
4896	    #[serde(skip_serializing_if = "Option::is_none")]
4897	    pub relative: Option<bool>,
4898	    pub bias: i64,
4899	    pub direction: String,
4900	    pub layer: String,
4901	    pub node: PublicKey,
4902	}
4903
4904	impl From<AskrenebiasnodeRequest> for Request {
4905	    fn from(r: AskrenebiasnodeRequest) -> Self {
4906	        Request::AskreneBiasNode(r)
4907	    }
4908	}
4909
4910	impl IntoRequest for AskrenebiasnodeRequest {
4911	    type Response = super::responses::AskrenebiasnodeResponse;
4912	}
4913
4914	impl TypedRequest for AskrenebiasnodeRequest {
4915	    type Response = super::responses::AskrenebiasnodeResponse;
4916
4917	    fn method(&self) -> &str {
4918	        "askrene-bias-node"
4919	    }
4920	}
4921	#[derive(Clone, Debug, Deserialize, Serialize)]
4922	pub struct AskrenelistreservationsRequest {
4923	}
4924
4925	impl From<AskrenelistreservationsRequest> for Request {
4926	    fn from(r: AskrenelistreservationsRequest) -> Self {
4927	        Request::AskReneListReservations(r)
4928	    }
4929	}
4930
4931	impl IntoRequest for AskrenelistreservationsRequest {
4932	    type Response = super::responses::AskrenelistreservationsResponse;
4933	}
4934
4935	impl TypedRequest for AskrenelistreservationsRequest {
4936	    type Response = super::responses::AskrenelistreservationsResponse;
4937
4938	    fn method(&self) -> &str {
4939	        "askrene-listreservations"
4940	    }
4941	}
4942	#[derive(Clone, Debug, Deserialize, Serialize)]
4943	pub struct InjectpaymentonionRequest {
4944	    #[serde(skip_serializing_if = "Option::is_none")]
4945	    pub destination: Option<PublicKey>,
4946	    #[serde(skip_serializing_if = "Option::is_none")]
4947	    pub destination_msat: Option<Amount>,
4948	    #[serde(skip_serializing_if = "Option::is_none")]
4949	    pub invstring: Option<String>,
4950	    #[serde(skip_serializing_if = "Option::is_none")]
4951	    pub label: Option<String>,
4952	    #[serde(skip_serializing_if = "Option::is_none")]
4953	    pub localinvreqid: Option<Sha256>,
4954	    pub amount_msat: Amount,
4955	    pub cltv_expiry: u16,
4956	    pub groupid: u64,
4957	    pub onion: String,
4958	    pub partid: u64,
4959	    pub payment_hash: Sha256,
4960	}
4961
4962	impl From<InjectpaymentonionRequest> for Request {
4963	    fn from(r: InjectpaymentonionRequest) -> Self {
4964	        Request::InjectPaymentOnion(r)
4965	    }
4966	}
4967
4968	impl IntoRequest for InjectpaymentonionRequest {
4969	    type Response = super::responses::InjectpaymentonionResponse;
4970	}
4971
4972	impl TypedRequest for InjectpaymentonionRequest {
4973	    type Response = super::responses::InjectpaymentonionResponse;
4974
4975	    fn method(&self) -> &str {
4976	        "injectpaymentonion"
4977	    }
4978	}
4979	#[derive(Clone, Debug, Deserialize, Serialize)]
4980	pub struct InjectonionmessageRequest {
4981	    pub message: String,
4982	    pub path_key: PublicKey,
4983	}
4984
4985	impl From<InjectonionmessageRequest> for Request {
4986	    fn from(r: InjectonionmessageRequest) -> Self {
4987	        Request::InjectOnionMessage(r)
4988	    }
4989	}
4990
4991	impl IntoRequest for InjectonionmessageRequest {
4992	    type Response = super::responses::InjectonionmessageResponse;
4993	}
4994
4995	impl TypedRequest for InjectonionmessageRequest {
4996	    type Response = super::responses::InjectonionmessageResponse;
4997
4998	    fn method(&self) -> &str {
4999	        "injectonionmessage"
5000	    }
5001	}
5002	#[derive(Clone, Debug, Deserialize, Serialize)]
5003	pub struct XpayRequest {
5004	    #[serde(skip_serializing_if = "Option::is_none")]
5005	    pub amount_msat: Option<Amount>,
5006	    #[serde(skip_serializing_if = "Option::is_none")]
5007	    pub dev_use_shadow: Option<bool>,
5008	    #[serde(skip_serializing_if = "Option::is_none")]
5009	    pub label: Option<String>,
5010	    #[serde(skip_serializing_if = "Option::is_none")]
5011	    pub localinvreqid: Option<String>,
5012	    #[serde(skip_serializing_if = "Option::is_none")]
5013	    pub maxdelay: Option<u32>,
5014	    #[serde(skip_serializing_if = "Option::is_none")]
5015	    pub maxfee: Option<Amount>,
5016	    #[serde(skip_serializing_if = "Option::is_none")]
5017	    pub partial_msat: Option<Amount>,
5018	    #[serde(skip_serializing_if = "Option::is_none")]
5019	    pub payer_note: Option<String>,
5020	    #[serde(skip_serializing_if = "Option::is_none")]
5021	    pub retry_for: Option<u32>,
5022	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
5023	    pub layers: Option<Vec<String>>,
5024	    pub invstring: String,
5025	}
5026
5027	impl From<XpayRequest> for Request {
5028	    fn from(r: XpayRequest) -> Self {
5029	        Request::Xpay(r)
5030	    }
5031	}
5032
5033	impl IntoRequest for XpayRequest {
5034	    type Response = super::responses::XpayResponse;
5035	}
5036
5037	impl TypedRequest for XpayRequest {
5038	    type Response = super::responses::XpayResponse;
5039
5040	    fn method(&self) -> &str {
5041	        "xpay"
5042	    }
5043	}
5044	#[derive(Clone, Debug, Deserialize, Serialize)]
5045	pub struct SignmessagewithkeyRequest {
5046	    pub address: String,
5047	    pub message: String,
5048	}
5049
5050	impl From<SignmessagewithkeyRequest> for Request {
5051	    fn from(r: SignmessagewithkeyRequest) -> Self {
5052	        Request::SignMessageWithKey(r)
5053	    }
5054	}
5055
5056	impl IntoRequest for SignmessagewithkeyRequest {
5057	    type Response = super::responses::SignmessagewithkeyResponse;
5058	}
5059
5060	impl TypedRequest for SignmessagewithkeyRequest {
5061	    type Response = super::responses::SignmessagewithkeyResponse;
5062
5063	    fn method(&self) -> &str {
5064	        "signmessagewithkey"
5065	    }
5066	}
5067	/// ['How to interpret `start` and `limit`']
5068	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
5069	#[allow(non_camel_case_types)]
5070	pub enum ListchannelmovesIndex {
5071	    #[serde(rename = "created")]
5072	    CREATED = 0,
5073	}
5074
5075	impl TryFrom<i32> for ListchannelmovesIndex {
5076	    type Error = anyhow::Error;
5077	    fn try_from(c: i32) -> Result<ListchannelmovesIndex, anyhow::Error> {
5078	        match c {
5079	    0 => Ok(ListchannelmovesIndex::CREATED),
5080	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListchannelmovesIndex", o)),
5081	        }
5082	    }
5083	}
5084
5085	impl ToString for ListchannelmovesIndex {
5086	    fn to_string(&self) -> String {
5087	        match self {
5088	            ListchannelmovesIndex::CREATED => "CREATED",
5089	        }.to_string()
5090	    }
5091	}
5092
5093	#[derive(Clone, Debug, Deserialize, Serialize)]
5094	pub struct ListchannelmovesRequest {
5095	    #[serde(skip_serializing_if = "Option::is_none")]
5096	    pub index: Option<ListchannelmovesIndex>,
5097	    #[serde(skip_serializing_if = "Option::is_none")]
5098	    pub limit: Option<u32>,
5099	    #[serde(skip_serializing_if = "Option::is_none")]
5100	    pub start: Option<u64>,
5101	}
5102
5103	impl From<ListchannelmovesRequest> for Request {
5104	    fn from(r: ListchannelmovesRequest) -> Self {
5105	        Request::ListChannelMoves(r)
5106	    }
5107	}
5108
5109	impl IntoRequest for ListchannelmovesRequest {
5110	    type Response = super::responses::ListchannelmovesResponse;
5111	}
5112
5113	impl TypedRequest for ListchannelmovesRequest {
5114	    type Response = super::responses::ListchannelmovesResponse;
5115
5116	    fn method(&self) -> &str {
5117	        "listchannelmoves"
5118	    }
5119	}
5120	/// ['How to interpret `start` and `limit`']
5121	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
5122	#[allow(non_camel_case_types)]
5123	pub enum ListchainmovesIndex {
5124	    #[serde(rename = "created")]
5125	    CREATED = 0,
5126	}
5127
5128	impl TryFrom<i32> for ListchainmovesIndex {
5129	    type Error = anyhow::Error;
5130	    fn try_from(c: i32) -> Result<ListchainmovesIndex, anyhow::Error> {
5131	        match c {
5132	    0 => Ok(ListchainmovesIndex::CREATED),
5133	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListchainmovesIndex", o)),
5134	        }
5135	    }
5136	}
5137
5138	impl ToString for ListchainmovesIndex {
5139	    fn to_string(&self) -> String {
5140	        match self {
5141	            ListchainmovesIndex::CREATED => "CREATED",
5142	        }.to_string()
5143	    }
5144	}
5145
5146	#[derive(Clone, Debug, Deserialize, Serialize)]
5147	pub struct ListchainmovesRequest {
5148	    #[serde(skip_serializing_if = "Option::is_none")]
5149	    pub index: Option<ListchainmovesIndex>,
5150	    #[serde(skip_serializing_if = "Option::is_none")]
5151	    pub limit: Option<u32>,
5152	    #[serde(skip_serializing_if = "Option::is_none")]
5153	    pub start: Option<u64>,
5154	}
5155
5156	impl From<ListchainmovesRequest> for Request {
5157	    fn from(r: ListchainmovesRequest) -> Self {
5158	        Request::ListChainMoves(r)
5159	    }
5160	}
5161
5162	impl IntoRequest for ListchainmovesRequest {
5163	    type Response = super::responses::ListchainmovesResponse;
5164	}
5165
5166	impl TypedRequest for ListchainmovesRequest {
5167	    type Response = super::responses::ListchainmovesResponse;
5168
5169	    fn method(&self) -> &str {
5170	        "listchainmoves"
5171	    }
5172	}
5173	/// ['This controls the ordering of results.']
5174	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
5175	#[allow(non_camel_case_types)]
5176	pub enum ListnetworkeventsIndex {
5177	    #[serde(rename = "created")]
5178	    CREATED = 0,
5179	}
5180
5181	impl TryFrom<i32> for ListnetworkeventsIndex {
5182	    type Error = anyhow::Error;
5183	    fn try_from(c: i32) -> Result<ListnetworkeventsIndex, anyhow::Error> {
5184	        match c {
5185	    0 => Ok(ListnetworkeventsIndex::CREATED),
5186	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListnetworkeventsIndex", o)),
5187	        }
5188	    }
5189	}
5190
5191	impl ToString for ListnetworkeventsIndex {
5192	    fn to_string(&self) -> String {
5193	        match self {
5194	            ListnetworkeventsIndex::CREATED => "CREATED",
5195	        }.to_string()
5196	    }
5197	}
5198
5199	#[derive(Clone, Debug, Deserialize, Serialize)]
5200	pub struct ListnetworkeventsRequest {
5201	    #[serde(skip_serializing_if = "Option::is_none")]
5202	    pub id: Option<String>,
5203	    #[serde(skip_serializing_if = "Option::is_none")]
5204	    pub index: Option<ListnetworkeventsIndex>,
5205	    #[serde(skip_serializing_if = "Option::is_none")]
5206	    pub limit: Option<u32>,
5207	    #[serde(skip_serializing_if = "Option::is_none")]
5208	    pub start: Option<u64>,
5209	}
5210
5211	impl From<ListnetworkeventsRequest> for Request {
5212	    fn from(r: ListnetworkeventsRequest) -> Self {
5213	        Request::ListNetworkEvents(r)
5214	    }
5215	}
5216
5217	impl IntoRequest for ListnetworkeventsRequest {
5218	    type Response = super::responses::ListnetworkeventsResponse;
5219	}
5220
5221	impl TypedRequest for ListnetworkeventsRequest {
5222	    type Response = super::responses::ListnetworkeventsResponse;
5223
5224	    fn method(&self) -> &str {
5225	        "listnetworkevents"
5226	    }
5227	}
5228	#[derive(Clone, Debug, Deserialize, Serialize)]
5229	pub struct DelnetworkeventRequest {
5230	    pub created_index: u64,
5231	}
5232
5233	impl From<DelnetworkeventRequest> for Request {
5234	    fn from(r: DelnetworkeventRequest) -> Self {
5235	        Request::DelNetworkEvent(r)
5236	    }
5237	}
5238
5239	impl IntoRequest for DelnetworkeventRequest {
5240	    type Response = super::responses::DelnetworkeventResponse;
5241	}
5242
5243	impl TypedRequest for DelnetworkeventRequest {
5244	    type Response = super::responses::DelnetworkeventResponse;
5245
5246	    fn method(&self) -> &str {
5247	        "delnetworkevent"
5248	    }
5249	}
5250	#[derive(Clone, Debug, Deserialize, Serialize)]
5251	pub struct ClnrestregisterpathRuneRestrictions {
5252	    #[serde(skip_serializing_if = "Option::is_none")]
5253	    pub method: Option<String>,
5254	    #[serde(skip_serializing_if = "Option::is_none")]
5255	    pub nodeid: Option<String>,
5256	    #[serde(skip_serializing_if = "Option::is_none")]
5257	    pub params: Option<HashMap<String, String>>,
5258	}
5259
5260	#[derive(Clone, Debug, Deserialize, Serialize)]
5261	pub struct ClnrestregisterpathRequest {
5262	    #[serde(skip_serializing_if = "Option::is_none")]
5263	    pub http_method: Option<String>,
5264	    #[serde(skip_serializing_if = "Option::is_none")]
5265	    pub rune_required: Option<bool>,
5266	    #[serde(skip_serializing_if = "Option::is_none")]
5267	    pub rune_restrictions: Option<ClnrestregisterpathRuneRestrictions>,
5268	    pub path: String,
5269	    pub rpc_method: String,
5270	}
5271
5272	impl From<ClnrestregisterpathRequest> for Request {
5273	    fn from(r: ClnrestregisterpathRequest) -> Self {
5274	        Request::ClnrestRegisterPath(r)
5275	    }
5276	}
5277
5278	impl IntoRequest for ClnrestregisterpathRequest {
5279	    type Response = super::responses::ClnrestregisterpathResponse;
5280	}
5281
5282	impl TypedRequest for ClnrestregisterpathRequest {
5283	    type Response = super::responses::ClnrestregisterpathResponse;
5284
5285	    fn method(&self) -> &str {
5286	        "clnrest-register-path"
5287	    }
5288	}
5289	#[derive(Clone, Debug, Deserialize, Serialize)]
5290	pub struct ListcurrencyratesRequest {
5291	    pub currency: String,
5292	}
5293
5294	impl From<ListcurrencyratesRequest> for Request {
5295	    fn from(r: ListcurrencyratesRequest) -> Self {
5296	        Request::ListCurrencyRates(r)
5297	    }
5298	}
5299
5300	impl IntoRequest for ListcurrencyratesRequest {
5301	    type Response = super::responses::ListcurrencyratesResponse;
5302	}
5303
5304	impl TypedRequest for ListcurrencyratesRequest {
5305	    type Response = super::responses::ListcurrencyratesResponse;
5306
5307	    fn method(&self) -> &str {
5308	        "listcurrencyrates"
5309	    }
5310	}
5311	#[derive(Clone, Debug, Deserialize, Serialize)]
5312	pub struct CurrencyconvertRequest {
5313	    pub amount: f64,
5314	    pub currency: String,
5315	}
5316
5317	impl From<CurrencyconvertRequest> for Request {
5318	    fn from(r: CurrencyconvertRequest) -> Self {
5319	        Request::CurrencyConvert(r)
5320	    }
5321	}
5322
5323	impl IntoRequest for CurrencyconvertRequest {
5324	    type Response = super::responses::CurrencyconvertResponse;
5325	}
5326
5327	impl TypedRequest for CurrencyconvertRequest {
5328	    type Response = super::responses::CurrencyconvertResponse;
5329
5330	    fn method(&self) -> &str {
5331	        "currencyconvert"
5332	    }
5333	}
5334	#[derive(Clone, Debug, Deserialize, Serialize)]
5335	pub struct CurrencyrateRequest {
5336	    #[serde(skip_serializing_if = "Option::is_none")]
5337	    pub source: Option<String>,
5338	    pub currency: String,
5339	}
5340
5341	impl From<CurrencyrateRequest> for Request {
5342	    fn from(r: CurrencyrateRequest) -> Self {
5343	        Request::CurrencyRate(r)
5344	    }
5345	}
5346
5347	impl IntoRequest for CurrencyrateRequest {
5348	    type Response = super::responses::CurrencyrateResponse;
5349	}
5350
5351	impl TypedRequest for CurrencyrateRequest {
5352	    type Response = super::responses::CurrencyrateResponse;
5353
5354	    fn method(&self) -> &str {
5355	        "currencyrate"
5356	    }
5357	}
5358	#[derive(Clone, Debug, Deserialize, Serialize)]
5359	pub struct SendamountRequest {
5360	    #[serde(skip_serializing_if = "Option::is_none")]
5361	    pub label: Option<String>,
5362	    #[serde(skip_serializing_if = "Option::is_none")]
5363	    pub maxdelay: Option<u32>,
5364	    #[serde(skip_serializing_if = "Option::is_none")]
5365	    pub maxfee: Option<Amount>,
5366	    #[serde(skip_serializing_if = "Option::is_none")]
5367	    pub payer_note: Option<String>,
5368	    #[serde(skip_serializing_if = "Option::is_none")]
5369	    pub retry_for: Option<u32>,
5370	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
5371	    pub layers: Option<Vec<String>>,
5372	    pub amount_msat: Amount,
5373	    pub invstring: String,
5374	}
5375
5376	impl From<SendamountRequest> for Request {
5377	    fn from(r: SendamountRequest) -> Self {
5378	        Request::SendAmount(r)
5379	    }
5380	}
5381
5382	impl IntoRequest for SendamountRequest {
5383	    type Response = super::responses::SendamountResponse;
5384	}
5385
5386	impl TypedRequest for SendamountRequest {
5387	    type Response = super::responses::SendamountResponse;
5388
5389	    fn method(&self) -> &str {
5390	        "sendamount"
5391	    }
5392	}
5393	#[derive(Clone, Debug, Deserialize, Serialize)]
5394	pub struct CreateproofRequest {
5395	    #[serde(skip_serializing_if = "Option::is_none")]
5396	    pub note: Option<String>,
5397	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
5398	    pub include: Option<Vec<ProofField>>,
5399	    pub invstring: String,
5400	}
5401
5402	impl From<CreateproofRequest> for Request {
5403	    fn from(r: CreateproofRequest) -> Self {
5404	        Request::CreateProof(r)
5405	    }
5406	}
5407
5408	impl IntoRequest for CreateproofRequest {
5409	    type Response = super::responses::CreateproofResponse;
5410	}
5411
5412	impl TypedRequest for CreateproofRequest {
5413	    type Response = super::responses::CreateproofResponse;
5414
5415	    fn method(&self) -> &str {
5416	        "createproof"
5417	    }
5418	}
5419	#[derive(Clone, Debug, Deserialize, Serialize)]
5420	pub struct XkeysendRequest {
5421	    #[serde(skip_serializing_if = "Option::is_none")]
5422	    pub extratlvs: Option<HashMap<String, String>>,
5423	    #[serde(skip_serializing_if = "Option::is_none")]
5424	    pub label: Option<String>,
5425	    #[serde(skip_serializing_if = "Option::is_none")]
5426	    pub maxdelay: Option<u32>,
5427	    #[serde(skip_serializing_if = "Option::is_none")]
5428	    pub maxfee: Option<Amount>,
5429	    #[serde(skip_serializing_if = "Option::is_none")]
5430	    pub retry_for: Option<u32>,
5431	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
5432	    pub layers: Option<Vec<String>>,
5433	    pub amount_msat: Amount,
5434	    pub destination: PublicKey,
5435	}
5436
5437	impl From<XkeysendRequest> for Request {
5438	    fn from(r: XkeysendRequest) -> Self {
5439	        Request::Xkeysend(r)
5440	    }
5441	}
5442
5443	impl IntoRequest for XkeysendRequest {
5444	    type Response = super::responses::XkeysendResponse;
5445	}
5446
5447	impl TypedRequest for XkeysendRequest {
5448	    type Response = super::responses::XkeysendResponse;
5449
5450	    fn method(&self) -> &str {
5451	        "xkeysend"
5452	    }
5453	}
5454	#[derive(Clone, Debug, Deserialize, Serialize)]
5455	pub struct GracefulRequest {
5456	    #[serde(skip_serializing_if = "Option::is_none")]
5457	    pub timeout: Option<u32>,
5458	}
5459
5460	impl From<GracefulRequest> for Request {
5461	    fn from(r: GracefulRequest) -> Self {
5462	        Request::Graceful(r)
5463	    }
5464	}
5465
5466	impl IntoRequest for GracefulRequest {
5467	    type Response = super::responses::GracefulResponse;
5468	}
5469
5470	impl TypedRequest for GracefulRequest {
5471	    type Response = super::responses::GracefulResponse;
5472
5473	    fn method(&self) -> &str {
5474	        "graceful"
5475	    }
5476	}
5477}
5478
5479
5480pub mod responses {
5481    #[allow(unused_imports)]
5482    use crate::primitives::*;
5483    #[allow(unused_imports)]
5484    use serde::{{Deserialize, Serialize}};
5485    use super::{TryFromResponseError, Response};
5486
5487	#[derive(Clone, Debug, Deserialize, Serialize)]
5488	pub struct GetinfoOurFeatures {
5489	    pub channel: String,
5490	    pub init: String,
5491	    pub invoice: String,
5492	    pub node: String,
5493	}
5494
5495	/// ['Type of connection.']
5496	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
5497	#[allow(non_camel_case_types)]
5498	pub enum GetinfoBindingType {
5499	    #[serde(rename = "local socket")]
5500	    LOCAL_SOCKET = 0,
5501	    #[serde(rename = "ipv4")]
5502	    IPV4 = 1,
5503	    #[serde(rename = "ipv6")]
5504	    IPV6 = 2,
5505	    #[serde(rename = "torv2")]
5506	    TORV2 = 3,
5507	    #[serde(rename = "torv3")]
5508	    TORV3 = 4,
5509	    #[serde(rename = "websocket")]
5510	    WEBSOCKET = 5,
5511	}
5512
5513	impl TryFrom<i32> for GetinfoBindingType {
5514	    type Error = anyhow::Error;
5515	    fn try_from(c: i32) -> Result<GetinfoBindingType, anyhow::Error> {
5516	        match c {
5517	    0 => Ok(GetinfoBindingType::LOCAL_SOCKET),
5518	    1 => Ok(GetinfoBindingType::IPV4),
5519	    2 => Ok(GetinfoBindingType::IPV6),
5520	    3 => Ok(GetinfoBindingType::TORV2),
5521	    4 => Ok(GetinfoBindingType::TORV3),
5522	    5 => Ok(GetinfoBindingType::WEBSOCKET),
5523	            o => Err(anyhow::anyhow!("Unknown variant {} for enum GetinfoBindingType", o)),
5524	        }
5525	    }
5526	}
5527
5528	impl ToString for GetinfoBindingType {
5529	    fn to_string(&self) -> String {
5530	        match self {
5531	            GetinfoBindingType::LOCAL_SOCKET => "LOCAL_SOCKET",
5532	            GetinfoBindingType::WEBSOCKET => "WEBSOCKET",
5533	            GetinfoBindingType::IPV4 => "IPV4",
5534	            GetinfoBindingType::IPV6 => "IPV6",
5535	            GetinfoBindingType::TORV2 => "TORV2",
5536	            GetinfoBindingType::TORV3 => "TORV3",
5537	        }.to_string()
5538	    }
5539	}
5540
5541	#[derive(Clone, Debug, Deserialize, Serialize)]
5542	pub struct GetinfoBinding {
5543	    #[serde(skip_serializing_if = "Option::is_none")]
5544	    pub address: Option<String>,
5545	    #[serde(skip_serializing_if = "Option::is_none")]
5546	    pub port: Option<u16>,
5547	    #[serde(skip_serializing_if = "Option::is_none")]
5548	    pub socket: Option<String>,
5549	    #[serde(skip_serializing_if = "Option::is_none")]
5550	    pub subtype: Option<String>,
5551	    // Path `Getinfo.binding[].type`
5552	    #[serde(rename = "type")]
5553	    pub item_type: GetinfoBindingType,
5554	}
5555
5556	/// ['Type of connection (until 23.08, `websocket` was also allowed).']
5557	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
5558	#[allow(non_camel_case_types)]
5559	pub enum GetinfoAddressType {
5560	    #[serde(rename = "dns")]
5561	    DNS = 0,
5562	    #[serde(rename = "ipv4")]
5563	    IPV4 = 1,
5564	    #[serde(rename = "ipv6")]
5565	    IPV6 = 2,
5566	    #[serde(rename = "torv2")]
5567	    TORV2 = 3,
5568	    #[serde(rename = "torv3")]
5569	    TORV3 = 4,
5570	}
5571
5572	impl TryFrom<i32> for GetinfoAddressType {
5573	    type Error = anyhow::Error;
5574	    fn try_from(c: i32) -> Result<GetinfoAddressType, anyhow::Error> {
5575	        match c {
5576	    0 => Ok(GetinfoAddressType::DNS),
5577	    1 => Ok(GetinfoAddressType::IPV4),
5578	    2 => Ok(GetinfoAddressType::IPV6),
5579	    3 => Ok(GetinfoAddressType::TORV2),
5580	    4 => Ok(GetinfoAddressType::TORV3),
5581	            o => Err(anyhow::anyhow!("Unknown variant {} for enum GetinfoAddressType", o)),
5582	        }
5583	    }
5584	}
5585
5586	impl ToString for GetinfoAddressType {
5587	    fn to_string(&self) -> String {
5588	        match self {
5589	            GetinfoAddressType::DNS => "DNS",
5590	            GetinfoAddressType::IPV4 => "IPV4",
5591	            GetinfoAddressType::IPV6 => "IPV6",
5592	            GetinfoAddressType::TORV2 => "TORV2",
5593	            GetinfoAddressType::TORV3 => "TORV3",
5594	        }.to_string()
5595	    }
5596	}
5597
5598	#[derive(Clone, Debug, Deserialize, Serialize)]
5599	pub struct GetinfoAddress {
5600	    #[serde(skip_serializing_if = "Option::is_none")]
5601	    pub address: Option<String>,
5602	    // Path `Getinfo.address[].type`
5603	    #[serde(rename = "type")]
5604	    pub item_type: GetinfoAddressType,
5605	    pub port: u16,
5606	}
5607
5608	#[derive(Clone, Debug, Deserialize, Serialize)]
5609	pub struct GetinfoResponse {
5610	    #[serde(rename = "lightning-dir")]
5611	    pub lightning_dir: String,
5612	    #[serde(skip_serializing_if = "Option::is_none")]
5613	    pub our_features: Option<GetinfoOurFeatures>,
5614	    #[serde(skip_serializing_if = "Option::is_none")]
5615	    pub warning_bitcoind_sync: Option<String>,
5616	    #[serde(skip_serializing_if = "Option::is_none")]
5617	    pub warning_lightningd_sync: Option<String>,
5618	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
5619	    pub binding: Option<Vec<GetinfoBinding>>,
5620	    pub address: Vec<GetinfoAddress>,
5621	    pub alias: String,
5622	    pub blockheight: u32,
5623	    pub color: String,
5624	    pub fees_collected_msat: Amount,
5625	    pub id: PublicKey,
5626	    pub network: String,
5627	    pub num_active_channels: u32,
5628	    pub num_inactive_channels: u32,
5629	    pub num_peers: u32,
5630	    pub num_pending_channels: u32,
5631	    pub version: String,
5632	}
5633
5634	impl TryFrom<Response> for GetinfoResponse {
5635	    type Error = super::TryFromResponseError;
5636
5637	    fn try_from(response: Response) -> Result<Self, Self::Error> {
5638	        match response {
5639	            Response::Getinfo(response) => Ok(response),
5640	            _ => Err(TryFromResponseError)
5641	        }
5642	    }
5643	}
5644
5645	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
5646	#[allow(non_camel_case_types)]
5647	pub enum ListpeersPeersLogType {
5648	    #[serde(rename = "SKIPPED")]
5649	    SKIPPED = 0,
5650	    #[serde(rename = "BROKEN")]
5651	    BROKEN = 1,
5652	    #[serde(rename = "UNUSUAL")]
5653	    UNUSUAL = 2,
5654	    #[serde(rename = "INFO")]
5655	    INFO = 3,
5656	    #[serde(rename = "DEBUG")]
5657	    DEBUG = 4,
5658	    #[serde(rename = "IO_IN")]
5659	    IO_IN = 5,
5660	    #[serde(rename = "IO_OUT")]
5661	    IO_OUT = 6,
5662	    #[serde(rename = "TRACE")]
5663	    TRACE = 7,
5664	}
5665
5666	impl TryFrom<i32> for ListpeersPeersLogType {
5667	    type Error = anyhow::Error;
5668	    fn try_from(c: i32) -> Result<ListpeersPeersLogType, anyhow::Error> {
5669	        match c {
5670	    0 => Ok(ListpeersPeersLogType::SKIPPED),
5671	    1 => Ok(ListpeersPeersLogType::BROKEN),
5672	    2 => Ok(ListpeersPeersLogType::UNUSUAL),
5673	    3 => Ok(ListpeersPeersLogType::INFO),
5674	    4 => Ok(ListpeersPeersLogType::DEBUG),
5675	    5 => Ok(ListpeersPeersLogType::IO_IN),
5676	    6 => Ok(ListpeersPeersLogType::IO_OUT),
5677	    7 => Ok(ListpeersPeersLogType::TRACE),
5678	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListpeersPeersLogType", o)),
5679	        }
5680	    }
5681	}
5682
5683	impl ToString for ListpeersPeersLogType {
5684	    fn to_string(&self) -> String {
5685	        match self {
5686	            ListpeersPeersLogType::SKIPPED => "SKIPPED",
5687	            ListpeersPeersLogType::BROKEN => "BROKEN",
5688	            ListpeersPeersLogType::UNUSUAL => "UNUSUAL",
5689	            ListpeersPeersLogType::INFO => "INFO",
5690	            ListpeersPeersLogType::DEBUG => "DEBUG",
5691	            ListpeersPeersLogType::TRACE => "TRACE",
5692	            ListpeersPeersLogType::IO_IN => "IO_IN",
5693	            ListpeersPeersLogType::IO_OUT => "IO_OUT",
5694	        }.to_string()
5695	    }
5696	}
5697
5698	#[derive(Clone, Debug, Deserialize, Serialize)]
5699	pub struct ListpeersPeersLog {
5700	    #[serde(skip_serializing_if = "Option::is_none")]
5701	    pub data: Option<String>,
5702	    #[serde(skip_serializing_if = "Option::is_none")]
5703	    pub log: Option<String>,
5704	    #[serde(skip_serializing_if = "Option::is_none")]
5705	    pub node_id: Option<PublicKey>,
5706	    #[serde(skip_serializing_if = "Option::is_none")]
5707	    pub num_skipped: Option<u32>,
5708	    #[serde(skip_serializing_if = "Option::is_none")]
5709	    pub source: Option<String>,
5710	    #[serde(skip_serializing_if = "Option::is_none")]
5711	    pub time: Option<String>,
5712	    // Path `ListPeers.peers[].log[].type`
5713	    #[serde(rename = "type")]
5714	    pub item_type: ListpeersPeersLogType,
5715	}
5716
5717	#[derive(Clone, Debug, Deserialize, Serialize)]
5718	pub struct ListpeersPeers {
5719	    #[serde(skip_serializing_if = "Option::is_none")]
5720	    pub features: Option<String>,
5721	    #[serde(skip_serializing_if = "Option::is_none")]
5722	    pub remote_addr: Option<String>,
5723	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
5724	    pub log: Option<Vec<ListpeersPeersLog>>,
5725	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
5726	    pub netaddr: Option<Vec<String>>,
5727	    pub connected: bool,
5728	    pub id: PublicKey,
5729	    pub num_channels: u32,
5730	}
5731
5732	#[derive(Clone, Debug, Deserialize, Serialize)]
5733	pub struct ListpeersResponse {
5734	    pub peers: Vec<ListpeersPeers>,
5735	}
5736
5737	impl TryFrom<Response> for ListpeersResponse {
5738	    type Error = super::TryFromResponseError;
5739
5740	    fn try_from(response: Response) -> Result<Self, Self::Error> {
5741	        match response {
5742	            Response::ListPeers(response) => Ok(response),
5743	            _ => Err(TryFromResponseError)
5744	        }
5745	    }
5746	}
5747
5748	#[derive(Clone, Debug, Deserialize, Serialize)]
5749	pub struct ListfundsChannels {
5750	    #[serde(skip_serializing_if = "Option::is_none")]
5751	    pub short_channel_id: Option<ShortChannelId>,
5752	    // Path `ListFunds.channels[].state`
5753	    pub state: ChannelState,
5754	    pub amount_msat: Amount,
5755	    pub channel_id: Sha256,
5756	    pub connected: bool,
5757	    pub funding_output: u32,
5758	    pub funding_txid: String,
5759	    pub our_amount_msat: Amount,
5760	    pub peer_id: PublicKey,
5761	}
5762
5763	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
5764	#[allow(non_camel_case_types)]
5765	pub enum ListfundsOutputsStatus {
5766	    #[serde(rename = "unconfirmed")]
5767	    UNCONFIRMED = 0,
5768	    #[serde(rename = "confirmed")]
5769	    CONFIRMED = 1,
5770	    #[serde(rename = "spent")]
5771	    SPENT = 2,
5772	    #[serde(rename = "immature")]
5773	    IMMATURE = 3,
5774	}
5775
5776	impl TryFrom<i32> for ListfundsOutputsStatus {
5777	    type Error = anyhow::Error;
5778	    fn try_from(c: i32) -> Result<ListfundsOutputsStatus, anyhow::Error> {
5779	        match c {
5780	    0 => Ok(ListfundsOutputsStatus::UNCONFIRMED),
5781	    1 => Ok(ListfundsOutputsStatus::CONFIRMED),
5782	    2 => Ok(ListfundsOutputsStatus::SPENT),
5783	    3 => Ok(ListfundsOutputsStatus::IMMATURE),
5784	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListfundsOutputsStatus", o)),
5785	        }
5786	    }
5787	}
5788
5789	impl ToString for ListfundsOutputsStatus {
5790	    fn to_string(&self) -> String {
5791	        match self {
5792	            ListfundsOutputsStatus::UNCONFIRMED => "UNCONFIRMED",
5793	            ListfundsOutputsStatus::CONFIRMED => "CONFIRMED",
5794	            ListfundsOutputsStatus::SPENT => "SPENT",
5795	            ListfundsOutputsStatus::IMMATURE => "IMMATURE",
5796	        }.to_string()
5797	    }
5798	}
5799
5800	#[derive(Clone, Debug, Deserialize, Serialize)]
5801	pub struct ListfundsOutputs {
5802	    #[serde(skip_serializing_if = "Option::is_none")]
5803	    pub address: Option<String>,
5804	    #[serde(skip_serializing_if = "Option::is_none")]
5805	    pub blockheight: Option<u32>,
5806	    #[serde(skip_serializing_if = "Option::is_none")]
5807	    pub redeemscript: Option<String>,
5808	    #[serde(skip_serializing_if = "Option::is_none")]
5809	    pub reserved_to_block: Option<u32>,
5810	    // Path `ListFunds.outputs[].status`
5811	    pub status: ListfundsOutputsStatus,
5812	    pub amount_msat: Amount,
5813	    pub output: u32,
5814	    pub reserved: bool,
5815	    pub scriptpubkey: String,
5816	    pub txid: String,
5817	}
5818
5819	#[derive(Clone, Debug, Deserialize, Serialize)]
5820	pub struct ListfundsResponse {
5821	    pub channels: Vec<ListfundsChannels>,
5822	    pub outputs: Vec<ListfundsOutputs>,
5823	}
5824
5825	impl TryFrom<Response> for ListfundsResponse {
5826	    type Error = super::TryFromResponseError;
5827
5828	    fn try_from(response: Response) -> Result<Self, Self::Error> {
5829	        match response {
5830	            Response::ListFunds(response) => Ok(response),
5831	            _ => Err(TryFromResponseError)
5832	        }
5833	    }
5834	}
5835
5836	/// ['Status of the payment (could be complete if already sent previously).']
5837	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
5838	#[allow(non_camel_case_types)]
5839	pub enum SendpayStatus {
5840	    #[serde(rename = "pending")]
5841	    PENDING = 0,
5842	    #[serde(rename = "complete")]
5843	    COMPLETE = 1,
5844	}
5845
5846	impl TryFrom<i32> for SendpayStatus {
5847	    type Error = anyhow::Error;
5848	    fn try_from(c: i32) -> Result<SendpayStatus, anyhow::Error> {
5849	        match c {
5850	    0 => Ok(SendpayStatus::PENDING),
5851	    1 => Ok(SendpayStatus::COMPLETE),
5852	            o => Err(anyhow::anyhow!("Unknown variant {} for enum SendpayStatus", o)),
5853	        }
5854	    }
5855	}
5856
5857	impl ToString for SendpayStatus {
5858	    fn to_string(&self) -> String {
5859	        match self {
5860	            SendpayStatus::PENDING => "PENDING",
5861	            SendpayStatus::COMPLETE => "COMPLETE",
5862	        }.to_string()
5863	    }
5864	}
5865
5866	#[derive(Clone, Debug, Deserialize, Serialize)]
5867	pub struct SendpayResponse {
5868	    #[serde(skip_serializing_if = "Option::is_none")]
5869	    pub amount_msat: Option<Amount>,
5870	    #[serde(skip_serializing_if = "Option::is_none")]
5871	    pub bolt11: Option<String>,
5872	    #[serde(skip_serializing_if = "Option::is_none")]
5873	    pub bolt12: Option<String>,
5874	    #[serde(skip_serializing_if = "Option::is_none")]
5875	    pub completed_at: Option<u64>,
5876	    #[serde(skip_serializing_if = "Option::is_none")]
5877	    pub destination: Option<PublicKey>,
5878	    #[serde(skip_serializing_if = "Option::is_none")]
5879	    pub groupid: Option<u64>,
5880	    #[serde(skip_serializing_if = "Option::is_none")]
5881	    pub label: Option<String>,
5882	    #[serde(skip_serializing_if = "Option::is_none")]
5883	    pub message: Option<String>,
5884	    #[serde(skip_serializing_if = "Option::is_none")]
5885	    pub partid: Option<u64>,
5886	    #[serde(skip_serializing_if = "Option::is_none")]
5887	    pub payment_preimage: Option<Secret>,
5888	    #[serde(skip_serializing_if = "Option::is_none")]
5889	    pub updated_index: Option<u64>,
5890	    // Path `SendPay.status`
5891	    pub status: SendpayStatus,
5892	    pub amount_sent_msat: Amount,
5893	    pub created_at: u64,
5894	    pub created_index: u64,
5895	    pub id: u64,
5896	    pub payment_hash: Sha256,
5897	}
5898
5899	impl TryFrom<Response> for SendpayResponse {
5900	    type Error = super::TryFromResponseError;
5901
5902	    fn try_from(response: Response) -> Result<Self, Self::Error> {
5903	        match response {
5904	            Response::SendPay(response) => Ok(response),
5905	            _ => Err(TryFromResponseError)
5906	        }
5907	    }
5908	}
5909
5910	#[derive(Clone, Debug, Deserialize, Serialize)]
5911	pub struct ListchannelsChannels {
5912	    #[serde(skip_serializing_if = "Option::is_none")]
5913	    pub htlc_maximum_msat: Option<Amount>,
5914	    pub active: bool,
5915	    pub amount_msat: Amount,
5916	    pub base_fee_millisatoshi: u32,
5917	    pub channel_flags: u8,
5918	    pub delay: u32,
5919	    pub destination: PublicKey,
5920	    pub direction: u32,
5921	    pub features: String,
5922	    pub fee_per_millionth: u32,
5923	    pub htlc_minimum_msat: Amount,
5924	    pub last_update: u32,
5925	    pub message_flags: u8,
5926	    pub public: bool,
5927	    pub short_channel_id: ShortChannelId,
5928	    pub source: PublicKey,
5929	}
5930
5931	#[derive(Clone, Debug, Deserialize, Serialize)]
5932	pub struct ListchannelsResponse {
5933	    pub channels: Vec<ListchannelsChannels>,
5934	}
5935
5936	impl TryFrom<Response> for ListchannelsResponse {
5937	    type Error = super::TryFromResponseError;
5938
5939	    fn try_from(response: Response) -> Result<Self, Self::Error> {
5940	        match response {
5941	            Response::ListChannels(response) => Ok(response),
5942	            _ => Err(TryFromResponseError)
5943	        }
5944	    }
5945	}
5946
5947	#[derive(Clone, Debug, Deserialize, Serialize)]
5948	pub struct AddgossipResponse {
5949	}
5950
5951	impl TryFrom<Response> for AddgossipResponse {
5952	    type Error = super::TryFromResponseError;
5953
5954	    fn try_from(response: Response) -> Result<Self, Self::Error> {
5955	        match response {
5956	            Response::AddGossip(response) => Ok(response),
5957	            _ => Err(TryFromResponseError)
5958	        }
5959	    }
5960	}
5961
5962	#[derive(Clone, Debug, Deserialize, Serialize)]
5963	pub struct AddpsbtoutputResponse {
5964	    pub estimated_added_weight: u32,
5965	    pub outnum: u32,
5966	    pub psbt: String,
5967	}
5968
5969	impl TryFrom<Response> for AddpsbtoutputResponse {
5970	    type Error = super::TryFromResponseError;
5971
5972	    fn try_from(response: Response) -> Result<Self, Self::Error> {
5973	        match response {
5974	            Response::AddPsbtOutput(response) => Ok(response),
5975	            _ => Err(TryFromResponseError)
5976	        }
5977	    }
5978	}
5979
5980	#[derive(Clone, Debug, Deserialize, Serialize)]
5981	pub struct AutocleanonceAutocleanExpiredinvoices {
5982	    pub cleaned: u64,
5983	    pub uncleaned: u64,
5984	}
5985
5986	#[derive(Clone, Debug, Deserialize, Serialize)]
5987	pub struct AutocleanonceAutocleanFailedforwards {
5988	    pub cleaned: u64,
5989	    pub uncleaned: u64,
5990	}
5991
5992	#[derive(Clone, Debug, Deserialize, Serialize)]
5993	pub struct AutocleanonceAutocleanFailedpays {
5994	    pub cleaned: u64,
5995	    pub uncleaned: u64,
5996	}
5997
5998	#[derive(Clone, Debug, Deserialize, Serialize)]
5999	pub struct AutocleanonceAutocleanNetworkevents {
6000	    pub cleaned: u64,
6001	    pub uncleaned: u64,
6002	}
6003
6004	#[derive(Clone, Debug, Deserialize, Serialize)]
6005	pub struct AutocleanonceAutocleanPaidinvoices {
6006	    pub cleaned: u64,
6007	    pub uncleaned: u64,
6008	}
6009
6010	#[derive(Clone, Debug, Deserialize, Serialize)]
6011	pub struct AutocleanonceAutocleanSucceededforwards {
6012	    pub cleaned: u64,
6013	    pub uncleaned: u64,
6014	}
6015
6016	#[derive(Clone, Debug, Deserialize, Serialize)]
6017	pub struct AutocleanonceAutocleanSucceededpays {
6018	    pub cleaned: u64,
6019	    pub uncleaned: u64,
6020	}
6021
6022	#[derive(Clone, Debug, Deserialize, Serialize)]
6023	pub struct AutocleanonceAutoclean {
6024	    #[serde(skip_serializing_if = "Option::is_none")]
6025	    pub expiredinvoices: Option<AutocleanonceAutocleanExpiredinvoices>,
6026	    #[serde(skip_serializing_if = "Option::is_none")]
6027	    pub failedforwards: Option<AutocleanonceAutocleanFailedforwards>,
6028	    #[serde(skip_serializing_if = "Option::is_none")]
6029	    pub failedpays: Option<AutocleanonceAutocleanFailedpays>,
6030	    #[serde(skip_serializing_if = "Option::is_none")]
6031	    pub networkevents: Option<AutocleanonceAutocleanNetworkevents>,
6032	    #[serde(skip_serializing_if = "Option::is_none")]
6033	    pub paidinvoices: Option<AutocleanonceAutocleanPaidinvoices>,
6034	    #[serde(skip_serializing_if = "Option::is_none")]
6035	    pub succeededforwards: Option<AutocleanonceAutocleanSucceededforwards>,
6036	    #[serde(skip_serializing_if = "Option::is_none")]
6037	    pub succeededpays: Option<AutocleanonceAutocleanSucceededpays>,
6038	}
6039
6040	#[derive(Clone, Debug, Deserialize, Serialize)]
6041	pub struct AutocleanonceResponse {
6042	    pub autoclean: AutocleanonceAutoclean,
6043	}
6044
6045	impl TryFrom<Response> for AutocleanonceResponse {
6046	    type Error = super::TryFromResponseError;
6047
6048	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6049	        match response {
6050	            Response::AutoCleanOnce(response) => Ok(response),
6051	            _ => Err(TryFromResponseError)
6052	        }
6053	    }
6054	}
6055
6056	#[derive(Clone, Debug, Deserialize, Serialize)]
6057	pub struct AutocleanstatusAutocleanExpiredinvoices {
6058	    #[serde(skip_serializing_if = "Option::is_none")]
6059	    pub age: Option<u64>,
6060	    pub cleaned: u64,
6061	    pub enabled: bool,
6062	}
6063
6064	#[derive(Clone, Debug, Deserialize, Serialize)]
6065	pub struct AutocleanstatusAutocleanFailedforwards {
6066	    #[serde(skip_serializing_if = "Option::is_none")]
6067	    pub age: Option<u64>,
6068	    pub cleaned: u64,
6069	    pub enabled: bool,
6070	}
6071
6072	#[derive(Clone, Debug, Deserialize, Serialize)]
6073	pub struct AutocleanstatusAutocleanFailedpays {
6074	    #[serde(skip_serializing_if = "Option::is_none")]
6075	    pub age: Option<u64>,
6076	    pub cleaned: u64,
6077	    pub enabled: bool,
6078	}
6079
6080	#[derive(Clone, Debug, Deserialize, Serialize)]
6081	pub struct AutocleanstatusAutocleanNetworkevents {
6082	    #[serde(skip_serializing_if = "Option::is_none")]
6083	    pub age: Option<u64>,
6084	    pub cleaned: u64,
6085	    pub enabled: bool,
6086	}
6087
6088	#[derive(Clone, Debug, Deserialize, Serialize)]
6089	pub struct AutocleanstatusAutocleanPaidinvoices {
6090	    #[serde(skip_serializing_if = "Option::is_none")]
6091	    pub age: Option<u64>,
6092	    pub cleaned: u64,
6093	    pub enabled: bool,
6094	}
6095
6096	#[derive(Clone, Debug, Deserialize, Serialize)]
6097	pub struct AutocleanstatusAutocleanSucceededforwards {
6098	    #[serde(skip_serializing_if = "Option::is_none")]
6099	    pub age: Option<u64>,
6100	    pub cleaned: u64,
6101	    pub enabled: bool,
6102	}
6103
6104	#[derive(Clone, Debug, Deserialize, Serialize)]
6105	pub struct AutocleanstatusAutocleanSucceededpays {
6106	    #[serde(skip_serializing_if = "Option::is_none")]
6107	    pub age: Option<u64>,
6108	    pub cleaned: u64,
6109	    pub enabled: bool,
6110	}
6111
6112	#[derive(Clone, Debug, Deserialize, Serialize)]
6113	pub struct AutocleanstatusAutoclean {
6114	    #[serde(skip_serializing_if = "Option::is_none")]
6115	    pub expiredinvoices: Option<AutocleanstatusAutocleanExpiredinvoices>,
6116	    #[serde(skip_serializing_if = "Option::is_none")]
6117	    pub failedforwards: Option<AutocleanstatusAutocleanFailedforwards>,
6118	    #[serde(skip_serializing_if = "Option::is_none")]
6119	    pub failedpays: Option<AutocleanstatusAutocleanFailedpays>,
6120	    #[serde(skip_serializing_if = "Option::is_none")]
6121	    pub networkevents: Option<AutocleanstatusAutocleanNetworkevents>,
6122	    #[serde(skip_serializing_if = "Option::is_none")]
6123	    pub paidinvoices: Option<AutocleanstatusAutocleanPaidinvoices>,
6124	    #[serde(skip_serializing_if = "Option::is_none")]
6125	    pub succeededforwards: Option<AutocleanstatusAutocleanSucceededforwards>,
6126	    #[serde(skip_serializing_if = "Option::is_none")]
6127	    pub succeededpays: Option<AutocleanstatusAutocleanSucceededpays>,
6128	}
6129
6130	#[derive(Clone, Debug, Deserialize, Serialize)]
6131	pub struct AutocleanstatusResponse {
6132	    pub autoclean: AutocleanstatusAutoclean,
6133	}
6134
6135	impl TryFrom<Response> for AutocleanstatusResponse {
6136	    type Error = super::TryFromResponseError;
6137
6138	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6139	        match response {
6140	            Response::AutoCleanStatus(response) => Ok(response),
6141	            _ => Err(TryFromResponseError)
6142	        }
6143	    }
6144	}
6145
6146	#[derive(Clone, Debug, Deserialize, Serialize)]
6147	pub struct CheckmessageResponse {
6148	    pub pubkey: PublicKey,
6149	    pub verified: bool,
6150	}
6151
6152	impl TryFrom<Response> for CheckmessageResponse {
6153	    type Error = super::TryFromResponseError;
6154
6155	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6156	        match response {
6157	            Response::CheckMessage(response) => Ok(response),
6158	            _ => Err(TryFromResponseError)
6159	        }
6160	    }
6161	}
6162
6163	/// ['Whether we successfully negotiated a mutual close, closed without them, or discarded not-yet-opened channel.']
6164	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
6165	#[allow(non_camel_case_types)]
6166	pub enum CloseType {
6167	    #[serde(rename = "mutual")]
6168	    MUTUAL = 0,
6169	    #[serde(rename = "unilateral")]
6170	    UNILATERAL = 1,
6171	    #[serde(rename = "unopened")]
6172	    UNOPENED = 2,
6173	}
6174
6175	impl TryFrom<i32> for CloseType {
6176	    type Error = anyhow::Error;
6177	    fn try_from(c: i32) -> Result<CloseType, anyhow::Error> {
6178	        match c {
6179	    0 => Ok(CloseType::MUTUAL),
6180	    1 => Ok(CloseType::UNILATERAL),
6181	    2 => Ok(CloseType::UNOPENED),
6182	            o => Err(anyhow::anyhow!("Unknown variant {} for enum CloseType", o)),
6183	        }
6184	    }
6185	}
6186
6187	impl ToString for CloseType {
6188	    fn to_string(&self) -> String {
6189	        match self {
6190	            CloseType::MUTUAL => "MUTUAL",
6191	            CloseType::UNILATERAL => "UNILATERAL",
6192	            CloseType::UNOPENED => "UNOPENED",
6193	        }.to_string()
6194	    }
6195	}
6196
6197	#[derive(Clone, Debug, Deserialize, Serialize)]
6198	pub struct CloseResponse {
6199	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
6200	    pub txids: Option<Vec<String>>,
6201	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
6202	    pub txs: Option<Vec<String>>,
6203	    // Path `Close.type`
6204	    #[serde(rename = "type")]
6205	    pub item_type: CloseType,
6206	}
6207
6208	impl TryFrom<Response> for CloseResponse {
6209	    type Error = super::TryFromResponseError;
6210
6211	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6212	        match response {
6213	            Response::Close(response) => Ok(response),
6214	            _ => Err(TryFromResponseError)
6215	        }
6216	    }
6217	}
6218
6219	/// ['Whether they initiated connection or we did.']
6220	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
6221	#[allow(non_camel_case_types)]
6222	pub enum ConnectDirection {
6223	    #[serde(rename = "in")]
6224	    IN = 0,
6225	    #[serde(rename = "out")]
6226	    OUT = 1,
6227	}
6228
6229	impl TryFrom<i32> for ConnectDirection {
6230	    type Error = anyhow::Error;
6231	    fn try_from(c: i32) -> Result<ConnectDirection, anyhow::Error> {
6232	        match c {
6233	    0 => Ok(ConnectDirection::IN),
6234	    1 => Ok(ConnectDirection::OUT),
6235	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ConnectDirection", o)),
6236	        }
6237	    }
6238	}
6239
6240	impl ToString for ConnectDirection {
6241	    fn to_string(&self) -> String {
6242	        match self {
6243	            ConnectDirection::IN => "IN",
6244	            ConnectDirection::OUT => "OUT",
6245	        }.to_string()
6246	    }
6247	}
6248
6249	/// ['Type of connection (*torv2*/*torv3* only if **direction** is *out*).']
6250	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
6251	#[allow(non_camel_case_types)]
6252	pub enum ConnectAddressType {
6253	    #[serde(rename = "local socket")]
6254	    LOCAL_SOCKET = 0,
6255	    #[serde(rename = "ipv4")]
6256	    IPV4 = 1,
6257	    #[serde(rename = "ipv6")]
6258	    IPV6 = 2,
6259	    #[serde(rename = "torv2")]
6260	    TORV2 = 3,
6261	    #[serde(rename = "torv3")]
6262	    TORV3 = 4,
6263	}
6264
6265	impl TryFrom<i32> for ConnectAddressType {
6266	    type Error = anyhow::Error;
6267	    fn try_from(c: i32) -> Result<ConnectAddressType, anyhow::Error> {
6268	        match c {
6269	    0 => Ok(ConnectAddressType::LOCAL_SOCKET),
6270	    1 => Ok(ConnectAddressType::IPV4),
6271	    2 => Ok(ConnectAddressType::IPV6),
6272	    3 => Ok(ConnectAddressType::TORV2),
6273	    4 => Ok(ConnectAddressType::TORV3),
6274	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ConnectAddressType", o)),
6275	        }
6276	    }
6277	}
6278
6279	impl ToString for ConnectAddressType {
6280	    fn to_string(&self) -> String {
6281	        match self {
6282	            ConnectAddressType::LOCAL_SOCKET => "LOCAL_SOCKET",
6283	            ConnectAddressType::IPV4 => "IPV4",
6284	            ConnectAddressType::IPV6 => "IPV6",
6285	            ConnectAddressType::TORV2 => "TORV2",
6286	            ConnectAddressType::TORV3 => "TORV3",
6287	        }.to_string()
6288	    }
6289	}
6290
6291	#[derive(Clone, Debug, Deserialize, Serialize)]
6292	pub struct ConnectAddress {
6293	    #[serde(skip_serializing_if = "Option::is_none")]
6294	    pub address: Option<String>,
6295	    #[serde(skip_serializing_if = "Option::is_none")]
6296	    pub port: Option<u16>,
6297	    #[serde(skip_serializing_if = "Option::is_none")]
6298	    pub socket: Option<String>,
6299	    // Path `Connect.address.type`
6300	    #[serde(rename = "type")]
6301	    pub item_type: ConnectAddressType,
6302	}
6303
6304	#[derive(Clone, Debug, Deserialize, Serialize)]
6305	pub struct ConnectResponse {
6306	    // Path `Connect.direction`
6307	    pub direction: ConnectDirection,
6308	    pub address: ConnectAddress,
6309	    pub features: String,
6310	    pub id: PublicKey,
6311	}
6312
6313	impl TryFrom<Response> for ConnectResponse {
6314	    type Error = super::TryFromResponseError;
6315
6316	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6317	        match response {
6318	            Response::Connect(response) => Ok(response),
6319	            _ => Err(TryFromResponseError)
6320	        }
6321	    }
6322	}
6323
6324	#[derive(Clone, Debug, Deserialize, Serialize)]
6325	pub struct CreateinvoicePaidOutpoint {
6326	    pub outnum: u32,
6327	    pub txid: String,
6328	}
6329
6330	/// ['Whether it has been paid, or can no longer be paid.']
6331	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
6332	#[allow(non_camel_case_types)]
6333	pub enum CreateinvoiceStatus {
6334	    #[serde(rename = "paid")]
6335	    PAID = 0,
6336	    #[serde(rename = "expired")]
6337	    EXPIRED = 1,
6338	    #[serde(rename = "unpaid")]
6339	    UNPAID = 2,
6340	}
6341
6342	impl TryFrom<i32> for CreateinvoiceStatus {
6343	    type Error = anyhow::Error;
6344	    fn try_from(c: i32) -> Result<CreateinvoiceStatus, anyhow::Error> {
6345	        match c {
6346	    0 => Ok(CreateinvoiceStatus::PAID),
6347	    1 => Ok(CreateinvoiceStatus::EXPIRED),
6348	    2 => Ok(CreateinvoiceStatus::UNPAID),
6349	            o => Err(anyhow::anyhow!("Unknown variant {} for enum CreateinvoiceStatus", o)),
6350	        }
6351	    }
6352	}
6353
6354	impl ToString for CreateinvoiceStatus {
6355	    fn to_string(&self) -> String {
6356	        match self {
6357	            CreateinvoiceStatus::PAID => "PAID",
6358	            CreateinvoiceStatus::EXPIRED => "EXPIRED",
6359	            CreateinvoiceStatus::UNPAID => "UNPAID",
6360	        }.to_string()
6361	    }
6362	}
6363
6364	#[derive(Clone, Debug, Deserialize, Serialize)]
6365	pub struct CreateinvoiceResponse {
6366	    #[serde(skip_serializing_if = "Option::is_none")]
6367	    pub amount_msat: Option<Amount>,
6368	    #[serde(skip_serializing_if = "Option::is_none")]
6369	    pub amount_received_msat: Option<Amount>,
6370	    #[serde(skip_serializing_if = "Option::is_none")]
6371	    pub bolt11: Option<String>,
6372	    #[serde(skip_serializing_if = "Option::is_none")]
6373	    pub bolt12: Option<String>,
6374	    #[serde(skip_serializing_if = "Option::is_none")]
6375	    pub invreq_payer_note: Option<String>,
6376	    #[serde(skip_serializing_if = "Option::is_none")]
6377	    pub local_offer_id: Option<String>,
6378	    #[serde(skip_serializing_if = "Option::is_none")]
6379	    pub paid_at: Option<u64>,
6380	    #[serde(skip_serializing_if = "Option::is_none")]
6381	    pub paid_outpoint: Option<CreateinvoicePaidOutpoint>,
6382	    #[serde(skip_serializing_if = "Option::is_none")]
6383	    pub pay_index: Option<u64>,
6384	    #[serde(skip_serializing_if = "Option::is_none")]
6385	    pub payment_preimage: Option<Secret>,
6386	    // Path `CreateInvoice.status`
6387	    pub status: CreateinvoiceStatus,
6388	    pub created_index: u64,
6389	    pub description: String,
6390	    pub expires_at: u64,
6391	    pub label: String,
6392	    pub payment_hash: Sha256,
6393	}
6394
6395	impl TryFrom<Response> for CreateinvoiceResponse {
6396	    type Error = super::TryFromResponseError;
6397
6398	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6399	        match response {
6400	            Response::CreateInvoice(response) => Ok(response),
6401	            _ => Err(TryFromResponseError)
6402	        }
6403	    }
6404	}
6405
6406	#[derive(Clone, Debug, Deserialize, Serialize)]
6407	pub struct DatastoreResponse {
6408	    #[serde(skip_serializing_if = "Option::is_none")]
6409	    pub generation: Option<u64>,
6410	    #[serde(skip_serializing_if = "Option::is_none")]
6411	    pub hex: Option<String>,
6412	    #[serde(skip_serializing_if = "Option::is_none")]
6413	    pub string: Option<String>,
6414	    pub key: Vec<String>,
6415	}
6416
6417	impl TryFrom<Response> for DatastoreResponse {
6418	    type Error = super::TryFromResponseError;
6419
6420	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6421	        match response {
6422	            Response::Datastore(response) => Ok(response),
6423	            _ => Err(TryFromResponseError)
6424	        }
6425	    }
6426	}
6427
6428	#[derive(Clone, Debug, Deserialize, Serialize)]
6429	pub struct DatastoreusageDatastoreusage {
6430	    pub key: String,
6431	    pub total_bytes: u64,
6432	}
6433
6434	#[derive(Clone, Debug, Deserialize, Serialize)]
6435	pub struct DatastoreusageResponse {
6436	    pub datastoreusage: DatastoreusageDatastoreusage,
6437	}
6438
6439	impl TryFrom<Response> for DatastoreusageResponse {
6440	    type Error = super::TryFromResponseError;
6441
6442	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6443	        match response {
6444	            Response::DatastoreUsage(response) => Ok(response),
6445	            _ => Err(TryFromResponseError)
6446	        }
6447	    }
6448	}
6449
6450	#[derive(Clone, Debug, Deserialize, Serialize)]
6451	pub struct CreateonionResponse {
6452	    pub onion: String,
6453	    pub shared_secrets: Vec<Secret>,
6454	}
6455
6456	impl TryFrom<Response> for CreateonionResponse {
6457	    type Error = super::TryFromResponseError;
6458
6459	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6460	        match response {
6461	            Response::CreateOnion(response) => Ok(response),
6462	            _ => Err(TryFromResponseError)
6463	        }
6464	    }
6465	}
6466
6467	#[derive(Clone, Debug, Deserialize, Serialize)]
6468	pub struct DeldatastoreResponse {
6469	    #[serde(skip_serializing_if = "Option::is_none")]
6470	    pub generation: Option<u64>,
6471	    #[serde(skip_serializing_if = "Option::is_none")]
6472	    pub hex: Option<String>,
6473	    #[serde(skip_serializing_if = "Option::is_none")]
6474	    pub string: Option<String>,
6475	    pub key: Vec<String>,
6476	}
6477
6478	impl TryFrom<Response> for DeldatastoreResponse {
6479	    type Error = super::TryFromResponseError;
6480
6481	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6482	        match response {
6483	            Response::DelDatastore(response) => Ok(response),
6484	            _ => Err(TryFromResponseError)
6485	        }
6486	    }
6487	}
6488
6489	/// ['State of invoice.']
6490	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
6491	#[allow(non_camel_case_types)]
6492	pub enum DelinvoiceStatus {
6493	    #[serde(rename = "paid")]
6494	    PAID = 0,
6495	    #[serde(rename = "expired")]
6496	    EXPIRED = 1,
6497	    #[serde(rename = "unpaid")]
6498	    UNPAID = 2,
6499	}
6500
6501	impl TryFrom<i32> for DelinvoiceStatus {
6502	    type Error = anyhow::Error;
6503	    fn try_from(c: i32) -> Result<DelinvoiceStatus, anyhow::Error> {
6504	        match c {
6505	    0 => Ok(DelinvoiceStatus::PAID),
6506	    1 => Ok(DelinvoiceStatus::EXPIRED),
6507	    2 => Ok(DelinvoiceStatus::UNPAID),
6508	            o => Err(anyhow::anyhow!("Unknown variant {} for enum DelinvoiceStatus", o)),
6509	        }
6510	    }
6511	}
6512
6513	impl ToString for DelinvoiceStatus {
6514	    fn to_string(&self) -> String {
6515	        match self {
6516	            DelinvoiceStatus::PAID => "PAID",
6517	            DelinvoiceStatus::EXPIRED => "EXPIRED",
6518	            DelinvoiceStatus::UNPAID => "UNPAID",
6519	        }.to_string()
6520	    }
6521	}
6522
6523	#[derive(Clone, Debug, Deserialize, Serialize)]
6524	pub struct DelinvoiceResponse {
6525	    #[serde(skip_serializing_if = "Option::is_none")]
6526	    pub amount_msat: Option<Amount>,
6527	    #[serde(skip_serializing_if = "Option::is_none")]
6528	    pub amount_received_msat: Option<Amount>,
6529	    #[serde(skip_serializing_if = "Option::is_none")]
6530	    pub bolt11: Option<String>,
6531	    #[serde(skip_serializing_if = "Option::is_none")]
6532	    pub bolt12: Option<String>,
6533	    #[serde(skip_serializing_if = "Option::is_none")]
6534	    pub description: Option<String>,
6535	    #[serde(skip_serializing_if = "Option::is_none")]
6536	    pub invreq_payer_note: Option<String>,
6537	    #[serde(skip_serializing_if = "Option::is_none")]
6538	    pub local_offer_id: Option<String>,
6539	    #[serde(skip_serializing_if = "Option::is_none")]
6540	    pub paid_at: Option<u64>,
6541	    #[serde(skip_serializing_if = "Option::is_none")]
6542	    pub pay_index: Option<u64>,
6543	    #[serde(skip_serializing_if = "Option::is_none")]
6544	    pub payment_preimage: Option<Secret>,
6545	    #[serde(skip_serializing_if = "Option::is_none")]
6546	    pub updated_index: Option<u64>,
6547	    // Path `DelInvoice.status`
6548	    pub status: DelinvoiceStatus,
6549	    pub created_index: u64,
6550	    pub expires_at: u64,
6551	    pub label: String,
6552	    pub payment_hash: Sha256,
6553	}
6554
6555	impl TryFrom<Response> for DelinvoiceResponse {
6556	    type Error = super::TryFromResponseError;
6557
6558	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6559	        match response {
6560	            Response::DelInvoice(response) => Ok(response),
6561	            _ => Err(TryFromResponseError)
6562	        }
6563	    }
6564	}
6565
6566	#[derive(Clone, Debug, Deserialize, Serialize)]
6567	pub struct DevforgetchannelResponse {
6568	    pub forced: bool,
6569	    pub funding_txid: String,
6570	    pub funding_unspent: bool,
6571	}
6572
6573	impl TryFrom<Response> for DevforgetchannelResponse {
6574	    type Error = super::TryFromResponseError;
6575
6576	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6577	        match response {
6578	            Response::DevForgetChannel(response) => Ok(response),
6579	            _ => Err(TryFromResponseError)
6580	        }
6581	    }
6582	}
6583
6584	#[derive(Clone, Debug, Deserialize, Serialize)]
6585	pub struct EmergencyrecoverResponse {
6586	    pub stubs: Vec<Sha256>,
6587	}
6588
6589	impl TryFrom<Response> for EmergencyrecoverResponse {
6590	    type Error = super::TryFromResponseError;
6591
6592	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6593	        match response {
6594	            Response::EmergencyRecover(response) => Ok(response),
6595	            _ => Err(TryFromResponseError)
6596	        }
6597	    }
6598	}
6599
6600	#[derive(Clone, Debug, Deserialize, Serialize)]
6601	pub struct GetemergencyrecoverdataResponse {
6602	    #[serde(skip_serializing_if = "Option::is_none")]
6603	    pub can_create_penalty: Option<bool>,
6604	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
6605	    pub backed_up_channel_ids: Option<Vec<Sha256>>,
6606	    pub filedata: String,
6607	}
6608
6609	impl TryFrom<Response> for GetemergencyrecoverdataResponse {
6610	    type Error = super::TryFromResponseError;
6611
6612	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6613	        match response {
6614	            Response::GetEmergencyRecoverData(response) => Ok(response),
6615	            _ => Err(TryFromResponseError)
6616	        }
6617	    }
6618	}
6619
6620	#[derive(Clone, Debug, Deserialize, Serialize)]
6621	pub struct ExposesecretResponse {
6622	    #[serde(skip_serializing_if = "Option::is_none")]
6623	    pub mnemonic: Option<String>,
6624	    pub codex32: String,
6625	    pub identifier: String,
6626	}
6627
6628	impl TryFrom<Response> for ExposesecretResponse {
6629	    type Error = super::TryFromResponseError;
6630
6631	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6632	        match response {
6633	            Response::ExposeSecret(response) => Ok(response),
6634	            _ => Err(TryFromResponseError)
6635	        }
6636	    }
6637	}
6638
6639	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
6640	#[allow(non_camel_case_types)]
6641	pub enum RecoverResult {
6642	    #[serde(rename = "Recovery restart in progress")]
6643	    RECOVERY_RESTART_IN_PROGRESS = 0,
6644	}
6645
6646	impl TryFrom<i32> for RecoverResult {
6647	    type Error = anyhow::Error;
6648	    fn try_from(c: i32) -> Result<RecoverResult, anyhow::Error> {
6649	        match c {
6650	    0 => Ok(RecoverResult::RECOVERY_RESTART_IN_PROGRESS),
6651	            o => Err(anyhow::anyhow!("Unknown variant {} for enum RecoverResult", o)),
6652	        }
6653	    }
6654	}
6655
6656	impl ToString for RecoverResult {
6657	    fn to_string(&self) -> String {
6658	        match self {
6659	            RecoverResult::RECOVERY_RESTART_IN_PROGRESS => "RECOVERY_RESTART_IN_PROGRESS",
6660	        }.to_string()
6661	    }
6662	}
6663
6664	#[derive(Clone, Debug, Deserialize, Serialize)]
6665	pub struct RecoverResponse {
6666	    // Path `Recover.result`
6667	    pub result: RecoverResult,
6668	}
6669
6670	impl TryFrom<Response> for RecoverResponse {
6671	    type Error = super::TryFromResponseError;
6672
6673	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6674	        match response {
6675	            Response::Recover(response) => Ok(response),
6676	            _ => Err(TryFromResponseError)
6677	        }
6678	    }
6679	}
6680
6681	#[derive(Clone, Debug, Deserialize, Serialize)]
6682	pub struct RecoverchannelResponse {
6683	    pub stubs: Vec<String>,
6684	}
6685
6686	impl TryFrom<Response> for RecoverchannelResponse {
6687	    type Error = super::TryFromResponseError;
6688
6689	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6690	        match response {
6691	            Response::RecoverChannel(response) => Ok(response),
6692	            _ => Err(TryFromResponseError)
6693	        }
6694	    }
6695	}
6696
6697	#[derive(Clone, Debug, Deserialize, Serialize)]
6698	pub struct InvoiceResponse {
6699	    #[serde(skip_serializing_if = "Option::is_none")]
6700	    pub warning_capacity: Option<String>,
6701	    #[serde(skip_serializing_if = "Option::is_none")]
6702	    pub warning_deadends: Option<String>,
6703	    #[serde(skip_serializing_if = "Option::is_none")]
6704	    pub warning_mpp: Option<String>,
6705	    #[serde(skip_serializing_if = "Option::is_none")]
6706	    pub warning_offline: Option<String>,
6707	    #[serde(skip_serializing_if = "Option::is_none")]
6708	    pub warning_private_unused: Option<String>,
6709	    pub bolt11: String,
6710	    pub created_index: u64,
6711	    pub expires_at: u64,
6712	    pub payment_hash: Sha256,
6713	    pub payment_secret: Secret,
6714	}
6715
6716	impl TryFrom<Response> for InvoiceResponse {
6717	    type Error = super::TryFromResponseError;
6718
6719	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6720	        match response {
6721	            Response::Invoice(response) => Ok(response),
6722	            _ => Err(TryFromResponseError)
6723	        }
6724	    }
6725	}
6726
6727	#[derive(Clone, Debug, Deserialize, Serialize)]
6728	pub struct InvoicerequestResponse {
6729	    #[serde(skip_serializing_if = "Option::is_none")]
6730	    pub label: Option<String>,
6731	    pub active: bool,
6732	    pub bolt12: String,
6733	    pub invreq_id: Sha256,
6734	    pub single_use: bool,
6735	    pub used: bool,
6736	}
6737
6738	impl TryFrom<Response> for InvoicerequestResponse {
6739	    type Error = super::TryFromResponseError;
6740
6741	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6742	        match response {
6743	            Response::InvoiceRequest(response) => Ok(response),
6744	            _ => Err(TryFromResponseError)
6745	        }
6746	    }
6747	}
6748
6749	#[derive(Clone, Debug, Deserialize, Serialize)]
6750	pub struct DisableinvoicerequestResponse {
6751	    #[serde(skip_serializing_if = "Option::is_none")]
6752	    pub label: Option<String>,
6753	    pub active: bool,
6754	    pub bolt12: String,
6755	    pub invreq_id: Sha256,
6756	    pub single_use: bool,
6757	    pub used: bool,
6758	}
6759
6760	impl TryFrom<Response> for DisableinvoicerequestResponse {
6761	    type Error = super::TryFromResponseError;
6762
6763	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6764	        match response {
6765	            Response::DisableInvoiceRequest(response) => Ok(response),
6766	            _ => Err(TryFromResponseError)
6767	        }
6768	    }
6769	}
6770
6771	#[derive(Clone, Debug, Deserialize, Serialize)]
6772	pub struct ListinvoicerequestsInvoicerequests {
6773	    #[serde(skip_serializing_if = "Option::is_none")]
6774	    pub label: Option<String>,
6775	    pub active: bool,
6776	    pub bolt12: String,
6777	    pub invreq_id: Sha256,
6778	    pub single_use: bool,
6779	    pub used: bool,
6780	}
6781
6782	#[derive(Clone, Debug, Deserialize, Serialize)]
6783	pub struct ListinvoicerequestsResponse {
6784	    pub invoicerequests: Vec<ListinvoicerequestsInvoicerequests>,
6785	}
6786
6787	impl TryFrom<Response> for ListinvoicerequestsResponse {
6788	    type Error = super::TryFromResponseError;
6789
6790	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6791	        match response {
6792	            Response::ListInvoiceRequests(response) => Ok(response),
6793	            _ => Err(TryFromResponseError)
6794	        }
6795	    }
6796	}
6797
6798	#[derive(Clone, Debug, Deserialize, Serialize)]
6799	pub struct ListdatastoreDatastore {
6800	    #[serde(skip_serializing_if = "Option::is_none")]
6801	    pub generation: Option<u64>,
6802	    #[serde(skip_serializing_if = "Option::is_none")]
6803	    pub hex: Option<String>,
6804	    #[serde(skip_serializing_if = "Option::is_none")]
6805	    pub string: Option<String>,
6806	    pub key: Vec<String>,
6807	}
6808
6809	#[derive(Clone, Debug, Deserialize, Serialize)]
6810	pub struct ListdatastoreResponse {
6811	    pub datastore: Vec<ListdatastoreDatastore>,
6812	}
6813
6814	impl TryFrom<Response> for ListdatastoreResponse {
6815	    type Error = super::TryFromResponseError;
6816
6817	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6818	        match response {
6819	            Response::ListDatastore(response) => Ok(response),
6820	            _ => Err(TryFromResponseError)
6821	        }
6822	    }
6823	}
6824
6825	#[derive(Clone, Debug, Deserialize, Serialize)]
6826	pub struct ListinvoicesInvoicesPaidOutpoint {
6827	    pub outnum: u32,
6828	    pub txid: String,
6829	}
6830
6831	/// ["Whether it's paid, unpaid or unpayable."]
6832	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
6833	#[allow(non_camel_case_types)]
6834	pub enum ListinvoicesInvoicesStatus {
6835	    #[serde(rename = "unpaid")]
6836	    UNPAID = 0,
6837	    #[serde(rename = "paid")]
6838	    PAID = 1,
6839	    #[serde(rename = "expired")]
6840	    EXPIRED = 2,
6841	}
6842
6843	impl TryFrom<i32> for ListinvoicesInvoicesStatus {
6844	    type Error = anyhow::Error;
6845	    fn try_from(c: i32) -> Result<ListinvoicesInvoicesStatus, anyhow::Error> {
6846	        match c {
6847	    0 => Ok(ListinvoicesInvoicesStatus::UNPAID),
6848	    1 => Ok(ListinvoicesInvoicesStatus::PAID),
6849	    2 => Ok(ListinvoicesInvoicesStatus::EXPIRED),
6850	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListinvoicesInvoicesStatus", o)),
6851	        }
6852	    }
6853	}
6854
6855	impl ToString for ListinvoicesInvoicesStatus {
6856	    fn to_string(&self) -> String {
6857	        match self {
6858	            ListinvoicesInvoicesStatus::UNPAID => "UNPAID",
6859	            ListinvoicesInvoicesStatus::PAID => "PAID",
6860	            ListinvoicesInvoicesStatus::EXPIRED => "EXPIRED",
6861	        }.to_string()
6862	    }
6863	}
6864
6865	#[derive(Clone, Debug, Deserialize, Serialize)]
6866	pub struct ListinvoicesInvoices {
6867	    #[serde(skip_serializing_if = "Option::is_none")]
6868	    pub amount_msat: Option<Amount>,
6869	    #[serde(skip_serializing_if = "Option::is_none")]
6870	    pub amount_received_msat: Option<Amount>,
6871	    #[serde(skip_serializing_if = "Option::is_none")]
6872	    pub bolt11: Option<String>,
6873	    #[serde(skip_serializing_if = "Option::is_none")]
6874	    pub bolt12: Option<String>,
6875	    #[serde(skip_serializing_if = "Option::is_none")]
6876	    pub description: Option<String>,
6877	    #[serde(skip_serializing_if = "Option::is_none")]
6878	    pub invreq_payer_note: Option<String>,
6879	    #[serde(skip_serializing_if = "Option::is_none")]
6880	    pub local_offer_id: Option<Sha256>,
6881	    #[serde(skip_serializing_if = "Option::is_none")]
6882	    pub paid_at: Option<u64>,
6883	    #[serde(skip_serializing_if = "Option::is_none")]
6884	    pub paid_outpoint: Option<ListinvoicesInvoicesPaidOutpoint>,
6885	    #[serde(skip_serializing_if = "Option::is_none")]
6886	    pub pay_index: Option<u64>,
6887	    #[serde(skip_serializing_if = "Option::is_none")]
6888	    pub payment_preimage: Option<Secret>,
6889	    #[serde(skip_serializing_if = "Option::is_none")]
6890	    pub updated_index: Option<u64>,
6891	    // Path `ListInvoices.invoices[].status`
6892	    pub status: ListinvoicesInvoicesStatus,
6893	    pub created_index: u64,
6894	    pub expires_at: u64,
6895	    pub label: String,
6896	    pub payment_hash: Sha256,
6897	}
6898
6899	#[derive(Clone, Debug, Deserialize, Serialize)]
6900	pub struct ListinvoicesResponse {
6901	    pub invoices: Vec<ListinvoicesInvoices>,
6902	}
6903
6904	impl TryFrom<Response> for ListinvoicesResponse {
6905	    type Error = super::TryFromResponseError;
6906
6907	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6908	        match response {
6909	            Response::ListInvoices(response) => Ok(response),
6910	            _ => Err(TryFromResponseError)
6911	        }
6912	    }
6913	}
6914
6915	/// ['Status of the payment (could be complete if already sent previously).']
6916	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
6917	#[allow(non_camel_case_types)]
6918	pub enum SendonionStatus {
6919	    #[serde(rename = "pending")]
6920	    PENDING = 0,
6921	    #[serde(rename = "complete")]
6922	    COMPLETE = 1,
6923	}
6924
6925	impl TryFrom<i32> for SendonionStatus {
6926	    type Error = anyhow::Error;
6927	    fn try_from(c: i32) -> Result<SendonionStatus, anyhow::Error> {
6928	        match c {
6929	    0 => Ok(SendonionStatus::PENDING),
6930	    1 => Ok(SendonionStatus::COMPLETE),
6931	            o => Err(anyhow::anyhow!("Unknown variant {} for enum SendonionStatus", o)),
6932	        }
6933	    }
6934	}
6935
6936	impl ToString for SendonionStatus {
6937	    fn to_string(&self) -> String {
6938	        match self {
6939	            SendonionStatus::PENDING => "PENDING",
6940	            SendonionStatus::COMPLETE => "COMPLETE",
6941	        }.to_string()
6942	    }
6943	}
6944
6945	#[derive(Clone, Debug, Deserialize, Serialize)]
6946	pub struct SendonionResponse {
6947	    #[serde(skip_serializing_if = "Option::is_none")]
6948	    pub amount_msat: Option<Amount>,
6949	    #[serde(skip_serializing_if = "Option::is_none")]
6950	    pub bolt11: Option<String>,
6951	    #[serde(skip_serializing_if = "Option::is_none")]
6952	    pub bolt12: Option<String>,
6953	    #[serde(skip_serializing_if = "Option::is_none")]
6954	    pub destination: Option<PublicKey>,
6955	    #[serde(skip_serializing_if = "Option::is_none")]
6956	    pub label: Option<String>,
6957	    #[serde(skip_serializing_if = "Option::is_none")]
6958	    pub message: Option<String>,
6959	    #[serde(skip_serializing_if = "Option::is_none")]
6960	    pub partid: Option<u64>,
6961	    #[serde(skip_serializing_if = "Option::is_none")]
6962	    pub payment_preimage: Option<Secret>,
6963	    #[serde(skip_serializing_if = "Option::is_none")]
6964	    pub updated_index: Option<u64>,
6965	    // Path `SendOnion.status`
6966	    pub status: SendonionStatus,
6967	    pub amount_sent_msat: Amount,
6968	    pub created_at: u64,
6969	    pub created_index: u64,
6970	    pub id: u64,
6971	    pub payment_hash: Sha256,
6972	}
6973
6974	impl TryFrom<Response> for SendonionResponse {
6975	    type Error = super::TryFromResponseError;
6976
6977	    fn try_from(response: Response) -> Result<Self, Self::Error> {
6978	        match response {
6979	            Response::SendOnion(response) => Ok(response),
6980	            _ => Err(TryFromResponseError)
6981	        }
6982	    }
6983	}
6984
6985	/// ['Status of the payment.']
6986	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
6987	#[allow(non_camel_case_types)]
6988	pub enum ListsendpaysPaymentsStatus {
6989	    #[serde(rename = "pending")]
6990	    PENDING = 0,
6991	    #[serde(rename = "failed")]
6992	    FAILED = 1,
6993	    #[serde(rename = "complete")]
6994	    COMPLETE = 2,
6995	}
6996
6997	impl TryFrom<i32> for ListsendpaysPaymentsStatus {
6998	    type Error = anyhow::Error;
6999	    fn try_from(c: i32) -> Result<ListsendpaysPaymentsStatus, anyhow::Error> {
7000	        match c {
7001	    0 => Ok(ListsendpaysPaymentsStatus::PENDING),
7002	    1 => Ok(ListsendpaysPaymentsStatus::FAILED),
7003	    2 => Ok(ListsendpaysPaymentsStatus::COMPLETE),
7004	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListsendpaysPaymentsStatus", o)),
7005	        }
7006	    }
7007	}
7008
7009	impl ToString for ListsendpaysPaymentsStatus {
7010	    fn to_string(&self) -> String {
7011	        match self {
7012	            ListsendpaysPaymentsStatus::PENDING => "PENDING",
7013	            ListsendpaysPaymentsStatus::FAILED => "FAILED",
7014	            ListsendpaysPaymentsStatus::COMPLETE => "COMPLETE",
7015	        }.to_string()
7016	    }
7017	}
7018
7019	#[derive(Clone, Debug, Deserialize, Serialize)]
7020	pub struct ListsendpaysPayments {
7021	    #[serde(skip_serializing_if = "Option::is_none")]
7022	    pub amount_msat: Option<Amount>,
7023	    #[serde(skip_serializing_if = "Option::is_none")]
7024	    pub bolt11: Option<String>,
7025	    #[serde(skip_serializing_if = "Option::is_none")]
7026	    pub bolt12: Option<String>,
7027	    #[serde(skip_serializing_if = "Option::is_none")]
7028	    pub completed_at: Option<u64>,
7029	    #[serde(skip_serializing_if = "Option::is_none")]
7030	    pub description: Option<String>,
7031	    #[serde(skip_serializing_if = "Option::is_none")]
7032	    pub destination: Option<PublicKey>,
7033	    #[serde(skip_serializing_if = "Option::is_none")]
7034	    pub erroronion: Option<String>,
7035	    #[serde(skip_serializing_if = "Option::is_none")]
7036	    pub label: Option<String>,
7037	    #[serde(skip_serializing_if = "Option::is_none")]
7038	    pub partid: Option<u64>,
7039	    #[serde(skip_serializing_if = "Option::is_none")]
7040	    pub payment_preimage: Option<Secret>,
7041	    #[serde(skip_serializing_if = "Option::is_none")]
7042	    pub updated_index: Option<u64>,
7043	    // Path `ListSendPays.payments[].status`
7044	    pub status: ListsendpaysPaymentsStatus,
7045	    pub amount_sent_msat: Amount,
7046	    pub created_at: u64,
7047	    pub created_index: u64,
7048	    pub groupid: u64,
7049	    pub id: u64,
7050	    pub payment_hash: Sha256,
7051	}
7052
7053	#[derive(Clone, Debug, Deserialize, Serialize)]
7054	pub struct ListsendpaysResponse {
7055	    pub payments: Vec<ListsendpaysPayments>,
7056	}
7057
7058	impl TryFrom<Response> for ListsendpaysResponse {
7059	    type Error = super::TryFromResponseError;
7060
7061	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7062	        match response {
7063	            Response::ListSendPays(response) => Ok(response),
7064	            _ => Err(TryFromResponseError)
7065	        }
7066	    }
7067	}
7068
7069	#[derive(Clone, Debug, Deserialize, Serialize)]
7070	pub struct ListtransactionsTransactionsInputs {
7071	    pub index: u32,
7072	    pub sequence: u32,
7073	    pub txid: String,
7074	}
7075
7076	#[derive(Clone, Debug, Deserialize, Serialize)]
7077	pub struct ListtransactionsTransactionsOutputs {
7078	    #[serde(rename = "scriptPubKey")]
7079	    pub script_pub_key: String,
7080	    pub amount_msat: Amount,
7081	    pub index: u32,
7082	}
7083
7084	#[derive(Clone, Debug, Deserialize, Serialize)]
7085	pub struct ListtransactionsTransactions {
7086	    pub blockheight: u32,
7087	    pub hash: String,
7088	    pub inputs: Vec<ListtransactionsTransactionsInputs>,
7089	    pub locktime: u32,
7090	    pub outputs: Vec<ListtransactionsTransactionsOutputs>,
7091	    pub rawtx: String,
7092	    pub txindex: u32,
7093	    pub version: u32,
7094	}
7095
7096	#[derive(Clone, Debug, Deserialize, Serialize)]
7097	pub struct ListtransactionsResponse {
7098	    pub transactions: Vec<ListtransactionsTransactions>,
7099	}
7100
7101	impl TryFrom<Response> for ListtransactionsResponse {
7102	    type Error = super::TryFromResponseError;
7103
7104	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7105	        match response {
7106	            Response::ListTransactions(response) => Ok(response),
7107	            _ => Err(TryFromResponseError)
7108	        }
7109	    }
7110	}
7111
7112	#[derive(Clone, Debug, Deserialize, Serialize)]
7113	pub struct MakesecretResponse {
7114	    pub secret: Secret,
7115	}
7116
7117	impl TryFrom<Response> for MakesecretResponse {
7118	    type Error = super::TryFromResponseError;
7119
7120	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7121	        match response {
7122	            Response::MakeSecret(response) => Ok(response),
7123	            _ => Err(TryFromResponseError)
7124	        }
7125	    }
7126	}
7127
7128	/// ['Status of payment.']
7129	#[deprecated]
7130	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
7131	#[allow(non_camel_case_types)]
7132	pub enum PayStatus {
7133	    #[serde(rename = "complete")]
7134	    COMPLETE = 0,
7135	    #[serde(rename = "pending")]
7136	    PENDING = 1,
7137	    #[serde(rename = "failed")]
7138	    FAILED = 2,
7139	}
7140
7141	impl TryFrom<i32> for PayStatus {
7142	    type Error = anyhow::Error;
7143	    fn try_from(c: i32) -> Result<PayStatus, anyhow::Error> {
7144	        match c {
7145	    0 => Ok(PayStatus::COMPLETE),
7146	    1 => Ok(PayStatus::PENDING),
7147	    2 => Ok(PayStatus::FAILED),
7148	            o => Err(anyhow::anyhow!("Unknown variant {} for enum PayStatus", o)),
7149	        }
7150	    }
7151	}
7152
7153	impl ToString for PayStatus {
7154	    fn to_string(&self) -> String {
7155	        match self {
7156	            PayStatus::COMPLETE => "COMPLETE",
7157	            PayStatus::PENDING => "PENDING",
7158	            PayStatus::FAILED => "FAILED",
7159	        }.to_string()
7160	    }
7161	}
7162
7163	#[deprecated = "deprecated since CLN v26.06"]
7164	#[derive(Clone, Debug, Deserialize, Serialize)]
7165	pub struct PayResponse {
7166	    #[deprecated]
7167	    #[serde(skip_serializing_if = "Option::is_none")]
7168	    pub destination: Option<PublicKey>,
7169	    #[deprecated]
7170	    #[serde(skip_serializing_if = "Option::is_none")]
7171	    pub warning_partial_completion: Option<String>,
7172	    #[deprecated]
7173	    pub amount_msat: Amount,
7174	    #[deprecated]
7175	    pub amount_sent_msat: Amount,
7176	    #[deprecated]
7177	    pub created_at: f64,
7178	    #[deprecated]
7179	    pub parts: u32,
7180	    #[deprecated]
7181	    pub payment_hash: Sha256,
7182	    #[deprecated]
7183	    pub payment_preimage: Secret,
7184	    // Path `Pay.status`
7185	    pub status: PayStatus,
7186	}
7187
7188	impl TryFrom<Response> for PayResponse {
7189	    type Error = super::TryFromResponseError;
7190
7191	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7192	        match response {
7193	            Response::Pay(response) => Ok(response),
7194	            _ => Err(TryFromResponseError)
7195	        }
7196	    }
7197	}
7198
7199	#[derive(Clone, Debug, Deserialize, Serialize)]
7200	pub struct ListnodesNodesOptionWillFund {
7201	    pub channel_fee_max_base_msat: Amount,
7202	    pub channel_fee_max_proportional_thousandths: u32,
7203	    pub compact_lease: String,
7204	    pub funding_weight: u32,
7205	    pub lease_fee_base_msat: Amount,
7206	    pub lease_fee_basis: u32,
7207	}
7208
7209	/// ['Type of connection (until 23.08, `websocket` was also allowed).']
7210	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
7211	#[allow(non_camel_case_types)]
7212	pub enum ListnodesNodesAddressesType {
7213	    #[serde(rename = "dns")]
7214	    DNS = 0,
7215	    #[serde(rename = "ipv4")]
7216	    IPV4 = 1,
7217	    #[serde(rename = "ipv6")]
7218	    IPV6 = 2,
7219	    #[serde(rename = "torv2")]
7220	    TORV2 = 3,
7221	    #[serde(rename = "torv3")]
7222	    TORV3 = 4,
7223	}
7224
7225	impl TryFrom<i32> for ListnodesNodesAddressesType {
7226	    type Error = anyhow::Error;
7227	    fn try_from(c: i32) -> Result<ListnodesNodesAddressesType, anyhow::Error> {
7228	        match c {
7229	    0 => Ok(ListnodesNodesAddressesType::DNS),
7230	    1 => Ok(ListnodesNodesAddressesType::IPV4),
7231	    2 => Ok(ListnodesNodesAddressesType::IPV6),
7232	    3 => Ok(ListnodesNodesAddressesType::TORV2),
7233	    4 => Ok(ListnodesNodesAddressesType::TORV3),
7234	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListnodesNodesAddressesType", o)),
7235	        }
7236	    }
7237	}
7238
7239	impl ToString for ListnodesNodesAddressesType {
7240	    fn to_string(&self) -> String {
7241	        match self {
7242	            ListnodesNodesAddressesType::DNS => "DNS",
7243	            ListnodesNodesAddressesType::IPV4 => "IPV4",
7244	            ListnodesNodesAddressesType::IPV6 => "IPV6",
7245	            ListnodesNodesAddressesType::TORV2 => "TORV2",
7246	            ListnodesNodesAddressesType::TORV3 => "TORV3",
7247	        }.to_string()
7248	    }
7249	}
7250
7251	#[derive(Clone, Debug, Deserialize, Serialize)]
7252	pub struct ListnodesNodesAddresses {
7253	    #[serde(skip_serializing_if = "Option::is_none")]
7254	    pub address: Option<String>,
7255	    // Path `ListNodes.nodes[].addresses[].type`
7256	    #[serde(rename = "type")]
7257	    pub item_type: ListnodesNodesAddressesType,
7258	    pub port: u16,
7259	}
7260
7261	#[derive(Clone, Debug, Deserialize, Serialize)]
7262	pub struct ListnodesNodes {
7263	    #[serde(skip_serializing_if = "Option::is_none")]
7264	    pub alias: Option<String>,
7265	    #[serde(skip_serializing_if = "Option::is_none")]
7266	    pub color: Option<String>,
7267	    #[serde(skip_serializing_if = "Option::is_none")]
7268	    pub features: Option<String>,
7269	    #[serde(skip_serializing_if = "Option::is_none")]
7270	    pub last_timestamp: Option<u32>,
7271	    #[serde(skip_serializing_if = "Option::is_none")]
7272	    pub option_will_fund: Option<ListnodesNodesOptionWillFund>,
7273	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
7274	    pub addresses: Option<Vec<ListnodesNodesAddresses>>,
7275	    pub nodeid: PublicKey,
7276	}
7277
7278	#[derive(Clone, Debug, Deserialize, Serialize)]
7279	pub struct ListnodesResponse {
7280	    pub nodes: Vec<ListnodesNodes>,
7281	}
7282
7283	impl TryFrom<Response> for ListnodesResponse {
7284	    type Error = super::TryFromResponseError;
7285
7286	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7287	        match response {
7288	            Response::ListNodes(response) => Ok(response),
7289	            _ => Err(TryFromResponseError)
7290	        }
7291	    }
7292	}
7293
7294	#[derive(Clone, Debug, Deserialize, Serialize)]
7295	pub struct WaitanyinvoicePaidOutpoint {
7296	    pub outnum: u32,
7297	    pub txid: String,
7298	}
7299
7300	/// ["Whether it's paid or expired."]
7301	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
7302	#[allow(non_camel_case_types)]
7303	pub enum WaitanyinvoiceStatus {
7304	    #[serde(rename = "paid")]
7305	    PAID = 0,
7306	    #[serde(rename = "expired")]
7307	    EXPIRED = 1,
7308	}
7309
7310	impl TryFrom<i32> for WaitanyinvoiceStatus {
7311	    type Error = anyhow::Error;
7312	    fn try_from(c: i32) -> Result<WaitanyinvoiceStatus, anyhow::Error> {
7313	        match c {
7314	    0 => Ok(WaitanyinvoiceStatus::PAID),
7315	    1 => Ok(WaitanyinvoiceStatus::EXPIRED),
7316	            o => Err(anyhow::anyhow!("Unknown variant {} for enum WaitanyinvoiceStatus", o)),
7317	        }
7318	    }
7319	}
7320
7321	impl ToString for WaitanyinvoiceStatus {
7322	    fn to_string(&self) -> String {
7323	        match self {
7324	            WaitanyinvoiceStatus::PAID => "PAID",
7325	            WaitanyinvoiceStatus::EXPIRED => "EXPIRED",
7326	        }.to_string()
7327	    }
7328	}
7329
7330	#[derive(Clone, Debug, Deserialize, Serialize)]
7331	pub struct WaitanyinvoiceResponse {
7332	    #[serde(skip_serializing_if = "Option::is_none")]
7333	    pub amount_msat: Option<Amount>,
7334	    #[serde(skip_serializing_if = "Option::is_none")]
7335	    pub amount_received_msat: Option<Amount>,
7336	    #[serde(skip_serializing_if = "Option::is_none")]
7337	    pub bolt11: Option<String>,
7338	    #[serde(skip_serializing_if = "Option::is_none")]
7339	    pub bolt12: Option<String>,
7340	    #[serde(skip_serializing_if = "Option::is_none")]
7341	    pub description: Option<String>,
7342	    #[serde(skip_serializing_if = "Option::is_none")]
7343	    pub paid_at: Option<u64>,
7344	    #[serde(skip_serializing_if = "Option::is_none")]
7345	    pub paid_outpoint: Option<WaitanyinvoicePaidOutpoint>,
7346	    #[serde(skip_serializing_if = "Option::is_none")]
7347	    pub pay_index: Option<u64>,
7348	    #[serde(skip_serializing_if = "Option::is_none")]
7349	    pub payment_preimage: Option<Secret>,
7350	    #[serde(skip_serializing_if = "Option::is_none")]
7351	    pub updated_index: Option<u64>,
7352	    // Path `WaitAnyInvoice.status`
7353	    pub status: WaitanyinvoiceStatus,
7354	    pub created_index: u64,
7355	    pub expires_at: u64,
7356	    pub label: String,
7357	    pub payment_hash: Sha256,
7358	}
7359
7360	impl TryFrom<Response> for WaitanyinvoiceResponse {
7361	    type Error = super::TryFromResponseError;
7362
7363	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7364	        match response {
7365	            Response::WaitAnyInvoice(response) => Ok(response),
7366	            _ => Err(TryFromResponseError)
7367	        }
7368	    }
7369	}
7370
7371	#[derive(Clone, Debug, Deserialize, Serialize)]
7372	pub struct WaitinvoicePaidOutpoint {
7373	    pub outnum: u32,
7374	    pub txid: String,
7375	}
7376
7377	/// ["Whether it's paid or expired."]
7378	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
7379	#[allow(non_camel_case_types)]
7380	pub enum WaitinvoiceStatus {
7381	    #[serde(rename = "paid")]
7382	    PAID = 0,
7383	    #[serde(rename = "expired")]
7384	    EXPIRED = 1,
7385	}
7386
7387	impl TryFrom<i32> for WaitinvoiceStatus {
7388	    type Error = anyhow::Error;
7389	    fn try_from(c: i32) -> Result<WaitinvoiceStatus, anyhow::Error> {
7390	        match c {
7391	    0 => Ok(WaitinvoiceStatus::PAID),
7392	    1 => Ok(WaitinvoiceStatus::EXPIRED),
7393	            o => Err(anyhow::anyhow!("Unknown variant {} for enum WaitinvoiceStatus", o)),
7394	        }
7395	    }
7396	}
7397
7398	impl ToString for WaitinvoiceStatus {
7399	    fn to_string(&self) -> String {
7400	        match self {
7401	            WaitinvoiceStatus::PAID => "PAID",
7402	            WaitinvoiceStatus::EXPIRED => "EXPIRED",
7403	        }.to_string()
7404	    }
7405	}
7406
7407	#[derive(Clone, Debug, Deserialize, Serialize)]
7408	pub struct WaitinvoiceResponse {
7409	    #[serde(skip_serializing_if = "Option::is_none")]
7410	    pub amount_msat: Option<Amount>,
7411	    #[serde(skip_serializing_if = "Option::is_none")]
7412	    pub amount_received_msat: Option<Amount>,
7413	    #[serde(skip_serializing_if = "Option::is_none")]
7414	    pub bolt11: Option<String>,
7415	    #[serde(skip_serializing_if = "Option::is_none")]
7416	    pub bolt12: Option<String>,
7417	    #[serde(skip_serializing_if = "Option::is_none")]
7418	    pub description: Option<String>,
7419	    #[serde(skip_serializing_if = "Option::is_none")]
7420	    pub paid_at: Option<u64>,
7421	    #[serde(skip_serializing_if = "Option::is_none")]
7422	    pub paid_outpoint: Option<WaitinvoicePaidOutpoint>,
7423	    #[serde(skip_serializing_if = "Option::is_none")]
7424	    pub pay_index: Option<u64>,
7425	    #[serde(skip_serializing_if = "Option::is_none")]
7426	    pub payment_preimage: Option<Secret>,
7427	    #[serde(skip_serializing_if = "Option::is_none")]
7428	    pub updated_index: Option<u64>,
7429	    // Path `WaitInvoice.status`
7430	    pub status: WaitinvoiceStatus,
7431	    pub created_index: u64,
7432	    pub expires_at: u64,
7433	    pub label: String,
7434	    pub payment_hash: Sha256,
7435	}
7436
7437	impl TryFrom<Response> for WaitinvoiceResponse {
7438	    type Error = super::TryFromResponseError;
7439
7440	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7441	        match response {
7442	            Response::WaitInvoice(response) => Ok(response),
7443	            _ => Err(TryFromResponseError)
7444	        }
7445	    }
7446	}
7447
7448	/// ['Status of the payment.']
7449	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
7450	#[allow(non_camel_case_types)]
7451	pub enum WaitsendpayStatus {
7452	    #[serde(rename = "complete")]
7453	    COMPLETE = 0,
7454	}
7455
7456	impl TryFrom<i32> for WaitsendpayStatus {
7457	    type Error = anyhow::Error;
7458	    fn try_from(c: i32) -> Result<WaitsendpayStatus, anyhow::Error> {
7459	        match c {
7460	    0 => Ok(WaitsendpayStatus::COMPLETE),
7461	            o => Err(anyhow::anyhow!("Unknown variant {} for enum WaitsendpayStatus", o)),
7462	        }
7463	    }
7464	}
7465
7466	impl ToString for WaitsendpayStatus {
7467	    fn to_string(&self) -> String {
7468	        match self {
7469	            WaitsendpayStatus::COMPLETE => "COMPLETE",
7470	        }.to_string()
7471	    }
7472	}
7473
7474	#[derive(Clone, Debug, Deserialize, Serialize)]
7475	pub struct WaitsendpayResponse {
7476	    #[serde(skip_serializing_if = "Option::is_none")]
7477	    pub amount_msat: Option<Amount>,
7478	    #[serde(skip_serializing_if = "Option::is_none")]
7479	    pub bolt11: Option<String>,
7480	    #[serde(skip_serializing_if = "Option::is_none")]
7481	    pub bolt12: Option<String>,
7482	    #[serde(skip_serializing_if = "Option::is_none")]
7483	    pub completed_at: Option<f64>,
7484	    #[serde(skip_serializing_if = "Option::is_none")]
7485	    pub destination: Option<PublicKey>,
7486	    #[serde(skip_serializing_if = "Option::is_none")]
7487	    pub groupid: Option<u64>,
7488	    #[serde(skip_serializing_if = "Option::is_none")]
7489	    pub label: Option<String>,
7490	    #[serde(skip_serializing_if = "Option::is_none")]
7491	    pub partid: Option<u64>,
7492	    #[serde(skip_serializing_if = "Option::is_none")]
7493	    pub payment_preimage: Option<Secret>,
7494	    #[serde(skip_serializing_if = "Option::is_none")]
7495	    pub updated_index: Option<u64>,
7496	    // Path `WaitSendPay.status`
7497	    pub status: WaitsendpayStatus,
7498	    pub amount_sent_msat: Amount,
7499	    pub created_at: u64,
7500	    pub created_index: u64,
7501	    pub id: u64,
7502	    pub payment_hash: Sha256,
7503	}
7504
7505	impl TryFrom<Response> for WaitsendpayResponse {
7506	    type Error = super::TryFromResponseError;
7507
7508	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7509	        match response {
7510	            Response::WaitSendPay(response) => Ok(response),
7511	            _ => Err(TryFromResponseError)
7512	        }
7513	    }
7514	}
7515
7516	#[derive(Clone, Debug, Deserialize, Serialize)]
7517	pub struct NewaddrResponse {
7518	    #[serde(skip_serializing_if = "Option::is_none")]
7519	    pub bech32: Option<String>,
7520	    #[serde(skip_serializing_if = "Option::is_none")]
7521	    pub p2tr: Option<String>,
7522	}
7523
7524	impl TryFrom<Response> for NewaddrResponse {
7525	    type Error = super::TryFromResponseError;
7526
7527	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7528	        match response {
7529	            Response::NewAddr(response) => Ok(response),
7530	            _ => Err(TryFromResponseError)
7531	        }
7532	    }
7533	}
7534
7535	#[derive(Clone, Debug, Deserialize, Serialize)]
7536	pub struct WithdrawResponse {
7537	    pub psbt: String,
7538	    pub tx: String,
7539	    pub txid: String,
7540	}
7541
7542	impl TryFrom<Response> for WithdrawResponse {
7543	    type Error = super::TryFromResponseError;
7544
7545	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7546	        match response {
7547	            Response::Withdraw(response) => Ok(response),
7548	            _ => Err(TryFromResponseError)
7549	        }
7550	    }
7551	}
7552
7553	/// ['Status of payment.']
7554	#[deprecated]
7555	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
7556	#[allow(non_camel_case_types)]
7557	pub enum KeysendStatus {
7558	    #[serde(rename = "complete")]
7559	    COMPLETE = 0,
7560	}
7561
7562	impl TryFrom<i32> for KeysendStatus {
7563	    type Error = anyhow::Error;
7564	    fn try_from(c: i32) -> Result<KeysendStatus, anyhow::Error> {
7565	        match c {
7566	    0 => Ok(KeysendStatus::COMPLETE),
7567	            o => Err(anyhow::anyhow!("Unknown variant {} for enum KeysendStatus", o)),
7568	        }
7569	    }
7570	}
7571
7572	impl ToString for KeysendStatus {
7573	    fn to_string(&self) -> String {
7574	        match self {
7575	            KeysendStatus::COMPLETE => "COMPLETE",
7576	        }.to_string()
7577	    }
7578	}
7579
7580	#[deprecated = "deprecated since CLN v26.06"]
7581	#[derive(Clone, Debug, Deserialize, Serialize)]
7582	pub struct KeysendResponse {
7583	    #[deprecated]
7584	    #[serde(skip_serializing_if = "Option::is_none")]
7585	    pub destination: Option<PublicKey>,
7586	    #[deprecated]
7587	    #[serde(skip_serializing_if = "Option::is_none")]
7588	    pub warning_partial_completion: Option<String>,
7589	    #[deprecated]
7590	    pub amount_msat: Amount,
7591	    #[deprecated]
7592	    pub amount_sent_msat: Amount,
7593	    #[deprecated]
7594	    pub created_at: f64,
7595	    #[deprecated]
7596	    pub parts: u32,
7597	    #[deprecated]
7598	    pub payment_hash: Sha256,
7599	    #[deprecated]
7600	    pub payment_preimage: Secret,
7601	    // Path `KeySend.status`
7602	    pub status: KeysendStatus,
7603	}
7604
7605	impl TryFrom<Response> for KeysendResponse {
7606	    type Error = super::TryFromResponseError;
7607
7608	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7609	        match response {
7610	            Response::KeySend(response) => Ok(response),
7611	            _ => Err(TryFromResponseError)
7612	        }
7613	    }
7614	}
7615
7616	#[derive(Clone, Debug, Deserialize, Serialize)]
7617	pub struct FundpsbtReservations {
7618	    pub reserved: bool,
7619	    pub reserved_to_block: u32,
7620	    pub txid: String,
7621	    pub vout: u32,
7622	    pub was_reserved: bool,
7623	}
7624
7625	#[derive(Clone, Debug, Deserialize, Serialize)]
7626	pub struct FundpsbtResponse {
7627	    #[serde(skip_serializing_if = "Option::is_none")]
7628	    pub change_outnum: Option<u32>,
7629	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
7630	    pub reservations: Option<Vec<FundpsbtReservations>>,
7631	    pub estimated_final_weight: u32,
7632	    pub excess_msat: Amount,
7633	    pub feerate_per_kw: u32,
7634	    pub psbt: String,
7635	}
7636
7637	impl TryFrom<Response> for FundpsbtResponse {
7638	    type Error = super::TryFromResponseError;
7639
7640	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7641	        match response {
7642	            Response::FundPsbt(response) => Ok(response),
7643	            _ => Err(TryFromResponseError)
7644	        }
7645	    }
7646	}
7647
7648	#[derive(Clone, Debug, Deserialize, Serialize)]
7649	pub struct SendpsbtResponse {
7650	    pub tx: String,
7651	    pub txid: String,
7652	}
7653
7654	impl TryFrom<Response> for SendpsbtResponse {
7655	    type Error = super::TryFromResponseError;
7656
7657	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7658	        match response {
7659	            Response::SendPsbt(response) => Ok(response),
7660	            _ => Err(TryFromResponseError)
7661	        }
7662	    }
7663	}
7664
7665	#[derive(Clone, Debug, Deserialize, Serialize)]
7666	pub struct SignpsbtResponse {
7667	    pub signed_psbt: String,
7668	}
7669
7670	impl TryFrom<Response> for SignpsbtResponse {
7671	    type Error = super::TryFromResponseError;
7672
7673	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7674	        match response {
7675	            Response::SignPsbt(response) => Ok(response),
7676	            _ => Err(TryFromResponseError)
7677	        }
7678	    }
7679	}
7680
7681	#[derive(Clone, Debug, Deserialize, Serialize)]
7682	pub struct UtxopsbtReservations {
7683	    pub reserved: bool,
7684	    pub reserved_to_block: u32,
7685	    pub txid: String,
7686	    pub vout: u32,
7687	    pub was_reserved: bool,
7688	}
7689
7690	#[derive(Clone, Debug, Deserialize, Serialize)]
7691	pub struct UtxopsbtResponse {
7692	    #[serde(skip_serializing_if = "Option::is_none")]
7693	    pub change_outnum: Option<u32>,
7694	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
7695	    pub reservations: Option<Vec<UtxopsbtReservations>>,
7696	    pub estimated_final_weight: u32,
7697	    pub excess_msat: Amount,
7698	    pub feerate_per_kw: u32,
7699	    pub psbt: String,
7700	}
7701
7702	impl TryFrom<Response> for UtxopsbtResponse {
7703	    type Error = super::TryFromResponseError;
7704
7705	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7706	        match response {
7707	            Response::UtxoPsbt(response) => Ok(response),
7708	            _ => Err(TryFromResponseError)
7709	        }
7710	    }
7711	}
7712
7713	#[derive(Clone, Debug, Deserialize, Serialize)]
7714	pub struct TxdiscardResponse {
7715	    pub txid: String,
7716	    pub unsigned_tx: String,
7717	}
7718
7719	impl TryFrom<Response> for TxdiscardResponse {
7720	    type Error = super::TryFromResponseError;
7721
7722	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7723	        match response {
7724	            Response::TxDiscard(response) => Ok(response),
7725	            _ => Err(TryFromResponseError)
7726	        }
7727	    }
7728	}
7729
7730	#[derive(Clone, Debug, Deserialize, Serialize)]
7731	pub struct TxprepareResponse {
7732	    pub psbt: String,
7733	    pub txid: String,
7734	    pub unsigned_tx: String,
7735	}
7736
7737	impl TryFrom<Response> for TxprepareResponse {
7738	    type Error = super::TryFromResponseError;
7739
7740	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7741	        match response {
7742	            Response::TxPrepare(response) => Ok(response),
7743	            _ => Err(TryFromResponseError)
7744	        }
7745	    }
7746	}
7747
7748	#[derive(Clone, Debug, Deserialize, Serialize)]
7749	pub struct TxsendResponse {
7750	    pub psbt: String,
7751	    pub tx: String,
7752	    pub txid: String,
7753	}
7754
7755	impl TryFrom<Response> for TxsendResponse {
7756	    type Error = super::TryFromResponseError;
7757
7758	    fn try_from(response: Response) -> Result<Self, Self::Error> {
7759	        match response {
7760	            Response::TxSend(response) => Ok(response),
7761	            _ => Err(TryFromResponseError)
7762	        }
7763	    }
7764	}
7765
7766	#[derive(Clone, Debug, Deserialize, Serialize)]
7767	pub struct ListpeerchannelsChannelsAlias {
7768	    #[serde(skip_serializing_if = "Option::is_none")]
7769	    pub local: Option<ShortChannelId>,
7770	    #[serde(skip_serializing_if = "Option::is_none")]
7771	    pub remote: Option<ShortChannelId>,
7772	}
7773
7774	#[derive(Clone, Debug, Deserialize, Serialize)]
7775	pub struct ListpeerchannelsChannelsChannelType {
7776	    pub bits: Vec<u32>,
7777	    pub names: Vec<ChannelTypeName>,
7778	}
7779
7780	#[derive(Clone, Debug, Deserialize, Serialize)]
7781	pub struct ListpeerchannelsChannelsFeerate {
7782	    pub perkb: u32,
7783	    pub perkw: u32,
7784	}
7785
7786	#[derive(Clone, Debug, Deserialize, Serialize)]
7787	pub struct ListpeerchannelsChannelsFunding {
7788	    #[serde(skip_serializing_if = "Option::is_none")]
7789	    pub fee_paid_msat: Option<Amount>,
7790	    #[serde(skip_serializing_if = "Option::is_none")]
7791	    pub fee_rcvd_msat: Option<Amount>,
7792	    #[serde(skip_serializing_if = "Option::is_none")]
7793	    pub psbt: Option<String>,
7794	    #[serde(skip_serializing_if = "Option::is_none")]
7795	    pub pushed_msat: Option<Amount>,
7796	    #[serde(skip_serializing_if = "Option::is_none")]
7797	    pub withheld: Option<bool>,
7798	    pub local_funds_msat: Amount,
7799	    pub remote_funds_msat: Amount,
7800	}
7801
7802	#[derive(Clone, Debug, Deserialize, Serialize)]
7803	pub struct ListpeerchannelsChannelsUpdatesRemote {
7804	    pub cltv_expiry_delta: u32,
7805	    pub fee_base_msat: Amount,
7806	    pub fee_proportional_millionths: u32,
7807	    pub htlc_maximum_msat: Amount,
7808	    pub htlc_minimum_msat: Amount,
7809	}
7810
7811	#[derive(Clone, Debug, Deserialize, Serialize)]
7812	pub struct ListpeerchannelsChannelsUpdatesLocal {
7813	    pub cltv_expiry_delta: u32,
7814	    pub fee_base_msat: Amount,
7815	    pub fee_proportional_millionths: u32,
7816	    pub htlc_maximum_msat: Amount,
7817	    pub htlc_minimum_msat: Amount,
7818	}
7819
7820	#[derive(Clone, Debug, Deserialize, Serialize)]
7821	pub struct ListpeerchannelsChannelsUpdates {
7822	    #[serde(skip_serializing_if = "Option::is_none")]
7823	    pub remote: Option<ListpeerchannelsChannelsUpdatesRemote>,
7824	    pub local: ListpeerchannelsChannelsUpdatesLocal,
7825	}
7826
7827	/// ['Whether it came from peer, or is going to peer.']
7828	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
7829	#[allow(non_camel_case_types)]
7830	pub enum ListpeerchannelsChannelsHtlcsDirection {
7831	    #[serde(rename = "in")]
7832	    IN = 0,
7833	    #[serde(rename = "out")]
7834	    OUT = 1,
7835	}
7836
7837	impl TryFrom<i32> for ListpeerchannelsChannelsHtlcsDirection {
7838	    type Error = anyhow::Error;
7839	    fn try_from(c: i32) -> Result<ListpeerchannelsChannelsHtlcsDirection, anyhow::Error> {
7840	        match c {
7841	    0 => Ok(ListpeerchannelsChannelsHtlcsDirection::IN),
7842	    1 => Ok(ListpeerchannelsChannelsHtlcsDirection::OUT),
7843	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListpeerchannelsChannelsHtlcsDirection", o)),
7844	        }
7845	    }
7846	}
7847
7848	impl ToString for ListpeerchannelsChannelsHtlcsDirection {
7849	    fn to_string(&self) -> String {
7850	        match self {
7851	            ListpeerchannelsChannelsHtlcsDirection::IN => "IN",
7852	            ListpeerchannelsChannelsHtlcsDirection::OUT => "OUT",
7853	        }.to_string()
7854	    }
7855	}
7856
7857	#[derive(Clone, Debug, Deserialize, Serialize)]
7858	pub struct ListpeerchannelsChannelsHtlcs {
7859	    #[serde(skip_serializing_if = "Option::is_none")]
7860	    pub local_trimmed: Option<bool>,
7861	    #[serde(skip_serializing_if = "Option::is_none")]
7862	    pub status: Option<String>,
7863	    // Path `ListPeerChannels.channels[].htlcs[].direction`
7864	    pub direction: ListpeerchannelsChannelsHtlcsDirection,
7865	    // Path `ListPeerChannels.channels[].htlcs[].state`
7866	    pub state: HtlcState,
7867	    pub amount_msat: Amount,
7868	    pub expiry: u32,
7869	    pub id: u64,
7870	    pub payment_hash: Sha256,
7871	}
7872
7873	#[derive(Clone, Debug, Deserialize, Serialize)]
7874	pub struct ListpeerchannelsChannelsInflight {
7875	    #[serde(skip_serializing_if = "Option::is_none")]
7876	    pub scratch_txid: Option<String>,
7877	    pub feerate: String,
7878	    pub funding_outnum: u32,
7879	    pub funding_txid: String,
7880	    pub our_funding_msat: Amount,
7881	    pub splice_amount: i64,
7882	    pub total_funding_msat: Amount,
7883	}
7884
7885	/// ['What caused the change.']
7886	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
7887	#[allow(non_camel_case_types)]
7888	pub enum ListpeerchannelsChannelsStateChangesCause {
7889	    #[serde(rename = "unknown")]
7890	    UNKNOWN = 0,
7891	    #[serde(rename = "local")]
7892	    LOCAL = 1,
7893	    #[serde(rename = "user")]
7894	    USER = 2,
7895	    #[serde(rename = "remote")]
7896	    REMOTE = 3,
7897	    #[serde(rename = "protocol")]
7898	    PROTOCOL = 4,
7899	    #[serde(rename = "onchain")]
7900	    ONCHAIN = 5,
7901	}
7902
7903	impl TryFrom<i32> for ListpeerchannelsChannelsStateChangesCause {
7904	    type Error = anyhow::Error;
7905	    fn try_from(c: i32) -> Result<ListpeerchannelsChannelsStateChangesCause, anyhow::Error> {
7906	        match c {
7907	    0 => Ok(ListpeerchannelsChannelsStateChangesCause::UNKNOWN),
7908	    1 => Ok(ListpeerchannelsChannelsStateChangesCause::LOCAL),
7909	    2 => Ok(ListpeerchannelsChannelsStateChangesCause::USER),
7910	    3 => Ok(ListpeerchannelsChannelsStateChangesCause::REMOTE),
7911	    4 => Ok(ListpeerchannelsChannelsStateChangesCause::PROTOCOL),
7912	    5 => Ok(ListpeerchannelsChannelsStateChangesCause::ONCHAIN),
7913	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListpeerchannelsChannelsStateChangesCause", o)),
7914	        }
7915	    }
7916	}
7917
7918	impl ToString for ListpeerchannelsChannelsStateChangesCause {
7919	    fn to_string(&self) -> String {
7920	        match self {
7921	            ListpeerchannelsChannelsStateChangesCause::UNKNOWN => "UNKNOWN",
7922	            ListpeerchannelsChannelsStateChangesCause::LOCAL => "LOCAL",
7923	            ListpeerchannelsChannelsStateChangesCause::USER => "USER",
7924	            ListpeerchannelsChannelsStateChangesCause::REMOTE => "REMOTE",
7925	            ListpeerchannelsChannelsStateChangesCause::PROTOCOL => "PROTOCOL",
7926	            ListpeerchannelsChannelsStateChangesCause::ONCHAIN => "ONCHAIN",
7927	        }.to_string()
7928	    }
7929	}
7930
7931	#[derive(Clone, Debug, Deserialize, Serialize)]
7932	pub struct ListpeerchannelsChannelsStateChanges {
7933	    // Path `ListPeerChannels.channels[].state_changes[].cause`
7934	    pub cause: ListpeerchannelsChannelsStateChangesCause,
7935	    // Path `ListPeerChannels.channels[].state_changes[].new_state`
7936	    pub new_state: ChannelState,
7937	    // Path `ListPeerChannels.channels[].state_changes[].old_state`
7938	    pub old_state: ChannelState,
7939	    pub message: String,
7940	    pub timestamp: String,
7941	}
7942
7943	#[derive(Clone, Debug, Deserialize, Serialize)]
7944	pub struct ListpeerchannelsChannels {
7945	    #[serde(skip_serializing_if = "Option::is_none")]
7946	    pub alias: Option<ListpeerchannelsChannelsAlias>,
7947	    #[serde(skip_serializing_if = "Option::is_none")]
7948	    pub channel_id: Option<Sha256>,
7949	    #[serde(skip_serializing_if = "Option::is_none")]
7950	    pub channel_type: Option<ListpeerchannelsChannelsChannelType>,
7951	    #[serde(skip_serializing_if = "Option::is_none")]
7952	    pub close_to: Option<String>,
7953	    #[serde(skip_serializing_if = "Option::is_none")]
7954	    pub close_to_addr: Option<String>,
7955	    #[serde(skip_serializing_if = "Option::is_none")]
7956	    pub closer: Option<ChannelSide>,
7957	    #[serde(skip_serializing_if = "Option::is_none")]
7958	    pub direction: Option<u32>,
7959	    #[serde(skip_serializing_if = "Option::is_none")]
7960	    pub dust_limit_msat: Option<Amount>,
7961	    #[serde(skip_serializing_if = "Option::is_none")]
7962	    pub fee_base_msat: Option<Amount>,
7963	    #[serde(skip_serializing_if = "Option::is_none")]
7964	    pub fee_proportional_millionths: Option<u32>,
7965	    #[serde(skip_serializing_if = "Option::is_none")]
7966	    pub feerate: Option<ListpeerchannelsChannelsFeerate>,
7967	    #[serde(skip_serializing_if = "Option::is_none")]
7968	    pub funding: Option<ListpeerchannelsChannelsFunding>,
7969	    #[serde(skip_serializing_if = "Option::is_none")]
7970	    pub funding_outnum: Option<u32>,
7971	    #[serde(skip_serializing_if = "Option::is_none")]
7972	    pub funding_txid: Option<String>,
7973	    #[serde(skip_serializing_if = "Option::is_none")]
7974	    pub ignore_fee_limits: Option<bool>,
7975	    #[serde(skip_serializing_if = "Option::is_none")]
7976	    pub in_fulfilled_msat: Option<Amount>,
7977	    #[serde(skip_serializing_if = "Option::is_none")]
7978	    pub in_offered_msat: Option<Amount>,
7979	    #[serde(skip_serializing_if = "Option::is_none")]
7980	    pub in_payments_fulfilled: Option<u64>,
7981	    #[serde(skip_serializing_if = "Option::is_none")]
7982	    pub in_payments_offered: Option<u64>,
7983	    #[serde(skip_serializing_if = "Option::is_none")]
7984	    pub initial_feerate: Option<String>,
7985	    #[serde(skip_serializing_if = "Option::is_none")]
7986	    pub last_feerate: Option<String>,
7987	    #[serde(skip_serializing_if = "Option::is_none")]
7988	    pub last_stable_connection: Option<u64>,
7989	    #[serde(skip_serializing_if = "Option::is_none")]
7990	    pub last_tx_fee_msat: Option<Amount>,
7991	    #[serde(skip_serializing_if = "Option::is_none")]
7992	    pub lost_state: Option<bool>,
7993	    #[serde(skip_serializing_if = "Option::is_none")]
7994	    pub max_accepted_htlcs: Option<u32>,
7995	    #[serde(skip_serializing_if = "Option::is_none")]
7996	    pub max_to_us_msat: Option<Amount>,
7997	    #[serde(skip_serializing_if = "Option::is_none")]
7998	    pub maximum_htlc_out_msat: Option<Amount>,
7999	    #[serde(skip_serializing_if = "Option::is_none")]
8000	    pub min_to_us_msat: Option<Amount>,
8001	    #[serde(skip_serializing_if = "Option::is_none")]
8002	    pub minimum_htlc_in_msat: Option<Amount>,
8003	    #[serde(skip_serializing_if = "Option::is_none")]
8004	    pub minimum_htlc_out_msat: Option<Amount>,
8005	    #[serde(skip_serializing_if = "Option::is_none")]
8006	    pub next_fee_step: Option<u32>,
8007	    #[serde(skip_serializing_if = "Option::is_none")]
8008	    pub next_feerate: Option<String>,
8009	    #[serde(skip_serializing_if = "Option::is_none")]
8010	    pub our_max_htlc_value_in_flight_msat: Option<Amount>,
8011	    #[serde(skip_serializing_if = "Option::is_none")]
8012	    pub our_reserve_msat: Option<Amount>,
8013	    #[serde(skip_serializing_if = "Option::is_none")]
8014	    pub our_to_self_delay: Option<u32>,
8015	    #[serde(skip_serializing_if = "Option::is_none")]
8016	    pub out_fulfilled_msat: Option<Amount>,
8017	    #[serde(skip_serializing_if = "Option::is_none")]
8018	    pub out_offered_msat: Option<Amount>,
8019	    #[serde(skip_serializing_if = "Option::is_none")]
8020	    pub out_payments_fulfilled: Option<u64>,
8021	    #[serde(skip_serializing_if = "Option::is_none")]
8022	    pub out_payments_offered: Option<u64>,
8023	    #[serde(skip_serializing_if = "Option::is_none")]
8024	    pub owner: Option<String>,
8025	    #[serde(skip_serializing_if = "Option::is_none")]
8026	    pub private: Option<bool>,
8027	    #[serde(skip_serializing_if = "Option::is_none")]
8028	    pub receivable_msat: Option<Amount>,
8029	    #[serde(skip_serializing_if = "Option::is_none")]
8030	    pub reestablished: Option<bool>,
8031	    #[serde(skip_serializing_if = "Option::is_none")]
8032	    pub scratch_txid: Option<String>,
8033	    #[serde(skip_serializing_if = "Option::is_none")]
8034	    pub short_channel_id: Option<ShortChannelId>,
8035	    #[serde(skip_serializing_if = "Option::is_none")]
8036	    pub spendable_msat: Option<Amount>,
8037	    #[serde(skip_serializing_if = "Option::is_none")]
8038	    pub their_max_htlc_value_in_flight_msat: Option<Amount>,
8039	    #[serde(skip_serializing_if = "Option::is_none")]
8040	    pub their_reserve_msat: Option<Amount>,
8041	    #[serde(skip_serializing_if = "Option::is_none")]
8042	    pub their_to_self_delay: Option<u32>,
8043	    #[serde(skip_serializing_if = "Option::is_none")]
8044	    pub to_us_msat: Option<Amount>,
8045	    #[serde(skip_serializing_if = "Option::is_none")]
8046	    pub total_msat: Option<Amount>,
8047	    #[serde(skip_serializing_if = "Option::is_none")]
8048	    pub updates: Option<ListpeerchannelsChannelsUpdates>,
8049	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8050	    pub htlcs: Option<Vec<ListpeerchannelsChannelsHtlcs>>,
8051	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8052	    pub inflight: Option<Vec<ListpeerchannelsChannelsInflight>>,
8053	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8054	    pub state_changes: Option<Vec<ListpeerchannelsChannelsStateChanges>>,
8055	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8056	    pub status: Option<Vec<String>>,
8057	    // Path `ListPeerChannels.channels[].opener`
8058	    pub opener: ChannelSide,
8059	    // Path `ListPeerChannels.channels[].state`
8060	    pub state: ChannelState,
8061	    pub features: Vec<String>,
8062	    pub peer_connected: bool,
8063	    pub peer_id: PublicKey,
8064	}
8065
8066	#[derive(Clone, Debug, Deserialize, Serialize)]
8067	pub struct ListpeerchannelsResponse {
8068	    pub channels: Vec<ListpeerchannelsChannels>,
8069	}
8070
8071	impl TryFrom<Response> for ListpeerchannelsResponse {
8072	    type Error = super::TryFromResponseError;
8073
8074	    fn try_from(response: Response) -> Result<Self, Self::Error> {
8075	        match response {
8076	            Response::ListPeerChannels(response) => Ok(response),
8077	            _ => Err(TryFromResponseError)
8078	        }
8079	    }
8080	}
8081
8082	#[derive(Clone, Debug, Deserialize, Serialize)]
8083	pub struct ListclosedchannelsClosedchannelsAlias {
8084	    #[serde(skip_serializing_if = "Option::is_none")]
8085	    pub local: Option<ShortChannelId>,
8086	    #[serde(skip_serializing_if = "Option::is_none")]
8087	    pub remote: Option<ShortChannelId>,
8088	}
8089
8090	#[derive(Clone, Debug, Deserialize, Serialize)]
8091	pub struct ListclosedchannelsClosedchannelsChannelType {
8092	    pub bits: Vec<u32>,
8093	    pub names: Vec<ChannelTypeName>,
8094	}
8095
8096	/// ['What caused the channel to close.']
8097	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
8098	#[allow(non_camel_case_types)]
8099	pub enum ListclosedchannelsClosedchannelsCloseCause {
8100	    #[serde(rename = "unknown")]
8101	    UNKNOWN = 0,
8102	    #[serde(rename = "local")]
8103	    LOCAL = 1,
8104	    #[serde(rename = "user")]
8105	    USER = 2,
8106	    #[serde(rename = "remote")]
8107	    REMOTE = 3,
8108	    #[serde(rename = "protocol")]
8109	    PROTOCOL = 4,
8110	    #[serde(rename = "onchain")]
8111	    ONCHAIN = 5,
8112	}
8113
8114	impl TryFrom<i32> for ListclosedchannelsClosedchannelsCloseCause {
8115	    type Error = anyhow::Error;
8116	    fn try_from(c: i32) -> Result<ListclosedchannelsClosedchannelsCloseCause, anyhow::Error> {
8117	        match c {
8118	    0 => Ok(ListclosedchannelsClosedchannelsCloseCause::UNKNOWN),
8119	    1 => Ok(ListclosedchannelsClosedchannelsCloseCause::LOCAL),
8120	    2 => Ok(ListclosedchannelsClosedchannelsCloseCause::USER),
8121	    3 => Ok(ListclosedchannelsClosedchannelsCloseCause::REMOTE),
8122	    4 => Ok(ListclosedchannelsClosedchannelsCloseCause::PROTOCOL),
8123	    5 => Ok(ListclosedchannelsClosedchannelsCloseCause::ONCHAIN),
8124	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListclosedchannelsClosedchannelsCloseCause", o)),
8125	        }
8126	    }
8127	}
8128
8129	impl ToString for ListclosedchannelsClosedchannelsCloseCause {
8130	    fn to_string(&self) -> String {
8131	        match self {
8132	            ListclosedchannelsClosedchannelsCloseCause::UNKNOWN => "UNKNOWN",
8133	            ListclosedchannelsClosedchannelsCloseCause::LOCAL => "LOCAL",
8134	            ListclosedchannelsClosedchannelsCloseCause::USER => "USER",
8135	            ListclosedchannelsClosedchannelsCloseCause::REMOTE => "REMOTE",
8136	            ListclosedchannelsClosedchannelsCloseCause::PROTOCOL => "PROTOCOL",
8137	            ListclosedchannelsClosedchannelsCloseCause::ONCHAIN => "ONCHAIN",
8138	        }.to_string()
8139	    }
8140	}
8141
8142	#[derive(Clone, Debug, Deserialize, Serialize)]
8143	pub struct ListclosedchannelsClosedchannels {
8144	    #[serde(skip_serializing_if = "Option::is_none")]
8145	    pub alias: Option<ListclosedchannelsClosedchannelsAlias>,
8146	    #[serde(skip_serializing_if = "Option::is_none")]
8147	    pub channel_type: Option<ListclosedchannelsClosedchannelsChannelType>,
8148	    #[serde(skip_serializing_if = "Option::is_none")]
8149	    pub closer: Option<ChannelSide>,
8150	    #[serde(skip_serializing_if = "Option::is_none")]
8151	    pub funding_fee_paid_msat: Option<Amount>,
8152	    #[serde(skip_serializing_if = "Option::is_none")]
8153	    pub funding_fee_rcvd_msat: Option<Amount>,
8154	    #[serde(skip_serializing_if = "Option::is_none")]
8155	    pub funding_psbt: Option<String>,
8156	    #[serde(skip_serializing_if = "Option::is_none")]
8157	    pub funding_pushed_msat: Option<Amount>,
8158	    #[serde(skip_serializing_if = "Option::is_none")]
8159	    pub funding_withheld: Option<bool>,
8160	    #[serde(skip_serializing_if = "Option::is_none")]
8161	    pub last_commitment_fee_msat: Option<Amount>,
8162	    #[serde(skip_serializing_if = "Option::is_none")]
8163	    pub last_commitment_txid: Option<Sha256>,
8164	    #[serde(skip_serializing_if = "Option::is_none")]
8165	    pub last_stable_connection: Option<u64>,
8166	    #[serde(skip_serializing_if = "Option::is_none")]
8167	    pub peer_id: Option<PublicKey>,
8168	    #[serde(skip_serializing_if = "Option::is_none")]
8169	    pub short_channel_id: Option<ShortChannelId>,
8170	    // Path `ListClosedChannels.closedchannels[].close_cause`
8171	    pub close_cause: ListclosedchannelsClosedchannelsCloseCause,
8172	    // Path `ListClosedChannels.closedchannels[].opener`
8173	    pub opener: ChannelSide,
8174	    pub channel_id: Sha256,
8175	    pub final_to_us_msat: Amount,
8176	    pub funding_outnum: u32,
8177	    pub funding_txid: String,
8178	    pub leased: bool,
8179	    pub max_to_us_msat: Amount,
8180	    pub min_to_us_msat: Amount,
8181	    pub private: bool,
8182	    pub total_htlcs_sent: u64,
8183	    pub total_local_commitments: u64,
8184	    pub total_msat: Amount,
8185	    pub total_remote_commitments: u64,
8186	}
8187
8188	#[derive(Clone, Debug, Deserialize, Serialize)]
8189	pub struct ListclosedchannelsResponse {
8190	    pub closedchannels: Vec<ListclosedchannelsClosedchannels>,
8191	}
8192
8193	impl TryFrom<Response> for ListclosedchannelsResponse {
8194	    type Error = super::TryFromResponseError;
8195
8196	    fn try_from(response: Response) -> Result<Self, Self::Error> {
8197	        match response {
8198	            Response::ListClosedChannels(response) => Ok(response),
8199	            _ => Err(TryFromResponseError)
8200	        }
8201	    }
8202	}
8203
8204	#[derive(Clone, Debug, Deserialize, Serialize)]
8205	pub struct DecodeInvreqBip353Name {
8206	    #[serde(skip_serializing_if = "Option::is_none")]
8207	    pub domain: Option<String>,
8208	    #[serde(skip_serializing_if = "Option::is_none")]
8209	    pub name: Option<String>,
8210	}
8211
8212	#[derive(Clone, Debug, Deserialize, Serialize)]
8213	pub struct DecodeOfferRecurrencePaywindow {
8214	    #[serde(skip_serializing_if = "Option::is_none")]
8215	    pub proportional_amount: Option<bool>,
8216	    pub seconds_after: u32,
8217	    pub seconds_before: u32,
8218	}
8219
8220	#[derive(Clone, Debug, Deserialize, Serialize)]
8221	pub struct DecodeOfferRecurrence {
8222	    #[serde(skip_serializing_if = "Option::is_none")]
8223	    pub basetime: Option<u64>,
8224	    #[serde(skip_serializing_if = "Option::is_none")]
8225	    pub compulsory_field: Option<bool>,
8226	    #[serde(skip_serializing_if = "Option::is_none")]
8227	    pub limit: Option<u32>,
8228	    #[serde(skip_serializing_if = "Option::is_none")]
8229	    pub paywindow: Option<DecodeOfferRecurrencePaywindow>,
8230	    #[serde(skip_serializing_if = "Option::is_none")]
8231	    pub time_unit_name: Option<String>,
8232	    pub period: u32,
8233	    pub time_unit: u32,
8234	}
8235
8236	#[derive(Clone, Debug, Deserialize, Serialize)]
8237	pub struct DecodeExtra {
8238	    pub data: String,
8239	    pub tag: String,
8240	}
8241
8242	/// ['The address type (if known).']
8243	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
8244	#[allow(non_camel_case_types)]
8245	pub enum DecodeFallbacksType {
8246	    #[serde(rename = "P2PKH")]
8247	    P2PKH = 0,
8248	    #[serde(rename = "P2SH")]
8249	    P2SH = 1,
8250	    #[serde(rename = "P2WPKH")]
8251	    P2WPKH = 2,
8252	    #[serde(rename = "P2WSH")]
8253	    P2WSH = 3,
8254	    #[serde(rename = "P2TR")]
8255	    P2TR = 4,
8256	}
8257
8258	impl TryFrom<i32> for DecodeFallbacksType {
8259	    type Error = anyhow::Error;
8260	    fn try_from(c: i32) -> Result<DecodeFallbacksType, anyhow::Error> {
8261	        match c {
8262	    0 => Ok(DecodeFallbacksType::P2PKH),
8263	    1 => Ok(DecodeFallbacksType::P2SH),
8264	    2 => Ok(DecodeFallbacksType::P2WPKH),
8265	    3 => Ok(DecodeFallbacksType::P2WSH),
8266	    4 => Ok(DecodeFallbacksType::P2TR),
8267	            o => Err(anyhow::anyhow!("Unknown variant {} for enum DecodeFallbacksType", o)),
8268	        }
8269	    }
8270	}
8271
8272	impl ToString for DecodeFallbacksType {
8273	    fn to_string(&self) -> String {
8274	        match self {
8275	            DecodeFallbacksType::P2PKH => "P2PKH",
8276	            DecodeFallbacksType::P2SH => "P2SH",
8277	            DecodeFallbacksType::P2WPKH => "P2WPKH",
8278	            DecodeFallbacksType::P2WSH => "P2WSH",
8279	            DecodeFallbacksType::P2TR => "P2TR",
8280	        }.to_string()
8281	    }
8282	}
8283
8284	#[derive(Clone, Debug, Deserialize, Serialize)]
8285	pub struct DecodeFallbacks {
8286	    #[serde(skip_serializing_if = "Option::is_none")]
8287	    pub addr: Option<String>,
8288	    // Path `Decode.fallbacks[].type`
8289	    #[serde(rename = "type")]
8290	    pub item_type: DecodeFallbacksType,
8291	    pub hex: String,
8292	}
8293
8294	#[derive(Clone, Debug, Deserialize, Serialize)]
8295	pub struct DecodeInvoiceFallbacks {
8296	    #[serde(skip_serializing_if = "Option::is_none")]
8297	    pub address: Option<String>,
8298	    pub hex: String,
8299	    pub version: u8,
8300	}
8301
8302	#[derive(Clone, Debug, Deserialize, Serialize)]
8303	pub struct DecodeInvoicePathsPath {
8304	    pub blinded_node_id: PublicKey,
8305	    pub encrypted_recipient_data: String,
8306	}
8307
8308	#[derive(Clone, Debug, Deserialize, Serialize)]
8309	pub struct DecodeInvoicePathsPayinfo {
8310	    #[serde(skip_serializing_if = "Option::is_none")]
8311	    pub htlc_maximum_msat: Option<Amount>,
8312	    #[serde(skip_serializing_if = "Option::is_none")]
8313	    pub htlc_minimum_msat: Option<Amount>,
8314	    pub cltv_expiry_delta: u32,
8315	    pub features: String,
8316	    pub fee_base_msat: Amount,
8317	    pub fee_proportional_millionths: u32,
8318	}
8319
8320	#[derive(Clone, Debug, Deserialize, Serialize)]
8321	pub struct DecodeInvoicePaths {
8322	    #[serde(skip_serializing_if = "Option::is_none")]
8323	    pub first_node_id: Option<PublicKey>,
8324	    #[serde(skip_serializing_if = "Option::is_none")]
8325	    pub first_path_key: Option<PublicKey>,
8326	    #[serde(skip_serializing_if = "Option::is_none")]
8327	    pub first_scid: Option<ShortChannelId>,
8328	    #[serde(skip_serializing_if = "Option::is_none")]
8329	    pub first_scid_dir: Option<u32>,
8330	    pub path: Vec<DecodeInvoicePathsPath>,
8331	    pub payinfo: DecodeInvoicePathsPayinfo,
8332	}
8333
8334	#[derive(Clone, Debug, Deserialize, Serialize)]
8335	pub struct DecodeInvreqPathsPath {
8336	    pub blinded_node_id: PublicKey,
8337	    pub encrypted_recipient_data: String,
8338	}
8339
8340	#[derive(Clone, Debug, Deserialize, Serialize)]
8341	pub struct DecodeInvreqPaths {
8342	    #[serde(skip_serializing_if = "Option::is_none")]
8343	    pub first_node_id: Option<PublicKey>,
8344	    #[serde(skip_serializing_if = "Option::is_none")]
8345	    pub first_path_key: Option<PublicKey>,
8346	    #[serde(skip_serializing_if = "Option::is_none")]
8347	    pub first_scid: Option<ShortChannelId>,
8348	    #[serde(skip_serializing_if = "Option::is_none")]
8349	    pub first_scid_dir: Option<u32>,
8350	    pub path: Vec<DecodeInvreqPathsPath>,
8351	}
8352
8353	#[derive(Clone, Debug, Deserialize, Serialize)]
8354	pub struct DecodeOfferPathsPath {
8355	    pub blinded_node_id: PublicKey,
8356	    pub encrypted_recipient_data: String,
8357	}
8358
8359	#[derive(Clone, Debug, Deserialize, Serialize)]
8360	pub struct DecodeOfferPaths {
8361	    #[serde(skip_serializing_if = "Option::is_none")]
8362	    pub first_node_id: Option<PublicKey>,
8363	    #[serde(skip_serializing_if = "Option::is_none")]
8364	    pub first_path_key: Option<PublicKey>,
8365	    #[serde(skip_serializing_if = "Option::is_none")]
8366	    pub first_scid: Option<ShortChannelId>,
8367	    #[serde(skip_serializing_if = "Option::is_none")]
8368	    pub first_scid_dir: Option<u32>,
8369	    pub path: Vec<DecodeOfferPathsPath>,
8370	}
8371
8372	#[derive(Clone, Debug, Deserialize, Serialize)]
8373	pub struct DecodeRestrictions {
8374	    pub alternatives: Vec<String>,
8375	    pub summary: String,
8376	}
8377
8378	#[derive(Clone, Debug, Deserialize, Serialize)]
8379	pub struct DecodeUnknownInvoiceRequestTlvs {
8380	    #[serde(rename = "type")]
8381	    pub item_type: u64,
8382	    pub length: u64,
8383	    pub value: String,
8384	}
8385
8386	#[derive(Clone, Debug, Deserialize, Serialize)]
8387	pub struct DecodeUnknownInvoiceTlvs {
8388	    #[serde(rename = "type")]
8389	    pub item_type: u64,
8390	    pub length: u64,
8391	    pub value: String,
8392	}
8393
8394	#[derive(Clone, Debug, Deserialize, Serialize)]
8395	pub struct DecodeUnknownOfferTlvs {
8396	    #[serde(rename = "type")]
8397	    pub item_type: u64,
8398	    pub length: u64,
8399	    pub value: String,
8400	}
8401
8402	#[derive(Clone, Debug, Deserialize, Serialize)]
8403	pub struct DecodeUnknownPayerProofTlvs {
8404	    #[serde(rename = "type")]
8405	    pub item_type: u64,
8406	    pub length: u64,
8407	    pub value: String,
8408	}
8409
8410	/// ['What kind of object it decoded to.']
8411	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
8412	#[allow(non_camel_case_types)]
8413	pub enum DecodeType {
8414	    #[serde(rename = "bolt12 offer")]
8415	    BOLT12_OFFER = 0,
8416	    #[serde(rename = "bolt12 invoice")]
8417	    BOLT12_INVOICE = 1,
8418	    #[serde(rename = "bolt12 invoice_request")]
8419	    BOLT12_INVOICE_REQUEST = 2,
8420	    #[serde(rename = "bolt11 invoice")]
8421	    BOLT11_INVOICE = 3,
8422	    #[serde(rename = "rune")]
8423	    RUNE = 4,
8424	    #[serde(rename = "emergency recover")]
8425	    EMERGENCY_RECOVER = 5,
8426	    #[serde(rename = "bolt12 payer_proof")]
8427	    BOLT12_PAYER_PROOF = 6,
8428	}
8429
8430	impl TryFrom<i32> for DecodeType {
8431	    type Error = anyhow::Error;
8432	    fn try_from(c: i32) -> Result<DecodeType, anyhow::Error> {
8433	        match c {
8434	    0 => Ok(DecodeType::BOLT12_OFFER),
8435	    1 => Ok(DecodeType::BOLT12_INVOICE),
8436	    2 => Ok(DecodeType::BOLT12_INVOICE_REQUEST),
8437	    3 => Ok(DecodeType::BOLT11_INVOICE),
8438	    4 => Ok(DecodeType::RUNE),
8439	    5 => Ok(DecodeType::EMERGENCY_RECOVER),
8440	    6 => Ok(DecodeType::BOLT12_PAYER_PROOF),
8441	            o => Err(anyhow::anyhow!("Unknown variant {} for enum DecodeType", o)),
8442	        }
8443	    }
8444	}
8445
8446	impl ToString for DecodeType {
8447	    fn to_string(&self) -> String {
8448	        match self {
8449	            DecodeType::BOLT12_OFFER => "BOLT12_OFFER",
8450	            DecodeType::BOLT12_INVOICE => "BOLT12_INVOICE",
8451	            DecodeType::BOLT12_INVOICE_REQUEST => "BOLT12_INVOICE_REQUEST",
8452	            DecodeType::BOLT11_INVOICE => "BOLT11_INVOICE",
8453	            DecodeType::RUNE => "RUNE",
8454	            DecodeType::EMERGENCY_RECOVER => "EMERGENCY_RECOVER",
8455	            DecodeType::BOLT12_PAYER_PROOF => "BOLT12_PAYER_PROOF",
8456	        }.to_string()
8457	    }
8458	}
8459
8460	#[derive(Clone, Debug, Deserialize, Serialize)]
8461	pub struct DecodeResponse {
8462	    #[serde(skip_serializing_if = "Option::is_none")]
8463	    pub amount_msat: Option<Amount>,
8464	    #[serde(skip_serializing_if = "Option::is_none")]
8465	    pub created_at: Option<u64>,
8466	    #[serde(skip_serializing_if = "Option::is_none")]
8467	    pub currency: Option<String>,
8468	    #[serde(skip_serializing_if = "Option::is_none")]
8469	    pub currency_minor_unit: Option<u32>,
8470	    #[serde(skip_serializing_if = "Option::is_none")]
8471	    pub decrypted: Option<String>,
8472	    #[serde(skip_serializing_if = "Option::is_none")]
8473	    pub description: Option<String>,
8474	    #[serde(skip_serializing_if = "Option::is_none")]
8475	    pub description_hash: Option<Sha256>,
8476	    #[serde(skip_serializing_if = "Option::is_none")]
8477	    pub expiry: Option<u64>,
8478	    #[serde(skip_serializing_if = "Option::is_none")]
8479	    pub features: Option<String>,
8480	    #[serde(skip_serializing_if = "Option::is_none")]
8481	    pub hex: Option<String>,
8482	    #[serde(skip_serializing_if = "Option::is_none")]
8483	    pub invoice_amount_msat: Option<Amount>,
8484	    #[serde(skip_serializing_if = "Option::is_none")]
8485	    pub invoice_created_at: Option<u64>,
8486	    #[serde(skip_serializing_if = "Option::is_none")]
8487	    pub invoice_features: Option<String>,
8488	    #[serde(skip_serializing_if = "Option::is_none")]
8489	    pub invoice_node_id: Option<PublicKey>,
8490	    #[serde(skip_serializing_if = "Option::is_none")]
8491	    pub invoice_payment_hash: Option<String>,
8492	    #[serde(skip_serializing_if = "Option::is_none")]
8493	    pub invoice_recurrence_basetime: Option<u64>,
8494	    #[serde(skip_serializing_if = "Option::is_none")]
8495	    pub invoice_relative_expiry: Option<u32>,
8496	    #[serde(skip_serializing_if = "Option::is_none")]
8497	    pub invreq_amount_msat: Option<Amount>,
8498	    #[serde(skip_serializing_if = "Option::is_none")]
8499	    pub invreq_bip_353_name: Option<DecodeInvreqBip353Name>,
8500	    #[serde(skip_serializing_if = "Option::is_none")]
8501	    pub invreq_chain: Option<String>,
8502	    #[serde(skip_serializing_if = "Option::is_none")]
8503	    pub invreq_features: Option<String>,
8504	    #[serde(skip_serializing_if = "Option::is_none")]
8505	    pub invreq_metadata: Option<String>,
8506	    #[serde(skip_serializing_if = "Option::is_none")]
8507	    pub invreq_payer_id: Option<String>,
8508	    #[serde(skip_serializing_if = "Option::is_none")]
8509	    pub invreq_payer_note: Option<String>,
8510	    #[serde(skip_serializing_if = "Option::is_none")]
8511	    pub invreq_quantity: Option<u64>,
8512	    #[serde(skip_serializing_if = "Option::is_none")]
8513	    pub invreq_recurrence_cancel: Option<bool>,
8514	    #[serde(skip_serializing_if = "Option::is_none")]
8515	    pub invreq_recurrence_counter: Option<u32>,
8516	    #[serde(skip_serializing_if = "Option::is_none")]
8517	    pub invreq_recurrence_start: Option<u32>,
8518	    #[serde(skip_serializing_if = "Option::is_none")]
8519	    pub min_final_cltv_expiry: Option<u32>,
8520	    #[serde(skip_serializing_if = "Option::is_none")]
8521	    pub offer_absolute_expiry: Option<u64>,
8522	    #[serde(skip_serializing_if = "Option::is_none")]
8523	    pub offer_amount: Option<u64>,
8524	    #[serde(skip_serializing_if = "Option::is_none")]
8525	    pub offer_amount_msat: Option<Amount>,
8526	    #[serde(skip_serializing_if = "Option::is_none")]
8527	    pub offer_currency: Option<String>,
8528	    #[serde(skip_serializing_if = "Option::is_none")]
8529	    pub offer_description: Option<String>,
8530	    #[serde(skip_serializing_if = "Option::is_none")]
8531	    pub offer_features: Option<String>,
8532	    #[serde(skip_serializing_if = "Option::is_none")]
8533	    pub offer_id: Option<String>,
8534	    #[serde(skip_serializing_if = "Option::is_none")]
8535	    pub offer_issuer: Option<String>,
8536	    #[serde(skip_serializing_if = "Option::is_none")]
8537	    pub offer_issuer_id: Option<PublicKey>,
8538	    #[serde(skip_serializing_if = "Option::is_none")]
8539	    pub offer_metadata: Option<String>,
8540	    #[serde(skip_serializing_if = "Option::is_none")]
8541	    pub offer_quantity_max: Option<u64>,
8542	    #[serde(skip_serializing_if = "Option::is_none")]
8543	    pub offer_recurrence: Option<DecodeOfferRecurrence>,
8544	    #[serde(skip_serializing_if = "Option::is_none")]
8545	    pub payee: Option<PublicKey>,
8546	    #[serde(skip_serializing_if = "Option::is_none")]
8547	    pub payment_hash: Option<Sha256>,
8548	    #[serde(skip_serializing_if = "Option::is_none")]
8549	    pub payment_metadata: Option<String>,
8550	    #[serde(skip_serializing_if = "Option::is_none")]
8551	    pub payment_secret: Option<Secret>,
8552	    #[serde(skip_serializing_if = "Option::is_none")]
8553	    pub proof_note: Option<String>,
8554	    #[serde(skip_serializing_if = "Option::is_none")]
8555	    pub proof_preimage: Option<String>,
8556	    #[serde(skip_serializing_if = "Option::is_none")]
8557	    pub proof_signature: Option<String>,
8558	    #[serde(skip_serializing_if = "Option::is_none")]
8559	    pub routes: Option<DecodeRoutehintList>,
8560	    #[serde(skip_serializing_if = "Option::is_none")]
8561	    pub signature: Option<String>,
8562	    #[serde(skip_serializing_if = "Option::is_none")]
8563	    pub string: Option<String>,
8564	    #[serde(skip_serializing_if = "Option::is_none")]
8565	    pub unique_id: Option<String>,
8566	    #[serde(skip_serializing_if = "Option::is_none")]
8567	    pub version: Option<String>,
8568	    #[serde(skip_serializing_if = "Option::is_none")]
8569	    pub warning_empty_blinded_path: Option<String>,
8570	    #[serde(skip_serializing_if = "Option::is_none")]
8571	    pub warning_invalid_invoice_request_signature: Option<String>,
8572	    #[serde(skip_serializing_if = "Option::is_none")]
8573	    pub warning_invalid_invoice_signature: Option<String>,
8574	    #[serde(skip_serializing_if = "Option::is_none")]
8575	    pub warning_invalid_invreq_payer_note: Option<String>,
8576	    #[serde(skip_serializing_if = "Option::is_none")]
8577	    pub warning_invalid_offer_currency: Option<String>,
8578	    #[serde(skip_serializing_if = "Option::is_none")]
8579	    pub warning_invalid_offer_description: Option<String>,
8580	    #[serde(skip_serializing_if = "Option::is_none")]
8581	    pub warning_invalid_offer_issuer: Option<String>,
8582	    #[serde(skip_serializing_if = "Option::is_none")]
8583	    pub warning_invreq_bip_353_name_domain_invalid: Option<String>,
8584	    #[serde(skip_serializing_if = "Option::is_none")]
8585	    pub warning_invreq_bip_353_name_name_invalid: Option<String>,
8586	    #[serde(skip_serializing_if = "Option::is_none")]
8587	    pub warning_invreq_recurrence_cancel_with_zero_counter: Option<String>,
8588	    #[serde(skip_serializing_if = "Option::is_none")]
8589	    pub warning_invreq_recurrence_cancel_without_counter: Option<String>,
8590	    #[serde(skip_serializing_if = "Option::is_none")]
8591	    pub warning_missing_invoice_amount: Option<String>,
8592	    #[serde(skip_serializing_if = "Option::is_none")]
8593	    pub warning_missing_invoice_blindedpay: Option<String>,
8594	    #[serde(skip_serializing_if = "Option::is_none")]
8595	    pub warning_missing_invoice_created_at: Option<String>,
8596	    #[serde(skip_serializing_if = "Option::is_none")]
8597	    pub warning_missing_invoice_node_id: Option<String>,
8598	    #[serde(skip_serializing_if = "Option::is_none")]
8599	    pub warning_missing_invoice_paths: Option<String>,
8600	    #[serde(skip_serializing_if = "Option::is_none")]
8601	    pub warning_missing_invoice_payment_hash: Option<String>,
8602	    #[serde(skip_serializing_if = "Option::is_none")]
8603	    pub warning_missing_invoice_recurrence_basetime: Option<String>,
8604	    #[serde(skip_serializing_if = "Option::is_none")]
8605	    pub warning_missing_invoice_request_signature: Option<String>,
8606	    #[serde(skip_serializing_if = "Option::is_none")]
8607	    pub warning_missing_invoice_signature: Option<String>,
8608	    #[serde(skip_serializing_if = "Option::is_none")]
8609	    pub warning_missing_invreq_metadata: Option<String>,
8610	    #[serde(skip_serializing_if = "Option::is_none")]
8611	    pub warning_missing_invreq_payer_id: Option<String>,
8612	    #[serde(skip_serializing_if = "Option::is_none")]
8613	    pub warning_missing_offer_description: Option<String>,
8614	    #[serde(skip_serializing_if = "Option::is_none")]
8615	    pub warning_missing_offer_issuer_id: Option<String>,
8616	    #[serde(skip_serializing_if = "Option::is_none")]
8617	    pub warning_rune_invalid_utf8: Option<String>,
8618	    #[serde(skip_serializing_if = "Option::is_none")]
8619	    pub warning_unknown_offer_currency: Option<String>,
8620	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8621	    pub extra: Option<Vec<DecodeExtra>>,
8622	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8623	    pub fallbacks: Option<Vec<DecodeFallbacks>>,
8624	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8625	    pub invoice_fallbacks: Option<Vec<DecodeInvoiceFallbacks>>,
8626	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8627	    pub invoice_paths: Option<Vec<DecodeInvoicePaths>>,
8628	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8629	    pub invreq_paths: Option<Vec<DecodeInvreqPaths>>,
8630	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8631	    pub offer_chains: Option<Vec<Sha256>>,
8632	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8633	    pub offer_paths: Option<Vec<DecodeOfferPaths>>,
8634	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8635	    pub proof_leaf_hashes: Option<Vec<Sha256>>,
8636	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8637	    pub proof_missing_hashes: Option<Vec<Sha256>>,
8638	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8639	    pub proof_omitted_tlvs: Option<Vec<u64>>,
8640	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8641	    pub restrictions: Option<Vec<DecodeRestrictions>>,
8642	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8643	    pub unknown_invoice_request_tlvs: Option<Vec<DecodeUnknownInvoiceRequestTlvs>>,
8644	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8645	    pub unknown_invoice_tlvs: Option<Vec<DecodeUnknownInvoiceTlvs>>,
8646	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8647	    pub unknown_offer_tlvs: Option<Vec<DecodeUnknownOfferTlvs>>,
8648	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
8649	    pub unknown_payer_proof_tlvs: Option<Vec<DecodeUnknownPayerProofTlvs>>,
8650	    // Path `Decode.type`
8651	    #[serde(rename = "type")]
8652	    pub item_type: DecodeType,
8653	    pub valid: bool,
8654	}
8655
8656	impl TryFrom<Response> for DecodeResponse {
8657	    type Error = super::TryFromResponseError;
8658
8659	    fn try_from(response: Response) -> Result<Self, Self::Error> {
8660	        match response {
8661	            Response::Decode(response) => Ok(response),
8662	            _ => Err(TryFromResponseError)
8663	        }
8664	    }
8665	}
8666
8667	/// ['Status of the payment.']
8668	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
8669	#[allow(non_camel_case_types)]
8670	pub enum DelpayPaymentsStatus {
8671	    #[serde(rename = "pending")]
8672	    PENDING = 0,
8673	    #[serde(rename = "failed")]
8674	    FAILED = 1,
8675	    #[serde(rename = "complete")]
8676	    COMPLETE = 2,
8677	}
8678
8679	impl TryFrom<i32> for DelpayPaymentsStatus {
8680	    type Error = anyhow::Error;
8681	    fn try_from(c: i32) -> Result<DelpayPaymentsStatus, anyhow::Error> {
8682	        match c {
8683	    0 => Ok(DelpayPaymentsStatus::PENDING),
8684	    1 => Ok(DelpayPaymentsStatus::FAILED),
8685	    2 => Ok(DelpayPaymentsStatus::COMPLETE),
8686	            o => Err(anyhow::anyhow!("Unknown variant {} for enum DelpayPaymentsStatus", o)),
8687	        }
8688	    }
8689	}
8690
8691	impl ToString for DelpayPaymentsStatus {
8692	    fn to_string(&self) -> String {
8693	        match self {
8694	            DelpayPaymentsStatus::PENDING => "PENDING",
8695	            DelpayPaymentsStatus::FAILED => "FAILED",
8696	            DelpayPaymentsStatus::COMPLETE => "COMPLETE",
8697	        }.to_string()
8698	    }
8699	}
8700
8701	#[derive(Clone, Debug, Deserialize, Serialize)]
8702	pub struct DelpayPayments {
8703	    #[serde(skip_serializing_if = "Option::is_none")]
8704	    pub amount_msat: Option<Amount>,
8705	    #[serde(skip_serializing_if = "Option::is_none")]
8706	    pub bolt11: Option<String>,
8707	    #[serde(skip_serializing_if = "Option::is_none")]
8708	    pub bolt12: Option<String>,
8709	    #[serde(skip_serializing_if = "Option::is_none")]
8710	    pub completed_at: Option<u64>,
8711	    #[serde(skip_serializing_if = "Option::is_none")]
8712	    pub destination: Option<PublicKey>,
8713	    #[serde(skip_serializing_if = "Option::is_none")]
8714	    pub erroronion: Option<String>,
8715	    #[serde(skip_serializing_if = "Option::is_none")]
8716	    pub groupid: Option<u64>,
8717	    #[serde(skip_serializing_if = "Option::is_none")]
8718	    pub label: Option<String>,
8719	    #[serde(skip_serializing_if = "Option::is_none")]
8720	    pub partid: Option<u64>,
8721	    #[serde(skip_serializing_if = "Option::is_none")]
8722	    pub payment_preimage: Option<Secret>,
8723	    #[serde(skip_serializing_if = "Option::is_none")]
8724	    pub updated_index: Option<u64>,
8725	    // Path `DelPay.payments[].status`
8726	    pub status: DelpayPaymentsStatus,
8727	    pub amount_sent_msat: Amount,
8728	    pub created_at: u64,
8729	    pub created_index: u64,
8730	    pub id: u64,
8731	    pub payment_hash: Sha256,
8732	}
8733
8734	#[derive(Clone, Debug, Deserialize, Serialize)]
8735	pub struct DelpayResponse {
8736	    pub payments: Vec<DelpayPayments>,
8737	}
8738
8739	impl TryFrom<Response> for DelpayResponse {
8740	    type Error = super::TryFromResponseError;
8741
8742	    fn try_from(response: Response) -> Result<Self, Self::Error> {
8743	        match response {
8744	            Response::DelPay(response) => Ok(response),
8745	            _ => Err(TryFromResponseError)
8746	        }
8747	    }
8748	}
8749
8750	#[derive(Clone, Debug, Deserialize, Serialize)]
8751	pub struct DelforwardResponse {
8752	}
8753
8754	impl TryFrom<Response> for DelforwardResponse {
8755	    type Error = super::TryFromResponseError;
8756
8757	    fn try_from(response: Response) -> Result<Self, Self::Error> {
8758	        match response {
8759	            Response::DelForward(response) => Ok(response),
8760	            _ => Err(TryFromResponseError)
8761	        }
8762	    }
8763	}
8764
8765	#[derive(Clone, Debug, Deserialize, Serialize)]
8766	pub struct DisableofferResponse {
8767	    #[serde(skip_serializing_if = "Option::is_none")]
8768	    pub description: Option<String>,
8769	    #[serde(skip_serializing_if = "Option::is_none")]
8770	    pub force_paths: Option<bool>,
8771	    #[serde(skip_serializing_if = "Option::is_none")]
8772	    pub label: Option<String>,
8773	    pub active: bool,
8774	    pub bolt12: String,
8775	    pub offer_id: Sha256,
8776	    pub single_use: bool,
8777	    pub used: bool,
8778	}
8779
8780	impl TryFrom<Response> for DisableofferResponse {
8781	    type Error = super::TryFromResponseError;
8782
8783	    fn try_from(response: Response) -> Result<Self, Self::Error> {
8784	        match response {
8785	            Response::DisableOffer(response) => Ok(response),
8786	            _ => Err(TryFromResponseError)
8787	        }
8788	    }
8789	}
8790
8791	#[derive(Clone, Debug, Deserialize, Serialize)]
8792	pub struct EnableofferResponse {
8793	    #[serde(skip_serializing_if = "Option::is_none")]
8794	    pub description: Option<String>,
8795	    #[serde(skip_serializing_if = "Option::is_none")]
8796	    pub force_paths: Option<bool>,
8797	    #[serde(skip_serializing_if = "Option::is_none")]
8798	    pub label: Option<String>,
8799	    pub active: bool,
8800	    pub bolt12: String,
8801	    pub offer_id: Sha256,
8802	    pub single_use: bool,
8803	    pub used: bool,
8804	}
8805
8806	impl TryFrom<Response> for EnableofferResponse {
8807	    type Error = super::TryFromResponseError;
8808
8809	    fn try_from(response: Response) -> Result<Self, Self::Error> {
8810	        match response {
8811	            Response::EnableOffer(response) => Ok(response),
8812	            _ => Err(TryFromResponseError)
8813	        }
8814	    }
8815	}
8816
8817	#[derive(Clone, Debug, Deserialize, Serialize)]
8818	pub struct DisconnectResponse {
8819	}
8820
8821	impl TryFrom<Response> for DisconnectResponse {
8822	    type Error = super::TryFromResponseError;
8823
8824	    fn try_from(response: Response) -> Result<Self, Self::Error> {
8825	        match response {
8826	            Response::Disconnect(response) => Ok(response),
8827	            _ => Err(TryFromResponseError)
8828	        }
8829	    }
8830	}
8831
8832	#[derive(Clone, Debug, Deserialize, Serialize)]
8833	pub struct FeeratesOnchainFeeEstimates {
8834	    #[serde(skip_serializing_if = "Option::is_none")]
8835	    pub unilateral_close_nonanchor_satoshis: Option<u64>,
8836	    pub htlc_success_satoshis: u64,
8837	    pub htlc_timeout_satoshis: u64,
8838	    pub mutual_close_satoshis: u64,
8839	    pub opening_channel_satoshis: u64,
8840	    pub unilateral_close_satoshis: u64,
8841	}
8842
8843	#[derive(Clone, Debug, Deserialize, Serialize)]
8844	pub struct FeeratesPerkbEstimates {
8845	    pub blockcount: u32,
8846	    pub feerate: u32,
8847	    pub smoothed_feerate: u32,
8848	}
8849
8850	#[derive(Clone, Debug, Deserialize, Serialize)]
8851	pub struct FeeratesPerkb {
8852	    #[serde(skip_serializing_if = "Option::is_none")]
8853	    pub mutual_close: Option<u32>,
8854	    #[serde(skip_serializing_if = "Option::is_none")]
8855	    pub opening: Option<u32>,
8856	    #[serde(skip_serializing_if = "Option::is_none")]
8857	    pub penalty: Option<u32>,
8858	    #[serde(skip_serializing_if = "Option::is_none")]
8859	    pub splice: Option<u32>,
8860	    #[serde(skip_serializing_if = "Option::is_none")]
8861	    pub unilateral_anchor_close: Option<u32>,
8862	    #[serde(skip_serializing_if = "Option::is_none")]
8863	    pub unilateral_close: Option<u32>,
8864	    pub estimates: Vec<FeeratesPerkbEstimates>,
8865	    pub floor: u32,
8866	    pub max_acceptable: u32,
8867	    pub min_acceptable: u32,
8868	}
8869
8870	#[derive(Clone, Debug, Deserialize, Serialize)]
8871	pub struct FeeratesPerkwEstimates {
8872	    pub blockcount: u32,
8873	    pub feerate: u32,
8874	    pub smoothed_feerate: u32,
8875	}
8876
8877	#[derive(Clone, Debug, Deserialize, Serialize)]
8878	pub struct FeeratesPerkw {
8879	    #[serde(skip_serializing_if = "Option::is_none")]
8880	    pub mutual_close: Option<u32>,
8881	    #[serde(skip_serializing_if = "Option::is_none")]
8882	    pub opening: Option<u32>,
8883	    #[serde(skip_serializing_if = "Option::is_none")]
8884	    pub penalty: Option<u32>,
8885	    #[serde(skip_serializing_if = "Option::is_none")]
8886	    pub splice: Option<u32>,
8887	    #[serde(skip_serializing_if = "Option::is_none")]
8888	    pub unilateral_anchor_close: Option<u32>,
8889	    #[serde(skip_serializing_if = "Option::is_none")]
8890	    pub unilateral_close: Option<u32>,
8891	    pub estimates: Vec<FeeratesPerkwEstimates>,
8892	    pub floor: u32,
8893	    pub max_acceptable: u32,
8894	    pub min_acceptable: u32,
8895	}
8896
8897	#[derive(Clone, Debug, Deserialize, Serialize)]
8898	pub struct FeeratesResponse {
8899	    #[serde(skip_serializing_if = "Option::is_none")]
8900	    pub onchain_fee_estimates: Option<FeeratesOnchainFeeEstimates>,
8901	    #[serde(skip_serializing_if = "Option::is_none")]
8902	    pub perkb: Option<FeeratesPerkb>,
8903	    #[serde(skip_serializing_if = "Option::is_none")]
8904	    pub perkw: Option<FeeratesPerkw>,
8905	    #[serde(skip_serializing_if = "Option::is_none")]
8906	    pub warning_missing_feerates: Option<String>,
8907	}
8908
8909	impl TryFrom<Response> for FeeratesResponse {
8910	    type Error = super::TryFromResponseError;
8911
8912	    fn try_from(response: Response) -> Result<Self, Self::Error> {
8913	        match response {
8914	            Response::Feerates(response) => Ok(response),
8915	            _ => Err(TryFromResponseError)
8916	        }
8917	    }
8918	}
8919
8920	#[derive(Clone, Debug, Deserialize, Serialize)]
8921	pub struct Fetchbip353Instructions {
8922	    #[serde(skip_serializing_if = "Option::is_none")]
8923	    pub description: Option<String>,
8924	    #[serde(skip_serializing_if = "Option::is_none")]
8925	    pub offchain_amount_msat: Option<u64>,
8926	    #[serde(skip_serializing_if = "Option::is_none")]
8927	    pub offer: Option<String>,
8928	    #[serde(skip_serializing_if = "Option::is_none")]
8929	    pub onchain: Option<String>,
8930	    #[serde(skip_serializing_if = "Option::is_none")]
8931	    pub onchain_amount_sat: Option<u64>,
8932	}
8933
8934	#[derive(Clone, Debug, Deserialize, Serialize)]
8935	pub struct Fetchbip353Response {
8936	    pub instructions: Vec<Fetchbip353Instructions>,
8937	    pub proof: String,
8938	}
8939
8940	impl TryFrom<Response> for Fetchbip353Response {
8941	    type Error = super::TryFromResponseError;
8942
8943	    fn try_from(response: Response) -> Result<Self, Self::Error> {
8944	        match response {
8945	            Response::FetchBip353(response) => Ok(response),
8946	            _ => Err(TryFromResponseError)
8947	        }
8948	    }
8949	}
8950
8951	#[derive(Clone, Debug, Deserialize, Serialize)]
8952	pub struct FetchinvoiceNextPeriod {
8953	    pub counter: u64,
8954	    pub endtime: u64,
8955	    pub paywindow_end: u64,
8956	    pub paywindow_start: u64,
8957	    pub starttime: u64,
8958	}
8959
8960	#[derive(Clone, Debug, Deserialize, Serialize)]
8961	pub struct FetchinvoiceChanges {
8962	    #[serde(skip_serializing_if = "Option::is_none")]
8963	    pub amount_msat: Option<Amount>,
8964	    #[serde(skip_serializing_if = "Option::is_none")]
8965	    pub description: Option<String>,
8966	    #[serde(skip_serializing_if = "Option::is_none")]
8967	    pub description_appended: Option<String>,
8968	    #[serde(skip_serializing_if = "Option::is_none")]
8969	    pub vendor: Option<String>,
8970	    #[serde(skip_serializing_if = "Option::is_none")]
8971	    pub vendor_removed: Option<String>,
8972	}
8973
8974	#[derive(Clone, Debug, Deserialize, Serialize)]
8975	pub struct FetchinvoiceResponse {
8976	    #[serde(skip_serializing_if = "Option::is_none")]
8977	    pub next_period: Option<FetchinvoiceNextPeriod>,
8978	    pub changes: FetchinvoiceChanges,
8979	    pub invoice: String,
8980	}
8981
8982	impl TryFrom<Response> for FetchinvoiceResponse {
8983	    type Error = super::TryFromResponseError;
8984
8985	    fn try_from(response: Response) -> Result<Self, Self::Error> {
8986	        match response {
8987	            Response::FetchInvoice(response) => Ok(response),
8988	            _ => Err(TryFromResponseError)
8989	        }
8990	    }
8991	}
8992
8993	#[derive(Clone, Debug, Deserialize, Serialize)]
8994	pub struct CancelrecurringinvoiceResponse {
8995	    pub bolt12: String,
8996	}
8997
8998	impl TryFrom<Response> for CancelrecurringinvoiceResponse {
8999	    type Error = super::TryFromResponseError;
9000
9001	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9002	        match response {
9003	            Response::CancelRecurringInvoice(response) => Ok(response),
9004	            _ => Err(TryFromResponseError)
9005	        }
9006	    }
9007	}
9008
9009	#[derive(Clone, Debug, Deserialize, Serialize)]
9010	pub struct FundchannelCancelResponse {
9011	    pub cancelled: String,
9012	}
9013
9014	impl TryFrom<Response> for FundchannelCancelResponse {
9015	    type Error = super::TryFromResponseError;
9016
9017	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9018	        match response {
9019	            Response::FundChannelCancel(response) => Ok(response),
9020	            _ => Err(TryFromResponseError)
9021	        }
9022	    }
9023	}
9024
9025	#[derive(Clone, Debug, Deserialize, Serialize)]
9026	pub struct FundchannelCompleteResponse {
9027	    pub channel_id: Sha256,
9028	    pub commitments_secured: bool,
9029	}
9030
9031	impl TryFrom<Response> for FundchannelCompleteResponse {
9032	    type Error = super::TryFromResponseError;
9033
9034	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9035	        match response {
9036	            Response::FundChannelComplete(response) => Ok(response),
9037	            _ => Err(TryFromResponseError)
9038	        }
9039	    }
9040	}
9041
9042	#[derive(Clone, Debug, Deserialize, Serialize)]
9043	pub struct FundchannelChannelType {
9044	    pub bits: Vec<u32>,
9045	    pub names: Vec<ChannelTypeName>,
9046	}
9047
9048	#[derive(Clone, Debug, Deserialize, Serialize)]
9049	pub struct FundchannelResponse {
9050	    #[serde(skip_serializing_if = "Option::is_none")]
9051	    pub close_to: Option<String>,
9052	    #[serde(skip_serializing_if = "Option::is_none")]
9053	    pub mindepth: Option<u32>,
9054	    pub channel_id: Sha256,
9055	    pub channel_type: FundchannelChannelType,
9056	    pub outnum: u32,
9057	    pub tx: String,
9058	    pub txid: String,
9059	}
9060
9061	impl TryFrom<Response> for FundchannelResponse {
9062	    type Error = super::TryFromResponseError;
9063
9064	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9065	        match response {
9066	            Response::FundChannel(response) => Ok(response),
9067	            _ => Err(TryFromResponseError)
9068	        }
9069	    }
9070	}
9071
9072	#[derive(Clone, Debug, Deserialize, Serialize)]
9073	pub struct FundchannelStartChannelType {
9074	    pub bits: Vec<u32>,
9075	    pub names: Vec<ChannelTypeName>,
9076	}
9077
9078	#[derive(Clone, Debug, Deserialize, Serialize)]
9079	pub struct FundchannelStartResponse {
9080	    #[serde(skip_serializing_if = "Option::is_none")]
9081	    pub channel_type: Option<FundchannelStartChannelType>,
9082	    #[serde(skip_serializing_if = "Option::is_none")]
9083	    pub close_to: Option<String>,
9084	    #[serde(skip_serializing_if = "Option::is_none")]
9085	    pub mindepth: Option<u32>,
9086	    pub funding_address: String,
9087	    pub scriptpubkey: String,
9088	    pub warning_usage: String,
9089	}
9090
9091	impl TryFrom<Response> for FundchannelStartResponse {
9092	    type Error = super::TryFromResponseError;
9093
9094	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9095	        match response {
9096	            Response::FundChannelStart(response) => Ok(response),
9097	            _ => Err(TryFromResponseError)
9098	        }
9099	    }
9100	}
9101
9102	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
9103	#[allow(non_camel_case_types)]
9104	pub enum GetlogLogType {
9105	    #[serde(rename = "SKIPPED")]
9106	    SKIPPED = 0,
9107	    #[serde(rename = "BROKEN")]
9108	    BROKEN = 1,
9109	    #[serde(rename = "UNUSUAL")]
9110	    UNUSUAL = 2,
9111	    #[serde(rename = "INFO")]
9112	    INFO = 3,
9113	    #[serde(rename = "DEBUG")]
9114	    DEBUG = 4,
9115	    #[serde(rename = "IO_IN")]
9116	    IO_IN = 5,
9117	    #[serde(rename = "IO_OUT")]
9118	    IO_OUT = 6,
9119	    #[serde(rename = "TRACE")]
9120	    TRACE = 7,
9121	}
9122
9123	impl TryFrom<i32> for GetlogLogType {
9124	    type Error = anyhow::Error;
9125	    fn try_from(c: i32) -> Result<GetlogLogType, anyhow::Error> {
9126	        match c {
9127	    0 => Ok(GetlogLogType::SKIPPED),
9128	    1 => Ok(GetlogLogType::BROKEN),
9129	    2 => Ok(GetlogLogType::UNUSUAL),
9130	    3 => Ok(GetlogLogType::INFO),
9131	    4 => Ok(GetlogLogType::DEBUG),
9132	    5 => Ok(GetlogLogType::IO_IN),
9133	    6 => Ok(GetlogLogType::IO_OUT),
9134	    7 => Ok(GetlogLogType::TRACE),
9135	            o => Err(anyhow::anyhow!("Unknown variant {} for enum GetlogLogType", o)),
9136	        }
9137	    }
9138	}
9139
9140	impl ToString for GetlogLogType {
9141	    fn to_string(&self) -> String {
9142	        match self {
9143	            GetlogLogType::SKIPPED => "SKIPPED",
9144	            GetlogLogType::BROKEN => "BROKEN",
9145	            GetlogLogType::UNUSUAL => "UNUSUAL",
9146	            GetlogLogType::INFO => "INFO",
9147	            GetlogLogType::DEBUG => "DEBUG",
9148	            GetlogLogType::TRACE => "TRACE",
9149	            GetlogLogType::IO_IN => "IO_IN",
9150	            GetlogLogType::IO_OUT => "IO_OUT",
9151	        }.to_string()
9152	    }
9153	}
9154
9155	#[derive(Clone, Debug, Deserialize, Serialize)]
9156	pub struct GetlogLog {
9157	    #[serde(skip_serializing_if = "Option::is_none")]
9158	    pub data: Option<String>,
9159	    #[serde(skip_serializing_if = "Option::is_none")]
9160	    pub log: Option<String>,
9161	    #[serde(skip_serializing_if = "Option::is_none")]
9162	    pub node_id: Option<PublicKey>,
9163	    #[serde(skip_serializing_if = "Option::is_none")]
9164	    pub num_skipped: Option<u32>,
9165	    #[serde(skip_serializing_if = "Option::is_none")]
9166	    pub source: Option<String>,
9167	    #[serde(skip_serializing_if = "Option::is_none")]
9168	    pub time: Option<String>,
9169	    // Path `GetLog.log[].type`
9170	    #[serde(rename = "type")]
9171	    pub item_type: GetlogLogType,
9172	}
9173
9174	#[derive(Clone, Debug, Deserialize, Serialize)]
9175	pub struct GetlogResponse {
9176	    pub bytes_max: u32,
9177	    pub bytes_used: u32,
9178	    pub created_at: String,
9179	    pub log: Vec<GetlogLog>,
9180	}
9181
9182	impl TryFrom<Response> for GetlogResponse {
9183	    type Error = super::TryFromResponseError;
9184
9185	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9186	        match response {
9187	            Response::GetLog(response) => Ok(response),
9188	            _ => Err(TryFromResponseError)
9189	        }
9190	    }
9191	}
9192
9193	/// ['Policy funder plugin will use to decide how much capital to commit to a v2 open channel request.']
9194	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
9195	#[allow(non_camel_case_types)]
9196	pub enum FunderupdatePolicy {
9197	    #[serde(rename = "match")]
9198	    MATCH = 0,
9199	    #[serde(rename = "available")]
9200	    AVAILABLE = 1,
9201	    #[serde(rename = "fixed")]
9202	    FIXED = 2,
9203	}
9204
9205	impl TryFrom<i32> for FunderupdatePolicy {
9206	    type Error = anyhow::Error;
9207	    fn try_from(c: i32) -> Result<FunderupdatePolicy, anyhow::Error> {
9208	        match c {
9209	    0 => Ok(FunderupdatePolicy::MATCH),
9210	    1 => Ok(FunderupdatePolicy::AVAILABLE),
9211	    2 => Ok(FunderupdatePolicy::FIXED),
9212	            o => Err(anyhow::anyhow!("Unknown variant {} for enum FunderupdatePolicy", o)),
9213	        }
9214	    }
9215	}
9216
9217	impl ToString for FunderupdatePolicy {
9218	    fn to_string(&self) -> String {
9219	        match self {
9220	            FunderupdatePolicy::MATCH => "MATCH",
9221	            FunderupdatePolicy::AVAILABLE => "AVAILABLE",
9222	            FunderupdatePolicy::FIXED => "FIXED",
9223	        }.to_string()
9224	    }
9225	}
9226
9227	#[derive(Clone, Debug, Deserialize, Serialize)]
9228	pub struct FunderupdateResponse {
9229	    #[serde(skip_serializing_if = "Option::is_none")]
9230	    pub channel_fee_max_base_msat: Option<Amount>,
9231	    #[serde(skip_serializing_if = "Option::is_none")]
9232	    pub channel_fee_max_proportional_thousandths: Option<u32>,
9233	    #[serde(skip_serializing_if = "Option::is_none")]
9234	    pub compact_lease: Option<String>,
9235	    #[serde(skip_serializing_if = "Option::is_none")]
9236	    pub funding_weight: Option<u32>,
9237	    #[serde(skip_serializing_if = "Option::is_none")]
9238	    pub lease_fee_base_msat: Option<Amount>,
9239	    #[serde(skip_serializing_if = "Option::is_none")]
9240	    pub lease_fee_basis: Option<u32>,
9241	    // Path `FunderUpdate.policy`
9242	    pub policy: FunderupdatePolicy,
9243	    pub fund_probability: u32,
9244	    pub fuzz_percent: u32,
9245	    pub leases_only: bool,
9246	    pub max_their_funding_msat: Amount,
9247	    pub min_their_funding_msat: Amount,
9248	    pub per_channel_max_msat: Amount,
9249	    pub per_channel_min_msat: Amount,
9250	    pub policy_mod: u32,
9251	    pub reserve_tank_msat: Amount,
9252	    pub summary: String,
9253	}
9254
9255	impl TryFrom<Response> for FunderupdateResponse {
9256	    type Error = super::TryFromResponseError;
9257
9258	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9259	        match response {
9260	            Response::FunderUpdate(response) => Ok(response),
9261	            _ => Err(TryFromResponseError)
9262	        }
9263	    }
9264	}
9265
9266	/// ['The features understood by the destination node.']
9267	#[deprecated]
9268	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
9269	#[allow(non_camel_case_types)]
9270	pub enum GetrouteRouteStyle {
9271	    #[serde(rename = "tlv")]
9272	    TLV = 0,
9273	}
9274
9275	impl TryFrom<i32> for GetrouteRouteStyle {
9276	    type Error = anyhow::Error;
9277	    fn try_from(c: i32) -> Result<GetrouteRouteStyle, anyhow::Error> {
9278	        match c {
9279	    0 => Ok(GetrouteRouteStyle::TLV),
9280	            o => Err(anyhow::anyhow!("Unknown variant {} for enum GetrouteRouteStyle", o)),
9281	        }
9282	    }
9283	}
9284
9285	impl ToString for GetrouteRouteStyle {
9286	    fn to_string(&self) -> String {
9287	        match self {
9288	            GetrouteRouteStyle::TLV => "TLV",
9289	        }.to_string()
9290	    }
9291	}
9292
9293	#[deprecated = "deprecated since CLN v26.06"]
9294	#[derive(Clone, Debug, Deserialize, Serialize)]
9295	pub struct GetrouteRoute {
9296	    #[deprecated]
9297	    pub amount_msat: Amount,
9298	    #[deprecated]
9299	    pub channel: ShortChannelId,
9300	    #[deprecated]
9301	    pub delay: u32,
9302	    #[deprecated]
9303	    pub direction: u32,
9304	    #[deprecated]
9305	    pub id: PublicKey,
9306	    // Path `GetRoute.route[].style`
9307	    pub style: GetrouteRouteStyle,
9308	}
9309
9310	#[deprecated = "deprecated since CLN v26.06"]
9311	#[derive(Clone, Debug, Deserialize, Serialize)]
9312	pub struct GetrouteResponse {
9313	    #[deprecated]
9314	    pub route: Vec<GetrouteRoute>,
9315	}
9316
9317	impl TryFrom<Response> for GetrouteResponse {
9318	    type Error = super::TryFromResponseError;
9319
9320	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9321	        match response {
9322	            Response::GetRoute(response) => Ok(response),
9323	            _ => Err(TryFromResponseError)
9324	        }
9325	    }
9326	}
9327
9328	#[derive(Clone, Debug, Deserialize, Serialize)]
9329	pub struct ListaddressesAddresses {
9330	    #[serde(skip_serializing_if = "Option::is_none")]
9331	    pub bech32: Option<String>,
9332	    #[serde(skip_serializing_if = "Option::is_none")]
9333	    pub p2tr: Option<String>,
9334	    pub keyidx: u64,
9335	}
9336
9337	#[derive(Clone, Debug, Deserialize, Serialize)]
9338	pub struct ListaddressesResponse {
9339	    pub addresses: Vec<ListaddressesAddresses>,
9340	}
9341
9342	impl TryFrom<Response> for ListaddressesResponse {
9343	    type Error = super::TryFromResponseError;
9344
9345	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9346	        match response {
9347	            Response::ListAddresses(response) => Ok(response),
9348	            _ => Err(TryFromResponseError)
9349	        }
9350	    }
9351	}
9352
9353	/// ['Either a legacy onion format or a modern tlv format.']
9354	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
9355	#[allow(non_camel_case_types)]
9356	pub enum ListforwardsForwardsStyle {
9357	    #[serde(rename = "legacy")]
9358	    LEGACY = 0,
9359	    #[serde(rename = "tlv")]
9360	    TLV = 1,
9361	}
9362
9363	impl TryFrom<i32> for ListforwardsForwardsStyle {
9364	    type Error = anyhow::Error;
9365	    fn try_from(c: i32) -> Result<ListforwardsForwardsStyle, anyhow::Error> {
9366	        match c {
9367	    0 => Ok(ListforwardsForwardsStyle::LEGACY),
9368	    1 => Ok(ListforwardsForwardsStyle::TLV),
9369	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListforwardsForwardsStyle", o)),
9370	        }
9371	    }
9372	}
9373
9374	impl ToString for ListforwardsForwardsStyle {
9375	    fn to_string(&self) -> String {
9376	        match self {
9377	            ListforwardsForwardsStyle::LEGACY => "LEGACY",
9378	            ListforwardsForwardsStyle::TLV => "TLV",
9379	        }.to_string()
9380	    }
9381	}
9382
9383	/// ['Still ongoing, completed, failed locally, or failed after forwarding.']
9384	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
9385	#[allow(non_camel_case_types)]
9386	pub enum ListforwardsForwardsStatus {
9387	    #[serde(rename = "offered")]
9388	    OFFERED = 0,
9389	    #[serde(rename = "settled")]
9390	    SETTLED = 1,
9391	    #[serde(rename = "local_failed")]
9392	    LOCAL_FAILED = 2,
9393	    #[serde(rename = "failed")]
9394	    FAILED = 3,
9395	}
9396
9397	impl TryFrom<i32> for ListforwardsForwardsStatus {
9398	    type Error = anyhow::Error;
9399	    fn try_from(c: i32) -> Result<ListforwardsForwardsStatus, anyhow::Error> {
9400	        match c {
9401	    0 => Ok(ListforwardsForwardsStatus::OFFERED),
9402	    1 => Ok(ListforwardsForwardsStatus::SETTLED),
9403	    2 => Ok(ListforwardsForwardsStatus::LOCAL_FAILED),
9404	    3 => Ok(ListforwardsForwardsStatus::FAILED),
9405	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListforwardsForwardsStatus", o)),
9406	        }
9407	    }
9408	}
9409
9410	impl ToString for ListforwardsForwardsStatus {
9411	    fn to_string(&self) -> String {
9412	        match self {
9413	            ListforwardsForwardsStatus::OFFERED => "OFFERED",
9414	            ListforwardsForwardsStatus::SETTLED => "SETTLED",
9415	            ListforwardsForwardsStatus::LOCAL_FAILED => "LOCAL_FAILED",
9416	            ListforwardsForwardsStatus::FAILED => "FAILED",
9417	        }.to_string()
9418	    }
9419	}
9420
9421	#[derive(Clone, Debug, Deserialize, Serialize)]
9422	pub struct ListforwardsForwards {
9423	    #[serde(skip_serializing_if = "Option::is_none")]
9424	    pub failcode: Option<u32>,
9425	    #[serde(skip_serializing_if = "Option::is_none")]
9426	    pub failreason: Option<String>,
9427	    #[serde(skip_serializing_if = "Option::is_none")]
9428	    pub fee_msat: Option<Amount>,
9429	    #[serde(skip_serializing_if = "Option::is_none")]
9430	    pub in_htlc_id: Option<u64>,
9431	    #[serde(skip_serializing_if = "Option::is_none")]
9432	    pub out_channel: Option<ShortChannelId>,
9433	    #[serde(skip_serializing_if = "Option::is_none")]
9434	    pub out_htlc_id: Option<u64>,
9435	    #[serde(skip_serializing_if = "Option::is_none")]
9436	    pub out_msat: Option<Amount>,
9437	    #[serde(skip_serializing_if = "Option::is_none")]
9438	    pub resolved_time: Option<f64>,
9439	    #[serde(skip_serializing_if = "Option::is_none")]
9440	    pub style: Option<ListforwardsForwardsStyle>,
9441	    #[serde(skip_serializing_if = "Option::is_none")]
9442	    pub updated_index: Option<u64>,
9443	    // Path `ListForwards.forwards[].status`
9444	    pub status: ListforwardsForwardsStatus,
9445	    pub created_index: u64,
9446	    pub in_channel: ShortChannelId,
9447	    pub in_msat: Amount,
9448	    pub received_time: f64,
9449	}
9450
9451	#[derive(Clone, Debug, Deserialize, Serialize)]
9452	pub struct ListforwardsResponse {
9453	    pub forwards: Vec<ListforwardsForwards>,
9454	}
9455
9456	impl TryFrom<Response> for ListforwardsResponse {
9457	    type Error = super::TryFromResponseError;
9458
9459	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9460	        match response {
9461	            Response::ListForwards(response) => Ok(response),
9462	            _ => Err(TryFromResponseError)
9463	        }
9464	    }
9465	}
9466
9467	#[derive(Clone, Debug, Deserialize, Serialize)]
9468	pub struct ListoffersOffers {
9469	    #[serde(skip_serializing_if = "Option::is_none")]
9470	    pub description: Option<String>,
9471	    #[serde(skip_serializing_if = "Option::is_none")]
9472	    pub force_paths: Option<bool>,
9473	    #[serde(skip_serializing_if = "Option::is_none")]
9474	    pub label: Option<String>,
9475	    pub active: bool,
9476	    pub bolt12: String,
9477	    pub offer_id: Sha256,
9478	    pub single_use: bool,
9479	    pub used: bool,
9480	}
9481
9482	#[derive(Clone, Debug, Deserialize, Serialize)]
9483	pub struct ListoffersResponse {
9484	    pub offers: Vec<ListoffersOffers>,
9485	}
9486
9487	impl TryFrom<Response> for ListoffersResponse {
9488	    type Error = super::TryFromResponseError;
9489
9490	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9491	        match response {
9492	            Response::ListOffers(response) => Ok(response),
9493	            _ => Err(TryFromResponseError)
9494	        }
9495	    }
9496	}
9497
9498	/// ['Status of the payment.']
9499	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
9500	#[allow(non_camel_case_types)]
9501	pub enum ListpaysPaysStatus {
9502	    #[serde(rename = "pending")]
9503	    PENDING = 0,
9504	    #[serde(rename = "failed")]
9505	    FAILED = 1,
9506	    #[serde(rename = "complete")]
9507	    COMPLETE = 2,
9508	}
9509
9510	impl TryFrom<i32> for ListpaysPaysStatus {
9511	    type Error = anyhow::Error;
9512	    fn try_from(c: i32) -> Result<ListpaysPaysStatus, anyhow::Error> {
9513	        match c {
9514	    0 => Ok(ListpaysPaysStatus::PENDING),
9515	    1 => Ok(ListpaysPaysStatus::FAILED),
9516	    2 => Ok(ListpaysPaysStatus::COMPLETE),
9517	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListpaysPaysStatus", o)),
9518	        }
9519	    }
9520	}
9521
9522	impl ToString for ListpaysPaysStatus {
9523	    fn to_string(&self) -> String {
9524	        match self {
9525	            ListpaysPaysStatus::PENDING => "PENDING",
9526	            ListpaysPaysStatus::FAILED => "FAILED",
9527	            ListpaysPaysStatus::COMPLETE => "COMPLETE",
9528	        }.to_string()
9529	    }
9530	}
9531
9532	#[derive(Clone, Debug, Deserialize, Serialize)]
9533	pub struct ListpaysPays {
9534	    #[serde(skip_serializing_if = "Option::is_none")]
9535	    pub amount_msat: Option<Amount>,
9536	    #[serde(skip_serializing_if = "Option::is_none")]
9537	    pub amount_sent_msat: Option<Amount>,
9538	    #[serde(skip_serializing_if = "Option::is_none")]
9539	    pub bolt11: Option<String>,
9540	    #[serde(skip_serializing_if = "Option::is_none")]
9541	    pub bolt12: Option<String>,
9542	    #[serde(skip_serializing_if = "Option::is_none")]
9543	    pub completed_at: Option<u64>,
9544	    #[serde(skip_serializing_if = "Option::is_none")]
9545	    pub created_index: Option<u64>,
9546	    #[serde(skip_serializing_if = "Option::is_none")]
9547	    pub description: Option<String>,
9548	    #[serde(skip_serializing_if = "Option::is_none")]
9549	    pub destination: Option<PublicKey>,
9550	    #[serde(skip_serializing_if = "Option::is_none")]
9551	    pub erroronion: Option<String>,
9552	    #[serde(skip_serializing_if = "Option::is_none")]
9553	    pub label: Option<String>,
9554	    #[serde(skip_serializing_if = "Option::is_none")]
9555	    pub number_of_parts: Option<u64>,
9556	    #[serde(skip_serializing_if = "Option::is_none")]
9557	    pub preimage: Option<Secret>,
9558	    #[serde(skip_serializing_if = "Option::is_none")]
9559	    pub updated_index: Option<u64>,
9560	    // Path `ListPays.pays[].status`
9561	    pub status: ListpaysPaysStatus,
9562	    pub created_at: u64,
9563	    pub payment_hash: Sha256,
9564	}
9565
9566	#[derive(Clone, Debug, Deserialize, Serialize)]
9567	pub struct ListpaysResponse {
9568	    pub pays: Vec<ListpaysPays>,
9569	}
9570
9571	impl TryFrom<Response> for ListpaysResponse {
9572	    type Error = super::TryFromResponseError;
9573
9574	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9575	        match response {
9576	            Response::ListPays(response) => Ok(response),
9577	            _ => Err(TryFromResponseError)
9578	        }
9579	    }
9580	}
9581
9582	/// ['Out if we offered this to the peer, in if they offered it.']
9583	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
9584	#[allow(non_camel_case_types)]
9585	pub enum ListhtlcsHtlcsDirection {
9586	    #[serde(rename = "out")]
9587	    OUT = 0,
9588	    #[serde(rename = "in")]
9589	    IN = 1,
9590	}
9591
9592	impl TryFrom<i32> for ListhtlcsHtlcsDirection {
9593	    type Error = anyhow::Error;
9594	    fn try_from(c: i32) -> Result<ListhtlcsHtlcsDirection, anyhow::Error> {
9595	        match c {
9596	    0 => Ok(ListhtlcsHtlcsDirection::OUT),
9597	    1 => Ok(ListhtlcsHtlcsDirection::IN),
9598	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListhtlcsHtlcsDirection", o)),
9599	        }
9600	    }
9601	}
9602
9603	impl ToString for ListhtlcsHtlcsDirection {
9604	    fn to_string(&self) -> String {
9605	        match self {
9606	            ListhtlcsHtlcsDirection::OUT => "OUT",
9607	            ListhtlcsHtlcsDirection::IN => "IN",
9608	        }.to_string()
9609	    }
9610	}
9611
9612	#[derive(Clone, Debug, Deserialize, Serialize)]
9613	pub struct ListhtlcsHtlcs {
9614	    #[serde(skip_serializing_if = "Option::is_none")]
9615	    pub created_index: Option<u64>,
9616	    #[serde(skip_serializing_if = "Option::is_none")]
9617	    pub updated_index: Option<u64>,
9618	    // Path `ListHtlcs.htlcs[].direction`
9619	    pub direction: ListhtlcsHtlcsDirection,
9620	    // Path `ListHtlcs.htlcs[].state`
9621	    pub state: HtlcState,
9622	    pub amount_msat: Amount,
9623	    pub expiry: u32,
9624	    pub id: u64,
9625	    pub payment_hash: Sha256,
9626	    pub short_channel_id: ShortChannelId,
9627	}
9628
9629	#[derive(Clone, Debug, Deserialize, Serialize)]
9630	pub struct ListhtlcsResponse {
9631	    pub htlcs: Vec<ListhtlcsHtlcs>,
9632	}
9633
9634	impl TryFrom<Response> for ListhtlcsResponse {
9635	    type Error = super::TryFromResponseError;
9636
9637	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9638	        match response {
9639	            Response::ListHtlcs(response) => Ok(response),
9640	            _ => Err(TryFromResponseError)
9641	        }
9642	    }
9643	}
9644
9645	/// ['What stage we failed at.']
9646	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
9647	#[allow(non_camel_case_types)]
9648	pub enum MultifundchannelFailedMethod {
9649	    #[serde(rename = "connect")]
9650	    CONNECT = 0,
9651	    #[serde(rename = "openchannel_init")]
9652	    OPENCHANNEL_INIT = 1,
9653	    #[serde(rename = "fundchannel_start")]
9654	    FUNDCHANNEL_START = 2,
9655	    #[serde(rename = "fundchannel_complete")]
9656	    FUNDCHANNEL_COMPLETE = 3,
9657	}
9658
9659	impl TryFrom<i32> for MultifundchannelFailedMethod {
9660	    type Error = anyhow::Error;
9661	    fn try_from(c: i32) -> Result<MultifundchannelFailedMethod, anyhow::Error> {
9662	        match c {
9663	    0 => Ok(MultifundchannelFailedMethod::CONNECT),
9664	    1 => Ok(MultifundchannelFailedMethod::OPENCHANNEL_INIT),
9665	    2 => Ok(MultifundchannelFailedMethod::FUNDCHANNEL_START),
9666	    3 => Ok(MultifundchannelFailedMethod::FUNDCHANNEL_COMPLETE),
9667	            o => Err(anyhow::anyhow!("Unknown variant {} for enum MultifundchannelFailedMethod", o)),
9668	        }
9669	    }
9670	}
9671
9672	impl ToString for MultifundchannelFailedMethod {
9673	    fn to_string(&self) -> String {
9674	        match self {
9675	            MultifundchannelFailedMethod::CONNECT => "CONNECT",
9676	            MultifundchannelFailedMethod::OPENCHANNEL_INIT => "OPENCHANNEL_INIT",
9677	            MultifundchannelFailedMethod::FUNDCHANNEL_START => "FUNDCHANNEL_START",
9678	            MultifundchannelFailedMethod::FUNDCHANNEL_COMPLETE => "FUNDCHANNEL_COMPLETE",
9679	        }.to_string()
9680	    }
9681	}
9682
9683	#[derive(Clone, Debug, Deserialize, Serialize)]
9684	pub struct MultifundchannelFailedError {
9685	    pub code: i64,
9686	    pub message: String,
9687	}
9688
9689	#[derive(Clone, Debug, Deserialize, Serialize)]
9690	pub struct MultifundchannelFailed {
9691	    // Path `MultiFundChannel.failed[].method`
9692	    pub method: MultifundchannelFailedMethod,
9693	    pub error: MultifundchannelFailedError,
9694	    pub id: PublicKey,
9695	}
9696
9697	#[derive(Clone, Debug, Deserialize, Serialize)]
9698	pub struct MultifundchannelChannelIdsChannelType {
9699	    pub bits: Vec<u32>,
9700	    pub names: Vec<ChannelTypeName>,
9701	}
9702
9703	#[derive(Clone, Debug, Deserialize, Serialize)]
9704	pub struct MultifundchannelChannelIds {
9705	    #[serde(skip_serializing_if = "Option::is_none")]
9706	    pub close_to: Option<String>,
9707	    pub channel_id: Sha256,
9708	    pub channel_type: MultifundchannelChannelIdsChannelType,
9709	    pub id: PublicKey,
9710	    pub outnum: u32,
9711	}
9712
9713	#[derive(Clone, Debug, Deserialize, Serialize)]
9714	pub struct MultifundchannelResponse {
9715	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
9716	    pub failed: Option<Vec<MultifundchannelFailed>>,
9717	    pub channel_ids: Vec<MultifundchannelChannelIds>,
9718	    pub tx: String,
9719	    pub txid: String,
9720	}
9721
9722	impl TryFrom<Response> for MultifundchannelResponse {
9723	    type Error = super::TryFromResponseError;
9724
9725	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9726	        match response {
9727	            Response::MultiFundChannel(response) => Ok(response),
9728	            _ => Err(TryFromResponseError)
9729	        }
9730	    }
9731	}
9732
9733	#[derive(Clone, Debug, Deserialize, Serialize)]
9734	pub struct MultiwithdrawResponse {
9735	    pub tx: String,
9736	    pub txid: String,
9737	}
9738
9739	impl TryFrom<Response> for MultiwithdrawResponse {
9740	    type Error = super::TryFromResponseError;
9741
9742	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9743	        match response {
9744	            Response::MultiWithdraw(response) => Ok(response),
9745	            _ => Err(TryFromResponseError)
9746	        }
9747	    }
9748	}
9749
9750	#[derive(Clone, Debug, Deserialize, Serialize)]
9751	pub struct OfferResponse {
9752	    #[serde(skip_serializing_if = "Option::is_none")]
9753	    pub force_paths: Option<bool>,
9754	    #[serde(skip_serializing_if = "Option::is_none")]
9755	    pub label: Option<String>,
9756	    pub active: bool,
9757	    pub bolt12: String,
9758	    pub created: bool,
9759	    pub offer_id: Sha256,
9760	    pub single_use: bool,
9761	    pub used: bool,
9762	}
9763
9764	impl TryFrom<Response> for OfferResponse {
9765	    type Error = super::TryFromResponseError;
9766
9767	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9768	        match response {
9769	            Response::Offer(response) => Ok(response),
9770	            _ => Err(TryFromResponseError)
9771	        }
9772	    }
9773	}
9774
9775	#[derive(Clone, Debug, Deserialize, Serialize)]
9776	pub struct OpenchannelAbortResponse {
9777	    pub channel_canceled: bool,
9778	    pub channel_id: Sha256,
9779	    pub reason: String,
9780	}
9781
9782	impl TryFrom<Response> for OpenchannelAbortResponse {
9783	    type Error = super::TryFromResponseError;
9784
9785	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9786	        match response {
9787	            Response::OpenChannelAbort(response) => Ok(response),
9788	            _ => Err(TryFromResponseError)
9789	        }
9790	    }
9791	}
9792
9793	#[derive(Clone, Debug, Deserialize, Serialize)]
9794	pub struct OpenchannelBumpChannelType {
9795	    pub bits: Vec<u32>,
9796	    pub names: Vec<ChannelTypeName>,
9797	}
9798
9799	#[derive(Clone, Debug, Deserialize, Serialize)]
9800	pub struct OpenchannelBumpResponse {
9801	    #[serde(skip_serializing_if = "Option::is_none")]
9802	    pub requires_confirmed_inputs: Option<bool>,
9803	    pub channel_id: Sha256,
9804	    pub channel_type: OpenchannelBumpChannelType,
9805	    pub commitments_secured: bool,
9806	    pub funding_serial: u64,
9807	    pub psbt: String,
9808	}
9809
9810	impl TryFrom<Response> for OpenchannelBumpResponse {
9811	    type Error = super::TryFromResponseError;
9812
9813	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9814	        match response {
9815	            Response::OpenChannelBump(response) => Ok(response),
9816	            _ => Err(TryFromResponseError)
9817	        }
9818	    }
9819	}
9820
9821	#[derive(Clone, Debug, Deserialize, Serialize)]
9822	pub struct OpenchannelInitChannelType {
9823	    pub bits: Vec<u32>,
9824	    pub names: Vec<ChannelTypeName>,
9825	}
9826
9827	#[derive(Clone, Debug, Deserialize, Serialize)]
9828	pub struct OpenchannelInitResponse {
9829	    #[serde(skip_serializing_if = "Option::is_none")]
9830	    pub requires_confirmed_inputs: Option<bool>,
9831	    pub channel_id: Sha256,
9832	    pub channel_type: OpenchannelInitChannelType,
9833	    pub commitments_secured: bool,
9834	    pub funding_serial: u64,
9835	    pub psbt: String,
9836	}
9837
9838	impl TryFrom<Response> for OpenchannelInitResponse {
9839	    type Error = super::TryFromResponseError;
9840
9841	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9842	        match response {
9843	            Response::OpenChannelInit(response) => Ok(response),
9844	            _ => Err(TryFromResponseError)
9845	        }
9846	    }
9847	}
9848
9849	#[derive(Clone, Debug, Deserialize, Serialize)]
9850	pub struct OpenchannelSignedResponse {
9851	    pub channel_id: Sha256,
9852	    pub tx: String,
9853	    pub txid: String,
9854	}
9855
9856	impl TryFrom<Response> for OpenchannelSignedResponse {
9857	    type Error = super::TryFromResponseError;
9858
9859	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9860	        match response {
9861	            Response::OpenChannelSigned(response) => Ok(response),
9862	            _ => Err(TryFromResponseError)
9863	        }
9864	    }
9865	}
9866
9867	#[derive(Clone, Debug, Deserialize, Serialize)]
9868	pub struct OpenchannelUpdateChannelType {
9869	    pub bits: Vec<u32>,
9870	    pub names: Vec<ChannelTypeName>,
9871	}
9872
9873	#[derive(Clone, Debug, Deserialize, Serialize)]
9874	pub struct OpenchannelUpdateResponse {
9875	    #[serde(skip_serializing_if = "Option::is_none")]
9876	    pub close_to: Option<String>,
9877	    #[serde(skip_serializing_if = "Option::is_none")]
9878	    pub requires_confirmed_inputs: Option<bool>,
9879	    pub channel_id: Sha256,
9880	    pub channel_type: OpenchannelUpdateChannelType,
9881	    pub commitments_secured: bool,
9882	    pub funding_outnum: u32,
9883	    pub psbt: String,
9884	}
9885
9886	impl TryFrom<Response> for OpenchannelUpdateResponse {
9887	    type Error = super::TryFromResponseError;
9888
9889	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9890	        match response {
9891	            Response::OpenChannelUpdate(response) => Ok(response),
9892	            _ => Err(TryFromResponseError)
9893	        }
9894	    }
9895	}
9896
9897	#[derive(Clone, Debug, Deserialize, Serialize)]
9898	pub struct PingResponse {
9899	    pub totlen: u16,
9900	}
9901
9902	impl TryFrom<Response> for PingResponse {
9903	    type Error = super::TryFromResponseError;
9904
9905	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9906	        match response {
9907	            Response::Ping(response) => Ok(response),
9908	            _ => Err(TryFromResponseError)
9909	        }
9910	    }
9911	}
9912
9913	#[derive(Clone, Debug, Deserialize, Serialize)]
9914	pub struct PluginPlugins {
9915	    pub active: bool,
9916	    pub dynamic: bool,
9917	    pub name: String,
9918	}
9919
9920	#[derive(Clone, Debug, Deserialize, Serialize)]
9921	pub struct PluginResponse {
9922	    #[serde(skip_serializing_if = "Option::is_none")]
9923	    pub result: Option<String>,
9924	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
9925	    pub plugins: Option<Vec<PluginPlugins>>,
9926	    // Path `Plugin.command`
9927	    pub command: PluginSubcommand,
9928	}
9929
9930	impl TryFrom<Response> for PluginResponse {
9931	    type Error = super::TryFromResponseError;
9932
9933	    fn try_from(response: Response) -> Result<Self, Self::Error> {
9934	        match response {
9935	            Response::Plugin(response) => Ok(response),
9936	            _ => Err(TryFromResponseError)
9937	        }
9938	    }
9939	}
9940
9941	/// ['Status of payment.']
9942	#[deprecated]
9943	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
9944	#[allow(non_camel_case_types)]
9945	pub enum RenepaystatusPaystatusStatus {
9946	    #[serde(rename = "complete")]
9947	    COMPLETE = 0,
9948	    #[serde(rename = "pending")]
9949	    PENDING = 1,
9950	    #[serde(rename = "failed")]
9951	    FAILED = 2,
9952	}
9953
9954	impl TryFrom<i32> for RenepaystatusPaystatusStatus {
9955	    type Error = anyhow::Error;
9956	    fn try_from(c: i32) -> Result<RenepaystatusPaystatusStatus, anyhow::Error> {
9957	        match c {
9958	    0 => Ok(RenepaystatusPaystatusStatus::COMPLETE),
9959	    1 => Ok(RenepaystatusPaystatusStatus::PENDING),
9960	    2 => Ok(RenepaystatusPaystatusStatus::FAILED),
9961	            o => Err(anyhow::anyhow!("Unknown variant {} for enum RenepaystatusPaystatusStatus", o)),
9962	        }
9963	    }
9964	}
9965
9966	impl ToString for RenepaystatusPaystatusStatus {
9967	    fn to_string(&self) -> String {
9968	        match self {
9969	            RenepaystatusPaystatusStatus::COMPLETE => "COMPLETE",
9970	            RenepaystatusPaystatusStatus::PENDING => "PENDING",
9971	            RenepaystatusPaystatusStatus::FAILED => "FAILED",
9972	        }.to_string()
9973	    }
9974	}
9975
9976	#[deprecated = "deprecated since CLN v26.06"]
9977	#[derive(Clone, Debug, Deserialize, Serialize)]
9978	pub struct RenepaystatusPaystatus {
9979	    #[deprecated]
9980	    #[serde(skip_serializing_if = "Option::is_none")]
9981	    pub amount_sent_msat: Option<Amount>,
9982	    #[deprecated]
9983	    #[serde(skip_serializing_if = "Option::is_none")]
9984	    pub destination: Option<PublicKey>,
9985	    #[deprecated]
9986	    #[serde(skip_serializing_if = "Option::is_none")]
9987	    pub parts: Option<u32>,
9988	    #[deprecated]
9989	    #[serde(skip_serializing_if = "Option::is_none")]
9990	    pub payment_preimage: Option<Secret>,
9991	    #[deprecated]
9992	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
9993	    pub notes: Option<Vec<String>>,
9994	    #[deprecated]
9995	    pub amount_msat: Amount,
9996	    #[deprecated]
9997	    pub bolt11: String,
9998	    #[deprecated]
9999	    pub created_at: f64,
10000	    #[deprecated]
10001	    pub groupid: u32,
10002	    #[deprecated]
10003	    pub payment_hash: Sha256,
10004	    // Path `RenePayStatus.paystatus[].status`
10005	    pub status: RenepaystatusPaystatusStatus,
10006	}
10007
10008	#[deprecated = "deprecated since CLN v26.06"]
10009	#[derive(Clone, Debug, Deserialize, Serialize)]
10010	pub struct RenepaystatusResponse {
10011	    #[deprecated]
10012	    pub paystatus: Vec<RenepaystatusPaystatus>,
10013	}
10014
10015	impl TryFrom<Response> for RenepaystatusResponse {
10016	    type Error = super::TryFromResponseError;
10017
10018	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10019	        match response {
10020	            Response::RenePayStatus(response) => Ok(response),
10021	            _ => Err(TryFromResponseError)
10022	        }
10023	    }
10024	}
10025
10026	/// ['Status of payment.']
10027	#[deprecated]
10028	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
10029	#[allow(non_camel_case_types)]
10030	pub enum RenepayStatus {
10031	    #[serde(rename = "complete")]
10032	    COMPLETE = 0,
10033	    #[serde(rename = "pending")]
10034	    PENDING = 1,
10035	    #[serde(rename = "failed")]
10036	    FAILED = 2,
10037	}
10038
10039	impl TryFrom<i32> for RenepayStatus {
10040	    type Error = anyhow::Error;
10041	    fn try_from(c: i32) -> Result<RenepayStatus, anyhow::Error> {
10042	        match c {
10043	    0 => Ok(RenepayStatus::COMPLETE),
10044	    1 => Ok(RenepayStatus::PENDING),
10045	    2 => Ok(RenepayStatus::FAILED),
10046	            o => Err(anyhow::anyhow!("Unknown variant {} for enum RenepayStatus", o)),
10047	        }
10048	    }
10049	}
10050
10051	impl ToString for RenepayStatus {
10052	    fn to_string(&self) -> String {
10053	        match self {
10054	            RenepayStatus::COMPLETE => "COMPLETE",
10055	            RenepayStatus::PENDING => "PENDING",
10056	            RenepayStatus::FAILED => "FAILED",
10057	        }.to_string()
10058	    }
10059	}
10060
10061	#[deprecated = "deprecated since CLN v26.06"]
10062	#[derive(Clone, Debug, Deserialize, Serialize)]
10063	pub struct RenepayResponse {
10064	    #[deprecated]
10065	    #[serde(skip_serializing_if = "Option::is_none")]
10066	    pub bolt11: Option<String>,
10067	    #[deprecated]
10068	    #[serde(skip_serializing_if = "Option::is_none")]
10069	    pub bolt12: Option<String>,
10070	    #[deprecated]
10071	    #[serde(skip_serializing_if = "Option::is_none")]
10072	    pub destination: Option<PublicKey>,
10073	    #[deprecated]
10074	    #[serde(skip_serializing_if = "Option::is_none")]
10075	    pub groupid: Option<u64>,
10076	    #[deprecated]
10077	    pub amount_msat: Amount,
10078	    #[deprecated]
10079	    pub amount_sent_msat: Amount,
10080	    #[deprecated]
10081	    pub created_at: f64,
10082	    #[deprecated]
10083	    pub parts: u32,
10084	    #[deprecated]
10085	    pub payment_hash: Sha256,
10086	    #[deprecated]
10087	    pub payment_preimage: Secret,
10088	    // Path `RenePay.status`
10089	    pub status: RenepayStatus,
10090	}
10091
10092	impl TryFrom<Response> for RenepayResponse {
10093	    type Error = super::TryFromResponseError;
10094
10095	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10096	        match response {
10097	            Response::RenePay(response) => Ok(response),
10098	            _ => Err(TryFromResponseError)
10099	        }
10100	    }
10101	}
10102
10103	#[derive(Clone, Debug, Deserialize, Serialize)]
10104	pub struct ReserveinputsReservations {
10105	    pub reserved: bool,
10106	    pub reserved_to_block: u32,
10107	    pub txid: String,
10108	    pub vout: u32,
10109	    pub was_reserved: bool,
10110	}
10111
10112	#[derive(Clone, Debug, Deserialize, Serialize)]
10113	pub struct ReserveinputsResponse {
10114	    pub reservations: Vec<ReserveinputsReservations>,
10115	}
10116
10117	impl TryFrom<Response> for ReserveinputsResponse {
10118	    type Error = super::TryFromResponseError;
10119
10120	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10121	        match response {
10122	            Response::ReserveInputs(response) => Ok(response),
10123	            _ => Err(TryFromResponseError)
10124	        }
10125	    }
10126	}
10127
10128	#[derive(Clone, Debug, Deserialize, Serialize)]
10129	pub struct SendcustommsgResponse {
10130	    pub status: String,
10131	}
10132
10133	impl TryFrom<Response> for SendcustommsgResponse {
10134	    type Error = super::TryFromResponseError;
10135
10136	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10137	        match response {
10138	            Response::SendCustomMsg(response) => Ok(response),
10139	            _ => Err(TryFromResponseError)
10140	        }
10141	    }
10142	}
10143
10144	/// ["Whether it's paid, unpaid or unpayable."]
10145	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
10146	#[allow(non_camel_case_types)]
10147	pub enum SendinvoiceStatus {
10148	    #[serde(rename = "unpaid")]
10149	    UNPAID = 0,
10150	    #[serde(rename = "paid")]
10151	    PAID = 1,
10152	    #[serde(rename = "expired")]
10153	    EXPIRED = 2,
10154	}
10155
10156	impl TryFrom<i32> for SendinvoiceStatus {
10157	    type Error = anyhow::Error;
10158	    fn try_from(c: i32) -> Result<SendinvoiceStatus, anyhow::Error> {
10159	        match c {
10160	    0 => Ok(SendinvoiceStatus::UNPAID),
10161	    1 => Ok(SendinvoiceStatus::PAID),
10162	    2 => Ok(SendinvoiceStatus::EXPIRED),
10163	            o => Err(anyhow::anyhow!("Unknown variant {} for enum SendinvoiceStatus", o)),
10164	        }
10165	    }
10166	}
10167
10168	impl ToString for SendinvoiceStatus {
10169	    fn to_string(&self) -> String {
10170	        match self {
10171	            SendinvoiceStatus::UNPAID => "UNPAID",
10172	            SendinvoiceStatus::PAID => "PAID",
10173	            SendinvoiceStatus::EXPIRED => "EXPIRED",
10174	        }.to_string()
10175	    }
10176	}
10177
10178	#[derive(Clone, Debug, Deserialize, Serialize)]
10179	pub struct SendinvoiceResponse {
10180	    #[serde(skip_serializing_if = "Option::is_none")]
10181	    pub amount_msat: Option<Amount>,
10182	    #[serde(skip_serializing_if = "Option::is_none")]
10183	    pub amount_received_msat: Option<Amount>,
10184	    #[serde(skip_serializing_if = "Option::is_none")]
10185	    pub bolt12: Option<String>,
10186	    #[serde(skip_serializing_if = "Option::is_none")]
10187	    pub paid_at: Option<u64>,
10188	    #[serde(skip_serializing_if = "Option::is_none")]
10189	    pub pay_index: Option<u64>,
10190	    #[serde(skip_serializing_if = "Option::is_none")]
10191	    pub payment_preimage: Option<Secret>,
10192	    #[serde(skip_serializing_if = "Option::is_none")]
10193	    pub updated_index: Option<u64>,
10194	    // Path `SendInvoice.status`
10195	    pub status: SendinvoiceStatus,
10196	    pub created_index: u64,
10197	    pub description: String,
10198	    pub expires_at: u64,
10199	    pub label: String,
10200	    pub payment_hash: Sha256,
10201	}
10202
10203	impl TryFrom<Response> for SendinvoiceResponse {
10204	    type Error = super::TryFromResponseError;
10205
10206	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10207	        match response {
10208	            Response::SendInvoice(response) => Ok(response),
10209	            _ => Err(TryFromResponseError)
10210	        }
10211	    }
10212	}
10213
10214	#[derive(Clone, Debug, Deserialize, Serialize)]
10215	pub struct SetchannelChannels {
10216	    #[serde(skip_serializing_if = "Option::is_none")]
10217	    pub short_channel_id: Option<ShortChannelId>,
10218	    #[serde(skip_serializing_if = "Option::is_none")]
10219	    pub warning_htlcmax_too_high: Option<String>,
10220	    #[serde(skip_serializing_if = "Option::is_none")]
10221	    pub warning_htlcmin_too_low: Option<String>,
10222	    pub channel_id: Sha256,
10223	    pub fee_base_msat: Amount,
10224	    pub fee_proportional_millionths: u32,
10225	    pub ignore_fee_limits: bool,
10226	    pub maximum_htlc_out_msat: Amount,
10227	    pub minimum_htlc_out_msat: Amount,
10228	    pub peer_id: PublicKey,
10229	}
10230
10231	#[derive(Clone, Debug, Deserialize, Serialize)]
10232	pub struct SetchannelResponse {
10233	    pub channels: Vec<SetchannelChannels>,
10234	}
10235
10236	impl TryFrom<Response> for SetchannelResponse {
10237	    type Error = super::TryFromResponseError;
10238
10239	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10240	        match response {
10241	            Response::SetChannel(response) => Ok(response),
10242	            _ => Err(TryFromResponseError)
10243	        }
10244	    }
10245	}
10246
10247	#[derive(Clone, Debug, Deserialize, Serialize)]
10248	pub struct SetconfigConfig {
10249	    #[serde(skip_serializing_if = "Option::is_none")]
10250	    pub plugin: Option<String>,
10251	    #[serde(skip_serializing_if = "Option::is_none")]
10252	    pub set: Option<bool>,
10253	    #[serde(skip_serializing_if = "Option::is_none")]
10254	    pub source: Option<String>,
10255	    #[serde(skip_serializing_if = "Option::is_none")]
10256	    pub value_bool: Option<bool>,
10257	    #[serde(skip_serializing_if = "Option::is_none")]
10258	    pub value_int: Option<i64>,
10259	    #[serde(skip_serializing_if = "Option::is_none")]
10260	    pub value_msat: Option<Amount>,
10261	    #[serde(skip_serializing_if = "Option::is_none")]
10262	    pub value_str: Option<String>,
10263	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
10264	    pub sources: Option<Vec<String>>,
10265	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
10266	    pub values_str: Option<Vec<String>>,
10267	    pub config: String,
10268	    pub dynamic: bool,
10269	}
10270
10271	#[derive(Clone, Debug, Deserialize, Serialize)]
10272	pub struct SetconfigResponse {
10273	    pub config: SetconfigConfig,
10274	}
10275
10276	impl TryFrom<Response> for SetconfigResponse {
10277	    type Error = super::TryFromResponseError;
10278
10279	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10280	        match response {
10281	            Response::SetConfig(response) => Ok(response),
10282	            _ => Err(TryFromResponseError)
10283	        }
10284	    }
10285	}
10286
10287	#[derive(Clone, Debug, Deserialize, Serialize)]
10288	pub struct SetpsbtversionResponse {
10289	    pub psbt: String,
10290	}
10291
10292	impl TryFrom<Response> for SetpsbtversionResponse {
10293	    type Error = super::TryFromResponseError;
10294
10295	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10296	        match response {
10297	            Response::SetPsbtVersion(response) => Ok(response),
10298	            _ => Err(TryFromResponseError)
10299	        }
10300	    }
10301	}
10302
10303	#[derive(Clone, Debug, Deserialize, Serialize)]
10304	pub struct SigninvoiceResponse {
10305	    pub bolt11: String,
10306	}
10307
10308	impl TryFrom<Response> for SigninvoiceResponse {
10309	    type Error = super::TryFromResponseError;
10310
10311	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10312	        match response {
10313	            Response::SignInvoice(response) => Ok(response),
10314	            _ => Err(TryFromResponseError)
10315	        }
10316	    }
10317	}
10318
10319	#[derive(Clone, Debug, Deserialize, Serialize)]
10320	pub struct SignmessageResponse {
10321	    pub recid: String,
10322	    pub signature: String,
10323	    pub zbase: String,
10324	}
10325
10326	impl TryFrom<Response> for SignmessageResponse {
10327	    type Error = super::TryFromResponseError;
10328
10329	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10330	        match response {
10331	            Response::SignMessage(response) => Ok(response),
10332	            _ => Err(TryFromResponseError)
10333	        }
10334	    }
10335	}
10336
10337	#[derive(Clone, Debug, Deserialize, Serialize)]
10338	pub struct SpliceInitResponse {
10339	    pub psbt: String,
10340	}
10341
10342	impl TryFrom<Response> for SpliceInitResponse {
10343	    type Error = super::TryFromResponseError;
10344
10345	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10346	        match response {
10347	            Response::SpliceInit(response) => Ok(response),
10348	            _ => Err(TryFromResponseError)
10349	        }
10350	    }
10351	}
10352
10353	#[derive(Clone, Debug, Deserialize, Serialize)]
10354	pub struct SpliceSignedResponse {
10355	    #[serde(skip_serializing_if = "Option::is_none")]
10356	    pub outnum: Option<u32>,
10357	    pub psbt: String,
10358	    pub tx: String,
10359	    pub txid: String,
10360	}
10361
10362	impl TryFrom<Response> for SpliceSignedResponse {
10363	    type Error = super::TryFromResponseError;
10364
10365	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10366	        match response {
10367	            Response::SpliceSigned(response) => Ok(response),
10368	            _ => Err(TryFromResponseError)
10369	        }
10370	    }
10371	}
10372
10373	#[derive(Clone, Debug, Deserialize, Serialize)]
10374	pub struct SpliceUpdateResponse {
10375	    #[serde(skip_serializing_if = "Option::is_none")]
10376	    pub signatures_secured: Option<bool>,
10377	    pub commitments_secured: bool,
10378	    pub psbt: String,
10379	}
10380
10381	impl TryFrom<Response> for SpliceUpdateResponse {
10382	    type Error = super::TryFromResponseError;
10383
10384	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10385	        match response {
10386	            Response::SpliceUpdate(response) => Ok(response),
10387	            _ => Err(TryFromResponseError)
10388	        }
10389	    }
10390	}
10391
10392	#[derive(Clone, Debug, Deserialize, Serialize)]
10393	pub struct SpliceinResponse {
10394	    #[serde(skip_serializing_if = "Option::is_none")]
10395	    pub psbt: Option<String>,
10396	    #[serde(skip_serializing_if = "Option::is_none")]
10397	    pub tx: Option<String>,
10398	    #[serde(skip_serializing_if = "Option::is_none")]
10399	    pub txid: Option<String>,
10400	}
10401
10402	impl TryFrom<Response> for SpliceinResponse {
10403	    type Error = super::TryFromResponseError;
10404
10405	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10406	        match response {
10407	            Response::SpliceIn(response) => Ok(response),
10408	            _ => Err(TryFromResponseError)
10409	        }
10410	    }
10411	}
10412
10413	#[derive(Clone, Debug, Deserialize, Serialize)]
10414	pub struct SpliceoutResponse {
10415	    #[serde(skip_serializing_if = "Option::is_none")]
10416	    pub psbt: Option<String>,
10417	    #[serde(skip_serializing_if = "Option::is_none")]
10418	    pub tx: Option<String>,
10419	    #[serde(skip_serializing_if = "Option::is_none")]
10420	    pub txid: Option<String>,
10421	}
10422
10423	impl TryFrom<Response> for SpliceoutResponse {
10424	    type Error = super::TryFromResponseError;
10425
10426	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10427	        match response {
10428	            Response::SpliceOut(response) => Ok(response),
10429	            _ => Err(TryFromResponseError)
10430	        }
10431	    }
10432	}
10433
10434	#[derive(Clone, Debug, Deserialize, Serialize)]
10435	pub struct DevspliceResponse {
10436	    #[serde(skip_serializing_if = "Option::is_none")]
10437	    pub psbt: Option<String>,
10438	    #[serde(skip_serializing_if = "Option::is_none")]
10439	    pub tx: Option<String>,
10440	    #[serde(skip_serializing_if = "Option::is_none")]
10441	    pub txid: Option<String>,
10442	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
10443	    pub dryrun: Option<Vec<String>>,
10444	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
10445	    pub log: Option<Vec<String>>,
10446	}
10447
10448	impl TryFrom<Response> for DevspliceResponse {
10449	    type Error = super::TryFromResponseError;
10450
10451	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10452	        match response {
10453	            Response::DevSplice(response) => Ok(response),
10454	            _ => Err(TryFromResponseError)
10455	        }
10456	    }
10457	}
10458
10459	#[derive(Clone, Debug, Deserialize, Serialize)]
10460	pub struct UnreserveinputsReservations {
10461	    #[serde(skip_serializing_if = "Option::is_none")]
10462	    pub reserved_to_block: Option<u32>,
10463	    pub reserved: bool,
10464	    pub txid: String,
10465	    pub vout: u32,
10466	    pub was_reserved: bool,
10467	}
10468
10469	#[derive(Clone, Debug, Deserialize, Serialize)]
10470	pub struct UnreserveinputsResponse {
10471	    pub reservations: Vec<UnreserveinputsReservations>,
10472	}
10473
10474	impl TryFrom<Response> for UnreserveinputsResponse {
10475	    type Error = super::TryFromResponseError;
10476
10477	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10478	        match response {
10479	            Response::UnreserveInputs(response) => Ok(response),
10480	            _ => Err(TryFromResponseError)
10481	        }
10482	    }
10483	}
10484
10485	#[derive(Clone, Debug, Deserialize, Serialize)]
10486	pub struct UpgradewalletResponse {
10487	    #[serde(skip_serializing_if = "Option::is_none")]
10488	    pub psbt: Option<String>,
10489	    #[serde(skip_serializing_if = "Option::is_none")]
10490	    pub tx: Option<String>,
10491	    #[serde(skip_serializing_if = "Option::is_none")]
10492	    pub txid: Option<String>,
10493	    pub upgraded_outs: u64,
10494	}
10495
10496	impl TryFrom<Response> for UpgradewalletResponse {
10497	    type Error = super::TryFromResponseError;
10498
10499	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10500	        match response {
10501	            Response::UpgradeWallet(response) => Ok(response),
10502	            _ => Err(TryFromResponseError)
10503	        }
10504	    }
10505	}
10506
10507	#[derive(Clone, Debug, Deserialize, Serialize)]
10508	pub struct WaitblockheightResponse {
10509	    pub blockheight: u32,
10510	}
10511
10512	impl TryFrom<Response> for WaitblockheightResponse {
10513	    type Error = super::TryFromResponseError;
10514
10515	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10516	        match response {
10517	            Response::WaitBlockHeight(response) => Ok(response),
10518	            _ => Err(TryFromResponseError)
10519	        }
10520	    }
10521	}
10522
10523	/// ['Status of the payment.', 'Still ongoing, completed, failed locally, or failed after forwarding.', "Whether it's paid, unpaid or unpayable."]
10524	#[deprecated]
10525	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
10526	#[allow(non_camel_case_types)]
10527	pub enum WaitDetailsStatus {
10528	    #[serde(rename = "unpaid")]
10529	    UNPAID = 0,
10530	    #[serde(rename = "paid")]
10531	    PAID = 1,
10532	    #[serde(rename = "expired")]
10533	    EXPIRED = 2,
10534	    #[serde(rename = "pending")]
10535	    PENDING = 3,
10536	    #[serde(rename = "failed")]
10537	    FAILED = 4,
10538	    #[serde(rename = "complete")]
10539	    COMPLETE = 5,
10540	    #[serde(rename = "offered")]
10541	    OFFERED = 6,
10542	    #[serde(rename = "settled")]
10543	    SETTLED = 7,
10544	    #[serde(rename = "local_failed")]
10545	    LOCAL_FAILED = 8,
10546	}
10547
10548	impl TryFrom<i32> for WaitDetailsStatus {
10549	    type Error = anyhow::Error;
10550	    fn try_from(c: i32) -> Result<WaitDetailsStatus, anyhow::Error> {
10551	        match c {
10552	    0 => Ok(WaitDetailsStatus::UNPAID),
10553	    1 => Ok(WaitDetailsStatus::PAID),
10554	    2 => Ok(WaitDetailsStatus::EXPIRED),
10555	    3 => Ok(WaitDetailsStatus::PENDING),
10556	    4 => Ok(WaitDetailsStatus::FAILED),
10557	    5 => Ok(WaitDetailsStatus::COMPLETE),
10558	    6 => Ok(WaitDetailsStatus::OFFERED),
10559	    7 => Ok(WaitDetailsStatus::SETTLED),
10560	    8 => Ok(WaitDetailsStatus::LOCAL_FAILED),
10561	            o => Err(anyhow::anyhow!("Unknown variant {} for enum WaitDetailsStatus", o)),
10562	        }
10563	    }
10564	}
10565
10566	impl ToString for WaitDetailsStatus {
10567	    fn to_string(&self) -> String {
10568	        match self {
10569	            WaitDetailsStatus::COMPLETE => "COMPLETE",
10570	            WaitDetailsStatus::EXPIRED => "EXPIRED",
10571	            WaitDetailsStatus::FAILED => "FAILED",
10572	            WaitDetailsStatus::LOCAL_FAILED => "LOCAL_FAILED",
10573	            WaitDetailsStatus::OFFERED => "OFFERED",
10574	            WaitDetailsStatus::PAID => "PAID",
10575	            WaitDetailsStatus::PENDING => "PENDING",
10576	            WaitDetailsStatus::SETTLED => "SETTLED",
10577	            WaitDetailsStatus::UNPAID => "UNPAID",
10578	        }.to_string()
10579	    }
10580	}
10581
10582	#[deprecated = "deprecated since CLN v25.05"]
10583	#[derive(Clone, Debug, Deserialize, Serialize)]
10584	pub struct WaitDetails {
10585	    #[deprecated]
10586	    #[serde(skip_serializing_if = "Option::is_none")]
10587	    pub bolt11: Option<String>,
10588	    #[deprecated]
10589	    #[serde(skip_serializing_if = "Option::is_none")]
10590	    pub bolt12: Option<String>,
10591	    #[deprecated]
10592	    #[serde(skip_serializing_if = "Option::is_none")]
10593	    pub description: Option<String>,
10594	    #[deprecated]
10595	    #[serde(skip_serializing_if = "Option::is_none")]
10596	    pub groupid: Option<u64>,
10597	    #[deprecated]
10598	    #[serde(skip_serializing_if = "Option::is_none")]
10599	    pub in_channel: Option<ShortChannelId>,
10600	    #[deprecated]
10601	    #[serde(skip_serializing_if = "Option::is_none")]
10602	    pub in_htlc_id: Option<u64>,
10603	    #[deprecated]
10604	    #[serde(skip_serializing_if = "Option::is_none")]
10605	    pub in_msat: Option<Amount>,
10606	    #[deprecated]
10607	    #[serde(skip_serializing_if = "Option::is_none")]
10608	    pub label: Option<String>,
10609	    #[deprecated]
10610	    #[serde(skip_serializing_if = "Option::is_none")]
10611	    pub out_channel: Option<ShortChannelId>,
10612	    #[deprecated]
10613	    #[serde(skip_serializing_if = "Option::is_none")]
10614	    pub partid: Option<u64>,
10615	    #[deprecated]
10616	    #[serde(skip_serializing_if = "Option::is_none")]
10617	    pub payment_hash: Option<Sha256>,
10618	    #[serde(skip_serializing_if = "Option::is_none")]
10619	    pub status: Option<WaitDetailsStatus>,
10620	}
10621
10622	#[derive(Clone, Debug, Deserialize, Serialize)]
10623	pub struct WaitChainmoves {
10624	    pub account: String,
10625	    pub credit_msat: Amount,
10626	    pub debit_msat: Amount,
10627	}
10628
10629	#[derive(Clone, Debug, Deserialize, Serialize)]
10630	pub struct WaitChannelmoves {
10631	    pub account: String,
10632	    pub credit_msat: Amount,
10633	    pub debit_msat: Amount,
10634	}
10635
10636	/// ['Still ongoing, completed, failed locally, or failed after forwarding.']
10637	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
10638	#[allow(non_camel_case_types)]
10639	pub enum WaitForwardsStatus {
10640	    #[serde(rename = "offered")]
10641	    OFFERED = 0,
10642	    #[serde(rename = "settled")]
10643	    SETTLED = 1,
10644	    #[serde(rename = "failed")]
10645	    FAILED = 2,
10646	    #[serde(rename = "local_failed")]
10647	    LOCAL_FAILED = 3,
10648	}
10649
10650	impl TryFrom<i32> for WaitForwardsStatus {
10651	    type Error = anyhow::Error;
10652	    fn try_from(c: i32) -> Result<WaitForwardsStatus, anyhow::Error> {
10653	        match c {
10654	    0 => Ok(WaitForwardsStatus::OFFERED),
10655	    1 => Ok(WaitForwardsStatus::SETTLED),
10656	    2 => Ok(WaitForwardsStatus::FAILED),
10657	    3 => Ok(WaitForwardsStatus::LOCAL_FAILED),
10658	            o => Err(anyhow::anyhow!("Unknown variant {} for enum WaitForwardsStatus", o)),
10659	        }
10660	    }
10661	}
10662
10663	impl ToString for WaitForwardsStatus {
10664	    fn to_string(&self) -> String {
10665	        match self {
10666	            WaitForwardsStatus::OFFERED => "OFFERED",
10667	            WaitForwardsStatus::SETTLED => "SETTLED",
10668	            WaitForwardsStatus::FAILED => "FAILED",
10669	            WaitForwardsStatus::LOCAL_FAILED => "LOCAL_FAILED",
10670	        }.to_string()
10671	    }
10672	}
10673
10674	#[derive(Clone, Debug, Deserialize, Serialize)]
10675	pub struct WaitForwards {
10676	    #[serde(skip_serializing_if = "Option::is_none")]
10677	    pub in_channel: Option<ShortChannelId>,
10678	    #[serde(skip_serializing_if = "Option::is_none")]
10679	    pub in_htlc_id: Option<u64>,
10680	    #[serde(skip_serializing_if = "Option::is_none")]
10681	    pub in_msat: Option<Amount>,
10682	    #[serde(skip_serializing_if = "Option::is_none")]
10683	    pub out_channel: Option<ShortChannelId>,
10684	    #[serde(skip_serializing_if = "Option::is_none")]
10685	    pub status: Option<WaitForwardsStatus>,
10686	}
10687
10688	/// ['Out if we offered this to the peer, in if they offered it.']
10689	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
10690	#[allow(non_camel_case_types)]
10691	pub enum WaitHtlcsDirection {
10692	    #[serde(rename = "out")]
10693	    OUT = 0,
10694	    #[serde(rename = "in")]
10695	    IN = 1,
10696	}
10697
10698	impl TryFrom<i32> for WaitHtlcsDirection {
10699	    type Error = anyhow::Error;
10700	    fn try_from(c: i32) -> Result<WaitHtlcsDirection, anyhow::Error> {
10701	        match c {
10702	    0 => Ok(WaitHtlcsDirection::OUT),
10703	    1 => Ok(WaitHtlcsDirection::IN),
10704	            o => Err(anyhow::anyhow!("Unknown variant {} for enum WaitHtlcsDirection", o)),
10705	        }
10706	    }
10707	}
10708
10709	impl ToString for WaitHtlcsDirection {
10710	    fn to_string(&self) -> String {
10711	        match self {
10712	            WaitHtlcsDirection::OUT => "OUT",
10713	            WaitHtlcsDirection::IN => "IN",
10714	        }.to_string()
10715	    }
10716	}
10717
10718	#[derive(Clone, Debug, Deserialize, Serialize)]
10719	pub struct WaitHtlcs {
10720	    #[serde(skip_serializing_if = "Option::is_none")]
10721	    pub amount_msat: Option<Amount>,
10722	    #[serde(skip_serializing_if = "Option::is_none")]
10723	    pub cltv_expiry: Option<u32>,
10724	    #[serde(skip_serializing_if = "Option::is_none")]
10725	    pub direction: Option<WaitHtlcsDirection>,
10726	    #[serde(skip_serializing_if = "Option::is_none")]
10727	    pub htlc_id: Option<u64>,
10728	    #[serde(skip_serializing_if = "Option::is_none")]
10729	    pub payment_hash: Option<Sha256>,
10730	    #[serde(skip_serializing_if = "Option::is_none")]
10731	    pub short_channel_id: Option<ShortChannelId>,
10732	    #[serde(skip_serializing_if = "Option::is_none")]
10733	    pub state: Option<HtlcState>,
10734	}
10735
10736	/// ["Whether it's paid, unpaid or unpayable."]
10737	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
10738	#[allow(non_camel_case_types)]
10739	pub enum WaitInvoicesStatus {
10740	    #[serde(rename = "unpaid")]
10741	    UNPAID = 0,
10742	    #[serde(rename = "paid")]
10743	    PAID = 1,
10744	    #[serde(rename = "expired")]
10745	    EXPIRED = 2,
10746	}
10747
10748	impl TryFrom<i32> for WaitInvoicesStatus {
10749	    type Error = anyhow::Error;
10750	    fn try_from(c: i32) -> Result<WaitInvoicesStatus, anyhow::Error> {
10751	        match c {
10752	    0 => Ok(WaitInvoicesStatus::UNPAID),
10753	    1 => Ok(WaitInvoicesStatus::PAID),
10754	    2 => Ok(WaitInvoicesStatus::EXPIRED),
10755	            o => Err(anyhow::anyhow!("Unknown variant {} for enum WaitInvoicesStatus", o)),
10756	        }
10757	    }
10758	}
10759
10760	impl ToString for WaitInvoicesStatus {
10761	    fn to_string(&self) -> String {
10762	        match self {
10763	            WaitInvoicesStatus::UNPAID => "UNPAID",
10764	            WaitInvoicesStatus::PAID => "PAID",
10765	            WaitInvoicesStatus::EXPIRED => "EXPIRED",
10766	        }.to_string()
10767	    }
10768	}
10769
10770	#[derive(Clone, Debug, Deserialize, Serialize)]
10771	pub struct WaitInvoices {
10772	    #[serde(skip_serializing_if = "Option::is_none")]
10773	    pub bolt11: Option<String>,
10774	    #[serde(skip_serializing_if = "Option::is_none")]
10775	    pub bolt12: Option<String>,
10776	    #[serde(skip_serializing_if = "Option::is_none")]
10777	    pub description: Option<String>,
10778	    #[serde(skip_serializing_if = "Option::is_none")]
10779	    pub label: Option<String>,
10780	    #[serde(skip_serializing_if = "Option::is_none")]
10781	    pub status: Option<WaitInvoicesStatus>,
10782	}
10783
10784	/// ['The kind of network event']
10785	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
10786	#[allow(non_camel_case_types)]
10787	pub enum WaitNetworkeventsType {
10788	    #[serde(rename = "connect")]
10789	    CONNECT = 0,
10790	    #[serde(rename = "connect_fail")]
10791	    CONNECT_FAIL = 1,
10792	    #[serde(rename = "ping")]
10793	    PING = 2,
10794	    #[serde(rename = "disconnect")]
10795	    DISCONNECT = 3,
10796	}
10797
10798	impl TryFrom<i32> for WaitNetworkeventsType {
10799	    type Error = anyhow::Error;
10800	    fn try_from(c: i32) -> Result<WaitNetworkeventsType, anyhow::Error> {
10801	        match c {
10802	    0 => Ok(WaitNetworkeventsType::CONNECT),
10803	    1 => Ok(WaitNetworkeventsType::CONNECT_FAIL),
10804	    2 => Ok(WaitNetworkeventsType::PING),
10805	    3 => Ok(WaitNetworkeventsType::DISCONNECT),
10806	            o => Err(anyhow::anyhow!("Unknown variant {} for enum WaitNetworkeventsType", o)),
10807	        }
10808	    }
10809	}
10810
10811	impl ToString for WaitNetworkeventsType {
10812	    fn to_string(&self) -> String {
10813	        match self {
10814	            WaitNetworkeventsType::CONNECT => "CONNECT",
10815	            WaitNetworkeventsType::CONNECT_FAIL => "CONNECT_FAIL",
10816	            WaitNetworkeventsType::PING => "PING",
10817	            WaitNetworkeventsType::DISCONNECT => "DISCONNECT",
10818	        }.to_string()
10819	    }
10820	}
10821
10822	#[derive(Clone, Debug, Deserialize, Serialize)]
10823	pub struct WaitNetworkevents {
10824	    #[serde(skip_serializing_if = "Option::is_none")]
10825	    pub created_index: Option<u64>,
10826	    #[serde(skip_serializing_if = "Option::is_none")]
10827	    pub item_type: Option<WaitNetworkeventsType>,
10828	    #[serde(skip_serializing_if = "Option::is_none")]
10829	    pub peer_id: Option<PublicKey>,
10830	}
10831
10832	/// ['Status of the payment.']
10833	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
10834	#[allow(non_camel_case_types)]
10835	pub enum WaitSendpaysStatus {
10836	    #[serde(rename = "pending")]
10837	    PENDING = 0,
10838	    #[serde(rename = "failed")]
10839	    FAILED = 1,
10840	    #[serde(rename = "complete")]
10841	    COMPLETE = 2,
10842	}
10843
10844	impl TryFrom<i32> for WaitSendpaysStatus {
10845	    type Error = anyhow::Error;
10846	    fn try_from(c: i32) -> Result<WaitSendpaysStatus, anyhow::Error> {
10847	        match c {
10848	    0 => Ok(WaitSendpaysStatus::PENDING),
10849	    1 => Ok(WaitSendpaysStatus::FAILED),
10850	    2 => Ok(WaitSendpaysStatus::COMPLETE),
10851	            o => Err(anyhow::anyhow!("Unknown variant {} for enum WaitSendpaysStatus", o)),
10852	        }
10853	    }
10854	}
10855
10856	impl ToString for WaitSendpaysStatus {
10857	    fn to_string(&self) -> String {
10858	        match self {
10859	            WaitSendpaysStatus::PENDING => "PENDING",
10860	            WaitSendpaysStatus::FAILED => "FAILED",
10861	            WaitSendpaysStatus::COMPLETE => "COMPLETE",
10862	        }.to_string()
10863	    }
10864	}
10865
10866	#[derive(Clone, Debug, Deserialize, Serialize)]
10867	pub struct WaitSendpays {
10868	    #[serde(skip_serializing_if = "Option::is_none")]
10869	    pub groupid: Option<u64>,
10870	    #[serde(skip_serializing_if = "Option::is_none")]
10871	    pub partid: Option<u64>,
10872	    #[serde(skip_serializing_if = "Option::is_none")]
10873	    pub payment_hash: Option<Sha256>,
10874	    #[serde(skip_serializing_if = "Option::is_none")]
10875	    pub status: Option<WaitSendpaysStatus>,
10876	}
10877
10878	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
10879	#[allow(non_camel_case_types)]
10880	pub enum WaitSubsystem {
10881	    #[serde(rename = "invoices")]
10882	    INVOICES = 0,
10883	    #[serde(rename = "forwards")]
10884	    FORWARDS = 1,
10885	    #[serde(rename = "sendpays")]
10886	    SENDPAYS = 2,
10887	    #[serde(rename = "htlcs")]
10888	    HTLCS = 3,
10889	    #[serde(rename = "chainmoves")]
10890	    CHAINMOVES = 4,
10891	    #[serde(rename = "channelmoves")]
10892	    CHANNELMOVES = 5,
10893	    #[serde(rename = "networkevents")]
10894	    NETWORKEVENTS = 6,
10895	}
10896
10897	impl TryFrom<i32> for WaitSubsystem {
10898	    type Error = anyhow::Error;
10899	    fn try_from(c: i32) -> Result<WaitSubsystem, anyhow::Error> {
10900	        match c {
10901	    0 => Ok(WaitSubsystem::INVOICES),
10902	    1 => Ok(WaitSubsystem::FORWARDS),
10903	    2 => Ok(WaitSubsystem::SENDPAYS),
10904	    3 => Ok(WaitSubsystem::HTLCS),
10905	    4 => Ok(WaitSubsystem::CHAINMOVES),
10906	    5 => Ok(WaitSubsystem::CHANNELMOVES),
10907	    6 => Ok(WaitSubsystem::NETWORKEVENTS),
10908	            o => Err(anyhow::anyhow!("Unknown variant {} for enum WaitSubsystem", o)),
10909	        }
10910	    }
10911	}
10912
10913	impl ToString for WaitSubsystem {
10914	    fn to_string(&self) -> String {
10915	        match self {
10916	            WaitSubsystem::INVOICES => "INVOICES",
10917	            WaitSubsystem::FORWARDS => "FORWARDS",
10918	            WaitSubsystem::SENDPAYS => "SENDPAYS",
10919	            WaitSubsystem::HTLCS => "HTLCS",
10920	            WaitSubsystem::CHAINMOVES => "CHAINMOVES",
10921	            WaitSubsystem::CHANNELMOVES => "CHANNELMOVES",
10922	            WaitSubsystem::NETWORKEVENTS => "NETWORKEVENTS",
10923	        }.to_string()
10924	    }
10925	}
10926
10927	#[derive(Clone, Debug, Deserialize, Serialize)]
10928	pub struct WaitResponse {
10929	    #[deprecated]
10930	    #[serde(skip_serializing_if = "Option::is_none")]
10931	    pub details: Option<WaitDetails>,
10932	    #[serde(skip_serializing_if = "Option::is_none")]
10933	    pub chainmoves: Option<WaitChainmoves>,
10934	    #[serde(skip_serializing_if = "Option::is_none")]
10935	    pub channelmoves: Option<WaitChannelmoves>,
10936	    #[serde(skip_serializing_if = "Option::is_none")]
10937	    pub created: Option<u64>,
10938	    #[serde(skip_serializing_if = "Option::is_none")]
10939	    pub deleted: Option<u64>,
10940	    #[serde(skip_serializing_if = "Option::is_none")]
10941	    pub forwards: Option<WaitForwards>,
10942	    #[serde(skip_serializing_if = "Option::is_none")]
10943	    pub htlcs: Option<WaitHtlcs>,
10944	    #[serde(skip_serializing_if = "Option::is_none")]
10945	    pub invoices: Option<WaitInvoices>,
10946	    #[serde(skip_serializing_if = "Option::is_none")]
10947	    pub networkevents: Option<WaitNetworkevents>,
10948	    #[serde(skip_serializing_if = "Option::is_none")]
10949	    pub sendpays: Option<WaitSendpays>,
10950	    #[serde(skip_serializing_if = "Option::is_none")]
10951	    pub updated: Option<u64>,
10952	    // Path `Wait.subsystem`
10953	    pub subsystem: WaitSubsystem,
10954	}
10955
10956	impl TryFrom<Response> for WaitResponse {
10957	    type Error = super::TryFromResponseError;
10958
10959	    fn try_from(response: Response) -> Result<Self, Self::Error> {
10960	        match response {
10961	            Response::Wait(response) => Ok(response),
10962	            _ => Err(TryFromResponseError)
10963	        }
10964	    }
10965	}
10966
10967	#[deprecated = "deprecated since CLN v26.04"]
10968	#[derive(Clone, Debug, Deserialize, Serialize)]
10969	pub struct ListconfigsConfigsExperimentalsplicing {
10970	    #[deprecated]
10971	    pub set: bool,
10972	    #[deprecated]
10973	    pub source: String,
10974	}
10975
10976	#[derive(Clone, Debug, Deserialize, Serialize)]
10977	pub struct ListconfigsConfigsAllowdeprecatedapis {
10978	    pub source: String,
10979	    pub value_bool: bool,
10980	}
10981
10982	#[derive(Clone, Debug, Deserialize, Serialize)]
10983	pub struct ListconfigsConfigsAlwaysuseproxy {
10984	    pub source: String,
10985	    pub value_bool: bool,
10986	}
10987
10988	#[derive(Clone, Debug, Deserialize, Serialize)]
10989	pub struct ListconfigsConfigsAnnounceaddr {
10990	    pub sources: Vec<String>,
10991	    pub values_str: Vec<String>,
10992	}
10993
10994	/// ['Field from config or cmdline, or default.']
10995	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
10996	#[allow(non_camel_case_types)]
10997	pub enum ListconfigsConfigsAnnounceaddrdiscoveredValueStr {
10998	    #[serde(rename = "true")]
10999	    TRUE = 0,
11000	    #[serde(rename = "false")]
11001	    FALSE = 1,
11002	    #[serde(rename = "auto")]
11003	    AUTO = 2,
11004	}
11005
11006	impl TryFrom<i32> for ListconfigsConfigsAnnounceaddrdiscoveredValueStr {
11007	    type Error = anyhow::Error;
11008	    fn try_from(c: i32) -> Result<ListconfigsConfigsAnnounceaddrdiscoveredValueStr, anyhow::Error> {
11009	        match c {
11010	    0 => Ok(ListconfigsConfigsAnnounceaddrdiscoveredValueStr::TRUE),
11011	    1 => Ok(ListconfigsConfigsAnnounceaddrdiscoveredValueStr::FALSE),
11012	    2 => Ok(ListconfigsConfigsAnnounceaddrdiscoveredValueStr::AUTO),
11013	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListconfigsConfigsAnnounceaddrdiscoveredValueStr", o)),
11014	        }
11015	    }
11016	}
11017
11018	impl ToString for ListconfigsConfigsAnnounceaddrdiscoveredValueStr {
11019	    fn to_string(&self) -> String {
11020	        match self {
11021	            ListconfigsConfigsAnnounceaddrdiscoveredValueStr::TRUE => "TRUE",
11022	            ListconfigsConfigsAnnounceaddrdiscoveredValueStr::FALSE => "FALSE",
11023	            ListconfigsConfigsAnnounceaddrdiscoveredValueStr::AUTO => "AUTO",
11024	        }.to_string()
11025	    }
11026	}
11027
11028	#[derive(Clone, Debug, Deserialize, Serialize)]
11029	pub struct ListconfigsConfigsAnnounceaddrdiscovered {
11030	    // Path `ListConfigs.configs.announce-addr-discovered.value_str`
11031	    pub value_str: ListconfigsConfigsAnnounceaddrdiscoveredValueStr,
11032	    pub source: String,
11033	}
11034
11035	#[derive(Clone, Debug, Deserialize, Serialize)]
11036	pub struct ListconfigsConfigsAnnounceaddrdiscoveredport {
11037	    pub source: String,
11038	    pub value_int: u32,
11039	}
11040
11041	#[derive(Clone, Debug, Deserialize, Serialize)]
11042	pub struct ListconfigsConfigsAnnounceaddrdns {
11043	    pub source: String,
11044	    pub value_bool: bool,
11045	}
11046
11047	#[derive(Clone, Debug, Deserialize, Serialize)]
11048	pub struct ListconfigsConfigsAutoconnectseekerpeers {
11049	    pub source: String,
11050	    pub value_int: u32,
11051	}
11052
11053	#[derive(Clone, Debug, Deserialize, Serialize)]
11054	pub struct ListconfigsConfigsBindaddr {
11055	    pub sources: Vec<String>,
11056	    pub values_str: Vec<String>,
11057	}
11058
11059	#[derive(Clone, Debug, Deserialize, Serialize)]
11060	pub struct ListconfigsConfigsClearplugins {
11061	    pub set: bool,
11062	    pub source: String,
11063	}
11064
11065	#[derive(Clone, Debug, Deserialize, Serialize)]
11066	pub struct ListconfigsConfigsCltvdelta {
11067	    pub source: String,
11068	    pub value_int: u32,
11069	}
11070
11071	#[derive(Clone, Debug, Deserialize, Serialize)]
11072	pub struct ListconfigsConfigsCltvfinal {
11073	    pub source: String,
11074	    pub value_int: u32,
11075	}
11076
11077	#[derive(Clone, Debug, Deserialize, Serialize)]
11078	pub struct ListconfigsConfigsCommitfee {
11079	    pub source: String,
11080	    pub value_int: u64,
11081	}
11082
11083	#[derive(Clone, Debug, Deserialize, Serialize)]
11084	pub struct ListconfigsConfigsCommitfeerateoffset {
11085	    pub source: String,
11086	    pub value_int: u32,
11087	}
11088
11089	#[derive(Clone, Debug, Deserialize, Serialize)]
11090	pub struct ListconfigsConfigsCommittime {
11091	    pub source: String,
11092	    pub value_int: u32,
11093	}
11094
11095	#[derive(Clone, Debug, Deserialize, Serialize)]
11096	pub struct ListconfigsConfigsCurrencyrateaddsource {
11097	    #[serde(skip_serializing_if = "Option::is_none")]
11098	    pub plugin: Option<String>,
11099	    pub sources: Vec<String>,
11100	    pub values_str: Vec<String>,
11101	}
11102
11103	#[derive(Clone, Debug, Deserialize, Serialize)]
11104	pub struct ListconfigsConfigsCurrencyratedisablesource {
11105	    #[serde(skip_serializing_if = "Option::is_none")]
11106	    pub plugin: Option<String>,
11107	    pub sources: Vec<String>,
11108	    pub values_str: Vec<String>,
11109	}
11110
11111	#[derive(Clone, Debug, Deserialize, Serialize)]
11112	pub struct ListconfigsConfigsDatabaseupgrade {
11113	    pub source: String,
11114	    pub value_bool: bool,
11115	}
11116
11117	#[derive(Clone, Debug, Deserialize, Serialize)]
11118	pub struct ListconfigsConfigsDisabledns {
11119	    pub set: bool,
11120	    pub source: String,
11121	}
11122
11123	#[derive(Clone, Debug, Deserialize, Serialize)]
11124	pub struct ListconfigsConfigsDisablempp {
11125	    #[serde(skip_serializing_if = "Option::is_none")]
11126	    pub plugin: Option<String>,
11127	    pub set: bool,
11128	    pub source: String,
11129	}
11130
11131	#[derive(Clone, Debug, Deserialize, Serialize)]
11132	pub struct ListconfigsConfigsDisableplugin {
11133	    pub sources: Vec<String>,
11134	    pub values_str: Vec<String>,
11135	}
11136
11137	#[derive(Clone, Debug, Deserialize, Serialize)]
11138	pub struct ListconfigsConfigsEncryptedhsm {
11139	    pub set: bool,
11140	    pub source: String,
11141	}
11142
11143	#[derive(Clone, Debug, Deserialize, Serialize)]
11144	pub struct ListconfigsConfigsExperimentalanchors {
11145	    pub set: bool,
11146	    pub source: String,
11147	}
11148
11149	#[derive(Clone, Debug, Deserialize, Serialize)]
11150	pub struct ListconfigsConfigsExperimentaldualfund {
11151	    pub set: bool,
11152	    pub source: String,
11153	}
11154
11155	#[derive(Clone, Debug, Deserialize, Serialize)]
11156	pub struct ListconfigsConfigsExperimentalpeerstorage {
11157	    pub set: bool,
11158	    pub source: String,
11159	}
11160
11161	#[derive(Clone, Debug, Deserialize, Serialize)]
11162	pub struct ListconfigsConfigsExperimentalshutdownwrongfunding {
11163	    pub set: bool,
11164	    pub source: String,
11165	}
11166
11167	#[derive(Clone, Debug, Deserialize, Serialize)]
11168	pub struct ListconfigsConfigsFeebase {
11169	    pub source: String,
11170	    pub value_int: u32,
11171	}
11172
11173	#[derive(Clone, Debug, Deserialize, Serialize)]
11174	pub struct ListconfigsConfigsFeepersatoshi {
11175	    pub source: String,
11176	    pub value_int: u32,
11177	}
11178
11179	#[derive(Clone, Debug, Deserialize, Serialize)]
11180	pub struct ListconfigsConfigsFetchinvoicenoconnect {
11181	    #[serde(skip_serializing_if = "Option::is_none")]
11182	    pub plugin: Option<String>,
11183	    pub set: bool,
11184	    pub source: String,
11185	}
11186
11187	#[derive(Clone, Debug, Deserialize, Serialize)]
11188	pub struct ListconfigsConfigsForcefeerates {
11189	    pub source: String,
11190	    pub value_str: String,
11191	}
11192
11193	#[derive(Clone, Debug, Deserialize, Serialize)]
11194	pub struct ListconfigsConfigsFundingconfirms {
11195	    pub source: String,
11196	    pub value_int: u32,
11197	}
11198
11199	#[derive(Clone, Debug, Deserialize, Serialize)]
11200	pub struct ListconfigsConfigsHtlcmaximummsat {
11201	    pub source: String,
11202	    pub value_msat: Amount,
11203	}
11204
11205	#[derive(Clone, Debug, Deserialize, Serialize)]
11206	pub struct ListconfigsConfigsHtlcminimummsat {
11207	    pub source: String,
11208	    pub value_msat: Amount,
11209	}
11210
11211	#[derive(Clone, Debug, Deserialize, Serialize)]
11212	pub struct ListconfigsConfigsIgnorefeelimits {
11213	    pub source: String,
11214	    pub value_bool: bool,
11215	}
11216
11217	#[derive(Clone, Debug, Deserialize, Serialize)]
11218	pub struct ListconfigsConfigsImportantplugin {
11219	    pub sources: Vec<String>,
11220	    pub values_str: Vec<String>,
11221	}
11222
11223	#[derive(Clone, Debug, Deserialize, Serialize)]
11224	pub struct ListconfigsConfigsLargechannels {
11225	    pub set: bool,
11226	    pub source: String,
11227	}
11228
11229	#[derive(Clone, Debug, Deserialize, Serialize)]
11230	pub struct ListconfigsConfigsLightningdir {
11231	    pub source: String,
11232	    pub value_str: String,
11233	}
11234
11235	#[derive(Clone, Debug, Deserialize, Serialize)]
11236	pub struct ListconfigsConfigsLogfile {
11237	    pub sources: Vec<String>,
11238	    pub values_str: Vec<String>,
11239	}
11240
11241	#[derive(Clone, Debug, Deserialize, Serialize)]
11242	pub struct ListconfigsConfigsLoglevel {
11243	    pub source: String,
11244	    pub value_str: String,
11245	}
11246
11247	#[derive(Clone, Debug, Deserialize, Serialize)]
11248	pub struct ListconfigsConfigsLogprefix {
11249	    pub source: String,
11250	    pub value_str: String,
11251	}
11252
11253	#[derive(Clone, Debug, Deserialize, Serialize)]
11254	pub struct ListconfigsConfigsLogtimestamps {
11255	    pub source: String,
11256	    pub value_bool: bool,
11257	}
11258
11259	#[derive(Clone, Debug, Deserialize, Serialize)]
11260	pub struct ListconfigsConfigsMaxconcurrenthtlcs {
11261	    pub source: String,
11262	    pub value_int: u32,
11263	}
11264
11265	#[derive(Clone, Debug, Deserialize, Serialize)]
11266	pub struct ListconfigsConfigsMaxdusthtlcexposuremsat {
11267	    pub source: String,
11268	    pub value_msat: Amount,
11269	}
11270
11271	#[derive(Clone, Debug, Deserialize, Serialize)]
11272	pub struct ListconfigsConfigsMincapacitysat {
11273	    #[serde(skip_serializing_if = "Option::is_none")]
11274	    pub dynamic: Option<bool>,
11275	    pub source: String,
11276	    pub value_int: u64,
11277	}
11278
11279	#[derive(Clone, Debug, Deserialize, Serialize)]
11280	pub struct ListconfigsConfigsPidfile {
11281	    pub source: String,
11282	    pub value_str: String,
11283	}
11284
11285	#[derive(Clone, Debug, Deserialize, Serialize)]
11286	pub struct ListconfigsConfigsPlugindir {
11287	    pub sources: Vec<String>,
11288	    pub values_str: Vec<String>,
11289	}
11290
11291	#[derive(Clone, Debug, Deserialize, Serialize)]
11292	pub struct ListconfigsConfigsRequireconfirmedinputs {
11293	    pub source: String,
11294	    pub value_bool: bool,
11295	}
11296
11297	#[derive(Clone, Debug, Deserialize, Serialize)]
11298	pub struct ListconfigsConfigsRpcfile {
11299	    pub source: String,
11300	    pub value_str: String,
11301	}
11302
11303	#[derive(Clone, Debug, Deserialize, Serialize)]
11304	pub struct ListconfigsConfigsRpcfilemode {
11305	    pub source: String,
11306	    pub value_str: String,
11307	}
11308
11309	#[derive(Clone, Debug, Deserialize, Serialize)]
11310	pub struct ListconfigsConfigsTorservicepassword {
11311	    pub source: String,
11312	    pub value_str: String,
11313	}
11314
11315	#[derive(Clone, Debug, Deserialize, Serialize)]
11316	pub struct ListconfigsConfigsWatchtimeblocks {
11317	    pub source: String,
11318	    pub value_int: u32,
11319	}
11320
11321	#[derive(Clone, Debug, Deserialize, Serialize)]
11322	pub struct ListconfigsConfigsAddr {
11323	    pub sources: Vec<String>,
11324	    pub values_str: Vec<String>,
11325	}
11326
11327	#[derive(Clone, Debug, Deserialize, Serialize)]
11328	pub struct ListconfigsConfigsAlias {
11329	    pub source: String,
11330	    pub value_str: String,
11331	}
11332
11333	#[derive(Clone, Debug, Deserialize, Serialize)]
11334	pub struct ListconfigsConfigsAutolisten {
11335	    pub source: String,
11336	    pub value_bool: bool,
11337	}
11338
11339	/// ['Source of configuration setting.']
11340	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
11341	#[allow(non_camel_case_types)]
11342	pub enum ListconfigsConfigsConfSource {
11343	    #[serde(rename = "cmdline")]
11344	    CMDLINE = 0,
11345	}
11346
11347	impl TryFrom<i32> for ListconfigsConfigsConfSource {
11348	    type Error = anyhow::Error;
11349	    fn try_from(c: i32) -> Result<ListconfigsConfigsConfSource, anyhow::Error> {
11350	        match c {
11351	    0 => Ok(ListconfigsConfigsConfSource::CMDLINE),
11352	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListconfigsConfigsConfSource", o)),
11353	        }
11354	    }
11355	}
11356
11357	impl ToString for ListconfigsConfigsConfSource {
11358	    fn to_string(&self) -> String {
11359	        match self {
11360	            ListconfigsConfigsConfSource::CMDLINE => "CMDLINE",
11361	        }.to_string()
11362	    }
11363	}
11364
11365	#[derive(Clone, Debug, Deserialize, Serialize)]
11366	pub struct ListconfigsConfigsConf {
11367	    // Path `ListConfigs.configs.conf.source`
11368	    pub source: ListconfigsConfigsConfSource,
11369	    pub value_str: String,
11370	}
11371
11372	#[derive(Clone, Debug, Deserialize, Serialize)]
11373	pub struct ListconfigsConfigsDaemon {
11374	    pub set: bool,
11375	    pub source: String,
11376	}
11377
11378	#[derive(Clone, Debug, Deserialize, Serialize)]
11379	pub struct ListconfigsConfigsDeveloper {
11380	    pub set: bool,
11381	    pub source: String,
11382	}
11383
11384	#[derive(Clone, Debug, Deserialize, Serialize)]
11385	pub struct ListconfigsConfigsMainnet {
11386	    pub set: bool,
11387	    pub source: String,
11388	}
11389
11390	#[derive(Clone, Debug, Deserialize, Serialize)]
11391	pub struct ListconfigsConfigsNetwork {
11392	    pub source: String,
11393	    pub value_str: String,
11394	}
11395
11396	#[derive(Clone, Debug, Deserialize, Serialize)]
11397	pub struct ListconfigsConfigsOffline {
11398	    pub set: bool,
11399	    pub source: String,
11400	}
11401
11402	#[derive(Clone, Debug, Deserialize, Serialize)]
11403	pub struct ListconfigsConfigsPlugin {
11404	    pub sources: Vec<String>,
11405	    pub values_str: Vec<String>,
11406	}
11407
11408	#[derive(Clone, Debug, Deserialize, Serialize)]
11409	pub struct ListconfigsConfigsProxy {
11410	    pub source: String,
11411	    pub value_str: String,
11412	}
11413
11414	#[derive(Clone, Debug, Deserialize, Serialize)]
11415	pub struct ListconfigsConfigsRegtest {
11416	    pub set: bool,
11417	    pub source: String,
11418	}
11419
11420	#[derive(Clone, Debug, Deserialize, Serialize)]
11421	pub struct ListconfigsConfigsRescan {
11422	    pub source: String,
11423	    pub value_int: i64,
11424	}
11425
11426	#[derive(Clone, Debug, Deserialize, Serialize)]
11427	pub struct ListconfigsConfigsRgb {
11428	    pub source: String,
11429	    pub value_str: String,
11430	}
11431
11432	#[derive(Clone, Debug, Deserialize, Serialize)]
11433	pub struct ListconfigsConfigsSignet {
11434	    pub set: bool,
11435	    pub source: String,
11436	}
11437
11438	#[derive(Clone, Debug, Deserialize, Serialize)]
11439	pub struct ListconfigsConfigsSubdaemon {
11440	    pub sources: Vec<String>,
11441	    pub values_str: Vec<String>,
11442	}
11443
11444	#[derive(Clone, Debug, Deserialize, Serialize)]
11445	pub struct ListconfigsConfigsTestnet {
11446	    pub set: bool,
11447	    pub source: String,
11448	}
11449
11450	#[derive(Clone, Debug, Deserialize, Serialize)]
11451	pub struct ListconfigsConfigsWallet {
11452	    pub source: String,
11453	    pub value_str: String,
11454	}
11455
11456	#[derive(Clone, Debug, Deserialize, Serialize)]
11457	pub struct ListconfigsConfigs {
11458	    #[deprecated]
11459	    #[serde(rename = "experimental-splicing")]
11460	    #[serde(skip_serializing_if = "Option::is_none")]
11461	    pub experimental_splicing: Option<ListconfigsConfigsExperimentalsplicing>,
11462	    #[serde(rename = "allow-deprecated-apis")]
11463	    #[serde(skip_serializing_if = "Option::is_none")]
11464	    pub allow_deprecated_apis: Option<ListconfigsConfigsAllowdeprecatedapis>,
11465	    #[serde(rename = "always-use-proxy")]
11466	    #[serde(skip_serializing_if = "Option::is_none")]
11467	    pub always_use_proxy: Option<ListconfigsConfigsAlwaysuseproxy>,
11468	    #[serde(rename = "announce-addr")]
11469	    #[serde(skip_serializing_if = "Option::is_none")]
11470	    pub announce_addr: Option<ListconfigsConfigsAnnounceaddr>,
11471	    #[serde(rename = "announce-addr-discovered")]
11472	    #[serde(skip_serializing_if = "Option::is_none")]
11473	    pub announce_addr_discovered: Option<ListconfigsConfigsAnnounceaddrdiscovered>,
11474	    #[serde(rename = "announce-addr-discovered-port")]
11475	    #[serde(skip_serializing_if = "Option::is_none")]
11476	    pub announce_addr_discovered_port: Option<ListconfigsConfigsAnnounceaddrdiscoveredport>,
11477	    #[serde(rename = "announce-addr-dns")]
11478	    #[serde(skip_serializing_if = "Option::is_none")]
11479	    pub announce_addr_dns: Option<ListconfigsConfigsAnnounceaddrdns>,
11480	    #[serde(rename = "autoconnect-seeker-peers")]
11481	    #[serde(skip_serializing_if = "Option::is_none")]
11482	    pub autoconnect_seeker_peers: Option<ListconfigsConfigsAutoconnectseekerpeers>,
11483	    #[serde(rename = "bind-addr")]
11484	    #[serde(skip_serializing_if = "Option::is_none")]
11485	    pub bind_addr: Option<ListconfigsConfigsBindaddr>,
11486	    #[serde(rename = "clear-plugins")]
11487	    #[serde(skip_serializing_if = "Option::is_none")]
11488	    pub clear_plugins: Option<ListconfigsConfigsClearplugins>,
11489	    #[serde(rename = "cltv-delta")]
11490	    #[serde(skip_serializing_if = "Option::is_none")]
11491	    pub cltv_delta: Option<ListconfigsConfigsCltvdelta>,
11492	    #[serde(rename = "cltv-final")]
11493	    #[serde(skip_serializing_if = "Option::is_none")]
11494	    pub cltv_final: Option<ListconfigsConfigsCltvfinal>,
11495	    #[serde(rename = "commit-fee")]
11496	    #[serde(skip_serializing_if = "Option::is_none")]
11497	    pub commit_fee: Option<ListconfigsConfigsCommitfee>,
11498	    #[serde(rename = "commit-feerate-offset")]
11499	    #[serde(skip_serializing_if = "Option::is_none")]
11500	    pub commit_feerate_offset: Option<ListconfigsConfigsCommitfeerateoffset>,
11501	    #[serde(rename = "commit-time")]
11502	    #[serde(skip_serializing_if = "Option::is_none")]
11503	    pub commit_time: Option<ListconfigsConfigsCommittime>,
11504	    #[serde(rename = "currencyrate-add-source")]
11505	    #[serde(skip_serializing_if = "Option::is_none")]
11506	    pub currencyrate_add_source: Option<ListconfigsConfigsCurrencyrateaddsource>,
11507	    #[serde(rename = "currencyrate-disable-source")]
11508	    #[serde(skip_serializing_if = "Option::is_none")]
11509	    pub currencyrate_disable_source: Option<ListconfigsConfigsCurrencyratedisablesource>,
11510	    #[serde(rename = "database-upgrade")]
11511	    #[serde(skip_serializing_if = "Option::is_none")]
11512	    pub database_upgrade: Option<ListconfigsConfigsDatabaseupgrade>,
11513	    #[serde(rename = "disable-dns")]
11514	    #[serde(skip_serializing_if = "Option::is_none")]
11515	    pub disable_dns: Option<ListconfigsConfigsDisabledns>,
11516	    #[serde(rename = "disable-mpp")]
11517	    #[serde(skip_serializing_if = "Option::is_none")]
11518	    pub disable_mpp: Option<ListconfigsConfigsDisablempp>,
11519	    #[serde(rename = "disable-plugin")]
11520	    #[serde(skip_serializing_if = "Option::is_none")]
11521	    pub disable_plugin: Option<ListconfigsConfigsDisableplugin>,
11522	    #[serde(rename = "encrypted-hsm")]
11523	    #[serde(skip_serializing_if = "Option::is_none")]
11524	    pub encrypted_hsm: Option<ListconfigsConfigsEncryptedhsm>,
11525	    #[serde(rename = "experimental-anchors")]
11526	    #[serde(skip_serializing_if = "Option::is_none")]
11527	    pub experimental_anchors: Option<ListconfigsConfigsExperimentalanchors>,
11528	    #[serde(rename = "experimental-dual-fund")]
11529	    #[serde(skip_serializing_if = "Option::is_none")]
11530	    pub experimental_dual_fund: Option<ListconfigsConfigsExperimentaldualfund>,
11531	    #[serde(rename = "experimental-peer-storage")]
11532	    #[serde(skip_serializing_if = "Option::is_none")]
11533	    pub experimental_peer_storage: Option<ListconfigsConfigsExperimentalpeerstorage>,
11534	    #[serde(rename = "experimental-shutdown-wrong-funding")]
11535	    #[serde(skip_serializing_if = "Option::is_none")]
11536	    pub experimental_shutdown_wrong_funding: Option<ListconfigsConfigsExperimentalshutdownwrongfunding>,
11537	    #[serde(rename = "fee-base")]
11538	    #[serde(skip_serializing_if = "Option::is_none")]
11539	    pub fee_base: Option<ListconfigsConfigsFeebase>,
11540	    #[serde(rename = "fee-per-satoshi")]
11541	    #[serde(skip_serializing_if = "Option::is_none")]
11542	    pub fee_per_satoshi: Option<ListconfigsConfigsFeepersatoshi>,
11543	    #[serde(rename = "fetchinvoice-noconnect")]
11544	    #[serde(skip_serializing_if = "Option::is_none")]
11545	    pub fetchinvoice_noconnect: Option<ListconfigsConfigsFetchinvoicenoconnect>,
11546	    #[serde(rename = "force-feerates")]
11547	    #[serde(skip_serializing_if = "Option::is_none")]
11548	    pub force_feerates: Option<ListconfigsConfigsForcefeerates>,
11549	    #[serde(rename = "funding-confirms")]
11550	    #[serde(skip_serializing_if = "Option::is_none")]
11551	    pub funding_confirms: Option<ListconfigsConfigsFundingconfirms>,
11552	    #[serde(rename = "htlc-maximum-msat")]
11553	    #[serde(skip_serializing_if = "Option::is_none")]
11554	    pub htlc_maximum_msat: Option<ListconfigsConfigsHtlcmaximummsat>,
11555	    #[serde(rename = "htlc-minimum-msat")]
11556	    #[serde(skip_serializing_if = "Option::is_none")]
11557	    pub htlc_minimum_msat: Option<ListconfigsConfigsHtlcminimummsat>,
11558	    #[serde(rename = "ignore-fee-limits")]
11559	    #[serde(skip_serializing_if = "Option::is_none")]
11560	    pub ignore_fee_limits: Option<ListconfigsConfigsIgnorefeelimits>,
11561	    #[serde(rename = "important-plugin")]
11562	    #[serde(skip_serializing_if = "Option::is_none")]
11563	    pub important_plugin: Option<ListconfigsConfigsImportantplugin>,
11564	    #[serde(rename = "large-channels")]
11565	    #[serde(skip_serializing_if = "Option::is_none")]
11566	    pub large_channels: Option<ListconfigsConfigsLargechannels>,
11567	    #[serde(rename = "lightning-dir")]
11568	    #[serde(skip_serializing_if = "Option::is_none")]
11569	    pub lightning_dir: Option<ListconfigsConfigsLightningdir>,
11570	    #[serde(rename = "log-file")]
11571	    #[serde(skip_serializing_if = "Option::is_none")]
11572	    pub log_file: Option<ListconfigsConfigsLogfile>,
11573	    #[serde(rename = "log-level")]
11574	    #[serde(skip_serializing_if = "Option::is_none")]
11575	    pub log_level: Option<ListconfigsConfigsLoglevel>,
11576	    #[serde(rename = "log-prefix")]
11577	    #[serde(skip_serializing_if = "Option::is_none")]
11578	    pub log_prefix: Option<ListconfigsConfigsLogprefix>,
11579	    #[serde(rename = "log-timestamps")]
11580	    #[serde(skip_serializing_if = "Option::is_none")]
11581	    pub log_timestamps: Option<ListconfigsConfigsLogtimestamps>,
11582	    #[serde(rename = "max-concurrent-htlcs")]
11583	    #[serde(skip_serializing_if = "Option::is_none")]
11584	    pub max_concurrent_htlcs: Option<ListconfigsConfigsMaxconcurrenthtlcs>,
11585	    #[serde(rename = "max-dust-htlc-exposure-msat")]
11586	    #[serde(skip_serializing_if = "Option::is_none")]
11587	    pub max_dust_htlc_exposure_msat: Option<ListconfigsConfigsMaxdusthtlcexposuremsat>,
11588	    #[serde(rename = "min-capacity-sat")]
11589	    #[serde(skip_serializing_if = "Option::is_none")]
11590	    pub min_capacity_sat: Option<ListconfigsConfigsMincapacitysat>,
11591	    #[serde(rename = "pid-file")]
11592	    #[serde(skip_serializing_if = "Option::is_none")]
11593	    pub pid_file: Option<ListconfigsConfigsPidfile>,
11594	    #[serde(rename = "plugin-dir")]
11595	    #[serde(skip_serializing_if = "Option::is_none")]
11596	    pub plugin_dir: Option<ListconfigsConfigsPlugindir>,
11597	    #[serde(rename = "require-confirmed-inputs")]
11598	    #[serde(skip_serializing_if = "Option::is_none")]
11599	    pub require_confirmed_inputs: Option<ListconfigsConfigsRequireconfirmedinputs>,
11600	    #[serde(rename = "rpc-file")]
11601	    #[serde(skip_serializing_if = "Option::is_none")]
11602	    pub rpc_file: Option<ListconfigsConfigsRpcfile>,
11603	    #[serde(rename = "rpc-file-mode")]
11604	    #[serde(skip_serializing_if = "Option::is_none")]
11605	    pub rpc_file_mode: Option<ListconfigsConfigsRpcfilemode>,
11606	    #[serde(rename = "tor-service-password")]
11607	    #[serde(skip_serializing_if = "Option::is_none")]
11608	    pub tor_service_password: Option<ListconfigsConfigsTorservicepassword>,
11609	    #[serde(rename = "watchtime-blocks")]
11610	    #[serde(skip_serializing_if = "Option::is_none")]
11611	    pub watchtime_blocks: Option<ListconfigsConfigsWatchtimeblocks>,
11612	    #[serde(skip_serializing_if = "Option::is_none")]
11613	    pub addr: Option<ListconfigsConfigsAddr>,
11614	    #[serde(skip_serializing_if = "Option::is_none")]
11615	    pub alias: Option<ListconfigsConfigsAlias>,
11616	    #[serde(skip_serializing_if = "Option::is_none")]
11617	    pub autolisten: Option<ListconfigsConfigsAutolisten>,
11618	    #[serde(skip_serializing_if = "Option::is_none")]
11619	    pub conf: Option<ListconfigsConfigsConf>,
11620	    #[serde(skip_serializing_if = "Option::is_none")]
11621	    pub daemon: Option<ListconfigsConfigsDaemon>,
11622	    #[serde(skip_serializing_if = "Option::is_none")]
11623	    pub developer: Option<ListconfigsConfigsDeveloper>,
11624	    #[serde(skip_serializing_if = "Option::is_none")]
11625	    pub mainnet: Option<ListconfigsConfigsMainnet>,
11626	    #[serde(skip_serializing_if = "Option::is_none")]
11627	    pub network: Option<ListconfigsConfigsNetwork>,
11628	    #[serde(skip_serializing_if = "Option::is_none")]
11629	    pub offline: Option<ListconfigsConfigsOffline>,
11630	    #[serde(skip_serializing_if = "Option::is_none")]
11631	    pub plugin: Option<ListconfigsConfigsPlugin>,
11632	    #[serde(skip_serializing_if = "Option::is_none")]
11633	    pub proxy: Option<ListconfigsConfigsProxy>,
11634	    #[serde(skip_serializing_if = "Option::is_none")]
11635	    pub regtest: Option<ListconfigsConfigsRegtest>,
11636	    #[serde(skip_serializing_if = "Option::is_none")]
11637	    pub rescan: Option<ListconfigsConfigsRescan>,
11638	    #[serde(skip_serializing_if = "Option::is_none")]
11639	    pub rgb: Option<ListconfigsConfigsRgb>,
11640	    #[serde(skip_serializing_if = "Option::is_none")]
11641	    pub signet: Option<ListconfigsConfigsSignet>,
11642	    #[serde(skip_serializing_if = "Option::is_none")]
11643	    pub subdaemon: Option<ListconfigsConfigsSubdaemon>,
11644	    #[serde(skip_serializing_if = "Option::is_none")]
11645	    pub testnet: Option<ListconfigsConfigsTestnet>,
11646	    #[serde(skip_serializing_if = "Option::is_none")]
11647	    pub wallet: Option<ListconfigsConfigsWallet>,
11648	}
11649
11650	#[derive(Clone, Debug, Deserialize, Serialize)]
11651	pub struct ListconfigsResponse {
11652	    #[serde(skip_serializing_if = "Option::is_none")]
11653	    pub configs: Option<ListconfigsConfigs>,
11654	}
11655
11656	impl TryFrom<Response> for ListconfigsResponse {
11657	    type Error = super::TryFromResponseError;
11658
11659	    fn try_from(response: Response) -> Result<Self, Self::Error> {
11660	        match response {
11661	            Response::ListConfigs(response) => Ok(response),
11662	            _ => Err(TryFromResponseError)
11663	        }
11664	    }
11665	}
11666
11667	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
11668	#[allow(non_camel_case_types)]
11669	pub enum StopResult {
11670	    #[serde(rename = "Shutdown complete")]
11671	    SHUTDOWN_COMPLETE = 0,
11672	}
11673
11674	impl TryFrom<i32> for StopResult {
11675	    type Error = anyhow::Error;
11676	    fn try_from(c: i32) -> Result<StopResult, anyhow::Error> {
11677	        match c {
11678	    0 => Ok(StopResult::SHUTDOWN_COMPLETE),
11679	            o => Err(anyhow::anyhow!("Unknown variant {} for enum StopResult", o)),
11680	        }
11681	    }
11682	}
11683
11684	impl ToString for StopResult {
11685	    fn to_string(&self) -> String {
11686	        match self {
11687	            StopResult::SHUTDOWN_COMPLETE => "SHUTDOWN_COMPLETE",
11688	        }.to_string()
11689	    }
11690	}
11691
11692	#[derive(Clone, Debug, Deserialize, Serialize)]
11693	pub struct StopResponse {
11694	    // Path `Stop.result`
11695	    pub result: StopResult,
11696	}
11697
11698	impl TryFrom<Response> for StopResponse {
11699	    type Error = super::TryFromResponseError;
11700
11701	    fn try_from(response: Response) -> Result<Self, Self::Error> {
11702	        match response {
11703	            Response::Stop(response) => Ok(response),
11704	            _ => Err(TryFromResponseError)
11705	        }
11706	    }
11707	}
11708
11709	/// ['Prints the help in human-readable flat form.']
11710	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
11711	#[allow(non_camel_case_types)]
11712	pub enum HelpFormathint {
11713	    #[serde(rename = "simple")]
11714	    SIMPLE = 0,
11715	}
11716
11717	impl TryFrom<i32> for HelpFormathint {
11718	    type Error = anyhow::Error;
11719	    fn try_from(c: i32) -> Result<HelpFormathint, anyhow::Error> {
11720	        match c {
11721	    0 => Ok(HelpFormathint::SIMPLE),
11722	            o => Err(anyhow::anyhow!("Unknown variant {} for enum HelpFormathint", o)),
11723	        }
11724	    }
11725	}
11726
11727	impl ToString for HelpFormathint {
11728	    fn to_string(&self) -> String {
11729	        match self {
11730	            HelpFormathint::SIMPLE => "SIMPLE",
11731	        }.to_string()
11732	    }
11733	}
11734
11735	#[derive(Clone, Debug, Deserialize, Serialize)]
11736	pub struct HelpHelp {
11737	    pub command: String,
11738	}
11739
11740	#[derive(Clone, Debug, Deserialize, Serialize)]
11741	pub struct HelpResponse {
11742	    #[serde(skip_serializing_if = "Option::is_none")]
11743	    pub format_hint: Option<HelpFormathint>,
11744	    pub help: Vec<HelpHelp>,
11745	}
11746
11747	impl TryFrom<Response> for HelpResponse {
11748	    type Error = super::TryFromResponseError;
11749
11750	    fn try_from(response: Response) -> Result<Self, Self::Error> {
11751	        match response {
11752	            Response::Help(response) => Ok(response),
11753	            _ => Err(TryFromResponseError)
11754	        }
11755	    }
11756	}
11757
11758	#[derive(Clone, Debug, Deserialize, Serialize)]
11759	pub struct PreapprovekeysendResponse {
11760	}
11761
11762	impl TryFrom<Response> for PreapprovekeysendResponse {
11763	    type Error = super::TryFromResponseError;
11764
11765	    fn try_from(response: Response) -> Result<Self, Self::Error> {
11766	        match response {
11767	            Response::PreApproveKeysend(response) => Ok(response),
11768	            _ => Err(TryFromResponseError)
11769	        }
11770	    }
11771	}
11772
11773	#[derive(Clone, Debug, Deserialize, Serialize)]
11774	pub struct PreapproveinvoiceResponse {
11775	}
11776
11777	impl TryFrom<Response> for PreapproveinvoiceResponse {
11778	    type Error = super::TryFromResponseError;
11779
11780	    fn try_from(response: Response) -> Result<Self, Self::Error> {
11781	        match response {
11782	            Response::PreApproveInvoice(response) => Ok(response),
11783	            _ => Err(TryFromResponseError)
11784	        }
11785	    }
11786	}
11787
11788	#[derive(Clone, Debug, Deserialize, Serialize)]
11789	pub struct StaticbackupResponse {
11790	    pub scb: Vec<String>,
11791	}
11792
11793	impl TryFrom<Response> for StaticbackupResponse {
11794	    type Error = super::TryFromResponseError;
11795
11796	    fn try_from(response: Response) -> Result<Self, Self::Error> {
11797	        match response {
11798	            Response::StaticBackup(response) => Ok(response),
11799	            _ => Err(TryFromResponseError)
11800	        }
11801	    }
11802	}
11803
11804	#[derive(Clone, Debug, Deserialize, Serialize)]
11805	pub struct BkprchannelsapyChannelsApy {
11806	    #[serde(skip_serializing_if = "Option::is_none")]
11807	    pub apy_in_initial: Option<String>,
11808	    #[serde(skip_serializing_if = "Option::is_none")]
11809	    pub apy_lease: Option<String>,
11810	    #[serde(skip_serializing_if = "Option::is_none")]
11811	    pub apy_out_initial: Option<String>,
11812	    #[serde(skip_serializing_if = "Option::is_none")]
11813	    pub apy_total_initial: Option<String>,
11814	    #[serde(skip_serializing_if = "Option::is_none")]
11815	    pub fees_in_msat: Option<Amount>,
11816	    #[serde(skip_serializing_if = "Option::is_none")]
11817	    pub utilization_in_initial: Option<String>,
11818	    #[serde(skip_serializing_if = "Option::is_none")]
11819	    pub utilization_out_initial: Option<String>,
11820	    pub account: String,
11821	    pub apy_in: String,
11822	    pub apy_out: String,
11823	    pub apy_total: String,
11824	    pub channel_start_balance_msat: Amount,
11825	    pub fees_out_msat: Amount,
11826	    pub lease_fee_earned_msat: Amount,
11827	    pub lease_fee_paid_msat: Amount,
11828	    pub our_start_balance_msat: Amount,
11829	    pub pushed_in_msat: Amount,
11830	    pub pushed_out_msat: Amount,
11831	    pub routed_in_msat: Amount,
11832	    pub routed_out_msat: Amount,
11833	    pub utilization_in: String,
11834	    pub utilization_out: String,
11835	}
11836
11837	#[derive(Clone, Debug, Deserialize, Serialize)]
11838	pub struct BkprchannelsapyResponse {
11839	    pub channels_apy: Vec<BkprchannelsapyChannelsApy>,
11840	}
11841
11842	impl TryFrom<Response> for BkprchannelsapyResponse {
11843	    type Error = super::TryFromResponseError;
11844
11845	    fn try_from(response: Response) -> Result<Self, Self::Error> {
11846	        match response {
11847	            Response::BkprChannelsApy(response) => Ok(response),
11848	            _ => Err(TryFromResponseError)
11849	        }
11850	    }
11851	}
11852
11853	/// ['Format to print csv as.']
11854	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
11855	#[allow(non_camel_case_types)]
11856	pub enum BkprdumpincomecsvCsvFormat {
11857	    #[serde(rename = "cointracker")]
11858	    COINTRACKER = 0,
11859	    #[serde(rename = "koinly")]
11860	    KOINLY = 1,
11861	    #[serde(rename = "harmony")]
11862	    HARMONY = 2,
11863	    #[serde(rename = "quickbooks")]
11864	    QUICKBOOKS = 3,
11865	}
11866
11867	impl TryFrom<i32> for BkprdumpincomecsvCsvFormat {
11868	    type Error = anyhow::Error;
11869	    fn try_from(c: i32) -> Result<BkprdumpincomecsvCsvFormat, anyhow::Error> {
11870	        match c {
11871	    0 => Ok(BkprdumpincomecsvCsvFormat::COINTRACKER),
11872	    1 => Ok(BkprdumpincomecsvCsvFormat::KOINLY),
11873	    2 => Ok(BkprdumpincomecsvCsvFormat::HARMONY),
11874	    3 => Ok(BkprdumpincomecsvCsvFormat::QUICKBOOKS),
11875	            o => Err(anyhow::anyhow!("Unknown variant {} for enum BkprdumpincomecsvCsvFormat", o)),
11876	        }
11877	    }
11878	}
11879
11880	impl ToString for BkprdumpincomecsvCsvFormat {
11881	    fn to_string(&self) -> String {
11882	        match self {
11883	            BkprdumpincomecsvCsvFormat::COINTRACKER => "COINTRACKER",
11884	            BkprdumpincomecsvCsvFormat::KOINLY => "KOINLY",
11885	            BkprdumpincomecsvCsvFormat::HARMONY => "HARMONY",
11886	            BkprdumpincomecsvCsvFormat::QUICKBOOKS => "QUICKBOOKS",
11887	        }.to_string()
11888	    }
11889	}
11890
11891	#[derive(Clone, Debug, Deserialize, Serialize)]
11892	pub struct BkprdumpincomecsvResponse {
11893	    // Path `Bkpr-DumpIncomeCsv.csv_format`
11894	    pub csv_format: BkprdumpincomecsvCsvFormat,
11895	    pub csv_file: String,
11896	}
11897
11898	impl TryFrom<Response> for BkprdumpincomecsvResponse {
11899	    type Error = super::TryFromResponseError;
11900
11901	    fn try_from(response: Response) -> Result<Self, Self::Error> {
11902	        match response {
11903	            Response::BkprDumpIncomeCsv(response) => Ok(response),
11904	            _ => Err(TryFromResponseError)
11905	        }
11906	    }
11907	}
11908
11909	#[derive(Clone, Debug, Deserialize, Serialize)]
11910	pub struct BkprinspectTxsOutputs {
11911	    #[serde(skip_serializing_if = "Option::is_none")]
11912	    pub credit_msat: Option<Amount>,
11913	    #[serde(skip_serializing_if = "Option::is_none")]
11914	    pub debit_msat: Option<Amount>,
11915	    #[serde(skip_serializing_if = "Option::is_none")]
11916	    pub originating_account: Option<String>,
11917	    #[serde(skip_serializing_if = "Option::is_none")]
11918	    pub output_tag: Option<String>,
11919	    #[serde(skip_serializing_if = "Option::is_none")]
11920	    pub payment_id: Option<String>,
11921	    #[serde(skip_serializing_if = "Option::is_none")]
11922	    pub spend_tag: Option<String>,
11923	    #[serde(skip_serializing_if = "Option::is_none")]
11924	    pub spending_txid: Option<String>,
11925	    pub account: String,
11926	    pub currency: String,
11927	    pub outnum: u32,
11928	    pub output_value_msat: Amount,
11929	}
11930
11931	#[derive(Clone, Debug, Deserialize, Serialize)]
11932	pub struct BkprinspectTxs {
11933	    #[serde(skip_serializing_if = "Option::is_none")]
11934	    pub blockheight: Option<u32>,
11935	    pub fees_paid_msat: Amount,
11936	    pub outputs: Vec<BkprinspectTxsOutputs>,
11937	    pub txid: String,
11938	}
11939
11940	#[derive(Clone, Debug, Deserialize, Serialize)]
11941	pub struct BkprinspectResponse {
11942	    pub txs: Vec<BkprinspectTxs>,
11943	}
11944
11945	impl TryFrom<Response> for BkprinspectResponse {
11946	    type Error = super::TryFromResponseError;
11947
11948	    fn try_from(response: Response) -> Result<Self, Self::Error> {
11949	        match response {
11950	            Response::BkprInspect(response) => Ok(response),
11951	            _ => Err(TryFromResponseError)
11952	        }
11953	    }
11954	}
11955
11956	/// ['Coin movement type.']
11957	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
11958	#[allow(non_camel_case_types)]
11959	pub enum BkprlistaccounteventsEventsType {
11960	    #[serde(rename = "onchain_fee")]
11961	    ONCHAIN_FEE = 0,
11962	    #[serde(rename = "chain")]
11963	    CHAIN = 1,
11964	    #[serde(rename = "channel")]
11965	    CHANNEL = 2,
11966	}
11967
11968	impl TryFrom<i32> for BkprlistaccounteventsEventsType {
11969	    type Error = anyhow::Error;
11970	    fn try_from(c: i32) -> Result<BkprlistaccounteventsEventsType, anyhow::Error> {
11971	        match c {
11972	    0 => Ok(BkprlistaccounteventsEventsType::ONCHAIN_FEE),
11973	    1 => Ok(BkprlistaccounteventsEventsType::CHAIN),
11974	    2 => Ok(BkprlistaccounteventsEventsType::CHANNEL),
11975	            o => Err(anyhow::anyhow!("Unknown variant {} for enum BkprlistaccounteventsEventsType", o)),
11976	        }
11977	    }
11978	}
11979
11980	impl ToString for BkprlistaccounteventsEventsType {
11981	    fn to_string(&self) -> String {
11982	        match self {
11983	            BkprlistaccounteventsEventsType::ONCHAIN_FEE => "ONCHAIN_FEE",
11984	            BkprlistaccounteventsEventsType::CHAIN => "CHAIN",
11985	            BkprlistaccounteventsEventsType::CHANNEL => "CHANNEL",
11986	        }.to_string()
11987	    }
11988	}
11989
11990	#[derive(Clone, Debug, Deserialize, Serialize)]
11991	pub struct BkprlistaccounteventsEvents {
11992	    #[serde(skip_serializing_if = "Option::is_none")]
11993	    pub blockheight: Option<u32>,
11994	    #[serde(skip_serializing_if = "Option::is_none")]
11995	    pub currencyrate: Option<f64>,
11996	    #[serde(skip_serializing_if = "Option::is_none")]
11997	    pub description: Option<String>,
11998	    #[serde(skip_serializing_if = "Option::is_none")]
11999	    pub fees_msat: Option<Amount>,
12000	    #[serde(skip_serializing_if = "Option::is_none")]
12001	    pub is_rebalance: Option<bool>,
12002	    #[serde(skip_serializing_if = "Option::is_none")]
12003	    pub origin: Option<String>,
12004	    #[serde(skip_serializing_if = "Option::is_none")]
12005	    pub outpoint: Option<String>,
12006	    #[serde(skip_serializing_if = "Option::is_none")]
12007	    pub part_id: Option<u32>,
12008	    #[serde(skip_serializing_if = "Option::is_none")]
12009	    pub payment_id: Option<String>,
12010	    #[serde(skip_serializing_if = "Option::is_none")]
12011	    pub txid: Option<String>,
12012	    // Path `Bkpr-ListAccountEvents.events[].type`
12013	    #[serde(rename = "type")]
12014	    pub item_type: BkprlistaccounteventsEventsType,
12015	    pub account: String,
12016	    pub credit_msat: Amount,
12017	    pub currency: String,
12018	    pub debit_msat: Amount,
12019	    pub tag: String,
12020	    pub timestamp: u32,
12021	}
12022
12023	#[derive(Clone, Debug, Deserialize, Serialize)]
12024	pub struct BkprlistaccounteventsResponse {
12025	    pub events: Vec<BkprlistaccounteventsEvents>,
12026	}
12027
12028	impl TryFrom<Response> for BkprlistaccounteventsResponse {
12029	    type Error = super::TryFromResponseError;
12030
12031	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12032	        match response {
12033	            Response::BkprListAccountEvents(response) => Ok(response),
12034	            _ => Err(TryFromResponseError)
12035	        }
12036	    }
12037	}
12038
12039	#[derive(Clone, Debug, Deserialize, Serialize)]
12040	pub struct BkprlistbalancesAccountsBalances {
12041	    pub balance_msat: Amount,
12042	    pub coin_type: String,
12043	}
12044
12045	#[derive(Clone, Debug, Deserialize, Serialize)]
12046	pub struct BkprlistbalancesAccounts {
12047	    #[serde(skip_serializing_if = "Option::is_none")]
12048	    pub account_closed: Option<bool>,
12049	    #[serde(skip_serializing_if = "Option::is_none")]
12050	    pub account_resolved: Option<bool>,
12051	    #[serde(skip_serializing_if = "Option::is_none")]
12052	    pub peer_id: Option<PublicKey>,
12053	    #[serde(skip_serializing_if = "Option::is_none")]
12054	    pub resolved_at_block: Option<u32>,
12055	    #[serde(skip_serializing_if = "Option::is_none")]
12056	    pub we_opened: Option<bool>,
12057	    pub account: String,
12058	    pub balances: Vec<BkprlistbalancesAccountsBalances>,
12059	}
12060
12061	#[derive(Clone, Debug, Deserialize, Serialize)]
12062	pub struct BkprlistbalancesResponse {
12063	    pub accounts: Vec<BkprlistbalancesAccounts>,
12064	}
12065
12066	impl TryFrom<Response> for BkprlistbalancesResponse {
12067	    type Error = super::TryFromResponseError;
12068
12069	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12070	        match response {
12071	            Response::BkprListBalances(response) => Ok(response),
12072	            _ => Err(TryFromResponseError)
12073	        }
12074	    }
12075	}
12076
12077	#[derive(Clone, Debug, Deserialize, Serialize)]
12078	pub struct BkprlistincomeIncomeEvents {
12079	    #[serde(skip_serializing_if = "Option::is_none")]
12080	    pub description: Option<String>,
12081	    #[serde(skip_serializing_if = "Option::is_none")]
12082	    pub outpoint: Option<String>,
12083	    #[serde(skip_serializing_if = "Option::is_none")]
12084	    pub payment_id: Option<String>,
12085	    #[serde(skip_serializing_if = "Option::is_none")]
12086	    pub txid: Option<String>,
12087	    pub account: String,
12088	    pub credit_msat: Amount,
12089	    pub currency: String,
12090	    pub debit_msat: Amount,
12091	    pub tag: String,
12092	    pub timestamp: u32,
12093	}
12094
12095	#[derive(Clone, Debug, Deserialize, Serialize)]
12096	pub struct BkprlistincomeResponse {
12097	    pub income_events: Vec<BkprlistincomeIncomeEvents>,
12098	}
12099
12100	impl TryFrom<Response> for BkprlistincomeResponse {
12101	    type Error = super::TryFromResponseError;
12102
12103	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12104	        match response {
12105	            Response::BkprListIncome(response) => Ok(response),
12106	            _ => Err(TryFromResponseError)
12107	        }
12108	    }
12109	}
12110
12111	/// ['Coin movement type.']
12112	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
12113	#[allow(non_camel_case_types)]
12114	pub enum BkpreditdescriptionbypaymentidUpdatedType {
12115	    #[serde(rename = "chain")]
12116	    CHAIN = 0,
12117	    #[serde(rename = "channel")]
12118	    CHANNEL = 1,
12119	}
12120
12121	impl TryFrom<i32> for BkpreditdescriptionbypaymentidUpdatedType {
12122	    type Error = anyhow::Error;
12123	    fn try_from(c: i32) -> Result<BkpreditdescriptionbypaymentidUpdatedType, anyhow::Error> {
12124	        match c {
12125	    0 => Ok(BkpreditdescriptionbypaymentidUpdatedType::CHAIN),
12126	    1 => Ok(BkpreditdescriptionbypaymentidUpdatedType::CHANNEL),
12127	            o => Err(anyhow::anyhow!("Unknown variant {} for enum BkpreditdescriptionbypaymentidUpdatedType", o)),
12128	        }
12129	    }
12130	}
12131
12132	impl ToString for BkpreditdescriptionbypaymentidUpdatedType {
12133	    fn to_string(&self) -> String {
12134	        match self {
12135	            BkpreditdescriptionbypaymentidUpdatedType::CHAIN => "CHAIN",
12136	            BkpreditdescriptionbypaymentidUpdatedType::CHANNEL => "CHANNEL",
12137	        }.to_string()
12138	    }
12139	}
12140
12141	#[derive(Clone, Debug, Deserialize, Serialize)]
12142	pub struct BkpreditdescriptionbypaymentidUpdated {
12143	    #[serde(skip_serializing_if = "Option::is_none")]
12144	    pub blockheight: Option<u32>,
12145	    #[serde(skip_serializing_if = "Option::is_none")]
12146	    pub fees_msat: Option<Amount>,
12147	    #[serde(skip_serializing_if = "Option::is_none")]
12148	    pub is_rebalance: Option<bool>,
12149	    #[serde(skip_serializing_if = "Option::is_none")]
12150	    pub origin: Option<String>,
12151	    #[serde(skip_serializing_if = "Option::is_none")]
12152	    pub outpoint: Option<String>,
12153	    #[serde(skip_serializing_if = "Option::is_none")]
12154	    pub part_id: Option<u32>,
12155	    #[serde(skip_serializing_if = "Option::is_none")]
12156	    pub payment_id: Option<String>,
12157	    #[serde(skip_serializing_if = "Option::is_none")]
12158	    pub txid: Option<String>,
12159	    // Path `Bkpr-EditDescriptionByPaymentId.updated[].type`
12160	    #[serde(rename = "type")]
12161	    pub item_type: BkpreditdescriptionbypaymentidUpdatedType,
12162	    pub account: String,
12163	    pub credit_msat: Amount,
12164	    pub currency: String,
12165	    pub debit_msat: Amount,
12166	    pub description: String,
12167	    pub tag: String,
12168	    pub timestamp: u32,
12169	}
12170
12171	#[derive(Clone, Debug, Deserialize, Serialize)]
12172	pub struct BkpreditdescriptionbypaymentidResponse {
12173	    pub updated: Vec<BkpreditdescriptionbypaymentidUpdated>,
12174	}
12175
12176	impl TryFrom<Response> for BkpreditdescriptionbypaymentidResponse {
12177	    type Error = super::TryFromResponseError;
12178
12179	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12180	        match response {
12181	            Response::BkprEditDescriptionByPaymentId(response) => Ok(response),
12182	            _ => Err(TryFromResponseError)
12183	        }
12184	    }
12185	}
12186
12187	/// ['Coin movement type.']
12188	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
12189	#[allow(non_camel_case_types)]
12190	pub enum BkpreditdescriptionbyoutpointUpdatedType {
12191	    #[serde(rename = "chain")]
12192	    CHAIN = 0,
12193	    #[serde(rename = "channel")]
12194	    CHANNEL = 1,
12195	}
12196
12197	impl TryFrom<i32> for BkpreditdescriptionbyoutpointUpdatedType {
12198	    type Error = anyhow::Error;
12199	    fn try_from(c: i32) -> Result<BkpreditdescriptionbyoutpointUpdatedType, anyhow::Error> {
12200	        match c {
12201	    0 => Ok(BkpreditdescriptionbyoutpointUpdatedType::CHAIN),
12202	    1 => Ok(BkpreditdescriptionbyoutpointUpdatedType::CHANNEL),
12203	            o => Err(anyhow::anyhow!("Unknown variant {} for enum BkpreditdescriptionbyoutpointUpdatedType", o)),
12204	        }
12205	    }
12206	}
12207
12208	impl ToString for BkpreditdescriptionbyoutpointUpdatedType {
12209	    fn to_string(&self) -> String {
12210	        match self {
12211	            BkpreditdescriptionbyoutpointUpdatedType::CHAIN => "CHAIN",
12212	            BkpreditdescriptionbyoutpointUpdatedType::CHANNEL => "CHANNEL",
12213	        }.to_string()
12214	    }
12215	}
12216
12217	#[derive(Clone, Debug, Deserialize, Serialize)]
12218	pub struct BkpreditdescriptionbyoutpointUpdated {
12219	    #[serde(skip_serializing_if = "Option::is_none")]
12220	    pub blockheight: Option<u32>,
12221	    #[serde(skip_serializing_if = "Option::is_none")]
12222	    pub fees_msat: Option<Amount>,
12223	    #[serde(skip_serializing_if = "Option::is_none")]
12224	    pub is_rebalance: Option<bool>,
12225	    #[serde(skip_serializing_if = "Option::is_none")]
12226	    pub origin: Option<String>,
12227	    #[serde(skip_serializing_if = "Option::is_none")]
12228	    pub outpoint: Option<String>,
12229	    #[serde(skip_serializing_if = "Option::is_none")]
12230	    pub part_id: Option<u32>,
12231	    #[serde(skip_serializing_if = "Option::is_none")]
12232	    pub payment_id: Option<String>,
12233	    #[serde(skip_serializing_if = "Option::is_none")]
12234	    pub txid: Option<String>,
12235	    // Path `Bkpr-EditDescriptionByOutpoint.updated[].type`
12236	    #[serde(rename = "type")]
12237	    pub item_type: BkpreditdescriptionbyoutpointUpdatedType,
12238	    pub account: String,
12239	    pub credit_msat: Amount,
12240	    pub currency: String,
12241	    pub debit_msat: Amount,
12242	    pub description: String,
12243	    pub tag: String,
12244	    pub timestamp: u32,
12245	}
12246
12247	#[derive(Clone, Debug, Deserialize, Serialize)]
12248	pub struct BkpreditdescriptionbyoutpointResponse {
12249	    pub updated: Vec<BkpreditdescriptionbyoutpointUpdated>,
12250	}
12251
12252	impl TryFrom<Response> for BkpreditdescriptionbyoutpointResponse {
12253	    type Error = super::TryFromResponseError;
12254
12255	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12256	        match response {
12257	            Response::BkprEditDescriptionByOutpoint(response) => Ok(response),
12258	            _ => Err(TryFromResponseError)
12259	        }
12260	    }
12261	}
12262
12263	#[derive(Clone, Debug, Deserialize, Serialize)]
12264	pub struct BkprreportResponse {
12265	    pub report: Vec<String>,
12266	}
12267
12268	impl TryFrom<Response> for BkprreportResponse {
12269	    type Error = super::TryFromResponseError;
12270
12271	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12272	        match response {
12273	            Response::BkprReport(response) => Ok(response),
12274	            _ => Err(TryFromResponseError)
12275	        }
12276	    }
12277	}
12278
12279	#[derive(Clone, Debug, Deserialize, Serialize)]
12280	pub struct BlacklistruneBlacklist {
12281	    pub end: u64,
12282	    pub start: u64,
12283	}
12284
12285	#[derive(Clone, Debug, Deserialize, Serialize)]
12286	pub struct BlacklistruneResponse {
12287	    pub blacklist: Vec<BlacklistruneBlacklist>,
12288	}
12289
12290	impl TryFrom<Response> for BlacklistruneResponse {
12291	    type Error = super::TryFromResponseError;
12292
12293	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12294	        match response {
12295	            Response::BlacklistRune(response) => Ok(response),
12296	            _ => Err(TryFromResponseError)
12297	        }
12298	    }
12299	}
12300
12301	#[derive(Clone, Debug, Deserialize, Serialize)]
12302	pub struct CheckruneResponse {
12303	    pub valid: bool,
12304	}
12305
12306	impl TryFrom<Response> for CheckruneResponse {
12307	    type Error = super::TryFromResponseError;
12308
12309	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12310	        match response {
12311	            Response::CheckRune(response) => Ok(response),
12312	            _ => Err(TryFromResponseError)
12313	        }
12314	    }
12315	}
12316
12317	#[derive(Clone, Debug, Deserialize, Serialize)]
12318	pub struct CreateruneResponse {
12319	    #[serde(skip_serializing_if = "Option::is_none")]
12320	    pub warning_unrestricted_rune: Option<String>,
12321	    pub rune: String,
12322	    pub unique_id: String,
12323	}
12324
12325	impl TryFrom<Response> for CreateruneResponse {
12326	    type Error = super::TryFromResponseError;
12327
12328	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12329	        match response {
12330	            Response::CreateRune(response) => Ok(response),
12331	            _ => Err(TryFromResponseError)
12332	        }
12333	    }
12334	}
12335
12336	#[derive(Clone, Debug, Deserialize, Serialize)]
12337	pub struct ShowrunesRunesRestrictionsAlternatives {
12338	    pub condition: String,
12339	    pub english: String,
12340	    pub fieldname: String,
12341	    pub value: String,
12342	}
12343
12344	#[derive(Clone, Debug, Deserialize, Serialize)]
12345	pub struct ShowrunesRunesRestrictions {
12346	    pub alternatives: Vec<ShowrunesRunesRestrictionsAlternatives>,
12347	    pub english: String,
12348	}
12349
12350	#[derive(Clone, Debug, Deserialize, Serialize)]
12351	pub struct ShowrunesRunes {
12352	    #[serde(skip_serializing_if = "Option::is_none")]
12353	    pub blacklisted: Option<bool>,
12354	    #[serde(skip_serializing_if = "Option::is_none")]
12355	    pub last_used: Option<f64>,
12356	    #[serde(skip_serializing_if = "Option::is_none")]
12357	    pub our_rune: Option<bool>,
12358	    #[serde(skip_serializing_if = "Option::is_none")]
12359	    pub stored: Option<bool>,
12360	    pub restrictions: Vec<ShowrunesRunesRestrictions>,
12361	    pub restrictions_as_english: String,
12362	    pub rune: String,
12363	    pub unique_id: String,
12364	}
12365
12366	#[derive(Clone, Debug, Deserialize, Serialize)]
12367	pub struct ShowrunesResponse {
12368	    pub runes: Vec<ShowrunesRunes>,
12369	}
12370
12371	impl TryFrom<Response> for ShowrunesResponse {
12372	    type Error = super::TryFromResponseError;
12373
12374	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12375	        match response {
12376	            Response::ShowRunes(response) => Ok(response),
12377	            _ => Err(TryFromResponseError)
12378	        }
12379	    }
12380	}
12381
12382	#[derive(Clone, Debug, Deserialize, Serialize)]
12383	pub struct AskreneunreserveResponse {
12384	}
12385
12386	impl TryFrom<Response> for AskreneunreserveResponse {
12387	    type Error = super::TryFromResponseError;
12388
12389	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12390	        match response {
12391	            Response::AskReneUnreserve(response) => Ok(response),
12392	            _ => Err(TryFromResponseError)
12393	        }
12394	    }
12395	}
12396
12397	#[derive(Clone, Debug, Deserialize, Serialize)]
12398	pub struct AskrenelistlayersLayersBiases {
12399	    #[serde(skip_serializing_if = "Option::is_none")]
12400	    pub description: Option<String>,
12401	    #[serde(skip_serializing_if = "Option::is_none")]
12402	    pub timestamp: Option<u64>,
12403	    pub bias: i64,
12404	    pub short_channel_id_dir: ShortChannelIdDir,
12405	}
12406
12407	#[derive(Clone, Debug, Deserialize, Serialize)]
12408	pub struct AskrenelistlayersLayersNodeBiases {
12409	    #[serde(skip_serializing_if = "Option::is_none")]
12410	    pub description: Option<String>,
12411	    pub in_bias: i64,
12412	    pub node: PublicKey,
12413	    pub out_bias: i64,
12414	    pub timestamp: u64,
12415	}
12416
12417	#[derive(Clone, Debug, Deserialize, Serialize)]
12418	pub struct AskrenelistlayersLayersChannelUpdates {
12419	    #[serde(skip_serializing_if = "Option::is_none")]
12420	    pub cltv_expiry_delta: Option<u16>,
12421	    #[serde(skip_serializing_if = "Option::is_none")]
12422	    pub enabled: Option<bool>,
12423	    #[serde(skip_serializing_if = "Option::is_none")]
12424	    pub fee_base_msat: Option<Amount>,
12425	    #[serde(skip_serializing_if = "Option::is_none")]
12426	    pub fee_proportional_millionths: Option<u32>,
12427	    #[serde(skip_serializing_if = "Option::is_none")]
12428	    pub htlc_maximum_msat: Option<Amount>,
12429	    #[serde(skip_serializing_if = "Option::is_none")]
12430	    pub htlc_minimum_msat: Option<Amount>,
12431	    pub short_channel_id_dir: ShortChannelIdDir,
12432	}
12433
12434	#[derive(Clone, Debug, Deserialize, Serialize)]
12435	pub struct AskrenelistlayersLayersConstraints {
12436	    #[serde(skip_serializing_if = "Option::is_none")]
12437	    pub maximum_msat: Option<Amount>,
12438	    #[serde(skip_serializing_if = "Option::is_none")]
12439	    pub minimum_msat: Option<Amount>,
12440	    #[serde(skip_serializing_if = "Option::is_none")]
12441	    pub timestamp: Option<u64>,
12442	    pub short_channel_id_dir: ShortChannelIdDir,
12443	}
12444
12445	#[derive(Clone, Debug, Deserialize, Serialize)]
12446	pub struct AskrenelistlayersLayersCreatedChannels {
12447	    pub capacity_msat: Amount,
12448	    pub destination: PublicKey,
12449	    pub short_channel_id: ShortChannelId,
12450	    pub source: PublicKey,
12451	}
12452
12453	#[derive(Clone, Debug, Deserialize, Serialize)]
12454	pub struct AskrenelistlayersLayers {
12455	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
12456	    pub biases: Option<Vec<AskrenelistlayersLayersBiases>>,
12457	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
12458	    pub disabled_channels: Option<Vec<ShortChannelIdDir>>,
12459	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
12460	    pub node_biases: Option<Vec<AskrenelistlayersLayersNodeBiases>>,
12461	    pub channel_updates: Vec<AskrenelistlayersLayersChannelUpdates>,
12462	    pub constraints: Vec<AskrenelistlayersLayersConstraints>,
12463	    pub created_channels: Vec<AskrenelistlayersLayersCreatedChannels>,
12464	    pub disabled_nodes: Vec<PublicKey>,
12465	    pub layer: String,
12466	    pub persistent: bool,
12467	}
12468
12469	#[derive(Clone, Debug, Deserialize, Serialize)]
12470	pub struct AskrenelistlayersResponse {
12471	    pub layers: Vec<AskrenelistlayersLayers>,
12472	}
12473
12474	impl TryFrom<Response> for AskrenelistlayersResponse {
12475	    type Error = super::TryFromResponseError;
12476
12477	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12478	        match response {
12479	            Response::AskReneListLayers(response) => Ok(response),
12480	            _ => Err(TryFromResponseError)
12481	        }
12482	    }
12483	}
12484
12485	#[derive(Clone, Debug, Deserialize, Serialize)]
12486	pub struct AskrenecreatelayerLayersBiases {
12487	    #[serde(skip_serializing_if = "Option::is_none")]
12488	    pub description: Option<String>,
12489	    #[serde(skip_serializing_if = "Option::is_none")]
12490	    pub timestamp: Option<u64>,
12491	    pub bias: i64,
12492	    pub short_channel_id_dir: ShortChannelIdDir,
12493	}
12494
12495	#[derive(Clone, Debug, Deserialize, Serialize)]
12496	pub struct AskrenecreatelayerLayersNodeBiases {
12497	    #[serde(skip_serializing_if = "Option::is_none")]
12498	    pub description: Option<String>,
12499	    pub in_bias: i64,
12500	    pub node: PublicKey,
12501	    pub out_bias: i64,
12502	    pub timestamp: u64,
12503	}
12504
12505	#[derive(Clone, Debug, Deserialize, Serialize)]
12506	pub struct AskrenecreatelayerLayersChannelUpdates {
12507	    #[serde(skip_serializing_if = "Option::is_none")]
12508	    pub delay: Option<u16>,
12509	    #[serde(skip_serializing_if = "Option::is_none")]
12510	    pub fee_base_msat: Option<Amount>,
12511	    #[serde(skip_serializing_if = "Option::is_none")]
12512	    pub fee_proportional_millionths: Option<u32>,
12513	    #[serde(skip_serializing_if = "Option::is_none")]
12514	    pub htlc_maximum_msat: Option<Amount>,
12515	    #[serde(skip_serializing_if = "Option::is_none")]
12516	    pub htlc_minimum_msat: Option<Amount>,
12517	}
12518
12519	#[derive(Clone, Debug, Deserialize, Serialize)]
12520	pub struct AskrenecreatelayerLayersConstraints {
12521	    #[serde(skip_serializing_if = "Option::is_none")]
12522	    pub maximum_msat: Option<Amount>,
12523	    #[serde(skip_serializing_if = "Option::is_none")]
12524	    pub minimum_msat: Option<Amount>,
12525	    pub direction: u32,
12526	    pub short_channel_id: ShortChannelId,
12527	}
12528
12529	#[derive(Clone, Debug, Deserialize, Serialize)]
12530	pub struct AskrenecreatelayerLayersCreatedChannels {
12531	    pub capacity_msat: Amount,
12532	    pub destination: PublicKey,
12533	    pub short_channel_id: ShortChannelId,
12534	    pub source: PublicKey,
12535	}
12536
12537	#[derive(Clone, Debug, Deserialize, Serialize)]
12538	pub struct AskrenecreatelayerLayers {
12539	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
12540	    pub biases: Option<Vec<AskrenecreatelayerLayersBiases>>,
12541	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
12542	    pub disabled_channels: Option<Vec<ShortChannelIdDir>>,
12543	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
12544	    pub node_biases: Option<Vec<AskrenecreatelayerLayersNodeBiases>>,
12545	    pub channel_updates: Vec<AskrenecreatelayerLayersChannelUpdates>,
12546	    pub constraints: Vec<AskrenecreatelayerLayersConstraints>,
12547	    pub created_channels: Vec<AskrenecreatelayerLayersCreatedChannels>,
12548	    pub disabled_nodes: Vec<PublicKey>,
12549	    pub layer: String,
12550	    pub persistent: bool,
12551	}
12552
12553	#[derive(Clone, Debug, Deserialize, Serialize)]
12554	pub struct AskrenecreatelayerResponse {
12555	    pub layers: Vec<AskrenecreatelayerLayers>,
12556	}
12557
12558	impl TryFrom<Response> for AskrenecreatelayerResponse {
12559	    type Error = super::TryFromResponseError;
12560
12561	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12562	        match response {
12563	            Response::AskReneCreateLayer(response) => Ok(response),
12564	            _ => Err(TryFromResponseError)
12565	        }
12566	    }
12567	}
12568
12569	#[derive(Clone, Debug, Deserialize, Serialize)]
12570	pub struct AskreneremovelayerResponse {
12571	}
12572
12573	impl TryFrom<Response> for AskreneremovelayerResponse {
12574	    type Error = super::TryFromResponseError;
12575
12576	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12577	        match response {
12578	            Response::AskReneRemoveLayer(response) => Ok(response),
12579	            _ => Err(TryFromResponseError)
12580	        }
12581	    }
12582	}
12583
12584	#[derive(Clone, Debug, Deserialize, Serialize)]
12585	pub struct AskreneremovechannelupdateResponse {
12586	}
12587
12588	impl TryFrom<Response> for AskreneremovechannelupdateResponse {
12589	    type Error = super::TryFromResponseError;
12590
12591	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12592	        match response {
12593	            Response::AskReneRemoveChannelUpdate(response) => Ok(response),
12594	            _ => Err(TryFromResponseError)
12595	        }
12596	    }
12597	}
12598
12599	#[derive(Clone, Debug, Deserialize, Serialize)]
12600	pub struct AskrenereserveResponse {
12601	}
12602
12603	impl TryFrom<Response> for AskrenereserveResponse {
12604	    type Error = super::TryFromResponseError;
12605
12606	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12607	        match response {
12608	            Response::AskReneReserve(response) => Ok(response),
12609	            _ => Err(TryFromResponseError)
12610	        }
12611	    }
12612	}
12613
12614	#[derive(Clone, Debug, Deserialize, Serialize)]
12615	pub struct AskreneageResponse {
12616	    pub layer: String,
12617	    pub num_removed: u64,
12618	}
12619
12620	impl TryFrom<Response> for AskreneageResponse {
12621	    type Error = super::TryFromResponseError;
12622
12623	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12624	        match response {
12625	            Response::AskReneAge(response) => Ok(response),
12626	            _ => Err(TryFromResponseError)
12627	        }
12628	    }
12629	}
12630
12631	#[derive(Clone, Debug, Deserialize, Serialize)]
12632	pub struct GetroutesRoutesPath {
12633	    #[deprecated]
12634	    #[serde(skip_serializing_if = "Option::is_none")]
12635	    pub amount_msat: Option<Amount>,
12636	    #[deprecated]
12637	    #[serde(skip_serializing_if = "Option::is_none")]
12638	    pub delay: Option<u32>,
12639	    #[deprecated]
12640	    #[serde(skip_serializing_if = "Option::is_none")]
12641	    pub next_node_id: Option<PublicKey>,
12642	    #[serde(skip_serializing_if = "Option::is_none")]
12643	    pub amount_in_msat: Option<Amount>,
12644	    #[serde(skip_serializing_if = "Option::is_none")]
12645	    pub amount_out_msat: Option<Amount>,
12646	    #[serde(skip_serializing_if = "Option::is_none")]
12647	    pub cltv_in: Option<u32>,
12648	    #[serde(skip_serializing_if = "Option::is_none")]
12649	    pub cltv_out: Option<u32>,
12650	    #[serde(skip_serializing_if = "Option::is_none")]
12651	    pub node_id_in: Option<PublicKey>,
12652	    #[serde(skip_serializing_if = "Option::is_none")]
12653	    pub node_id_out: Option<PublicKey>,
12654	    pub short_channel_id_dir: ShortChannelIdDir,
12655	}
12656
12657	#[derive(Clone, Debug, Deserialize, Serialize)]
12658	pub struct GetroutesRoutes {
12659	    pub amount_msat: Amount,
12660	    pub final_cltv: u32,
12661	    pub path: Vec<GetroutesRoutesPath>,
12662	    pub probability_ppm: u64,
12663	}
12664
12665	#[derive(Clone, Debug, Deserialize, Serialize)]
12666	pub struct GetroutesResponse {
12667	    pub probability_ppm: u64,
12668	    pub routes: Vec<GetroutesRoutes>,
12669	}
12670
12671	impl TryFrom<Response> for GetroutesResponse {
12672	    type Error = super::TryFromResponseError;
12673
12674	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12675	        match response {
12676	            Response::GetRoutes(response) => Ok(response),
12677	            _ => Err(TryFromResponseError)
12678	        }
12679	    }
12680	}
12681
12682	#[derive(Clone, Debug, Deserialize, Serialize)]
12683	pub struct AskrenedisablenodeResponse {
12684	}
12685
12686	impl TryFrom<Response> for AskrenedisablenodeResponse {
12687	    type Error = super::TryFromResponseError;
12688
12689	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12690	        match response {
12691	            Response::AskReneDisableNode(response) => Ok(response),
12692	            _ => Err(TryFromResponseError)
12693	        }
12694	    }
12695	}
12696
12697	#[derive(Clone, Debug, Deserialize, Serialize)]
12698	pub struct AskreneinformchannelConstraints {
12699	    #[serde(skip_serializing_if = "Option::is_none")]
12700	    pub maximum_msat: Option<Amount>,
12701	    #[serde(skip_serializing_if = "Option::is_none")]
12702	    pub minimum_msat: Option<Amount>,
12703	    pub layer: String,
12704	    pub short_channel_id_dir: ShortChannelIdDir,
12705	    pub timestamp: u64,
12706	}
12707
12708	#[derive(Clone, Debug, Deserialize, Serialize)]
12709	pub struct AskreneinformchannelResponse {
12710	    pub constraints: Vec<AskreneinformchannelConstraints>,
12711	}
12712
12713	impl TryFrom<Response> for AskreneinformchannelResponse {
12714	    type Error = super::TryFromResponseError;
12715
12716	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12717	        match response {
12718	            Response::AskReneInformChannel(response) => Ok(response),
12719	            _ => Err(TryFromResponseError)
12720	        }
12721	    }
12722	}
12723
12724	#[derive(Clone, Debug, Deserialize, Serialize)]
12725	pub struct AskrenecreatechannelResponse {
12726	}
12727
12728	impl TryFrom<Response> for AskrenecreatechannelResponse {
12729	    type Error = super::TryFromResponseError;
12730
12731	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12732	        match response {
12733	            Response::AskReneCreateChannel(response) => Ok(response),
12734	            _ => Err(TryFromResponseError)
12735	        }
12736	    }
12737	}
12738
12739	#[derive(Clone, Debug, Deserialize, Serialize)]
12740	pub struct AskreneupdatechannelResponse {
12741	}
12742
12743	impl TryFrom<Response> for AskreneupdatechannelResponse {
12744	    type Error = super::TryFromResponseError;
12745
12746	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12747	        match response {
12748	            Response::AskReneUpdateChannel(response) => Ok(response),
12749	            _ => Err(TryFromResponseError)
12750	        }
12751	    }
12752	}
12753
12754	#[derive(Clone, Debug, Deserialize, Serialize)]
12755	pub struct AskrenebiaschannelBiases {
12756	    #[serde(skip_serializing_if = "Option::is_none")]
12757	    pub description: Option<String>,
12758	    #[serde(skip_serializing_if = "Option::is_none")]
12759	    pub timestamp: Option<u64>,
12760	    pub bias: i64,
12761	    pub layer: String,
12762	    pub short_channel_id_dir: ShortChannelIdDir,
12763	}
12764
12765	#[derive(Clone, Debug, Deserialize, Serialize)]
12766	pub struct AskrenebiaschannelResponse {
12767	    pub biases: Vec<AskrenebiaschannelBiases>,
12768	}
12769
12770	impl TryFrom<Response> for AskrenebiaschannelResponse {
12771	    type Error = super::TryFromResponseError;
12772
12773	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12774	        match response {
12775	            Response::AskReneBiasChannel(response) => Ok(response),
12776	            _ => Err(TryFromResponseError)
12777	        }
12778	    }
12779	}
12780
12781	#[derive(Clone, Debug, Deserialize, Serialize)]
12782	pub struct AskrenebiasnodeNodeBiases {
12783	    #[serde(skip_serializing_if = "Option::is_none")]
12784	    pub description: Option<String>,
12785	    pub in_bias: i64,
12786	    pub layer: String,
12787	    pub node: PublicKey,
12788	    pub out_bias: i64,
12789	    pub timestamp: u64,
12790	}
12791
12792	#[derive(Clone, Debug, Deserialize, Serialize)]
12793	pub struct AskrenebiasnodeResponse {
12794	    pub node_biases: Vec<AskrenebiasnodeNodeBiases>,
12795	}
12796
12797	impl TryFrom<Response> for AskrenebiasnodeResponse {
12798	    type Error = super::TryFromResponseError;
12799
12800	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12801	        match response {
12802	            Response::AskreneBiasNode(response) => Ok(response),
12803	            _ => Err(TryFromResponseError)
12804	        }
12805	    }
12806	}
12807
12808	#[derive(Clone, Debug, Deserialize, Serialize)]
12809	pub struct AskrenelistreservationsReservations {
12810	    pub age_in_seconds: u64,
12811	    pub amount_msat: Amount,
12812	    pub command_id: String,
12813	    pub short_channel_id_dir: ShortChannelIdDir,
12814	}
12815
12816	#[derive(Clone, Debug, Deserialize, Serialize)]
12817	pub struct AskrenelistreservationsResponse {
12818	    pub reservations: Vec<AskrenelistreservationsReservations>,
12819	}
12820
12821	impl TryFrom<Response> for AskrenelistreservationsResponse {
12822	    type Error = super::TryFromResponseError;
12823
12824	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12825	        match response {
12826	            Response::AskReneListReservations(response) => Ok(response),
12827	            _ => Err(TryFromResponseError)
12828	        }
12829	    }
12830	}
12831
12832	#[derive(Clone, Debug, Deserialize, Serialize)]
12833	pub struct InjectpaymentonionResponse {
12834	    pub completed_at: u64,
12835	    pub created_at: u64,
12836	    pub created_index: u64,
12837	    pub payment_preimage: Secret,
12838	}
12839
12840	impl TryFrom<Response> for InjectpaymentonionResponse {
12841	    type Error = super::TryFromResponseError;
12842
12843	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12844	        match response {
12845	            Response::InjectPaymentOnion(response) => Ok(response),
12846	            _ => Err(TryFromResponseError)
12847	        }
12848	    }
12849	}
12850
12851	#[derive(Clone, Debug, Deserialize, Serialize)]
12852	pub struct InjectonionmessageResponse {
12853	}
12854
12855	impl TryFrom<Response> for InjectonionmessageResponse {
12856	    type Error = super::TryFromResponseError;
12857
12858	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12859	        match response {
12860	            Response::InjectOnionMessage(response) => Ok(response),
12861	            _ => Err(TryFromResponseError)
12862	        }
12863	    }
12864	}
12865
12866	#[derive(Clone, Debug, Deserialize, Serialize)]
12867	pub struct XpayResponse {
12868	    pub amount_msat: Amount,
12869	    pub amount_sent_msat: Amount,
12870	    pub failed_parts: u64,
12871	    pub payment_preimage: Secret,
12872	    pub successful_parts: u64,
12873	}
12874
12875	impl TryFrom<Response> for XpayResponse {
12876	    type Error = super::TryFromResponseError;
12877
12878	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12879	        match response {
12880	            Response::Xpay(response) => Ok(response),
12881	            _ => Err(TryFromResponseError)
12882	        }
12883	    }
12884	}
12885
12886	#[derive(Clone, Debug, Deserialize, Serialize)]
12887	pub struct SignmessagewithkeyResponse {
12888	    pub address: String,
12889	    pub base64: String,
12890	    pub pubkey: PublicKey,
12891	    pub signature: String,
12892	}
12893
12894	impl TryFrom<Response> for SignmessagewithkeyResponse {
12895	    type Error = super::TryFromResponseError;
12896
12897	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12898	        match response {
12899	            Response::SignMessageWithKey(response) => Ok(response),
12900	            _ => Err(TryFromResponseError)
12901	        }
12902	    }
12903	}
12904
12905	/// ['A set of one or more tags defining the nature of the change']
12906	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
12907	#[allow(non_camel_case_types)]
12908	pub enum ListchannelmovesChannelmovesPrimaryTag {
12909	    #[serde(rename = "invoice")]
12910	    INVOICE = 0,
12911	    #[serde(rename = "routed")]
12912	    ROUTED = 1,
12913	    #[serde(rename = "pushed")]
12914	    PUSHED = 2,
12915	    #[serde(rename = "lease_fee")]
12916	    LEASE_FEE = 3,
12917	    #[serde(rename = "channel_proposed")]
12918	    CHANNEL_PROPOSED = 4,
12919	    #[serde(rename = "penalty_adj")]
12920	    PENALTY_ADJ = 5,
12921	    #[serde(rename = "journal_entry")]
12922	    JOURNAL_ENTRY = 6,
12923	}
12924
12925	impl TryFrom<i32> for ListchannelmovesChannelmovesPrimaryTag {
12926	    type Error = anyhow::Error;
12927	    fn try_from(c: i32) -> Result<ListchannelmovesChannelmovesPrimaryTag, anyhow::Error> {
12928	        match c {
12929	    0 => Ok(ListchannelmovesChannelmovesPrimaryTag::INVOICE),
12930	    1 => Ok(ListchannelmovesChannelmovesPrimaryTag::ROUTED),
12931	    2 => Ok(ListchannelmovesChannelmovesPrimaryTag::PUSHED),
12932	    3 => Ok(ListchannelmovesChannelmovesPrimaryTag::LEASE_FEE),
12933	    4 => Ok(ListchannelmovesChannelmovesPrimaryTag::CHANNEL_PROPOSED),
12934	    5 => Ok(ListchannelmovesChannelmovesPrimaryTag::PENALTY_ADJ),
12935	    6 => Ok(ListchannelmovesChannelmovesPrimaryTag::JOURNAL_ENTRY),
12936	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListchannelmovesChannelmovesPrimaryTag", o)),
12937	        }
12938	    }
12939	}
12940
12941	impl ToString for ListchannelmovesChannelmovesPrimaryTag {
12942	    fn to_string(&self) -> String {
12943	        match self {
12944	            ListchannelmovesChannelmovesPrimaryTag::INVOICE => "INVOICE",
12945	            ListchannelmovesChannelmovesPrimaryTag::ROUTED => "ROUTED",
12946	            ListchannelmovesChannelmovesPrimaryTag::PUSHED => "PUSHED",
12947	            ListchannelmovesChannelmovesPrimaryTag::LEASE_FEE => "LEASE_FEE",
12948	            ListchannelmovesChannelmovesPrimaryTag::CHANNEL_PROPOSED => "CHANNEL_PROPOSED",
12949	            ListchannelmovesChannelmovesPrimaryTag::PENALTY_ADJ => "PENALTY_ADJ",
12950	            ListchannelmovesChannelmovesPrimaryTag::JOURNAL_ENTRY => "JOURNAL_ENTRY",
12951	        }.to_string()
12952	    }
12953	}
12954
12955	#[derive(Clone, Debug, Deserialize, Serialize)]
12956	pub struct ListchannelmovesChannelmoves {
12957	    #[serde(skip_serializing_if = "Option::is_none")]
12958	    pub group_id: Option<u64>,
12959	    #[serde(skip_serializing_if = "Option::is_none")]
12960	    pub part_id: Option<u64>,
12961	    #[serde(skip_serializing_if = "Option::is_none")]
12962	    pub payment_hash: Option<Sha256>,
12963	    // Path `ListChannelMoves.channelmoves[].primary_tag`
12964	    pub primary_tag: ListchannelmovesChannelmovesPrimaryTag,
12965	    pub account_id: String,
12966	    pub created_index: u64,
12967	    pub credit_msat: Amount,
12968	    pub debit_msat: Amount,
12969	    pub fees_msat: Amount,
12970	    pub timestamp: u64,
12971	}
12972
12973	#[derive(Clone, Debug, Deserialize, Serialize)]
12974	pub struct ListchannelmovesResponse {
12975	    pub channelmoves: Vec<ListchannelmovesChannelmoves>,
12976	}
12977
12978	impl TryFrom<Response> for ListchannelmovesResponse {
12979	    type Error = super::TryFromResponseError;
12980
12981	    fn try_from(response: Response) -> Result<Self, Self::Error> {
12982	        match response {
12983	            Response::ListChannelMoves(response) => Ok(response),
12984	            _ => Err(TryFromResponseError)
12985	        }
12986	    }
12987	}
12988
12989	/// ['A set of one or more tags defining the nature of the change']
12990	#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
12991	#[allow(non_camel_case_types)]
12992	pub enum ListchainmovesChainmovesPrimaryTag {
12993	    #[serde(rename = "deposit")]
12994	    DEPOSIT = 0,
12995	    #[serde(rename = "withdrawal")]
12996	    WITHDRAWAL = 1,
12997	    #[serde(rename = "penalty")]
12998	    PENALTY = 2,
12999	    #[serde(rename = "channel_open")]
13000	    CHANNEL_OPEN = 3,
13001	    #[serde(rename = "channel_close")]
13002	    CHANNEL_CLOSE = 4,
13003	    #[serde(rename = "delayed_to_us")]
13004	    DELAYED_TO_US = 5,
13005	    #[serde(rename = "htlc_tx")]
13006	    HTLC_TX = 6,
13007	    #[serde(rename = "htlc_timeout")]
13008	    HTLC_TIMEOUT = 7,
13009	    #[serde(rename = "htlc_fulfill")]
13010	    HTLC_FULFILL = 8,
13011	    #[serde(rename = "to_wallet")]
13012	    TO_WALLET = 9,
13013	    #[serde(rename = "anchor")]
13014	    ANCHOR = 10,
13015	    #[serde(rename = "to_them")]
13016	    TO_THEM = 11,
13017	    #[serde(rename = "penalized")]
13018	    PENALIZED = 12,
13019	    #[serde(rename = "stolen")]
13020	    STOLEN = 13,
13021	    #[serde(rename = "ignored")]
13022	    IGNORED = 14,
13023	    #[serde(rename = "to_miner")]
13024	    TO_MINER = 15,
13025	}
13026
13027	impl TryFrom<i32> for ListchainmovesChainmovesPrimaryTag {
13028	    type Error = anyhow::Error;
13029	    fn try_from(c: i32) -> Result<ListchainmovesChainmovesPrimaryTag, anyhow::Error> {
13030	        match c {
13031	    0 => Ok(ListchainmovesChainmovesPrimaryTag::DEPOSIT),
13032	    1 => Ok(ListchainmovesChainmovesPrimaryTag::WITHDRAWAL),
13033	    2 => Ok(ListchainmovesChainmovesPrimaryTag::PENALTY),
13034	    3 => Ok(ListchainmovesChainmovesPrimaryTag::CHANNEL_OPEN),
13035	    4 => Ok(ListchainmovesChainmovesPrimaryTag::CHANNEL_CLOSE),
13036	    5 => Ok(ListchainmovesChainmovesPrimaryTag::DELAYED_TO_US),
13037	    6 => Ok(ListchainmovesChainmovesPrimaryTag::HTLC_TX),
13038	    7 => Ok(ListchainmovesChainmovesPrimaryTag::HTLC_TIMEOUT),
13039	    8 => Ok(ListchainmovesChainmovesPrimaryTag::HTLC_FULFILL),
13040	    9 => Ok(ListchainmovesChainmovesPrimaryTag::TO_WALLET),
13041	    10 => Ok(ListchainmovesChainmovesPrimaryTag::ANCHOR),
13042	    11 => Ok(ListchainmovesChainmovesPrimaryTag::TO_THEM),
13043	    12 => Ok(ListchainmovesChainmovesPrimaryTag::PENALIZED),
13044	    13 => Ok(ListchainmovesChainmovesPrimaryTag::STOLEN),
13045	    14 => Ok(ListchainmovesChainmovesPrimaryTag::IGNORED),
13046	    15 => Ok(ListchainmovesChainmovesPrimaryTag::TO_MINER),
13047	            o => Err(anyhow::anyhow!("Unknown variant {} for enum ListchainmovesChainmovesPrimaryTag", o)),
13048	        }
13049	    }
13050	}
13051
13052	impl ToString for ListchainmovesChainmovesPrimaryTag {
13053	    fn to_string(&self) -> String {
13054	        match self {
13055	            ListchainmovesChainmovesPrimaryTag::DEPOSIT => "DEPOSIT",
13056	            ListchainmovesChainmovesPrimaryTag::WITHDRAWAL => "WITHDRAWAL",
13057	            ListchainmovesChainmovesPrimaryTag::PENALTY => "PENALTY",
13058	            ListchainmovesChainmovesPrimaryTag::CHANNEL_OPEN => "CHANNEL_OPEN",
13059	            ListchainmovesChainmovesPrimaryTag::CHANNEL_CLOSE => "CHANNEL_CLOSE",
13060	            ListchainmovesChainmovesPrimaryTag::DELAYED_TO_US => "DELAYED_TO_US",
13061	            ListchainmovesChainmovesPrimaryTag::HTLC_TX => "HTLC_TX",
13062	            ListchainmovesChainmovesPrimaryTag::HTLC_TIMEOUT => "HTLC_TIMEOUT",
13063	            ListchainmovesChainmovesPrimaryTag::HTLC_FULFILL => "HTLC_FULFILL",
13064	            ListchainmovesChainmovesPrimaryTag::TO_WALLET => "TO_WALLET",
13065	            ListchainmovesChainmovesPrimaryTag::ANCHOR => "ANCHOR",
13066	            ListchainmovesChainmovesPrimaryTag::TO_THEM => "TO_THEM",
13067	            ListchainmovesChainmovesPrimaryTag::PENALIZED => "PENALIZED",
13068	            ListchainmovesChainmovesPrimaryTag::STOLEN => "STOLEN",
13069	            ListchainmovesChainmovesPrimaryTag::IGNORED => "IGNORED",
13070	            ListchainmovesChainmovesPrimaryTag::TO_MINER => "TO_MINER",
13071	        }.to_string()
13072	    }
13073	}
13074
13075	#[derive(Clone, Debug, Deserialize, Serialize)]
13076	pub struct ListchainmovesChainmoves {
13077	    #[serde(skip_serializing_if = "Option::is_none")]
13078	    pub originating_account: Option<String>,
13079	    #[serde(skip_serializing_if = "Option::is_none")]
13080	    pub output_count: Option<u32>,
13081	    #[serde(skip_serializing_if = "Option::is_none")]
13082	    pub payment_hash: Option<Sha256>,
13083	    #[serde(skip_serializing_if = "Option::is_none")]
13084	    pub peer_id: Option<PublicKey>,
13085	    #[serde(skip_serializing_if = "Option::is_none")]
13086	    pub spending_txid: Option<String>,
13087	    // Path `ListChainMoves.chainmoves[].primary_tag`
13088	    pub primary_tag: ListchainmovesChainmovesPrimaryTag,
13089	    pub account_id: String,
13090	    pub blockheight: u32,
13091	    pub created_index: u64,
13092	    pub credit_msat: Amount,
13093	    pub debit_msat: Amount,
13094	    pub extra_tags: Vec<String>,
13095	    pub output_msat: Amount,
13096	    pub timestamp: u64,
13097	    pub utxo: Outpoint,
13098	}
13099
13100	#[derive(Clone, Debug, Deserialize, Serialize)]
13101	pub struct ListchainmovesResponse {
13102	    pub chainmoves: Vec<ListchainmovesChainmoves>,
13103	}
13104
13105	impl TryFrom<Response> for ListchainmovesResponse {
13106	    type Error = super::TryFromResponseError;
13107
13108	    fn try_from(response: Response) -> Result<Self, Self::Error> {
13109	        match response {
13110	            Response::ListChainMoves(response) => Ok(response),
13111	            _ => Err(TryFromResponseError)
13112	        }
13113	    }
13114	}
13115
13116	#[derive(Clone, Debug, Deserialize, Serialize)]
13117	pub struct ListnetworkeventsNetworkevents {
13118	    #[serde(rename = "type")]
13119	    pub item_type: String,
13120	    #[serde(skip_serializing_if = "Option::is_none")]
13121	    pub connect_attempted: Option<bool>,
13122	    #[serde(skip_serializing_if = "Option::is_none")]
13123	    pub duration_nsec: Option<u64>,
13124	    #[serde(skip_serializing_if = "Option::is_none")]
13125	    pub reason: Option<String>,
13126	    pub created_index: u64,
13127	    pub peer_id: PublicKey,
13128	    pub timestamp: u64,
13129	}
13130
13131	#[derive(Clone, Debug, Deserialize, Serialize)]
13132	pub struct ListnetworkeventsResponse {
13133	    pub networkevents: Vec<ListnetworkeventsNetworkevents>,
13134	}
13135
13136	impl TryFrom<Response> for ListnetworkeventsResponse {
13137	    type Error = super::TryFromResponseError;
13138
13139	    fn try_from(response: Response) -> Result<Self, Self::Error> {
13140	        match response {
13141	            Response::ListNetworkEvents(response) => Ok(response),
13142	            _ => Err(TryFromResponseError)
13143	        }
13144	    }
13145	}
13146
13147	#[derive(Clone, Debug, Deserialize, Serialize)]
13148	pub struct DelnetworkeventResponse {
13149	}
13150
13151	impl TryFrom<Response> for DelnetworkeventResponse {
13152	    type Error = super::TryFromResponseError;
13153
13154	    fn try_from(response: Response) -> Result<Self, Self::Error> {
13155	        match response {
13156	            Response::DelNetworkEvent(response) => Ok(response),
13157	            _ => Err(TryFromResponseError)
13158	        }
13159	    }
13160	}
13161
13162	#[derive(Clone, Debug, Deserialize, Serialize)]
13163	pub struct ClnrestregisterpathResponse {
13164	}
13165
13166	impl TryFrom<Response> for ClnrestregisterpathResponse {
13167	    type Error = super::TryFromResponseError;
13168
13169	    fn try_from(response: Response) -> Result<Self, Self::Error> {
13170	        match response {
13171	            Response::ClnrestRegisterPath(response) => Ok(response),
13172	            _ => Err(TryFromResponseError)
13173	        }
13174	    }
13175	}
13176
13177	#[derive(Clone, Debug, Deserialize, Serialize)]
13178	pub struct ListcurrencyratesCurrencyrates {
13179	    pub amount: f64,
13180	    pub source: String,
13181	}
13182
13183	#[derive(Clone, Debug, Deserialize, Serialize)]
13184	pub struct ListcurrencyratesResponse {
13185	    pub currencyrates: Vec<ListcurrencyratesCurrencyrates>,
13186	}
13187
13188	impl TryFrom<Response> for ListcurrencyratesResponse {
13189	    type Error = super::TryFromResponseError;
13190
13191	    fn try_from(response: Response) -> Result<Self, Self::Error> {
13192	        match response {
13193	            Response::ListCurrencyRates(response) => Ok(response),
13194	            _ => Err(TryFromResponseError)
13195	        }
13196	    }
13197	}
13198
13199	#[derive(Clone, Debug, Deserialize, Serialize)]
13200	pub struct CurrencyconvertResponse {
13201	    pub msat: Amount,
13202	}
13203
13204	impl TryFrom<Response> for CurrencyconvertResponse {
13205	    type Error = super::TryFromResponseError;
13206
13207	    fn try_from(response: Response) -> Result<Self, Self::Error> {
13208	        match response {
13209	            Response::CurrencyConvert(response) => Ok(response),
13210	            _ => Err(TryFromResponseError)
13211	        }
13212	    }
13213	}
13214
13215	#[derive(Clone, Debug, Deserialize, Serialize)]
13216	pub struct CurrencyrateResponse {
13217	    pub rate: f64,
13218	}
13219
13220	impl TryFrom<Response> for CurrencyrateResponse {
13221	    type Error = super::TryFromResponseError;
13222
13223	    fn try_from(response: Response) -> Result<Self, Self::Error> {
13224	        match response {
13225	            Response::CurrencyRate(response) => Ok(response),
13226	            _ => Err(TryFromResponseError)
13227	        }
13228	    }
13229	}
13230
13231	#[derive(Clone, Debug, Deserialize, Serialize)]
13232	pub struct SendamountResponse {
13233	    pub amount_msat: Amount,
13234	    pub amount_sent_msat: Amount,
13235	    pub failed_parts: u64,
13236	    pub payment_preimage: Secret,
13237	    pub successful_parts: u64,
13238	}
13239
13240	impl TryFrom<Response> for SendamountResponse {
13241	    type Error = super::TryFromResponseError;
13242
13243	    fn try_from(response: Response) -> Result<Self, Self::Error> {
13244	        match response {
13245	            Response::SendAmount(response) => Ok(response),
13246	            _ => Err(TryFromResponseError)
13247	        }
13248	    }
13249	}
13250
13251	#[derive(Clone, Debug, Deserialize, Serialize)]
13252	pub struct CreateproofProofs {
13253	    pub bolt12: String,
13254	    pub invoice_fields_included: Vec<ProofField>,
13255	    pub invreq_fields_included: Vec<ProofField>,
13256	    pub offer_fields_included: Vec<ProofField>,
13257	}
13258
13259	#[derive(Clone, Debug, Deserialize, Serialize)]
13260	pub struct CreateproofResponse {
13261	    pub proofs: Vec<CreateproofProofs>,
13262	}
13263
13264	impl TryFrom<Response> for CreateproofResponse {
13265	    type Error = super::TryFromResponseError;
13266
13267	    fn try_from(response: Response) -> Result<Self, Self::Error> {
13268	        match response {
13269	            Response::CreateProof(response) => Ok(response),
13270	            _ => Err(TryFromResponseError)
13271	        }
13272	    }
13273	}
13274
13275	#[derive(Clone, Debug, Deserialize, Serialize)]
13276	pub struct XkeysendResponse {
13277	    pub amount_msat: Amount,
13278	    pub amount_sent_msat: Amount,
13279	    pub failed_parts: u64,
13280	    pub payment_preimage: Secret,
13281	    pub successful_parts: u64,
13282	}
13283
13284	impl TryFrom<Response> for XkeysendResponse {
13285	    type Error = super::TryFromResponseError;
13286
13287	    fn try_from(response: Response) -> Result<Self, Self::Error> {
13288	        match response {
13289	            Response::Xkeysend(response) => Ok(response),
13290	            _ => Err(TryFromResponseError)
13291	        }
13292	    }
13293	}
13294
13295	#[derive(Clone, Debug, Deserialize, Serialize)]
13296	pub struct GracefulResponse {
13297	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
13298	    pub pending_htlc_expiries: Option<Vec<u32>>,
13299	    #[serde(skip_serializing_if = "crate::is_none_or_empty")]
13300	    pub pending_peers: Option<Vec<PublicKey>>,
13301	}
13302
13303	impl TryFrom<Response> for GracefulResponse {
13304	    type Error = super::TryFromResponseError;
13305
13306	    fn try_from(response: Response) -> Result<Self, Self::Error> {
13307	        match response {
13308	            Response::Graceful(response) => Ok(response),
13309	            _ => Err(TryFromResponseError)
13310	        }
13311	    }
13312	}
13313
13314}
13315