diff --git a/.msggen.json b/.msggen.json index 58f947b660a9..23b8c4d9070d 100644 --- a/.msggen.json +++ b/.msggen.json @@ -272,6 +272,7 @@ "CreateInvoice.bolt12": 3, "CreateInvoice.description": 7, "CreateInvoice.expires_at": 8, + "CreateInvoice.invreq_payer_note": 15, "CreateInvoice.label": 1, "CreateInvoice.local_offer_id": 13, "CreateInvoice.paid_at": 11, @@ -336,6 +337,7 @@ "DelInvoice.bolt12": 3, "DelInvoice.description": 5, "DelInvoice.expires_at": 8, + "DelInvoice.invreq_payer_note": 11, "DelInvoice.label": 1, "DelInvoice.local_offer_id": 9, "DelInvoice.payer_note": 10, @@ -630,6 +632,7 @@ "ListInvoices.invoices[].bolt12": 8, "ListInvoices.invoices[].description": 2, "ListInvoices.invoices[].expires_at": 5, + "ListInvoices.invoices[].invreq_payer_note": 15, "ListInvoices.invoices[].label": 1, "ListInvoices.invoices[].local_offer_id": 9, "ListInvoices.invoices[].paid_at": 13, diff --git a/cln-grpc/proto/node.proto b/cln-grpc/proto/node.proto index 1a6f640b15d7..aff012e98d5e 100644 --- a/cln-grpc/proto/node.proto +++ b/cln-grpc/proto/node.proto @@ -481,7 +481,7 @@ message CreateinvoiceResponse { optional uint64 paid_at = 11; optional bytes payment_preimage = 12; optional bytes local_offer_id = 13; - optional string payer_note = 14; + optional string invreq_payer_note = 15; } message DatastoreRequest { @@ -571,7 +571,7 @@ message DelinvoiceResponse { DelinvoiceStatus status = 7; uint64 expires_at = 8; optional bytes local_offer_id = 9; - optional string payer_note = 10; + optional string invreq_payer_note = 11; } message InvoiceRequest { @@ -640,7 +640,7 @@ message ListinvoicesInvoices { optional string bolt11 = 7; optional string bolt12 = 8; optional bytes local_offer_id = 9; - optional string payer_note = 10; + optional string invreq_payer_note = 15; optional uint64 pay_index = 11; optional Amount amount_received_msat = 12; optional uint64 paid_at = 13; diff --git a/cln-grpc/src/convert.rs b/cln-grpc/src/convert.rs index 6f4773ca8e94..06470d76c2d5 100644 --- a/cln-grpc/src/convert.rs +++ b/cln-grpc/src/convert.rs @@ -348,7 +348,7 @@ impl From for pb::CreateinvoiceResponse { 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? - payer_note: c.payer_note, // Rule #2 for type string? + invreq_payer_note: c.invreq_payer_note, // Rule #2 for type string? } } } @@ -408,7 +408,7 @@ impl From for pb::DelinvoiceResponse { 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? - payer_note: c.payer_note, // Rule #2 for type string? + invreq_payer_note: c.invreq_payer_note, // Rule #2 for type string? } } } @@ -464,7 +464,7 @@ impl From for pb::ListinvoicesInvoices { 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| hex::decode(v).unwrap()), // Rule #2 for type hex? - payer_note: c.payer_note, // Rule #2 for type string? + 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? diff --git a/cln-rpc/src/model.rs b/cln-rpc/src/model.rs index 9e0fcf0f993e..166efa5dc028 100644 --- a/cln-rpc/src/model.rs +++ b/cln-rpc/src/model.rs @@ -2258,8 +2258,8 @@ pub mod responses { pub payment_preimage: Option, #[serde(alias = "local_offer_id", skip_serializing_if = "Option::is_none")] pub local_offer_id: Option, - #[serde(alias = "payer_note", skip_serializing_if = "Option::is_none")] - pub payer_note: Option, + #[serde(alias = "invreq_payer_note", skip_serializing_if = "Option::is_none")] + pub invreq_payer_note: Option, } impl TryFrom for CreateinvoiceResponse { @@ -2396,8 +2396,8 @@ pub mod responses { pub expires_at: u64, #[serde(alias = "local_offer_id", skip_serializing_if = "Option::is_none")] pub local_offer_id: Option, - #[serde(alias = "payer_note", skip_serializing_if = "Option::is_none")] - pub payer_note: Option, + #[serde(alias = "invreq_payer_note", skip_serializing_if = "Option::is_none")] + pub invreq_payer_note: Option, } impl TryFrom for DelinvoiceResponse { @@ -2516,8 +2516,8 @@ pub mod responses { pub bolt12: Option, #[serde(alias = "local_offer_id", skip_serializing_if = "Option::is_none")] pub local_offer_id: Option, - #[serde(alias = "payer_note", skip_serializing_if = "Option::is_none")] - pub payer_note: Option, + #[serde(alias = "invreq_payer_note", skip_serializing_if = "Option::is_none")] + pub invreq_payer_note: Option, #[serde(alias = "pay_index", skip_serializing_if = "Option::is_none")] pub pay_index: Option, #[serde(alias = "amount_received_msat", skip_serializing_if = "Option::is_none")] diff --git a/contrib/pyln-testing/pyln/testing/grpc2py.py b/contrib/pyln-testing/pyln/testing/grpc2py.py index f22259dd1919..482dc822d50c 100644 --- a/contrib/pyln-testing/pyln/testing/grpc2py.py +++ b/contrib/pyln-testing/pyln/testing/grpc2py.py @@ -339,7 +339,7 @@ def createinvoice2py(m): "paid_at": m.paid_at, # PrimitiveField in generate_composite "payment_preimage": hexlify(m.payment_preimage), # PrimitiveField in generate_composite "local_offer_id": hexlify(m.local_offer_id), # PrimitiveField in generate_composite - "payer_note": m.payer_note, # PrimitiveField in generate_composite + "invreq_payer_note": m.invreq_payer_note, # PrimitiveField in generate_composite }) @@ -384,7 +384,7 @@ def delinvoice2py(m): "status": str(m.status), # EnumField in generate_composite "expires_at": m.expires_at, # PrimitiveField in generate_composite "local_offer_id": hexlify(m.local_offer_id), # PrimitiveField in generate_composite - "payer_note": m.payer_note, # PrimitiveField in generate_composite + "invreq_payer_note": m.invreq_payer_note, # PrimitiveField in generate_composite }) @@ -428,7 +428,7 @@ def listinvoices_invoices2py(m): "bolt11": m.bolt11, # PrimitiveField in generate_composite "bolt12": m.bolt12, # PrimitiveField in generate_composite "local_offer_id": hexlify(m.local_offer_id), # PrimitiveField in generate_composite - "payer_note": m.payer_note, # PrimitiveField in generate_composite + "invreq_payer_note": m.invreq_payer_note, # PrimitiveField in generate_composite "pay_index": m.pay_index, # PrimitiveField in generate_composite "amount_received_msat": amount2msat(m.amount_received_msat), # PrimitiveField in generate_composite "paid_at": m.paid_at, # PrimitiveField in generate_composite diff --git a/contrib/pyln-testing/pyln/testing/node_pb2.py b/contrib/pyln-testing/pyln/testing/node_pb2.py index 126c4db1b25a..374a91ea9c4c 100644 --- a/contrib/pyln-testing/pyln/testing/node_pb2.py +++ b/contrib/pyln-testing/pyln/testing/node_pb2.py @@ -15,7 +15,7 @@ from . import primitives_pb2 as primitives__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\nnode.proto\x12\x03\x63ln\x1a\x10primitives.proto\"\x10\n\x0eGetinfoRequest\"\xae\x04\n\x0fGetinfoResponse\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05\x61lias\x18\x02 \x01(\t\x12\r\n\x05\x63olor\x18\x03 \x01(\x0c\x12\x11\n\tnum_peers\x18\x04 \x01(\r\x12\x1c\n\x14num_pending_channels\x18\x05 \x01(\r\x12\x1b\n\x13num_active_channels\x18\x06 \x01(\r\x12\x1d\n\x15num_inactive_channels\x18\x07 \x01(\r\x12\x0f\n\x07version\x18\x08 \x01(\t\x12\x15\n\rlightning_dir\x18\t \x01(\t\x12\x13\n\x0b\x62lockheight\x18\x0b \x01(\r\x12\x0f\n\x07network\x18\x0c \x01(\t\x12$\n\x17msatoshi_fees_collected\x18\x12 \x01(\x04H\x00\x88\x01\x01\x12(\n\x13\x66\x65\x65s_collected_msat\x18\r \x01(\x0b\x32\x0b.cln.Amount\x12$\n\x07\x61\x64\x64ress\x18\x0e \x03(\x0b\x32\x13.cln.GetinfoAddress\x12$\n\x07\x62inding\x18\x0f \x03(\x0b\x32\x13.cln.GetinfoBinding\x12\"\n\x15warning_bitcoind_sync\x18\x10 \x01(\tH\x01\x88\x01\x01\x12$\n\x17warning_lightningd_sync\x18\x11 \x01(\tH\x02\x88\x01\x01\x42\x1a\n\x18_msatoshi_fees_collectedB\x18\n\x16_warning_bitcoind_syncB\x1a\n\x18_warning_lightningd_sync\"S\n\x13GetinfoOur_features\x12\x0c\n\x04init\x18\x01 \x01(\x0c\x12\x0c\n\x04node\x18\x02 \x01(\x0c\x12\x0f\n\x07\x63hannel\x18\x03 \x01(\x0c\x12\x0f\n\x07invoice\x18\x04 \x01(\x0c\"\xd3\x01\n\x0eGetinfoAddress\x12\x39\n\titem_type\x18\x01 \x01(\x0e\x32&.cln.GetinfoAddress.GetinfoAddressType\x12\x0c\n\x04port\x18\x02 \x01(\r\x12\x14\n\x07\x61\x64\x64ress\x18\x03 \x01(\tH\x00\x88\x01\x01\"V\n\x12GetinfoAddressType\x12\x07\n\x03\x44NS\x10\x00\x12\x08\n\x04IPV4\x10\x01\x12\x08\n\x04IPV6\x10\x02\x12\t\n\x05TORV2\x10\x03\x12\t\n\x05TORV3\x10\x04\x12\r\n\tWEBSOCKET\x10\x05\x42\n\n\x08_address\"\xfb\x01\n\x0eGetinfoBinding\x12\x39\n\titem_type\x18\x01 \x01(\x0e\x32&.cln.GetinfoBinding.GetinfoBindingType\x12\x14\n\x07\x61\x64\x64ress\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04port\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06socket\x18\x04 \x01(\tH\x02\x88\x01\x01\"P\n\x12GetinfoBindingType\x12\x10\n\x0cLOCAL_SOCKET\x10\x00\x12\x08\n\x04IPV4\x10\x01\x12\x08\n\x04IPV6\x10\x02\x12\t\n\x05TORV2\x10\x03\x12\t\n\x05TORV3\x10\x04\x42\n\n\x08_addressB\x07\n\x05_portB\t\n\x07_socket\"H\n\x10ListpeersRequest\x12\x0f\n\x02id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x12\n\x05level\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x05\n\x03_idB\x08\n\x06_level\"7\n\x11ListpeersResponse\x12\"\n\x05peers\x18\x01 \x03(\x0b\x32\x13.cln.ListpeersPeers\"\xe2\x01\n\x0eListpeersPeers\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x11\n\tconnected\x18\x02 \x01(\x08\x12#\n\x03log\x18\x03 \x03(\x0b\x32\x16.cln.ListpeersPeersLog\x12-\n\x08\x63hannels\x18\x04 \x03(\x0b\x32\x1b.cln.ListpeersPeersChannels\x12\x0f\n\x07netaddr\x18\x05 \x03(\t\x12\x18\n\x0bremote_addr\x18\x07 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08\x66\x65\x61tures\x18\x06 \x01(\x0cH\x01\x88\x01\x01\x42\x0e\n\x0c_remote_addrB\x0b\n\t_features\"\xfd\x02\n\x11ListpeersPeersLog\x12?\n\titem_type\x18\x01 \x01(\x0e\x32,.cln.ListpeersPeersLog.ListpeersPeersLogType\x12\x18\n\x0bnum_skipped\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04time\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06source\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x10\n\x03log\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\x14\n\x07node_id\x18\x06 \x01(\x0cH\x04\x88\x01\x01\x12\x11\n\x04\x64\x61ta\x18\x07 \x01(\x0cH\x05\x88\x01\x01\"i\n\x15ListpeersPeersLogType\x12\x0b\n\x07SKIPPED\x10\x00\x12\n\n\x06\x42ROKEN\x10\x01\x12\x0b\n\x07UNUSUAL\x10\x02\x12\x08\n\x04INFO\x10\x03\x12\t\n\x05\x44\x45\x42UG\x10\x04\x12\t\n\x05IO_IN\x10\x05\x12\n\n\x06IO_OUT\x10\x06\x42\x0e\n\x0c_num_skippedB\x07\n\x05_timeB\t\n\x07_sourceB\x06\n\x04_logB\n\n\x08_node_idB\x07\n\x05_data\"\x8a\x16\n\x16ListpeersPeersChannels\x12\x46\n\x05state\x18\x01 \x01(\x0e\x32\x37.cln.ListpeersPeersChannels.ListpeersPeersChannelsState\x12\x19\n\x0cscratch_txid\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x12\n\x05owner\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x1d\n\x10short_channel_id\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x17\n\nchannel_id\x18\x06 \x01(\x0cH\x03\x88\x01\x01\x12\x19\n\x0c\x66unding_txid\x18\x07 \x01(\x0cH\x04\x88\x01\x01\x12\x1b\n\x0e\x66unding_outnum\x18\x08 \x01(\rH\x05\x88\x01\x01\x12\x1c\n\x0finitial_feerate\x18\t \x01(\tH\x06\x88\x01\x01\x12\x19\n\x0clast_feerate\x18\n \x01(\tH\x07\x88\x01\x01\x12\x19\n\x0cnext_feerate\x18\x0b \x01(\tH\x08\x88\x01\x01\x12\x1a\n\rnext_fee_step\x18\x0c \x01(\rH\t\x88\x01\x01\x12\x35\n\x08inflight\x18\r \x03(\x0b\x32#.cln.ListpeersPeersChannelsInflight\x12\x15\n\x08\x63lose_to\x18\x0e \x01(\x0cH\n\x88\x01\x01\x12\x14\n\x07private\x18\x0f \x01(\x08H\x0b\x88\x01\x01\x12 \n\x06opener\x18\x10 \x01(\x0e\x32\x10.cln.ChannelSide\x12%\n\x06\x63loser\x18\x11 \x01(\x0e\x32\x10.cln.ChannelSideH\x0c\x88\x01\x01\x12\x10\n\x08\x66\x65\x61tures\x18\x12 \x03(\t\x12$\n\nto_us_msat\x18\x14 \x01(\x0b\x32\x0b.cln.AmountH\r\x88\x01\x01\x12(\n\x0emin_to_us_msat\x18\x15 \x01(\x0b\x32\x0b.cln.AmountH\x0e\x88\x01\x01\x12(\n\x0emax_to_us_msat\x18\x16 \x01(\x0b\x32\x0b.cln.AmountH\x0f\x88\x01\x01\x12$\n\ntotal_msat\x18\x17 \x01(\x0b\x32\x0b.cln.AmountH\x10\x88\x01\x01\x12\'\n\rfee_base_msat\x18\x18 \x01(\x0b\x32\x0b.cln.AmountH\x11\x88\x01\x01\x12(\n\x1b\x66\x65\x65_proportional_millionths\x18\x19 \x01(\rH\x12\x88\x01\x01\x12)\n\x0f\x64ust_limit_msat\x18\x1a \x01(\x0b\x32\x0b.cln.AmountH\x13\x88\x01\x01\x12\x30\n\x16max_total_htlc_in_msat\x18\x1b \x01(\x0b\x32\x0b.cln.AmountH\x14\x88\x01\x01\x12,\n\x12their_reserve_msat\x18\x1c \x01(\x0b\x32\x0b.cln.AmountH\x15\x88\x01\x01\x12*\n\x10our_reserve_msat\x18\x1d \x01(\x0b\x32\x0b.cln.AmountH\x16\x88\x01\x01\x12(\n\x0espendable_msat\x18\x1e \x01(\x0b\x32\x0b.cln.AmountH\x17\x88\x01\x01\x12)\n\x0freceivable_msat\x18\x1f \x01(\x0b\x32\x0b.cln.AmountH\x18\x88\x01\x01\x12.\n\x14minimum_htlc_in_msat\x18 \x01(\x0b\x32\x0b.cln.AmountH\x19\x88\x01\x01\x12/\n\x15minimum_htlc_out_msat\x18\x30 \x01(\x0b\x32\x0b.cln.AmountH\x1a\x88\x01\x01\x12/\n\x15maximum_htlc_out_msat\x18\x31 \x01(\x0b\x32\x0b.cln.AmountH\x1b\x88\x01\x01\x12 \n\x13their_to_self_delay\x18! \x01(\rH\x1c\x88\x01\x01\x12\x1e\n\x11our_to_self_delay\x18\" \x01(\rH\x1d\x88\x01\x01\x12\x1f\n\x12max_accepted_htlcs\x18# \x01(\rH\x1e\x88\x01\x01\x12\x0e\n\x06status\x18% \x03(\t\x12 \n\x13in_payments_offered\x18& \x01(\x04H\x1f\x88\x01\x01\x12)\n\x0fin_offered_msat\x18\' \x01(\x0b\x32\x0b.cln.AmountH \x88\x01\x01\x12\"\n\x15in_payments_fulfilled\x18( \x01(\x04H!\x88\x01\x01\x12+\n\x11in_fulfilled_msat\x18) \x01(\x0b\x32\x0b.cln.AmountH\"\x88\x01\x01\x12!\n\x14out_payments_offered\x18* \x01(\x04H#\x88\x01\x01\x12*\n\x10out_offered_msat\x18+ \x01(\x0b\x32\x0b.cln.AmountH$\x88\x01\x01\x12#\n\x16out_payments_fulfilled\x18, \x01(\x04H%\x88\x01\x01\x12,\n\x12out_fulfilled_msat\x18- \x01(\x0b\x32\x0b.cln.AmountH&\x88\x01\x01\x12/\n\x05htlcs\x18. \x03(\x0b\x32 .cln.ListpeersPeersChannelsHtlcs\x12\x1a\n\rclose_to_addr\x18/ \x01(\tH\'\x88\x01\x01\"\xa1\x02\n\x1bListpeersPeersChannelsState\x12\x0c\n\x08OPENINGD\x10\x00\x12\x1c\n\x18\x43HANNELD_AWAITING_LOCKIN\x10\x01\x12\x13\n\x0f\x43HANNELD_NORMAL\x10\x02\x12\x1a\n\x16\x43HANNELD_SHUTTING_DOWN\x10\x03\x12\x18\n\x14\x43LOSINGD_SIGEXCHANGE\x10\x04\x12\x15\n\x11\x43LOSINGD_COMPLETE\x10\x05\x12\x17\n\x13\x41WAITING_UNILATERAL\x10\x06\x12\x16\n\x12\x46UNDING_SPEND_SEEN\x10\x07\x12\x0b\n\x07ONCHAIN\x10\x08\x12\x17\n\x13\x44UALOPEND_OPEN_INIT\x10\t\x12\x1d\n\x19\x44UALOPEND_AWAITING_LOCKIN\x10\nB\x0f\n\r_scratch_txidB\x08\n\x06_ownerB\x13\n\x11_short_channel_idB\r\n\x0b_channel_idB\x0f\n\r_funding_txidB\x11\n\x0f_funding_outnumB\x12\n\x10_initial_feerateB\x0f\n\r_last_feerateB\x0f\n\r_next_feerateB\x10\n\x0e_next_fee_stepB\x0b\n\t_close_toB\n\n\x08_privateB\t\n\x07_closerB\r\n\x0b_to_us_msatB\x11\n\x0f_min_to_us_msatB\x11\n\x0f_max_to_us_msatB\r\n\x0b_total_msatB\x10\n\x0e_fee_base_msatB\x1e\n\x1c_fee_proportional_millionthsB\x12\n\x10_dust_limit_msatB\x19\n\x17_max_total_htlc_in_msatB\x15\n\x13_their_reserve_msatB\x13\n\x11_our_reserve_msatB\x11\n\x0f_spendable_msatB\x12\n\x10_receivable_msatB\x17\n\x15_minimum_htlc_in_msatB\x18\n\x16_minimum_htlc_out_msatB\x18\n\x16_maximum_htlc_out_msatB\x16\n\x14_their_to_self_delayB\x14\n\x12_our_to_self_delayB\x15\n\x13_max_accepted_htlcsB\x16\n\x14_in_payments_offeredB\x12\n\x10_in_offered_msatB\x18\n\x16_in_payments_fulfilledB\x14\n\x12_in_fulfilled_msatB\x17\n\x15_out_payments_offeredB\x13\n\x11_out_offered_msatB\x19\n\x17_out_payments_fulfilledB\x15\n\x13_out_fulfilled_msatB\x10\n\x0e_close_to_addr\"=\n\x1dListpeersPeersChannelsFeerate\x12\r\n\x05perkw\x18\x01 \x01(\r\x12\r\n\x05perkb\x18\x02 \x01(\r\"\xc5\x01\n\x1eListpeersPeersChannelsInflight\x12\x14\n\x0c\x66unding_txid\x18\x01 \x01(\x0c\x12\x16\n\x0e\x66unding_outnum\x18\x02 \x01(\r\x12\x0f\n\x07\x66\x65\x65rate\x18\x03 \x01(\t\x12\'\n\x12total_funding_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12%\n\x10our_funding_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12\x14\n\x0cscratch_txid\x18\x06 \x01(\x0c\"\x87\x03\n\x1dListpeersPeersChannelsFunding\x12$\n\nlocal_msat\x18\x01 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12%\n\x0bremote_msat\x18\x02 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12%\n\x0bpushed_msat\x18\x03 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12%\n\x10local_funds_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12&\n\x11remote_funds_msat\x18\x07 \x01(\x0b\x32\x0b.cln.Amount\x12\'\n\rfee_paid_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\'\n\rfee_rcvd_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x42\r\n\x0b_local_msatB\x0e\n\x0c_remote_msatB\x0e\n\x0c_pushed_msatB\x10\n\x0e_fee_paid_msatB\x10\n\x0e_fee_rcvd_msat\"[\n\x1bListpeersPeersChannelsAlias\x12\x12\n\x05local\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06remote\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_localB\t\n\x07_remote\"\xd2\x02\n\x1bListpeersPeersChannelsHtlcs\x12X\n\tdirection\x18\x01 \x01(\x0e\x32\x45.cln.ListpeersPeersChannelsHtlcs.ListpeersPeersChannelsHtlcsDirection\x12\n\n\x02id\x18\x02 \x01(\x04\x12 \n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12\x0e\n\x06\x65xpiry\x18\x04 \x01(\r\x12\x14\n\x0cpayment_hash\x18\x05 \x01(\x0c\x12\x1a\n\rlocal_trimmed\x18\x06 \x01(\x08H\x00\x88\x01\x01\x12\x13\n\x06status\x18\x07 \x01(\tH\x01\x88\x01\x01\"7\n$ListpeersPeersChannelsHtlcsDirection\x12\x06\n\x02IN\x10\x00\x12\x07\n\x03OUT\x10\x01\x42\x10\n\x0e_local_trimmedB\t\n\x07_status\"0\n\x10ListfundsRequest\x12\x12\n\x05spent\x18\x01 \x01(\x08H\x00\x88\x01\x01\x42\x08\n\x06_spent\"e\n\x11ListfundsResponse\x12&\n\x07outputs\x18\x01 \x03(\x0b\x32\x15.cln.ListfundsOutputs\x12(\n\x08\x63hannels\x18\x02 \x03(\x0b\x32\x16.cln.ListfundsChannels\"\x83\x03\n\x10ListfundsOutputs\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x0e\n\x06output\x18\x02 \x01(\r\x12 \n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12\x14\n\x0cscriptpubkey\x18\x04 \x01(\x0c\x12\x14\n\x07\x61\x64\x64ress\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0credeemscript\x18\x06 \x01(\x0cH\x01\x88\x01\x01\x12<\n\x06status\x18\x07 \x01(\x0e\x32,.cln.ListfundsOutputs.ListfundsOutputsStatus\x12\x10\n\x08reserved\x18\t \x01(\x08\x12\x18\n\x0b\x62lockheight\x18\x08 \x01(\rH\x02\x88\x01\x01\"Q\n\x16ListfundsOutputsStatus\x12\x0f\n\x0bUNCONFIRMED\x10\x00\x12\r\n\tCONFIRMED\x10\x01\x12\t\n\x05SPENT\x10\x02\x12\x0c\n\x08IMMATURE\x10\x03\x42\n\n\x08_addressB\x0f\n\r_redeemscriptB\x0e\n\x0c_blockheight\"\x83\x02\n\x11ListfundsChannels\x12\x0f\n\x07peer_id\x18\x01 \x01(\x0c\x12$\n\x0four_amount_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12 \n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12\x14\n\x0c\x66unding_txid\x18\x04 \x01(\x0c\x12\x16\n\x0e\x66unding_output\x18\x05 \x01(\r\x12\x11\n\tconnected\x18\x06 \x01(\x08\x12 \n\x05state\x18\x07 \x01(\x0e\x32\x11.cln.ChannelState\x12\x1d\n\x10short_channel_id\x18\x08 \x01(\tH\x00\x88\x01\x01\x42\x13\n\x11_short_channel_id\"\xdb\x02\n\x0eSendpayRequest\x12 \n\x05route\x18\x01 \x03(\x0b\x32\x11.cln.SendpayRoute\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\x0c\x12\x12\n\x05label\x18\x03 \x01(\tH\x00\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x1b\n\x0epayment_secret\x18\x06 \x01(\x0cH\x03\x88\x01\x01\x12\x13\n\x06partid\x18\x07 \x01(\rH\x04\x88\x01\x01\x12\x19\n\x0clocalofferid\x18\x08 \x01(\x0cH\x05\x88\x01\x01\x12\x14\n\x07groupid\x18\t \x01(\x04H\x06\x88\x01\x01\x42\x08\n\x06_labelB\x0e\n\x0c_amount_msatB\t\n\x07_bolt11B\x11\n\x0f_payment_secretB\t\n\x07_partidB\x0f\n\r_localofferidB\n\n\x08_groupid\"\xd1\x04\n\x0fSendpayResponse\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x14\n\x07groupid\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x32\n\x06status\x18\x04 \x01(\x0e\x32\".cln.SendpayResponse.SendpayStatus\x12%\n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\x06 \x01(\x0cH\x02\x88\x01\x01\x12\x12\n\ncreated_at\x18\x07 \x01(\x04\x12\x19\n\x0c\x63ompleted_at\x18\x0f \x01(\x04H\x03\x88\x01\x01\x12%\n\x10\x61mount_sent_msat\x18\x08 \x01(\x0b\x32\x0b.cln.Amount\x12\x12\n\x05label\x18\t \x01(\tH\x04\x88\x01\x01\x12\x13\n\x06partid\x18\n \x01(\x04H\x05\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x0b \x01(\tH\x06\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x0c \x01(\tH\x07\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\r \x01(\x0cH\x08\x88\x01\x01\x12\x14\n\x07message\x18\x0e \x01(\tH\t\x88\x01\x01\"*\n\rSendpayStatus\x12\x0b\n\x07PENDING\x10\x00\x12\x0c\n\x08\x43OMPLETE\x10\x01\x42\n\n\x08_groupidB\x0e\n\x0c_amount_msatB\x0e\n\x0c_destinationB\x0f\n\r_completed_atB\x08\n\x06_labelB\t\n\x07_partidB\t\n\x07_bolt11B\t\n\x07_bolt12B\x13\n\x11_payment_preimageB\n\n\x08_message\"\\\n\x0cSendpayRoute\x12 \n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12\n\n\x02id\x18\x02 \x01(\x0c\x12\r\n\x05\x64\x65lay\x18\x03 \x01(\r\x12\x0f\n\x07\x63hannel\x18\x04 \x01(\t\"\x93\x01\n\x13ListchannelsRequest\x12\x1d\n\x10short_channel_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06source\x18\x02 \x01(\x0cH\x01\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\x03 \x01(\x0cH\x02\x88\x01\x01\x42\x13\n\x11_short_channel_idB\t\n\x07_sourceB\x0e\n\x0c_destination\"C\n\x14ListchannelsResponse\x12+\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x19.cln.ListchannelsChannels\"\xa0\x03\n\x14ListchannelsChannels\x12\x0e\n\x06source\x18\x01 \x01(\x0c\x12\x13\n\x0b\x64\x65stination\x18\x02 \x01(\x0c\x12\x18\n\x10short_channel_id\x18\x03 \x01(\t\x12\x0e\n\x06public\x18\x04 \x01(\x08\x12 \n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12\x15\n\rmessage_flags\x18\x06 \x01(\r\x12\x15\n\rchannel_flags\x18\x07 \x01(\r\x12\x0e\n\x06\x61\x63tive\x18\x08 \x01(\x08\x12\x13\n\x0blast_update\x18\t \x01(\r\x12\x1d\n\x15\x62\x61se_fee_millisatoshi\x18\n \x01(\r\x12\x19\n\x11\x66\x65\x65_per_millionth\x18\x0b \x01(\r\x12\r\n\x05\x64\x65lay\x18\x0c \x01(\r\x12&\n\x11htlc_minimum_msat\x18\r \x01(\x0b\x32\x0b.cln.Amount\x12+\n\x11htlc_maximum_msat\x18\x0e \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x10\n\x08\x66\x65\x61tures\x18\x0f \x01(\x0c\x42\x14\n\x12_htlc_maximum_msat\"#\n\x10\x41\x64\x64gossipRequest\x12\x0f\n\x07message\x18\x01 \x01(\x0c\"\x13\n\x11\x41\x64\x64gossipResponse\"o\n\x17\x41utocleaninvoiceRequest\x12\x17\n\nexpired_by\x18\x01 \x01(\x04H\x00\x88\x01\x01\x12\x1a\n\rcycle_seconds\x18\x02 \x01(\x04H\x01\x88\x01\x01\x42\r\n\x0b_expired_byB\x10\n\x0e_cycle_seconds\"\x81\x01\n\x18\x41utocleaninvoiceResponse\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x17\n\nexpired_by\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x1a\n\rcycle_seconds\x18\x03 \x01(\x04H\x01\x88\x01\x01\x42\r\n\x0b_expired_byB\x10\n\x0e_cycle_seconds\"U\n\x13\x43heckmessageRequest\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\r\n\x05zbase\x18\x02 \x01(\t\x12\x13\n\x06pubkey\x18\x03 \x01(\x0cH\x00\x88\x01\x01\x42\t\n\x07_pubkey\"8\n\x14\x43heckmessageResponse\x12\x10\n\x08verified\x18\x01 \x01(\x08\x12\x0e\n\x06pubkey\x18\x02 \x01(\x0c\"\xcb\x02\n\x0c\x43loseRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x1e\n\x11unilateraltimeout\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\x03 \x01(\tH\x01\x88\x01\x01\x12!\n\x14\x66\x65\x65_negotiation_step\x18\x04 \x01(\tH\x02\x88\x01\x01\x12)\n\rwrong_funding\x18\x05 \x01(\x0b\x32\r.cln.OutpointH\x03\x88\x01\x01\x12\x1f\n\x12\x66orce_lease_closed\x18\x06 \x01(\x08H\x04\x88\x01\x01\x12\x1e\n\x08\x66\x65\x65range\x18\x07 \x03(\x0b\x32\x0c.cln.FeerateB\x14\n\x12_unilateraltimeoutB\x0e\n\x0c_destinationB\x17\n\x15_fee_negotiation_stepB\x10\n\x0e_wrong_fundingB\x15\n\x13_force_lease_closed\"\xab\x01\n\rCloseResponse\x12/\n\titem_type\x18\x01 \x01(\x0e\x32\x1c.cln.CloseResponse.CloseType\x12\x0f\n\x02tx\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x11\n\x04txid\x18\x03 \x01(\x0cH\x01\x88\x01\x01\"5\n\tCloseType\x12\n\n\x06MUTUAL\x10\x00\x12\x0e\n\nUNILATERAL\x10\x01\x12\x0c\n\x08UNOPENED\x10\x02\x42\x05\n\x03_txB\x07\n\x05_txid\"T\n\x0e\x43onnectRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\x04host\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04port\x18\x03 \x01(\rH\x01\x88\x01\x01\x42\x07\n\x05_hostB\x07\n\x05_port\"\x8e\x01\n\x0f\x43onnectResponse\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x10\n\x08\x66\x65\x61tures\x18\x02 \x01(\x0c\x12\x38\n\tdirection\x18\x03 \x01(\x0e\x32%.cln.ConnectResponse.ConnectDirection\"#\n\x10\x43onnectDirection\x12\x06\n\x02IN\x10\x00\x12\x07\n\x03OUT\x10\x01\"\xfb\x01\n\x0e\x43onnectAddress\x12\x39\n\titem_type\x18\x01 \x01(\x0e\x32&.cln.ConnectAddress.ConnectAddressType\x12\x13\n\x06socket\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07\x61\x64\x64ress\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x11\n\x04port\x18\x04 \x01(\rH\x02\x88\x01\x01\"P\n\x12\x43onnectAddressType\x12\x10\n\x0cLOCAL_SOCKET\x10\x00\x12\x08\n\x04IPV4\x10\x01\x12\x08\n\x04IPV6\x10\x02\x12\t\n\x05TORV2\x10\x03\x12\t\n\x05TORV3\x10\x04\x42\t\n\x07_socketB\n\n\x08_addressB\x07\n\x05_port\"J\n\x14\x43reateinvoiceRequest\x12\x11\n\tinvstring\x18\x01 \x01(\t\x12\r\n\x05label\x18\x02 \x01(\t\x12\x10\n\x08preimage\x18\x03 \x01(\x0c\"\xf3\x04\n\x15\x43reateinvoiceResponse\x12\r\n\x05label\x18\x01 \x01(\t\x12\x13\n\x06\x62olt11\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x0cpayment_hash\x18\x04 \x01(\x0c\x12%\n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12>\n\x06status\x18\x06 \x01(\x0e\x32..cln.CreateinvoiceResponse.CreateinvoiceStatus\x12\x13\n\x0b\x64\x65scription\x18\x07 \x01(\t\x12\x12\n\nexpires_at\x18\x08 \x01(\x04\x12\x16\n\tpay_index\x18\t \x01(\x04H\x03\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12\x14\n\x07paid_at\x18\x0b \x01(\x04H\x05\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0c \x01(\x0cH\x06\x88\x01\x01\x12\x1b\n\x0elocal_offer_id\x18\r \x01(\x0cH\x07\x88\x01\x01\x12\x17\n\npayer_note\x18\x0e \x01(\tH\x08\x88\x01\x01\"8\n\x13\x43reateinvoiceStatus\x12\x08\n\x04PAID\x10\x00\x12\x0b\n\x07\x45XPIRED\x10\x01\x12\n\n\x06UNPAID\x10\x02\x42\t\n\x07_bolt11B\t\n\x07_bolt12B\x0e\n\x0c_amount_msatB\x0c\n\n_pay_indexB\x17\n\x15_amount_received_msatB\n\n\x08_paid_atB\x13\n\x11_payment_preimageB\x11\n\x0f_local_offer_idB\r\n\x0b_payer_note\"\xb4\x02\n\x10\x44\x61tastoreRequest\x12\x0b\n\x03key\x18\x05 \x03(\t\x12\x13\n\x06string\x18\x06 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03hex\x18\x02 \x01(\x0cH\x01\x88\x01\x01\x12\x36\n\x04mode\x18\x03 \x01(\x0e\x32#.cln.DatastoreRequest.DatastoreModeH\x02\x88\x01\x01\x12\x17\n\ngeneration\x18\x04 \x01(\x04H\x03\x88\x01\x01\"p\n\rDatastoreMode\x12\x0f\n\x0bMUST_CREATE\x10\x00\x12\x10\n\x0cMUST_REPLACE\x10\x01\x12\x15\n\x11\x43REATE_OR_REPLACE\x10\x02\x12\x0f\n\x0bMUST_APPEND\x10\x03\x12\x14\n\x10\x43REATE_OR_APPEND\x10\x04\x42\t\n\x07_stringB\x06\n\x04_hexB\x07\n\x05_modeB\r\n\x0b_generation\"\x82\x01\n\x11\x44\x61tastoreResponse\x12\x0b\n\x03key\x18\x05 \x03(\t\x12\x17\n\ngeneration\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03hex\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x13\n\x06string\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\r\n\x0b_generationB\x06\n\x04_hexB\t\n\x07_string\"\x9d\x01\n\x12\x43reateonionRequest\x12\"\n\x04hops\x18\x01 \x03(\x0b\x32\x14.cln.CreateonionHops\x12\x11\n\tassocdata\x18\x02 \x01(\x0c\x12\x18\n\x0bsession_key\x18\x03 \x01(\x0cH\x00\x88\x01\x01\x12\x17\n\nonion_size\x18\x04 \x01(\rH\x01\x88\x01\x01\x42\x0e\n\x0c_session_keyB\r\n\x0b_onion_size\"<\n\x13\x43reateonionResponse\x12\r\n\x05onion\x18\x01 \x01(\x0c\x12\x16\n\x0eshared_secrets\x18\x02 \x03(\x0c\"2\n\x0f\x43reateonionHops\x12\x0e\n\x06pubkey\x18\x01 \x01(\x0c\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\"J\n\x13\x44\x65ldatastoreRequest\x12\x0b\n\x03key\x18\x03 \x03(\t\x12\x17\n\ngeneration\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\r\n\x0b_generation\"\x85\x01\n\x14\x44\x65ldatastoreResponse\x12\x0b\n\x03key\x18\x05 \x03(\t\x12\x17\n\ngeneration\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03hex\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x13\n\x06string\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\r\n\x0b_generationB\x06\n\x04_hexB\t\n\x07_string\"H\n\x18\x44\x65lexpiredinvoiceRequest\x12\x1a\n\rmaxexpirytime\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\x10\n\x0e_maxexpirytime\"\x1b\n\x19\x44\x65lexpiredinvoiceResponse\"\xb6\x01\n\x11\x44\x65linvoiceRequest\x12\r\n\x05label\x18\x01 \x01(\t\x12\x37\n\x06status\x18\x02 \x01(\x0e\x32\'.cln.DelinvoiceRequest.DelinvoiceStatus\x12\x15\n\x08\x64\x65sconly\x18\x03 \x01(\x08H\x00\x88\x01\x01\"5\n\x10\x44\x65linvoiceStatus\x12\x08\n\x04PAID\x10\x00\x12\x0b\n\x07\x45XPIRED\x10\x01\x12\n\n\x06UNPAID\x10\x02\x42\x0b\n\t_desconly\"\xb7\x03\n\x12\x44\x65linvoiceResponse\x12\r\n\x05label\x18\x01 \x01(\t\x12\x13\n\x06\x62olt11\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x03 \x01(\tH\x01\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\x14\n\x0cpayment_hash\x18\x06 \x01(\x0c\x12\x38\n\x06status\x18\x07 \x01(\x0e\x32(.cln.DelinvoiceResponse.DelinvoiceStatus\x12\x12\n\nexpires_at\x18\x08 \x01(\x04\x12\x1b\n\x0elocal_offer_id\x18\t \x01(\x0cH\x04\x88\x01\x01\x12\x17\n\npayer_note\x18\n \x01(\tH\x05\x88\x01\x01\"5\n\x10\x44\x65linvoiceStatus\x12\x08\n\x04PAID\x10\x00\x12\x0b\n\x07\x45XPIRED\x10\x01\x12\n\n\x06UNPAID\x10\x02\x42\t\n\x07_bolt11B\t\n\x07_bolt12B\x0e\n\x0c_amount_msatB\x0e\n\x0c_descriptionB\x11\n\x0f_local_offer_idB\r\n\x0b_payer_note\"\xb8\x02\n\x0eInvoiceRequest\x12%\n\x0b\x61mount_msat\x18\n \x01(\x0b\x32\x10.cln.AmountOrAny\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\r\n\x05label\x18\x03 \x01(\t\x12\x13\n\x06\x65xpiry\x18\x07 \x01(\x04H\x00\x88\x01\x01\x12\x11\n\tfallbacks\x18\x04 \x03(\t\x12\x15\n\x08preimage\x18\x05 \x01(\x0cH\x01\x88\x01\x01\x12\"\n\x15\x65xposeprivatechannels\x18\x08 \x01(\x08H\x02\x88\x01\x01\x12\x11\n\x04\x63ltv\x18\x06 \x01(\rH\x03\x88\x01\x01\x12\x19\n\x0c\x64\x65schashonly\x18\t \x01(\x08H\x04\x88\x01\x01\x42\t\n\x07_expiryB\x0b\n\t_preimageB\x18\n\x16_exposeprivatechannelsB\x07\n\x05_cltvB\x0f\n\r_deschashonly\"\xe7\x02\n\x0fInvoiceResponse\x12\x0e\n\x06\x62olt11\x18\x01 \x01(\t\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\x0c\x12\x16\n\x0epayment_secret\x18\x03 \x01(\x0c\x12\x12\n\nexpires_at\x18\x04 \x01(\x04\x12\x1d\n\x10warning_capacity\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x1c\n\x0fwarning_offline\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\x1d\n\x10warning_deadends\x18\x07 \x01(\tH\x02\x88\x01\x01\x12#\n\x16warning_private_unused\x18\x08 \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0bwarning_mpp\x18\t \x01(\tH\x04\x88\x01\x01\x42\x13\n\x11_warning_capacityB\x12\n\x10_warning_offlineB\x13\n\x11_warning_deadendsB\x19\n\x17_warning_private_unusedB\x0e\n\x0c_warning_mpp\"#\n\x14ListdatastoreRequest\x12\x0b\n\x03key\x18\x02 \x03(\t\"G\n\x15ListdatastoreResponse\x12.\n\tdatastore\x18\x01 \x03(\x0b\x32\x1b.cln.ListdatastoreDatastore\"\x87\x01\n\x16ListdatastoreDatastore\x12\x0b\n\x03key\x18\x01 \x03(\t\x12\x17\n\ngeneration\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03hex\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x13\n\x06string\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\r\n\x0b_generationB\x06\n\x04_hexB\t\n\x07_string\"\xa9\x01\n\x13ListinvoicesRequest\x12\x12\n\x05label\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tinvstring\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x19\n\x0cpayment_hash\x18\x03 \x01(\x0cH\x02\x88\x01\x01\x12\x15\n\x08offer_id\x18\x04 \x01(\tH\x03\x88\x01\x01\x42\x08\n\x06_labelB\x0c\n\n_invstringB\x0f\n\r_payment_hashB\x0b\n\t_offer_id\"C\n\x14ListinvoicesResponse\x12+\n\x08invoices\x18\x01 \x03(\x0b\x32\x19.cln.ListinvoicesInvoices\"\x94\x05\n\x14ListinvoicesInvoices\x12\r\n\x05label\x18\x01 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x44\n\x06status\x18\x04 \x01(\x0e\x32\x34.cln.ListinvoicesInvoices.ListinvoicesInvoicesStatus\x12\x12\n\nexpires_at\x18\x05 \x01(\x04\x12%\n\x0b\x61mount_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x07 \x01(\tH\x02\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x08 \x01(\tH\x03\x88\x01\x01\x12\x1b\n\x0elocal_offer_id\x18\t \x01(\x0cH\x04\x88\x01\x01\x12\x17\n\npayer_note\x18\n \x01(\tH\x05\x88\x01\x01\x12\x16\n\tpay_index\x18\x0b \x01(\x04H\x06\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\x0c \x01(\x0b\x32\x0b.cln.AmountH\x07\x88\x01\x01\x12\x14\n\x07paid_at\x18\r \x01(\x04H\x08\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0e \x01(\x0cH\t\x88\x01\x01\"?\n\x1aListinvoicesInvoicesStatus\x12\n\n\x06UNPAID\x10\x00\x12\x08\n\x04PAID\x10\x01\x12\x0b\n\x07\x45XPIRED\x10\x02\x42\x0e\n\x0c_descriptionB\x0e\n\x0c_amount_msatB\t\n\x07_bolt11B\t\n\x07_bolt12B\x11\n\x0f_local_offer_idB\r\n\x0b_payer_noteB\x0c\n\n_pay_indexB\x17\n\x15_amount_received_msatB\n\n\x08_paid_atB\x13\n\x11_payment_preimage\"\xdc\x02\n\x10SendonionRequest\x12\r\n\x05onion\x18\x01 \x01(\x0c\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x12\n\x05label\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x16\n\x0eshared_secrets\x18\x05 \x03(\x0c\x12\x13\n\x06partid\x18\x06 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x07 \x01(\tH\x02\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\x0c \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\t \x01(\x0cH\x04\x88\x01\x01\x12\x19\n\x0clocalofferid\x18\n \x01(\x0cH\x05\x88\x01\x01\x12\x14\n\x07groupid\x18\x0b \x01(\x04H\x06\x88\x01\x01\x42\x08\n\x06_labelB\t\n\x07_partidB\t\n\x07_bolt11B\x0e\n\x0c_amount_msatB\x0e\n\x0c_destinationB\x0f\n\r_localofferidB\n\n\x08_groupid\"\x8b\x04\n\x11SendonionResponse\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\x0c\x12\x36\n\x06status\x18\x03 \x01(\x0e\x32&.cln.SendonionResponse.SendonionStatus\x12%\n\x0b\x61mount_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\x05 \x01(\x0cH\x01\x88\x01\x01\x12\x12\n\ncreated_at\x18\x06 \x01(\x04\x12%\n\x10\x61mount_sent_msat\x18\x07 \x01(\x0b\x32\x0b.cln.Amount\x12\x12\n\x05label\x18\x08 \x01(\tH\x02\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\t \x01(\tH\x03\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\n \x01(\tH\x04\x88\x01\x01\x12\x13\n\x06partid\x18\r \x01(\x04H\x05\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0b \x01(\x0cH\x06\x88\x01\x01\x12\x14\n\x07message\x18\x0c \x01(\tH\x07\x88\x01\x01\",\n\x0fSendonionStatus\x12\x0b\n\x07PENDING\x10\x00\x12\x0c\n\x08\x43OMPLETE\x10\x01\x42\x0e\n\x0c_amount_msatB\x0e\n\x0c_destinationB\x08\n\x06_labelB\t\n\x07_bolt11B\t\n\x07_bolt12B\t\n\x07_partidB\x13\n\x11_payment_preimageB\n\n\x08_message\"Q\n\x12SendonionFirst_hop\x12\n\n\x02id\x18\x01 \x01(\x0c\x12 \n\x0b\x61mount_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\r\n\x05\x64\x65lay\x18\x03 \x01(\r\"\xeb\x01\n\x13ListsendpaysRequest\x12\x13\n\x06\x62olt11\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0cpayment_hash\x18\x02 \x01(\x0cH\x01\x88\x01\x01\x12@\n\x06status\x18\x03 \x01(\x0e\x32+.cln.ListsendpaysRequest.ListsendpaysStatusH\x02\x88\x01\x01\";\n\x12ListsendpaysStatus\x12\x0b\n\x07PENDING\x10\x00\x12\x0c\n\x08\x43OMPLETE\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\x42\t\n\x07_bolt11B\x0f\n\r_payment_hashB\t\n\x07_status\"C\n\x14ListsendpaysResponse\x12+\n\x08payments\x18\x01 \x03(\x0b\x32\x19.cln.ListsendpaysPayments\"\xd4\x04\n\x14ListsendpaysPayments\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x0f\n\x07groupid\x18\x02 \x01(\x04\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x44\n\x06status\x18\x04 \x01(\x0e\x32\x34.cln.ListsendpaysPayments.ListsendpaysPaymentsStatus\x12%\n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\x06 \x01(\x0cH\x01\x88\x01\x01\x12\x12\n\ncreated_at\x18\x07 \x01(\x04\x12%\n\x10\x61mount_sent_msat\x18\x08 \x01(\x0b\x32\x0b.cln.Amount\x12\x12\n\x05label\x18\t \x01(\tH\x02\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\n \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x0e \x01(\tH\x04\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x0b \x01(\tH\x05\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0c \x01(\x0cH\x06\x88\x01\x01\x12\x17\n\nerroronion\x18\r \x01(\x0cH\x07\x88\x01\x01\"C\n\x1aListsendpaysPaymentsStatus\x12\x0b\n\x07PENDING\x10\x00\x12\n\n\x06\x46\x41ILED\x10\x01\x12\x0c\n\x08\x43OMPLETE\x10\x02\x42\x0e\n\x0c_amount_msatB\x0e\n\x0c_destinationB\x08\n\x06_labelB\t\n\x07_bolt11B\x0e\n\x0c_descriptionB\t\n\x07_bolt12B\x13\n\x11_payment_preimageB\r\n\x0b_erroronion\"\x19\n\x17ListtransactionsRequest\"S\n\x18ListtransactionsResponse\x12\x37\n\x0ctransactions\x18\x01 \x03(\x0b\x32!.cln.ListtransactionsTransactions\"\x9a\x02\n\x1cListtransactionsTransactions\x12\x0c\n\x04hash\x18\x01 \x01(\x0c\x12\r\n\x05rawtx\x18\x02 \x01(\x0c\x12\x13\n\x0b\x62lockheight\x18\x03 \x01(\r\x12\x0f\n\x07txindex\x18\x04 \x01(\r\x12\x14\n\x07\x63hannel\x18\x06 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08locktime\x18\x07 \x01(\r\x12\x0f\n\x07version\x18\x08 \x01(\r\x12\x37\n\x06inputs\x18\t \x03(\x0b\x32\'.cln.ListtransactionsTransactionsInputs\x12\x39\n\x07outputs\x18\n \x03(\x0b\x32(.cln.ListtransactionsTransactionsOutputsB\n\n\x08_channel\"\x84\x04\n\"ListtransactionsTransactionsInputs\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\r\n\x05index\x18\x02 \x01(\r\x12\x10\n\x08sequence\x18\x03 \x01(\r\x12\x66\n\titem_type\x18\x04 \x01(\x0e\x32N.cln.ListtransactionsTransactionsInputs.ListtransactionsTransactionsInputsTypeH\x00\x88\x01\x01\x12\x14\n\x07\x63hannel\x18\x05 \x01(\tH\x01\x88\x01\x01\"\x96\x02\n&ListtransactionsTransactionsInputsType\x12\n\n\x06THEIRS\x10\x00\x12\x0b\n\x07\x44\x45POSIT\x10\x01\x12\x0c\n\x08WITHDRAW\x10\x02\x12\x13\n\x0f\x43HANNEL_FUNDING\x10\x03\x12\x18\n\x14\x43HANNEL_MUTUAL_CLOSE\x10\x04\x12\x1c\n\x18\x43HANNEL_UNILATERAL_CLOSE\x10\x05\x12\x11\n\rCHANNEL_SWEEP\x10\x06\x12\x18\n\x14\x43HANNEL_HTLC_SUCCESS\x10\x07\x12\x18\n\x14\x43HANNEL_HTLC_TIMEOUT\x10\x08\x12\x13\n\x0f\x43HANNEL_PENALTY\x10\t\x12\x1c\n\x18\x43HANNEL_UNILATERAL_CHEAT\x10\nB\x0c\n\n_item_typeB\n\n\x08_channel\"\xa0\x04\n#ListtransactionsTransactionsOutputs\x12\r\n\x05index\x18\x01 \x01(\r\x12 \n\x0b\x61mount_msat\x18\x06 \x01(\x0b\x32\x0b.cln.Amount\x12\x14\n\x0cscriptPubKey\x18\x03 \x01(\x0c\x12h\n\titem_type\x18\x04 \x01(\x0e\x32P.cln.ListtransactionsTransactionsOutputs.ListtransactionsTransactionsOutputsTypeH\x00\x88\x01\x01\x12\x14\n\x07\x63hannel\x18\x05 \x01(\tH\x01\x88\x01\x01\"\x97\x02\n\'ListtransactionsTransactionsOutputsType\x12\n\n\x06THEIRS\x10\x00\x12\x0b\n\x07\x44\x45POSIT\x10\x01\x12\x0c\n\x08WITHDRAW\x10\x02\x12\x13\n\x0f\x43HANNEL_FUNDING\x10\x03\x12\x18\n\x14\x43HANNEL_MUTUAL_CLOSE\x10\x04\x12\x1c\n\x18\x43HANNEL_UNILATERAL_CLOSE\x10\x05\x12\x11\n\rCHANNEL_SWEEP\x10\x06\x12\x18\n\x14\x43HANNEL_HTLC_SUCCESS\x10\x07\x12\x18\n\x14\x43HANNEL_HTLC_TIMEOUT\x10\x08\x12\x13\n\x0f\x43HANNEL_PENALTY\x10\t\x12\x1c\n\x18\x43HANNEL_UNILATERAL_CHEAT\x10\nB\x0c\n\n_item_typeB\n\n\x08_channel\"\xd8\x03\n\nPayRequest\x12\x0e\n\x06\x62olt11\x18\x01 \x01(\t\x12%\n\x0b\x61mount_msat\x18\r \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x12\n\x05label\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x17\n\nriskfactor\x18\x08 \x01(\x01H\x02\x88\x01\x01\x12\x1a\n\rmaxfeepercent\x18\x04 \x01(\x01H\x03\x88\x01\x01\x12\x16\n\tretry_for\x18\x05 \x01(\rH\x04\x88\x01\x01\x12\x15\n\x08maxdelay\x18\x06 \x01(\rH\x05\x88\x01\x01\x12#\n\texemptfee\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x06\x88\x01\x01\x12\x19\n\x0clocalofferid\x18\t \x01(\x0cH\x07\x88\x01\x01\x12\x0f\n\x07\x65xclude\x18\n \x03(\t\x12 \n\x06maxfee\x18\x0b \x01(\x0b\x32\x0b.cln.AmountH\x08\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x0c \x01(\tH\t\x88\x01\x01\x42\x0e\n\x0c_amount_msatB\x08\n\x06_labelB\r\n\x0b_riskfactorB\x10\n\x0e_maxfeepercentB\x0c\n\n_retry_forB\x0b\n\t_maxdelayB\x0c\n\n_exemptfeeB\x0f\n\r_localofferidB\t\n\x07_maxfeeB\x0e\n\x0c_description\"\xfb\x02\n\x0bPayResponse\x12\x18\n\x10payment_preimage\x18\x01 \x01(\x0c\x12\x18\n\x0b\x64\x65stination\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x12\n\ncreated_at\x18\x04 \x01(\x01\x12\r\n\x05parts\x18\x05 \x01(\r\x12 \n\x0b\x61mount_msat\x18\x06 \x01(\x0b\x32\x0b.cln.Amount\x12%\n\x10\x61mount_sent_msat\x18\x07 \x01(\x0b\x32\x0b.cln.Amount\x12\'\n\x1awarning_partial_completion\x18\x08 \x01(\tH\x01\x88\x01\x01\x12*\n\x06status\x18\t \x01(\x0e\x32\x1a.cln.PayResponse.PayStatus\"2\n\tPayStatus\x12\x0c\n\x08\x43OMPLETE\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\x42\x0e\n\x0c_destinationB\x1d\n\x1b_warning_partial_completion\"*\n\x10ListnodesRequest\x12\x0f\n\x02id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x05\n\x03_id\"7\n\x11ListnodesResponse\x12\"\n\x05nodes\x18\x01 \x03(\x0b\x32\x13.cln.ListnodesNodes\"\xe1\x01\n\x0eListnodesNodes\x12\x0e\n\x06nodeid\x18\x01 \x01(\x0c\x12\x1b\n\x0elast_timestamp\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x12\n\x05\x61lias\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63olor\x18\x04 \x01(\x0cH\x02\x88\x01\x01\x12\x15\n\x08\x66\x65\x61tures\x18\x05 \x01(\x0cH\x03\x88\x01\x01\x12/\n\taddresses\x18\x06 \x03(\x0b\x32\x1c.cln.ListnodesNodesAddressesB\x11\n\x0f_last_timestampB\x08\n\x06_aliasB\x08\n\x06_colorB\x0b\n\t_features\"\xf7\x01\n\x17ListnodesNodesAddresses\x12K\n\titem_type\x18\x01 \x01(\x0e\x32\x38.cln.ListnodesNodesAddresses.ListnodesNodesAddressesType\x12\x0c\n\x04port\x18\x02 \x01(\r\x12\x14\n\x07\x61\x64\x64ress\x18\x03 \x01(\tH\x00\x88\x01\x01\"_\n\x1bListnodesNodesAddressesType\x12\x07\n\x03\x44NS\x10\x00\x12\x08\n\x04IPV4\x10\x01\x12\x08\n\x04IPV6\x10\x02\x12\t\n\x05TORV2\x10\x03\x12\t\n\x05TORV3\x10\x04\x12\r\n\tWEBSOCKET\x10\x05\x42\n\n\x08_address\"g\n\x15WaitanyinvoiceRequest\x12\x1a\n\rlastpay_index\x18\x01 \x01(\x04H\x00\x88\x01\x01\x12\x14\n\x07timeout\x18\x02 \x01(\x04H\x01\x88\x01\x01\x42\x10\n\x0e_lastpay_indexB\n\n\x08_timeout\"\x93\x04\n\x16WaitanyinvoiceResponse\x12\r\n\x05label\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12@\n\x06status\x18\x04 \x01(\x0e\x32\x30.cln.WaitanyinvoiceResponse.WaitanyinvoiceStatus\x12\x12\n\nexpires_at\x18\x05 \x01(\x04\x12%\n\x0b\x61mount_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x08 \x01(\tH\x02\x88\x01\x01\x12\x16\n\tpay_index\x18\t \x01(\x04H\x03\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12\x14\n\x07paid_at\x18\x0b \x01(\x04H\x05\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0c \x01(\x0cH\x06\x88\x01\x01\"-\n\x14WaitanyinvoiceStatus\x12\x08\n\x04PAID\x10\x00\x12\x0b\n\x07\x45XPIRED\x10\x01\x42\x0e\n\x0c_amount_msatB\t\n\x07_bolt11B\t\n\x07_bolt12B\x0c\n\n_pay_indexB\x17\n\x15_amount_received_msatB\n\n\x08_paid_atB\x13\n\x11_payment_preimage\"#\n\x12WaitinvoiceRequest\x12\r\n\x05label\x18\x01 \x01(\t\"\x87\x04\n\x13WaitinvoiceResponse\x12\r\n\x05label\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12:\n\x06status\x18\x04 \x01(\x0e\x32*.cln.WaitinvoiceResponse.WaitinvoiceStatus\x12\x12\n\nexpires_at\x18\x05 \x01(\x04\x12%\n\x0b\x61mount_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x08 \x01(\tH\x02\x88\x01\x01\x12\x16\n\tpay_index\x18\t \x01(\x04H\x03\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12\x14\n\x07paid_at\x18\x0b \x01(\x04H\x05\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0c \x01(\x0cH\x06\x88\x01\x01\"*\n\x11WaitinvoiceStatus\x12\x08\n\x04PAID\x10\x00\x12\x0b\n\x07\x45XPIRED\x10\x01\x42\x0e\n\x0c_amount_msatB\t\n\x07_bolt11B\t\n\x07_bolt12B\x0c\n\n_pay_indexB\x17\n\x15_amount_received_msatB\n\n\x08_paid_atB\x13\n\x11_payment_preimage\"\x8e\x01\n\x12WaitsendpayRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x14\n\x07timeout\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x13\n\x06partid\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x14\n\x07groupid\x18\x04 \x01(\x04H\x02\x88\x01\x01\x42\n\n\x08_timeoutB\t\n\x07_partidB\n\n\x08_groupid\"\xb2\x04\n\x13WaitsendpayResponse\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x14\n\x07groupid\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12:\n\x06status\x18\x04 \x01(\x0e\x32*.cln.WaitsendpayResponse.WaitsendpayStatus\x12%\n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\x06 \x01(\x0cH\x02\x88\x01\x01\x12\x12\n\ncreated_at\x18\x07 \x01(\x04\x12\x19\n\x0c\x63ompleted_at\x18\x0e \x01(\x01H\x03\x88\x01\x01\x12%\n\x10\x61mount_sent_msat\x18\x08 \x01(\x0b\x32\x0b.cln.Amount\x12\x12\n\x05label\x18\t \x01(\tH\x04\x88\x01\x01\x12\x13\n\x06partid\x18\n \x01(\x04H\x05\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x0b \x01(\tH\x06\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x0c \x01(\tH\x07\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\r \x01(\x0cH\x08\x88\x01\x01\"!\n\x11WaitsendpayStatus\x12\x0c\n\x08\x43OMPLETE\x10\x00\x42\n\n\x08_groupidB\x0e\n\x0c_amount_msatB\x0e\n\x0c_destinationB\x0f\n\r_completed_atB\x08\n\x06_labelB\t\n\x07_partidB\t\n\x07_bolt11B\t\n\x07_bolt12B\x13\n\x11_payment_preimage\"\x9e\x01\n\x0eNewaddrRequest\x12@\n\x0b\x61\x64\x64resstype\x18\x01 \x01(\x0e\x32&.cln.NewaddrRequest.NewaddrAddresstypeH\x00\x88\x01\x01\":\n\x12NewaddrAddresstype\x12\n\n\x06\x42\x45\x43H32\x10\x00\x12\x0f\n\x0bP2SH_SEGWIT\x10\x01\x12\x07\n\x03\x41LL\x10\x02\x42\x0e\n\x0c_addresstype\"[\n\x0fNewaddrResponse\x12\x13\n\x06\x62\x65\x63h32\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0bp2sh_segwit\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\t\n\x07_bech32B\x0e\n\x0c_p2sh_segwit\"\xca\x01\n\x0fWithdrawRequest\x12\x13\n\x0b\x64\x65stination\x18\x01 \x01(\t\x12&\n\x07satoshi\x18\x02 \x01(\x0b\x32\x10.cln.AmountOrAllH\x00\x88\x01\x01\x12\"\n\x07\x66\x65\x65rate\x18\x05 \x01(\x0b\x32\x0c.cln.FeerateH\x01\x88\x01\x01\x12\x14\n\x07minconf\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x1c\n\x05utxos\x18\x04 \x03(\x0b\x32\r.cln.OutpointB\n\n\x08_satoshiB\n\n\x08_feerateB\n\n\x08_minconf\":\n\x10WithdrawResponse\x12\n\n\x02tx\x18\x01 \x01(\x0c\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\x12\x0c\n\x04psbt\x18\x03 \x01(\t\"\x82\x03\n\x0eKeysendRequest\x12\x13\n\x0b\x64\x65stination\x18\x01 \x01(\x0c\x12 \n\x0b\x61mount_msat\x18\n \x01(\x0b\x32\x0b.cln.Amount\x12\x12\n\x05label\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rmaxfeepercent\x18\x04 \x01(\x01H\x01\x88\x01\x01\x12\x16\n\tretry_for\x18\x05 \x01(\rH\x02\x88\x01\x01\x12\x15\n\x08maxdelay\x18\x06 \x01(\rH\x03\x88\x01\x01\x12#\n\texemptfee\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12+\n\nroutehints\x18\x08 \x01(\x0b\x32\x12.cln.RoutehintListH\x05\x88\x01\x01\x12&\n\textratlvs\x18\t \x01(\x0b\x32\x0e.cln.TlvStreamH\x06\x88\x01\x01\x42\x08\n\x06_labelB\x10\n\x0e_maxfeepercentB\x0c\n\n_retry_forB\x0b\n\t_maxdelayB\x0c\n\n_exemptfeeB\r\n\x0b_routehintsB\x0c\n\n_extratlvs\"\xf2\x02\n\x0fKeysendResponse\x12\x18\n\x10payment_preimage\x18\x01 \x01(\x0c\x12\x18\n\x0b\x64\x65stination\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x12\n\ncreated_at\x18\x04 \x01(\x01\x12\r\n\x05parts\x18\x05 \x01(\r\x12 \n\x0b\x61mount_msat\x18\x06 \x01(\x0b\x32\x0b.cln.Amount\x12%\n\x10\x61mount_sent_msat\x18\x07 \x01(\x0b\x32\x0b.cln.Amount\x12\'\n\x1awarning_partial_completion\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x32\n\x06status\x18\t \x01(\x0e\x32\".cln.KeysendResponse.KeysendStatus\"\x1d\n\rKeysendStatus\x12\x0c\n\x08\x43OMPLETE\x10\x00\x42\x0e\n\x0c_destinationB\x1d\n\x1b_warning_partial_completion\"\xbc\x02\n\x0f\x46undpsbtRequest\x12!\n\x07satoshi\x18\x01 \x01(\x0b\x32\x10.cln.AmountOrAll\x12\x1d\n\x07\x66\x65\x65rate\x18\x02 \x01(\x0b\x32\x0c.cln.Feerate\x12\x13\n\x0bstartweight\x18\x03 \x01(\r\x12\x14\n\x07minconf\x18\x04 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07reserve\x18\x05 \x01(\rH\x01\x88\x01\x01\x12\x15\n\x08locktime\x18\x06 \x01(\rH\x02\x88\x01\x01\x12\x1f\n\x12min_witness_weight\x18\x07 \x01(\rH\x03\x88\x01\x01\x12\x1d\n\x10\x65xcess_as_change\x18\x08 \x01(\x08H\x04\x88\x01\x01\x42\n\n\x08_minconfB\n\n\x08_reserveB\x0b\n\t_locktimeB\x15\n\x13_min_witness_weightB\x13\n\x11_excess_as_change\"\xd9\x01\n\x10\x46undpsbtResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x16\n\x0e\x66\x65\x65rate_per_kw\x18\x02 \x01(\r\x12\x1e\n\x16\x65stimated_final_weight\x18\x03 \x01(\r\x12 \n\x0b\x65xcess_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12\x1a\n\rchange_outnum\x18\x05 \x01(\rH\x00\x88\x01\x01\x12/\n\x0creservations\x18\x06 \x03(\x0b\x32\x19.cln.FundpsbtReservationsB\x10\n\x0e_change_outnum\"u\n\x14\x46undpsbtReservations\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x0c\n\x04vout\x18\x02 \x01(\r\x12\x14\n\x0cwas_reserved\x18\x03 \x01(\x08\x12\x10\n\x08reserved\x18\x04 \x01(\x08\x12\x19\n\x11reserved_to_block\x18\x05 \x01(\r\"A\n\x0fSendpsbtRequest\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x14\n\x07reserve\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\n\n\x08_reserve\",\n\x10SendpsbtResponse\x12\n\n\x02tx\x18\x01 \x01(\x0c\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\"1\n\x0fSignpsbtRequest\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x10\n\x08signonly\x18\x02 \x03(\r\"\'\n\x10SignpsbtResponse\x12\x13\n\x0bsigned_psbt\x18\x01 \x01(\t\"\xdb\x02\n\x0fUtxopsbtRequest\x12\x1c\n\x07satoshi\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12\x1d\n\x07\x66\x65\x65rate\x18\x02 \x01(\x0b\x32\x0c.cln.Feerate\x12\x13\n\x0bstartweight\x18\x03 \x01(\r\x12\x1c\n\x05utxos\x18\x04 \x03(\x0b\x32\r.cln.Outpoint\x12\x14\n\x07reserve\x18\x05 \x01(\rH\x00\x88\x01\x01\x12\x17\n\nreservedok\x18\x08 \x01(\x08H\x01\x88\x01\x01\x12\x15\n\x08locktime\x18\x06 \x01(\rH\x02\x88\x01\x01\x12\x1f\n\x12min_witness_weight\x18\x07 \x01(\rH\x03\x88\x01\x01\x12\x1d\n\x10\x65xcess_as_change\x18\t \x01(\x08H\x04\x88\x01\x01\x42\n\n\x08_reserveB\r\n\x0b_reservedokB\x0b\n\t_locktimeB\x15\n\x13_min_witness_weightB\x13\n\x11_excess_as_change\"\xd9\x01\n\x10UtxopsbtResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x16\n\x0e\x66\x65\x65rate_per_kw\x18\x02 \x01(\r\x12\x1e\n\x16\x65stimated_final_weight\x18\x03 \x01(\r\x12 \n\x0b\x65xcess_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12\x1a\n\rchange_outnum\x18\x05 \x01(\rH\x00\x88\x01\x01\x12/\n\x0creservations\x18\x06 \x03(\x0b\x32\x19.cln.UtxopsbtReservationsB\x10\n\x0e_change_outnum\"u\n\x14UtxopsbtReservations\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x0c\n\x04vout\x18\x02 \x01(\r\x12\x14\n\x0cwas_reserved\x18\x03 \x01(\x08\x12\x10\n\x08reserved\x18\x04 \x01(\x08\x12\x19\n\x11reserved_to_block\x18\x05 \x01(\r\" \n\x10TxdiscardRequest\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\"6\n\x11TxdiscardResponse\x12\x13\n\x0bunsigned_tx\x18\x01 \x01(\x0c\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\"\xa4\x01\n\x10TxprepareRequest\x12 \n\x07outputs\x18\x05 \x03(\x0b\x32\x0f.cln.OutputDesc\x12\"\n\x07\x66\x65\x65rate\x18\x02 \x01(\x0b\x32\x0c.cln.FeerateH\x00\x88\x01\x01\x12\x14\n\x07minconf\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x1c\n\x05utxos\x18\x04 \x03(\x0b\x32\r.cln.OutpointB\n\n\x08_feerateB\n\n\x08_minconf\"D\n\x11TxprepareResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x13\n\x0bunsigned_tx\x18\x02 \x01(\x0c\x12\x0c\n\x04txid\x18\x03 \x01(\x0c\"\x1d\n\rTxsendRequest\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\"8\n\x0eTxsendResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\n\n\x02tx\x18\x02 \x01(\x0c\x12\x0c\n\x04txid\x18\x03 \x01(\x0c\"=\n\x11\x44isconnectRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x12\n\x05\x66orce\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\x08\n\x06_force\"\x14\n\x12\x44isconnectResponse\"k\n\x0f\x46\x65\x65ratesRequest\x12\x31\n\x05style\x18\x01 \x01(\x0e\x32\".cln.FeeratesRequest.FeeratesStyle\"%\n\rFeeratesStyle\x12\t\n\x05PERKB\x10\x00\x12\t\n\x05PERKW\x10\x01\"V\n\x10\x46\x65\x65ratesResponse\x12%\n\x18warning_missing_feerates\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x1b\n\x19_warning_missing_feerates\"\xc3\x02\n\rFeeratesPerkb\x12\x16\n\x0emin_acceptable\x18\x01 \x01(\r\x12\x16\n\x0emax_acceptable\x18\x02 \x01(\r\x12\x14\n\x07opening\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x19\n\x0cmutual_close\x18\x04 \x01(\rH\x01\x88\x01\x01\x12\x1d\n\x10unilateral_close\x18\x05 \x01(\rH\x02\x88\x01\x01\x12\x1a\n\rdelayed_to_us\x18\x06 \x01(\rH\x03\x88\x01\x01\x12\x1c\n\x0fhtlc_resolution\x18\x07 \x01(\rH\x04\x88\x01\x01\x12\x14\n\x07penalty\x18\x08 \x01(\rH\x05\x88\x01\x01\x42\n\n\x08_openingB\x0f\n\r_mutual_closeB\x13\n\x11_unilateral_closeB\x10\n\x0e_delayed_to_usB\x12\n\x10_htlc_resolutionB\n\n\x08_penalty\"\xc3\x02\n\rFeeratesPerkw\x12\x16\n\x0emin_acceptable\x18\x01 \x01(\r\x12\x16\n\x0emax_acceptable\x18\x02 \x01(\r\x12\x14\n\x07opening\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x19\n\x0cmutual_close\x18\x04 \x01(\rH\x01\x88\x01\x01\x12\x1d\n\x10unilateral_close\x18\x05 \x01(\rH\x02\x88\x01\x01\x12\x1a\n\rdelayed_to_us\x18\x06 \x01(\rH\x03\x88\x01\x01\x12\x1c\n\x0fhtlc_resolution\x18\x07 \x01(\rH\x04\x88\x01\x01\x12\x14\n\x07penalty\x18\x08 \x01(\rH\x05\x88\x01\x01\x42\n\n\x08_openingB\x0f\n\r_mutual_closeB\x13\n\x11_unilateral_closeB\x10\n\x0e_delayed_to_usB\x12\n\x10_htlc_resolutionB\n\n\x08_penalty\"\xc1\x01\n\x1d\x46\x65\x65ratesOnchain_fee_estimates\x12 \n\x18opening_channel_satoshis\x18\x01 \x01(\x04\x12\x1d\n\x15mutual_close_satoshis\x18\x02 \x01(\x04\x12!\n\x19unilateral_close_satoshis\x18\x03 \x01(\x04\x12\x1d\n\x15htlc_timeout_satoshis\x18\x04 \x01(\x04\x12\x1d\n\x15htlc_success_satoshis\x18\x05 \x01(\x04\"\xe5\x03\n\x12\x46undchannelRequest\x12\n\n\x02id\x18\t \x01(\x0c\x12 \n\x06\x61mount\x18\x01 \x01(\x0b\x32\x10.cln.AmountOrAll\x12\"\n\x07\x66\x65\x65rate\x18\x02 \x01(\x0b\x32\x0c.cln.FeerateH\x00\x88\x01\x01\x12\x15\n\x08\x61nnounce\x18\x03 \x01(\x08H\x01\x88\x01\x01\x12\x14\n\x07minconf\x18\n \x01(\rH\x02\x88\x01\x01\x12#\n\tpush_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x15\n\x08\x63lose_to\x18\x06 \x01(\tH\x04\x88\x01\x01\x12%\n\x0brequest_amt\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x1a\n\rcompact_lease\x18\x08 \x01(\tH\x06\x88\x01\x01\x12\x1c\n\x05utxos\x18\x0b \x03(\x0b\x32\r.cln.Outpoint\x12\x15\n\x08mindepth\x18\x0c \x01(\rH\x07\x88\x01\x01\x12!\n\x07reserve\x18\r \x01(\x0b\x32\x0b.cln.AmountH\x08\x88\x01\x01\x42\n\n\x08_feerateB\x0b\n\t_announceB\n\n\x08_minconfB\x0c\n\n_push_msatB\x0b\n\t_close_toB\x0e\n\x0c_request_amtB\x10\n\x0e_compact_leaseB\x0b\n\t_mindepthB\n\n\x08_reserve\"\x9b\x01\n\x13\x46undchannelResponse\x12\n\n\x02tx\x18\x01 \x01(\x0c\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\x12\x0e\n\x06outnum\x18\x03 \x01(\r\x12\x12\n\nchannel_id\x18\x04 \x01(\x0c\x12\x15\n\x08\x63lose_to\x18\x05 \x01(\x0cH\x00\x88\x01\x01\x12\x15\n\x08mindepth\x18\x06 \x01(\rH\x01\x88\x01\x01\x42\x0b\n\t_close_toB\x0b\n\t_mindepth\"\xec\x01\n\x0fGetrouteRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12 \n\x0b\x61mount_msat\x18\t \x01(\x0b\x32\x0b.cln.Amount\x12\x12\n\nriskfactor\x18\x03 \x01(\x04\x12\x11\n\x04\x63ltv\x18\x04 \x01(\x01H\x00\x88\x01\x01\x12\x13\n\x06\x66romid\x18\x05 \x01(\x0cH\x01\x88\x01\x01\x12\x18\n\x0b\x66uzzpercent\x18\x06 \x01(\rH\x02\x88\x01\x01\x12\x0f\n\x07\x65xclude\x18\x07 \x03(\t\x12\x14\n\x07maxhops\x18\x08 \x01(\rH\x03\x88\x01\x01\x42\x07\n\x05_cltvB\t\n\x07_fromidB\x0e\n\x0c_fuzzpercentB\n\n\x08_maxhops\"5\n\x10GetrouteResponse\x12!\n\x05route\x18\x01 \x03(\x0b\x32\x12.cln.GetrouteRoute\"\xe9\x01\n\rGetrouteRoute\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x0f\n\x07\x63hannel\x18\x02 \x01(\t\x12\x11\n\tdirection\x18\x03 \x01(\r\x12\x15\n\x08msatoshi\x18\x07 \x01(\x04H\x00\x88\x01\x01\x12 \n\x0b\x61mount_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12\r\n\x05\x64\x65lay\x18\x05 \x01(\r\x12\x34\n\x05style\x18\x06 \x01(\x0e\x32%.cln.GetrouteRoute.GetrouteRouteStyle\"\x1d\n\x12GetrouteRouteStyle\x12\x07\n\x03TLV\x10\x00\x42\x0b\n\t_msatoshi\"\x82\x02\n\x13ListforwardsRequest\x12@\n\x06status\x18\x01 \x01(\x0e\x32+.cln.ListforwardsRequest.ListforwardsStatusH\x00\x88\x01\x01\x12\x17\n\nin_channel\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0bout_channel\x18\x03 \x01(\tH\x02\x88\x01\x01\"L\n\x12ListforwardsStatus\x12\x0b\n\x07OFFERED\x10\x00\x12\x0b\n\x07SETTLED\x10\x01\x12\x10\n\x0cLOCAL_FAILED\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\x42\t\n\x07_statusB\r\n\x0b_in_channelB\x0e\n\x0c_out_channel\"C\n\x14ListforwardsResponse\x12+\n\x08\x66orwards\x18\x01 \x03(\x0b\x32\x19.cln.ListforwardsForwards\"\xde\x04\n\x14ListforwardsForwards\x12\x12\n\nin_channel\x18\x01 \x01(\t\x12\x17\n\nin_htlc_id\x18\n \x01(\x04H\x00\x88\x01\x01\x12\x1c\n\x07in_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\x44\n\x06status\x18\x03 \x01(\x0e\x32\x34.cln.ListforwardsForwards.ListforwardsForwardsStatus\x12\x15\n\rreceived_time\x18\x04 \x01(\x01\x12\x18\n\x0bout_channel\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0bout_htlc_id\x18\x0b \x01(\x04H\x02\x88\x01\x01\x12G\n\x05style\x18\t \x01(\x0e\x32\x33.cln.ListforwardsForwards.ListforwardsForwardsStyleH\x03\x88\x01\x01\x12\"\n\x08\x66\x65\x65_msat\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12\"\n\x08out_msat\x18\x08 \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\"T\n\x1aListforwardsForwardsStatus\x12\x0b\n\x07OFFERED\x10\x00\x12\x0b\n\x07SETTLED\x10\x01\x12\x10\n\x0cLOCAL_FAILED\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\"0\n\x19ListforwardsForwardsStyle\x12\n\n\x06LEGACY\x10\x00\x12\x07\n\x03TLV\x10\x01\x42\r\n\x0b_in_htlc_idB\x0e\n\x0c_out_channelB\x0e\n\x0c_out_htlc_idB\x08\n\x06_styleB\x0b\n\t_fee_msatB\x0b\n\t_out_msat\"\xdb\x01\n\x0fListpaysRequest\x12\x13\n\x06\x62olt11\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0cpayment_hash\x18\x02 \x01(\x0cH\x01\x88\x01\x01\x12\x38\n\x06status\x18\x03 \x01(\x0e\x32#.cln.ListpaysRequest.ListpaysStatusH\x02\x88\x01\x01\"7\n\x0eListpaysStatus\x12\x0b\n\x07PENDING\x10\x00\x12\x0c\n\x08\x43OMPLETE\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\x42\t\n\x07_bolt11B\x0f\n\r_payment_hashB\t\n\x07_status\"3\n\x10ListpaysResponse\x12\x1f\n\x04pays\x18\x01 \x03(\x0b\x32\x11.cln.ListpaysPays\"\x87\x04\n\x0cListpaysPays\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x34\n\x06status\x18\x02 \x01(\x0e\x32$.cln.ListpaysPays.ListpaysPaysStatus\x12\x18\n\x0b\x64\x65stination\x18\x03 \x01(\x0cH\x00\x88\x01\x01\x12\x12\n\ncreated_at\x18\x04 \x01(\x04\x12\x19\n\x0c\x63ompleted_at\x18\x0c \x01(\x04H\x01\x88\x01\x01\x12\x12\n\x05label\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x06 \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x0b \x01(\tH\x04\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x07 \x01(\tH\x05\x88\x01\x01\x12\x15\n\x08preimage\x18\r \x01(\x0cH\x06\x88\x01\x01\x12\x1c\n\x0fnumber_of_parts\x18\x0e \x01(\x04H\x07\x88\x01\x01\x12\x17\n\nerroronion\x18\n \x01(\x0cH\x08\x88\x01\x01\";\n\x12ListpaysPaysStatus\x12\x0b\n\x07PENDING\x10\x00\x12\n\n\x06\x46\x41ILED\x10\x01\x12\x0c\n\x08\x43OMPLETE\x10\x02\x42\x0e\n\x0c_destinationB\x0f\n\r_completed_atB\x08\n\x06_labelB\t\n\x07_bolt11B\x0e\n\x0c_descriptionB\t\n\x07_bolt12B\x0b\n\t_preimageB\x12\n\x10_number_of_partsB\r\n\x0b_erroronion\"Y\n\x0bPingRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x10\n\x03len\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x16\n\tpongbytes\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x06\n\x04_lenB\x0c\n\n_pongbytes\"\x1e\n\x0cPingResponse\x12\x0e\n\x06totlen\x18\x01 \x01(\r\"\xf8\x01\n\x11SetchannelRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12!\n\x07\x66\x65\x65\x62\x61se\x18\x02 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x13\n\x06\x66\x65\x65ppm\x18\x03 \x01(\rH\x01\x88\x01\x01\x12!\n\x07htlcmin\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12!\n\x07htlcmax\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x19\n\x0c\x65nforcedelay\x18\x06 \x01(\rH\x04\x88\x01\x01\x42\n\n\x08_feebaseB\t\n\x07_feeppmB\n\n\x08_htlcminB\n\n\x08_htlcmaxB\x0f\n\r_enforcedelay\"?\n\x12SetchannelResponse\x12)\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x17.cln.SetchannelChannels\"\x94\x03\n\x12SetchannelChannels\x12\x0f\n\x07peer_id\x18\x01 \x01(\x0c\x12\x12\n\nchannel_id\x18\x02 \x01(\x0c\x12\x1d\n\x10short_channel_id\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\"\n\rfee_base_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12#\n\x1b\x66\x65\x65_proportional_millionths\x18\x05 \x01(\r\x12*\n\x15minimum_htlc_out_msat\x18\x06 \x01(\x0b\x32\x0b.cln.Amount\x12$\n\x17warning_htlcmin_too_low\x18\x07 \x01(\tH\x01\x88\x01\x01\x12*\n\x15maximum_htlc_out_msat\x18\x08 \x01(\x0b\x32\x0b.cln.Amount\x12%\n\x18warning_htlcmax_too_high\x18\t \x01(\tH\x02\x88\x01\x01\x42\x13\n\x11_short_channel_idB\x1a\n\x18_warning_htlcmin_too_lowB\x1b\n\x19_warning_htlcmax_too_high\"%\n\x12SignmessageRequest\x12\x0f\n\x07message\x18\x01 \x01(\t\"F\n\x13SignmessageResponse\x12\x11\n\tsignature\x18\x01 \x01(\x0c\x12\r\n\x05recid\x18\x02 \x01(\x0c\x12\r\n\x05zbase\x18\x03 \x01(\t\"\r\n\x0bStopRequest\"\x0e\n\x0cStopResponse2\xb1\x17\n\x04Node\x12\x36\n\x07Getinfo\x12\x13.cln.GetinfoRequest\x1a\x14.cln.GetinfoResponse\"\x00\x12<\n\tListPeers\x12\x15.cln.ListpeersRequest\x1a\x16.cln.ListpeersResponse\"\x00\x12<\n\tListFunds\x12\x15.cln.ListfundsRequest\x1a\x16.cln.ListfundsResponse\"\x00\x12\x36\n\x07SendPay\x12\x13.cln.SendpayRequest\x1a\x14.cln.SendpayResponse\"\x00\x12\x45\n\x0cListChannels\x12\x18.cln.ListchannelsRequest\x1a\x19.cln.ListchannelsResponse\"\x00\x12<\n\tAddGossip\x12\x15.cln.AddgossipRequest\x1a\x16.cln.AddgossipResponse\"\x00\x12Q\n\x10\x41utoCleanInvoice\x12\x1c.cln.AutocleaninvoiceRequest\x1a\x1d.cln.AutocleaninvoiceResponse\"\x00\x12\x45\n\x0c\x43heckMessage\x12\x18.cln.CheckmessageRequest\x1a\x19.cln.CheckmessageResponse\"\x00\x12\x30\n\x05\x43lose\x12\x11.cln.CloseRequest\x1a\x12.cln.CloseResponse\"\x00\x12:\n\x0b\x43onnectPeer\x12\x13.cln.ConnectRequest\x1a\x14.cln.ConnectResponse\"\x00\x12H\n\rCreateInvoice\x12\x19.cln.CreateinvoiceRequest\x1a\x1a.cln.CreateinvoiceResponse\"\x00\x12<\n\tDatastore\x12\x15.cln.DatastoreRequest\x1a\x16.cln.DatastoreResponse\"\x00\x12\x42\n\x0b\x43reateOnion\x12\x17.cln.CreateonionRequest\x1a\x18.cln.CreateonionResponse\"\x00\x12\x45\n\x0c\x44\x65lDatastore\x12\x18.cln.DeldatastoreRequest\x1a\x19.cln.DeldatastoreResponse\"\x00\x12T\n\x11\x44\x65lExpiredInvoice\x12\x1d.cln.DelexpiredinvoiceRequest\x1a\x1e.cln.DelexpiredinvoiceResponse\"\x00\x12?\n\nDelInvoice\x12\x16.cln.DelinvoiceRequest\x1a\x17.cln.DelinvoiceResponse\"\x00\x12\x36\n\x07Invoice\x12\x13.cln.InvoiceRequest\x1a\x14.cln.InvoiceResponse\"\x00\x12H\n\rListDatastore\x12\x19.cln.ListdatastoreRequest\x1a\x1a.cln.ListdatastoreResponse\"\x00\x12\x45\n\x0cListInvoices\x12\x18.cln.ListinvoicesRequest\x1a\x19.cln.ListinvoicesResponse\"\x00\x12<\n\tSendOnion\x12\x15.cln.SendonionRequest\x1a\x16.cln.SendonionResponse\"\x00\x12\x45\n\x0cListSendPays\x12\x18.cln.ListsendpaysRequest\x1a\x19.cln.ListsendpaysResponse\"\x00\x12Q\n\x10ListTransactions\x12\x1c.cln.ListtransactionsRequest\x1a\x1d.cln.ListtransactionsResponse\"\x00\x12*\n\x03Pay\x12\x0f.cln.PayRequest\x1a\x10.cln.PayResponse\"\x00\x12<\n\tListNodes\x12\x15.cln.ListnodesRequest\x1a\x16.cln.ListnodesResponse\"\x00\x12K\n\x0eWaitAnyInvoice\x12\x1a.cln.WaitanyinvoiceRequest\x1a\x1b.cln.WaitanyinvoiceResponse\"\x00\x12\x42\n\x0bWaitInvoice\x12\x17.cln.WaitinvoiceRequest\x1a\x18.cln.WaitinvoiceResponse\"\x00\x12\x42\n\x0bWaitSendPay\x12\x17.cln.WaitsendpayRequest\x1a\x18.cln.WaitsendpayResponse\"\x00\x12\x36\n\x07NewAddr\x12\x13.cln.NewaddrRequest\x1a\x14.cln.NewaddrResponse\"\x00\x12\x39\n\x08Withdraw\x12\x14.cln.WithdrawRequest\x1a\x15.cln.WithdrawResponse\"\x00\x12\x36\n\x07KeySend\x12\x13.cln.KeysendRequest\x1a\x14.cln.KeysendResponse\"\x00\x12\x39\n\x08\x46undPsbt\x12\x14.cln.FundpsbtRequest\x1a\x15.cln.FundpsbtResponse\"\x00\x12\x39\n\x08SendPsbt\x12\x14.cln.SendpsbtRequest\x1a\x15.cln.SendpsbtResponse\"\x00\x12\x39\n\x08SignPsbt\x12\x14.cln.SignpsbtRequest\x1a\x15.cln.SignpsbtResponse\"\x00\x12\x39\n\x08UtxoPsbt\x12\x14.cln.UtxopsbtRequest\x1a\x15.cln.UtxopsbtResponse\"\x00\x12<\n\tTxDiscard\x12\x15.cln.TxdiscardRequest\x1a\x16.cln.TxdiscardResponse\"\x00\x12<\n\tTxPrepare\x12\x15.cln.TxprepareRequest\x1a\x16.cln.TxprepareResponse\"\x00\x12\x33\n\x06TxSend\x12\x12.cln.TxsendRequest\x1a\x13.cln.TxsendResponse\"\x00\x12?\n\nDisconnect\x12\x16.cln.DisconnectRequest\x1a\x17.cln.DisconnectResponse\"\x00\x12\x39\n\x08\x46\x65\x65rates\x12\x14.cln.FeeratesRequest\x1a\x15.cln.FeeratesResponse\"\x00\x12\x42\n\x0b\x46undChannel\x12\x17.cln.FundchannelRequest\x1a\x18.cln.FundchannelResponse\"\x00\x12\x39\n\x08GetRoute\x12\x14.cln.GetrouteRequest\x1a\x15.cln.GetrouteResponse\"\x00\x12\x45\n\x0cListForwards\x12\x18.cln.ListforwardsRequest\x1a\x19.cln.ListforwardsResponse\"\x00\x12\x39\n\x08ListPays\x12\x14.cln.ListpaysRequest\x1a\x15.cln.ListpaysResponse\"\x00\x12-\n\x04Ping\x12\x10.cln.PingRequest\x1a\x11.cln.PingResponse\"\x00\x12?\n\nSetChannel\x12\x16.cln.SetchannelRequest\x1a\x17.cln.SetchannelResponse\"\x00\x12\x42\n\x0bSignMessage\x12\x17.cln.SignmessageRequest\x1a\x18.cln.SignmessageResponse\"\x00\x12-\n\x04Stop\x12\x10.cln.StopRequest\x1a\x11.cln.StopResponse\"\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\nnode.proto\x12\x03\x63ln\x1a\x10primitives.proto\"\x10\n\x0eGetinfoRequest\"\xae\x04\n\x0fGetinfoResponse\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05\x61lias\x18\x02 \x01(\t\x12\r\n\x05\x63olor\x18\x03 \x01(\x0c\x12\x11\n\tnum_peers\x18\x04 \x01(\r\x12\x1c\n\x14num_pending_channels\x18\x05 \x01(\r\x12\x1b\n\x13num_active_channels\x18\x06 \x01(\r\x12\x1d\n\x15num_inactive_channels\x18\x07 \x01(\r\x12\x0f\n\x07version\x18\x08 \x01(\t\x12\x15\n\rlightning_dir\x18\t \x01(\t\x12\x13\n\x0b\x62lockheight\x18\x0b \x01(\r\x12\x0f\n\x07network\x18\x0c \x01(\t\x12$\n\x17msatoshi_fees_collected\x18\x12 \x01(\x04H\x00\x88\x01\x01\x12(\n\x13\x66\x65\x65s_collected_msat\x18\r \x01(\x0b\x32\x0b.cln.Amount\x12$\n\x07\x61\x64\x64ress\x18\x0e \x03(\x0b\x32\x13.cln.GetinfoAddress\x12$\n\x07\x62inding\x18\x0f \x03(\x0b\x32\x13.cln.GetinfoBinding\x12\"\n\x15warning_bitcoind_sync\x18\x10 \x01(\tH\x01\x88\x01\x01\x12$\n\x17warning_lightningd_sync\x18\x11 \x01(\tH\x02\x88\x01\x01\x42\x1a\n\x18_msatoshi_fees_collectedB\x18\n\x16_warning_bitcoind_syncB\x1a\n\x18_warning_lightningd_sync\"S\n\x13GetinfoOur_features\x12\x0c\n\x04init\x18\x01 \x01(\x0c\x12\x0c\n\x04node\x18\x02 \x01(\x0c\x12\x0f\n\x07\x63hannel\x18\x03 \x01(\x0c\x12\x0f\n\x07invoice\x18\x04 \x01(\x0c\"\xd3\x01\n\x0eGetinfoAddress\x12\x39\n\titem_type\x18\x01 \x01(\x0e\x32&.cln.GetinfoAddress.GetinfoAddressType\x12\x0c\n\x04port\x18\x02 \x01(\r\x12\x14\n\x07\x61\x64\x64ress\x18\x03 \x01(\tH\x00\x88\x01\x01\"V\n\x12GetinfoAddressType\x12\x07\n\x03\x44NS\x10\x00\x12\x08\n\x04IPV4\x10\x01\x12\x08\n\x04IPV6\x10\x02\x12\t\n\x05TORV2\x10\x03\x12\t\n\x05TORV3\x10\x04\x12\r\n\tWEBSOCKET\x10\x05\x42\n\n\x08_address\"\xfb\x01\n\x0eGetinfoBinding\x12\x39\n\titem_type\x18\x01 \x01(\x0e\x32&.cln.GetinfoBinding.GetinfoBindingType\x12\x14\n\x07\x61\x64\x64ress\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04port\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06socket\x18\x04 \x01(\tH\x02\x88\x01\x01\"P\n\x12GetinfoBindingType\x12\x10\n\x0cLOCAL_SOCKET\x10\x00\x12\x08\n\x04IPV4\x10\x01\x12\x08\n\x04IPV6\x10\x02\x12\t\n\x05TORV2\x10\x03\x12\t\n\x05TORV3\x10\x04\x42\n\n\x08_addressB\x07\n\x05_portB\t\n\x07_socket\"H\n\x10ListpeersRequest\x12\x0f\n\x02id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x12\n\x05level\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x05\n\x03_idB\x08\n\x06_level\"7\n\x11ListpeersResponse\x12\"\n\x05peers\x18\x01 \x03(\x0b\x32\x13.cln.ListpeersPeers\"\xe2\x01\n\x0eListpeersPeers\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x11\n\tconnected\x18\x02 \x01(\x08\x12#\n\x03log\x18\x03 \x03(\x0b\x32\x16.cln.ListpeersPeersLog\x12-\n\x08\x63hannels\x18\x04 \x03(\x0b\x32\x1b.cln.ListpeersPeersChannels\x12\x0f\n\x07netaddr\x18\x05 \x03(\t\x12\x18\n\x0bremote_addr\x18\x07 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08\x66\x65\x61tures\x18\x06 \x01(\x0cH\x01\x88\x01\x01\x42\x0e\n\x0c_remote_addrB\x0b\n\t_features\"\xfd\x02\n\x11ListpeersPeersLog\x12?\n\titem_type\x18\x01 \x01(\x0e\x32,.cln.ListpeersPeersLog.ListpeersPeersLogType\x12\x18\n\x0bnum_skipped\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04time\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06source\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x10\n\x03log\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\x14\n\x07node_id\x18\x06 \x01(\x0cH\x04\x88\x01\x01\x12\x11\n\x04\x64\x61ta\x18\x07 \x01(\x0cH\x05\x88\x01\x01\"i\n\x15ListpeersPeersLogType\x12\x0b\n\x07SKIPPED\x10\x00\x12\n\n\x06\x42ROKEN\x10\x01\x12\x0b\n\x07UNUSUAL\x10\x02\x12\x08\n\x04INFO\x10\x03\x12\t\n\x05\x44\x45\x42UG\x10\x04\x12\t\n\x05IO_IN\x10\x05\x12\n\n\x06IO_OUT\x10\x06\x42\x0e\n\x0c_num_skippedB\x07\n\x05_timeB\t\n\x07_sourceB\x06\n\x04_logB\n\n\x08_node_idB\x07\n\x05_data\"\x8a\x16\n\x16ListpeersPeersChannels\x12\x46\n\x05state\x18\x01 \x01(\x0e\x32\x37.cln.ListpeersPeersChannels.ListpeersPeersChannelsState\x12\x19\n\x0cscratch_txid\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x12\n\x05owner\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x1d\n\x10short_channel_id\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x17\n\nchannel_id\x18\x06 \x01(\x0cH\x03\x88\x01\x01\x12\x19\n\x0c\x66unding_txid\x18\x07 \x01(\x0cH\x04\x88\x01\x01\x12\x1b\n\x0e\x66unding_outnum\x18\x08 \x01(\rH\x05\x88\x01\x01\x12\x1c\n\x0finitial_feerate\x18\t \x01(\tH\x06\x88\x01\x01\x12\x19\n\x0clast_feerate\x18\n \x01(\tH\x07\x88\x01\x01\x12\x19\n\x0cnext_feerate\x18\x0b \x01(\tH\x08\x88\x01\x01\x12\x1a\n\rnext_fee_step\x18\x0c \x01(\rH\t\x88\x01\x01\x12\x35\n\x08inflight\x18\r \x03(\x0b\x32#.cln.ListpeersPeersChannelsInflight\x12\x15\n\x08\x63lose_to\x18\x0e \x01(\x0cH\n\x88\x01\x01\x12\x14\n\x07private\x18\x0f \x01(\x08H\x0b\x88\x01\x01\x12 \n\x06opener\x18\x10 \x01(\x0e\x32\x10.cln.ChannelSide\x12%\n\x06\x63loser\x18\x11 \x01(\x0e\x32\x10.cln.ChannelSideH\x0c\x88\x01\x01\x12\x10\n\x08\x66\x65\x61tures\x18\x12 \x03(\t\x12$\n\nto_us_msat\x18\x14 \x01(\x0b\x32\x0b.cln.AmountH\r\x88\x01\x01\x12(\n\x0emin_to_us_msat\x18\x15 \x01(\x0b\x32\x0b.cln.AmountH\x0e\x88\x01\x01\x12(\n\x0emax_to_us_msat\x18\x16 \x01(\x0b\x32\x0b.cln.AmountH\x0f\x88\x01\x01\x12$\n\ntotal_msat\x18\x17 \x01(\x0b\x32\x0b.cln.AmountH\x10\x88\x01\x01\x12\'\n\rfee_base_msat\x18\x18 \x01(\x0b\x32\x0b.cln.AmountH\x11\x88\x01\x01\x12(\n\x1b\x66\x65\x65_proportional_millionths\x18\x19 \x01(\rH\x12\x88\x01\x01\x12)\n\x0f\x64ust_limit_msat\x18\x1a \x01(\x0b\x32\x0b.cln.AmountH\x13\x88\x01\x01\x12\x30\n\x16max_total_htlc_in_msat\x18\x1b \x01(\x0b\x32\x0b.cln.AmountH\x14\x88\x01\x01\x12,\n\x12their_reserve_msat\x18\x1c \x01(\x0b\x32\x0b.cln.AmountH\x15\x88\x01\x01\x12*\n\x10our_reserve_msat\x18\x1d \x01(\x0b\x32\x0b.cln.AmountH\x16\x88\x01\x01\x12(\n\x0espendable_msat\x18\x1e \x01(\x0b\x32\x0b.cln.AmountH\x17\x88\x01\x01\x12)\n\x0freceivable_msat\x18\x1f \x01(\x0b\x32\x0b.cln.AmountH\x18\x88\x01\x01\x12.\n\x14minimum_htlc_in_msat\x18 \x01(\x0b\x32\x0b.cln.AmountH\x19\x88\x01\x01\x12/\n\x15minimum_htlc_out_msat\x18\x30 \x01(\x0b\x32\x0b.cln.AmountH\x1a\x88\x01\x01\x12/\n\x15maximum_htlc_out_msat\x18\x31 \x01(\x0b\x32\x0b.cln.AmountH\x1b\x88\x01\x01\x12 \n\x13their_to_self_delay\x18! \x01(\rH\x1c\x88\x01\x01\x12\x1e\n\x11our_to_self_delay\x18\" \x01(\rH\x1d\x88\x01\x01\x12\x1f\n\x12max_accepted_htlcs\x18# \x01(\rH\x1e\x88\x01\x01\x12\x0e\n\x06status\x18% \x03(\t\x12 \n\x13in_payments_offered\x18& \x01(\x04H\x1f\x88\x01\x01\x12)\n\x0fin_offered_msat\x18\' \x01(\x0b\x32\x0b.cln.AmountH \x88\x01\x01\x12\"\n\x15in_payments_fulfilled\x18( \x01(\x04H!\x88\x01\x01\x12+\n\x11in_fulfilled_msat\x18) \x01(\x0b\x32\x0b.cln.AmountH\"\x88\x01\x01\x12!\n\x14out_payments_offered\x18* \x01(\x04H#\x88\x01\x01\x12*\n\x10out_offered_msat\x18+ \x01(\x0b\x32\x0b.cln.AmountH$\x88\x01\x01\x12#\n\x16out_payments_fulfilled\x18, \x01(\x04H%\x88\x01\x01\x12,\n\x12out_fulfilled_msat\x18- \x01(\x0b\x32\x0b.cln.AmountH&\x88\x01\x01\x12/\n\x05htlcs\x18. \x03(\x0b\x32 .cln.ListpeersPeersChannelsHtlcs\x12\x1a\n\rclose_to_addr\x18/ \x01(\tH\'\x88\x01\x01\"\xa1\x02\n\x1bListpeersPeersChannelsState\x12\x0c\n\x08OPENINGD\x10\x00\x12\x1c\n\x18\x43HANNELD_AWAITING_LOCKIN\x10\x01\x12\x13\n\x0f\x43HANNELD_NORMAL\x10\x02\x12\x1a\n\x16\x43HANNELD_SHUTTING_DOWN\x10\x03\x12\x18\n\x14\x43LOSINGD_SIGEXCHANGE\x10\x04\x12\x15\n\x11\x43LOSINGD_COMPLETE\x10\x05\x12\x17\n\x13\x41WAITING_UNILATERAL\x10\x06\x12\x16\n\x12\x46UNDING_SPEND_SEEN\x10\x07\x12\x0b\n\x07ONCHAIN\x10\x08\x12\x17\n\x13\x44UALOPEND_OPEN_INIT\x10\t\x12\x1d\n\x19\x44UALOPEND_AWAITING_LOCKIN\x10\nB\x0f\n\r_scratch_txidB\x08\n\x06_ownerB\x13\n\x11_short_channel_idB\r\n\x0b_channel_idB\x0f\n\r_funding_txidB\x11\n\x0f_funding_outnumB\x12\n\x10_initial_feerateB\x0f\n\r_last_feerateB\x0f\n\r_next_feerateB\x10\n\x0e_next_fee_stepB\x0b\n\t_close_toB\n\n\x08_privateB\t\n\x07_closerB\r\n\x0b_to_us_msatB\x11\n\x0f_min_to_us_msatB\x11\n\x0f_max_to_us_msatB\r\n\x0b_total_msatB\x10\n\x0e_fee_base_msatB\x1e\n\x1c_fee_proportional_millionthsB\x12\n\x10_dust_limit_msatB\x19\n\x17_max_total_htlc_in_msatB\x15\n\x13_their_reserve_msatB\x13\n\x11_our_reserve_msatB\x11\n\x0f_spendable_msatB\x12\n\x10_receivable_msatB\x17\n\x15_minimum_htlc_in_msatB\x18\n\x16_minimum_htlc_out_msatB\x18\n\x16_maximum_htlc_out_msatB\x16\n\x14_their_to_self_delayB\x14\n\x12_our_to_self_delayB\x15\n\x13_max_accepted_htlcsB\x16\n\x14_in_payments_offeredB\x12\n\x10_in_offered_msatB\x18\n\x16_in_payments_fulfilledB\x14\n\x12_in_fulfilled_msatB\x17\n\x15_out_payments_offeredB\x13\n\x11_out_offered_msatB\x19\n\x17_out_payments_fulfilledB\x15\n\x13_out_fulfilled_msatB\x10\n\x0e_close_to_addr\"=\n\x1dListpeersPeersChannelsFeerate\x12\r\n\x05perkw\x18\x01 \x01(\r\x12\r\n\x05perkb\x18\x02 \x01(\r\"\xc5\x01\n\x1eListpeersPeersChannelsInflight\x12\x14\n\x0c\x66unding_txid\x18\x01 \x01(\x0c\x12\x16\n\x0e\x66unding_outnum\x18\x02 \x01(\r\x12\x0f\n\x07\x66\x65\x65rate\x18\x03 \x01(\t\x12\'\n\x12total_funding_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12%\n\x10our_funding_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12\x14\n\x0cscratch_txid\x18\x06 \x01(\x0c\"\x87\x03\n\x1dListpeersPeersChannelsFunding\x12$\n\nlocal_msat\x18\x01 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12%\n\x0bremote_msat\x18\x02 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12%\n\x0bpushed_msat\x18\x03 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12%\n\x10local_funds_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12&\n\x11remote_funds_msat\x18\x07 \x01(\x0b\x32\x0b.cln.Amount\x12\'\n\rfee_paid_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\'\n\rfee_rcvd_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x42\r\n\x0b_local_msatB\x0e\n\x0c_remote_msatB\x0e\n\x0c_pushed_msatB\x10\n\x0e_fee_paid_msatB\x10\n\x0e_fee_rcvd_msat\"[\n\x1bListpeersPeersChannelsAlias\x12\x12\n\x05local\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06remote\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_localB\t\n\x07_remote\"\xd2\x02\n\x1bListpeersPeersChannelsHtlcs\x12X\n\tdirection\x18\x01 \x01(\x0e\x32\x45.cln.ListpeersPeersChannelsHtlcs.ListpeersPeersChannelsHtlcsDirection\x12\n\n\x02id\x18\x02 \x01(\x04\x12 \n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12\x0e\n\x06\x65xpiry\x18\x04 \x01(\r\x12\x14\n\x0cpayment_hash\x18\x05 \x01(\x0c\x12\x1a\n\rlocal_trimmed\x18\x06 \x01(\x08H\x00\x88\x01\x01\x12\x13\n\x06status\x18\x07 \x01(\tH\x01\x88\x01\x01\"7\n$ListpeersPeersChannelsHtlcsDirection\x12\x06\n\x02IN\x10\x00\x12\x07\n\x03OUT\x10\x01\x42\x10\n\x0e_local_trimmedB\t\n\x07_status\"0\n\x10ListfundsRequest\x12\x12\n\x05spent\x18\x01 \x01(\x08H\x00\x88\x01\x01\x42\x08\n\x06_spent\"e\n\x11ListfundsResponse\x12&\n\x07outputs\x18\x01 \x03(\x0b\x32\x15.cln.ListfundsOutputs\x12(\n\x08\x63hannels\x18\x02 \x03(\x0b\x32\x16.cln.ListfundsChannels\"\x83\x03\n\x10ListfundsOutputs\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x0e\n\x06output\x18\x02 \x01(\r\x12 \n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12\x14\n\x0cscriptpubkey\x18\x04 \x01(\x0c\x12\x14\n\x07\x61\x64\x64ress\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0credeemscript\x18\x06 \x01(\x0cH\x01\x88\x01\x01\x12<\n\x06status\x18\x07 \x01(\x0e\x32,.cln.ListfundsOutputs.ListfundsOutputsStatus\x12\x10\n\x08reserved\x18\t \x01(\x08\x12\x18\n\x0b\x62lockheight\x18\x08 \x01(\rH\x02\x88\x01\x01\"Q\n\x16ListfundsOutputsStatus\x12\x0f\n\x0bUNCONFIRMED\x10\x00\x12\r\n\tCONFIRMED\x10\x01\x12\t\n\x05SPENT\x10\x02\x12\x0c\n\x08IMMATURE\x10\x03\x42\n\n\x08_addressB\x0f\n\r_redeemscriptB\x0e\n\x0c_blockheight\"\x83\x02\n\x11ListfundsChannels\x12\x0f\n\x07peer_id\x18\x01 \x01(\x0c\x12$\n\x0four_amount_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12 \n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12\x14\n\x0c\x66unding_txid\x18\x04 \x01(\x0c\x12\x16\n\x0e\x66unding_output\x18\x05 \x01(\r\x12\x11\n\tconnected\x18\x06 \x01(\x08\x12 \n\x05state\x18\x07 \x01(\x0e\x32\x11.cln.ChannelState\x12\x1d\n\x10short_channel_id\x18\x08 \x01(\tH\x00\x88\x01\x01\x42\x13\n\x11_short_channel_id\"\xdb\x02\n\x0eSendpayRequest\x12 \n\x05route\x18\x01 \x03(\x0b\x32\x11.cln.SendpayRoute\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\x0c\x12\x12\n\x05label\x18\x03 \x01(\tH\x00\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x1b\n\x0epayment_secret\x18\x06 \x01(\x0cH\x03\x88\x01\x01\x12\x13\n\x06partid\x18\x07 \x01(\rH\x04\x88\x01\x01\x12\x19\n\x0clocalofferid\x18\x08 \x01(\x0cH\x05\x88\x01\x01\x12\x14\n\x07groupid\x18\t \x01(\x04H\x06\x88\x01\x01\x42\x08\n\x06_labelB\x0e\n\x0c_amount_msatB\t\n\x07_bolt11B\x11\n\x0f_payment_secretB\t\n\x07_partidB\x0f\n\r_localofferidB\n\n\x08_groupid\"\xd1\x04\n\x0fSendpayResponse\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x14\n\x07groupid\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x32\n\x06status\x18\x04 \x01(\x0e\x32\".cln.SendpayResponse.SendpayStatus\x12%\n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\x06 \x01(\x0cH\x02\x88\x01\x01\x12\x12\n\ncreated_at\x18\x07 \x01(\x04\x12\x19\n\x0c\x63ompleted_at\x18\x0f \x01(\x04H\x03\x88\x01\x01\x12%\n\x10\x61mount_sent_msat\x18\x08 \x01(\x0b\x32\x0b.cln.Amount\x12\x12\n\x05label\x18\t \x01(\tH\x04\x88\x01\x01\x12\x13\n\x06partid\x18\n \x01(\x04H\x05\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x0b \x01(\tH\x06\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x0c \x01(\tH\x07\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\r \x01(\x0cH\x08\x88\x01\x01\x12\x14\n\x07message\x18\x0e \x01(\tH\t\x88\x01\x01\"*\n\rSendpayStatus\x12\x0b\n\x07PENDING\x10\x00\x12\x0c\n\x08\x43OMPLETE\x10\x01\x42\n\n\x08_groupidB\x0e\n\x0c_amount_msatB\x0e\n\x0c_destinationB\x0f\n\r_completed_atB\x08\n\x06_labelB\t\n\x07_partidB\t\n\x07_bolt11B\t\n\x07_bolt12B\x13\n\x11_payment_preimageB\n\n\x08_message\"\\\n\x0cSendpayRoute\x12 \n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12\n\n\x02id\x18\x02 \x01(\x0c\x12\r\n\x05\x64\x65lay\x18\x03 \x01(\r\x12\x0f\n\x07\x63hannel\x18\x04 \x01(\t\"\x93\x01\n\x13ListchannelsRequest\x12\x1d\n\x10short_channel_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06source\x18\x02 \x01(\x0cH\x01\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\x03 \x01(\x0cH\x02\x88\x01\x01\x42\x13\n\x11_short_channel_idB\t\n\x07_sourceB\x0e\n\x0c_destination\"C\n\x14ListchannelsResponse\x12+\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x19.cln.ListchannelsChannels\"\xa0\x03\n\x14ListchannelsChannels\x12\x0e\n\x06source\x18\x01 \x01(\x0c\x12\x13\n\x0b\x64\x65stination\x18\x02 \x01(\x0c\x12\x18\n\x10short_channel_id\x18\x03 \x01(\t\x12\x0e\n\x06public\x18\x04 \x01(\x08\x12 \n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12\x15\n\rmessage_flags\x18\x06 \x01(\r\x12\x15\n\rchannel_flags\x18\x07 \x01(\r\x12\x0e\n\x06\x61\x63tive\x18\x08 \x01(\x08\x12\x13\n\x0blast_update\x18\t \x01(\r\x12\x1d\n\x15\x62\x61se_fee_millisatoshi\x18\n \x01(\r\x12\x19\n\x11\x66\x65\x65_per_millionth\x18\x0b \x01(\r\x12\r\n\x05\x64\x65lay\x18\x0c \x01(\r\x12&\n\x11htlc_minimum_msat\x18\r \x01(\x0b\x32\x0b.cln.Amount\x12+\n\x11htlc_maximum_msat\x18\x0e \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x10\n\x08\x66\x65\x61tures\x18\x0f \x01(\x0c\x42\x14\n\x12_htlc_maximum_msat\"#\n\x10\x41\x64\x64gossipRequest\x12\x0f\n\x07message\x18\x01 \x01(\x0c\"\x13\n\x11\x41\x64\x64gossipResponse\"o\n\x17\x41utocleaninvoiceRequest\x12\x17\n\nexpired_by\x18\x01 \x01(\x04H\x00\x88\x01\x01\x12\x1a\n\rcycle_seconds\x18\x02 \x01(\x04H\x01\x88\x01\x01\x42\r\n\x0b_expired_byB\x10\n\x0e_cycle_seconds\"\x81\x01\n\x18\x41utocleaninvoiceResponse\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x17\n\nexpired_by\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x1a\n\rcycle_seconds\x18\x03 \x01(\x04H\x01\x88\x01\x01\x42\r\n\x0b_expired_byB\x10\n\x0e_cycle_seconds\"U\n\x13\x43heckmessageRequest\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\r\n\x05zbase\x18\x02 \x01(\t\x12\x13\n\x06pubkey\x18\x03 \x01(\x0cH\x00\x88\x01\x01\x42\t\n\x07_pubkey\"8\n\x14\x43heckmessageResponse\x12\x10\n\x08verified\x18\x01 \x01(\x08\x12\x0e\n\x06pubkey\x18\x02 \x01(\x0c\"\xcb\x02\n\x0c\x43loseRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x1e\n\x11unilateraltimeout\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\x03 \x01(\tH\x01\x88\x01\x01\x12!\n\x14\x66\x65\x65_negotiation_step\x18\x04 \x01(\tH\x02\x88\x01\x01\x12)\n\rwrong_funding\x18\x05 \x01(\x0b\x32\r.cln.OutpointH\x03\x88\x01\x01\x12\x1f\n\x12\x66orce_lease_closed\x18\x06 \x01(\x08H\x04\x88\x01\x01\x12\x1e\n\x08\x66\x65\x65range\x18\x07 \x03(\x0b\x32\x0c.cln.FeerateB\x14\n\x12_unilateraltimeoutB\x0e\n\x0c_destinationB\x17\n\x15_fee_negotiation_stepB\x10\n\x0e_wrong_fundingB\x15\n\x13_force_lease_closed\"\xab\x01\n\rCloseResponse\x12/\n\titem_type\x18\x01 \x01(\x0e\x32\x1c.cln.CloseResponse.CloseType\x12\x0f\n\x02tx\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x11\n\x04txid\x18\x03 \x01(\x0cH\x01\x88\x01\x01\"5\n\tCloseType\x12\n\n\x06MUTUAL\x10\x00\x12\x0e\n\nUNILATERAL\x10\x01\x12\x0c\n\x08UNOPENED\x10\x02\x42\x05\n\x03_txB\x07\n\x05_txid\"T\n\x0e\x43onnectRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\x04host\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04port\x18\x03 \x01(\rH\x01\x88\x01\x01\x42\x07\n\x05_hostB\x07\n\x05_port\"\x8e\x01\n\x0f\x43onnectResponse\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x10\n\x08\x66\x65\x61tures\x18\x02 \x01(\x0c\x12\x38\n\tdirection\x18\x03 \x01(\x0e\x32%.cln.ConnectResponse.ConnectDirection\"#\n\x10\x43onnectDirection\x12\x06\n\x02IN\x10\x00\x12\x07\n\x03OUT\x10\x01\"\xfb\x01\n\x0e\x43onnectAddress\x12\x39\n\titem_type\x18\x01 \x01(\x0e\x32&.cln.ConnectAddress.ConnectAddressType\x12\x13\n\x06socket\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07\x61\x64\x64ress\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x11\n\x04port\x18\x04 \x01(\rH\x02\x88\x01\x01\"P\n\x12\x43onnectAddressType\x12\x10\n\x0cLOCAL_SOCKET\x10\x00\x12\x08\n\x04IPV4\x10\x01\x12\x08\n\x04IPV6\x10\x02\x12\t\n\x05TORV2\x10\x03\x12\t\n\x05TORV3\x10\x04\x42\t\n\x07_socketB\n\n\x08_addressB\x07\n\x05_port\"J\n\x14\x43reateinvoiceRequest\x12\x11\n\tinvstring\x18\x01 \x01(\t\x12\r\n\x05label\x18\x02 \x01(\t\x12\x10\n\x08preimage\x18\x03 \x01(\x0c\"\x81\x05\n\x15\x43reateinvoiceResponse\x12\r\n\x05label\x18\x01 \x01(\t\x12\x13\n\x06\x62olt11\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x0cpayment_hash\x18\x04 \x01(\x0c\x12%\n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12>\n\x06status\x18\x06 \x01(\x0e\x32..cln.CreateinvoiceResponse.CreateinvoiceStatus\x12\x13\n\x0b\x64\x65scription\x18\x07 \x01(\t\x12\x12\n\nexpires_at\x18\x08 \x01(\x04\x12\x16\n\tpay_index\x18\t \x01(\x04H\x03\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12\x14\n\x07paid_at\x18\x0b \x01(\x04H\x05\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0c \x01(\x0cH\x06\x88\x01\x01\x12\x1b\n\x0elocal_offer_id\x18\r \x01(\x0cH\x07\x88\x01\x01\x12\x1e\n\x11invreq_payer_note\x18\x0f \x01(\tH\x08\x88\x01\x01\"8\n\x13\x43reateinvoiceStatus\x12\x08\n\x04PAID\x10\x00\x12\x0b\n\x07\x45XPIRED\x10\x01\x12\n\n\x06UNPAID\x10\x02\x42\t\n\x07_bolt11B\t\n\x07_bolt12B\x0e\n\x0c_amount_msatB\x0c\n\n_pay_indexB\x17\n\x15_amount_received_msatB\n\n\x08_paid_atB\x13\n\x11_payment_preimageB\x11\n\x0f_local_offer_idB\x14\n\x12_invreq_payer_note\"\xb4\x02\n\x10\x44\x61tastoreRequest\x12\x0b\n\x03key\x18\x05 \x03(\t\x12\x13\n\x06string\x18\x06 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03hex\x18\x02 \x01(\x0cH\x01\x88\x01\x01\x12\x36\n\x04mode\x18\x03 \x01(\x0e\x32#.cln.DatastoreRequest.DatastoreModeH\x02\x88\x01\x01\x12\x17\n\ngeneration\x18\x04 \x01(\x04H\x03\x88\x01\x01\"p\n\rDatastoreMode\x12\x0f\n\x0bMUST_CREATE\x10\x00\x12\x10\n\x0cMUST_REPLACE\x10\x01\x12\x15\n\x11\x43REATE_OR_REPLACE\x10\x02\x12\x0f\n\x0bMUST_APPEND\x10\x03\x12\x14\n\x10\x43REATE_OR_APPEND\x10\x04\x42\t\n\x07_stringB\x06\n\x04_hexB\x07\n\x05_modeB\r\n\x0b_generation\"\x82\x01\n\x11\x44\x61tastoreResponse\x12\x0b\n\x03key\x18\x05 \x03(\t\x12\x17\n\ngeneration\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03hex\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x13\n\x06string\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\r\n\x0b_generationB\x06\n\x04_hexB\t\n\x07_string\"\x9d\x01\n\x12\x43reateonionRequest\x12\"\n\x04hops\x18\x01 \x03(\x0b\x32\x14.cln.CreateonionHops\x12\x11\n\tassocdata\x18\x02 \x01(\x0c\x12\x18\n\x0bsession_key\x18\x03 \x01(\x0cH\x00\x88\x01\x01\x12\x17\n\nonion_size\x18\x04 \x01(\rH\x01\x88\x01\x01\x42\x0e\n\x0c_session_keyB\r\n\x0b_onion_size\"<\n\x13\x43reateonionResponse\x12\r\n\x05onion\x18\x01 \x01(\x0c\x12\x16\n\x0eshared_secrets\x18\x02 \x03(\x0c\"2\n\x0f\x43reateonionHops\x12\x0e\n\x06pubkey\x18\x01 \x01(\x0c\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\"J\n\x13\x44\x65ldatastoreRequest\x12\x0b\n\x03key\x18\x03 \x03(\t\x12\x17\n\ngeneration\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\r\n\x0b_generation\"\x85\x01\n\x14\x44\x65ldatastoreResponse\x12\x0b\n\x03key\x18\x05 \x03(\t\x12\x17\n\ngeneration\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03hex\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x13\n\x06string\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\r\n\x0b_generationB\x06\n\x04_hexB\t\n\x07_string\"H\n\x18\x44\x65lexpiredinvoiceRequest\x12\x1a\n\rmaxexpirytime\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\x10\n\x0e_maxexpirytime\"\x1b\n\x19\x44\x65lexpiredinvoiceResponse\"\xb6\x01\n\x11\x44\x65linvoiceRequest\x12\r\n\x05label\x18\x01 \x01(\t\x12\x37\n\x06status\x18\x02 \x01(\x0e\x32\'.cln.DelinvoiceRequest.DelinvoiceStatus\x12\x15\n\x08\x64\x65sconly\x18\x03 \x01(\x08H\x00\x88\x01\x01\"5\n\x10\x44\x65linvoiceStatus\x12\x08\n\x04PAID\x10\x00\x12\x0b\n\x07\x45XPIRED\x10\x01\x12\n\n\x06UNPAID\x10\x02\x42\x0b\n\t_desconly\"\xc5\x03\n\x12\x44\x65linvoiceResponse\x12\r\n\x05label\x18\x01 \x01(\t\x12\x13\n\x06\x62olt11\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x03 \x01(\tH\x01\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\x14\n\x0cpayment_hash\x18\x06 \x01(\x0c\x12\x38\n\x06status\x18\x07 \x01(\x0e\x32(.cln.DelinvoiceResponse.DelinvoiceStatus\x12\x12\n\nexpires_at\x18\x08 \x01(\x04\x12\x1b\n\x0elocal_offer_id\x18\t \x01(\x0cH\x04\x88\x01\x01\x12\x1e\n\x11invreq_payer_note\x18\x0b \x01(\tH\x05\x88\x01\x01\"5\n\x10\x44\x65linvoiceStatus\x12\x08\n\x04PAID\x10\x00\x12\x0b\n\x07\x45XPIRED\x10\x01\x12\n\n\x06UNPAID\x10\x02\x42\t\n\x07_bolt11B\t\n\x07_bolt12B\x0e\n\x0c_amount_msatB\x0e\n\x0c_descriptionB\x11\n\x0f_local_offer_idB\x14\n\x12_invreq_payer_note\"\xb8\x02\n\x0eInvoiceRequest\x12%\n\x0b\x61mount_msat\x18\n \x01(\x0b\x32\x10.cln.AmountOrAny\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\r\n\x05label\x18\x03 \x01(\t\x12\x13\n\x06\x65xpiry\x18\x07 \x01(\x04H\x00\x88\x01\x01\x12\x11\n\tfallbacks\x18\x04 \x03(\t\x12\x15\n\x08preimage\x18\x05 \x01(\x0cH\x01\x88\x01\x01\x12\"\n\x15\x65xposeprivatechannels\x18\x08 \x01(\x08H\x02\x88\x01\x01\x12\x11\n\x04\x63ltv\x18\x06 \x01(\rH\x03\x88\x01\x01\x12\x19\n\x0c\x64\x65schashonly\x18\t \x01(\x08H\x04\x88\x01\x01\x42\t\n\x07_expiryB\x0b\n\t_preimageB\x18\n\x16_exposeprivatechannelsB\x07\n\x05_cltvB\x0f\n\r_deschashonly\"\xe7\x02\n\x0fInvoiceResponse\x12\x0e\n\x06\x62olt11\x18\x01 \x01(\t\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\x0c\x12\x16\n\x0epayment_secret\x18\x03 \x01(\x0c\x12\x12\n\nexpires_at\x18\x04 \x01(\x04\x12\x1d\n\x10warning_capacity\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x1c\n\x0fwarning_offline\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\x1d\n\x10warning_deadends\x18\x07 \x01(\tH\x02\x88\x01\x01\x12#\n\x16warning_private_unused\x18\x08 \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0bwarning_mpp\x18\t \x01(\tH\x04\x88\x01\x01\x42\x13\n\x11_warning_capacityB\x12\n\x10_warning_offlineB\x13\n\x11_warning_deadendsB\x19\n\x17_warning_private_unusedB\x0e\n\x0c_warning_mpp\"#\n\x14ListdatastoreRequest\x12\x0b\n\x03key\x18\x02 \x03(\t\"G\n\x15ListdatastoreResponse\x12.\n\tdatastore\x18\x01 \x03(\x0b\x32\x1b.cln.ListdatastoreDatastore\"\x87\x01\n\x16ListdatastoreDatastore\x12\x0b\n\x03key\x18\x01 \x03(\t\x12\x17\n\ngeneration\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03hex\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x13\n\x06string\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\r\n\x0b_generationB\x06\n\x04_hexB\t\n\x07_string\"\xa9\x01\n\x13ListinvoicesRequest\x12\x12\n\x05label\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tinvstring\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x19\n\x0cpayment_hash\x18\x03 \x01(\x0cH\x02\x88\x01\x01\x12\x15\n\x08offer_id\x18\x04 \x01(\tH\x03\x88\x01\x01\x42\x08\n\x06_labelB\x0c\n\n_invstringB\x0f\n\r_payment_hashB\x0b\n\t_offer_id\"C\n\x14ListinvoicesResponse\x12+\n\x08invoices\x18\x01 \x03(\x0b\x32\x19.cln.ListinvoicesInvoices\"\xa2\x05\n\x14ListinvoicesInvoices\x12\r\n\x05label\x18\x01 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x44\n\x06status\x18\x04 \x01(\x0e\x32\x34.cln.ListinvoicesInvoices.ListinvoicesInvoicesStatus\x12\x12\n\nexpires_at\x18\x05 \x01(\x04\x12%\n\x0b\x61mount_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x07 \x01(\tH\x02\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x08 \x01(\tH\x03\x88\x01\x01\x12\x1b\n\x0elocal_offer_id\x18\t \x01(\x0cH\x04\x88\x01\x01\x12\x1e\n\x11invreq_payer_note\x18\x0f \x01(\tH\x05\x88\x01\x01\x12\x16\n\tpay_index\x18\x0b \x01(\x04H\x06\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\x0c \x01(\x0b\x32\x0b.cln.AmountH\x07\x88\x01\x01\x12\x14\n\x07paid_at\x18\r \x01(\x04H\x08\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0e \x01(\x0cH\t\x88\x01\x01\"?\n\x1aListinvoicesInvoicesStatus\x12\n\n\x06UNPAID\x10\x00\x12\x08\n\x04PAID\x10\x01\x12\x0b\n\x07\x45XPIRED\x10\x02\x42\x0e\n\x0c_descriptionB\x0e\n\x0c_amount_msatB\t\n\x07_bolt11B\t\n\x07_bolt12B\x11\n\x0f_local_offer_idB\x14\n\x12_invreq_payer_noteB\x0c\n\n_pay_indexB\x17\n\x15_amount_received_msatB\n\n\x08_paid_atB\x13\n\x11_payment_preimage\"\xdc\x02\n\x10SendonionRequest\x12\r\n\x05onion\x18\x01 \x01(\x0c\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x12\n\x05label\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x16\n\x0eshared_secrets\x18\x05 \x03(\x0c\x12\x13\n\x06partid\x18\x06 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x07 \x01(\tH\x02\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\x0c \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\t \x01(\x0cH\x04\x88\x01\x01\x12\x19\n\x0clocalofferid\x18\n \x01(\x0cH\x05\x88\x01\x01\x12\x14\n\x07groupid\x18\x0b \x01(\x04H\x06\x88\x01\x01\x42\x08\n\x06_labelB\t\n\x07_partidB\t\n\x07_bolt11B\x0e\n\x0c_amount_msatB\x0e\n\x0c_destinationB\x0f\n\r_localofferidB\n\n\x08_groupid\"\x8b\x04\n\x11SendonionResponse\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\x0c\x12\x36\n\x06status\x18\x03 \x01(\x0e\x32&.cln.SendonionResponse.SendonionStatus\x12%\n\x0b\x61mount_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\x05 \x01(\x0cH\x01\x88\x01\x01\x12\x12\n\ncreated_at\x18\x06 \x01(\x04\x12%\n\x10\x61mount_sent_msat\x18\x07 \x01(\x0b\x32\x0b.cln.Amount\x12\x12\n\x05label\x18\x08 \x01(\tH\x02\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\t \x01(\tH\x03\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\n \x01(\tH\x04\x88\x01\x01\x12\x13\n\x06partid\x18\r \x01(\x04H\x05\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0b \x01(\x0cH\x06\x88\x01\x01\x12\x14\n\x07message\x18\x0c \x01(\tH\x07\x88\x01\x01\",\n\x0fSendonionStatus\x12\x0b\n\x07PENDING\x10\x00\x12\x0c\n\x08\x43OMPLETE\x10\x01\x42\x0e\n\x0c_amount_msatB\x0e\n\x0c_destinationB\x08\n\x06_labelB\t\n\x07_bolt11B\t\n\x07_bolt12B\t\n\x07_partidB\x13\n\x11_payment_preimageB\n\n\x08_message\"Q\n\x12SendonionFirst_hop\x12\n\n\x02id\x18\x01 \x01(\x0c\x12 \n\x0b\x61mount_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\r\n\x05\x64\x65lay\x18\x03 \x01(\r\"\xeb\x01\n\x13ListsendpaysRequest\x12\x13\n\x06\x62olt11\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0cpayment_hash\x18\x02 \x01(\x0cH\x01\x88\x01\x01\x12@\n\x06status\x18\x03 \x01(\x0e\x32+.cln.ListsendpaysRequest.ListsendpaysStatusH\x02\x88\x01\x01\";\n\x12ListsendpaysStatus\x12\x0b\n\x07PENDING\x10\x00\x12\x0c\n\x08\x43OMPLETE\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\x42\t\n\x07_bolt11B\x0f\n\r_payment_hashB\t\n\x07_status\"C\n\x14ListsendpaysResponse\x12+\n\x08payments\x18\x01 \x03(\x0b\x32\x19.cln.ListsendpaysPayments\"\xd4\x04\n\x14ListsendpaysPayments\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x0f\n\x07groupid\x18\x02 \x01(\x04\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x44\n\x06status\x18\x04 \x01(\x0e\x32\x34.cln.ListsendpaysPayments.ListsendpaysPaymentsStatus\x12%\n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\x06 \x01(\x0cH\x01\x88\x01\x01\x12\x12\n\ncreated_at\x18\x07 \x01(\x04\x12%\n\x10\x61mount_sent_msat\x18\x08 \x01(\x0b\x32\x0b.cln.Amount\x12\x12\n\x05label\x18\t \x01(\tH\x02\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\n \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x0e \x01(\tH\x04\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x0b \x01(\tH\x05\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0c \x01(\x0cH\x06\x88\x01\x01\x12\x17\n\nerroronion\x18\r \x01(\x0cH\x07\x88\x01\x01\"C\n\x1aListsendpaysPaymentsStatus\x12\x0b\n\x07PENDING\x10\x00\x12\n\n\x06\x46\x41ILED\x10\x01\x12\x0c\n\x08\x43OMPLETE\x10\x02\x42\x0e\n\x0c_amount_msatB\x0e\n\x0c_destinationB\x08\n\x06_labelB\t\n\x07_bolt11B\x0e\n\x0c_descriptionB\t\n\x07_bolt12B\x13\n\x11_payment_preimageB\r\n\x0b_erroronion\"\x19\n\x17ListtransactionsRequest\"S\n\x18ListtransactionsResponse\x12\x37\n\x0ctransactions\x18\x01 \x03(\x0b\x32!.cln.ListtransactionsTransactions\"\x9a\x02\n\x1cListtransactionsTransactions\x12\x0c\n\x04hash\x18\x01 \x01(\x0c\x12\r\n\x05rawtx\x18\x02 \x01(\x0c\x12\x13\n\x0b\x62lockheight\x18\x03 \x01(\r\x12\x0f\n\x07txindex\x18\x04 \x01(\r\x12\x14\n\x07\x63hannel\x18\x06 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08locktime\x18\x07 \x01(\r\x12\x0f\n\x07version\x18\x08 \x01(\r\x12\x37\n\x06inputs\x18\t \x03(\x0b\x32\'.cln.ListtransactionsTransactionsInputs\x12\x39\n\x07outputs\x18\n \x03(\x0b\x32(.cln.ListtransactionsTransactionsOutputsB\n\n\x08_channel\"\x84\x04\n\"ListtransactionsTransactionsInputs\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\r\n\x05index\x18\x02 \x01(\r\x12\x10\n\x08sequence\x18\x03 \x01(\r\x12\x66\n\titem_type\x18\x04 \x01(\x0e\x32N.cln.ListtransactionsTransactionsInputs.ListtransactionsTransactionsInputsTypeH\x00\x88\x01\x01\x12\x14\n\x07\x63hannel\x18\x05 \x01(\tH\x01\x88\x01\x01\"\x96\x02\n&ListtransactionsTransactionsInputsType\x12\n\n\x06THEIRS\x10\x00\x12\x0b\n\x07\x44\x45POSIT\x10\x01\x12\x0c\n\x08WITHDRAW\x10\x02\x12\x13\n\x0f\x43HANNEL_FUNDING\x10\x03\x12\x18\n\x14\x43HANNEL_MUTUAL_CLOSE\x10\x04\x12\x1c\n\x18\x43HANNEL_UNILATERAL_CLOSE\x10\x05\x12\x11\n\rCHANNEL_SWEEP\x10\x06\x12\x18\n\x14\x43HANNEL_HTLC_SUCCESS\x10\x07\x12\x18\n\x14\x43HANNEL_HTLC_TIMEOUT\x10\x08\x12\x13\n\x0f\x43HANNEL_PENALTY\x10\t\x12\x1c\n\x18\x43HANNEL_UNILATERAL_CHEAT\x10\nB\x0c\n\n_item_typeB\n\n\x08_channel\"\xa0\x04\n#ListtransactionsTransactionsOutputs\x12\r\n\x05index\x18\x01 \x01(\r\x12 \n\x0b\x61mount_msat\x18\x06 \x01(\x0b\x32\x0b.cln.Amount\x12\x14\n\x0cscriptPubKey\x18\x03 \x01(\x0c\x12h\n\titem_type\x18\x04 \x01(\x0e\x32P.cln.ListtransactionsTransactionsOutputs.ListtransactionsTransactionsOutputsTypeH\x00\x88\x01\x01\x12\x14\n\x07\x63hannel\x18\x05 \x01(\tH\x01\x88\x01\x01\"\x97\x02\n\'ListtransactionsTransactionsOutputsType\x12\n\n\x06THEIRS\x10\x00\x12\x0b\n\x07\x44\x45POSIT\x10\x01\x12\x0c\n\x08WITHDRAW\x10\x02\x12\x13\n\x0f\x43HANNEL_FUNDING\x10\x03\x12\x18\n\x14\x43HANNEL_MUTUAL_CLOSE\x10\x04\x12\x1c\n\x18\x43HANNEL_UNILATERAL_CLOSE\x10\x05\x12\x11\n\rCHANNEL_SWEEP\x10\x06\x12\x18\n\x14\x43HANNEL_HTLC_SUCCESS\x10\x07\x12\x18\n\x14\x43HANNEL_HTLC_TIMEOUT\x10\x08\x12\x13\n\x0f\x43HANNEL_PENALTY\x10\t\x12\x1c\n\x18\x43HANNEL_UNILATERAL_CHEAT\x10\nB\x0c\n\n_item_typeB\n\n\x08_channel\"\xd8\x03\n\nPayRequest\x12\x0e\n\x06\x62olt11\x18\x01 \x01(\t\x12%\n\x0b\x61mount_msat\x18\r \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x12\n\x05label\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x17\n\nriskfactor\x18\x08 \x01(\x01H\x02\x88\x01\x01\x12\x1a\n\rmaxfeepercent\x18\x04 \x01(\x01H\x03\x88\x01\x01\x12\x16\n\tretry_for\x18\x05 \x01(\rH\x04\x88\x01\x01\x12\x15\n\x08maxdelay\x18\x06 \x01(\rH\x05\x88\x01\x01\x12#\n\texemptfee\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x06\x88\x01\x01\x12\x19\n\x0clocalofferid\x18\t \x01(\x0cH\x07\x88\x01\x01\x12\x0f\n\x07\x65xclude\x18\n \x03(\t\x12 \n\x06maxfee\x18\x0b \x01(\x0b\x32\x0b.cln.AmountH\x08\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x0c \x01(\tH\t\x88\x01\x01\x42\x0e\n\x0c_amount_msatB\x08\n\x06_labelB\r\n\x0b_riskfactorB\x10\n\x0e_maxfeepercentB\x0c\n\n_retry_forB\x0b\n\t_maxdelayB\x0c\n\n_exemptfeeB\x0f\n\r_localofferidB\t\n\x07_maxfeeB\x0e\n\x0c_description\"\xfb\x02\n\x0bPayResponse\x12\x18\n\x10payment_preimage\x18\x01 \x01(\x0c\x12\x18\n\x0b\x64\x65stination\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x12\n\ncreated_at\x18\x04 \x01(\x01\x12\r\n\x05parts\x18\x05 \x01(\r\x12 \n\x0b\x61mount_msat\x18\x06 \x01(\x0b\x32\x0b.cln.Amount\x12%\n\x10\x61mount_sent_msat\x18\x07 \x01(\x0b\x32\x0b.cln.Amount\x12\'\n\x1awarning_partial_completion\x18\x08 \x01(\tH\x01\x88\x01\x01\x12*\n\x06status\x18\t \x01(\x0e\x32\x1a.cln.PayResponse.PayStatus\"2\n\tPayStatus\x12\x0c\n\x08\x43OMPLETE\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\x42\x0e\n\x0c_destinationB\x1d\n\x1b_warning_partial_completion\"*\n\x10ListnodesRequest\x12\x0f\n\x02id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x05\n\x03_id\"7\n\x11ListnodesResponse\x12\"\n\x05nodes\x18\x01 \x03(\x0b\x32\x13.cln.ListnodesNodes\"\xe1\x01\n\x0eListnodesNodes\x12\x0e\n\x06nodeid\x18\x01 \x01(\x0c\x12\x1b\n\x0elast_timestamp\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x12\n\x05\x61lias\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63olor\x18\x04 \x01(\x0cH\x02\x88\x01\x01\x12\x15\n\x08\x66\x65\x61tures\x18\x05 \x01(\x0cH\x03\x88\x01\x01\x12/\n\taddresses\x18\x06 \x03(\x0b\x32\x1c.cln.ListnodesNodesAddressesB\x11\n\x0f_last_timestampB\x08\n\x06_aliasB\x08\n\x06_colorB\x0b\n\t_features\"\xf7\x01\n\x17ListnodesNodesAddresses\x12K\n\titem_type\x18\x01 \x01(\x0e\x32\x38.cln.ListnodesNodesAddresses.ListnodesNodesAddressesType\x12\x0c\n\x04port\x18\x02 \x01(\r\x12\x14\n\x07\x61\x64\x64ress\x18\x03 \x01(\tH\x00\x88\x01\x01\"_\n\x1bListnodesNodesAddressesType\x12\x07\n\x03\x44NS\x10\x00\x12\x08\n\x04IPV4\x10\x01\x12\x08\n\x04IPV6\x10\x02\x12\t\n\x05TORV2\x10\x03\x12\t\n\x05TORV3\x10\x04\x12\r\n\tWEBSOCKET\x10\x05\x42\n\n\x08_address\"g\n\x15WaitanyinvoiceRequest\x12\x1a\n\rlastpay_index\x18\x01 \x01(\x04H\x00\x88\x01\x01\x12\x14\n\x07timeout\x18\x02 \x01(\x04H\x01\x88\x01\x01\x42\x10\n\x0e_lastpay_indexB\n\n\x08_timeout\"\x93\x04\n\x16WaitanyinvoiceResponse\x12\r\n\x05label\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12@\n\x06status\x18\x04 \x01(\x0e\x32\x30.cln.WaitanyinvoiceResponse.WaitanyinvoiceStatus\x12\x12\n\nexpires_at\x18\x05 \x01(\x04\x12%\n\x0b\x61mount_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x08 \x01(\tH\x02\x88\x01\x01\x12\x16\n\tpay_index\x18\t \x01(\x04H\x03\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12\x14\n\x07paid_at\x18\x0b \x01(\x04H\x05\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0c \x01(\x0cH\x06\x88\x01\x01\"-\n\x14WaitanyinvoiceStatus\x12\x08\n\x04PAID\x10\x00\x12\x0b\n\x07\x45XPIRED\x10\x01\x42\x0e\n\x0c_amount_msatB\t\n\x07_bolt11B\t\n\x07_bolt12B\x0c\n\n_pay_indexB\x17\n\x15_amount_received_msatB\n\n\x08_paid_atB\x13\n\x11_payment_preimage\"#\n\x12WaitinvoiceRequest\x12\r\n\x05label\x18\x01 \x01(\t\"\x87\x04\n\x13WaitinvoiceResponse\x12\r\n\x05label\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12:\n\x06status\x18\x04 \x01(\x0e\x32*.cln.WaitinvoiceResponse.WaitinvoiceStatus\x12\x12\n\nexpires_at\x18\x05 \x01(\x04\x12%\n\x0b\x61mount_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x08 \x01(\tH\x02\x88\x01\x01\x12\x16\n\tpay_index\x18\t \x01(\x04H\x03\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12\x14\n\x07paid_at\x18\x0b \x01(\x04H\x05\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0c \x01(\x0cH\x06\x88\x01\x01\"*\n\x11WaitinvoiceStatus\x12\x08\n\x04PAID\x10\x00\x12\x0b\n\x07\x45XPIRED\x10\x01\x42\x0e\n\x0c_amount_msatB\t\n\x07_bolt11B\t\n\x07_bolt12B\x0c\n\n_pay_indexB\x17\n\x15_amount_received_msatB\n\n\x08_paid_atB\x13\n\x11_payment_preimage\"\x8e\x01\n\x12WaitsendpayRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x14\n\x07timeout\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x13\n\x06partid\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x14\n\x07groupid\x18\x04 \x01(\x04H\x02\x88\x01\x01\x42\n\n\x08_timeoutB\t\n\x07_partidB\n\n\x08_groupid\"\xb2\x04\n\x13WaitsendpayResponse\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x14\n\x07groupid\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12:\n\x06status\x18\x04 \x01(\x0e\x32*.cln.WaitsendpayResponse.WaitsendpayStatus\x12%\n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\x06 \x01(\x0cH\x02\x88\x01\x01\x12\x12\n\ncreated_at\x18\x07 \x01(\x04\x12\x19\n\x0c\x63ompleted_at\x18\x0e \x01(\x01H\x03\x88\x01\x01\x12%\n\x10\x61mount_sent_msat\x18\x08 \x01(\x0b\x32\x0b.cln.Amount\x12\x12\n\x05label\x18\t \x01(\tH\x04\x88\x01\x01\x12\x13\n\x06partid\x18\n \x01(\x04H\x05\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x0b \x01(\tH\x06\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x0c \x01(\tH\x07\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\r \x01(\x0cH\x08\x88\x01\x01\"!\n\x11WaitsendpayStatus\x12\x0c\n\x08\x43OMPLETE\x10\x00\x42\n\n\x08_groupidB\x0e\n\x0c_amount_msatB\x0e\n\x0c_destinationB\x0f\n\r_completed_atB\x08\n\x06_labelB\t\n\x07_partidB\t\n\x07_bolt11B\t\n\x07_bolt12B\x13\n\x11_payment_preimage\"\x9e\x01\n\x0eNewaddrRequest\x12@\n\x0b\x61\x64\x64resstype\x18\x01 \x01(\x0e\x32&.cln.NewaddrRequest.NewaddrAddresstypeH\x00\x88\x01\x01\":\n\x12NewaddrAddresstype\x12\n\n\x06\x42\x45\x43H32\x10\x00\x12\x0f\n\x0bP2SH_SEGWIT\x10\x01\x12\x07\n\x03\x41LL\x10\x02\x42\x0e\n\x0c_addresstype\"[\n\x0fNewaddrResponse\x12\x13\n\x06\x62\x65\x63h32\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0bp2sh_segwit\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\t\n\x07_bech32B\x0e\n\x0c_p2sh_segwit\"\xca\x01\n\x0fWithdrawRequest\x12\x13\n\x0b\x64\x65stination\x18\x01 \x01(\t\x12&\n\x07satoshi\x18\x02 \x01(\x0b\x32\x10.cln.AmountOrAllH\x00\x88\x01\x01\x12\"\n\x07\x66\x65\x65rate\x18\x05 \x01(\x0b\x32\x0c.cln.FeerateH\x01\x88\x01\x01\x12\x14\n\x07minconf\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x1c\n\x05utxos\x18\x04 \x03(\x0b\x32\r.cln.OutpointB\n\n\x08_satoshiB\n\n\x08_feerateB\n\n\x08_minconf\":\n\x10WithdrawResponse\x12\n\n\x02tx\x18\x01 \x01(\x0c\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\x12\x0c\n\x04psbt\x18\x03 \x01(\t\"\x82\x03\n\x0eKeysendRequest\x12\x13\n\x0b\x64\x65stination\x18\x01 \x01(\x0c\x12 \n\x0b\x61mount_msat\x18\n \x01(\x0b\x32\x0b.cln.Amount\x12\x12\n\x05label\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rmaxfeepercent\x18\x04 \x01(\x01H\x01\x88\x01\x01\x12\x16\n\tretry_for\x18\x05 \x01(\rH\x02\x88\x01\x01\x12\x15\n\x08maxdelay\x18\x06 \x01(\rH\x03\x88\x01\x01\x12#\n\texemptfee\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12+\n\nroutehints\x18\x08 \x01(\x0b\x32\x12.cln.RoutehintListH\x05\x88\x01\x01\x12&\n\textratlvs\x18\t \x01(\x0b\x32\x0e.cln.TlvStreamH\x06\x88\x01\x01\x42\x08\n\x06_labelB\x10\n\x0e_maxfeepercentB\x0c\n\n_retry_forB\x0b\n\t_maxdelayB\x0c\n\n_exemptfeeB\r\n\x0b_routehintsB\x0c\n\n_extratlvs\"\xf2\x02\n\x0fKeysendResponse\x12\x18\n\x10payment_preimage\x18\x01 \x01(\x0c\x12\x18\n\x0b\x64\x65stination\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x12\n\ncreated_at\x18\x04 \x01(\x01\x12\r\n\x05parts\x18\x05 \x01(\r\x12 \n\x0b\x61mount_msat\x18\x06 \x01(\x0b\x32\x0b.cln.Amount\x12%\n\x10\x61mount_sent_msat\x18\x07 \x01(\x0b\x32\x0b.cln.Amount\x12\'\n\x1awarning_partial_completion\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x32\n\x06status\x18\t \x01(\x0e\x32\".cln.KeysendResponse.KeysendStatus\"\x1d\n\rKeysendStatus\x12\x0c\n\x08\x43OMPLETE\x10\x00\x42\x0e\n\x0c_destinationB\x1d\n\x1b_warning_partial_completion\"\xbc\x02\n\x0f\x46undpsbtRequest\x12!\n\x07satoshi\x18\x01 \x01(\x0b\x32\x10.cln.AmountOrAll\x12\x1d\n\x07\x66\x65\x65rate\x18\x02 \x01(\x0b\x32\x0c.cln.Feerate\x12\x13\n\x0bstartweight\x18\x03 \x01(\r\x12\x14\n\x07minconf\x18\x04 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07reserve\x18\x05 \x01(\rH\x01\x88\x01\x01\x12\x15\n\x08locktime\x18\x06 \x01(\rH\x02\x88\x01\x01\x12\x1f\n\x12min_witness_weight\x18\x07 \x01(\rH\x03\x88\x01\x01\x12\x1d\n\x10\x65xcess_as_change\x18\x08 \x01(\x08H\x04\x88\x01\x01\x42\n\n\x08_minconfB\n\n\x08_reserveB\x0b\n\t_locktimeB\x15\n\x13_min_witness_weightB\x13\n\x11_excess_as_change\"\xd9\x01\n\x10\x46undpsbtResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x16\n\x0e\x66\x65\x65rate_per_kw\x18\x02 \x01(\r\x12\x1e\n\x16\x65stimated_final_weight\x18\x03 \x01(\r\x12 \n\x0b\x65xcess_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12\x1a\n\rchange_outnum\x18\x05 \x01(\rH\x00\x88\x01\x01\x12/\n\x0creservations\x18\x06 \x03(\x0b\x32\x19.cln.FundpsbtReservationsB\x10\n\x0e_change_outnum\"u\n\x14\x46undpsbtReservations\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x0c\n\x04vout\x18\x02 \x01(\r\x12\x14\n\x0cwas_reserved\x18\x03 \x01(\x08\x12\x10\n\x08reserved\x18\x04 \x01(\x08\x12\x19\n\x11reserved_to_block\x18\x05 \x01(\r\"A\n\x0fSendpsbtRequest\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x14\n\x07reserve\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\n\n\x08_reserve\",\n\x10SendpsbtResponse\x12\n\n\x02tx\x18\x01 \x01(\x0c\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\"1\n\x0fSignpsbtRequest\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x10\n\x08signonly\x18\x02 \x03(\r\"\'\n\x10SignpsbtResponse\x12\x13\n\x0bsigned_psbt\x18\x01 \x01(\t\"\xdb\x02\n\x0fUtxopsbtRequest\x12\x1c\n\x07satoshi\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12\x1d\n\x07\x66\x65\x65rate\x18\x02 \x01(\x0b\x32\x0c.cln.Feerate\x12\x13\n\x0bstartweight\x18\x03 \x01(\r\x12\x1c\n\x05utxos\x18\x04 \x03(\x0b\x32\r.cln.Outpoint\x12\x14\n\x07reserve\x18\x05 \x01(\rH\x00\x88\x01\x01\x12\x17\n\nreservedok\x18\x08 \x01(\x08H\x01\x88\x01\x01\x12\x15\n\x08locktime\x18\x06 \x01(\rH\x02\x88\x01\x01\x12\x1f\n\x12min_witness_weight\x18\x07 \x01(\rH\x03\x88\x01\x01\x12\x1d\n\x10\x65xcess_as_change\x18\t \x01(\x08H\x04\x88\x01\x01\x42\n\n\x08_reserveB\r\n\x0b_reservedokB\x0b\n\t_locktimeB\x15\n\x13_min_witness_weightB\x13\n\x11_excess_as_change\"\xd9\x01\n\x10UtxopsbtResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x16\n\x0e\x66\x65\x65rate_per_kw\x18\x02 \x01(\r\x12\x1e\n\x16\x65stimated_final_weight\x18\x03 \x01(\r\x12 \n\x0b\x65xcess_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12\x1a\n\rchange_outnum\x18\x05 \x01(\rH\x00\x88\x01\x01\x12/\n\x0creservations\x18\x06 \x03(\x0b\x32\x19.cln.UtxopsbtReservationsB\x10\n\x0e_change_outnum\"u\n\x14UtxopsbtReservations\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x0c\n\x04vout\x18\x02 \x01(\r\x12\x14\n\x0cwas_reserved\x18\x03 \x01(\x08\x12\x10\n\x08reserved\x18\x04 \x01(\x08\x12\x19\n\x11reserved_to_block\x18\x05 \x01(\r\" \n\x10TxdiscardRequest\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\"6\n\x11TxdiscardResponse\x12\x13\n\x0bunsigned_tx\x18\x01 \x01(\x0c\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\"\xa4\x01\n\x10TxprepareRequest\x12 \n\x07outputs\x18\x05 \x03(\x0b\x32\x0f.cln.OutputDesc\x12\"\n\x07\x66\x65\x65rate\x18\x02 \x01(\x0b\x32\x0c.cln.FeerateH\x00\x88\x01\x01\x12\x14\n\x07minconf\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x1c\n\x05utxos\x18\x04 \x03(\x0b\x32\r.cln.OutpointB\n\n\x08_feerateB\n\n\x08_minconf\"D\n\x11TxprepareResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x13\n\x0bunsigned_tx\x18\x02 \x01(\x0c\x12\x0c\n\x04txid\x18\x03 \x01(\x0c\"\x1d\n\rTxsendRequest\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\"8\n\x0eTxsendResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\n\n\x02tx\x18\x02 \x01(\x0c\x12\x0c\n\x04txid\x18\x03 \x01(\x0c\"=\n\x11\x44isconnectRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x12\n\x05\x66orce\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\x08\n\x06_force\"\x14\n\x12\x44isconnectResponse\"k\n\x0f\x46\x65\x65ratesRequest\x12\x31\n\x05style\x18\x01 \x01(\x0e\x32\".cln.FeeratesRequest.FeeratesStyle\"%\n\rFeeratesStyle\x12\t\n\x05PERKB\x10\x00\x12\t\n\x05PERKW\x10\x01\"V\n\x10\x46\x65\x65ratesResponse\x12%\n\x18warning_missing_feerates\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x1b\n\x19_warning_missing_feerates\"\xc3\x02\n\rFeeratesPerkb\x12\x16\n\x0emin_acceptable\x18\x01 \x01(\r\x12\x16\n\x0emax_acceptable\x18\x02 \x01(\r\x12\x14\n\x07opening\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x19\n\x0cmutual_close\x18\x04 \x01(\rH\x01\x88\x01\x01\x12\x1d\n\x10unilateral_close\x18\x05 \x01(\rH\x02\x88\x01\x01\x12\x1a\n\rdelayed_to_us\x18\x06 \x01(\rH\x03\x88\x01\x01\x12\x1c\n\x0fhtlc_resolution\x18\x07 \x01(\rH\x04\x88\x01\x01\x12\x14\n\x07penalty\x18\x08 \x01(\rH\x05\x88\x01\x01\x42\n\n\x08_openingB\x0f\n\r_mutual_closeB\x13\n\x11_unilateral_closeB\x10\n\x0e_delayed_to_usB\x12\n\x10_htlc_resolutionB\n\n\x08_penalty\"\xc3\x02\n\rFeeratesPerkw\x12\x16\n\x0emin_acceptable\x18\x01 \x01(\r\x12\x16\n\x0emax_acceptable\x18\x02 \x01(\r\x12\x14\n\x07opening\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x19\n\x0cmutual_close\x18\x04 \x01(\rH\x01\x88\x01\x01\x12\x1d\n\x10unilateral_close\x18\x05 \x01(\rH\x02\x88\x01\x01\x12\x1a\n\rdelayed_to_us\x18\x06 \x01(\rH\x03\x88\x01\x01\x12\x1c\n\x0fhtlc_resolution\x18\x07 \x01(\rH\x04\x88\x01\x01\x12\x14\n\x07penalty\x18\x08 \x01(\rH\x05\x88\x01\x01\x42\n\n\x08_openingB\x0f\n\r_mutual_closeB\x13\n\x11_unilateral_closeB\x10\n\x0e_delayed_to_usB\x12\n\x10_htlc_resolutionB\n\n\x08_penalty\"\xc1\x01\n\x1d\x46\x65\x65ratesOnchain_fee_estimates\x12 \n\x18opening_channel_satoshis\x18\x01 \x01(\x04\x12\x1d\n\x15mutual_close_satoshis\x18\x02 \x01(\x04\x12!\n\x19unilateral_close_satoshis\x18\x03 \x01(\x04\x12\x1d\n\x15htlc_timeout_satoshis\x18\x04 \x01(\x04\x12\x1d\n\x15htlc_success_satoshis\x18\x05 \x01(\x04\"\xe5\x03\n\x12\x46undchannelRequest\x12\n\n\x02id\x18\t \x01(\x0c\x12 \n\x06\x61mount\x18\x01 \x01(\x0b\x32\x10.cln.AmountOrAll\x12\"\n\x07\x66\x65\x65rate\x18\x02 \x01(\x0b\x32\x0c.cln.FeerateH\x00\x88\x01\x01\x12\x15\n\x08\x61nnounce\x18\x03 \x01(\x08H\x01\x88\x01\x01\x12\x14\n\x07minconf\x18\n \x01(\rH\x02\x88\x01\x01\x12#\n\tpush_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x15\n\x08\x63lose_to\x18\x06 \x01(\tH\x04\x88\x01\x01\x12%\n\x0brequest_amt\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x1a\n\rcompact_lease\x18\x08 \x01(\tH\x06\x88\x01\x01\x12\x1c\n\x05utxos\x18\x0b \x03(\x0b\x32\r.cln.Outpoint\x12\x15\n\x08mindepth\x18\x0c \x01(\rH\x07\x88\x01\x01\x12!\n\x07reserve\x18\r \x01(\x0b\x32\x0b.cln.AmountH\x08\x88\x01\x01\x42\n\n\x08_feerateB\x0b\n\t_announceB\n\n\x08_minconfB\x0c\n\n_push_msatB\x0b\n\t_close_toB\x0e\n\x0c_request_amtB\x10\n\x0e_compact_leaseB\x0b\n\t_mindepthB\n\n\x08_reserve\"\x9b\x01\n\x13\x46undchannelResponse\x12\n\n\x02tx\x18\x01 \x01(\x0c\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\x12\x0e\n\x06outnum\x18\x03 \x01(\r\x12\x12\n\nchannel_id\x18\x04 \x01(\x0c\x12\x15\n\x08\x63lose_to\x18\x05 \x01(\x0cH\x00\x88\x01\x01\x12\x15\n\x08mindepth\x18\x06 \x01(\rH\x01\x88\x01\x01\x42\x0b\n\t_close_toB\x0b\n\t_mindepth\"\xec\x01\n\x0fGetrouteRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12 \n\x0b\x61mount_msat\x18\t \x01(\x0b\x32\x0b.cln.Amount\x12\x12\n\nriskfactor\x18\x03 \x01(\x04\x12\x11\n\x04\x63ltv\x18\x04 \x01(\x01H\x00\x88\x01\x01\x12\x13\n\x06\x66romid\x18\x05 \x01(\x0cH\x01\x88\x01\x01\x12\x18\n\x0b\x66uzzpercent\x18\x06 \x01(\rH\x02\x88\x01\x01\x12\x0f\n\x07\x65xclude\x18\x07 \x03(\t\x12\x14\n\x07maxhops\x18\x08 \x01(\rH\x03\x88\x01\x01\x42\x07\n\x05_cltvB\t\n\x07_fromidB\x0e\n\x0c_fuzzpercentB\n\n\x08_maxhops\"5\n\x10GetrouteResponse\x12!\n\x05route\x18\x01 \x03(\x0b\x32\x12.cln.GetrouteRoute\"\xe9\x01\n\rGetrouteRoute\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x0f\n\x07\x63hannel\x18\x02 \x01(\t\x12\x11\n\tdirection\x18\x03 \x01(\r\x12\x15\n\x08msatoshi\x18\x07 \x01(\x04H\x00\x88\x01\x01\x12 \n\x0b\x61mount_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12\r\n\x05\x64\x65lay\x18\x05 \x01(\r\x12\x34\n\x05style\x18\x06 \x01(\x0e\x32%.cln.GetrouteRoute.GetrouteRouteStyle\"\x1d\n\x12GetrouteRouteStyle\x12\x07\n\x03TLV\x10\x00\x42\x0b\n\t_msatoshi\"\x82\x02\n\x13ListforwardsRequest\x12@\n\x06status\x18\x01 \x01(\x0e\x32+.cln.ListforwardsRequest.ListforwardsStatusH\x00\x88\x01\x01\x12\x17\n\nin_channel\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0bout_channel\x18\x03 \x01(\tH\x02\x88\x01\x01\"L\n\x12ListforwardsStatus\x12\x0b\n\x07OFFERED\x10\x00\x12\x0b\n\x07SETTLED\x10\x01\x12\x10\n\x0cLOCAL_FAILED\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\x42\t\n\x07_statusB\r\n\x0b_in_channelB\x0e\n\x0c_out_channel\"C\n\x14ListforwardsResponse\x12+\n\x08\x66orwards\x18\x01 \x03(\x0b\x32\x19.cln.ListforwardsForwards\"\xde\x04\n\x14ListforwardsForwards\x12\x12\n\nin_channel\x18\x01 \x01(\t\x12\x17\n\nin_htlc_id\x18\n \x01(\x04H\x00\x88\x01\x01\x12\x1c\n\x07in_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\x44\n\x06status\x18\x03 \x01(\x0e\x32\x34.cln.ListforwardsForwards.ListforwardsForwardsStatus\x12\x15\n\rreceived_time\x18\x04 \x01(\x01\x12\x18\n\x0bout_channel\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0bout_htlc_id\x18\x0b \x01(\x04H\x02\x88\x01\x01\x12G\n\x05style\x18\t \x01(\x0e\x32\x33.cln.ListforwardsForwards.ListforwardsForwardsStyleH\x03\x88\x01\x01\x12\"\n\x08\x66\x65\x65_msat\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12\"\n\x08out_msat\x18\x08 \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\"T\n\x1aListforwardsForwardsStatus\x12\x0b\n\x07OFFERED\x10\x00\x12\x0b\n\x07SETTLED\x10\x01\x12\x10\n\x0cLOCAL_FAILED\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\"0\n\x19ListforwardsForwardsStyle\x12\n\n\x06LEGACY\x10\x00\x12\x07\n\x03TLV\x10\x01\x42\r\n\x0b_in_htlc_idB\x0e\n\x0c_out_channelB\x0e\n\x0c_out_htlc_idB\x08\n\x06_styleB\x0b\n\t_fee_msatB\x0b\n\t_out_msat\"\xdb\x01\n\x0fListpaysRequest\x12\x13\n\x06\x62olt11\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0cpayment_hash\x18\x02 \x01(\x0cH\x01\x88\x01\x01\x12\x38\n\x06status\x18\x03 \x01(\x0e\x32#.cln.ListpaysRequest.ListpaysStatusH\x02\x88\x01\x01\"7\n\x0eListpaysStatus\x12\x0b\n\x07PENDING\x10\x00\x12\x0c\n\x08\x43OMPLETE\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\x42\t\n\x07_bolt11B\x0f\n\r_payment_hashB\t\n\x07_status\"3\n\x10ListpaysResponse\x12\x1f\n\x04pays\x18\x01 \x03(\x0b\x32\x11.cln.ListpaysPays\"\x87\x04\n\x0cListpaysPays\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x34\n\x06status\x18\x02 \x01(\x0e\x32$.cln.ListpaysPays.ListpaysPaysStatus\x12\x18\n\x0b\x64\x65stination\x18\x03 \x01(\x0cH\x00\x88\x01\x01\x12\x12\n\ncreated_at\x18\x04 \x01(\x04\x12\x19\n\x0c\x63ompleted_at\x18\x0c \x01(\x04H\x01\x88\x01\x01\x12\x12\n\x05label\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x06 \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x0b \x01(\tH\x04\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x07 \x01(\tH\x05\x88\x01\x01\x12\x15\n\x08preimage\x18\r \x01(\x0cH\x06\x88\x01\x01\x12\x1c\n\x0fnumber_of_parts\x18\x0e \x01(\x04H\x07\x88\x01\x01\x12\x17\n\nerroronion\x18\n \x01(\x0cH\x08\x88\x01\x01\";\n\x12ListpaysPaysStatus\x12\x0b\n\x07PENDING\x10\x00\x12\n\n\x06\x46\x41ILED\x10\x01\x12\x0c\n\x08\x43OMPLETE\x10\x02\x42\x0e\n\x0c_destinationB\x0f\n\r_completed_atB\x08\n\x06_labelB\t\n\x07_bolt11B\x0e\n\x0c_descriptionB\t\n\x07_bolt12B\x0b\n\t_preimageB\x12\n\x10_number_of_partsB\r\n\x0b_erroronion\"Y\n\x0bPingRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x10\n\x03len\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x16\n\tpongbytes\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x06\n\x04_lenB\x0c\n\n_pongbytes\"\x1e\n\x0cPingResponse\x12\x0e\n\x06totlen\x18\x01 \x01(\r\"\xf8\x01\n\x11SetchannelRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12!\n\x07\x66\x65\x65\x62\x61se\x18\x02 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x13\n\x06\x66\x65\x65ppm\x18\x03 \x01(\rH\x01\x88\x01\x01\x12!\n\x07htlcmin\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12!\n\x07htlcmax\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x19\n\x0c\x65nforcedelay\x18\x06 \x01(\rH\x04\x88\x01\x01\x42\n\n\x08_feebaseB\t\n\x07_feeppmB\n\n\x08_htlcminB\n\n\x08_htlcmaxB\x0f\n\r_enforcedelay\"?\n\x12SetchannelResponse\x12)\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x17.cln.SetchannelChannels\"\x94\x03\n\x12SetchannelChannels\x12\x0f\n\x07peer_id\x18\x01 \x01(\x0c\x12\x12\n\nchannel_id\x18\x02 \x01(\x0c\x12\x1d\n\x10short_channel_id\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\"\n\rfee_base_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12#\n\x1b\x66\x65\x65_proportional_millionths\x18\x05 \x01(\r\x12*\n\x15minimum_htlc_out_msat\x18\x06 \x01(\x0b\x32\x0b.cln.Amount\x12$\n\x17warning_htlcmin_too_low\x18\x07 \x01(\tH\x01\x88\x01\x01\x12*\n\x15maximum_htlc_out_msat\x18\x08 \x01(\x0b\x32\x0b.cln.Amount\x12%\n\x18warning_htlcmax_too_high\x18\t \x01(\tH\x02\x88\x01\x01\x42\x13\n\x11_short_channel_idB\x1a\n\x18_warning_htlcmin_too_lowB\x1b\n\x19_warning_htlcmax_too_high\"%\n\x12SignmessageRequest\x12\x0f\n\x07message\x18\x01 \x01(\t\"F\n\x13SignmessageResponse\x12\x11\n\tsignature\x18\x01 \x01(\x0c\x12\r\n\x05recid\x18\x02 \x01(\x0c\x12\r\n\x05zbase\x18\x03 \x01(\t\"\r\n\x0bStopRequest\"\x0e\n\x0cStopResponse2\xb1\x17\n\x04Node\x12\x36\n\x07Getinfo\x12\x13.cln.GetinfoRequest\x1a\x14.cln.GetinfoResponse\"\x00\x12<\n\tListPeers\x12\x15.cln.ListpeersRequest\x1a\x16.cln.ListpeersResponse\"\x00\x12<\n\tListFunds\x12\x15.cln.ListfundsRequest\x1a\x16.cln.ListfundsResponse\"\x00\x12\x36\n\x07SendPay\x12\x13.cln.SendpayRequest\x1a\x14.cln.SendpayResponse\"\x00\x12\x45\n\x0cListChannels\x12\x18.cln.ListchannelsRequest\x1a\x19.cln.ListchannelsResponse\"\x00\x12<\n\tAddGossip\x12\x15.cln.AddgossipRequest\x1a\x16.cln.AddgossipResponse\"\x00\x12Q\n\x10\x41utoCleanInvoice\x12\x1c.cln.AutocleaninvoiceRequest\x1a\x1d.cln.AutocleaninvoiceResponse\"\x00\x12\x45\n\x0c\x43heckMessage\x12\x18.cln.CheckmessageRequest\x1a\x19.cln.CheckmessageResponse\"\x00\x12\x30\n\x05\x43lose\x12\x11.cln.CloseRequest\x1a\x12.cln.CloseResponse\"\x00\x12:\n\x0b\x43onnectPeer\x12\x13.cln.ConnectRequest\x1a\x14.cln.ConnectResponse\"\x00\x12H\n\rCreateInvoice\x12\x19.cln.CreateinvoiceRequest\x1a\x1a.cln.CreateinvoiceResponse\"\x00\x12<\n\tDatastore\x12\x15.cln.DatastoreRequest\x1a\x16.cln.DatastoreResponse\"\x00\x12\x42\n\x0b\x43reateOnion\x12\x17.cln.CreateonionRequest\x1a\x18.cln.CreateonionResponse\"\x00\x12\x45\n\x0c\x44\x65lDatastore\x12\x18.cln.DeldatastoreRequest\x1a\x19.cln.DeldatastoreResponse\"\x00\x12T\n\x11\x44\x65lExpiredInvoice\x12\x1d.cln.DelexpiredinvoiceRequest\x1a\x1e.cln.DelexpiredinvoiceResponse\"\x00\x12?\n\nDelInvoice\x12\x16.cln.DelinvoiceRequest\x1a\x17.cln.DelinvoiceResponse\"\x00\x12\x36\n\x07Invoice\x12\x13.cln.InvoiceRequest\x1a\x14.cln.InvoiceResponse\"\x00\x12H\n\rListDatastore\x12\x19.cln.ListdatastoreRequest\x1a\x1a.cln.ListdatastoreResponse\"\x00\x12\x45\n\x0cListInvoices\x12\x18.cln.ListinvoicesRequest\x1a\x19.cln.ListinvoicesResponse\"\x00\x12<\n\tSendOnion\x12\x15.cln.SendonionRequest\x1a\x16.cln.SendonionResponse\"\x00\x12\x45\n\x0cListSendPays\x12\x18.cln.ListsendpaysRequest\x1a\x19.cln.ListsendpaysResponse\"\x00\x12Q\n\x10ListTransactions\x12\x1c.cln.ListtransactionsRequest\x1a\x1d.cln.ListtransactionsResponse\"\x00\x12*\n\x03Pay\x12\x0f.cln.PayRequest\x1a\x10.cln.PayResponse\"\x00\x12<\n\tListNodes\x12\x15.cln.ListnodesRequest\x1a\x16.cln.ListnodesResponse\"\x00\x12K\n\x0eWaitAnyInvoice\x12\x1a.cln.WaitanyinvoiceRequest\x1a\x1b.cln.WaitanyinvoiceResponse\"\x00\x12\x42\n\x0bWaitInvoice\x12\x17.cln.WaitinvoiceRequest\x1a\x18.cln.WaitinvoiceResponse\"\x00\x12\x42\n\x0bWaitSendPay\x12\x17.cln.WaitsendpayRequest\x1a\x18.cln.WaitsendpayResponse\"\x00\x12\x36\n\x07NewAddr\x12\x13.cln.NewaddrRequest\x1a\x14.cln.NewaddrResponse\"\x00\x12\x39\n\x08Withdraw\x12\x14.cln.WithdrawRequest\x1a\x15.cln.WithdrawResponse\"\x00\x12\x36\n\x07KeySend\x12\x13.cln.KeysendRequest\x1a\x14.cln.KeysendResponse\"\x00\x12\x39\n\x08\x46undPsbt\x12\x14.cln.FundpsbtRequest\x1a\x15.cln.FundpsbtResponse\"\x00\x12\x39\n\x08SendPsbt\x12\x14.cln.SendpsbtRequest\x1a\x15.cln.SendpsbtResponse\"\x00\x12\x39\n\x08SignPsbt\x12\x14.cln.SignpsbtRequest\x1a\x15.cln.SignpsbtResponse\"\x00\x12\x39\n\x08UtxoPsbt\x12\x14.cln.UtxopsbtRequest\x1a\x15.cln.UtxopsbtResponse\"\x00\x12<\n\tTxDiscard\x12\x15.cln.TxdiscardRequest\x1a\x16.cln.TxdiscardResponse\"\x00\x12<\n\tTxPrepare\x12\x15.cln.TxprepareRequest\x1a\x16.cln.TxprepareResponse\"\x00\x12\x33\n\x06TxSend\x12\x12.cln.TxsendRequest\x1a\x13.cln.TxsendResponse\"\x00\x12?\n\nDisconnect\x12\x16.cln.DisconnectRequest\x1a\x17.cln.DisconnectResponse\"\x00\x12\x39\n\x08\x46\x65\x65rates\x12\x14.cln.FeeratesRequest\x1a\x15.cln.FeeratesResponse\"\x00\x12\x42\n\x0b\x46undChannel\x12\x17.cln.FundchannelRequest\x1a\x18.cln.FundchannelResponse\"\x00\x12\x39\n\x08GetRoute\x12\x14.cln.GetrouteRequest\x1a\x15.cln.GetrouteResponse\"\x00\x12\x45\n\x0cListForwards\x12\x18.cln.ListforwardsRequest\x1a\x19.cln.ListforwardsResponse\"\x00\x12\x39\n\x08ListPays\x12\x14.cln.ListpaysRequest\x1a\x15.cln.ListpaysResponse\"\x00\x12-\n\x04Ping\x12\x10.cln.PingRequest\x1a\x11.cln.PingResponse\"\x00\x12?\n\nSetChannel\x12\x16.cln.SetchannelRequest\x1a\x17.cln.SetchannelResponse\"\x00\x12\x42\n\x0bSignMessage\x12\x17.cln.SignmessageRequest\x1a\x18.cln.SignmessageResponse\"\x00\x12-\n\x04Stop\x12\x10.cln.StopRequest\x1a\x11.cln.StopResponse\"\x00\x62\x06proto3') @@ -1184,237 +1184,237 @@ _CREATEINVOICEREQUEST._serialized_start=9757 _CREATEINVOICEREQUEST._serialized_end=9831 _CREATEINVOICERESPONSE._serialized_start=9834 - _CREATEINVOICERESPONSE._serialized_end=10461 - _CREATEINVOICERESPONSE_CREATEINVOICESTATUS._serialized_start=10261 - _CREATEINVOICERESPONSE_CREATEINVOICESTATUS._serialized_end=10317 - _DATASTOREREQUEST._serialized_start=10464 - _DATASTOREREQUEST._serialized_end=10772 - _DATASTOREREQUEST_DATASTOREMODE._serialized_start=10617 - _DATASTOREREQUEST_DATASTOREMODE._serialized_end=10729 - _DATASTORERESPONSE._serialized_start=10775 - _DATASTORERESPONSE._serialized_end=10905 - _CREATEONIONREQUEST._serialized_start=10908 - _CREATEONIONREQUEST._serialized_end=11065 - _CREATEONIONRESPONSE._serialized_start=11067 - _CREATEONIONRESPONSE._serialized_end=11127 - _CREATEONIONHOPS._serialized_start=11129 - _CREATEONIONHOPS._serialized_end=11179 - _DELDATASTOREREQUEST._serialized_start=11181 - _DELDATASTOREREQUEST._serialized_end=11255 - _DELDATASTORERESPONSE._serialized_start=11258 - _DELDATASTORERESPONSE._serialized_end=11391 - _DELEXPIREDINVOICEREQUEST._serialized_start=11393 - _DELEXPIREDINVOICEREQUEST._serialized_end=11465 - _DELEXPIREDINVOICERESPONSE._serialized_start=11467 - _DELEXPIREDINVOICERESPONSE._serialized_end=11494 - _DELINVOICEREQUEST._serialized_start=11497 - _DELINVOICEREQUEST._serialized_end=11679 - _DELINVOICEREQUEST_DELINVOICESTATUS._serialized_start=11613 - _DELINVOICEREQUEST_DELINVOICESTATUS._serialized_end=11666 - _DELINVOICERESPONSE._serialized_start=11682 - _DELINVOICERESPONSE._serialized_end=12121 - _DELINVOICERESPONSE_DELINVOICESTATUS._serialized_start=11613 - _DELINVOICERESPONSE_DELINVOICESTATUS._serialized_end=11666 - _INVOICEREQUEST._serialized_start=12124 - _INVOICEREQUEST._serialized_end=12436 - _INVOICERESPONSE._serialized_start=12439 - _INVOICERESPONSE._serialized_end=12798 - _LISTDATASTOREREQUEST._serialized_start=12800 - _LISTDATASTOREREQUEST._serialized_end=12835 - _LISTDATASTORERESPONSE._serialized_start=12837 - _LISTDATASTORERESPONSE._serialized_end=12908 - _LISTDATASTOREDATASTORE._serialized_start=12911 - _LISTDATASTOREDATASTORE._serialized_end=13046 - _LISTINVOICESREQUEST._serialized_start=13049 - _LISTINVOICESREQUEST._serialized_end=13218 - _LISTINVOICESRESPONSE._serialized_start=13220 - _LISTINVOICESRESPONSE._serialized_end=13287 - _LISTINVOICESINVOICES._serialized_start=13290 - _LISTINVOICESINVOICES._serialized_end=13950 - _LISTINVOICESINVOICES_LISTINVOICESINVOICESSTATUS._serialized_start=13727 - _LISTINVOICESINVOICES_LISTINVOICESINVOICESSTATUS._serialized_end=13790 - _SENDONIONREQUEST._serialized_start=13953 - _SENDONIONREQUEST._serialized_end=14301 - _SENDONIONRESPONSE._serialized_start=14304 - _SENDONIONRESPONSE._serialized_end=14827 - _SENDONIONRESPONSE_SENDONIONSTATUS._serialized_start=14675 - _SENDONIONRESPONSE_SENDONIONSTATUS._serialized_end=14719 - _SENDONIONFIRST_HOP._serialized_start=14829 - _SENDONIONFIRST_HOP._serialized_end=14910 - _LISTSENDPAYSREQUEST._serialized_start=14913 - _LISTSENDPAYSREQUEST._serialized_end=15148 - _LISTSENDPAYSREQUEST_LISTSENDPAYSSTATUS._serialized_start=15050 - _LISTSENDPAYSREQUEST_LISTSENDPAYSSTATUS._serialized_end=15109 - _LISTSENDPAYSRESPONSE._serialized_start=15150 - _LISTSENDPAYSRESPONSE._serialized_end=15217 - _LISTSENDPAYSPAYMENTS._serialized_start=15220 - _LISTSENDPAYSPAYMENTS._serialized_end=15816 - _LISTSENDPAYSPAYMENTS_LISTSENDPAYSPAYMENTSSTATUS._serialized_start=15633 - _LISTSENDPAYSPAYMENTS_LISTSENDPAYSPAYMENTSSTATUS._serialized_end=15700 - _LISTTRANSACTIONSREQUEST._serialized_start=15818 - _LISTTRANSACTIONSREQUEST._serialized_end=15843 - _LISTTRANSACTIONSRESPONSE._serialized_start=15845 - _LISTTRANSACTIONSRESPONSE._serialized_end=15928 - _LISTTRANSACTIONSTRANSACTIONS._serialized_start=15931 - _LISTTRANSACTIONSTRANSACTIONS._serialized_end=16213 - _LISTTRANSACTIONSTRANSACTIONSINPUTS._serialized_start=16216 - _LISTTRANSACTIONSTRANSACTIONSINPUTS._serialized_end=16732 - _LISTTRANSACTIONSTRANSACTIONSINPUTS_LISTTRANSACTIONSTRANSACTIONSINPUTSTYPE._serialized_start=16428 - _LISTTRANSACTIONSTRANSACTIONSINPUTS_LISTTRANSACTIONSTRANSACTIONSINPUTSTYPE._serialized_end=16706 - _LISTTRANSACTIONSTRANSACTIONSOUTPUTS._serialized_start=16735 - _LISTTRANSACTIONSTRANSACTIONSOUTPUTS._serialized_end=17279 - _LISTTRANSACTIONSTRANSACTIONSOUTPUTS_LISTTRANSACTIONSTRANSACTIONSOUTPUTSTYPE._serialized_start=16974 - _LISTTRANSACTIONSTRANSACTIONSOUTPUTS_LISTTRANSACTIONSTRANSACTIONSOUTPUTSTYPE._serialized_end=17253 - _PAYREQUEST._serialized_start=17282 - _PAYREQUEST._serialized_end=17754 - _PAYRESPONSE._serialized_start=17757 - _PAYRESPONSE._serialized_end=18136 - _PAYRESPONSE_PAYSTATUS._serialized_start=18039 - _PAYRESPONSE_PAYSTATUS._serialized_end=18089 - _LISTNODESREQUEST._serialized_start=18138 - _LISTNODESREQUEST._serialized_end=18180 - _LISTNODESRESPONSE._serialized_start=18182 - _LISTNODESRESPONSE._serialized_end=18237 - _LISTNODESNODES._serialized_start=18240 - _LISTNODESNODES._serialized_end=18465 - _LISTNODESNODESADDRESSES._serialized_start=18468 - _LISTNODESNODESADDRESSES._serialized_end=18715 - _LISTNODESNODESADDRESSES_LISTNODESNODESADDRESSESTYPE._serialized_start=18608 - _LISTNODESNODESADDRESSES_LISTNODESNODESADDRESSESTYPE._serialized_end=18703 - _WAITANYINVOICEREQUEST._serialized_start=18717 - _WAITANYINVOICEREQUEST._serialized_end=18820 - _WAITANYINVOICERESPONSE._serialized_start=18823 - _WAITANYINVOICERESPONSE._serialized_end=19354 - _WAITANYINVOICERESPONSE_WAITANYINVOICESTATUS._serialized_start=19199 - _WAITANYINVOICERESPONSE_WAITANYINVOICESTATUS._serialized_end=19244 - _WAITINVOICEREQUEST._serialized_start=19356 - _WAITINVOICEREQUEST._serialized_end=19391 - _WAITINVOICERESPONSE._serialized_start=19394 - _WAITINVOICERESPONSE._serialized_end=19913 - _WAITINVOICERESPONSE_WAITINVOICESTATUS._serialized_start=19761 - _WAITINVOICERESPONSE_WAITINVOICESTATUS._serialized_end=19803 - _WAITSENDPAYREQUEST._serialized_start=19916 - _WAITSENDPAYREQUEST._serialized_end=20058 - _WAITSENDPAYRESPONSE._serialized_start=20061 - _WAITSENDPAYRESPONSE._serialized_end=20623 - _WAITSENDPAYRESPONSE_WAITSENDPAYSTATUS._serialized_start=20465 - _WAITSENDPAYRESPONSE_WAITSENDPAYSTATUS._serialized_end=20498 - _NEWADDRREQUEST._serialized_start=20626 - _NEWADDRREQUEST._serialized_end=20784 - _NEWADDRREQUEST_NEWADDRADDRESSTYPE._serialized_start=20710 - _NEWADDRREQUEST_NEWADDRADDRESSTYPE._serialized_end=20768 - _NEWADDRRESPONSE._serialized_start=20786 - _NEWADDRRESPONSE._serialized_end=20877 - _WITHDRAWREQUEST._serialized_start=20880 - _WITHDRAWREQUEST._serialized_end=21082 - _WITHDRAWRESPONSE._serialized_start=21084 - _WITHDRAWRESPONSE._serialized_end=21142 - _KEYSENDREQUEST._serialized_start=21145 - _KEYSENDREQUEST._serialized_end=21531 - _KEYSENDRESPONSE._serialized_start=21534 - _KEYSENDRESPONSE._serialized_end=21904 - _KEYSENDRESPONSE_KEYSENDSTATUS._serialized_start=21828 - _KEYSENDRESPONSE_KEYSENDSTATUS._serialized_end=21857 - _FUNDPSBTREQUEST._serialized_start=21907 - _FUNDPSBTREQUEST._serialized_end=22223 - _FUNDPSBTRESPONSE._serialized_start=22226 - _FUNDPSBTRESPONSE._serialized_end=22443 - _FUNDPSBTRESERVATIONS._serialized_start=22445 - _FUNDPSBTRESERVATIONS._serialized_end=22562 - _SENDPSBTREQUEST._serialized_start=22564 - _SENDPSBTREQUEST._serialized_end=22629 - _SENDPSBTRESPONSE._serialized_start=22631 - _SENDPSBTRESPONSE._serialized_end=22675 - _SIGNPSBTREQUEST._serialized_start=22677 - _SIGNPSBTREQUEST._serialized_end=22726 - _SIGNPSBTRESPONSE._serialized_start=22728 - _SIGNPSBTRESPONSE._serialized_end=22767 - _UTXOPSBTREQUEST._serialized_start=22770 - _UTXOPSBTREQUEST._serialized_end=23117 - _UTXOPSBTRESPONSE._serialized_start=23120 - _UTXOPSBTRESPONSE._serialized_end=23337 - _UTXOPSBTRESERVATIONS._serialized_start=23339 - _UTXOPSBTRESERVATIONS._serialized_end=23456 - _TXDISCARDREQUEST._serialized_start=23458 - _TXDISCARDREQUEST._serialized_end=23490 - _TXDISCARDRESPONSE._serialized_start=23492 - _TXDISCARDRESPONSE._serialized_end=23546 - _TXPREPAREREQUEST._serialized_start=23549 - _TXPREPAREREQUEST._serialized_end=23713 - _TXPREPARERESPONSE._serialized_start=23715 - _TXPREPARERESPONSE._serialized_end=23783 - _TXSENDREQUEST._serialized_start=23785 - _TXSENDREQUEST._serialized_end=23814 - _TXSENDRESPONSE._serialized_start=23816 - _TXSENDRESPONSE._serialized_end=23872 - _DISCONNECTREQUEST._serialized_start=23874 - _DISCONNECTREQUEST._serialized_end=23935 - _DISCONNECTRESPONSE._serialized_start=23937 - _DISCONNECTRESPONSE._serialized_end=23957 - _FEERATESREQUEST._serialized_start=23959 - _FEERATESREQUEST._serialized_end=24066 - _FEERATESREQUEST_FEERATESSTYLE._serialized_start=24029 - _FEERATESREQUEST_FEERATESSTYLE._serialized_end=24066 - _FEERATESRESPONSE._serialized_start=24068 - _FEERATESRESPONSE._serialized_end=24154 - _FEERATESPERKB._serialized_start=24157 - _FEERATESPERKB._serialized_end=24480 - _FEERATESPERKW._serialized_start=24483 - _FEERATESPERKW._serialized_end=24806 - _FEERATESONCHAIN_FEE_ESTIMATES._serialized_start=24809 - _FEERATESONCHAIN_FEE_ESTIMATES._serialized_end=25002 - _FUNDCHANNELREQUEST._serialized_start=25005 - _FUNDCHANNELREQUEST._serialized_end=25490 - _FUNDCHANNELRESPONSE._serialized_start=25493 - _FUNDCHANNELRESPONSE._serialized_end=25648 - _GETROUTEREQUEST._serialized_start=25651 - _GETROUTEREQUEST._serialized_end=25887 - _GETROUTERESPONSE._serialized_start=25889 - _GETROUTERESPONSE._serialized_end=25942 - _GETROUTEROUTE._serialized_start=25945 - _GETROUTEROUTE._serialized_end=26178 - _GETROUTEROUTE_GETROUTEROUTESTYLE._serialized_start=26136 - _GETROUTEROUTE_GETROUTEROUTESTYLE._serialized_end=26165 - _LISTFORWARDSREQUEST._serialized_start=26181 - _LISTFORWARDSREQUEST._serialized_end=26439 - _LISTFORWARDSREQUEST_LISTFORWARDSSTATUS._serialized_start=26321 - _LISTFORWARDSREQUEST_LISTFORWARDSSTATUS._serialized_end=26397 - _LISTFORWARDSRESPONSE._serialized_start=26441 - _LISTFORWARDSRESPONSE._serialized_end=26508 - _LISTFORWARDSFORWARDS._serialized_start=26511 - _LISTFORWARDSFORWARDS._serialized_end=27117 - _LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTATUS._serialized_start=26900 - _LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTATUS._serialized_end=26984 - _LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTYLE._serialized_start=26986 - _LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTYLE._serialized_end=27034 - _LISTPAYSREQUEST._serialized_start=27120 - _LISTPAYSREQUEST._serialized_end=27339 - _LISTPAYSREQUEST_LISTPAYSSTATUS._serialized_start=27245 - _LISTPAYSREQUEST_LISTPAYSSTATUS._serialized_end=27300 - _LISTPAYSRESPONSE._serialized_start=27341 - _LISTPAYSRESPONSE._serialized_end=27392 - _LISTPAYSPAYS._serialized_start=27395 - _LISTPAYSPAYS._serialized_end=27914 - _LISTPAYSPAYS_LISTPAYSPAYSSTATUS._serialized_start=27726 - _LISTPAYSPAYS_LISTPAYSPAYSSTATUS._serialized_end=27785 - _PINGREQUEST._serialized_start=27916 - _PINGREQUEST._serialized_end=28005 - _PINGRESPONSE._serialized_start=28007 - _PINGRESPONSE._serialized_end=28037 - _SETCHANNELREQUEST._serialized_start=28040 - _SETCHANNELREQUEST._serialized_end=28288 - _SETCHANNELRESPONSE._serialized_start=28290 - _SETCHANNELRESPONSE._serialized_end=28353 - _SETCHANNELCHANNELS._serialized_start=28356 - _SETCHANNELCHANNELS._serialized_end=28760 - _SIGNMESSAGEREQUEST._serialized_start=28762 - _SIGNMESSAGEREQUEST._serialized_end=28799 - _SIGNMESSAGERESPONSE._serialized_start=28801 - _SIGNMESSAGERESPONSE._serialized_end=28871 - _STOPREQUEST._serialized_start=28873 - _STOPREQUEST._serialized_end=28886 - _STOPRESPONSE._serialized_start=28888 - _STOPRESPONSE._serialized_end=28902 - _NODE._serialized_start=28905 - _NODE._serialized_end=31898 + _CREATEINVOICERESPONSE._serialized_end=10475 + _CREATEINVOICERESPONSE_CREATEINVOICESTATUS._serialized_start=10268 + _CREATEINVOICERESPONSE_CREATEINVOICESTATUS._serialized_end=10324 + _DATASTOREREQUEST._serialized_start=10478 + _DATASTOREREQUEST._serialized_end=10786 + _DATASTOREREQUEST_DATASTOREMODE._serialized_start=10631 + _DATASTOREREQUEST_DATASTOREMODE._serialized_end=10743 + _DATASTORERESPONSE._serialized_start=10789 + _DATASTORERESPONSE._serialized_end=10919 + _CREATEONIONREQUEST._serialized_start=10922 + _CREATEONIONREQUEST._serialized_end=11079 + _CREATEONIONRESPONSE._serialized_start=11081 + _CREATEONIONRESPONSE._serialized_end=11141 + _CREATEONIONHOPS._serialized_start=11143 + _CREATEONIONHOPS._serialized_end=11193 + _DELDATASTOREREQUEST._serialized_start=11195 + _DELDATASTOREREQUEST._serialized_end=11269 + _DELDATASTORERESPONSE._serialized_start=11272 + _DELDATASTORERESPONSE._serialized_end=11405 + _DELEXPIREDINVOICEREQUEST._serialized_start=11407 + _DELEXPIREDINVOICEREQUEST._serialized_end=11479 + _DELEXPIREDINVOICERESPONSE._serialized_start=11481 + _DELEXPIREDINVOICERESPONSE._serialized_end=11508 + _DELINVOICEREQUEST._serialized_start=11511 + _DELINVOICEREQUEST._serialized_end=11693 + _DELINVOICEREQUEST_DELINVOICESTATUS._serialized_start=11627 + _DELINVOICEREQUEST_DELINVOICESTATUS._serialized_end=11680 + _DELINVOICERESPONSE._serialized_start=11696 + _DELINVOICERESPONSE._serialized_end=12149 + _DELINVOICERESPONSE_DELINVOICESTATUS._serialized_start=11627 + _DELINVOICERESPONSE_DELINVOICESTATUS._serialized_end=11680 + _INVOICEREQUEST._serialized_start=12152 + _INVOICEREQUEST._serialized_end=12464 + _INVOICERESPONSE._serialized_start=12467 + _INVOICERESPONSE._serialized_end=12826 + _LISTDATASTOREREQUEST._serialized_start=12828 + _LISTDATASTOREREQUEST._serialized_end=12863 + _LISTDATASTORERESPONSE._serialized_start=12865 + _LISTDATASTORERESPONSE._serialized_end=12936 + _LISTDATASTOREDATASTORE._serialized_start=12939 + _LISTDATASTOREDATASTORE._serialized_end=13074 + _LISTINVOICESREQUEST._serialized_start=13077 + _LISTINVOICESREQUEST._serialized_end=13246 + _LISTINVOICESRESPONSE._serialized_start=13248 + _LISTINVOICESRESPONSE._serialized_end=13315 + _LISTINVOICESINVOICES._serialized_start=13318 + _LISTINVOICESINVOICES._serialized_end=13992 + _LISTINVOICESINVOICES_LISTINVOICESINVOICESSTATUS._serialized_start=13762 + _LISTINVOICESINVOICES_LISTINVOICESINVOICESSTATUS._serialized_end=13825 + _SENDONIONREQUEST._serialized_start=13995 + _SENDONIONREQUEST._serialized_end=14343 + _SENDONIONRESPONSE._serialized_start=14346 + _SENDONIONRESPONSE._serialized_end=14869 + _SENDONIONRESPONSE_SENDONIONSTATUS._serialized_start=14717 + _SENDONIONRESPONSE_SENDONIONSTATUS._serialized_end=14761 + _SENDONIONFIRST_HOP._serialized_start=14871 + _SENDONIONFIRST_HOP._serialized_end=14952 + _LISTSENDPAYSREQUEST._serialized_start=14955 + _LISTSENDPAYSREQUEST._serialized_end=15190 + _LISTSENDPAYSREQUEST_LISTSENDPAYSSTATUS._serialized_start=15092 + _LISTSENDPAYSREQUEST_LISTSENDPAYSSTATUS._serialized_end=15151 + _LISTSENDPAYSRESPONSE._serialized_start=15192 + _LISTSENDPAYSRESPONSE._serialized_end=15259 + _LISTSENDPAYSPAYMENTS._serialized_start=15262 + _LISTSENDPAYSPAYMENTS._serialized_end=15858 + _LISTSENDPAYSPAYMENTS_LISTSENDPAYSPAYMENTSSTATUS._serialized_start=15675 + _LISTSENDPAYSPAYMENTS_LISTSENDPAYSPAYMENTSSTATUS._serialized_end=15742 + _LISTTRANSACTIONSREQUEST._serialized_start=15860 + _LISTTRANSACTIONSREQUEST._serialized_end=15885 + _LISTTRANSACTIONSRESPONSE._serialized_start=15887 + _LISTTRANSACTIONSRESPONSE._serialized_end=15970 + _LISTTRANSACTIONSTRANSACTIONS._serialized_start=15973 + _LISTTRANSACTIONSTRANSACTIONS._serialized_end=16255 + _LISTTRANSACTIONSTRANSACTIONSINPUTS._serialized_start=16258 + _LISTTRANSACTIONSTRANSACTIONSINPUTS._serialized_end=16774 + _LISTTRANSACTIONSTRANSACTIONSINPUTS_LISTTRANSACTIONSTRANSACTIONSINPUTSTYPE._serialized_start=16470 + _LISTTRANSACTIONSTRANSACTIONSINPUTS_LISTTRANSACTIONSTRANSACTIONSINPUTSTYPE._serialized_end=16748 + _LISTTRANSACTIONSTRANSACTIONSOUTPUTS._serialized_start=16777 + _LISTTRANSACTIONSTRANSACTIONSOUTPUTS._serialized_end=17321 + _LISTTRANSACTIONSTRANSACTIONSOUTPUTS_LISTTRANSACTIONSTRANSACTIONSOUTPUTSTYPE._serialized_start=17016 + _LISTTRANSACTIONSTRANSACTIONSOUTPUTS_LISTTRANSACTIONSTRANSACTIONSOUTPUTSTYPE._serialized_end=17295 + _PAYREQUEST._serialized_start=17324 + _PAYREQUEST._serialized_end=17796 + _PAYRESPONSE._serialized_start=17799 + _PAYRESPONSE._serialized_end=18178 + _PAYRESPONSE_PAYSTATUS._serialized_start=18081 + _PAYRESPONSE_PAYSTATUS._serialized_end=18131 + _LISTNODESREQUEST._serialized_start=18180 + _LISTNODESREQUEST._serialized_end=18222 + _LISTNODESRESPONSE._serialized_start=18224 + _LISTNODESRESPONSE._serialized_end=18279 + _LISTNODESNODES._serialized_start=18282 + _LISTNODESNODES._serialized_end=18507 + _LISTNODESNODESADDRESSES._serialized_start=18510 + _LISTNODESNODESADDRESSES._serialized_end=18757 + _LISTNODESNODESADDRESSES_LISTNODESNODESADDRESSESTYPE._serialized_start=18650 + _LISTNODESNODESADDRESSES_LISTNODESNODESADDRESSESTYPE._serialized_end=18745 + _WAITANYINVOICEREQUEST._serialized_start=18759 + _WAITANYINVOICEREQUEST._serialized_end=18862 + _WAITANYINVOICERESPONSE._serialized_start=18865 + _WAITANYINVOICERESPONSE._serialized_end=19396 + _WAITANYINVOICERESPONSE_WAITANYINVOICESTATUS._serialized_start=19241 + _WAITANYINVOICERESPONSE_WAITANYINVOICESTATUS._serialized_end=19286 + _WAITINVOICEREQUEST._serialized_start=19398 + _WAITINVOICEREQUEST._serialized_end=19433 + _WAITINVOICERESPONSE._serialized_start=19436 + _WAITINVOICERESPONSE._serialized_end=19955 + _WAITINVOICERESPONSE_WAITINVOICESTATUS._serialized_start=19803 + _WAITINVOICERESPONSE_WAITINVOICESTATUS._serialized_end=19845 + _WAITSENDPAYREQUEST._serialized_start=19958 + _WAITSENDPAYREQUEST._serialized_end=20100 + _WAITSENDPAYRESPONSE._serialized_start=20103 + _WAITSENDPAYRESPONSE._serialized_end=20665 + _WAITSENDPAYRESPONSE_WAITSENDPAYSTATUS._serialized_start=20507 + _WAITSENDPAYRESPONSE_WAITSENDPAYSTATUS._serialized_end=20540 + _NEWADDRREQUEST._serialized_start=20668 + _NEWADDRREQUEST._serialized_end=20826 + _NEWADDRREQUEST_NEWADDRADDRESSTYPE._serialized_start=20752 + _NEWADDRREQUEST_NEWADDRADDRESSTYPE._serialized_end=20810 + _NEWADDRRESPONSE._serialized_start=20828 + _NEWADDRRESPONSE._serialized_end=20919 + _WITHDRAWREQUEST._serialized_start=20922 + _WITHDRAWREQUEST._serialized_end=21124 + _WITHDRAWRESPONSE._serialized_start=21126 + _WITHDRAWRESPONSE._serialized_end=21184 + _KEYSENDREQUEST._serialized_start=21187 + _KEYSENDREQUEST._serialized_end=21573 + _KEYSENDRESPONSE._serialized_start=21576 + _KEYSENDRESPONSE._serialized_end=21946 + _KEYSENDRESPONSE_KEYSENDSTATUS._serialized_start=21870 + _KEYSENDRESPONSE_KEYSENDSTATUS._serialized_end=21899 + _FUNDPSBTREQUEST._serialized_start=21949 + _FUNDPSBTREQUEST._serialized_end=22265 + _FUNDPSBTRESPONSE._serialized_start=22268 + _FUNDPSBTRESPONSE._serialized_end=22485 + _FUNDPSBTRESERVATIONS._serialized_start=22487 + _FUNDPSBTRESERVATIONS._serialized_end=22604 + _SENDPSBTREQUEST._serialized_start=22606 + _SENDPSBTREQUEST._serialized_end=22671 + _SENDPSBTRESPONSE._serialized_start=22673 + _SENDPSBTRESPONSE._serialized_end=22717 + _SIGNPSBTREQUEST._serialized_start=22719 + _SIGNPSBTREQUEST._serialized_end=22768 + _SIGNPSBTRESPONSE._serialized_start=22770 + _SIGNPSBTRESPONSE._serialized_end=22809 + _UTXOPSBTREQUEST._serialized_start=22812 + _UTXOPSBTREQUEST._serialized_end=23159 + _UTXOPSBTRESPONSE._serialized_start=23162 + _UTXOPSBTRESPONSE._serialized_end=23379 + _UTXOPSBTRESERVATIONS._serialized_start=23381 + _UTXOPSBTRESERVATIONS._serialized_end=23498 + _TXDISCARDREQUEST._serialized_start=23500 + _TXDISCARDREQUEST._serialized_end=23532 + _TXDISCARDRESPONSE._serialized_start=23534 + _TXDISCARDRESPONSE._serialized_end=23588 + _TXPREPAREREQUEST._serialized_start=23591 + _TXPREPAREREQUEST._serialized_end=23755 + _TXPREPARERESPONSE._serialized_start=23757 + _TXPREPARERESPONSE._serialized_end=23825 + _TXSENDREQUEST._serialized_start=23827 + _TXSENDREQUEST._serialized_end=23856 + _TXSENDRESPONSE._serialized_start=23858 + _TXSENDRESPONSE._serialized_end=23914 + _DISCONNECTREQUEST._serialized_start=23916 + _DISCONNECTREQUEST._serialized_end=23977 + _DISCONNECTRESPONSE._serialized_start=23979 + _DISCONNECTRESPONSE._serialized_end=23999 + _FEERATESREQUEST._serialized_start=24001 + _FEERATESREQUEST._serialized_end=24108 + _FEERATESREQUEST_FEERATESSTYLE._serialized_start=24071 + _FEERATESREQUEST_FEERATESSTYLE._serialized_end=24108 + _FEERATESRESPONSE._serialized_start=24110 + _FEERATESRESPONSE._serialized_end=24196 + _FEERATESPERKB._serialized_start=24199 + _FEERATESPERKB._serialized_end=24522 + _FEERATESPERKW._serialized_start=24525 + _FEERATESPERKW._serialized_end=24848 + _FEERATESONCHAIN_FEE_ESTIMATES._serialized_start=24851 + _FEERATESONCHAIN_FEE_ESTIMATES._serialized_end=25044 + _FUNDCHANNELREQUEST._serialized_start=25047 + _FUNDCHANNELREQUEST._serialized_end=25532 + _FUNDCHANNELRESPONSE._serialized_start=25535 + _FUNDCHANNELRESPONSE._serialized_end=25690 + _GETROUTEREQUEST._serialized_start=25693 + _GETROUTEREQUEST._serialized_end=25929 + _GETROUTERESPONSE._serialized_start=25931 + _GETROUTERESPONSE._serialized_end=25984 + _GETROUTEROUTE._serialized_start=25987 + _GETROUTEROUTE._serialized_end=26220 + _GETROUTEROUTE_GETROUTEROUTESTYLE._serialized_start=26178 + _GETROUTEROUTE_GETROUTEROUTESTYLE._serialized_end=26207 + _LISTFORWARDSREQUEST._serialized_start=26223 + _LISTFORWARDSREQUEST._serialized_end=26481 + _LISTFORWARDSREQUEST_LISTFORWARDSSTATUS._serialized_start=26363 + _LISTFORWARDSREQUEST_LISTFORWARDSSTATUS._serialized_end=26439 + _LISTFORWARDSRESPONSE._serialized_start=26483 + _LISTFORWARDSRESPONSE._serialized_end=26550 + _LISTFORWARDSFORWARDS._serialized_start=26553 + _LISTFORWARDSFORWARDS._serialized_end=27159 + _LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTATUS._serialized_start=26942 + _LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTATUS._serialized_end=27026 + _LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTYLE._serialized_start=27028 + _LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTYLE._serialized_end=27076 + _LISTPAYSREQUEST._serialized_start=27162 + _LISTPAYSREQUEST._serialized_end=27381 + _LISTPAYSREQUEST_LISTPAYSSTATUS._serialized_start=27287 + _LISTPAYSREQUEST_LISTPAYSSTATUS._serialized_end=27342 + _LISTPAYSRESPONSE._serialized_start=27383 + _LISTPAYSRESPONSE._serialized_end=27434 + _LISTPAYSPAYS._serialized_start=27437 + _LISTPAYSPAYS._serialized_end=27956 + _LISTPAYSPAYS_LISTPAYSPAYSSTATUS._serialized_start=27768 + _LISTPAYSPAYS_LISTPAYSPAYSSTATUS._serialized_end=27827 + _PINGREQUEST._serialized_start=27958 + _PINGREQUEST._serialized_end=28047 + _PINGRESPONSE._serialized_start=28049 + _PINGRESPONSE._serialized_end=28079 + _SETCHANNELREQUEST._serialized_start=28082 + _SETCHANNELREQUEST._serialized_end=28330 + _SETCHANNELRESPONSE._serialized_start=28332 + _SETCHANNELRESPONSE._serialized_end=28395 + _SETCHANNELCHANNELS._serialized_start=28398 + _SETCHANNELCHANNELS._serialized_end=28802 + _SIGNMESSAGEREQUEST._serialized_start=28804 + _SIGNMESSAGEREQUEST._serialized_end=28841 + _SIGNMESSAGERESPONSE._serialized_start=28843 + _SIGNMESSAGERESPONSE._serialized_end=28913 + _STOPREQUEST._serialized_start=28915 + _STOPREQUEST._serialized_end=28928 + _STOPRESPONSE._serialized_start=28930 + _STOPRESPONSE._serialized_end=28944 + _NODE._serialized_start=28947 + _NODE._serialized_end=31940 # @@protoc_insertion_point(module_scope) diff --git a/doc/lightning-createinvoice.7.md b/doc/lightning-createinvoice.7.md index 477f971fbafa..09468bb4e658 100644 --- a/doc/lightning-createinvoice.7.md +++ b/doc/lightning-createinvoice.7.md @@ -46,7 +46,7 @@ On success, an object is returned, containing: - **paid\_at** (u64, optional): UNIX timestamp of when invoice was paid (**status** *paid* only) - **payment\_preimage** (secret, optional): the proof of payment: SHA256 of this **payment_hash** (always 64 characters) - **local\_offer\_id** (hex, optional): the *id* of our offer which created this invoice (**experimental-offers** only). (always 64 characters) -- **payer\_note** (string, optional): the optional *payer_note* from invoice_request which created this invoice (**experimental-offers** only). +- **invreq\_payer\_note** (string, optional): the optional *invreq_payer_note* from invoice_request which created this invoice (**experimental-offers** only). [comment]: # (GENERATE-FROM-SCHEMA-END) @@ -75,4 +75,4 @@ RESOURCES Main web site: -[comment]: # ( SHA256STAMP:9fc2c7cb6e5980774a768dd9ddfe81e254c084554c159e6b07e92e703dc10595) +[comment]: # ( SHA256STAMP:3acf2924a8670605f70a7976cf4909b60addf4b1aeebc9b9a104151cffa2c984) diff --git a/doc/lightning-decode.7.md b/doc/lightning-decode.7.md index 375327ca2c99..aa814475628c 100644 --- a/doc/lightning-decode.7.md +++ b/doc/lightning-decode.7.md @@ -29,127 +29,202 @@ On success, an object is returned, containing: If **type** is "bolt12 offer", and **valid** is *true*: - - **offer\_id** (hex): the id of this offer (merkle hash of non-signature fields) (always 64 characters) - - **node\_id** (pubkey): public key of the offering node - - **description** (string): the description of the purpose of the offer - - **signature** (bip340sig, optional): BIP-340 signature of the *node_id* on this offer - - **chains** (array of hexs, optional): which blockchains this offer is for (missing implies bitcoin mainnet only): + - **offer\_id** (hex): the id we use to identify this offer (always 64 characters) + - **offer\_description** (string): the description of the purpose of the offer + - **offer\_node\_id** (pubkey): public key of the offering node + - **offer\_chains** (array of hexs, optional): which blockchains this offer is for (missing implies bitcoin mainnet only): - the genesis blockhash (always 64 characters) - - **currency** (string, optional): ISO 4217 code of the currency (missing implies Bitcoin) (always 3 characters) - - **minor\_unit** (u32, optional): the number of decimal places to apply to amount (if currency known) - - **amount** (u64, optional): the amount in the *currency* adjusted by *minor_unit*, if any - - **amount\_msat** (msat, optional): the amount in bitcoin (if specified, and no *currency*) - - **send\_invoice** (boolean, optional): present if this is a send_invoice offer (always *true*) - - **refund\_for** (hex, optional): the *payment_preimage* of invoice this is a refund for (always 64 characters) - - **vendor** (string, optional): the name of the vendor for this offer - - **features** (hex, optional): the array of feature bits for this offer - - **absolute\_expiry** (u64, optional): UNIX timestamp of when this offer expires - - **paths** (array of objects, optional): Paths to the destination: + - **offer\_metadata** (hex, optional): any metadata the creater of the offer includes + - **offer\_currency** (string, optional): ISO 4217 code of the currency (missing implies Bitcoin) (always 3 characters) + - **currency\_minor\_unit** (u32, optional): the number of decimal places to apply to amount (if currency known) + - **offer\_amount** (u64, optional): the amount in the `offer_currency` adjusted by `currency_minor_unit`, if any + - **offer\_amount\_msat** (msat, optional): the amount in bitcoin (if specified, and no `offer_currency`) + - **offer\_issuer** (string, optional): the description of the creator of the offer + - **offer\_features** (hex, optional): the feature bits of the offer + - **offer\_absolute\_expiry** (u64, optional): UNIX timestamp of when this offer expires + - **offer\_quantity\_max** (u64, optional): the maximum quantity (or, if 0, means any quantity) + - **offer\_paths** (array of objects, optional): Paths to the destination: - **first\_node\_id** (pubkey): the (presumably well-known) public key of the start of the path - **blinding** (pubkey): blinding factor for this path - **path** (array of objects): an individual path: - **blinded\_node\_id** (pubkey): node_id of the hop - **encrypted\_recipient\_data** (hex): encrypted TLV entry for this hop - - **quantity\_max** (u64, optional): the maximum quantity (or, if 0, means any quantity) - - **recurrence** (object, optional): how often to this offer should be used: + - **offer\_recurrence** (object, optional): how often to this offer should be used: - **time\_unit** (u32): the BOLT12 time unit - - **period** (u32): how many *time_unit* per payment period - - **time\_unit\_name** (string, optional): the name of *time_unit* (if valid) + - **period** (u32): how many `time_unit` per payment period + - **time\_unit\_name** (string, optional): the name of `time_unit` (if valid) - **basetime** (u64, optional): period starts at this UNIX timestamp - - **start\_any\_period** (u64, optional): you can start at any period (only if **basetime** present) + - **start\_any\_period** (u64, optional): you can start at any period (only if `basetime` present) - **limit** (u32, optional): maximum period number for recurrence - **paywindow** (object, optional): when within a period will payment be accepted (default is prior and during the period): - **seconds\_before** (u32): seconds prior to period start - **seconds\_after** (u32): seconds after to period start - **proportional\_amount** (boolean, optional): amount should be scaled if payed after period start (always *true*) - the following warnings are possible: - - **warning\_offer\_unknown\_currency**: The currency code is unknown (so no **minor_unit**) + - **warning\_unknown\_offer\_currency**: The currency code is unknown (so no `currency_minor_unit`) If **type** is "bolt12 offer", and **valid** is *false*: - the following warnings are possible: - - **warning\_offer\_missing\_description**: No **description** + - **warning\_missing\_offer\_node\_id**: `offer_node_id` is not present + - **warning\_invalid\_offer\_description**: `offer_description` is not valid UTF8 + - **warning\_missing\_offer\_description**: `offer_description` is not present + - **warning\_invalid\_offer\_currency**: `offer_currency_code` is not valid UTF8 + - **warning\_invalid\_offer\_issuer**: `offer_issuer` is not valid UTF8 + +If **type** is "bolt12 invoice_request", and **valid** is *true*: + + - **offer\_description** (string): the description of the purpose of the offer + - **offer\_node\_id** (pubkey): public key of the offering node + - **invreq\_metadata** (hex): the payer-provided blob to derive invreq_payer_id + - **invreq\_payer\_id** (hex): the payer-provided key + - **signature** (bip340sig): BIP-340 signature of the `invreq_payer_id` on this invoice_request + - **offer\_id** (hex, optional): the id we use to identify this offer (always 64 characters) + - **offer\_chains** (array of hexs, optional): which blockchains this offer is for (missing implies bitcoin mainnet only): + - the genesis blockhash (always 64 characters) + - **offer\_metadata** (hex, optional): any metadata the creator of the offer includes + - **offer\_currency** (string, optional): ISO 4217 code of the currency (missing implies Bitcoin) (always 3 characters) + - **currency\_minor\_unit** (u32, optional): the number of decimal places to apply to amount (if currency known) + - **offer\_amount** (u64, optional): the amount in the `offer_currency` adjusted by `currency_minor_unit`, if any + - **offer\_amount\_msat** (msat, optional): the amount in bitcoin (if specified, and no `offer_currency`) + - **offer\_issuer** (string, optional): the description of the creator of the offer + - **offer\_features** (hex, optional): the feature bits of the offer + - **offer\_absolute\_expiry** (u64, optional): UNIX timestamp of when this offer expires + - **offer\_quantity\_max** (u64, optional): the maximum quantity (or, if 0, means any quantity) + - **offer\_paths** (array of objects, optional): Paths to the destination: + - **first\_node\_id** (pubkey): the (presumably well-known) public key of the start of the path + - **blinding** (pubkey): blinding factor for this path + - **path** (array of objects): an individual path: + - **blinded\_node\_id** (pubkey): node_id of the hop + - **encrypted\_recipient\_data** (hex): encrypted TLV entry for this hop + - **offer\_recurrence** (object, optional): how often to this offer should be used: + - **time\_unit** (u32): the BOLT12 time unit + - **period** (u32): how many `time_unit` per payment period + - **time\_unit\_name** (string, optional): the name of `time_unit` (if valid) + - **basetime** (u64, optional): period starts at this UNIX timestamp + - **start\_any\_period** (u64, optional): you can start at any period (only if `basetime` present) + - **limit** (u32, optional): maximum period number for recurrence + - **paywindow** (object, optional): when within a period will payment be accepted (default is prior and during the period): + - **seconds\_before** (u32): seconds prior to period start + - **seconds\_after** (u32): seconds after to period start + - **proportional\_amount** (boolean, optional): amount should be scaled if payed after period start (always *true*) + - **invreq\_chain** (hex, optional): which blockchain this offer is for (missing implies bitcoin mainnet only) (always 64 characters) + - **invreq\_amount\_msat** (msat, optional): the amount the invoice should be for + - **invreq\_features** (hex, optional): the feature bits of the invoice_request + - **invreq\_quantity** (u64, optional): the number of items to invoice for + - **invreq\_payer\_note** (string, optional): a note attached by the payer + - **invreq\_recurrence\_counter** (u32, optional): which number request this is for the same invoice + - **invreq\_recurrence\_start** (u32, optional): when we're requesting to start an invoice at a non-zero period + - the following warnings are possible: + - **warning\_unknown\_offer\_currency**: The currency code is unknown (so no `currency_minor_unit`) + +If **type** is "bolt12 invoice_request", and **valid** is *false*: + + - the following warnings are possible: + - **warning\_invalid\_offer\_description**: `offer_description` is not valid UTF8 + - **warning\_missing\_offer\_description**: `offer_description` is not present + - **warning\_invalid\_offer\_currency**: `offer_currency_code` is not valid UTF8 + - **warning\_invalid\_offer\_issuer**: `offer_issuer` is not valid UTF8 + - **warning\_missing\_invreq\_metadata**: `invreq_metadata` is not present + - **warning\_missing\_invreq\_payer\_id**: `invreq_payer_id` is not present + - **warning\_invalid\_invreq\_payer\_note**: `invreq_payer_note` is not valid UTF8 + - **warning\_missing\_invoice\_request\_signature**: `signature` is not present + - **warning\_invalid\_invoice\_request\_signature**: Incorrect `signature` If **type** is "bolt12 invoice", and **valid** is *true*: - - **node\_id** (pubkey): public key of the offering node - - **signature** (bip340sig): BIP-340 signature of the *node_id* on this invoice - - **amount\_msat** (msat): the amount in bitcoin - - **description** (string): the description of the purpose of the offer - - **created\_at** (u64): the UNIX timestamp of invoice creation - - **payment\_hash** (hex): the hash of the *payment_preimage* (always 64 characters) - - **relative\_expiry** (u32): the number of seconds after *created_at* when this expires - - **offer\_id** (hex, optional): the id of this offer (merkle hash of non-signature fields) (always 64 characters) - - **chain** (hex, optional): which blockchain this invoice is for (missing implies bitcoin mainnet only) (always 64 characters) - - **send\_invoice** (boolean, optional): present if this offer was a send_invoice offer (always *true*) - - **refund\_for** (hex, optional): the *payment_preimage* of invoice this is a refund for (always 64 characters) - - **vendor** (string, optional): the name of the vendor for this offer - - **features** (hex, optional): the array of feature bits for this offer - - **paths** (array of objects, optional): Paths to the destination: + - **offer\_description** (string): the description of the purpose of the offer + - **offer\_node\_id** (pubkey): public key of the offering node + - **invreq\_metadata** (hex): the payer-provided blob to derive invreq_payer_id + - **invreq\_payer\_id** (hex): the payer-provided key + - **invoice\_paths** (array of objects): Paths to pay the destination: - **first\_node\_id** (pubkey): the (presumably well-known) public key of the start of the path - **blinding** (pubkey): blinding factor for this path - **path** (array of objects): an individual path: - **blinded\_node\_id** (pubkey): node_id of the hop - **encrypted\_recipient\_data** (hex): encrypted TLV entry for this hop - - **fee\_base\_msat** (msat, optional): base fee for the entire path - - **fee\_proportional\_millionths** (u32, optional): proportional fee for the entire path - - **cltv\_expiry\_delta** (u32, optional): total CLTV delta across path - - **features** (hex, optional): Features allowed/required for this path - - **quantity** (u64, optional): the quantity ordered - - **recurrence\_counter** (u32, optional): the 0-based counter for a recurring payment - - **recurrence\_start** (u32, optional): the optional start period for a recurring payment - - **recurrence\_basetime** (u32, optional): the UNIX timestamp of the first recurrence period start - - **payer\_key** (pubkey, optional): the transient key which identifies the payer - - **invreq\_metadata** (hex, optional): the payer-provided blob to derive payer_key - - **fallbacks** (array of objects, optional): onchain addresses: + - **fee\_base\_msat** (msat, optional): basefee for path + - **fee\_proportional\_millionths** (u32, optional): proportional fee for path + - **cltv\_expiry\_delta** (u32, optional): CLTV delta for path + - **features** (hex, optional): features allowed for path + - **invoice\_created\_at** (u64): the UNIX timestamp of invoice creation + - **invoice\_payment\_hash** (hex): the hash of the *payment_preimage* (always 64 characters) + - **invoice\_amount\_msat** (msat): the amount required to fulfill invoice + - **signature** (bip340sig): BIP-340 signature of the `offer_node_id` on this invoice + - **offer\_id** (hex, optional): the id we use to identify this offer (always 64 characters) + - **offer\_chains** (array of hexs, optional): which blockchains this offer is for (missing implies bitcoin mainnet only): + - the genesis blockhash (always 64 characters) + - **offer\_metadata** (hex, optional): any metadata the creator of the offer includes + - **offer\_currency** (string, optional): ISO 4217 code of the currency (missing implies Bitcoin) (always 3 characters) + - **currency\_minor\_unit** (u32, optional): the number of decimal places to apply to amount (if currency known) + - **offer\_amount** (u64, optional): the amount in the `offer_currency` adjusted by `currency_minor_unit`, if any + - **offer\_amount\_msat** (msat, optional): the amount in bitcoin (if specified, and no `offer_currency`) + - **offer\_issuer** (string, optional): the description of the creator of the offer + - **offer\_features** (hex, optional): the feature bits of the offer + - **offer\_absolute\_expiry** (u64, optional): UNIX timestamp of when this offer expires + - **offer\_quantity\_max** (u64, optional): the maximum quantity (or, if 0, means any quantity) + - **offer\_paths** (array of objects, optional): Paths to the destination: + - **first\_node\_id** (pubkey): the (presumably well-known) public key of the start of the path + - **blinding** (pubkey): blinding factor for this path + - **path** (array of objects): an individual path: + - **blinded\_node\_id** (pubkey): node_id of the hop + - **encrypted\_recipient\_data** (hex): encrypted TLV entry for this hop + - **offer\_recurrence** (object, optional): how often to this offer should be used: + - **time\_unit** (u32): the BOLT12 time unit + - **period** (u32): how many `time_unit` per payment period + - **time\_unit\_name** (string, optional): the name of `time_unit` (if valid) + - **basetime** (u64, optional): period starts at this UNIX timestamp + - **start\_any\_period** (u64, optional): you can start at any period (only if `basetime` present) + - **limit** (u32, optional): maximum period number for recurrence + - **paywindow** (object, optional): when within a period will payment be accepted (default is prior and during the period): + - **seconds\_before** (u32): seconds prior to period start + - **seconds\_after** (u32): seconds after to period start + - **proportional\_amount** (boolean, optional): amount should be scaled if payed after period start (always *true*) + - **invreq\_chain** (hex, optional): which blockchain this offer is for (missing implies bitcoin mainnet only) (always 64 characters) + - **invreq\_amount\_msat** (msat, optional): the amount the invoice should be for + - **invreq\_features** (hex, optional): the feature bits of the invoice_request + - **invreq\_quantity** (u64, optional): the number of items to invoice for + - **invreq\_payer\_note** (string, optional): a note attached by the payer + - **invreq\_recurrence\_counter** (u32, optional): which number request this is for the same invoice + - **invreq\_recurrence\_start** (u32, optional): when we're requesting to start an invoice at a non-zero period + - **invoice\_relative\_expiry** (u32, optional): the number of seconds after *invoice_created_at* when this expires + - **invoice\_fallbacks** (array of objects, optional): onchain addresses: - **version** (u8): Segwit address version - **hex** (hex): Raw encoded segwit address - **address** (string, optional): bech32 segwit address - - **refund\_signature** (bip340sig, optional): the payer key signature to get a refund + - **invoice\_features** (hex, optional): the feature bits of the invoice + - **invoice\_node\_id** (pubkey, optional): the id to pay (usually the same as offer_node_id) + - **invoice\_recurrence\_basetime** (u64, optional): the UNIX timestamp to base the invoice periods on + - the following warnings are possible: + - **warning\_unknown\_offer\_currency**: The currency code is unknown (so no `currency_minor_unit`) If **type** is "bolt12 invoice", and **valid** is *false*: - **fallbacks** (array of objects, optional): - the following warnings are possible: - - **warning\_invoice\_fallbacks\_version\_invalid**: **version** is > 16 - - the following warnings are possible: - - **warning\_invoice\_missing\_amount**: **amount_msat* missing - - **warning\_invoice\_missing\_description**: No **description** - - **warning\_invoice\_missing\_blinded\_payinfo**: Has **paths** without payinfo - - **warning\_invoice\_invalid\_blinded\_payinfo**: Does not have exactly one payinfo for each of **paths** - - **warning\_invoice\_missing\_recurrence\_basetime**: Has **recurrence_counter** without **recurrence_basetime** - - **warning\_invoice\_missing\_created\_at**: Missing **created_at** - - **warning\_invoice\_missing\_payment\_hash**: Missing **payment_hash** - - **warning\_invoice\_refund\_signature\_missing\_payer\_key**: Missing **payer_key** for refund_signature - - **warning\_invoice\_refund\_signature\_invalid**: **refund_signature** incorrect - - **warning\_invoice\_refund\_missing\_signature**: No **refund_signature** - -If **type** is "bolt12 invoice_request", and **valid** is *true*: - - - **offer\_id** (hex): the id of the offer this is requesting (merkle hash of non-signature fields) (always 64 characters) - - **payer\_key** (pubkey): the transient key which identifies the payer - - **chain** (hex, optional): which blockchain this invoice_request is for (missing implies bitcoin mainnet only) (always 64 characters) - - **amount\_msat** (msat, optional): the amount in bitcoin - - **features** (hex, optional): the array of feature bits for this offer - - **quantity** (u64, optional): the quantity ordered - - **recurrence\_counter** (u32, optional): the 0-based counter for a recurring payment - - **recurrence\_start** (u32, optional): the optional start period for a recurring payment - - **invreq\_metadata** (hex, optional): the payer-provided blob to derive payer_key - - **recurrence\_signature** (bip340sig, optional): the payer key signature - -If **type** is "bolt12 invoice_request", and **valid** is *false*: - + - **warning\_invoice\_fallbacks\_version\_invalid**: `version` is > 16 - the following warnings are possible: - - **warning\_invoice\_request\_missing\_offer\_id**: No **offer_id** - - **warning\_invoice\_request\_missing\_payer\_key**: No **payer_key** - - **warning\_invoice\_request\_missing\_recurrence\_signature**: No **recurrence_signature** - - **warning\_invoice\_request\_invalid\_recurrence\_signature**: **recurrence_signature** incorrect + - **warning\_invalid\_offer\_description**: `offer_description` is not valid UTF8 + - **warning\_missing\_offer\_description**: `offer_description` is not present + - **warning\_invalid\_offer\_currency**: `offer_currency_code` is not valid UTF8 + - **warning\_invalid\_offer\_issuer**: `offer_issuer` is not valid UTF8 + - **warning\_missing\_invreq\_metadata**: `invreq_metadata` is not present + - **warning\_invalid\_invreq\_payer\_note**: `invreq_payer_note` is not valid UTF8 + - **warning\_missing\_invoice\_paths**: `invoice_paths` is not present + - **warning\_missing\_invoice\_blindedpay**: `invoice_blindedpay` is not present + - **warning\_missing\_invoice\_created\_at**: `invoice_created_at` is not present + - **warning\_missing\_invoice\_payment\_hash**: `invoice_payment_hash` is not present + - **warning\_missing\_invoice\_amount**: `invoice_amount` is not present + - **warning\_missing\_invoice\_recurrence\_basetime**: `invoice_recurrence_basetime` is not present + - **warning\_missing\_invoice\_node\_id**: `invoice_node_id` is not present + - **warning\_missing\_invoice\_signature**: `signature` is not present + - **warning\_invalid\_invoice\_signature**: Incorrect `signature` If **type** is "bolt11 invoice", and **valid** is *true*: - **currency** (string): the BIP173 name for the currency - **created\_at** (u64): the UNIX-style timestamp of the invoice - - **expiry** (u64): the number of seconds this is valid after *timestamp* + - **expiry** (u64): the number of seconds this is valid after `created_at` - **payee** (pubkey): the public key of the recipient - **payment\_hash** (hex): the hash of the *payment_preimage* (always 64 characters) - **signature** (signature): signature of the *payee* on this invoice @@ -215,4 +290,4 @@ RESOURCES Main web site: -[comment]: # ( SHA256STAMP:3f0c78dd665bff6749352801b0fdd958ee138fda6ede5b3631d9cb136fc45d76) +[comment]: # ( SHA256STAMP:e5791741d8b466b2f080dcde3e5a7770ce3a820d0b7e5635e6b6cfd1f104c09d) diff --git a/doc/lightning-delinvoice.7.md b/doc/lightning-delinvoice.7.md index 71f34b78d03e..d231d4a14556 100644 --- a/doc/lightning-delinvoice.7.md +++ b/doc/lightning-delinvoice.7.md @@ -39,7 +39,7 @@ On success, an object is returned, containing: If **bolt12** is present: - **local\_offer\_id** (hex, optional): offer for which this invoice was created - - **payer\_note** (string, optional): the optional *payer_note* from invoice_request which created this invoice + - **invreq\_payer\_note** (string, optional): the optional *invreq_payer_note* from invoice_request which created this invoice If **status** is "paid": @@ -81,4 +81,4 @@ RESOURCES Main web site: -[comment]: # ( SHA256STAMP:d754daa61ddb65009fced566338af35ffb23069593f4741e6d8f6f138f60bb4f) +[comment]: # ( SHA256STAMP:961571f6b2155f0452ac376bdf957474dd20e97e05a89efdf590f6e4da310f4f) diff --git a/doc/lightning-listinvoices.7.md b/doc/lightning-listinvoices.7.md index 1af9600ce8ce..16e9f020187a 100644 --- a/doc/lightning-listinvoices.7.md +++ b/doc/lightning-listinvoices.7.md @@ -32,7 +32,7 @@ On success, an object containing **invoices** is returned. It is an array of ob - **bolt11** (string, optional): the BOLT11 string (always present unless *bolt12* is) - **bolt12** (string, optional): the BOLT12 string (always present unless *bolt11* is) - **local\_offer\_id** (hex, optional): the *id* of our offer which created this invoice (**experimental-offers** only). (always 64 characters) -- **payer\_note** (string, optional): the optional *payer_note* from invoice_request which created this invoice (**experimental-offers** only). +- **invreq\_payer\_note** (string, optional): the optional *invreq_payer_note* from invoice_request which created this invoice (**experimental-offers** only). If **status** is "paid": @@ -58,4 +58,4 @@ RESOURCES Main web site: -[comment]: # ( SHA256STAMP:58de6b2fa9e3e796689618bf92a78dac66bb6cfe941d099abd73da3e41bfa60e) +[comment]: # ( SHA256STAMP:5c64a05bbf7485840010b16005c6f5d57725e4b0bf0a2a2106febe91ff0d4eb8) diff --git a/doc/schemas/createinvoice.schema.json b/doc/schemas/createinvoice.schema.json index ed97308a4386..e25ce1232f5c 100644 --- a/doc/schemas/createinvoice.schema.json +++ b/doc/schemas/createinvoice.schema.json @@ -73,9 +73,9 @@ "maxLength": 64, "minLength": 64 }, - "payer_note": { + "invreq_payer_note": { "type": "string", - "description": "the optional *payer_note* from invoice_request which created this invoice (**experimental-offers** only)." + "description": "the optional *invreq_payer_note* from invoice_request which created this invoice (**experimental-offers** only)." } } } diff --git a/doc/schemas/decode.schema.json b/doc/schemas/decode.schema.json index d7b9e380937c..ee59354186ad 100644 --- a/doc/schemas/decode.schema.json +++ b/doc/schemas/decode.schema.json @@ -43,8 +43,8 @@ "then": { "required": [ "offer_id", - "node_id", - "description" + "offer_node_id", + "offer_description" ], "additionalProperties": false, "properties": { @@ -52,19 +52,11 @@ "valid": {}, "offer_id": { "type": "hex", - "description": "the id of this offer (merkle hash of non-signature fields)", + "description": "the id we use to identify this offer", "maxLength": 64, "minLength": 64 }, - "node_id": { - "type": "pubkey", - "description": "public key of the offering node" - }, - "signature": { - "type": "bip340sig", - "description": "BIP-340 signature of the *node_id* on this offer" - }, - "chains": { + "offer_chains": { "type": "array", "description": "which blockchains this offer is for (missing implies bitcoin mainnet only)", "items": { @@ -74,58 +66,53 @@ "minLength": 64 } }, - "currency": { + "offer_metadata": { + "type": "hex", + "description": "any metadata the creater of the offer includes" + }, + "offer_currency": { "type": "string", "description": "ISO 4217 code of the currency (missing implies Bitcoin)", "maxLength": 3, "minLength": 3 }, - "minor_unit": { + "warning_unknown_offer_currency": { + "type": "string", + "description": "The currency code is unknown (so no `currency_minor_unit`)" + }, + "currency_minor_unit": { "type": "u32", "description": "the number of decimal places to apply to amount (if currency known)" }, - "warning_offer_unknown_currency": { - "type": "string", - "description": "The currency code is unknown (so no **minor_unit**)" - }, - "amount": { + "offer_amount": { "type": "u64", - "description": "the amount in the *currency* adjusted by *minor_unit*, if any" + "description": "the amount in the `offer_currency` adjusted by `currency_minor_unit`, if any" }, - "amount_msat": { + "offer_amount_msat": { "type": "msat", - "description": "the amount in bitcoin (if specified, and no *currency*)" - }, - "send_invoice": { - "type": "boolean", - "description": "present if this is a send_invoice offer", - "enum": [ - true - ] - }, - "refund_for": { - "type": "hex", - "description": "the *payment_preimage* of invoice this is a refund for", - "maxLength": 64, - "minLength": 64 + "description": "the amount in bitcoin (if specified, and no `offer_currency`)" }, - "description": { + "offer_description": { "type": "string", "description": "the description of the purpose of the offer" }, - "vendor": { + "offer_issuer": { "type": "string", - "description": "the name of the vendor for this offer" + "description": "the description of the creator of the offer" }, - "features": { + "offer_features": { "type": "hex", - "description": "the array of feature bits for this offer" + "description": "the feature bits of the offer" }, - "absolute_expiry": { + "offer_absolute_expiry": { "type": "u64", "description": "UNIX timestamp of when this offer expires" }, - "paths": { + "offer_quantity_max": { + "type": "u64", + "description": "the maximum quantity (or, if 0, means any quantity)" + }, + "offer_paths": { "type": "array", "description": "Paths to the destination", "items": { @@ -170,11 +157,11 @@ } } }, - "quantity_max": { - "type": "u64", - "description": "the maximum quantity (or, if 0, means any quantity)" + "offer_node_id": { + "type": "pubkey", + "description": "public key of the offering node" }, - "recurrence": { + "offer_recurrence": { "type": "object", "description": "how often to this offer should be used", "required": [ @@ -189,11 +176,11 @@ }, "time_unit_name": { "type": "string", - "description": "the name of *time_unit* (if valid)" + "description": "the name of `time_unit` (if valid)" }, "period": { "type": "u32", - "description": "how many *time_unit* per payment period" + "description": "how many `time_unit` per payment period" }, "basetime": { "type": "u64", @@ -201,7 +188,7 @@ }, "start_any_period": { "type": "u64", - "description": "you can start at any period (only if **basetime** present)" + "description": "you can start at any period (only if `basetime` present)" }, "limit": { "type": "u32", @@ -267,11 +254,10 @@ "chains": {}, "currency": {}, "minor_unit": {}, - "warning_offer_unknown_currency": {}, + "warning_unknown_offer_currency": {}, "amount": {}, "amount_msat": {}, "send_invoice": {}, - "refund_for": {}, "description": {}, "vendor": {}, "features": {}, @@ -279,9 +265,25 @@ "paths": {}, "quantity_max": {}, "recurrence": {}, - "warning_offer_missing_description": { + "warning_missing_offer_node_id": { "type": "string", - "description": "No **description**" + "description": "`offer_node_id` is not present" + }, + "warning_invalid_offer_description": { + "type": "string", + "description": "`offer_description` is not valid UTF8" + }, + "warning_missing_offer_description": { + "type": "string", + "description": "`offer_description` is not present" + }, + "warning_invalid_offer_currency": { + "type": "string", + "description": "`offer_currency_code` is not valid UTF8" + }, + "warning_invalid_offer_issuer": { + "type": "string", + "description": "`offer_issuer` is not valid UTF8" } } } @@ -292,7 +294,7 @@ "type": { "type": "string", "enum": [ - "bolt12 invoice" + "bolt12 invoice_request" ] }, "valid": { @@ -305,13 +307,11 @@ }, "then": { "required": [ - "node_id", - "signature", - "amount_msat", - "description", - "created_at", - "payment_hash", - "relative_expiry" + "offer_node_id", + "offer_description", + "invreq_metadata", + "invreq_payer_id", + "signature" ], "additionalProperties": false, "properties": { @@ -319,54 +319,67 @@ "valid": {}, "offer_id": { "type": "hex", - "description": "the id of this offer (merkle hash of non-signature fields)", + "description": "the id we use to identify this offer", "maxLength": 64, "minLength": 64 }, - "node_id": { - "type": "pubkey", - "description": "public key of the offering node" - }, - "signature": { - "type": "bip340sig", - "description": "BIP-340 signature of the *node_id* on this invoice" + "offer_chains": { + "type": "array", + "description": "which blockchains this offer is for (missing implies bitcoin mainnet only)", + "items": { + "type": "hex", + "description": "the genesis blockhash", + "maxLength": 64, + "minLength": 64 + } }, - "chain": { + "offer_metadata": { "type": "hex", - "description": "which blockchain this invoice is for (missing implies bitcoin mainnet only)", - "maxLength": 64, - "minLength": 64 + "description": "any metadata the creator of the offer includes" }, - "amount_msat": { - "type": "msat", - "description": "the amount in bitcoin" + "offer_currency": { + "type": "string", + "description": "ISO 4217 code of the currency (missing implies Bitcoin)", + "maxLength": 3, + "minLength": 3 }, - "send_invoice": { - "type": "boolean", - "description": "present if this offer was a send_invoice offer", - "enum": [ - true - ] + "warning_unknown_offer_currency": { + "type": "string", + "description": "The currency code is unknown (so no `currency_minor_unit`)" }, - "refund_for": { - "type": "hex", - "description": "the *payment_preimage* of invoice this is a refund for", - "maxLength": 64, - "minLength": 64 + "currency_minor_unit": { + "type": "u32", + "description": "the number of decimal places to apply to amount (if currency known)" }, - "description": { + "offer_amount": { + "type": "u64", + "description": "the amount in the `offer_currency` adjusted by `currency_minor_unit`, if any" + }, + "offer_amount_msat": { + "type": "msat", + "description": "the amount in bitcoin (if specified, and no `offer_currency`)" + }, + "offer_description": { "type": "string", "description": "the description of the purpose of the offer" }, - "vendor": { + "offer_issuer": { "type": "string", - "description": "the name of the vendor for this offer" + "description": "the description of the creator of the offer" }, - "features": { + "offer_features": { "type": "hex", - "description": "the array of feature bits for this offer" + "description": "the feature bits of the offer" + }, + "offer_absolute_expiry": { + "type": "u64", + "description": "UNIX timestamp of when this offer expires" + }, + "offer_quantity_max": { + "type": "u64", + "description": "the maximum quantity (or, if 0, means any quantity)" }, - "paths": { + "offer_paths": { "type": "array", "description": "Paths to the destination", "items": { @@ -404,22 +417,6 @@ "encrypted_recipient_data": { "type": "hex", "description": "encrypted TLV entry for this hop" - }, - "fee_base_msat": { - "type": "msat", - "description": "base fee for the entire path" - }, - "fee_proportional_millionths": { - "type": "u32", - "description": "proportional fee for the entire path" - }, - "cltv_expiry_delta": { - "type": "u32", - "description": "total CLTV delta across path" - }, - "features": { - "type": "hex", - "description": "Features allowed/required for this path" } } } @@ -427,76 +424,112 @@ } } }, - "quantity": { - "type": "u64", - "description": "the quantity ordered" - }, - "recurrence_counter": { - "type": "u32", - "description": "the 0-based counter for a recurring payment" - }, - "recurrence_start": { - "type": "u32", - "description": "the optional start period for a recurring payment" - }, - "recurrence_basetime": { - "type": "u32", - "description": "the UNIX timestamp of the first recurrence period start" - }, - "payer_key": { + "offer_node_id": { "type": "pubkey", - "description": "the transient key which identifies the payer" + "description": "public key of the offering node" + }, + "offer_recurrence": { + "type": "object", + "description": "how often to this offer should be used", + "required": [ + "period", + "time_unit" + ], + "additionalProperties": false, + "properties": { + "time_unit": { + "type": "u32", + "description": "the BOLT12 time unit" + }, + "time_unit_name": { + "type": "string", + "description": "the name of `time_unit` (if valid)" + }, + "period": { + "type": "u32", + "description": "how many `time_unit` per payment period" + }, + "basetime": { + "type": "u64", + "description": "period starts at this UNIX timestamp" + }, + "start_any_period": { + "type": "u64", + "description": "you can start at any period (only if `basetime` present)" + }, + "limit": { + "type": "u32", + "description": "maximum period number for recurrence" + }, + "paywindow": { + "type": "object", + "description": "when within a period will payment be accepted (default is prior and during the period)", + "required": [ + "seconds_before", + "seconds_after" + ], + "additionalProperties": false, + "properties": { + "seconds_before": { + "type": "u32", + "description": "seconds prior to period start" + }, + "seconds_after": { + "type": "u32", + "description": "seconds after to period start" + }, + "proportional_amount": { + "type": "boolean", + "enum": [ + true + ], + "description": "amount should be scaled if payed after period start" + } + } + } + } }, "invreq_metadata": { "type": "hex", - "description": "the payer-provided blob to derive payer_key" - }, - "timestamp": { - "deprecated": true + "description": "the payer-provided blob to derive invreq_payer_id" }, - "created_at": { - "type": "u64", - "description": "the UNIX timestamp of invoice creation" + "invreq_payer_id": { + "type": "hex", + "description": "the payer-provided key" }, - "payment_hash": { + "invreq_chain": { "type": "hex", - "description": "the hash of the *payment_preimage*", + "description": "which blockchain this offer is for (missing implies bitcoin mainnet only)", "maxLength": 64, "minLength": 64 }, - "relative_expiry": { + "invreq_amount_msat": { + "type": "msat", + "description": "the amount the invoice should be for" + }, + "invreq_features": { + "type": "hex", + "description": "the feature bits of the invoice_request" + }, + "invreq_quantity": { + "type": "u64", + "description": "the number of items to invoice for" + }, + "invreq_payer_note": { + "type": "string", + "description": "a note attached by the payer" + }, + "invreq_recurrence_counter": { "type": "u32", - "description": "the number of seconds after *created_at* when this expires" + "description": "which number request this is for the same invoice" }, - "fallbacks": { - "type": "array", - "description": "onchain addresses", - "items": { - "type": "object", - "required": [ - "version", - "hex" - ], - "additionalProperties": false, - "properties": { - "version": { - "type": "u8", - "description": "Segwit address version" - }, - "hex": { - "type": "hex", - "description": "Raw encoded segwit address" - }, - "address": { - "type": "string", - "description": "bech32 segwit address" - } - } - } + "invreq_recurrence_start": { + "type": "u32", + "description": "when we're requesting to start an invoice at a non-zero period" }, - "refund_signature": { + "signature": { "type": "bip340sig", - "description": "the payer key signature to get a refund" + "description": "BIP-340 signature of the `invreq_payer_id` on this invoice_request" } } } @@ -507,7 +540,7 @@ "type": { "type": "string", "enum": [ - "bolt12 invoice" + "bolt12 invoice_request" ] }, "valid": { @@ -525,85 +558,65 @@ "type": {}, "valid": {}, "offer_id": {}, - "node_id": {}, - "signature": {}, - "chain": {}, - "amount_msat": {}, - "send_invoice": {}, - "refund_for": {}, - "description": {}, - "vendor": {}, - "features": {}, - "paths": {}, - "quantity": {}, - "recurrence_counter": {}, - "recurrence_start": {}, - "recurrence_basetime": {}, - "payer_key": {}, + "offer_chains": {}, + "offer_metadata": {}, + "offer_currency": {}, + "warning_unknown_offer_currency": {}, + "currency_minor_unit": {}, + "offer_amount": {}, + "offer_amount_msat": {}, + "offer_description": {}, + "offer_issuer": {}, + "offer_features": {}, + "offer_absolute_expiry": {}, + "offer_quantity_max": {}, + "offer_paths": {}, + "offer_node_id": {}, + "offer_recurrence": {}, "invreq_metadata": {}, - "timestamp": {}, - "created_at": {}, - "payment_hash": {}, - "relative_expiry": {}, - "fallbacks": { - "type": "array", - "items": { - "type": "object", - "required": [ - "version", - "hex" - ], - "properties": { - "version": {}, - "hex": {}, - "address": {}, - "warning_invoice_fallbacks_version_invalid": { - "type": "string", - "description": "**version** is > 16" - } - } - } - }, - "refund_signature": {}, - "warning_invoice_missing_amount": { - "type": "string", - "description": "**amount_msat* missing" - }, - "warning_invoice_missing_description": { + "invreq_payer_id": {}, + "invreq_chain": {}, + "invreq_amount_msat": {}, + "invreq_features": {}, + "invreq_quantity": {}, + "invreq_payer_note": {}, + "invreq_recurrence_counter": {}, + "invreq_recurrence_start": {}, + "warning_invalid_offer_description": { "type": "string", - "description": "No **description**" + "description": "`offer_description` is not valid UTF8" }, - "warning_invoice_missing_blinded_payinfo": { + "warning_missing_offer_description": { "type": "string", - "description": "Has **paths** without payinfo" + "description": "`offer_description` is not present" }, - "warning_invoice_invalid_blinded_payinfo": { + "warning_invalid_offer_currency": { "type": "string", - "description": "Does not have exactly one payinfo for each of **paths**" + "description": "`offer_currency_code` is not valid UTF8" }, - "warning_invoice_missing_recurrence_basetime": { + "warning_invalid_offer_issuer": { "type": "string", - "description": "Has **recurrence_counter** without **recurrence_basetime**" + "description": "`offer_issuer` is not valid UTF8" }, - "warning_invoice_missing_created_at": { + "warning_missing_invreq_metadata": { "type": "string", - "description": "Missing **created_at**" + "description": "`invreq_metadata` is not present" }, - "warning_invoice_missing_payment_hash": { + "warning_missing_invreq_payer_id": { "type": "string", - "description": "Missing **payment_hash**" + "description": "`invreq_payer_id` is not present" }, - "warning_invoice_refund_signature_missing_payer_key": { + "warning_invalid_invreq_payer_note": { "type": "string", - "description": "Missing **payer_key** for refund_signature" + "description": "`invreq_payer_note` is not valid UTF8" }, - "warning_invoice_refund_signature_invalid": { + "warning_missing_invoice_request_signature": { "type": "string", - "description": "**refund_signature** incorrect" + "description": "`signature` is not present" }, - "warning_invoice_refund_missing_signature": { + "warning_invalid_invoice_request_signature": { "type": "string", - "description": "No **refund_signature**" + "description": "Incorrect `signature`" } } } @@ -614,7 +627,7 @@ "type": { "type": "string", "enum": [ - "bolt12 invoice_request" + "bolt12 invoice" ] }, "valid": { @@ -627,8 +640,15 @@ }, "then": { "required": [ - "offer_id", - "payer_key" + "offer_node_id", + "offer_description", + "invreq_metadata", + "invreq_payer_id", + "invoice_paths", + "invoice_created_at", + "invoice_payment_hash", + "invoice_amount_msat", + "signature" ], "additionalProperties": false, "properties": { @@ -636,47 +656,334 @@ "valid": {}, "offer_id": { "type": "hex", - "description": "the id of the offer this is requesting (merkle hash of non-signature fields)", + "description": "the id we use to identify this offer", "maxLength": 64, "minLength": 64 }, - "chain": { + "offer_chains": { + "type": "array", + "description": "which blockchains this offer is for (missing implies bitcoin mainnet only)", + "items": { + "type": "hex", + "description": "the genesis blockhash", + "maxLength": 64, + "minLength": 64 + } + }, + "offer_metadata": { "type": "hex", - "description": "which blockchain this invoice_request is for (missing implies bitcoin mainnet only)", - "maxLength": 64, - "minLength": 64 + "description": "any metadata the creator of the offer includes" }, - "amount_msat": { - "type": "msat", - "description": "the amount in bitcoin" + "offer_currency": { + "type": "string", + "description": "ISO 4217 code of the currency (missing implies Bitcoin)", + "maxLength": 3, + "minLength": 3 }, - "features": { + "warning_unknown_offer_currency": { + "type": "string", + "description": "The currency code is unknown (so no `currency_minor_unit`)" + }, + "currency_minor_unit": { + "type": "u32", + "description": "the number of decimal places to apply to amount (if currency known)" + }, + "offer_amount": { + "type": "u64", + "description": "the amount in the `offer_currency` adjusted by `currency_minor_unit`, if any" + }, + "offer_amount_msat": { + "type": "msat", + "description": "the amount in bitcoin (if specified, and no `offer_currency`)" + }, + "offer_description": { + "type": "string", + "description": "the description of the purpose of the offer" + }, + "offer_issuer": { + "type": "string", + "description": "the description of the creator of the offer" + }, + "offer_features": { "type": "hex", - "description": "the array of feature bits for this offer" + "description": "the feature bits of the offer" }, - "quantity": { + "offer_absolute_expiry": { "type": "u64", - "description": "the quantity ordered" + "description": "UNIX timestamp of when this offer expires" }, - "recurrence_counter": { - "type": "u32", - "description": "the 0-based counter for a recurring payment" + "offer_quantity_max": { + "type": "u64", + "description": "the maximum quantity (or, if 0, means any quantity)" }, - "recurrence_start": { - "type": "u32", - "description": "the optional start period for a recurring payment" + "offer_paths": { + "type": "array", + "description": "Paths to the destination", + "items": { + "type": "object", + "required": [ + "first_node_id", + "blinding", + "path" + ], + "additionalProperties": false, + "properties": { + "first_node_id": { + "type": "pubkey", + "description": "the (presumably well-known) public key of the start of the path" + }, + "blinding": { + "type": "pubkey", + "description": "blinding factor for this path" + }, + "path": { + "type": "array", + "description": "an individual path", + "items": { + "type": "object", + "required": [ + "blinded_node_id", + "encrypted_recipient_data" + ], + "additionalProperties": false, + "properties": { + "blinded_node_id": { + "type": "pubkey", + "description": "node_id of the hop" + }, + "encrypted_recipient_data": { + "type": "hex", + "description": "encrypted TLV entry for this hop" + } + } + } + } + } + } }, - "payer_key": { + "offer_node_id": { "type": "pubkey", - "description": "the transient key which identifies the payer" + "description": "public key of the offering node" + }, + "offer_recurrence": { + "type": "object", + "description": "how often to this offer should be used", + "required": [ + "period", + "time_unit" + ], + "additionalProperties": false, + "properties": { + "time_unit": { + "type": "u32", + "description": "the BOLT12 time unit" + }, + "time_unit_name": { + "type": "string", + "description": "the name of `time_unit` (if valid)" + }, + "period": { + "type": "u32", + "description": "how many `time_unit` per payment period" + }, + "basetime": { + "type": "u64", + "description": "period starts at this UNIX timestamp" + }, + "start_any_period": { + "type": "u64", + "description": "you can start at any period (only if `basetime` present)" + }, + "limit": { + "type": "u32", + "description": "maximum period number for recurrence" + }, + "paywindow": { + "type": "object", + "description": "when within a period will payment be accepted (default is prior and during the period)", + "required": [ + "seconds_before", + "seconds_after" + ], + "additionalProperties": false, + "properties": { + "seconds_before": { + "type": "u32", + "description": "seconds prior to period start" + }, + "seconds_after": { + "type": "u32", + "description": "seconds after to period start" + }, + "proportional_amount": { + "type": "boolean", + "enum": [ + true + ], + "description": "amount should be scaled if payed after period start" + } + } + } + } }, "invreq_metadata": { "type": "hex", - "description": "the payer-provided blob to derive payer_key" + "description": "the payer-provided blob to derive invreq_payer_id" + }, + "invreq_payer_id": { + "type": "hex", + "description": "the payer-provided key" + }, + "invreq_chain": { + "type": "hex", + "description": "which blockchain this offer is for (missing implies bitcoin mainnet only)", + "maxLength": 64, + "minLength": 64 + }, + "invreq_amount_msat": { + "type": "msat", + "description": "the amount the invoice should be for" + }, + "invreq_features": { + "type": "hex", + "description": "the feature bits of the invoice_request" + }, + "invreq_quantity": { + "type": "u64", + "description": "the number of items to invoice for" + }, + "invreq_payer_note": { + "type": "string", + "description": "a note attached by the payer" + }, + "invreq_recurrence_counter": { + "type": "u32", + "description": "which number request this is for the same invoice" + }, + "invreq_recurrence_start": { + "type": "u32", + "description": "when we're requesting to start an invoice at a non-zero period" + }, + "invoice_paths": { + "type": "array", + "description": "Paths to pay the destination", + "items": { + "type": "object", + "required": [ + "first_node_id", + "blinding", + "path" + ], + "additionalProperties": false, + "properties": { + "first_node_id": { + "type": "pubkey", + "description": "the (presumably well-known) public key of the start of the path" + }, + "blinding": { + "type": "pubkey", + "description": "blinding factor for this path" + }, + "path": { + "type": "array", + "description": "an individual path", + "items": { + "type": "object", + "required": [ + "blinded_node_id", + "encrypted_recipient_data" + ], + "additionalProperties": false, + "properties": { + "blinded_node_id": { + "type": "pubkey", + "description": "node_id of the hop" + }, + "encrypted_recipient_data": { + "type": "hex", + "description": "encrypted TLV entry for this hop" + }, + "fee_base_msat": { + "type": "msat", + "description": "basefee for path" + }, + "fee_proportional_millionths": { + "type": "u32", + "description": "proportional fee for path" + }, + "cltv_expiry_delta": { + "type": "u32", + "description": "CLTV delta for path" + }, + "features": { + "type": "hex", + "description": "features allowed for path" + } + } + } + } + } + } + }, + "invoice_created_at": { + "type": "u64", + "description": "the UNIX timestamp of invoice creation" + }, + "invoice_relative_expiry": { + "type": "u32", + "description": "the number of seconds after *invoice_created_at* when this expires" + }, + "invoice_payment_hash": { + "type": "hex", + "description": "the hash of the *payment_preimage*", + "maxLength": 64, + "minLength": 64 }, - "recurrence_signature": { + "invoice_amount_msat": { + "type": "msat", + "description": "the amount required to fulfill invoice" + }, + "invoice_fallbacks": { + "type": "array", + "description": "onchain addresses", + "items": { + "type": "object", + "required": [ + "version", + "hex" + ], + "additionalProperties": false, + "properties": { + "version": { + "type": "u8", + "description": "Segwit address version" + }, + "hex": { + "type": "hex", + "description": "Raw encoded segwit address" + }, + "address": { + "type": "string", + "description": "bech32 segwit address" + } + } + } + }, + "invoice_features": { + "type": "hex", + "description": "the feature bits of the invoice" + }, + "invoice_node_id": { + "type": "pubkey", + "description": "the id to pay (usually the same as offer_node_id)" + }, + "invoice_recurrence_basetime": { + "type": "u64", + "description": "the UNIX timestamp to base the invoice periods on" + }, + "signature": { "type": "bip340sig", - "description": "the payer key signature" + "description": "BIP-340 signature of the `offer_node_id` on this invoice" } } } @@ -687,7 +994,7 @@ "type": { "type": "string", "enum": [ - "bolt12 invoice_request" + "bolt12 invoice" ] }, "valid": { @@ -705,30 +1012,109 @@ "type": {}, "valid": {}, "offer_id": {}, - "chain": {}, - "amount_msat": {}, - "features": {}, - "quantity": {}, - "recurrence_counter": {}, - "recurrence_start": {}, - "payer_key": {}, + "offer_chains": {}, + "offer_metadata": {}, + "offer_currency": {}, + "warning_unknown_offer_currency": {}, + "currency_minor_unit": {}, + "offer_amount": {}, + "offer_amount_msat": {}, + "offer_description": {}, + "offer_issuer": {}, + "offer_features": {}, + "offer_absolute_expiry": {}, + "offer_quantity_max": {}, + "offer_paths": {}, + "offer_node_id": {}, + "offer_recurrence": {}, "invreq_metadata": {}, - "recurrence_signature": {}, - "warning_invoice_request_missing_offer_id": { + "invreq_payer_id": {}, + "invreq_chain": {}, + "invreq_amount_msat": {}, + "invreq_features": {}, + "invreq_quantity": {}, + "invreq_payer_note": {}, + "invreq_node_id": {}, + "invreq_recurrence_counter": {}, + "invreq_recurrence_start": {}, + "warning_invalid_offer_description": { "type": "string", - "description": "No **offer_id**" + "description": "`offer_description` is not valid UTF8" }, - "warning_invoice_request_missing_payer_key": { + "warning_missing_offer_description": { "type": "string", - "description": "No **payer_key**" + "description": "`offer_description` is not present" }, - "warning_invoice_request_missing_recurrence_signature": { + "warning_invalid_offer_currency": { "type": "string", - "description": "No **recurrence_signature**" + "description": "`offer_currency_code` is not valid UTF8" }, - "warning_invoice_request_invalid_recurrence_signature": { + "warning_invalid_offer_issuer": { "type": "string", - "description": "**recurrence_signature** incorrect" + "description": "`offer_issuer` is not valid UTF8" + }, + "warning_missing_invreq_metadata": { + "type": "string", + "description": "`invreq_metadata` is not present" + }, + "warning_invalid_invreq_payer_note": { + "type": "string", + "description": "`invreq_payer_note` is not valid UTF8" + }, + "warning_missing_invoice_paths": { + "type": "string", + "description": "`invoice_paths` is not present" + }, + "warning_missing_invoice_blindedpay": { + "type": "string", + "description": "`invoice_blindedpay` is not present" + }, + "warning_missing_invoice_created_at": { + "type": "string", + "description": "`invoice_created_at` is not present" + }, + "warning_missing_invoice_payment_hash": { + "type": "string", + "description": "`invoice_payment_hash` is not present" + }, + "warning_missing_invoice_amount": { + "type": "string", + "description": "`invoice_amount` is not present" + }, + "warning_missing_invoice_recurrence_basetime": { + "type": "string", + "description": "`invoice_recurrence_basetime` is not present" + }, + "warning_missing_invoice_node_id": { + "type": "string", + "description": "`invoice_node_id` is not present" + }, + "warning_missing_invoice_signature": { + "type": "string", + "description": "`signature` is not present" + }, + "warning_invalid_invoice_signature": { + "type": "string", + "description": "Incorrect `signature`" + }, + "fallbacks": { + "type": "array", + "items": { + "type": "object", + "required": [ + "version", + "hex" + ], + "properties": { + "version": {}, + "hex": {}, + "address": {}, + "warning_invoice_fallbacks_version_invalid": { + "type": "string", + "description": "`version` is > 16" + } + } + } } } } @@ -774,7 +1160,7 @@ }, "expiry": { "type": "u64", - "description": "the number of seconds this is valid after *timestamp*" + "description": "the number of seconds this is valid after `created_at`" }, "payee": { "type": "pubkey", diff --git a/doc/schemas/delinvoice.schema.json b/doc/schemas/delinvoice.schema.json index bbc724807644..0736b331a6c8 100644 --- a/doc/schemas/delinvoice.schema.json +++ b/doc/schemas/delinvoice.schema.json @@ -79,9 +79,9 @@ "type": "hex", "description": "offer for which this invoice was created" }, - "payer_note": { + "invreq_payer_note": { "type": "string", - "description": "the optional *payer_note* from invoice_request which created this invoice" + "description": "the optional *invreq_payer_note* from invoice_request which created this invoice" } } }, @@ -136,7 +136,7 @@ "amount_msat": {}, "description": {}, "payment_hash": {}, - "payer_note": {}, + "invreq_payer_note": {}, "local_offer_id": {}, "pay_index": { "type": "u64", @@ -174,7 +174,7 @@ "payment_hash": {}, "expires_at": {}, "pay_index": {}, - "payer_note": {}, + "invreq_payer_note": {}, "local_offer_id": {} } } diff --git a/doc/schemas/listinvoices.schema.json b/doc/schemas/listinvoices.schema.json index 44054e3bbc1b..b624c91fa1ae 100644 --- a/doc/schemas/listinvoices.schema.json +++ b/doc/schemas/listinvoices.schema.json @@ -66,9 +66,9 @@ "maxLength": 64, "minLength": 64 }, - "payer_note": { + "invreq_payer_note": { "type": "string", - "description": "the optional *payer_note* from invoice_request which created this invoice (**experimental-offers** only)." + "description": "the optional *invreq_payer_note* from invoice_request which created this invoice (**experimental-offers** only)." } }, "allOf": [ @@ -101,7 +101,7 @@ "bolt11": {}, "bolt12": {}, "local_offer_id": {}, - "payer_note": {}, + "invreq_payer_note": {}, "expires_at": {}, "pay_index": { "type": "u64", @@ -138,7 +138,7 @@ "bolt11": {}, "bolt12": {}, "local_offer_id": {}, - "payer_note": {}, + "invreq_payer_note": {}, "expires_at": {} } } diff --git a/lightningd/invoice.c b/lightningd/invoice.c index bd546c79e23a..7b3ec16c9642 100644 --- a/lightningd/invoice.c +++ b/lightningd/invoice.c @@ -70,9 +70,8 @@ static void json_add_invoice_fields(struct json_stream *response, tinv = invoice_decode(tmpctx, inv->invstring, strlen(inv->invstring), NULL, NULL, &fail); - /* FIXME-OFFERS: Rename all fields to offer_ as per spec */ if (tinv && tinv->invreq_payer_note) - json_add_stringn(response, "payer_note", + json_add_stringn(response, "invreq_payer_note", tinv->invreq_payer_note, tal_bytelen(tinv->invreq_payer_note)); } diff --git a/plugins/fetchinvoice.c b/plugins/fetchinvoice.c index 19633f0943e1..20f878b24d49 100644 --- a/plugins/fetchinvoice.c +++ b/plugins/fetchinvoice.c @@ -1136,7 +1136,7 @@ static struct command_result *json_fetchinvoice(struct command *cmd, invreq->invreq_features = plugin_feature_set(cmd->plugin)->bits[BOLT12_OFFER_FEATURE]; - /* invreq->payer_note is not a nul-terminated string! */ + /* invreq->invreq_payer_note is not a nul-terminated string! */ if (payer_note) invreq->invreq_payer_note = tal_dup_arr(invreq, utf8, payer_note, diff --git a/plugins/offers.c b/plugins/offers.c index f26c320c1934..dc7c7d1ad842 100644 --- a/plugins/offers.c +++ b/plugins/offers.c @@ -230,9 +230,10 @@ static struct command_result *param_decodable(struct command *cmd, } static void json_add_chains(struct json_stream *js, + const char *fieldname, const struct bitcoin_blkid *chains) { - json_array_start(js, "chains"); + json_array_start(js, fieldname); for (size_t i = 0; i < tal_count(chains); i++) json_add_sha256(js, NULL, &chains[i].shad.sha); json_array_end(js); @@ -247,7 +248,8 @@ static void json_add_onionmsg_path(struct json_stream *js, json_add_pubkey(js, "blinded_node_id", &hop->blinded_node_id); json_add_hex_talarr(js, "encrypted_recipient_data", hop->encrypted_recipient_data); if (payinfo) { - json_add_u32(js, "fee_base_msat", payinfo->fee_base_msat); + json_add_amount_msat_only(js, "fee_base_msat", + amount_msat(payinfo->fee_base_msat)); json_add_u32(js, "fee_proportional_millionths", payinfo->fee_proportional_millionths); json_add_u32(js, "cltv_expiry_delta", @@ -259,11 +261,12 @@ static void json_add_onionmsg_path(struct json_stream *js, /* Returns true if valid */ static bool json_add_blinded_paths(struct json_stream *js, + const char *fieldname, struct blinded_path **paths, struct blinded_payinfo **blindedpay) { size_t n = 0; - json_array_start(js, "paths"); + json_array_start(js, fieldname); for (size_t i = 0; i < tal_count(paths); i++) { json_object_start(js, NULL); json_add_pubkey(js, "first_node_id", &paths[i]->first_node_id); @@ -286,7 +289,7 @@ static bool json_add_blinded_paths(struct json_stream *js, * `blinded_path`. */ if (blindedpay && n != tal_count(blindedpay)) { - json_add_string(js, "warning_invoice_invalid_blinded_payinfo", + json_add_string(js, "warning_invalid_invoice_blindedpay", "invoice does not have correct number of blinded_payinfo"); return false; } @@ -312,33 +315,57 @@ static const char *recurrence_time_unit_name(u8 time_unit) return NULL; } -static void json_add_offer(struct json_stream *js, const struct tlv_offer *offer) +static bool json_add_utf8(struct json_stream *js, + const char *fieldname, + const char *utf8str) +{ + if (utf8_check(utf8str, tal_bytelen(utf8str))) { + json_add_stringn(js, fieldname, utf8str, tal_bytelen(utf8str)); + return true; + } + json_add_string(js, tal_fmt(tmpctx, "warning_invalid_%s", fieldname), + "invalid UTF8"); + return false; +} + +static bool json_add_offer_fields(struct json_stream *js, + const struct bitcoin_blkid *offer_chains, + const u8 *offer_metadata, + const char *offer_currency, + const u64 *offer_amount, + const char *offer_description, + const u8 *offer_features, + const u64 *offer_absolute_expiry, + struct blinded_path **offer_paths, + const char *offer_issuer, + const u64 *offer_quantity_max, + const struct pubkey *offer_node_id, + const struct recurrence *offer_recurrence, + const struct recurrence_paywindow *offer_recurrence_paywindow, + const u32 *offer_recurrence_limit, + const struct recurrence_base *offer_recurrence_base) { - struct sha256 offer_id; bool valid = true; - /* FIXME-OFFERS: Rename all fields to offer_ as per spec */ - offer_offer_id(offer, &offer_id); - json_add_sha256(js, "offer_id", &offer_id); - if (offer->offer_chains) - json_add_chains(js, offer->offer_chains); - if (offer->offer_currency) { + if (offer_chains) + json_add_chains(js, "offer_chains", offer_chains); + if (offer_metadata) + json_add_hex_talarr(js, "offer_metadata", offer_metadata); + if (offer_currency) { const struct iso4217_name_and_divisor *iso4217; - json_add_stringn(js, "currency", - offer->offer_currency, - tal_bytelen(offer->offer_currency)); - if (offer->offer_amount) - json_add_u64(js, "amount", *offer->offer_amount); - iso4217 = find_iso4217(offer->offer_currency, - tal_bytelen(offer->offer_currency)); + valid &= json_add_utf8(js, "offer_currency", offer_currency); + if (offer_amount) + json_add_u64(js, "offer_amount", *offer_amount); + iso4217 = find_iso4217(offer_currency, + tal_bytelen(offer_currency)); if (iso4217) - json_add_num(js, "minor_unit", iso4217->minor_unit); + json_add_num(js, "currency_minor_unit", iso4217->minor_unit); else - json_add_string(js, "warning_offer_unknown_currency", + json_add_string(js, "warning_unknown_offer_currency", "unknown currency code"); - } else if (offer->offer_amount) - json_add_amount_msat_only(js, "amount_msat", - amount_msat(*offer->offer_amount)); + } else if (offer_amount) + json_add_amount_msat_only(js, "offer_amount_msat", + amount_msat(*offer_amount)); /* BOLT-offers #12: * A reader of an offer: @@ -346,71 +373,153 @@ static void json_add_offer(struct json_stream *js, const struct tlv_offer *offer * - if `offer_description` is not set: * - MUST NOT respond to the offer. */ - if (offer->offer_description) - json_add_stringn(js, "description", - offer->offer_description, - tal_bytelen(offer->offer_description)); + if (offer_description) + valid &= json_add_utf8(js, "offer_description", + offer_description); else { - json_add_string(js, "warning_offer_missing_description", + json_add_string(js, "warning_missing_offer_description", "offers without a description are invalid"); valid = false; } - if (offer->offer_issuer) - json_add_stringn(js, "issuer", offer->offer_issuer, - tal_bytelen(offer->offer_issuer)); - if (offer->offer_features) - json_add_hex_talarr(js, "features", offer->offer_features); - if (offer->offer_absolute_expiry) - json_add_u64(js, "absolute_expiry", - *offer->offer_absolute_expiry); - if (offer->offer_paths) - valid &= json_add_blinded_paths(js, offer->offer_paths, NULL); - - if (offer->offer_quantity_max) - json_add_u64(js, "quantity_max", *offer->offer_quantity_max); - if (offer->offer_recurrence) { + if (offer_issuer) + valid &= json_add_utf8(js, "offer_issuer", offer_issuer); + if (offer_features) + json_add_hex_talarr(js, "offer_features", offer_features); + if (offer_absolute_expiry) + json_add_u64(js, "offer_absolute_expiry", + *offer_absolute_expiry); + if (offer_paths) + valid &= json_add_blinded_paths(js, "offer_paths", + offer_paths, NULL); + + if (offer_quantity_max) + json_add_u64(js, "offer_quantity_max", *offer_quantity_max); + + if (offer_recurrence) { const char *name; - json_object_start(js, "recurrence"); - json_add_num(js, "time_unit", offer->offer_recurrence->time_unit); - name = recurrence_time_unit_name(offer->offer_recurrence->time_unit); + json_object_start(js, "offer_recurrence"); + json_add_num(js, "time_unit", offer_recurrence->time_unit); + name = recurrence_time_unit_name(offer_recurrence->time_unit); if (name) json_add_string(js, "time_unit_name", name); - json_add_num(js, "period", offer->offer_recurrence->period); - if (offer->offer_recurrence_base) { + json_add_num(js, "period", offer_recurrence->period); + if (offer_recurrence_base) { json_add_u64(js, "basetime", - offer->offer_recurrence_base->basetime); - if (offer->offer_recurrence_base->start_any_period) + offer_recurrence_base->basetime); + if (offer_recurrence_base->start_any_period) json_add_bool(js, "start_any_period", true); } - if (offer->offer_recurrence_limit) - json_add_u32(js, "limit", *offer->offer_recurrence_limit); - if (offer->offer_recurrence_paywindow) { + if (offer_recurrence_limit) + json_add_u32(js, "limit", *offer_recurrence_limit); + if (offer_recurrence_paywindow) { json_object_start(js, "paywindow"); json_add_u32(js, "seconds_before", - offer->offer_recurrence_paywindow->seconds_before); + offer_recurrence_paywindow->seconds_before); json_add_u32(js, "seconds_after", - offer->offer_recurrence_paywindow->seconds_after); - if (offer->offer_recurrence_paywindow->proportional_amount) + offer_recurrence_paywindow->seconds_after); + if (offer_recurrence_paywindow->proportional_amount) json_add_bool(js, "proportional_amount", true); json_object_end(js); } json_object_end(js); } + /* Required for offers, *not* for others! */ + if (offer_node_id) + json_add_pubkey(js, "offer_node_id", offer_node_id); + + return valid; +} + +static void json_add_offer(struct json_stream *js, const struct tlv_offer *offer) +{ + struct sha256 offer_id; + bool valid = true; + + offer_offer_id(offer, &offer_id); + json_add_sha256(js, "offer_id", &offer_id); + + valid &= json_add_offer_fields(js, + offer->offer_chains, + offer->offer_metadata, + offer->offer_currency, + offer->offer_amount, + offer->offer_description, + offer->offer_features, + offer->offer_absolute_expiry, + offer->offer_paths, + offer->offer_issuer, + offer->offer_quantity_max, + offer->offer_node_id, + offer->offer_recurrence, + offer->offer_recurrence_paywindow, + offer->offer_recurrence_limit, + offer->offer_recurrence_base); /* BOLT-offers #12: * - if `offer_node_id` is not set: * - MUST NOT respond to the offer. */ - /* FIXME-OFFERS: Rename all fields to offer_ as per spec */ - if (offer->offer_node_id) - json_add_pubkey(js, "node_id", offer->offer_node_id); - else + if (!offer->offer_node_id) { + json_add_string(js, "warning_missing_offer_node_id", + "offers without a node_id are invalid"); valid = false; - + } json_add_bool(js, "valid", valid); } +static bool json_add_invreq_fields(struct json_stream *js, + const u8 *invreq_metadata, + const struct bitcoin_blkid *invreq_chain, + const u64 *invreq_amount, + const u8 *invreq_features, + const u64 *invreq_quantity, + const struct pubkey *invreq_payer_id, + const utf8 *invreq_payer_note, + const u32 *invreq_recurrence_counter, + const u32 *invreq_recurrence_start) +{ + bool valid = true; + + /* BOLT-offers #12: + * - MUST fail the request if `invreq_payer_id` or `invreq_metadata` are not present. + */ + if (invreq_metadata) + json_add_hex_talarr(js, "invreq_metadata", + invreq_metadata); + else { + json_add_string(js, "warning_missing_invreq_metadata", + "invreq_metadata required"); + valid = false; + } + + /* This can be missing for an invoice though! */ + if (invreq_payer_id) + json_add_pubkey(js, "invreq_payer_id", invreq_payer_id); + + if (invreq_chain) + json_add_sha256(js, "invreq_chain", &invreq_chain->shad.sha); + + if (invreq_amount) + json_add_amount_msat_only(js, "invreq_amount_msat", + amount_msat(*invreq_amount)); + if (invreq_features) + json_add_hex_talarr(js, "invreq_features", invreq_features); + if (invreq_quantity) + json_add_u64(js, "invreq_quantity", *invreq_quantity); + if (invreq_payer_note) + valid &= json_add_utf8(js, "invreq_payer_note", invreq_payer_note); + if (invreq_recurrence_counter) { + json_add_u32(js, "invreq_recurrence_counter", + *invreq_recurrence_counter); + if (invreq_recurrence_start) + json_add_u32(js, "invreq_recurrence_start", + *invreq_recurrence_start); + } + + return valid; +} + /* Returns true if valid */ static bool json_add_fallback_address(struct json_stream *js, const struct chainparams *chain, @@ -425,7 +534,7 @@ static bool json_add_fallback_address(struct json_stream *js, return true; } json_add_string(js, - "warning_invoice_fallbacks_address_invalid", + "warning_invalid_invoice_fallbacks_address", "invalid fallback address for this version"); return false; } @@ -444,7 +553,7 @@ static bool json_add_fallbacks(struct json_stream *js, else chain = chainparams_for_network("bitcoin"); - json_array_start(js, "fallbacks"); + json_array_start(js, "invoice_fallbacks"); for (size_t i = 0; i < tal_count(fallbacks); i++) { size_t addrlen = tal_bytelen(fallbacks[i]->address); @@ -463,12 +572,12 @@ static bool json_add_fallbacks(struct json_stream *js, */ if (fallbacks[i]->version > 16) { json_add_string(js, - "warning_invoice_fallbacks_version_invalid", + "warning_invalid_invoice_fallbacks_version", "invoice fallback version > 16"); valid = false; } else if (addrlen < 2 || addrlen > 40) { json_add_string(js, - "warning_invoice_fallbacks_address_invalid", + "warning_invalid_invoice_fallbacks_address", "invoice fallback address bad length"); valid = false; } else if (chain) { @@ -483,79 +592,121 @@ static bool json_add_fallbacks(struct json_stream *js, return valid; } -static void json_add_b12_invoice(struct json_stream *js, - const struct tlv_invoice *invoice) +static void json_add_invoice_request(struct json_stream *js, + const struct tlv_invoice_request *invreq) { bool valid = true; /* If there's an offer_node_id, then there's an offer. */ - if (invoice->offer_node_id) { + if (invreq->offer_node_id) { struct sha256 offer_id; - invoice_offer_id(invoice, &offer_id); + invreq_offer_id(invreq, &offer_id); json_add_sha256(js, "offer_id", &offer_id); } - /* FIXME-OFFERS: Rename all fields to invoice_ as per spec */ - if (invoice->invreq_chain) - json_add_sha256(js, "chain", &invoice->invreq_chain->shad.sha); + valid &= json_add_offer_fields(js, + invreq->offer_chains, + invreq->offer_metadata, + invreq->offer_currency, + invreq->offer_amount, + invreq->offer_description, + invreq->offer_features, + invreq->offer_absolute_expiry, + invreq->offer_paths, + invreq->offer_issuer, + invreq->offer_quantity_max, + invreq->offer_node_id, + invreq->offer_recurrence, + invreq->offer_recurrence_paywindow, + invreq->offer_recurrence_limit, + invreq->offer_recurrence_base); + valid &= json_add_invreq_fields(js, + invreq->invreq_metadata, + invreq->invreq_chain, + invreq->invreq_amount, + invreq->invreq_features, + invreq->invreq_quantity, + invreq->invreq_payer_id, + invreq->invreq_payer_note, + invreq->invreq_recurrence_counter, + invreq->invreq_recurrence_start); /* BOLT-offers #12: - * - MUST reject the invoice if `invoice_amount` is not present. - * - MUST reject the invoice if `invreq_payer_id` is not present. + * - MUST fail the request if `invreq_payer_id` or `invreq_metadata` are not present. */ - if (invoice->invoice_amount) - json_add_amount_msat_only(js, "amount_msat", - amount_msat(*invoice->invoice_amount)); - else { - json_add_string(js, "warning_invoice_missing_amount", - "invoices without an amount are invalid"); - valid = false; - } - - if (invoice->invreq_payer_id) - json_add_pubkey(js, "payer_key", invoice->invreq_payer_id); - else { - json_add_string(js, "warning_invoice_missing_invreq_payer_id", - "invoices without an invreq_payer_id are invald"); + if (!invreq->invreq_payer_id) { + json_add_string(js, "warning_missing_invreq_payer_id", + "invreq_payer_id required"); valid = false; } /* BOLT-offers #12: - * - MUST reject the invoice if `offer_description` is not present. - * - MUST reject the invoice if `invoice_created_at` is not present. - * - MUST reject the invoice if `invoice_payment_hash` is not present. + * - MUST fail the request if `signature` is not correct as detailed + * in [Signature Calculation](#signature-calculation) using the + * `invreq_payer_id`. */ - if (invoice->offer_description) - json_add_stringn(js, "description", invoice->offer_description, - tal_bytelen(invoice->offer_description)); - else { - json_add_string(js, "warning_invoice_missing_description", - "invoices without a description are invalid"); - valid = false; - } - - if (invoice->invoice_created_at) { - json_add_u64(js, "created_at", *invoice->invoice_created_at); + if (invreq->signature) { + if (invreq->invreq_payer_id + && !bolt12_check_signature(invreq->fields, + "invoice_request", + "signature", + invreq->invreq_payer_id, + invreq->signature)) { + json_add_string(js, "warning_invalid_invoice_request_signature", + "Bad signature"); + valid = false; + } else { + json_add_bip340sig(js, "signature", invreq->signature); + } } else { - json_add_string(js, "warning_invoice_missing_created_at", - "invoices without created_at are invalid"); + json_add_string(js, "warning_missing_invoice_request_signature", + "Missing signature"); valid = false; } - if (invoice->invoice_payment_hash) - json_add_sha256(js, "payment_hash", invoice->invoice_payment_hash); - else { - json_add_string(js, "warning_invoice_missing_payment_hash", - "invoices without a payment_hash are invalid"); - valid = false; + json_add_bool(js, "valid", valid); +} + +static void json_add_b12_invoice(struct json_stream *js, + const struct tlv_invoice *invoice) +{ + bool valid = true; + + /* If there's an offer_node_id, then there's an offer. */ + if (invoice->offer_node_id) { + struct sha256 offer_id; + + invoice_offer_id(invoice, &offer_id); + json_add_sha256(js, "offer_id", &offer_id); } - if (invoice->offer_issuer) - json_add_stringn(js, "issuer", invoice->offer_issuer, - tal_bytelen(invoice->offer_issuer)); - if (invoice->invoice_features) - json_add_hex_talarr(js, "features", invoice->invoice_features); + valid &= json_add_offer_fields(js, + invoice->offer_chains, + invoice->offer_metadata, + invoice->offer_currency, + invoice->offer_amount, + invoice->offer_description, + invoice->offer_features, + invoice->offer_absolute_expiry, + invoice->offer_paths, + invoice->offer_issuer, + invoice->offer_quantity_max, + invoice->offer_node_id, + invoice->offer_recurrence, + invoice->offer_recurrence_paywindow, + invoice->offer_recurrence_limit, + invoice->offer_recurrence_base); + valid &= json_add_invreq_fields(js, + invoice->invreq_metadata, + invoice->invreq_chain, + invoice->invreq_amount, + invoice->invreq_features, + invoice->invreq_quantity, + invoice->invreq_payer_id, + invoice->invreq_payer_note, + invoice->invreq_recurrence_counter, + invoice->invreq_recurrence_start); /* BOLT-offers #12: * - MUST reject the invoice if `invoice_paths` is not present @@ -574,48 +725,27 @@ static void json_add_b12_invoice(struct json_stream *js, * in `blinded_path`. */ if (!invoice->invoice_blindedpay) { - json_add_string(js, "warning_invoice_missing_blinded_payinfo", - "invoices with blinded_path without blinded_payinfo are invalid"); + json_add_string(js, "warning_missing_invoice_blindedpay", + "invoices with paths without blindedpay are invalid"); valid = false; } - valid &= json_add_blinded_paths(js, invoice->invoice_paths, + valid &= json_add_blinded_paths(js, "invoice_paths", + invoice->invoice_paths, invoice->invoice_blindedpay); } else { - json_add_string(js, "warning_invoice_missing_blinded_path", - "invoices without a payment_hash are invalid"); + json_add_string(js, "warning_missing_invoice_paths", + "invoices without a invoice_paths are invalid"); valid = false; } - if (invoice->invreq_quantity) - json_add_u64(js, "quantity", *invoice->invreq_quantity); - if (invoice->invreq_recurrence_counter) { - json_add_u32(js, "recurrence_counter", - *invoice->invreq_recurrence_counter); - if (invoice->invreq_recurrence_start) - json_add_u32(js, "recurrence_start", - *invoice->invreq_recurrence_start); - /* BOLT-offers-recurrence #12: - * - if the offer contained `recurrence`: - * - MUST reject the invoice if `recurrence_basetime` is not - * set. - */ - if (invoice->invoice_recurrence_basetime) - json_add_u64(js, "recurrence_basetime", - *invoice->invoice_recurrence_basetime); - else { - json_add_string(js, "warning_invoice_missing_recurrence_basetime", - "recurring invoices without a recurrence_basetime are invalid"); - valid = false; - } + if (invoice->invoice_created_at) { + json_add_u64(js, "invoice_created_at", *invoice->invoice_created_at); + } else { + json_add_string(js, "warning_missing_invoice_created_at", + "invoices without created_at are invalid"); + valid = false; } - if (invoice->invreq_metadata) - json_add_hex_talarr(js, "invreq_metadata", - invoice->invreq_metadata); - if (invoice->invreq_payer_note) - json_add_stringn(js, "payer_note", invoice->invreq_payer_note, - tal_bytelen(invoice->invreq_payer_note)); - /* BOLT-offers #12: * * - if `invoice_relative_expiry` is present: @@ -626,104 +756,65 @@ static void json_add_b12_invoice(struct json_stream *js, * is greater than `invoice_created_at` plus 7200. */ if (invoice->invoice_relative_expiry) - json_add_u32(js, "relative_expiry", *invoice->invoice_relative_expiry); + json_add_u32(js, "invoice_relative_expiry", *invoice->invoice_relative_expiry); else - json_add_u32(js, "relative_expiry", 7200); - - if (invoice->invoice_fallbacks) - valid &= json_add_fallbacks(js, - invoice->invreq_chain, - invoice->invoice_fallbacks); - - /* invoice_decode checked these */ - json_add_pubkey(js, "node_id", invoice->offer_node_id); - json_add_bip340sig(js, "signature", invoice->signature); - - json_add_bool(js, "valid", valid); -} + json_add_u32(js, "invoice_relative_expiry", BOLT12_DEFAULT_REL_EXPIRY); -static void json_add_invoice_request(struct json_stream *js, - const struct tlv_invoice_request *invreq) -{ - bool valid = true; - - /* If there's an offer_node_id, then there's an offer. */ - if (invreq->offer_node_id) { - struct sha256 offer_id; - - invreq_offer_id(invreq, &offer_id); - json_add_sha256(js, "offer_id", &offer_id); + if (invoice->invoice_payment_hash) + json_add_sha256(js, "invoice_payment_hash", invoice->invoice_payment_hash); + else { + json_add_string(js, "warning_missing_invoice_payment_hash", + "invoices without a payment_hash are invalid"); + valid = false; } - /* FIXME-OFFERS: Rename all fields to invreq_ as per spec */ - if (invreq->invreq_chain) - json_add_sha256(js, "chain", &invreq->invreq_chain->shad.sha); - /* BOLT-offers #12: - * - MUST fail the request if `payer_key` is not present. - *... - * - MUST fail the request if `features` contains unknown even bits. - * - MUST fail the request if `offer_id` is not present. - */ - if (invreq->invreq_amount) - json_add_amount_msat_only(js, "amount_msat", - amount_msat(*invreq->invreq_amount)); - if (invreq->invreq_features) - json_add_hex_talarr(js, "features", invreq->invreq_features); - if (invreq->invreq_quantity) - json_add_u64(js, "quantity", *invreq->invreq_quantity); - - if (invreq->invreq_recurrence_counter) - json_add_u32(js, "recurrence_counter", - *invreq->invreq_recurrence_counter); - if (invreq->invreq_recurrence_start) - json_add_u32(js, "recurrence_start", - *invreq->invreq_recurrence_start); - /* BOLT-offers #12: - * - MUST fail the request if `invreq_payer_id` or `invreq_metadata` - * are not present. + * - MUST reject the invoice if `invoice_amount` is not present. */ - if (invreq->invreq_payer_id) - json_add_pubkey(js, "payer_key", invreq->invreq_payer_id); + if (invoice->invoice_amount) + json_add_amount_msat_only(js, "invoice_amount_msat", + amount_msat(*invoice->invoice_amount)); else { - json_add_string(js, "warning_invoice_request_missing_payer_key", - "invoice_request requires payer_key"); + json_add_string(js, "warning_missing_invoice_amount", + "invoices without an amount are invalid"); valid = false; } - if (invreq->invreq_metadata) - json_add_hex_talarr(js, "invreq_metadata", invreq->invreq_metadata); + + if (invoice->invoice_fallbacks) + valid &= json_add_fallbacks(js, + invoice->invreq_chain, + invoice->invoice_fallbacks); + + if (invoice->invoice_features) + json_add_hex_talarr(js, "features", invoice->invoice_features); + + if (invoice->invoice_node_id) + json_add_pubkey(js, "invoice_node_id", invoice->invoice_node_id); else { - json_add_string(js, "warning_invoice_request_missing_invreq_metadata", - "invoice_request requires invreq_metadata"); + json_add_string(js, "warning_missing_invoice_node_id", + "invoices without an invoice_node_id are invalid"); valid = false; } - if (invreq->invreq_payer_note) - json_add_stringn(js, "payer_note", invreq->invreq_payer_note, - tal_bytelen(invreq->invreq_payer_note)); - - /* BOLT-offers #12: - * - MUST fail the request if `signature` is not correct as detailed - * in [Signature Calculation](#signature-calculation) using the - * `invreq_payer_id`. + /* BOLT-offers-recurrence #12: + * - if the offer contained `recurrence`: + * - MUST reject the invoice if `recurrence_basetime` is not + * set. */ - if (invreq->signature) { - if (invreq->invreq_payer_id - && !bolt12_check_signature(invreq->fields, - "invoice_request", - "signature", - invreq->invreq_payer_id, - invreq->signature)) { - json_add_string(js, "warning_invoice_request_invalid_signature", - "Bad signature"); + if (invoice->offer_recurrence) { + if (invoice->invoice_recurrence_basetime) + json_add_u64(js, "invoice_recurrence_basetime", + *invoice->invoice_recurrence_basetime); + else { + json_add_string(js, "warning_missing_invoice_recurrence_basetime", + "recurring invoices without a recurrence_basetime are invalid"); valid = false; } - } else { - json_add_string(js, "warning_invoice_request_missing_signature", - "Missing signature"); - valid = false; } + /* invoice_decode checked this */ + json_add_bip340sig(js, "signature", invoice->signature); + json_add_bool(js, "valid", valid); } diff --git a/tests/test_pay.py b/tests/test_pay.py index 93c1f07e92a0..5b3dc95de284 100644 --- a/tests/test_pay.py +++ b/tests/test_pay.py @@ -4592,15 +4592,15 @@ def test_fetchinvoice(node_factory, bitcoind): # listinvoices will show these on l3 assert [x['local_offer_id'] for x in l3.rpc.listinvoices()['invoices']] == [offer1['offer_id'], offer1['offer_id']] - assert 'payer_note' not in only_one(l3.rpc.call('listinvoices', {'invstring': inv1['invoice']})['invoices']) - assert only_one(l3.rpc.call('listinvoices', {'invstring': inv2['invoice']})['invoices'])['payer_note'] == 'Thanks for the fish!' + assert 'invreq_payer_note' not in only_one(l3.rpc.call('listinvoices', {'invstring': inv1['invoice']})['invoices']) + assert only_one(l3.rpc.call('listinvoices', {'invstring': inv2['invoice']})['invoices'])['invreq_payer_note'] == 'Thanks for the fish!' # BTW, test listinvoices-by-offer_id: assert len(l3.rpc.listinvoices(offer_id=offer1['offer_id'])['invoices']) == 2 # We can also set the amount explicitly, to tip. inv1 = l1.rpc.call('fetchinvoice', {'offer': offer1['bolt12'], 'amount_msat': 3}) - assert l1.rpc.call('decode', [inv1['invoice']])['amount_msat'] == 3 + assert l1.rpc.call('decode', [inv1['invoice']])['invoice_amount_msat'] == 3 l1.rpc.pay(inv1['invoice']) # More than ~5x expected is rejected as absurd (it's actually a divide test, @@ -5222,4 +5222,4 @@ def test_payerkey(node_factory): for n, k in zip(nodes, expected_keys): b12 = n.rpc.createinvoicerequest('lnr1qqgz2d7u2smys9dc5q2447e8thjlgq3qqc3xu3s3rg94nj40zfsy866mhu5vxne6tcej5878k2mneuvgjy8ssqvepgz5zsjrg3z3vggzvkm2khkgvrxj27r96c00pwl4kveecdktm29jdd6w0uwu5jgtv5v9qgqxyfhyvyg6pdvu4tcjvpp7kkal9rp57wj7xv4pl3ajku70rzy3pu')['bolt12'] - assert n.rpc.decode(b12)['payer_key'] == k + assert n.rpc.decode(b12)['invreq_payer_id'] == k