// This file was automatically derived from the JSON-RPC schemas in // `doc/schemas`. Do not edit this file manually as it would get // overwritten. use std::convert::From; #[allow(unused_imports)] use cln_rpc::model::{responses,requests}; use crate::pb; use std::str::FromStr; use bitcoin::hashes::sha256::Hash as Sha256; use bitcoin::hashes::Hash; use cln_rpc::primitives::PublicKey; #[allow(unused_variables)] impl From for pb::GetinfoOurFeatures { fn from(c: responses::GetinfoOur_features) -> Self { Self { init: hex::decode(&c.init).unwrap(), // Rule #2 for type hex node: hex::decode(&c.node).unwrap(), // Rule #2 for type hex channel: hex::decode(&c.channel).unwrap(), // Rule #2 for type hex invoice: hex::decode(&c.invoice).unwrap(), // Rule #2 for type hex } } } #[allow(unused_variables)] impl From for pb::GetinfoAddress { fn from(c: responses::GetinfoAddress) -> Self { Self { item_type: c.item_type as i32, port: c.port.into(), // Rule #2 for type u16 address: c.address, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::GetinfoBinding { fn from(c: responses::GetinfoBinding) -> Self { Self { item_type: c.item_type as i32, address: c.address, // Rule #2 for type string? port: c.port.map(|v| v.into()), // Rule #2 for type u16? socket: c.socket, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::GetinfoResponse { fn from(c: responses::GetinfoResponse) -> Self { Self { id: c.id.serialize().to_vec(), // Rule #2 for type pubkey alias: c.alias, // Rule #2 for type string? color: hex::decode(&c.color).unwrap(), // Rule #2 for type hex num_peers: c.num_peers, // Rule #2 for type u32 num_pending_channels: c.num_pending_channels, // Rule #2 for type u32 num_active_channels: c.num_active_channels, // Rule #2 for type u32 num_inactive_channels: c.num_inactive_channels, // Rule #2 for type u32 version: c.version, // Rule #2 for type string lightning_dir: c.lightning_dir, // Rule #2 for type string our_features: c.our_features.map(|v| v.into()), blockheight: c.blockheight, // Rule #2 for type u32 network: c.network, // Rule #2 for type string fees_collected_msat: Some(c.fees_collected_msat.into()), // Rule #2 for type msat // Field: Getinfo.address[] address: c.address.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 // Field: Getinfo.binding[] binding: c.binding.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 warning_bitcoind_sync: c.warning_bitcoind_sync, // Rule #2 for type string? warning_lightningd_sync: c.warning_lightningd_sync, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::ListpeersPeersLog { fn from(c: responses::ListpeersPeersLog) -> Self { Self { item_type: c.item_type as i32, num_skipped: c.num_skipped, // Rule #2 for type u32? time: c.time, // Rule #2 for type string? source: c.source, // Rule #2 for type string? log: c.log, // Rule #2 for type string? node_id: c.node_id.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? data: c.data.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? } } } #[allow(unused_variables)] impl From for pb::ListpeersPeersChannelsFeerate { fn from(c: responses::ListpeersPeersChannelsFeerate) -> Self { Self { perkw: c.perkw, // Rule #2 for type u32 perkb: c.perkb, // Rule #2 for type u32 } } } #[allow(unused_variables)] impl From for pb::ListpeersPeersChannelsInflight { fn from(c: responses::ListpeersPeersChannelsInflight) -> Self { Self { funding_txid: hex::decode(&c.funding_txid).unwrap(), // Rule #2 for type txid funding_outnum: c.funding_outnum, // Rule #2 for type u32 feerate: c.feerate, // Rule #2 for type string total_funding_msat: Some(c.total_funding_msat.into()), // Rule #2 for type msat our_funding_msat: Some(c.our_funding_msat.into()), // Rule #2 for type msat scratch_txid: hex::decode(&c.scratch_txid).unwrap(), // Rule #2 for type txid } } } #[allow(unused_variables)] impl From for pb::ListpeersPeersChannelsFunding { fn from(c: responses::ListpeersPeersChannelsFunding) -> Self { Self { pushed_msat: c.pushed_msat.map(|f| f.into()), // Rule #2 for type msat? local_funds_msat: Some(c.local_funds_msat.into()), // Rule #2 for type msat remote_funds_msat: Some(c.remote_funds_msat.into()), // Rule #2 for type msat fee_paid_msat: c.fee_paid_msat.map(|f| f.into()), // Rule #2 for type msat? fee_rcvd_msat: c.fee_rcvd_msat.map(|f| f.into()), // Rule #2 for type msat? } } } #[allow(unused_variables)] impl From for pb::ListpeersPeersChannelsAlias { fn from(c: responses::ListpeersPeersChannelsAlias) -> Self { Self { local: c.local.map(|v| v.to_string()), // Rule #2 for type short_channel_id? remote: c.remote.map(|v| v.to_string()), // Rule #2 for type short_channel_id? } } } #[allow(unused_variables)] impl From for pb::ListpeersPeersChannelsHtlcs { fn from(c: responses::ListpeersPeersChannelsHtlcs) -> Self { Self { direction: c.direction as i32, id: c.id, // Rule #2 for type u64 amount_msat: Some(c.amount_msat.into()), // Rule #2 for type msat expiry: c.expiry, // Rule #2 for type u32 payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash local_trimmed: c.local_trimmed, // Rule #2 for type boolean? status: c.status, // Rule #2 for type string? state: c.state as i32, } } } #[allow(unused_variables)] impl From for pb::ListpeersPeersChannels { fn from(c: responses::ListpeersPeersChannels) -> Self { Self { state: c.state as i32, scratch_txid: c.scratch_txid.map(|v| hex::decode(v).unwrap()), // Rule #2 for type txid? feerate: c.feerate.map(|v| v.into()), owner: c.owner, // Rule #2 for type string? short_channel_id: c.short_channel_id.map(|v| v.to_string()), // Rule #2 for type short_channel_id? channel_id: c.channel_id.map(|v| v.to_vec()), // Rule #2 for type hash? funding_txid: c.funding_txid.map(|v| hex::decode(v).unwrap()), // Rule #2 for type txid? funding_outnum: c.funding_outnum, // Rule #2 for type u32? initial_feerate: c.initial_feerate, // Rule #2 for type string? last_feerate: c.last_feerate, // Rule #2 for type string? next_feerate: c.next_feerate, // Rule #2 for type string? next_fee_step: c.next_fee_step, // Rule #2 for type u32? // Field: ListPeers.peers[].channels[].inflight[] inflight: c.inflight.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 close_to: c.close_to.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? private: c.private, // Rule #2 for type boolean? opener: c.opener as i32, closer: c.closer.map(|v| v as i32), // Field: ListPeers.peers[].channels[].features[] features: c.features.into_iter().map(|i| i.into()).collect(), // Rule #3 for type ListpeersPeersChannelsFeatures funding: c.funding.map(|v| v.into()), to_us_msat: c.to_us_msat.map(|f| f.into()), // Rule #2 for type msat? min_to_us_msat: c.min_to_us_msat.map(|f| f.into()), // Rule #2 for type msat? max_to_us_msat: c.max_to_us_msat.map(|f| f.into()), // Rule #2 for type msat? total_msat: c.total_msat.map(|f| f.into()), // Rule #2 for type msat? fee_base_msat: c.fee_base_msat.map(|f| f.into()), // Rule #2 for type msat? fee_proportional_millionths: c.fee_proportional_millionths, // Rule #2 for type u32? dust_limit_msat: c.dust_limit_msat.map(|f| f.into()), // Rule #2 for type msat? max_total_htlc_in_msat: c.max_total_htlc_in_msat.map(|f| f.into()), // Rule #2 for type msat? their_reserve_msat: c.their_reserve_msat.map(|f| f.into()), // Rule #2 for type msat? our_reserve_msat: c.our_reserve_msat.map(|f| f.into()), // Rule #2 for type msat? spendable_msat: c.spendable_msat.map(|f| f.into()), // Rule #2 for type msat? receivable_msat: c.receivable_msat.map(|f| f.into()), // Rule #2 for type msat? minimum_htlc_in_msat: c.minimum_htlc_in_msat.map(|f| f.into()), // Rule #2 for type msat? minimum_htlc_out_msat: c.minimum_htlc_out_msat.map(|f| f.into()), // Rule #2 for type msat? maximum_htlc_out_msat: c.maximum_htlc_out_msat.map(|f| f.into()), // Rule #2 for type msat? their_to_self_delay: c.their_to_self_delay, // Rule #2 for type u32? our_to_self_delay: c.our_to_self_delay, // Rule #2 for type u32? max_accepted_htlcs: c.max_accepted_htlcs, // Rule #2 for type u32? alias: c.alias.map(|v| v.into()), // Field: ListPeers.peers[].channels[].status[] status: c.status.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 in_payments_offered: c.in_payments_offered, // Rule #2 for type u64? in_offered_msat: c.in_offered_msat.map(|f| f.into()), // Rule #2 for type msat? in_payments_fulfilled: c.in_payments_fulfilled, // Rule #2 for type u64? in_fulfilled_msat: c.in_fulfilled_msat.map(|f| f.into()), // Rule #2 for type msat? out_payments_offered: c.out_payments_offered, // Rule #2 for type u64? out_offered_msat: c.out_offered_msat.map(|f| f.into()), // Rule #2 for type msat? out_payments_fulfilled: c.out_payments_fulfilled, // Rule #2 for type u64? out_fulfilled_msat: c.out_fulfilled_msat.map(|f| f.into()), // Rule #2 for type msat? // Field: ListPeers.peers[].channels[].htlcs[] htlcs: c.htlcs.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 close_to_addr: c.close_to_addr, // Rule #2 for type string? } } } #[allow(unused_variables,deprecated)] impl From for pb::ListpeersPeers { fn from(c: responses::ListpeersPeers) -> Self { Self { id: c.id.serialize().to_vec(), // Rule #2 for type pubkey connected: c.connected, // Rule #2 for type boolean num_channels: c.num_channels, // Rule #2 for type u32? // Field: ListPeers.peers[].log[] log: c.log.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 // Field: ListPeers.peers[].channels[] channels: c.channels.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 // Field: ListPeers.peers[].netaddr[] netaddr: c.netaddr.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 remote_addr: c.remote_addr, // Rule #2 for type string? features: c.features.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? } } } #[allow(unused_variables)] impl From for pb::ListpeersResponse { fn from(c: responses::ListpeersResponse) -> Self { Self { // Field: ListPeers.peers[] peers: c.peers.into_iter().map(|i| i.into()).collect(), // Rule #3 for type ListpeersPeers } } } #[allow(unused_variables)] impl From for pb::ListfundsOutputs { fn from(c: responses::ListfundsOutputs) -> Self { Self { txid: hex::decode(&c.txid).unwrap(), // Rule #2 for type txid output: c.output, // Rule #2 for type u32 amount_msat: Some(c.amount_msat.into()), // Rule #2 for type msat scriptpubkey: hex::decode(&c.scriptpubkey).unwrap(), // Rule #2 for type hex address: c.address, // Rule #2 for type string? redeemscript: c.redeemscript.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? status: c.status as i32, reserved: c.reserved, // Rule #2 for type boolean blockheight: c.blockheight, // Rule #2 for type u32? } } } #[allow(unused_variables)] impl From for pb::ListfundsChannels { fn from(c: responses::ListfundsChannels) -> Self { Self { peer_id: c.peer_id.serialize().to_vec(), // Rule #2 for type pubkey our_amount_msat: Some(c.our_amount_msat.into()), // Rule #2 for type msat amount_msat: Some(c.amount_msat.into()), // Rule #2 for type msat funding_txid: hex::decode(&c.funding_txid).unwrap(), // Rule #2 for type txid funding_output: c.funding_output, // Rule #2 for type u32 connected: c.connected, // Rule #2 for type boolean state: c.state as i32, channel_id: c.channel_id.map(|v| v.to_vec()), // Rule #2 for type hash? short_channel_id: c.short_channel_id.map(|v| v.to_string()), // Rule #2 for type short_channel_id? } } } #[allow(unused_variables)] impl From for pb::ListfundsResponse { fn from(c: responses::ListfundsResponse) -> Self { Self { // Field: ListFunds.outputs[] outputs: c.outputs.into_iter().map(|i| i.into()).collect(), // Rule #3 for type ListfundsOutputs // Field: ListFunds.channels[] channels: c.channels.into_iter().map(|i| i.into()).collect(), // Rule #3 for type ListfundsChannels } } } #[allow(unused_variables)] impl From for pb::SendpayResponse { fn from(c: responses::SendpayResponse) -> Self { Self { id: c.id, // Rule #2 for type u64 groupid: c.groupid, // Rule #2 for type u64? payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash status: c.status as i32, amount_msat: c.amount_msat.map(|f| f.into()), // Rule #2 for type msat? destination: c.destination.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? created_at: c.created_at, // Rule #2 for type u64 completed_at: c.completed_at, // Rule #2 for type u64? amount_sent_msat: Some(c.amount_sent_msat.into()), // Rule #2 for type msat label: c.label, // Rule #2 for type string? partid: c.partid, // Rule #2 for type u64? bolt11: c.bolt11, // Rule #2 for type string? bolt12: c.bolt12, // Rule #2 for type string? payment_preimage: c.payment_preimage.map(|v| v.to_vec()), // Rule #2 for type secret? message: c.message, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::ListchannelsChannels { fn from(c: responses::ListchannelsChannels) -> Self { Self { source: c.source.serialize().to_vec(), // Rule #2 for type pubkey destination: c.destination.serialize().to_vec(), // Rule #2 for type pubkey short_channel_id: c.short_channel_id.to_string(), // Rule #2 for type short_channel_id direction: c.direction, // Rule #2 for type u32 public: c.public, // Rule #2 for type boolean amount_msat: Some(c.amount_msat.into()), // Rule #2 for type msat message_flags: c.message_flags.into(), // Rule #2 for type u8 channel_flags: c.channel_flags.into(), // Rule #2 for type u8 active: c.active, // Rule #2 for type boolean last_update: c.last_update, // Rule #2 for type u32 base_fee_millisatoshi: c.base_fee_millisatoshi, // Rule #2 for type u32 fee_per_millionth: c.fee_per_millionth, // Rule #2 for type u32 delay: c.delay, // Rule #2 for type u32 htlc_minimum_msat: Some(c.htlc_minimum_msat.into()), // Rule #2 for type msat htlc_maximum_msat: c.htlc_maximum_msat.map(|f| f.into()), // Rule #2 for type msat? features: hex::decode(&c.features).unwrap(), // Rule #2 for type hex } } } #[allow(unused_variables)] impl From for pb::ListchannelsResponse { fn from(c: responses::ListchannelsResponse) -> Self { Self { // Field: ListChannels.channels[] channels: c.channels.into_iter().map(|i| i.into()).collect(), // Rule #3 for type ListchannelsChannels } } } #[allow(unused_variables)] impl From for pb::AddgossipResponse { fn from(c: responses::AddgossipResponse) -> Self { Self { } } } #[allow(unused_variables)] impl From for pb::AutocleaninvoiceResponse { fn from(c: responses::AutocleaninvoiceResponse) -> Self { Self { enabled: c.enabled, // Rule #2 for type boolean expired_by: c.expired_by, // Rule #2 for type u64? cycle_seconds: c.cycle_seconds, // Rule #2 for type u64? } } } #[allow(unused_variables)] impl From for pb::CheckmessageResponse { fn from(c: responses::CheckmessageResponse) -> Self { Self { verified: c.verified, // Rule #2 for type boolean pubkey: c.pubkey.serialize().to_vec(), // Rule #2 for type pubkey } } } #[allow(unused_variables)] impl From for pb::CloseResponse { fn from(c: responses::CloseResponse) -> Self { Self { item_type: c.item_type as i32, tx: c.tx.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? txid: c.txid.map(|v| hex::decode(v).unwrap()), // Rule #2 for type txid? } } } #[allow(unused_variables)] impl From for pb::ConnectAddress { fn from(c: responses::ConnectAddress) -> Self { Self { item_type: c.item_type as i32, socket: c.socket, // Rule #2 for type string? address: c.address, // Rule #2 for type string? port: c.port.map(|v| v.into()), // Rule #2 for type u16? } } } #[allow(unused_variables)] impl From for pb::ConnectResponse { fn from(c: responses::ConnectResponse) -> Self { Self { id: c.id.serialize().to_vec(), // Rule #2 for type pubkey features: hex::decode(&c.features).unwrap(), // Rule #2 for type hex direction: c.direction as i32, address: Some(c.address.into()), } } } #[allow(unused_variables)] impl From for pb::CreateinvoiceResponse { fn from(c: responses::CreateinvoiceResponse) -> Self { Self { label: c.label, // Rule #2 for type string bolt11: c.bolt11, // Rule #2 for type string? bolt12: c.bolt12, // Rule #2 for type string? payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash amount_msat: c.amount_msat.map(|f| f.into()), // Rule #2 for type msat? status: c.status as i32, description: c.description, // Rule #2 for type string expires_at: c.expires_at, // Rule #2 for type u64 pay_index: c.pay_index, // Rule #2 for type u64? amount_received_msat: c.amount_received_msat.map(|f| f.into()), // Rule #2 for type msat? paid_at: c.paid_at, // Rule #2 for type u64? payment_preimage: c.payment_preimage.map(|v| v.to_vec()), // Rule #2 for type secret? local_offer_id: c.local_offer_id.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? invreq_payer_note: c.invreq_payer_note, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::DatastoreResponse { fn from(c: responses::DatastoreResponse) -> Self { Self { // Field: Datastore.key key: c.key.into_iter().map(|i| i.into()).collect(), // Rule #3 for type string generation: c.generation, // Rule #2 for type u64? hex: c.hex.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? string: c.string, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::CreateonionResponse { fn from(c: responses::CreateonionResponse) -> Self { Self { onion: hex::decode(&c.onion).unwrap(), // Rule #2 for type hex // Field: CreateOnion.shared_secrets[] shared_secrets: c.shared_secrets.into_iter().map(|i| i.to_vec()).collect(), // Rule #3 for type secret } } } #[allow(unused_variables)] impl From for pb::DeldatastoreResponse { fn from(c: responses::DeldatastoreResponse) -> Self { Self { // Field: DelDatastore.key key: c.key.into_iter().map(|i| i.into()).collect(), // Rule #3 for type string generation: c.generation, // Rule #2 for type u64? hex: c.hex.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? string: c.string, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::DelexpiredinvoiceResponse { fn from(c: responses::DelexpiredinvoiceResponse) -> Self { Self { } } } #[allow(unused_variables)] impl From for pb::DelinvoiceResponse { fn from(c: responses::DelinvoiceResponse) -> Self { Self { label: c.label, // Rule #2 for type string bolt11: c.bolt11, // Rule #2 for type string? bolt12: c.bolt12, // Rule #2 for type string? amount_msat: c.amount_msat.map(|f| f.into()), // Rule #2 for type msat? description: c.description, // Rule #2 for type string? payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash status: c.status as i32, expires_at: c.expires_at, // Rule #2 for type u64 local_offer_id: c.local_offer_id.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? invreq_payer_note: c.invreq_payer_note, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::InvoiceResponse { fn from(c: responses::InvoiceResponse) -> Self { Self { bolt11: c.bolt11, // Rule #2 for type string payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash payment_secret: c.payment_secret.to_vec(), // Rule #2 for type secret expires_at: c.expires_at, // Rule #2 for type u64 warning_capacity: c.warning_capacity, // Rule #2 for type string? warning_offline: c.warning_offline, // Rule #2 for type string? warning_deadends: c.warning_deadends, // Rule #2 for type string? warning_private_unused: c.warning_private_unused, // Rule #2 for type string? warning_mpp: c.warning_mpp, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::ListdatastoreDatastore { fn from(c: responses::ListdatastoreDatastore) -> Self { Self { // Field: ListDatastore.datastore[].key[] key: c.key.into_iter().map(|i| i.into()).collect(), // Rule #3 for type string generation: c.generation, // Rule #2 for type u64? hex: c.hex.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? string: c.string, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::ListdatastoreResponse { fn from(c: responses::ListdatastoreResponse) -> Self { Self { // Field: ListDatastore.datastore[] datastore: c.datastore.into_iter().map(|i| i.into()).collect(), // Rule #3 for type ListdatastoreDatastore } } } #[allow(unused_variables)] impl From for pb::ListinvoicesInvoices { fn from(c: responses::ListinvoicesInvoices) -> Self { Self { label: c.label, // Rule #2 for type string description: c.description, // Rule #2 for type string? payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash status: c.status as i32, expires_at: c.expires_at, // Rule #2 for type u64 amount_msat: c.amount_msat.map(|f| f.into()), // Rule #2 for type msat? bolt11: c.bolt11, // Rule #2 for type string? bolt12: c.bolt12, // Rule #2 for type string? local_offer_id: c.local_offer_id.map(|v| v.to_vec()), // Rule #2 for type hash? invreq_payer_note: c.invreq_payer_note, // Rule #2 for type string? pay_index: c.pay_index, // Rule #2 for type u64? amount_received_msat: c.amount_received_msat.map(|f| f.into()), // Rule #2 for type msat? paid_at: c.paid_at, // Rule #2 for type u64? payment_preimage: c.payment_preimage.map(|v| v.to_vec()), // Rule #2 for type secret? } } } #[allow(unused_variables)] impl From for pb::ListinvoicesResponse { fn from(c: responses::ListinvoicesResponse) -> Self { Self { // Field: ListInvoices.invoices[] invoices: c.invoices.into_iter().map(|i| i.into()).collect(), // Rule #3 for type ListinvoicesInvoices } } } #[allow(unused_variables)] impl From for pb::SendonionResponse { fn from(c: responses::SendonionResponse) -> Self { Self { id: c.id, // Rule #2 for type u64 payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash status: c.status as i32, amount_msat: c.amount_msat.map(|f| f.into()), // Rule #2 for type msat? destination: c.destination.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? created_at: c.created_at, // Rule #2 for type u64 amount_sent_msat: Some(c.amount_sent_msat.into()), // Rule #2 for type msat label: c.label, // Rule #2 for type string? bolt11: c.bolt11, // Rule #2 for type string? bolt12: c.bolt12, // Rule #2 for type string? partid: c.partid, // Rule #2 for type u64? payment_preimage: c.payment_preimage.map(|v| v.to_vec()), // Rule #2 for type secret? message: c.message, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::ListsendpaysPayments { fn from(c: responses::ListsendpaysPayments) -> Self { Self { id: c.id, // Rule #2 for type u64 groupid: c.groupid, // Rule #2 for type u64 partid: c.partid, // Rule #2 for type u64? payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash status: c.status as i32, amount_msat: c.amount_msat.map(|f| f.into()), // Rule #2 for type msat? destination: c.destination.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? created_at: c.created_at, // Rule #2 for type u64 amount_sent_msat: Some(c.amount_sent_msat.into()), // Rule #2 for type msat label: c.label, // Rule #2 for type string? bolt11: c.bolt11, // Rule #2 for type string? description: c.description, // Rule #2 for type string? bolt12: c.bolt12, // Rule #2 for type string? payment_preimage: c.payment_preimage.map(|v| v.to_vec()), // Rule #2 for type secret? erroronion: c.erroronion.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? } } } #[allow(unused_variables)] impl From for pb::ListsendpaysResponse { fn from(c: responses::ListsendpaysResponse) -> Self { Self { // Field: ListSendPays.payments[] payments: c.payments.into_iter().map(|i| i.into()).collect(), // Rule #3 for type ListsendpaysPayments } } } #[allow(unused_variables)] impl From for pb::ListtransactionsTransactionsInputs { fn from(c: responses::ListtransactionsTransactionsInputs) -> Self { Self { txid: hex::decode(&c.txid).unwrap(), // Rule #2 for type txid index: c.index, // Rule #2 for type u32 sequence: c.sequence, // Rule #2 for type u32 } } } #[allow(unused_variables)] impl From for pb::ListtransactionsTransactionsOutputs { fn from(c: responses::ListtransactionsTransactionsOutputs) -> Self { Self { index: c.index, // Rule #2 for type u32 amount_msat: Some(c.amount_msat.into()), // Rule #2 for type msat script_pub_key: hex::decode(&c.script_pub_key).unwrap(), // Rule #2 for type hex } } } #[allow(unused_variables)] impl From for pb::ListtransactionsTransactions { fn from(c: responses::ListtransactionsTransactions) -> Self { Self { hash: hex::decode(&c.hash).unwrap(), // Rule #2 for type txid rawtx: hex::decode(&c.rawtx).unwrap(), // Rule #2 for type hex blockheight: c.blockheight, // Rule #2 for type u32 txindex: c.txindex, // Rule #2 for type u32 locktime: c.locktime, // Rule #2 for type u32 version: c.version, // Rule #2 for type u32 // Field: ListTransactions.transactions[].inputs[] inputs: c.inputs.into_iter().map(|i| i.into()).collect(), // Rule #3 for type ListtransactionsTransactionsInputs // Field: ListTransactions.transactions[].outputs[] outputs: c.outputs.into_iter().map(|i| i.into()).collect(), // Rule #3 for type ListtransactionsTransactionsOutputs } } } #[allow(unused_variables)] impl From for pb::ListtransactionsResponse { fn from(c: responses::ListtransactionsResponse) -> Self { Self { // Field: ListTransactions.transactions[] transactions: c.transactions.into_iter().map(|i| i.into()).collect(), // Rule #3 for type ListtransactionsTransactions } } } #[allow(unused_variables)] impl From for pb::PayResponse { fn from(c: responses::PayResponse) -> Self { Self { payment_preimage: c.payment_preimage.to_vec(), // Rule #2 for type secret destination: c.destination.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash created_at: c.created_at, // Rule #2 for type number parts: c.parts, // Rule #2 for type u32 amount_msat: Some(c.amount_msat.into()), // Rule #2 for type msat amount_sent_msat: Some(c.amount_sent_msat.into()), // Rule #2 for type msat warning_partial_completion: c.warning_partial_completion, // Rule #2 for type string? status: c.status as i32, } } } #[allow(unused_variables)] impl From for pb::ListnodesNodesAddresses { fn from(c: responses::ListnodesNodesAddresses) -> Self { Self { item_type: c.item_type as i32, port: c.port.into(), // Rule #2 for type u16 address: c.address, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::ListnodesNodes { fn from(c: responses::ListnodesNodes) -> Self { Self { nodeid: c.nodeid.serialize().to_vec(), // Rule #2 for type pubkey last_timestamp: c.last_timestamp, // Rule #2 for type u32? alias: c.alias, // Rule #2 for type string? color: c.color.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? features: c.features.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? // Field: ListNodes.nodes[].addresses[] addresses: c.addresses.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 } } } #[allow(unused_variables)] impl From for pb::ListnodesResponse { fn from(c: responses::ListnodesResponse) -> Self { Self { // Field: ListNodes.nodes[] nodes: c.nodes.into_iter().map(|i| i.into()).collect(), // Rule #3 for type ListnodesNodes } } } #[allow(unused_variables)] impl From for pb::WaitanyinvoiceResponse { fn from(c: responses::WaitanyinvoiceResponse) -> Self { Self { label: c.label, // Rule #2 for type string description: c.description, // Rule #2 for type string payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash status: c.status as i32, expires_at: c.expires_at, // Rule #2 for type u64 amount_msat: c.amount_msat.map(|f| f.into()), // Rule #2 for type msat? bolt11: c.bolt11, // Rule #2 for type string? bolt12: c.bolt12, // Rule #2 for type string? pay_index: c.pay_index, // Rule #2 for type u64? amount_received_msat: c.amount_received_msat.map(|f| f.into()), // Rule #2 for type msat? paid_at: c.paid_at, // Rule #2 for type u64? payment_preimage: c.payment_preimage.map(|v| v.to_vec()), // Rule #2 for type secret? } } } #[allow(unused_variables)] impl From for pb::WaitinvoiceResponse { fn from(c: responses::WaitinvoiceResponse) -> Self { Self { label: c.label, // Rule #2 for type string description: c.description, // Rule #2 for type string payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash status: c.status as i32, expires_at: c.expires_at, // Rule #2 for type u64 amount_msat: c.amount_msat.map(|f| f.into()), // Rule #2 for type msat? bolt11: c.bolt11, // Rule #2 for type string? bolt12: c.bolt12, // Rule #2 for type string? pay_index: c.pay_index, // Rule #2 for type u64? amount_received_msat: c.amount_received_msat.map(|f| f.into()), // Rule #2 for type msat? paid_at: c.paid_at, // Rule #2 for type u64? payment_preimage: c.payment_preimage.map(|v| v.to_vec()), // Rule #2 for type secret? } } } #[allow(unused_variables)] impl From for pb::WaitsendpayResponse { fn from(c: responses::WaitsendpayResponse) -> Self { Self { id: c.id, // Rule #2 for type u64 groupid: c.groupid, // Rule #2 for type u64? payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash status: c.status as i32, amount_msat: c.amount_msat.map(|f| f.into()), // Rule #2 for type msat? destination: c.destination.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? created_at: c.created_at, // Rule #2 for type u64 completed_at: c.completed_at, // Rule #2 for type number? amount_sent_msat: Some(c.amount_sent_msat.into()), // Rule #2 for type msat label: c.label, // Rule #2 for type string? partid: c.partid, // Rule #2 for type u64? bolt11: c.bolt11, // Rule #2 for type string? bolt12: c.bolt12, // Rule #2 for type string? payment_preimage: c.payment_preimage.map(|v| v.to_vec()), // Rule #2 for type secret? } } } #[allow(unused_variables,deprecated)] impl From for pb::NewaddrResponse { fn from(c: responses::NewaddrResponse) -> Self { Self { p2tr: c.p2tr, // Rule #2 for type string? bech32: c.bech32, // Rule #2 for type string? #[allow(deprecated)] p2sh_segwit: c.p2sh_segwit, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::WithdrawResponse { fn from(c: responses::WithdrawResponse) -> Self { Self { tx: hex::decode(&c.tx).unwrap(), // Rule #2 for type hex txid: hex::decode(&c.txid).unwrap(), // Rule #2 for type txid psbt: c.psbt, // Rule #2 for type string } } } #[allow(unused_variables)] impl From for pb::KeysendResponse { fn from(c: responses::KeysendResponse) -> Self { Self { payment_preimage: c.payment_preimage.to_vec(), // Rule #2 for type secret destination: c.destination.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash created_at: c.created_at, // Rule #2 for type number parts: c.parts, // Rule #2 for type u32 amount_msat: Some(c.amount_msat.into()), // Rule #2 for type msat amount_sent_msat: Some(c.amount_sent_msat.into()), // Rule #2 for type msat warning_partial_completion: c.warning_partial_completion, // Rule #2 for type string? status: c.status as i32, } } } #[allow(unused_variables)] impl From for pb::FundpsbtReservations { fn from(c: responses::FundpsbtReservations) -> Self { Self { txid: hex::decode(&c.txid).unwrap(), // Rule #2 for type txid vout: c.vout, // Rule #2 for type u32 was_reserved: c.was_reserved, // Rule #2 for type boolean reserved: c.reserved, // Rule #2 for type boolean reserved_to_block: c.reserved_to_block, // Rule #2 for type u32 } } } #[allow(unused_variables)] impl From for pb::FundpsbtResponse { fn from(c: responses::FundpsbtResponse) -> Self { Self { psbt: c.psbt, // Rule #2 for type string feerate_per_kw: c.feerate_per_kw, // Rule #2 for type u32 estimated_final_weight: c.estimated_final_weight, // Rule #2 for type u32 excess_msat: Some(c.excess_msat.into()), // Rule #2 for type msat change_outnum: c.change_outnum, // Rule #2 for type u32? // Field: FundPsbt.reservations[] reservations: c.reservations.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 } } } #[allow(unused_variables)] impl From for pb::SendpsbtResponse { fn from(c: responses::SendpsbtResponse) -> Self { Self { tx: hex::decode(&c.tx).unwrap(), // Rule #2 for type hex txid: hex::decode(&c.txid).unwrap(), // Rule #2 for type txid } } } #[allow(unused_variables)] impl From for pb::SignpsbtResponse { fn from(c: responses::SignpsbtResponse) -> Self { Self { signed_psbt: c.signed_psbt, // Rule #2 for type string } } } #[allow(unused_variables)] impl From for pb::UtxopsbtReservations { fn from(c: responses::UtxopsbtReservations) -> Self { Self { txid: hex::decode(&c.txid).unwrap(), // Rule #2 for type txid vout: c.vout, // Rule #2 for type u32 was_reserved: c.was_reserved, // Rule #2 for type boolean reserved: c.reserved, // Rule #2 for type boolean reserved_to_block: c.reserved_to_block, // Rule #2 for type u32 } } } #[allow(unused_variables)] impl From for pb::UtxopsbtResponse { fn from(c: responses::UtxopsbtResponse) -> Self { Self { psbt: c.psbt, // Rule #2 for type string feerate_per_kw: c.feerate_per_kw, // Rule #2 for type u32 estimated_final_weight: c.estimated_final_weight, // Rule #2 for type u32 excess_msat: Some(c.excess_msat.into()), // Rule #2 for type msat change_outnum: c.change_outnum, // Rule #2 for type u32? // Field: UtxoPsbt.reservations[] reservations: c.reservations.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 } } } #[allow(unused_variables)] impl From for pb::TxdiscardResponse { fn from(c: responses::TxdiscardResponse) -> Self { Self { unsigned_tx: hex::decode(&c.unsigned_tx).unwrap(), // Rule #2 for type hex txid: hex::decode(&c.txid).unwrap(), // Rule #2 for type txid } } } #[allow(unused_variables)] impl From for pb::TxprepareResponse { fn from(c: responses::TxprepareResponse) -> Self { Self { psbt: c.psbt, // Rule #2 for type string unsigned_tx: hex::decode(&c.unsigned_tx).unwrap(), // Rule #2 for type hex txid: hex::decode(&c.txid).unwrap(), // Rule #2 for type txid } } } #[allow(unused_variables)] impl From for pb::TxsendResponse { fn from(c: responses::TxsendResponse) -> Self { Self { psbt: c.psbt, // Rule #2 for type string tx: hex::decode(&c.tx).unwrap(), // Rule #2 for type hex txid: hex::decode(&c.txid).unwrap(), // Rule #2 for type txid } } } #[allow(unused_variables)] impl From for pb::ListpeerchannelsChannelsFeerate { fn from(c: responses::ListpeerchannelsChannelsFeerate) -> Self { Self { perkw: c.perkw, // Rule #2 for type u32? perkb: c.perkb, // Rule #2 for type u32? } } } #[allow(unused_variables)] impl From for pb::ListpeerchannelsChannelsInflight { fn from(c: responses::ListpeerchannelsChannelsInflight) -> Self { Self { funding_txid: c.funding_txid.map(|v| hex::decode(v).unwrap()), // Rule #2 for type txid? funding_outnum: c.funding_outnum, // Rule #2 for type u32? feerate: c.feerate, // Rule #2 for type string? total_funding_msat: c.total_funding_msat.map(|f| f.into()), // Rule #2 for type msat? our_funding_msat: c.our_funding_msat.map(|f| f.into()), // Rule #2 for type msat? scratch_txid: c.scratch_txid.map(|v| hex::decode(v).unwrap()), // Rule #2 for type txid? } } } #[allow(unused_variables)] impl From for pb::ListpeerchannelsChannelsFunding { fn from(c: responses::ListpeerchannelsChannelsFunding) -> Self { Self { pushed_msat: c.pushed_msat.map(|f| f.into()), // Rule #2 for type msat? local_funds_msat: c.local_funds_msat.map(|f| f.into()), // Rule #2 for type msat? remote_funds_msat: c.remote_funds_msat.map(|f| f.into()), // Rule #2 for type msat? fee_paid_msat: c.fee_paid_msat.map(|f| f.into()), // Rule #2 for type msat? fee_rcvd_msat: c.fee_rcvd_msat.map(|f| f.into()), // Rule #2 for type msat? } } } #[allow(unused_variables)] impl From for pb::ListpeerchannelsChannelsAlias { fn from(c: responses::ListpeerchannelsChannelsAlias) -> Self { Self { local: c.local.map(|v| v.to_string()), // Rule #2 for type short_channel_id? remote: c.remote.map(|v| v.to_string()), // Rule #2 for type short_channel_id? } } } #[allow(unused_variables)] impl From for pb::ListpeerchannelsChannelsHtlcs { fn from(c: responses::ListpeerchannelsChannelsHtlcs) -> Self { Self { direction: c.direction.map(|v| v as i32), id: c.id, // Rule #2 for type u64? amount_msat: c.amount_msat.map(|f| f.into()), // Rule #2 for type msat? expiry: c.expiry, // Rule #2 for type u32? payment_hash: c.payment_hash.map(|v| v.to_vec()), // Rule #2 for type hash? local_trimmed: c.local_trimmed, // Rule #2 for type boolean? status: c.status, // Rule #2 for type string? state: c.state.map(|v| v as i32), } } } #[allow(unused_variables)] impl From for pb::ListpeerchannelsChannels { fn from(c: responses::ListpeerchannelsChannels) -> Self { Self { peer_id: c.peer_id.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? peer_connected: c.peer_connected, // Rule #2 for type boolean? state: c.state.map(|v| v as i32), scratch_txid: c.scratch_txid.map(|v| hex::decode(v).unwrap()), // Rule #2 for type txid? ignore_fee_limits: c.ignore_fee_limits, // Rule #2 for type boolean? feerate: c.feerate.map(|v| v.into()), owner: c.owner, // Rule #2 for type string? short_channel_id: c.short_channel_id.map(|v| v.to_string()), // Rule #2 for type short_channel_id? channel_id: c.channel_id.map(|v| v.to_vec()), // Rule #2 for type hash? funding_txid: c.funding_txid.map(|v| hex::decode(v).unwrap()), // Rule #2 for type txid? funding_outnum: c.funding_outnum, // Rule #2 for type u32? initial_feerate: c.initial_feerate, // Rule #2 for type string? last_feerate: c.last_feerate, // Rule #2 for type string? next_feerate: c.next_feerate, // Rule #2 for type string? next_fee_step: c.next_fee_step, // Rule #2 for type u32? // Field: ListPeerChannels.channels[].inflight[] inflight: c.inflight.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 close_to: c.close_to.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? private: c.private, // Rule #2 for type boolean? opener: c.opener.map(|v| v as i32), closer: c.closer.map(|v| v as i32), funding: c.funding.map(|v| v.into()), to_us_msat: c.to_us_msat.map(|f| f.into()), // Rule #2 for type msat? min_to_us_msat: c.min_to_us_msat.map(|f| f.into()), // Rule #2 for type msat? max_to_us_msat: c.max_to_us_msat.map(|f| f.into()), // Rule #2 for type msat? total_msat: c.total_msat.map(|f| f.into()), // Rule #2 for type msat? fee_base_msat: c.fee_base_msat.map(|f| f.into()), // Rule #2 for type msat? fee_proportional_millionths: c.fee_proportional_millionths, // Rule #2 for type u32? dust_limit_msat: c.dust_limit_msat.map(|f| f.into()), // Rule #2 for type msat? max_total_htlc_in_msat: c.max_total_htlc_in_msat.map(|f| f.into()), // Rule #2 for type msat? their_reserve_msat: c.their_reserve_msat.map(|f| f.into()), // Rule #2 for type msat? our_reserve_msat: c.our_reserve_msat.map(|f| f.into()), // Rule #2 for type msat? spendable_msat: c.spendable_msat.map(|f| f.into()), // Rule #2 for type msat? receivable_msat: c.receivable_msat.map(|f| f.into()), // Rule #2 for type msat? minimum_htlc_in_msat: c.minimum_htlc_in_msat.map(|f| f.into()), // Rule #2 for type msat? minimum_htlc_out_msat: c.minimum_htlc_out_msat.map(|f| f.into()), // Rule #2 for type msat? maximum_htlc_out_msat: c.maximum_htlc_out_msat.map(|f| f.into()), // Rule #2 for type msat? their_to_self_delay: c.their_to_self_delay, // Rule #2 for type u32? our_to_self_delay: c.our_to_self_delay, // Rule #2 for type u32? max_accepted_htlcs: c.max_accepted_htlcs, // Rule #2 for type u32? alias: c.alias.map(|v| v.into()), // Field: ListPeerChannels.channels[].status[] status: c.status.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 in_payments_offered: c.in_payments_offered, // Rule #2 for type u64? in_offered_msat: c.in_offered_msat.map(|f| f.into()), // Rule #2 for type msat? in_payments_fulfilled: c.in_payments_fulfilled, // Rule #2 for type u64? in_fulfilled_msat: c.in_fulfilled_msat.map(|f| f.into()), // Rule #2 for type msat? out_payments_offered: c.out_payments_offered, // Rule #2 for type u64? out_offered_msat: c.out_offered_msat.map(|f| f.into()), // Rule #2 for type msat? out_payments_fulfilled: c.out_payments_fulfilled, // Rule #2 for type u64? out_fulfilled_msat: c.out_fulfilled_msat.map(|f| f.into()), // Rule #2 for type msat? // Field: ListPeerChannels.channels[].htlcs[] htlcs: c.htlcs.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 close_to_addr: c.close_to_addr, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::ListpeerchannelsResponse { fn from(c: responses::ListpeerchannelsResponse) -> Self { Self { // Field: ListPeerChannels.channels[] channels: c.channels.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 } } } #[allow(unused_variables)] impl From for pb::ListclosedchannelsClosedchannelsAlias { fn from(c: responses::ListclosedchannelsClosedchannelsAlias) -> Self { Self { local: c.local.map(|v| v.to_string()), // Rule #2 for type short_channel_id? remote: c.remote.map(|v| v.to_string()), // Rule #2 for type short_channel_id? } } } #[allow(unused_variables)] impl From for pb::ListclosedchannelsClosedchannels { fn from(c: responses::ListclosedchannelsClosedchannels) -> Self { Self { peer_id: c.peer_id.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? channel_id: c.channel_id.to_vec(), // Rule #2 for type hash short_channel_id: c.short_channel_id.map(|v| v.to_string()), // Rule #2 for type short_channel_id? alias: c.alias.map(|v| v.into()), opener: c.opener as i32, closer: c.closer.map(|v| v as i32), private: c.private, // Rule #2 for type boolean total_local_commitments: c.total_local_commitments, // Rule #2 for type u64 total_remote_commitments: c.total_remote_commitments, // Rule #2 for type u64 total_htlcs_sent: c.total_htlcs_sent, // Rule #2 for type u64 funding_txid: hex::decode(&c.funding_txid).unwrap(), // Rule #2 for type txid funding_outnum: c.funding_outnum, // Rule #2 for type u32 leased: c.leased, // Rule #2 for type boolean funding_fee_paid_msat: c.funding_fee_paid_msat.map(|f| f.into()), // Rule #2 for type msat? funding_fee_rcvd_msat: c.funding_fee_rcvd_msat.map(|f| f.into()), // Rule #2 for type msat? funding_pushed_msat: c.funding_pushed_msat.map(|f| f.into()), // Rule #2 for type msat? total_msat: Some(c.total_msat.into()), // Rule #2 for type msat final_to_us_msat: Some(c.final_to_us_msat.into()), // Rule #2 for type msat min_to_us_msat: Some(c.min_to_us_msat.into()), // Rule #2 for type msat max_to_us_msat: Some(c.max_to_us_msat.into()), // Rule #2 for type msat last_commitment_txid: c.last_commitment_txid.map(|v| v.to_vec()), // Rule #2 for type hash? last_commitment_fee_msat: c.last_commitment_fee_msat.map(|f| f.into()), // Rule #2 for type msat? close_cause: c.close_cause as i32, } } } #[allow(unused_variables)] impl From for pb::ListclosedchannelsResponse { fn from(c: responses::ListclosedchannelsResponse) -> Self { Self { // Field: ListClosedChannels.closedchannels[] closedchannels: c.closedchannels.into_iter().map(|i| i.into()).collect(), // Rule #3 for type ListclosedchannelsClosedchannels } } } #[allow(unused_variables)] impl From for pb::DecodepayFallbacks { fn from(c: responses::DecodepayFallbacks) -> Self { Self { item_type: c.item_type as i32, addr: c.addr, // Rule #2 for type string? hex: hex::decode(&c.hex).unwrap(), // Rule #2 for type hex } } } #[allow(unused_variables)] impl From for pb::DecodepayExtra { fn from(c: responses::DecodepayExtra) -> Self { Self { tag: c.tag, // Rule #2 for type string data: c.data, // Rule #2 for type string } } } #[allow(unused_variables)] impl From for pb::DecodepayResponse { fn from(c: responses::DecodepayResponse) -> Self { Self { currency: c.currency, // Rule #2 for type string created_at: c.created_at, // Rule #2 for type u64 expiry: c.expiry, // Rule #2 for type u64 payee: c.payee.serialize().to_vec(), // Rule #2 for type pubkey amount_msat: c.amount_msat.map(|f| f.into()), // Rule #2 for type msat? payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash signature: c.signature, // Rule #2 for type signature description: c.description, // Rule #2 for type string? description_hash: c.description_hash.map(|v| v.to_vec()), // Rule #2 for type hash? min_final_cltv_expiry: c.min_final_cltv_expiry, // Rule #2 for type u32 payment_secret: c.payment_secret.map(|v| v.to_vec()), // Rule #2 for type hash? features: c.features.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? payment_metadata: c.payment_metadata.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? // Field: DecodePay.fallbacks[] fallbacks: c.fallbacks.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 // Field: DecodePay.extra[] extra: c.extra.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 } } } #[allow(unused_variables)] impl From for pb::DecodeOfferPaths { fn from(c: responses::DecodeOffer_paths) -> Self { Self { first_node_id: c.first_node_id.serialize().to_vec(), // Rule #2 for type pubkey blinding: c.blinding.serialize().to_vec(), // Rule #2 for type pubkey } } } #[allow(unused_variables)] impl From for pb::DecodeInvoiceFallbacks { fn from(c: responses::DecodeInvoice_fallbacks) -> Self { Self { version: c.version.into(), // Rule #2 for type u8 hex: hex::decode(&c.hex).unwrap(), // Rule #2 for type hex address: c.address, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::DecodeFallbacks { fn from(c: responses::DecodeFallbacks) -> Self { Self { warning_invoice_fallbacks_version_invalid: c.warning_invoice_fallbacks_version_invalid, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::DecodeExtra { fn from(c: responses::DecodeExtra) -> Self { Self { tag: c.tag, // Rule #2 for type string data: c.data, // Rule #2 for type string } } } #[allow(unused_variables)] impl From for pb::DecodeRestrictions { fn from(c: responses::DecodeRestrictions) -> Self { Self { // Field: Decode.restrictions[].alternatives[] alternatives: c.alternatives.into_iter().map(|i| i.into()).collect(), // Rule #3 for type string summary: c.summary, // Rule #2 for type string } } } #[allow(unused_variables)] impl From for pb::DecodeResponse { fn from(c: responses::DecodeResponse) -> Self { Self { item_type: c.item_type as i32, valid: c.valid, // Rule #2 for type boolean offer_id: c.offer_id.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? // Field: Decode.offer_chains[] offer_chains: c.offer_chains.map(|arr| arr.into_iter().map(|i| i.to_vec()).collect()).unwrap_or(vec![]), // Rule #3 offer_metadata: c.offer_metadata.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? offer_currency: c.offer_currency, // Rule #2 for type string? warning_unknown_offer_currency: c.warning_unknown_offer_currency, // Rule #2 for type string? currency_minor_unit: c.currency_minor_unit, // Rule #2 for type u32? offer_amount: c.offer_amount, // Rule #2 for type u64? offer_amount_msat: c.offer_amount_msat.map(|f| f.into()), // Rule #2 for type msat? offer_description: c.offer_description, // Rule #2 for type string? offer_issuer: c.offer_issuer, // Rule #2 for type string? offer_features: c.offer_features.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? offer_absolute_expiry: c.offer_absolute_expiry, // Rule #2 for type u64? offer_quantity_max: c.offer_quantity_max, // Rule #2 for type u64? // Field: Decode.offer_paths[] offer_paths: c.offer_paths.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 offer_node_id: c.offer_node_id.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? warning_missing_offer_node_id: c.warning_missing_offer_node_id, // Rule #2 for type string? warning_invalid_offer_description: c.warning_invalid_offer_description, // Rule #2 for type string? warning_missing_offer_description: c.warning_missing_offer_description, // Rule #2 for type string? warning_invalid_offer_currency: c.warning_invalid_offer_currency, // Rule #2 for type string? warning_invalid_offer_issuer: c.warning_invalid_offer_issuer, // Rule #2 for type string? invreq_metadata: c.invreq_metadata.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? invreq_payer_id: c.invreq_payer_id.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? invreq_chain: c.invreq_chain.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? invreq_amount_msat: c.invreq_amount_msat.map(|f| f.into()), // Rule #2 for type msat? invreq_features: c.invreq_features.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? invreq_quantity: c.invreq_quantity, // Rule #2 for type u64? invreq_payer_note: c.invreq_payer_note, // Rule #2 for type string? invreq_recurrence_counter: c.invreq_recurrence_counter, // Rule #2 for type u32? invreq_recurrence_start: c.invreq_recurrence_start, // Rule #2 for type u32? warning_missing_invreq_metadata: c.warning_missing_invreq_metadata, // Rule #2 for type string? warning_missing_invreq_payer_id: c.warning_missing_invreq_payer_id, // Rule #2 for type string? warning_invalid_invreq_payer_note: c.warning_invalid_invreq_payer_note, // Rule #2 for type string? warning_missing_invoice_request_signature: c.warning_missing_invoice_request_signature, // Rule #2 for type string? warning_invalid_invoice_request_signature: c.warning_invalid_invoice_request_signature, // Rule #2 for type string? invoice_created_at: c.invoice_created_at, // Rule #2 for type u64? invoice_relative_expiry: c.invoice_relative_expiry, // Rule #2 for type u32? invoice_payment_hash: c.invoice_payment_hash.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? invoice_amount_msat: c.invoice_amount_msat.map(|f| f.into()), // Rule #2 for type msat? // Field: Decode.invoice_fallbacks[] invoice_fallbacks: c.invoice_fallbacks.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 invoice_features: c.invoice_features.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? invoice_node_id: c.invoice_node_id.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? invoice_recurrence_basetime: c.invoice_recurrence_basetime, // Rule #2 for type u64? warning_missing_invoice_paths: c.warning_missing_invoice_paths, // Rule #2 for type string? warning_missing_invoice_blindedpay: c.warning_missing_invoice_blindedpay, // Rule #2 for type string? warning_missing_invoice_created_at: c.warning_missing_invoice_created_at, // Rule #2 for type string? warning_missing_invoice_payment_hash: c.warning_missing_invoice_payment_hash, // Rule #2 for type string? warning_missing_invoice_amount: c.warning_missing_invoice_amount, // Rule #2 for type string? warning_missing_invoice_recurrence_basetime: c.warning_missing_invoice_recurrence_basetime, // Rule #2 for type string? warning_missing_invoice_node_id: c.warning_missing_invoice_node_id, // Rule #2 for type string? warning_missing_invoice_signature: c.warning_missing_invoice_signature, // Rule #2 for type string? warning_invalid_invoice_signature: c.warning_invalid_invoice_signature, // Rule #2 for type string? // Field: Decode.fallbacks[] fallbacks: c.fallbacks.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 created_at: c.created_at, // Rule #2 for type u64? expiry: c.expiry, // Rule #2 for type u64? payee: c.payee.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? payment_hash: c.payment_hash.map(|v| v.to_vec()), // Rule #2 for type hash? description_hash: c.description_hash.map(|v| v.to_vec()), // Rule #2 for type hash? min_final_cltv_expiry: c.min_final_cltv_expiry, // Rule #2 for type u32? payment_secret: c.payment_secret.map(|v| v.to_vec()), // Rule #2 for type secret? payment_metadata: c.payment_metadata.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? // Field: Decode.extra[] extra: c.extra.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 unique_id: c.unique_id, // Rule #2 for type string? version: c.version, // Rule #2 for type string? string: c.string, // Rule #2 for type string? // Field: Decode.restrictions[] restrictions: c.restrictions.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 warning_rune_invalid_utf8: c.warning_rune_invalid_utf8, // Rule #2 for type string? hex: c.hex.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? } } } #[allow(unused_variables)] impl From for pb::DisconnectResponse { fn from(c: responses::DisconnectResponse) -> Self { Self { } } } #[allow(unused_variables)] impl From for pb::FeeratesPerkbEstimates { fn from(c: responses::FeeratesPerkbEstimates) -> Self { Self { blockcount: c.blockcount, // Rule #2 for type u32? feerate: c.feerate, // Rule #2 for type u32? smoothed_feerate: c.smoothed_feerate, // Rule #2 for type u32? } } } #[allow(unused_variables,deprecated)] impl From for pb::FeeratesPerkb { fn from(c: responses::FeeratesPerkb) -> Self { Self { min_acceptable: c.min_acceptable, // Rule #2 for type u32 max_acceptable: c.max_acceptable, // Rule #2 for type u32 floor: c.floor, // Rule #2 for type u32? // Field: Feerates.perkb.estimates[] estimates: c.estimates.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 opening: c.opening, // Rule #2 for type u32? mutual_close: c.mutual_close, // Rule #2 for type u32? unilateral_close: c.unilateral_close, // Rule #2 for type u32? unilateral_anchor_close: c.unilateral_anchor_close, // Rule #2 for type u32? #[allow(deprecated)] delayed_to_us: c.delayed_to_us, // Rule #2 for type u32? #[allow(deprecated)] htlc_resolution: c.htlc_resolution, // Rule #2 for type u32? penalty: c.penalty, // Rule #2 for type u32? } } } #[allow(unused_variables)] impl From for pb::FeeratesPerkwEstimates { fn from(c: responses::FeeratesPerkwEstimates) -> Self { Self { blockcount: c.blockcount, // Rule #2 for type u32? feerate: c.feerate, // Rule #2 for type u32? smoothed_feerate: c.smoothed_feerate, // Rule #2 for type u32? } } } #[allow(unused_variables,deprecated)] impl From for pb::FeeratesPerkw { fn from(c: responses::FeeratesPerkw) -> Self { Self { min_acceptable: c.min_acceptable, // Rule #2 for type u32 max_acceptable: c.max_acceptable, // Rule #2 for type u32 floor: c.floor, // Rule #2 for type u32? // Field: Feerates.perkw.estimates[] estimates: c.estimates.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 opening: c.opening, // Rule #2 for type u32? mutual_close: c.mutual_close, // Rule #2 for type u32? unilateral_close: c.unilateral_close, // Rule #2 for type u32? unilateral_anchor_close: c.unilateral_anchor_close, // Rule #2 for type u32? #[allow(deprecated)] delayed_to_us: c.delayed_to_us, // Rule #2 for type u32? #[allow(deprecated)] htlc_resolution: c.htlc_resolution, // Rule #2 for type u32? penalty: c.penalty, // Rule #2 for type u32? } } } #[allow(unused_variables)] impl From for pb::FeeratesOnchainFeeEstimates { fn from(c: responses::FeeratesOnchain_fee_estimates) -> Self { Self { opening_channel_satoshis: c.opening_channel_satoshis, // Rule #2 for type u64 mutual_close_satoshis: c.mutual_close_satoshis, // Rule #2 for type u64 unilateral_close_satoshis: c.unilateral_close_satoshis, // Rule #2 for type u64 unilateral_close_nonanchor_satoshis: c.unilateral_close_nonanchor_satoshis, // Rule #2 for type u64? htlc_timeout_satoshis: c.htlc_timeout_satoshis, // Rule #2 for type u64 htlc_success_satoshis: c.htlc_success_satoshis, // Rule #2 for type u64 } } } #[allow(unused_variables)] impl From for pb::FeeratesResponse { fn from(c: responses::FeeratesResponse) -> Self { Self { warning_missing_feerates: c.warning_missing_feerates, // Rule #2 for type string? perkb: c.perkb.map(|v| v.into()), perkw: c.perkw.map(|v| v.into()), onchain_fee_estimates: c.onchain_fee_estimates.map(|v| v.into()), } } } #[allow(unused_variables)] impl From for pb::FundchannelResponse { fn from(c: responses::FundchannelResponse) -> Self { Self { tx: hex::decode(&c.tx).unwrap(), // Rule #2 for type hex txid: hex::decode(&c.txid).unwrap(), // Rule #2 for type txid outnum: c.outnum, // Rule #2 for type u32 channel_id: hex::decode(&c.channel_id).unwrap(), // Rule #2 for type hex close_to: c.close_to.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? mindepth: c.mindepth, // Rule #2 for type u32? } } } #[allow(unused_variables)] impl From for pb::GetrouteRoute { fn from(c: responses::GetrouteRoute) -> Self { Self { id: c.id.serialize().to_vec(), // Rule #2 for type pubkey channel: c.channel.to_string(), // Rule #2 for type short_channel_id direction: c.direction, // Rule #2 for type u32 amount_msat: Some(c.amount_msat.into()), // Rule #2 for type msat delay: c.delay, // Rule #2 for type u32 style: c.style as i32, } } } #[allow(unused_variables)] impl From for pb::GetrouteResponse { fn from(c: responses::GetrouteResponse) -> Self { Self { // Field: GetRoute.route[] route: c.route.into_iter().map(|i| i.into()).collect(), // Rule #3 for type GetrouteRoute } } } #[allow(unused_variables)] impl From for pb::ListforwardsForwards { fn from(c: responses::ListforwardsForwards) -> Self { Self { in_channel: c.in_channel.to_string(), // Rule #2 for type short_channel_id in_htlc_id: c.in_htlc_id, // Rule #2 for type u64? in_msat: Some(c.in_msat.into()), // Rule #2 for type msat status: c.status as i32, received_time: c.received_time, // Rule #2 for type number out_channel: c.out_channel.map(|v| v.to_string()), // Rule #2 for type short_channel_id? out_htlc_id: c.out_htlc_id, // Rule #2 for type u64? style: c.style.map(|v| v as i32), fee_msat: c.fee_msat.map(|f| f.into()), // Rule #2 for type msat? out_msat: c.out_msat.map(|f| f.into()), // Rule #2 for type msat? } } } #[allow(unused_variables)] impl From for pb::ListforwardsResponse { fn from(c: responses::ListforwardsResponse) -> Self { Self { // Field: ListForwards.forwards[] forwards: c.forwards.into_iter().map(|i| i.into()).collect(), // Rule #3 for type ListforwardsForwards } } } #[allow(unused_variables)] impl From for pb::ListpaysPays { fn from(c: responses::ListpaysPays) -> Self { Self { payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash status: c.status as i32, destination: c.destination.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? created_at: c.created_at, // Rule #2 for type u64 completed_at: c.completed_at, // Rule #2 for type u64? label: c.label, // Rule #2 for type string? bolt11: c.bolt11, // Rule #2 for type string? description: c.description, // Rule #2 for type string? bolt12: c.bolt12, // Rule #2 for type string? preimage: c.preimage.map(|v| v.to_vec()), // Rule #2 for type secret? number_of_parts: c.number_of_parts, // Rule #2 for type u64? erroronion: c.erroronion.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? } } } #[allow(unused_variables)] impl From for pb::ListpaysResponse { fn from(c: responses::ListpaysResponse) -> Self { Self { // Field: ListPays.pays[] pays: c.pays.into_iter().map(|i| i.into()).collect(), // Rule #3 for type ListpaysPays } } } #[allow(unused_variables)] impl From for pb::PingResponse { fn from(c: responses::PingResponse) -> Self { Self { totlen: c.totlen.into(), // Rule #2 for type u16 } } } #[allow(unused_variables)] impl From for pb::SendcustommsgResponse { fn from(c: responses::SendcustommsgResponse) -> Self { Self { status: c.status, // Rule #2 for type string } } } #[allow(unused_variables)] impl From for pb::SetchannelChannels { fn from(c: responses::SetchannelChannels) -> Self { Self { peer_id: c.peer_id.serialize().to_vec(), // Rule #2 for type pubkey channel_id: hex::decode(&c.channel_id).unwrap(), // Rule #2 for type hex short_channel_id: c.short_channel_id.map(|v| v.to_string()), // Rule #2 for type short_channel_id? fee_base_msat: Some(c.fee_base_msat.into()), // Rule #2 for type msat fee_proportional_millionths: c.fee_proportional_millionths, // Rule #2 for type u32 ignore_fee_limits: c.ignore_fee_limits, // Rule #2 for type boolean? minimum_htlc_out_msat: Some(c.minimum_htlc_out_msat.into()), // Rule #2 for type msat warning_htlcmin_too_low: c.warning_htlcmin_too_low, // Rule #2 for type string? maximum_htlc_out_msat: Some(c.maximum_htlc_out_msat.into()), // Rule #2 for type msat warning_htlcmax_too_high: c.warning_htlcmax_too_high, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::SetchannelResponse { fn from(c: responses::SetchannelResponse) -> Self { Self { // Field: SetChannel.channels[] channels: c.channels.into_iter().map(|i| i.into()).collect(), // Rule #3 for type SetchannelChannels } } } #[allow(unused_variables)] impl From for pb::SigninvoiceResponse { fn from(c: responses::SigninvoiceResponse) -> Self { Self { bolt11: c.bolt11, // Rule #2 for type string } } } #[allow(unused_variables)] impl From for pb::SignmessageResponse { fn from(c: responses::SignmessageResponse) -> Self { Self { signature: hex::decode(&c.signature).unwrap(), // Rule #2 for type hex recid: hex::decode(&c.recid).unwrap(), // Rule #2 for type hex zbase: c.zbase, // Rule #2 for type string } } } #[allow(unused_variables)] impl From for pb::StopResponse { fn from(c: responses::StopResponse) -> Self { Self { } } } #[allow(unused_variables)] impl From for pb::PreapprovekeysendResponse { fn from(c: responses::PreapprovekeysendResponse) -> Self { Self { } } } #[allow(unused_variables)] impl From for pb::PreapproveinvoiceResponse { fn from(c: responses::PreapproveinvoiceResponse) -> Self { Self { } } } #[allow(unused_variables)] impl From for pb::GetinfoRequest { fn from(c: requests::GetinfoRequest) -> Self { Self { } } } #[allow(unused_variables)] impl From for pb::ListpeersRequest { fn from(c: requests::ListpeersRequest) -> Self { Self { id: c.id.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? level: c.level, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::ListfundsRequest { fn from(c: requests::ListfundsRequest) -> Self { Self { spent: c.spent, // Rule #2 for type boolean? } } } #[allow(unused_variables)] impl From for pb::SendpayRoute { fn from(c: requests::SendpayRoute) -> Self { Self { amount_msat: Some(c.amount_msat.into()), // Rule #2 for type msat id: c.id.serialize().to_vec(), // Rule #2 for type pubkey delay: c.delay.into(), // Rule #2 for type u16 channel: c.channel.to_string(), // Rule #2 for type short_channel_id } } } #[allow(unused_variables)] impl From for pb::SendpayRequest { fn from(c: requests::SendpayRequest) -> Self { Self { // Field: SendPay.route[] route: c.route.into_iter().map(|i| i.into()).collect(), // Rule #3 for type SendpayRoute payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash label: c.label, // Rule #2 for type string? amount_msat: c.amount_msat.map(|f| f.into()), // Rule #2 for type msat? bolt11: c.bolt11, // Rule #2 for type string? payment_secret: c.payment_secret.map(|v| v.to_vec()), // Rule #2 for type secret? partid: c.partid.map(|v| v.into()), // Rule #2 for type u16? localinvreqid: c.localinvreqid.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? groupid: c.groupid, // Rule #2 for type u64? } } } #[allow(unused_variables)] impl From for pb::ListchannelsRequest { fn from(c: requests::ListchannelsRequest) -> Self { Self { short_channel_id: c.short_channel_id.map(|v| v.to_string()), // Rule #2 for type short_channel_id? source: c.source.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? destination: c.destination.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? } } } #[allow(unused_variables)] impl From for pb::AddgossipRequest { fn from(c: requests::AddgossipRequest) -> Self { Self { message: hex::decode(&c.message).unwrap(), // Rule #2 for type hex } } } #[allow(unused_variables)] impl From for pb::AutocleaninvoiceRequest { fn from(c: requests::AutocleaninvoiceRequest) -> Self { Self { expired_by: c.expired_by, // Rule #2 for type u64? cycle_seconds: c.cycle_seconds, // Rule #2 for type u64? } } } #[allow(unused_variables)] impl From for pb::CheckmessageRequest { fn from(c: requests::CheckmessageRequest) -> Self { Self { message: c.message, // Rule #2 for type string zbase: c.zbase, // Rule #2 for type string pubkey: c.pubkey.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? } } } #[allow(unused_variables)] impl From for pb::CloseRequest { fn from(c: requests::CloseRequest) -> Self { Self { id: c.id, // Rule #2 for type string unilateraltimeout: c.unilateraltimeout, // Rule #2 for type u32? destination: c.destination, // Rule #2 for type string? fee_negotiation_step: c.fee_negotiation_step, // Rule #2 for type string? wrong_funding: c.wrong_funding.map(|o|o.into()), // Rule #2 for type outpoint? force_lease_closed: c.force_lease_closed, // Rule #2 for type boolean? // Field: Close.feerange[] feerange: c.feerange.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 } } } #[allow(unused_variables)] impl From for pb::ConnectRequest { fn from(c: requests::ConnectRequest) -> Self { Self { id: c.id, // Rule #2 for type string host: c.host, // Rule #2 for type string? port: c.port.map(|v| v.into()), // Rule #2 for type u16? } } } #[allow(unused_variables)] impl From for pb::CreateinvoiceRequest { fn from(c: requests::CreateinvoiceRequest) -> Self { Self { invstring: c.invstring, // Rule #2 for type string label: c.label, // Rule #2 for type string preimage: hex::decode(&c.preimage).unwrap(), // Rule #2 for type hex } } } #[allow(unused_variables)] impl From for pb::DatastoreRequest { fn from(c: requests::DatastoreRequest) -> Self { Self { // Field: Datastore.key key: c.key.into_iter().map(|i| i.into()).collect(), // Rule #3 for type string string: c.string, // Rule #2 for type string? hex: c.hex.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? mode: c.mode.map(|v| v as i32), generation: c.generation, // Rule #2 for type u64? } } } #[allow(unused_variables)] impl From for pb::CreateonionHops { fn from(c: requests::CreateonionHops) -> Self { Self { pubkey: c.pubkey.serialize().to_vec(), // Rule #2 for type pubkey payload: hex::decode(&c.payload).unwrap(), // Rule #2 for type hex } } } #[allow(unused_variables)] impl From for pb::CreateonionRequest { fn from(c: requests::CreateonionRequest) -> Self { Self { // Field: CreateOnion.hops[] hops: c.hops.into_iter().map(|i| i.into()).collect(), // Rule #3 for type CreateonionHops assocdata: hex::decode(&c.assocdata).unwrap(), // Rule #2 for type hex session_key: c.session_key.map(|v| v.to_vec()), // Rule #2 for type secret? onion_size: c.onion_size.map(|v| v.into()), // Rule #2 for type u16? } } } #[allow(unused_variables)] impl From for pb::DeldatastoreRequest { fn from(c: requests::DeldatastoreRequest) -> Self { Self { // Field: DelDatastore.key key: c.key.into_iter().map(|i| i.into()).collect(), // Rule #3 for type string generation: c.generation, // Rule #2 for type u64? } } } #[allow(unused_variables)] impl From for pb::DelexpiredinvoiceRequest { fn from(c: requests::DelexpiredinvoiceRequest) -> Self { Self { maxexpirytime: c.maxexpirytime, // Rule #2 for type u64? } } } #[allow(unused_variables)] impl From for pb::DelinvoiceRequest { fn from(c: requests::DelinvoiceRequest) -> Self { Self { label: c.label, // Rule #2 for type string status: c.status as i32, desconly: c.desconly, // Rule #2 for type boolean? } } } #[allow(unused_variables)] impl From for pb::InvoiceRequest { fn from(c: requests::InvoiceRequest) -> Self { Self { amount_msat: Some(c.amount_msat.into()), // Rule #2 for type msat_or_any description: c.description, // Rule #2 for type string label: c.label, // Rule #2 for type string expiry: c.expiry, // Rule #2 for type u64? // Field: Invoice.fallbacks[] fallbacks: c.fallbacks.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 preimage: c.preimage.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? cltv: c.cltv, // Rule #2 for type u32? deschashonly: c.deschashonly, // Rule #2 for type boolean? } } } #[allow(unused_variables)] impl From for pb::ListdatastoreRequest { fn from(c: requests::ListdatastoreRequest) -> Self { Self { // Field: ListDatastore.key key: c.key.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 } } } #[allow(unused_variables)] impl From for pb::ListinvoicesRequest { fn from(c: requests::ListinvoicesRequest) -> Self { Self { label: c.label, // Rule #2 for type string? invstring: c.invstring, // Rule #2 for type string? payment_hash: c.payment_hash.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? offer_id: c.offer_id, // Rule #2 for type string? index: c.index.map(|v| v as i32), start: c.start, // Rule #2 for type u64? } } } #[allow(unused_variables)] impl From for pb::SendonionFirstHop { fn from(c: requests::SendonionFirst_hop) -> Self { Self { id: c.id.serialize().to_vec(), // Rule #2 for type pubkey amount_msat: Some(c.amount_msat.into()), // Rule #2 for type msat delay: c.delay.into(), // Rule #2 for type u16 } } } #[allow(unused_variables)] impl From for pb::SendonionRequest { fn from(c: requests::SendonionRequest) -> Self { Self { onion: hex::decode(&c.onion).unwrap(), // Rule #2 for type hex first_hop: Some(c.first_hop.into()), payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash label: c.label, // Rule #2 for type string? // Field: SendOnion.shared_secrets[] shared_secrets: c.shared_secrets.map(|arr| arr.into_iter().map(|i| i.to_vec()).collect()).unwrap_or(vec![]), // Rule #3 partid: c.partid.map(|v| v.into()), // Rule #2 for type u16? bolt11: c.bolt11, // Rule #2 for type string? amount_msat: c.amount_msat.map(|f| f.into()), // Rule #2 for type msat? destination: c.destination.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? localinvreqid: c.localinvreqid.map(|v| v.to_vec()), // Rule #2 for type hash? groupid: c.groupid, // Rule #2 for type u64? } } } #[allow(unused_variables)] impl From for pb::ListsendpaysRequest { fn from(c: requests::ListsendpaysRequest) -> Self { Self { bolt11: c.bolt11, // Rule #2 for type string? payment_hash: c.payment_hash.map(|v| v.to_vec()), // Rule #2 for type hash? status: c.status.map(|v| v as i32), } } } #[allow(unused_variables)] impl From for pb::ListtransactionsRequest { fn from(c: requests::ListtransactionsRequest) -> Self { Self { } } } #[allow(unused_variables)] impl From for pb::PayRequest { fn from(c: requests::PayRequest) -> Self { Self { bolt11: c.bolt11, // Rule #2 for type string amount_msat: c.amount_msat.map(|f| f.into()), // Rule #2 for type msat? label: c.label, // Rule #2 for type string? riskfactor: c.riskfactor, // Rule #2 for type number? maxfeepercent: c.maxfeepercent, // Rule #2 for type number? retry_for: c.retry_for.map(|v| v.into()), // Rule #2 for type u16? maxdelay: c.maxdelay.map(|v| v.into()), // Rule #2 for type u16? exemptfee: c.exemptfee.map(|f| f.into()), // Rule #2 for type msat? localinvreqid: c.localinvreqid.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? // Field: Pay.exclude exclude: c.exclude.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 maxfee: c.maxfee.map(|f| f.into()), // Rule #2 for type msat? description: c.description, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::ListnodesRequest { fn from(c: requests::ListnodesRequest) -> Self { Self { id: c.id.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? } } } #[allow(unused_variables)] impl From for pb::WaitanyinvoiceRequest { fn from(c: requests::WaitanyinvoiceRequest) -> Self { Self { lastpay_index: c.lastpay_index, // Rule #2 for type u64? timeout: c.timeout, // Rule #2 for type u64? } } } #[allow(unused_variables)] impl From for pb::WaitinvoiceRequest { fn from(c: requests::WaitinvoiceRequest) -> Self { Self { label: c.label, // Rule #2 for type string } } } #[allow(unused_variables)] impl From for pb::WaitsendpayRequest { fn from(c: requests::WaitsendpayRequest) -> Self { Self { payment_hash: c.payment_hash.to_vec(), // Rule #2 for type hash timeout: c.timeout, // Rule #2 for type u32? partid: c.partid, // Rule #2 for type u64? groupid: c.groupid, // Rule #2 for type u64? } } } #[allow(unused_variables)] impl From for pb::NewaddrRequest { fn from(c: requests::NewaddrRequest) -> Self { Self { addresstype: c.addresstype.map(|v| v as i32), } } } #[allow(unused_variables)] impl From for pb::WithdrawRequest { fn from(c: requests::WithdrawRequest) -> Self { Self { destination: c.destination, // Rule #2 for type string satoshi: c.satoshi.map(|o|o.into()), // Rule #2 for type msat_or_all? feerate: c.feerate.map(|o|o.into()), // Rule #2 for type feerate? minconf: c.minconf.map(|v| v.into()), // Rule #2 for type u16? // Field: Withdraw.utxos[] utxos: c.utxos.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 } } } #[allow(unused_variables)] impl From for pb::KeysendRequest { fn from(c: requests::KeysendRequest) -> Self { Self { destination: c.destination.serialize().to_vec(), // Rule #2 for type pubkey amount_msat: Some(c.amount_msat.into()), // Rule #2 for type msat label: c.label, // Rule #2 for type string? maxfeepercent: c.maxfeepercent, // Rule #2 for type number? retry_for: c.retry_for, // Rule #2 for type u32? maxdelay: c.maxdelay, // Rule #2 for type u32? exemptfee: c.exemptfee.map(|f| f.into()), // Rule #2 for type msat? routehints: c.routehints.map(|rl| rl.into()), // Rule #2 for type RoutehintList? extratlvs: c.extratlvs.map(|s| s.into()), // Rule #2 for type TlvStream? } } } #[allow(unused_variables)] impl From for pb::FundpsbtRequest { fn from(c: requests::FundpsbtRequest) -> Self { Self { satoshi: Some(c.satoshi.into()), // Rule #2 for type msat_or_all feerate: Some(c.feerate.into()), // Rule #2 for type feerate startweight: c.startweight, // Rule #2 for type u32 minconf: c.minconf, // Rule #2 for type u32? reserve: c.reserve, // Rule #2 for type u32? locktime: c.locktime, // Rule #2 for type u32? min_witness_weight: c.min_witness_weight, // Rule #2 for type u32? excess_as_change: c.excess_as_change, // Rule #2 for type boolean? nonwrapped: c.nonwrapped, // Rule #2 for type boolean? opening_anchor_channel: c.opening_anchor_channel, // Rule #2 for type boolean? } } } #[allow(unused_variables)] impl From for pb::SendpsbtRequest { fn from(c: requests::SendpsbtRequest) -> Self { Self { psbt: c.psbt, // Rule #2 for type string reserve: c.reserve, // Rule #2 for type boolean? } } } #[allow(unused_variables)] impl From for pb::SignpsbtRequest { fn from(c: requests::SignpsbtRequest) -> Self { Self { psbt: c.psbt, // Rule #2 for type string // Field: SignPsbt.signonly[] signonly: c.signonly.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 } } } #[allow(unused_variables)] impl From for pb::UtxopsbtRequest { fn from(c: requests::UtxopsbtRequest) -> Self { Self { satoshi: Some(c.satoshi.into()), // Rule #2 for type msat feerate: Some(c.feerate.into()), // Rule #2 for type feerate startweight: c.startweight, // Rule #2 for type u32 // Field: UtxoPsbt.utxos[] utxos: c.utxos.into_iter().map(|i| i.into()).collect(), // Rule #3 for type outpoint reserve: c.reserve, // Rule #2 for type u32? reservedok: c.reservedok, // Rule #2 for type boolean? locktime: c.locktime, // Rule #2 for type u32? min_witness_weight: c.min_witness_weight, // Rule #2 for type u32? excess_as_change: c.excess_as_change, // Rule #2 for type boolean? opening_anchor_channel: c.opening_anchor_channel, // Rule #2 for type boolean? } } } #[allow(unused_variables)] impl From for pb::TxdiscardRequest { fn from(c: requests::TxdiscardRequest) -> Self { Self { txid: hex::decode(&c.txid).unwrap(), // Rule #2 for type txid } } } #[allow(unused_variables)] impl From for pb::TxprepareRequest { fn from(c: requests::TxprepareRequest) -> Self { Self { // Field: TxPrepare.outputs[] outputs: c.outputs.into_iter().map(|i| i.into()).collect(), // Rule #3 for type outputdesc feerate: c.feerate.map(|o|o.into()), // Rule #2 for type feerate? minconf: c.minconf, // Rule #2 for type u32? // Field: TxPrepare.utxos[] utxos: c.utxos.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 } } } #[allow(unused_variables)] impl From for pb::TxsendRequest { fn from(c: requests::TxsendRequest) -> Self { Self { txid: hex::decode(&c.txid).unwrap(), // Rule #2 for type txid } } } #[allow(unused_variables)] impl From for pb::ListpeerchannelsRequest { fn from(c: requests::ListpeerchannelsRequest) -> Self { Self { id: c.id.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? } } } #[allow(unused_variables)] impl From for pb::ListclosedchannelsRequest { fn from(c: requests::ListclosedchannelsRequest) -> Self { Self { id: c.id.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? } } } #[allow(unused_variables)] impl From for pb::DecodepayRequest { fn from(c: requests::DecodepayRequest) -> Self { Self { bolt11: c.bolt11, // Rule #2 for type string description: c.description, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for pb::DecodeRequest { fn from(c: requests::DecodeRequest) -> Self { Self { string: c.string, // Rule #2 for type string } } } #[allow(unused_variables)] impl From for pb::DisconnectRequest { fn from(c: requests::DisconnectRequest) -> Self { Self { id: c.id.serialize().to_vec(), // Rule #2 for type pubkey force: c.force, // Rule #2 for type boolean? } } } #[allow(unused_variables)] impl From for pb::FeeratesRequest { fn from(c: requests::FeeratesRequest) -> Self { Self { style: c.style as i32, } } } #[allow(unused_variables)] impl From for pb::FundchannelRequest { fn from(c: requests::FundchannelRequest) -> Self { Self { id: c.id.serialize().to_vec(), // Rule #2 for type pubkey amount: Some(c.amount.into()), // Rule #2 for type msat_or_all feerate: c.feerate.map(|o|o.into()), // Rule #2 for type feerate? announce: c.announce, // Rule #2 for type boolean? minconf: c.minconf, // Rule #2 for type u32? push_msat: c.push_msat.map(|f| f.into()), // Rule #2 for type msat? close_to: c.close_to, // Rule #2 for type string? request_amt: c.request_amt.map(|f| f.into()), // Rule #2 for type msat? compact_lease: c.compact_lease, // Rule #2 for type string? // Field: FundChannel.utxos[] utxos: c.utxos.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 mindepth: c.mindepth, // Rule #2 for type u32? reserve: c.reserve.map(|f| f.into()), // Rule #2 for type msat? } } } #[allow(unused_variables)] impl From for pb::GetrouteRequest { fn from(c: requests::GetrouteRequest) -> Self { Self { id: c.id.serialize().to_vec(), // Rule #2 for type pubkey amount_msat: Some(c.amount_msat.into()), // Rule #2 for type msat riskfactor: c.riskfactor, // Rule #2 for type u64 cltv: c.cltv, // Rule #2 for type number? fromid: c.fromid.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? fuzzpercent: c.fuzzpercent, // Rule #2 for type u32? // Field: GetRoute.exclude[] exclude: c.exclude.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 maxhops: c.maxhops, // Rule #2 for type u32? } } } #[allow(unused_variables)] impl From for pb::ListforwardsRequest { fn from(c: requests::ListforwardsRequest) -> Self { Self { status: c.status.map(|v| v as i32), in_channel: c.in_channel.map(|v| v.to_string()), // Rule #2 for type short_channel_id? out_channel: c.out_channel.map(|v| v.to_string()), // Rule #2 for type short_channel_id? } } } #[allow(unused_variables)] impl From for pb::ListpaysRequest { fn from(c: requests::ListpaysRequest) -> Self { Self { bolt11: c.bolt11, // Rule #2 for type string? payment_hash: c.payment_hash.map(|v| v.to_vec()), // Rule #2 for type hash? status: c.status.map(|v| v as i32), } } } #[allow(unused_variables)] impl From for pb::PingRequest { fn from(c: requests::PingRequest) -> Self { Self { id: c.id.serialize().to_vec(), // Rule #2 for type pubkey len: c.len.map(|v| v.into()), // Rule #2 for type u16? pongbytes: c.pongbytes.map(|v| v.into()), // Rule #2 for type u16? } } } #[allow(unused_variables)] impl From for pb::SendcustommsgRequest { fn from(c: requests::SendcustommsgRequest) -> Self { Self { node_id: c.node_id.serialize().to_vec(), // Rule #2 for type pubkey msg: hex::decode(&c.msg).unwrap(), // Rule #2 for type hex } } } #[allow(unused_variables)] impl From for pb::SetchannelRequest { fn from(c: requests::SetchannelRequest) -> Self { Self { id: c.id, // Rule #2 for type string feebase: c.feebase.map(|f| f.into()), // Rule #2 for type msat? feeppm: c.feeppm, // Rule #2 for type u32? htlcmin: c.htlcmin.map(|f| f.into()), // Rule #2 for type msat? htlcmax: c.htlcmax.map(|f| f.into()), // Rule #2 for type msat? enforcedelay: c.enforcedelay, // Rule #2 for type u32? ignorefeelimits: c.ignorefeelimits, // Rule #2 for type boolean? } } } #[allow(unused_variables)] impl From for pb::SigninvoiceRequest { fn from(c: requests::SigninvoiceRequest) -> Self { Self { invstring: c.invstring, // Rule #2 for type string } } } #[allow(unused_variables)] impl From for pb::SignmessageRequest { fn from(c: requests::SignmessageRequest) -> Self { Self { message: c.message, // Rule #2 for type string } } } #[allow(unused_variables)] impl From for pb::StopRequest { fn from(c: requests::StopRequest) -> Self { Self { } } } #[allow(unused_variables)] impl From for pb::PreapprovekeysendRequest { fn from(c: requests::PreapprovekeysendRequest) -> Self { Self { destination: c.destination.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? payment_hash: c.payment_hash.map(|v| hex::decode(v).unwrap()), // Rule #2 for type hex? amount_msat: c.amount_msat.map(|f| f.into()), // Rule #2 for type msat? } } } #[allow(unused_variables)] impl From for pb::PreapproveinvoiceRequest { fn from(c: requests::PreapproveinvoiceRequest) -> Self { Self { bolt11: c.bolt11, // Rule #2 for type string? } } } #[allow(unused_variables)] impl From for requests::GetinfoRequest { fn from(c: pb::GetinfoRequest) -> Self { Self { } } } #[allow(unused_variables)] impl From for requests::ListpeersRequest { fn from(c: pb::ListpeersRequest) -> Self { Self { id: c.id.map(|v| PublicKey::from_slice(&v).unwrap()), // Rule #1 for type pubkey? level: c.level, // Rule #1 for type string? } } } #[allow(unused_variables)] impl From for requests::ListfundsRequest { fn from(c: pb::ListfundsRequest) -> Self { Self { spent: c.spent, // Rule #1 for type boolean? } } } #[allow(unused_variables)] impl From for requests::SendpayRoute { fn from(c: pb::SendpayRoute) -> Self { Self { amount_msat: c.amount_msat.unwrap().into(), // Rule #1 for type msat id: PublicKey::from_slice(&c.id).unwrap(), // Rule #1 for type pubkey delay: c.delay as u16, // Rule #1 for type u16 channel: cln_rpc::primitives::ShortChannelId::from_str(&c.channel).unwrap(), // Rule #1 for type short_channel_id } } } #[allow(unused_variables)] impl From for requests::SendpayRequest { fn from(c: pb::SendpayRequest) -> Self { Self { route: c.route.into_iter().map(|s| s.into()).collect(), // Rule #4 payment_hash: Sha256::from_slice(&c.payment_hash).unwrap(), // Rule #1 for type hash label: c.label, // Rule #1 for type string? amount_msat: c.amount_msat.map(|a| a.into()), // Rule #1 for type msat? bolt11: c.bolt11, // Rule #1 for type string? payment_secret: c.payment_secret.map(|v| v.try_into().unwrap()), // Rule #1 for type secret? partid: c.partid.map(|v| v as u16), // Rule #1 for type u16? localinvreqid: c.localinvreqid.map(|v| hex::encode(v)), // Rule #1 for type hex? groupid: c.groupid, // Rule #1 for type u64? } } } #[allow(unused_variables)] impl From for requests::ListchannelsRequest { fn from(c: pb::ListchannelsRequest) -> Self { Self { short_channel_id: c.short_channel_id.map(|v| cln_rpc::primitives::ShortChannelId::from_str(&v).unwrap()), // Rule #1 for type short_channel_id? source: c.source.map(|v| PublicKey::from_slice(&v).unwrap()), // Rule #1 for type pubkey? destination: c.destination.map(|v| PublicKey::from_slice(&v).unwrap()), // Rule #1 for type pubkey? } } } #[allow(unused_variables)] impl From for requests::AddgossipRequest { fn from(c: pb::AddgossipRequest) -> Self { Self { message: hex::encode(&c.message), // Rule #1 for type hex } } } #[allow(unused_variables)] impl From for requests::AutocleaninvoiceRequest { fn from(c: pb::AutocleaninvoiceRequest) -> Self { Self { expired_by: c.expired_by, // Rule #1 for type u64? cycle_seconds: c.cycle_seconds, // Rule #1 for type u64? } } } #[allow(unused_variables)] impl From for requests::CheckmessageRequest { fn from(c: pb::CheckmessageRequest) -> Self { Self { message: c.message, // Rule #1 for type string zbase: c.zbase, // Rule #1 for type string pubkey: c.pubkey.map(|v| PublicKey::from_slice(&v).unwrap()), // Rule #1 for type pubkey? } } } #[allow(unused_variables)] impl From for requests::CloseRequest { fn from(c: pb::CloseRequest) -> Self { Self { id: c.id, // Rule #1 for type string unilateraltimeout: c.unilateraltimeout, // Rule #1 for type u32? destination: c.destination, // Rule #1 for type string? fee_negotiation_step: c.fee_negotiation_step, // Rule #1 for type string? wrong_funding: c.wrong_funding.map(|a| a.into()), // Rule #1 for type outpoint? force_lease_closed: c.force_lease_closed, // Rule #1 for type boolean? feerange: Some(c.feerange.into_iter().map(|s| s.into()).collect()), // Rule #4 } } } #[allow(unused_variables)] impl From for requests::ConnectRequest { fn from(c: pb::ConnectRequest) -> Self { Self { id: c.id, // Rule #1 for type string host: c.host, // Rule #1 for type string? port: c.port.map(|v| v as u16), // Rule #1 for type u16? } } } #[allow(unused_variables)] impl From for requests::CreateinvoiceRequest { fn from(c: pb::CreateinvoiceRequest) -> Self { Self { invstring: c.invstring, // Rule #1 for type string label: c.label, // Rule #1 for type string preimage: hex::encode(&c.preimage), // Rule #1 for type hex } } } #[allow(unused_variables)] impl From for requests::DatastoreRequest { fn from(c: pb::DatastoreRequest) -> Self { Self { key: c.key.into_iter().map(|s| s.into()).collect(), // Rule #4 string: c.string, // Rule #1 for type string? hex: c.hex.map(|v| hex::encode(v)), // Rule #1 for type hex? mode: c.mode.map(|v| v.try_into().unwrap()), generation: c.generation, // Rule #1 for type u64? } } } #[allow(unused_variables)] impl From for requests::CreateonionHops { fn from(c: pb::CreateonionHops) -> Self { Self { pubkey: PublicKey::from_slice(&c.pubkey).unwrap(), // Rule #1 for type pubkey payload: hex::encode(&c.payload), // Rule #1 for type hex } } } #[allow(unused_variables)] impl From for requests::CreateonionRequest { fn from(c: pb::CreateonionRequest) -> Self { Self { hops: c.hops.into_iter().map(|s| s.into()).collect(), // Rule #4 assocdata: hex::encode(&c.assocdata), // Rule #1 for type hex session_key: c.session_key.map(|v| v.try_into().unwrap()), // Rule #1 for type secret? onion_size: c.onion_size.map(|v| v as u16), // Rule #1 for type u16? } } } #[allow(unused_variables)] impl From for requests::DeldatastoreRequest { fn from(c: pb::DeldatastoreRequest) -> Self { Self { key: c.key.into_iter().map(|s| s.into()).collect(), // Rule #4 generation: c.generation, // Rule #1 for type u64? } } } #[allow(unused_variables)] impl From for requests::DelexpiredinvoiceRequest { fn from(c: pb::DelexpiredinvoiceRequest) -> Self { Self { maxexpirytime: c.maxexpirytime, // Rule #1 for type u64? } } } #[allow(unused_variables)] impl From for requests::DelinvoiceRequest { fn from(c: pb::DelinvoiceRequest) -> Self { Self { label: c.label, // Rule #1 for type string status: c.status.try_into().unwrap(), desconly: c.desconly, // Rule #1 for type boolean? } } } #[allow(unused_variables)] impl From for requests::InvoiceRequest { fn from(c: pb::InvoiceRequest) -> Self { Self { amount_msat: c.amount_msat.unwrap().into(), // Rule #1 for type msat_or_any description: c.description, // Rule #1 for type string label: c.label, // Rule #1 for type string expiry: c.expiry, // Rule #1 for type u64? fallbacks: Some(c.fallbacks.into_iter().map(|s| s.into()).collect()), // Rule #4 preimage: c.preimage.map(|v| hex::encode(v)), // Rule #1 for type hex? cltv: c.cltv, // Rule #1 for type u32? deschashonly: c.deschashonly, // Rule #1 for type boolean? } } } #[allow(unused_variables)] impl From for requests::ListdatastoreRequest { fn from(c: pb::ListdatastoreRequest) -> Self { Self { key: Some(c.key.into_iter().map(|s| s.into()).collect()), // Rule #4 } } } #[allow(unused_variables)] impl From for requests::ListinvoicesRequest { fn from(c: pb::ListinvoicesRequest) -> Self { Self { label: c.label, // Rule #1 for type string? invstring: c.invstring, // Rule #1 for type string? payment_hash: c.payment_hash.map(|v| hex::encode(v)), // Rule #1 for type hex? offer_id: c.offer_id, // Rule #1 for type string? index: c.index.map(|v| v.try_into().unwrap()), start: c.start, // Rule #1 for type u64? } } } #[allow(unused_variables)] impl From for requests::SendonionFirst_hop { fn from(c: pb::SendonionFirstHop) -> Self { Self { id: PublicKey::from_slice(&c.id).unwrap(), // Rule #1 for type pubkey amount_msat: c.amount_msat.unwrap().into(), // Rule #1 for type msat delay: c.delay as u16, // Rule #1 for type u16 } } } #[allow(unused_variables)] impl From for requests::SendonionRequest { fn from(c: pb::SendonionRequest) -> Self { Self { onion: hex::encode(&c.onion), // Rule #1 for type hex first_hop: c.first_hop.unwrap().into(), payment_hash: Sha256::from_slice(&c.payment_hash).unwrap(), // Rule #1 for type hash label: c.label, // Rule #1 for type string? shared_secrets: Some(c.shared_secrets.into_iter().map(|s| s.try_into().unwrap()).collect()), // Rule #4 partid: c.partid.map(|v| v as u16), // Rule #1 for type u16? bolt11: c.bolt11, // Rule #1 for type string? amount_msat: c.amount_msat.map(|a| a.into()), // Rule #1 for type msat? destination: c.destination.map(|v| PublicKey::from_slice(&v).unwrap()), // Rule #1 for type pubkey? localinvreqid: c.localinvreqid.map(|v| Sha256::from_slice(&v).unwrap()), // Rule #1 for type hash? groupid: c.groupid, // Rule #1 for type u64? } } } #[allow(unused_variables)] impl From for requests::ListsendpaysRequest { fn from(c: pb::ListsendpaysRequest) -> Self { Self { bolt11: c.bolt11, // Rule #1 for type string? payment_hash: c.payment_hash.map(|v| Sha256::from_slice(&v).unwrap()), // Rule #1 for type hash? status: c.status.map(|v| v.try_into().unwrap()), } } } #[allow(unused_variables)] impl From for requests::ListtransactionsRequest { fn from(c: pb::ListtransactionsRequest) -> Self { Self { } } } #[allow(unused_variables)] impl From for requests::PayRequest { fn from(c: pb::PayRequest) -> Self { Self { bolt11: c.bolt11, // Rule #1 for type string amount_msat: c.amount_msat.map(|a| a.into()), // Rule #1 for type msat? label: c.label, // Rule #1 for type string? riskfactor: c.riskfactor, // Rule #1 for type number? maxfeepercent: c.maxfeepercent, // Rule #1 for type number? retry_for: c.retry_for.map(|v| v as u16), // Rule #1 for type u16? maxdelay: c.maxdelay.map(|v| v as u16), // Rule #1 for type u16? exemptfee: c.exemptfee.map(|a| a.into()), // Rule #1 for type msat? localinvreqid: c.localinvreqid.map(|v| hex::encode(v)), // Rule #1 for type hex? exclude: Some(c.exclude.into_iter().map(|s| s.into()).collect()), // Rule #4 maxfee: c.maxfee.map(|a| a.into()), // Rule #1 for type msat? description: c.description, // Rule #1 for type string? } } } #[allow(unused_variables)] impl From for requests::ListnodesRequest { fn from(c: pb::ListnodesRequest) -> Self { Self { id: c.id.map(|v| PublicKey::from_slice(&v).unwrap()), // Rule #1 for type pubkey? } } } #[allow(unused_variables)] impl From for requests::WaitanyinvoiceRequest { fn from(c: pb::WaitanyinvoiceRequest) -> Self { Self { lastpay_index: c.lastpay_index, // Rule #1 for type u64? timeout: c.timeout, // Rule #1 for type u64? } } } #[allow(unused_variables)] impl From for requests::WaitinvoiceRequest { fn from(c: pb::WaitinvoiceRequest) -> Self { Self { label: c.label, // Rule #1 for type string } } } #[allow(unused_variables)] impl From for requests::WaitsendpayRequest { fn from(c: pb::WaitsendpayRequest) -> Self { Self { payment_hash: Sha256::from_slice(&c.payment_hash).unwrap(), // Rule #1 for type hash timeout: c.timeout, // Rule #1 for type u32? partid: c.partid, // Rule #1 for type u64? groupid: c.groupid, // Rule #1 for type u64? } } } #[allow(unused_variables)] impl From for requests::NewaddrRequest { fn from(c: pb::NewaddrRequest) -> Self { Self { addresstype: c.addresstype.map(|v| v.try_into().unwrap()), } } } #[allow(unused_variables)] impl From for requests::WithdrawRequest { fn from(c: pb::WithdrawRequest) -> Self { Self { destination: c.destination, // Rule #1 for type string satoshi: c.satoshi.map(|a| a.into()), // Rule #1 for type msat_or_all? feerate: c.feerate.map(|a| a.into()), // Rule #1 for type feerate? minconf: c.minconf.map(|v| v as u16), // Rule #1 for type u16? utxos: Some(c.utxos.into_iter().map(|s| s.into()).collect()), // Rule #4 } } } #[allow(unused_variables)] impl From for requests::KeysendRequest { fn from(c: pb::KeysendRequest) -> Self { Self { destination: PublicKey::from_slice(&c.destination).unwrap(), // Rule #1 for type pubkey amount_msat: c.amount_msat.unwrap().into(), // Rule #1 for type msat label: c.label, // Rule #1 for type string? maxfeepercent: c.maxfeepercent, // Rule #1 for type number? retry_for: c.retry_for, // Rule #1 for type u32? maxdelay: c.maxdelay, // Rule #1 for type u32? exemptfee: c.exemptfee.map(|a| a.into()), // Rule #1 for type msat? routehints: c.routehints.map(|rl| rl.into()), // Rule #1 for type RoutehintList? extratlvs: c.extratlvs.map(|s| s.into()), // Rule #1 for type TlvStream? } } } #[allow(unused_variables)] impl From for requests::FundpsbtRequest { fn from(c: pb::FundpsbtRequest) -> Self { Self { satoshi: c.satoshi.unwrap().into(), // Rule #1 for type msat_or_all feerate: c.feerate.unwrap().into(), // Rule #1 for type feerate startweight: c.startweight, // Rule #1 for type u32 minconf: c.minconf, // Rule #1 for type u32? reserve: c.reserve, // Rule #1 for type u32? locktime: c.locktime, // Rule #1 for type u32? min_witness_weight: c.min_witness_weight, // Rule #1 for type u32? excess_as_change: c.excess_as_change, // Rule #1 for type boolean? nonwrapped: c.nonwrapped, // Rule #1 for type boolean? opening_anchor_channel: c.opening_anchor_channel, // Rule #1 for type boolean? } } } #[allow(unused_variables)] impl From for requests::SendpsbtRequest { fn from(c: pb::SendpsbtRequest) -> Self { Self { psbt: c.psbt, // Rule #1 for type string reserve: c.reserve, // Rule #1 for type boolean? } } } #[allow(unused_variables)] impl From for requests::SignpsbtRequest { fn from(c: pb::SignpsbtRequest) -> Self { Self { psbt: c.psbt, // Rule #1 for type string signonly: Some(c.signonly.into_iter().map(|s| s).collect()), // Rule #4 } } } #[allow(unused_variables)] impl From for requests::UtxopsbtRequest { fn from(c: pb::UtxopsbtRequest) -> Self { Self { satoshi: c.satoshi.unwrap().into(), // Rule #1 for type msat feerate: c.feerate.unwrap().into(), // Rule #1 for type feerate startweight: c.startweight, // Rule #1 for type u32 utxos: c.utxos.into_iter().map(|s| s.into()).collect(), // Rule #4 reserve: c.reserve, // Rule #1 for type u32? reservedok: c.reservedok, // Rule #1 for type boolean? locktime: c.locktime, // Rule #1 for type u32? min_witness_weight: c.min_witness_weight, // Rule #1 for type u32? excess_as_change: c.excess_as_change, // Rule #1 for type boolean? opening_anchor_channel: c.opening_anchor_channel, // Rule #1 for type boolean? } } } #[allow(unused_variables)] impl From for requests::TxdiscardRequest { fn from(c: pb::TxdiscardRequest) -> Self { Self { txid: hex::encode(&c.txid), // Rule #1 for type txid } } } #[allow(unused_variables)] impl From for requests::TxprepareRequest { fn from(c: pb::TxprepareRequest) -> Self { Self { outputs: c.outputs.into_iter().map(|s| s.into()).collect(), // Rule #4 feerate: c.feerate.map(|a| a.into()), // Rule #1 for type feerate? minconf: c.minconf, // Rule #1 for type u32? utxos: Some(c.utxos.into_iter().map(|s| s.into()).collect()), // Rule #4 } } } #[allow(unused_variables)] impl From for requests::TxsendRequest { fn from(c: pb::TxsendRequest) -> Self { Self { txid: hex::encode(&c.txid), // Rule #1 for type txid } } } #[allow(unused_variables)] impl From for requests::ListpeerchannelsRequest { fn from(c: pb::ListpeerchannelsRequest) -> Self { Self { id: c.id.map(|v| PublicKey::from_slice(&v).unwrap()), // Rule #1 for type pubkey? } } } #[allow(unused_variables)] impl From for requests::ListclosedchannelsRequest { fn from(c: pb::ListclosedchannelsRequest) -> Self { Self { id: c.id.map(|v| PublicKey::from_slice(&v).unwrap()), // Rule #1 for type pubkey? } } } #[allow(unused_variables)] impl From for requests::DecodepayRequest { fn from(c: pb::DecodepayRequest) -> Self { Self { bolt11: c.bolt11, // Rule #1 for type string description: c.description, // Rule #1 for type string? } } } #[allow(unused_variables)] impl From for requests::DecodeRequest { fn from(c: pb::DecodeRequest) -> Self { Self { string: c.string, // Rule #1 for type string } } } #[allow(unused_variables)] impl From for requests::DisconnectRequest { fn from(c: pb::DisconnectRequest) -> Self { Self { id: PublicKey::from_slice(&c.id).unwrap(), // Rule #1 for type pubkey force: c.force, // Rule #1 for type boolean? } } } #[allow(unused_variables)] impl From for requests::FeeratesRequest { fn from(c: pb::FeeratesRequest) -> Self { Self { style: c.style.try_into().unwrap(), } } } #[allow(unused_variables)] impl From for requests::FundchannelRequest { fn from(c: pb::FundchannelRequest) -> Self { Self { id: PublicKey::from_slice(&c.id).unwrap(), // Rule #1 for type pubkey amount: c.amount.unwrap().into(), // Rule #1 for type msat_or_all feerate: c.feerate.map(|a| a.into()), // Rule #1 for type feerate? announce: c.announce, // Rule #1 for type boolean? minconf: c.minconf, // Rule #1 for type u32? push_msat: c.push_msat.map(|a| a.into()), // Rule #1 for type msat? close_to: c.close_to, // Rule #1 for type string? request_amt: c.request_amt.map(|a| a.into()), // Rule #1 for type msat? compact_lease: c.compact_lease, // Rule #1 for type string? utxos: Some(c.utxos.into_iter().map(|s| s.into()).collect()), // Rule #4 mindepth: c.mindepth, // Rule #1 for type u32? reserve: c.reserve.map(|a| a.into()), // Rule #1 for type msat? } } } #[allow(unused_variables)] impl From for requests::GetrouteRequest { fn from(c: pb::GetrouteRequest) -> Self { Self { id: PublicKey::from_slice(&c.id).unwrap(), // Rule #1 for type pubkey amount_msat: c.amount_msat.unwrap().into(), // Rule #1 for type msat riskfactor: c.riskfactor, // Rule #1 for type u64 cltv: c.cltv, // Rule #1 for type number? fromid: c.fromid.map(|v| PublicKey::from_slice(&v).unwrap()), // Rule #1 for type pubkey? fuzzpercent: c.fuzzpercent, // Rule #1 for type u32? exclude: Some(c.exclude.into_iter().map(|s| s.into()).collect()), // Rule #4 maxhops: c.maxhops, // Rule #1 for type u32? } } } #[allow(unused_variables)] impl From for requests::ListforwardsRequest { fn from(c: pb::ListforwardsRequest) -> Self { Self { status: c.status.map(|v| v.try_into().unwrap()), in_channel: c.in_channel.map(|v| cln_rpc::primitives::ShortChannelId::from_str(&v).unwrap()), // Rule #1 for type short_channel_id? out_channel: c.out_channel.map(|v| cln_rpc::primitives::ShortChannelId::from_str(&v).unwrap()), // Rule #1 for type short_channel_id? } } } #[allow(unused_variables)] impl From for requests::ListpaysRequest { fn from(c: pb::ListpaysRequest) -> Self { Self { bolt11: c.bolt11, // Rule #1 for type string? payment_hash: c.payment_hash.map(|v| Sha256::from_slice(&v).unwrap()), // Rule #1 for type hash? status: c.status.map(|v| v.try_into().unwrap()), } } } #[allow(unused_variables)] impl From for requests::PingRequest { fn from(c: pb::PingRequest) -> Self { Self { id: PublicKey::from_slice(&c.id).unwrap(), // Rule #1 for type pubkey len: c.len.map(|v| v as u16), // Rule #1 for type u16? pongbytes: c.pongbytes.map(|v| v as u16), // Rule #1 for type u16? } } } #[allow(unused_variables)] impl From for requests::SendcustommsgRequest { fn from(c: pb::SendcustommsgRequest) -> Self { Self { node_id: PublicKey::from_slice(&c.node_id).unwrap(), // Rule #1 for type pubkey msg: hex::encode(&c.msg), // Rule #1 for type hex } } } #[allow(unused_variables)] impl From for requests::SetchannelRequest { fn from(c: pb::SetchannelRequest) -> Self { Self { id: c.id, // Rule #1 for type string feebase: c.feebase.map(|a| a.into()), // Rule #1 for type msat? feeppm: c.feeppm, // Rule #1 for type u32? htlcmin: c.htlcmin.map(|a| a.into()), // Rule #1 for type msat? htlcmax: c.htlcmax.map(|a| a.into()), // Rule #1 for type msat? enforcedelay: c.enforcedelay, // Rule #1 for type u32? ignorefeelimits: c.ignorefeelimits, // Rule #1 for type boolean? } } } #[allow(unused_variables)] impl From for requests::SigninvoiceRequest { fn from(c: pb::SigninvoiceRequest) -> Self { Self { invstring: c.invstring, // Rule #1 for type string } } } #[allow(unused_variables)] impl From for requests::SignmessageRequest { fn from(c: pb::SignmessageRequest) -> Self { Self { message: c.message, // Rule #1 for type string } } } #[allow(unused_variables)] impl From for requests::StopRequest { fn from(c: pb::StopRequest) -> Self { Self { } } } #[allow(unused_variables)] impl From for requests::PreapprovekeysendRequest { fn from(c: pb::PreapprovekeysendRequest) -> Self { Self { destination: c.destination.map(|v| PublicKey::from_slice(&v).unwrap()), // Rule #1 for type pubkey? payment_hash: c.payment_hash.map(|v| hex::encode(v)), // Rule #1 for type hex? amount_msat: c.amount_msat.map(|a| a.into()), // Rule #1 for type msat? } } } #[allow(unused_variables)] impl From for requests::PreapproveinvoiceRequest { fn from(c: pb::PreapproveinvoiceRequest) -> Self { Self { bolt11: c.bolt11, // Rule #1 for type string? } } }