diff --git a/.msggen.json b/.msggen.json index be3edebbe2dd..b9d6dbae6af7 100644 --- a/.msggen.json +++ b/.msggen.json @@ -911,6 +911,7 @@ "DecodeInvreq_paths": { "Decode.invreq_paths[].blinding": 2, "Decode.invreq_paths[].first_node_id": 3, + "Decode.invreq_paths[].first_path_key": 6, "Decode.invreq_paths[].first_scid": 4, "Decode.invreq_paths[].first_scid_dir": 1, "Decode.invreq_paths[].path[]": 5 @@ -922,6 +923,7 @@ "DecodeOffer_paths": { "Decode.offer_paths[].blinding": 2, "Decode.offer_paths[].first_node_id": 1, + "Decode.offer_paths[].first_path_key": 6, "Decode.offer_paths[].first_scid": 5, "Decode.offer_paths[].first_scid_dir": 4, "Decode.offer_paths[].path[]": 3 @@ -4437,12 +4439,16 @@ }, "Decode.invoice_paths[].blinding": { "added": "pre-v0.10.1", - "deprecated": null + "deprecated": "v24.11" }, "Decode.invoice_paths[].first_node_id": { "added": "pre-v0.10.1", "deprecated": null }, + "Decode.invoice_paths[].first_path_key": { + "added": "v24.11", + "deprecated": null + }, "Decode.invoice_paths[].first_scid": { "added": "v23.05", "deprecated": null @@ -4517,12 +4523,16 @@ }, "Decode.invreq_paths[].blinding": { "added": "v24.08", - "deprecated": null + "deprecated": "v24.11" }, "Decode.invreq_paths[].first_node_id": { "added": "v24.08", "deprecated": null }, + "Decode.invreq_paths[].first_path_key": { + "added": "v24.11", + "deprecated": null + }, "Decode.invreq_paths[].first_scid": { "added": "v24.08", "deprecated": null @@ -4621,12 +4631,16 @@ }, "Decode.offer_paths[].blinding": { "added": "pre-v0.10.1", - "deprecated": null + "deprecated": "v24.11" }, "Decode.offer_paths[].first_node_id": { "added": "pre-v0.10.1", "deprecated": null }, + "Decode.offer_paths[].first_path_key": { + "added": "v24.11", + "deprecated": null + }, "Decode.offer_paths[].first_scid": { "added": "v23.05", "deprecated": null diff --git a/Makefile b/Makefile index d190761d0e9d..02a3c8e35df3 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ CCANDIR := ccan # Where we keep the BOLT RFCs BOLTDIR := ../bolts/ -DEFAULT_BOLTVERSION := 57ce4b1e05c996fa649f00dc13521f6d496a288f +DEFAULT_BOLTVERSION := 5dec5eb84957d70c9fedf27173e78f1b0b6b0217 # Can be overridden on cmdline. BOLTVERSION := $(DEFAULT_BOLTVERSION) diff --git a/channeld/channeld.c b/channeld/channeld.c index 784a575e094d..d8cff10842ae 100644 --- a/channeld/channeld.c +++ b/channeld/channeld.c @@ -313,7 +313,7 @@ static void handle_stfu(struct peer *peer, const u8 *stfu) status_debug("STFU initiator was remote."); } else { - /* BOLT-quiescent #2: + /* BOLT #2: * * If both sides send `stfu` simultaneously, they will both * set `initiator` to `1`, in which case the "initiator" is @@ -329,7 +329,7 @@ static void handle_stfu(struct peer *peer, const u8 *stfu) } } - /* BOLT-quiescent #2: + /* BOLT #2: * The receiver of `stfu`: * - if it has sent `stfu` then: * - MUST now consider the channel to be quiescent @@ -622,7 +622,7 @@ static void handle_peer_add_htlc(struct peer *peer, const u8 *msg) } add_err = channel_add_htlc(peer->channel, REMOTE, id, amount, cltv_expiry, &payment_hash, - onion_routing_packet, tlvs->blinding_point, &htlc, NULL, + onion_routing_packet, tlvs->blinded_path, &htlc, NULL, /* We don't immediately fail incoming htlcs, * instead we wait and fail them after * they've been committed */ @@ -1496,7 +1496,7 @@ static void marshall_htlc_info(const tal_t *ctx, memcpy(a.onion_routing_packet, htlc->routing, sizeof(a.onion_routing_packet)); - a.blinding = htlc->blinding; + a.path_key = htlc->path_key; a.fail_immediate = htlc->fail_immediate; tal_arr_expand(added, a); } else if (htlc->state == RCVD_REMOVE_COMMIT) { @@ -4410,10 +4410,10 @@ static void resend_commitment(struct peer *peer, struct changed_htlc *last) if (h->state == SENT_ADD_COMMIT) { struct tlv_update_add_htlc_tlvs *tlvs; - if (h->blinding) { + if (h->path_key) { tlvs = tlv_update_add_htlc_tlvs_new(tmpctx); - tlvs->blinding_point = tal_dup(tlvs, struct pubkey, - h->blinding); + tlvs->blinded_path = tal_dup(tlvs, struct pubkey, + h->path_key); } else tlvs = NULL; msg = towire_update_add_htlc(NULL, &peer->channel_id, @@ -5346,7 +5346,7 @@ static void handle_offer_htlc(struct peer *peer, const u8 *inmsg) const u8 *failwiremsg; const char *failstr; struct amount_sat htlc_fee; - struct pubkey *blinding; + struct pubkey *path_key; struct tlv_update_add_htlc_tlvs *tlvs; if (!peer->channel_ready[LOCAL] || !peer->channel_ready[REMOTE]) @@ -5355,18 +5355,18 @@ static void handle_offer_htlc(struct peer *peer, const u8 *inmsg) if (!fromwire_channeld_offer_htlc(tmpctx, inmsg, &amount, &cltv_expiry, &payment_hash, - onion_routing_packet, &blinding)) + onion_routing_packet, &path_key)) master_badmsg(WIRE_CHANNELD_OFFER_HTLC, inmsg); - if (blinding) { + if (path_key) { tlvs = tlv_update_add_htlc_tlvs_new(tmpctx); - tlvs->blinding_point = tal_dup(tlvs, struct pubkey, blinding); + tlvs->blinded_path = tal_dup(tlvs, struct pubkey, path_key); } else tlvs = NULL; e = channel_add_htlc(peer->channel, LOCAL, peer->htlc_id, amount, cltv_expiry, &payment_hash, - onion_routing_packet, take(blinding), NULL, + onion_routing_packet, take(path_key), NULL, &htlc_fee, true); status_debug("Adding HTLC %"PRIu64" amount=%s cltv=%u gave %s", peer->htlc_id, diff --git a/channeld/channeld_htlc.h b/channeld/channeld_htlc.h index 7b372f80911b..93dd00f21c24 100644 --- a/channeld/channeld_htlc.h +++ b/channeld/channeld_htlc.h @@ -27,7 +27,7 @@ struct htlc { const u8 *routing; /* Blinding (optional). */ - struct pubkey *blinding; + struct pubkey *path_key; /* Should we immediately fail this htlc? */ bool fail_immediate; diff --git a/channeld/channeld_wire.csv b/channeld/channeld_wire.csv index ec552abb3ca4..26bedc519390 100644 --- a/channeld/channeld_wire.csv +++ b/channeld/channeld_wire.csv @@ -95,7 +95,7 @@ msgdata,channeld_offer_htlc,amount_msat,amount_msat, msgdata,channeld_offer_htlc,cltv_expiry,u32, msgdata,channeld_offer_htlc,payment_hash,sha256, msgdata,channeld_offer_htlc,onion_routing_packet,u8,1366 -msgdata,channeld_offer_htlc,blinding,?pubkey, +msgdata,channeld_offer_htlc,path_key,?pubkey, # Reply; synchronous since IDs have to increment. msgtype,channeld_offer_htlc_reply,1104 diff --git a/channeld/full_channel.c b/channeld/full_channel.c index 33a398997586..9cea6656792e 100644 --- a/channeld/full_channel.c +++ b/channeld/full_channel.c @@ -580,7 +580,7 @@ static enum channel_add_err add_htlc(struct channel *channel, u32 cltv_expiry, const struct sha256 *payment_hash, const u8 routing[TOTAL_PACKET_SIZE(ROUTING_INFO_SIZE)], - const struct pubkey *blinding TAKES, + const struct pubkey *path_key TAKES, struct htlc **htlcp, bool enforce_aggregate_limits, struct amount_sat *htlc_fee, @@ -605,7 +605,7 @@ static enum channel_add_err add_htlc(struct channel *channel, htlc->fail_immediate = false; htlc->rhash = *payment_hash; - htlc->blinding = tal_dup_or_null(htlc, struct pubkey, blinding); + htlc->path_key = tal_dup_or_null(htlc, struct pubkey, path_key); htlc->failed = NULL; htlc->r = NULL; htlc->routing = tal_dup_arr(htlc, u8, routing, TOTAL_PACKET_SIZE(ROUTING_INFO_SIZE), 0); @@ -898,7 +898,7 @@ enum channel_add_err channel_add_htlc(struct channel *channel, u32 cltv_expiry, const struct sha256 *payment_hash, const u8 routing[TOTAL_PACKET_SIZE(ROUTING_INFO_SIZE)], - const struct pubkey *blinding TAKES, + const struct pubkey *path_key TAKES, struct htlc **htlcp, struct amount_sat *htlc_fee, bool err_immediate_failures) @@ -918,7 +918,7 @@ enum channel_add_err channel_add_htlc(struct channel *channel, status_broken("Peer sent out-of-order HTLC ids (is that you, old c-lightning node?)"); return add_htlc(channel, state, id, amount, cltv_expiry, - payment_hash, routing, blinding, + payment_hash, routing, path_key, htlcp, true, htlc_fee, err_immediate_failures); } @@ -1616,7 +1616,7 @@ bool channel_force_htlcs(struct channel *channel, htlcs[i]->cltv_expiry, &htlcs[i]->payment_hash, htlcs[i]->onion_routing_packet, - htlcs[i]->blinding, + htlcs[i]->path_key, &htlc, false, NULL, false); if (e != CHANNEL_ERR_ADD_OK) { status_broken("%s HTLC %"PRIu64" failed error %u", diff --git a/channeld/test/run-full_channel.c b/channeld/test/run-full_channel.c index 5a2fe83c1642..f36572a8ae19 100644 --- a/channeld/test/run-full_channel.c +++ b/channeld/test/run-full_channel.c @@ -514,8 +514,11 @@ int main(int argc, const char *argv[]) */ local_per_commitment_point = pubkey_from_hex("025f7117a78150fe2ef97db7cfc83bd57b2e2c0d0dd25eaf467a4a1c2a45ce1486"); /* BOLT #3: - * localpubkey: 030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e7 - * remotepubkey: 0394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b + * local_funding_pubkey: 023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb + * remote_funding_pubkey: 030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c1 + * local_privkey: bb13b121cdc357cd2e608b0aea294afca36e2b34cf958e2e6451a2f27469449101 + * local_htlcpubkey: 030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e7 + * remote_htlcpubkey: 0394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b * local_delayedpubkey: 03fd5960528dc152014952efdb702a88f71e3c1653b2314431701ec77e57fde83c * local_revocation_pubkey: 0212a140cd0c6539d07cd08dfe09984dec3251ea808b892efeac3ede9402bf2b19 */ @@ -526,7 +529,6 @@ int main(int argc, const char *argv[]) keyset.self_delayed_payment_key = pubkey_from_hex("03fd5960528dc152014952efdb702a88f71e3c1653b2314431701ec77e57fde83c"); keyset.self_revocation_key = pubkey_from_hex("0212a140cd0c6539d07cd08dfe09984dec3251ea808b892efeac3ede9402bf2b19"); - /* FIXME: Update bolt */ keyset.self_htlc_key = pubkey_from_hex("030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e7"); keyset.other_htlc_key = pubkey_from_hex("0394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b"); diff --git a/cln-grpc/proto/node.proto b/cln-grpc/proto/node.proto index f431fe6cd574..cce7b5966881 100644 --- a/cln-grpc/proto/node.proto +++ b/cln-grpc/proto/node.proto @@ -1669,9 +1669,10 @@ message DecodeResponse { message DecodeOffer_paths { optional bytes first_node_id = 1; - bytes blinding = 2; + optional bytes blinding = 2; optional uint32 first_scid_dir = 4; optional string first_scid = 5; + optional bytes first_path_key = 6; } message DecodeOffer_recurrencePaywindow { @@ -1682,10 +1683,11 @@ message DecodeOffer_recurrencePaywindow { message DecodeInvreq_paths { optional uint32 first_scid_dir = 1; - bytes blinding = 2; + optional bytes blinding = 2; optional bytes first_node_id = 3; optional string first_scid = 4; repeated DecodeInvreq_pathsPath path = 5; + optional bytes first_path_key = 6; } message DecodeInvreq_pathsPath { diff --git a/cln-grpc/src/convert.rs b/cln-grpc/src/convert.rs index b6a8db8cb7b3..5c46f66818f1 100644 --- a/cln-grpc/src/convert.rs +++ b/cln-grpc/src/convert.rs @@ -1493,12 +1493,14 @@ impl From for pb::DecodeInvreqPathsPath { } } -#[allow(unused_variables)] +#[allow(unused_variables,deprecated)] impl From for pb::DecodeInvreqPaths { fn from(c: responses::DecodeInvreq_paths) -> Self { Self { - blinding: c.blinding.serialize().to_vec(), // Rule #2 for type pubkey + #[allow(deprecated)] + blinding: c.blinding.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? first_node_id: c.first_node_id.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? + first_path_key: c.first_path_key.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? first_scid: c.first_scid.map(|v| v.to_string()), // Rule #2 for type short_channel_id? first_scid_dir: c.first_scid_dir, // Rule #2 for type u32? // Field: Decode.invreq_paths[].path[] @@ -1507,12 +1509,14 @@ impl From for pb::DecodeInvreqPaths { } } -#[allow(unused_variables)] +#[allow(unused_variables,deprecated)] impl From for pb::DecodeOfferPaths { fn from(c: responses::DecodeOffer_paths) -> Self { Self { - blinding: c.blinding.serialize().to_vec(), // Rule #2 for type pubkey + #[allow(deprecated)] + blinding: c.blinding.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? first_node_id: c.first_node_id.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? + first_path_key: c.first_path_key.map(|v| v.serialize().to_vec()), // Rule #2 for type pubkey? first_scid: c.first_scid.map(|v| v.to_string()), // Rule #2 for type short_channel_id? first_scid_dir: c.first_scid_dir, // Rule #2 for type u32? } diff --git a/cln-rpc/src/model.rs b/cln-rpc/src/model.rs index 33c6219cdc70..9f50c841c8e6 100644 --- a/cln-rpc/src/model.rs +++ b/cln-rpc/src/model.rs @@ -6705,25 +6705,33 @@ pub mod responses { #[derive(Clone, Debug, Deserialize, Serialize)] pub struct DecodeInvreq_paths { + #[deprecated] + #[serde(skip_serializing_if = "Option::is_none")] + pub blinding: Option, #[serde(skip_serializing_if = "Option::is_none")] pub first_node_id: Option, #[serde(skip_serializing_if = "Option::is_none")] + pub first_path_key: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub first_scid: Option, #[serde(skip_serializing_if = "Option::is_none")] pub first_scid_dir: Option, - pub blinding: PublicKey, pub path: Vec, } #[derive(Clone, Debug, Deserialize, Serialize)] pub struct DecodeOffer_paths { + #[deprecated] + #[serde(skip_serializing_if = "Option::is_none")] + pub blinding: Option, #[serde(skip_serializing_if = "Option::is_none")] pub first_node_id: Option, #[serde(skip_serializing_if = "Option::is_none")] + pub first_path_key: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub first_scid: Option, #[serde(skip_serializing_if = "Option::is_none")] pub first_scid_dir: Option, - pub blinding: PublicKey, } #[derive(Clone, Debug, Deserialize, Serialize)] diff --git a/common/blindedpath.c b/common/blindedpath.c index 19c836d02578..c13b49d9fc39 100644 --- a/common/blindedpath.c +++ b/common/blindedpath.c @@ -14,13 +14,13 @@ #endif /* Blinds node_id and calculates next blinding factor. */ -static bool blind_node(const struct privkey *blinding, +static bool blind_node(const struct privkey *path_privkey, const struct secret *ss, const struct pubkey *node, struct pubkey *node_alias, - struct privkey *next_blinding) + struct privkey *next_path_privkey) { - struct pubkey blinding_pubkey; + struct pubkey path_pubkey; struct sha256 h; if (!blindedpath_get_alias(ss, node, node_alias)) @@ -30,32 +30,32 @@ static bool blind_node(const struct privkey *blinding, /* BOLT #4: * - $`E_{i+1} = SHA256(E_i || ss_i) * E_i`$ - * (NB: $`N_i`$ MUST NOT learn $`e_i`$) + * (`path_key`. NB: $`N_i`$ MUST NOT learn $`e_i`$) */ - if (!pubkey_from_privkey(blinding, &blinding_pubkey)) + if (!pubkey_from_privkey(path_privkey, &path_pubkey)) return false; SUPERVERBOSE("\t\"E\": \"%s\",\n", - fmt_pubkey(tmpctx, &blinding_pubkey)); + fmt_pubkey(tmpctx, &path_pubkey)); /* BOLT #4: * - $`e_{i+1} = SHA256(E_i || ss_i) * e_i`$ - * (blinding ephemeral private key, only known by $`N_r`$) + * (ephemeral private path key, only known by $`N_r`$) */ - blinding_hash_e_and_ss(&blinding_pubkey, ss, &h); + blinding_hash_e_and_ss(&path_pubkey, ss, &h); SUPERVERBOSE("\t\"H(E || ss)\": \"%s\",\n", fmt_sha256(tmpctx, &h)); - blinding_next_privkey(blinding, &h, next_blinding); + blinding_next_path_privkey(path_privkey, &h, next_path_privkey); SUPERVERBOSE("\t\"next_e\": \"%s\",\n", - fmt_privkey(tmpctx, next_blinding)); + fmt_privkey(tmpctx, next_path_privkey)); return true; } static u8 *enctlv_from_encmsg_raw(const tal_t *ctx, - const struct privkey *blinding, + const struct privkey *path_privkey, const struct pubkey *node, const u8 *raw_encmsg TAKES, - struct privkey *next_blinding, + struct privkey *next_path_privkey, struct pubkey *node_alias) { struct secret ss, rho; @@ -65,25 +65,25 @@ static u8 *enctlv_from_encmsg_raw(const tal_t *ctx, static const unsigned char npub[crypto_aead_chacha20poly1305_ietf_NPUBBYTES]; /* BOLT #4: - * - $`ss_i = SHA256(e_i * N_i) = SHA256(k_i * E_i)$` + * - $`ss_i = SHA256(e_i * N_i) = SHA256(k_i * E_i)`$ * (ECDH shared secret known only by $`N_r`$ and $`N_i`$) */ if (secp256k1_ecdh(secp256k1_ctx, ss.data, - &node->pubkey, blinding->secret.data, + &node->pubkey, path_privkey->secret.data, NULL, NULL) != 1) return NULL; SUPERVERBOSE("\t\"ss\": \"%s\",\n", fmt_secret(tmpctx, &ss)); - /* This calculates the node's alias, and next blinding */ - if (!blind_node(blinding, &ss, node, node_alias, next_blinding)) + /* This calculates the node's alias, and next path_key */ + if (!blind_node(path_privkey, &ss, node, node_alias, next_path_privkey)) return NULL; ret = tal_dup_talarr(ctx, u8, raw_encmsg); /* BOLT #4: * - $`rho_i = HMAC256(\text{"rho"}, ss_i)`$ - * (key used to encrypt the payload for $`N_i`$ by $`N_r`$) + * (key used to encrypt `encrypted_recipient_data` for $`N_i`$ by $`N_r`$) */ subkey_from_hmac("rho", &ss, &rho); SUPERVERBOSE("\t\"rho\": \"%s\",\n", @@ -91,7 +91,7 @@ static u8 *enctlv_from_encmsg_raw(const tal_t *ctx, /* BOLT #4: * - MUST encrypt each `encrypted_data_tlv[i]` with ChaCha20-Poly1305 using - * the corresponding `rho_i` key and an all-zero nonce to produce + * the corresponding $`rho_i`$ key and an all-zero nonce to produce * `encrypted_recipient_data[i]` */ /* Encrypt in place */ @@ -109,24 +109,24 @@ static u8 *enctlv_from_encmsg_raw(const tal_t *ctx, } u8 *encrypt_tlv_encrypted_data(const tal_t *ctx, - const struct privkey *blinding, + const struct privkey *path_privkey, const struct pubkey *node, - const struct tlv_encrypted_data_tlv *encmsg, - struct privkey *next_blinding, + const struct tlv_encrypted_data_tlv *tlv, + struct privkey *next_path_privkey, struct pubkey *node_alias) { struct privkey unused; - u8 *encmsg_raw = tal_arr(NULL, u8, 0); - towire_tlv_encrypted_data_tlv(&encmsg_raw, encmsg); + u8 *tlv_wire = tal_arr(NULL, u8, 0); + towire_tlv_encrypted_data_tlv(&tlv_wire, tlv); - /* last hop doesn't care about next_blinding */ - if (!next_blinding) - next_blinding = &unused; - return enctlv_from_encmsg_raw(ctx, blinding, node, take(encmsg_raw), - next_blinding, node_alias); + /* last hop doesn't care about next path_key */ + if (!next_path_privkey) + next_path_privkey = &unused; + return enctlv_from_encmsg_raw(ctx, path_privkey, node, take(tlv_wire), + next_path_privkey, node_alias); } -bool unblind_onion(const struct pubkey *blinding, +bool unblind_onion(const struct pubkey *path_key, void (*ecdh)(const struct pubkey *point, struct secret *ss), struct pubkey *onion_key, struct secret *ss) @@ -136,28 +136,25 @@ bool unblind_onion(const struct pubkey *blinding, /* BOLT #4: * A reader: *... - * - MUST compute: - * - $`ss_i = SHA256(k_i * E_i)`$ (standard ECDH) - * - $`b_i = HMAC256(\text{"blinded\_node\_id"}, ss_i) * k_i`$ + * - if `path_key` is specified: + * - Calculate the `blinding_ss` as ECDH(`path_key`, `node_privkey`). + * - Either: + * - Tweak `public_key` by multiplying by $`HMAC256(\text{"blinded\_node\_id"}, blinding\_ss)`$. + * - or (equivalently): + * - Tweak its own `node_privkey` below by multiplying by $`HMAC256(\text{"blinded\_node\_id"}, blinding\_ss)`$. */ - ecdh(blinding, ss); + ecdh(path_key, ss); subkey_from_hmac("blinded_node_id", ss, &hmac); - /* We instead tweak the *ephemeral* key from the onion and use + /* We tweak the *ephemeral* key from the onion and use * our normal privkey: since hsmd knows only how to ECDH with - * our real key. IOW: */ - /* BOLT #4: - * - MUST use $`b_i`$ instead of its private key $`k_i`$ to decrypt the onion. Note - * that the node may instead tweak the onion ephemeral key with - * $`HMAC256(\text{"blinded\_node\_id}", ss_i)`$ which achieves the same result. - */ + * our real key. */ return secp256k1_ec_pubkey_tweak_mul(secp256k1_ctx, &onion_key->pubkey, hmac.data) == 1; } u8 *decrypt_encmsg_raw(const tal_t *ctx, - const struct pubkey *blinding, const struct secret *ss, const u8 *enctlv) { @@ -167,17 +164,19 @@ u8 *decrypt_encmsg_raw(const tal_t *ctx, static const unsigned char npub[crypto_aead_chacha20poly1305_ietf_NPUBBYTES]; /* BOLT #4: - * A reader: + * The reader of the `encrypted_recipient_data`: *... - *- MUST decrypt the `encrypted_data` field using $`rho_i`$ and use - * the decrypted fields to locate the next node + *- $`rho_i = HMAC256(\text{"rho"}, ss_i)`$ + *- MUST decrypt the `encrypted_recipient_data` field using $`rho_i`$ + * as a key using ChaCha20-Poly1305 and an all-zero nonce key. */ subkey_from_hmac("rho", ss, &rho); /* BOLT #4: - *- If the `encrypted_data` field is missing or cannot - * be decrypted: - * - MUST return an error + * - If the `encrypted_recipient_data` field is missing, cannot be + * decrypted into an `encrypted_data_tlv` or contains unknown even + * fields: + * - MUST return an error */ /* Too short? */ if (tal_bytelen(enctlv) < crypto_aead_chacha20poly1305_ietf_ABYTES) @@ -197,18 +196,17 @@ u8 *decrypt_encmsg_raw(const tal_t *ctx, } struct tlv_encrypted_data_tlv *decrypt_encrypted_data(const tal_t *ctx, - const struct pubkey *blinding, const struct secret *ss, const u8 *enctlv) { - const u8 *cursor = decrypt_encmsg_raw(tmpctx, blinding, ss, enctlv); + const u8 *cursor = decrypt_encmsg_raw(tmpctx, ss, enctlv); size_t maxlen = tal_bytelen(cursor); /* BOLT #4: - * - * - MUST return an error if `encrypted_recipient_data` does not decrypt - * using the blinding point as described in - * [Route Blinding](#route-blinding). + * - If the `encrypted_recipient_data` field is missing, cannot be + * decrypted into an `encrypted_data_tlv` or contains unknown even + * fields: + * - MUST return an error */ /* Note: our parser consider nothing is a valid TLV, but decrypt_encmsg_raw * returns NULL if it couldn't decrypt. */ @@ -237,27 +235,24 @@ bool blindedpath_get_alias(const struct secret *ss, node_id_blinding.data) == 1; } -void blindedpath_next_blinding(const struct tlv_encrypted_data_tlv *enc, - const struct pubkey *blinding, +void blindedpath_next_path_key(const struct tlv_encrypted_data_tlv *enc, + const struct pubkey *path_key, const struct secret *ss, - struct pubkey *next_blinding) + struct pubkey *next_path_key) { /* BOLT #4: * - $`E_{i+1} = SHA256(E_i || ss_i) * E_i`$ * ... - * - If `encrypted_data` contains a `next_blinding_override`: - * - MUST use it as the next blinding point instead of $`E_{i+1}`$ - * - Otherwise: - * - MUST use $`E_{i+1}`$ as the next blinding point + * - If the `encrypted_data_tlv` contains a `next_path_key_override`: + * - MUST use it as the next `path_key`. + * - Otherwise: + * - MUST use $`E_{i+1} = SHA256(E_i || ss_i) * E_i`$ as the next `path_key` */ - if (enc->next_blinding_override) - *next_blinding = *enc->next_blinding_override; + if (enc->next_path_key_override) + *next_path_key = *enc->next_path_key_override; else { - /* BOLT #4: - * $`E_{i+1} = SHA256(E_i || ss_i) * E_i`$ - */ struct sha256 h; - blinding_hash_e_and_ss(blinding, ss, &h); - blinding_next_pubkey(blinding, &h, next_blinding); + blinding_hash_e_and_ss(path_key, ss, &h); + blinding_next_path_key(path_key, &h, next_path_key); } } diff --git a/common/blindedpath.h b/common/blindedpath.h index 0b2330befd61..b84869351070 100644 --- a/common/blindedpath.h +++ b/common/blindedpath.h @@ -17,33 +17,33 @@ struct tlv_encrypted_data_tlv_payment_relay; /** * encrypt_tlv_encrypted_data - Encrypt a tlv_encrypted_data_tlv. * @ctx: tal context - * @blinding: e(i), the blinding secret + * @path_privkey: e(i), the path key * @node: the pubkey of the node to encrypt for * @tlv: the message to encrypt. - * @next_blinding: (out) e(i+1), the next blinding secret (optional) + * @next_path_privkey: (out) e(i+1), the next blinding secret (optional) * @node_alias: (out) the blinded pubkey of the node to tell the recipient. * * You create a blinding secret using randombytes_buf(), then call this * iteratively for each node in the path. */ u8 *encrypt_tlv_encrypted_data(const tal_t *ctx, - const struct privkey *blinding, + const struct privkey *path_privkey, const struct pubkey *node, const struct tlv_encrypted_data_tlv *tlv, - struct privkey *next_blinding, + struct privkey *next_path_privkey, struct pubkey *node_alias) NON_NULL_ARGS(2, 3, 4, 6); /** * unblind_onion - tweak onion epheremeral key so we can decode it with ours. - * @blinding: E(i), the blinding pubkey the previous peer gave us. + * @path_key: E(i), the blinding pubkey the previous peer gave us. * @ecdh: the ecdh routine (usually ecdh from common/ecdh_hsmd). * @onion_key: (in, out) the onionpacket->ephemeralkey to tweak. * @ss: (out) the shared secret we gained from blinding pubkey. * * The shared secret is needed to decrypt the enctlv we expect to find, too. */ -bool unblind_onion(const struct pubkey *blinding, +bool unblind_onion(const struct pubkey *path_key, void (*ecdh)(const struct pubkey *point, struct secret *ss), struct pubkey *onion_key, struct secret *ss) @@ -64,30 +64,27 @@ bool blindedpath_get_alias(const struct secret *ss, /** * decrypt_encrypted_data - Decrypt an encmsg to form an tlv_encrypted_data_tlv. * @ctx: the context to allocate off. - * @blinding: E(i), the blinding pubkey the previous peer gave us. * @ss: the blinding secret from unblind_onion(). * @enctlv: the enctlv from the onion (tal, may be NULL). * * Returns NULL if decryption failed or encmsg was malformed. */ struct tlv_encrypted_data_tlv *decrypt_encrypted_data(const tal_t *ctx, - const struct pubkey *blinding, const struct secret *ss, const u8 *enctlv) NON_NULL_ARGS(2, 3); /* Low-level accessor */ u8 *decrypt_encmsg_raw(const tal_t *ctx, - const struct pubkey *blinding, const struct secret *ss, const u8 *enctlv); /** - * blindedpath_next_blinding - Calculate or extract next blinding pubkey + * blindedpath_next_path_key - Calculate or extract next blinding pubkey */ -void blindedpath_next_blinding(const struct tlv_encrypted_data_tlv *enc, - const struct pubkey *blinding, +void blindedpath_next_path_key(const struct tlv_encrypted_data_tlv *enc, + const struct pubkey *path_key, const struct secret *ss, - struct pubkey *next_blinding); + struct pubkey *next_path_key); #endif /* LIGHTNING_COMMON_BLINDEDPATH_H */ diff --git a/common/blindedpay.c b/common/blindedpay.c index 513f7d6c1ea6..9c3dec2e7268 100644 --- a/common/blindedpay.c +++ b/common/blindedpay.c @@ -23,8 +23,8 @@ u8 **blinded_onion_hops(const tal_t *ctx, * - MUST include the `encrypted_recipient_data` provided by the * recipient * - For the first node in the blinded route: - * - MUST include the `blinding_point` provided by the - * recipient in `current_blinding_point` + * - MUST include the `path_key` provided by the + * recipient in `current_path_key` * - If it is the final node: * - MUST include `amt_to_forward`, `outgoing_cltv_value` and `total_amount_msat`. *... @@ -35,7 +35,7 @@ u8 **blinded_onion_hops(const tal_t *ctx, final ? &total_amount : NULL, final ? &final_cltv : NULL, path->path[i]->encrypted_recipient_data, - first ? &path->blinding : NULL); + first ? &path->first_path_key : NULL); } return onions; } diff --git a/common/blinding.c b/common/blinding.c index 1fbb4b09d34b..0b8e0d8ea66a 100644 --- a/common/blinding.c +++ b/common/blinding.c @@ -19,9 +19,9 @@ void blinding_hash_e_and_ss(const struct pubkey *e, } /* E(i+1) = H(E(i) || ss(i)) * E(i) */ -bool blinding_next_pubkey(const struct pubkey *pk, - const struct sha256 *h, - struct pubkey *next) +bool blinding_next_path_key(const struct pubkey *pk, + const struct sha256 *h, + struct pubkey *next) { *next = *pk; @@ -30,9 +30,9 @@ bool blinding_next_pubkey(const struct pubkey *pk, } /* e(i+1) = H(E(i) || ss(i)) * e(i) */ -bool blinding_next_privkey(const struct privkey *e, - const struct sha256 *h, - struct privkey *next) +bool blinding_next_path_privkey(const struct privkey *e, + const struct sha256 *h, + struct privkey *next) { *next = *e; return secp256k1_ec_seckey_tweak_mul(secp256k1_ctx, next->secret.data, diff --git a/common/blinding.h b/common/blinding.h index af30d0b0f0c6..78ae22d82a4c 100644 --- a/common/blinding.h +++ b/common/blinding.h @@ -13,13 +13,13 @@ void blinding_hash_e_and_ss(const struct pubkey *e, struct sha256 *sha); /* E(i+1) = H(E(i) || ss(i)) * E(i) */ -bool blinding_next_pubkey(const struct pubkey *pk, - const struct sha256 *h, - struct pubkey *next); +bool blinding_next_path_key(const struct pubkey *pk, + const struct sha256 *h, + struct pubkey *next); /* e(i+1) = H(E(i) || ss(i)) * e(i) */ -bool blinding_next_privkey(const struct privkey *e, - const struct sha256 *h, - struct privkey *next); +bool blinding_next_path_privkey(const struct privkey *e, + const struct sha256 *h, + struct privkey *next); #endif /* LIGHTNING_COMMON_BLINDING_H */ diff --git a/common/features.h b/common/features.h index 554304fefa7f..840b91908404 100644 --- a/common/features.h +++ b/common/features.h @@ -115,6 +115,7 @@ struct feature_set *feature_set_dup(const tal_t *ctx, * | 24/25 | `option_route_blinding` |...IN9 ... * | 26/27 | `option_shutdown_anysegwit` |... IN ... * | 28/29 | `option_dual_fund` |... IN ... + * | 34/35 | `option_quiesce` | ... IN ... * | 38/39 | `option_onion_messages` |... IN ... * | 44/45 | `option_channel_type` |... IN ... * | 46/47 | `option_scid_alias` | ... IN ... @@ -135,6 +136,7 @@ struct feature_set *feature_set_dup(const tal_t *ctx, #define OPT_ROUTE_BLINDING 24 #define OPT_SHUTDOWN_ANYSEGWIT 26 #define OPT_DUAL_FUND 28 +#define OPT_QUIESCE 34 #define OPT_ONION_MESSAGES 38 #define OPT_CHANNEL_TYPE 44 #define OPT_SCID_ALIAS 46 @@ -151,11 +153,6 @@ struct feature_set *feature_set_dup(const tal_t *ctx, #define OPT_SPLICE 62 #define OPT_EXPERIMENTAL_SPLICE 162 -/* BOLT-quiescent #9: - * | 34/35 | `option_quiesce` | ... IN ... - */ -#define OPT_QUIESCE 34 - #define OPT_SHUTDOWN_WRONG_FUNDING 104 /* BOLT-peer-storage #9: diff --git a/common/htlc_wire.c b/common/htlc_wire.c index fb47e000309e..22735388c653 100644 --- a/common/htlc_wire.c +++ b/common/htlc_wire.c @@ -45,7 +45,7 @@ struct existing_htlc *new_existing_htlc(const tal_t *ctx, const struct sha256 *payment_hash, u32 cltv_expiry, const u8 onion_routing_packet[TOTAL_PACKET_SIZE(ROUTING_INFO_SIZE)], - const struct pubkey *blinding TAKES, + const struct pubkey *path_key TAKES, const struct preimage *preimage TAKES, const struct failed_htlc *failed TAKES) { @@ -58,7 +58,7 @@ struct existing_htlc *new_existing_htlc(const tal_t *ctx, existing->payment_hash = *payment_hash; memcpy(existing->onion_routing_packet, onion_routing_packet, sizeof(existing->onion_routing_packet)); - existing->blinding = tal_dup_or_null(existing, struct pubkey, blinding); + existing->path_key = tal_dup_or_null(existing, struct pubkey, path_key); existing->payment_preimage = tal_dup_or_null(existing, struct preimage, preimage); if (failed) @@ -79,9 +79,9 @@ void towire_added_htlc(u8 **pptr, const struct added_htlc *added) towire_u32(pptr, added->cltv_expiry); towire(pptr, added->onion_routing_packet, sizeof(added->onion_routing_packet)); - if (added->blinding) { + if (added->path_key) { towire_bool(pptr, true); - towire_pubkey(pptr, added->blinding); + towire_pubkey(pptr, added->path_key); } else towire_bool(pptr, false); towire_bool(pptr, added->fail_immediate); @@ -106,9 +106,9 @@ void towire_existing_htlc(u8 **pptr, const struct existing_htlc *existing) towire_failed_htlc(pptr, existing->failed); } else towire_bool(pptr, false); - if (existing->blinding) { + if (existing->path_key) { towire_bool(pptr, true); - towire_pubkey(pptr, existing->blinding); + towire_pubkey(pptr, existing->path_key); } else towire_bool(pptr, false); } @@ -181,10 +181,10 @@ void fromwire_added_htlc(const u8 **cursor, size_t *max, fromwire(cursor, max, added->onion_routing_packet, sizeof(added->onion_routing_packet)); if (fromwire_bool(cursor, max)) { - added->blinding = tal(added, struct pubkey); - fromwire_pubkey(cursor, max, added->blinding); + added->path_key = tal(added, struct pubkey); + fromwire_pubkey(cursor, max, added->path_key); } else - added->blinding = NULL; + added->path_key = NULL; added->fail_immediate = fromwire_bool(cursor, max); } @@ -210,10 +210,10 @@ struct existing_htlc *fromwire_existing_htlc(const tal_t *ctx, else existing->failed = NULL; if (fromwire_bool(cursor, max)) { - existing->blinding = tal(existing, struct pubkey); - fromwire_pubkey(cursor, max, existing->blinding); + existing->path_key = tal(existing, struct pubkey); + fromwire_pubkey(cursor, max, existing->path_key); } else - existing->blinding = NULL; + existing->path_key = NULL; return existing; } diff --git a/common/htlc_wire.h b/common/htlc_wire.h index 72d359f57f26..c2026a8c42c0 100644 --- a/common/htlc_wire.h +++ b/common/htlc_wire.h @@ -16,7 +16,7 @@ struct added_htlc { u32 cltv_expiry; u8 onion_routing_packet[TOTAL_PACKET_SIZE(ROUTING_INFO_SIZE)]; bool fail_immediate; - struct pubkey *blinding; + struct pubkey *path_key; }; /* This is how lightningd tells us about HTLCs which already exist at startup */ @@ -27,8 +27,8 @@ struct existing_htlc { struct sha256 payment_hash; u32 cltv_expiry; u8 onion_routing_packet[TOTAL_PACKET_SIZE(ROUTING_INFO_SIZE)]; - /* If this is non-NULL, this is blinding to send with (outgoing) HTLC */ - struct pubkey *blinding; + /* If this is non-NULL, this is path_key to send with (outgoing) HTLC */ + struct pubkey *path_key; /* If fulfilled, this is non-NULL */ struct preimage *payment_preimage; /* If failed, this is set */ @@ -75,7 +75,7 @@ struct existing_htlc *new_existing_htlc(const tal_t *ctx, const struct sha256 *payment_hash, u32 cltv_expiry, const u8 onion_routing_packet[TOTAL_PACKET_SIZE(ROUTING_INFO_SIZE)], - const struct pubkey *blinding TAKES, + const struct pubkey *path_key TAKES, const struct preimage *preimage TAKES, const struct failed_htlc *failed TAKES); diff --git a/common/json_blinded_path.c b/common/json_blinded_path.c index 860845888b07..78ef625e60f4 100644 --- a/common/json_blinded_path.c +++ b/common/json_blinded_path.c @@ -18,11 +18,11 @@ json_to_blinded_path(const tal_t *ctx, const char *buffer, const jsmntok_t *tok) /* It will give us either scid or node_id */ memset(&first_scidd, 0, sizeof(first_scidd)); err = json_scan(tmpctx, buffer, tok, - "{blinding:%," + "{first_path_key:%," "first_node_id?:%," "first_scid?:%," "first_scid_dir?:%}", - JSON_SCAN(json_to_pubkey, &rpath->blinding), + JSON_SCAN(json_to_pubkey, &rpath->first_path_key), JSON_SCAN(json_to_pubkey, &first_node_id), JSON_SCAN(json_to_short_channel_id, &first_scidd.scid), JSON_SCAN(json_to_int, &first_scidd.dir), @@ -39,9 +39,9 @@ json_to_blinded_path(const tal_t *ctx, const char *buffer, const jsmntok_t *tok) if (!hops || hops->size < 1) return tal_free(rpath); - rpath->path = tal_arr(rpath, struct onionmsg_hop *, hops->size); + rpath->path = tal_arr(rpath, struct blinded_path_hop *, hops->size); json_for_each_arr(i, t, hops) { - rpath->path[i] = tal(rpath->path, struct onionmsg_hop); + rpath->path[i] = tal(rpath->path, struct blinded_path_hop); err = json_scan(tmpctx, buffer, t, "{blinded_node_id:%,encrypted_recipient_data:%}", JSON_SCAN(json_to_pubkey, &rpath->path[i]->blinded_node_id), diff --git a/common/onion_decode.c b/common/onion_decode.c index 092ab6077e74..7711790f29f9 100644 --- a/common/onion_decode.c +++ b/common/onion_decode.c @@ -14,14 +14,14 @@ *... * - If it is not the final node: * - MUST return an error if the payload contains other tlv fields than - * `encrypted_recipient_data` and `current_blinding_point`. + * `encrypted_recipient_data` and `current_path_key`. */ static bool check_nonfinal_tlv(const struct tlv_payload *tlv, u64 *failtlvtype) { for (size_t i = 0; i < tal_count(tlv->fields); i++) { switch (tlv->fields[i].numtype) { - case TLV_PAYLOAD_CURRENT_BLINDING_POINT: + case TLV_PAYLOAD_CURRENT_PATH_KEY: case TLV_PAYLOAD_ENCRYPTED_RECIPIENT_DATA: continue; } @@ -36,7 +36,7 @@ static bool check_nonfinal_tlv(const struct tlv_payload *tlv, *... * - If it is the final node: * - MUST return an error if the payload contains other tlv fields than - * `encrypted_recipient_data`, `current_blinding_point`, `amt_to_forward`, + * `encrypted_recipient_data`, `current_path_key`, `amt_to_forward`, * `outgoing_cltv_value` and `total_amount_msat`. */ static bool check_final_tlv(const struct tlv_payload *tlv, @@ -45,7 +45,7 @@ static bool check_final_tlv(const struct tlv_payload *tlv, for (size_t i = 0; i < tal_count(tlv->fields); i++) { switch (tlv->fields[i].numtype) { case TLV_PAYLOAD_ENCRYPTED_RECIPIENT_DATA: - case TLV_PAYLOAD_CURRENT_BLINDING_POINT: + case TLV_PAYLOAD_CURRENT_PATH_KEY: case TLV_PAYLOAD_AMT_TO_FORWARD: case TLV_PAYLOAD_OUTGOING_CLTV_VALUE: case TLV_PAYLOAD_TOTAL_AMOUNT_MSAT: @@ -168,7 +168,7 @@ static bool handle_blinded_terminal(struct onion_payload *p, struct onion_payload *onion_decode(const tal_t *ctx, const struct route_step *rs, - const struct pubkey *blinding, + const struct pubkey *path_key, const u64 *accepted_extra_tlvs, struct amount_msat amount_in, u32 cltv_expiry, @@ -215,37 +215,37 @@ struct onion_payload *onion_decode(const tal_t *ctx, /* BOLT #4: * - * - If `blinding_point` is set in the incoming `update_add_htlc`: - * - MUST return an error if `current_blinding_point` is present. - * - MUST use that `blinding_point` as the blinding point for decryption. + * - If `path_key` is set in the incoming `update_add_htlc`: + * - MUST return an error if `current_path_key` is present. + * - MUST use that `path_key` as `path_key` for decryption. * - Otherwise: - * - MUST return an error if `current_blinding_point` is not present. - * - MUST use that `current_blinding_point` as the blinding point for decryption. + * - MUST return an error if `current_path_key` is not present. + * - MUST use that `current_path_key` as the `path_key` for decryption. */ - if (blinding) { - if (p->tlv->current_blinding_point) { - *failtlvtype = TLV_PAYLOAD_CURRENT_BLINDING_POINT; + if (path_key) { + if (p->tlv->current_path_key) { + *failtlvtype = TLV_PAYLOAD_CURRENT_PATH_KEY; goto field_bad; } - p->blinding = tal_dup(p, struct pubkey, blinding); + p->path_key = tal_dup(p, struct pubkey, path_key); } else { - if (!p->tlv->current_blinding_point) { - *failtlvtype = TLV_PAYLOAD_CURRENT_BLINDING_POINT; + if (!p->tlv->current_path_key) { + *failtlvtype = TLV_PAYLOAD_CURRENT_PATH_KEY; goto field_bad; } - p->blinding = tal_dup(p, struct pubkey, - p->tlv->current_blinding_point); + p->path_key = tal_dup(p, struct pubkey, + p->tlv->current_path_key); } /* BOLT #4: * The reader: *... * - MUST return an error if `encrypted_recipient_data` does - * not decrypt using the blinding point as described in + * not decrypt using the `path_key` as described in * [Route Blinding](#route-blinding). */ - ecdh(p->blinding, &p->blinding_ss); - enc = decrypt_encrypted_data(tmpctx, p->blinding, &p->blinding_ss, + ecdh(p->path_key, &p->blinding_ss); + enc = decrypt_encrypted_data(tmpctx, &p->blinding_ss, p->tlv->encrypted_recipient_data); if (!enc) { *failtlvtype = TLV_PAYLOAD_ENCRYPTED_RECIPIENT_DATA; @@ -331,11 +331,11 @@ struct onion_payload *onion_decode(const tal_t *ctx, /* BOLT #4: * - Otherwise (it is not part of a blinded route): - * - MUST return an error if `blinding_point` is set in the - * incoming `update_add_htlc` or `current_blinding_point` + * - MUST return an error if `path_key` is set in the + * incoming `update_add_htlc` or `current_path_key` * is present. */ - if (blinding || p->tlv->current_blinding_point) { + if (path_key || p->tlv->current_path_key) { *failtlvtype = TLV_PAYLOAD_ENCRYPTED_RECIPIENT_DATA; goto field_bad; } @@ -401,7 +401,7 @@ struct onion_payload *onion_decode(const tal_t *ctx, else p->payment_metadata = NULL; - p->blinding = NULL; + p->path_key = NULL; return p; diff --git a/common/onion_decode.h b/common/onion_decode.h index a9534ea6837e..3e09f03cd4e9 100644 --- a/common/onion_decode.h +++ b/common/onion_decode.h @@ -10,7 +10,7 @@ * @ctx: context to allocate onion_contents off. * @rs: the route_step, whose raw_payload is of at least length * onion_payload_length(). - * @blinding: the optional incoming blinding point. + * @path_key: the optional incoming path_key point. * @accepted_extra_tlvs: Allow these types to be in the TLV without failing * @amount_in: Incoming HTLC amount * @cltv_expiry: Incoming HTLC cltv_expiry @@ -21,7 +21,7 @@ */ struct onion_payload *onion_decode(const tal_t *ctx, const struct route_step *rs, - const struct pubkey *blinding, + const struct pubkey *path_key, const u64 *accepted_extra_tlvs, struct amount_msat amount_in, u32 cltv_expiry, diff --git a/common/onion_encode.c b/common/onion_encode.c index e300c0f02a5b..ee9747189b06 100644 --- a/common/onion_encode.c +++ b/common/onion_encode.c @@ -120,7 +120,7 @@ u8 *onion_blinded_hop(const tal_t *ctx, } tlv->outgoing_cltv_value = cast_const(u32 *, outgoing_cltv_value); tlv->encrypted_recipient_data = cast_const(u8 *, enctlv); - tlv->current_blinding_point = cast_const(struct pubkey *, blinding); + tlv->current_path_key = cast_const(struct pubkey *, blinding); return make_tlv_hop(ctx, tlv); } diff --git a/common/onion_encode.h b/common/onion_encode.h index 2e3ccdf36704..a570b0d098d7 100644 --- a/common/onion_encode.h +++ b/common/onion_encode.h @@ -28,8 +28,8 @@ struct onion_payload { struct secret *payment_secret; u8 *payment_metadata; - /* If blinding is set, blinding_ss is the shared secret.*/ - struct pubkey *blinding; + /* If path_key is set, blinding_ss is the shared secret.*/ + struct pubkey *path_key; struct secret blinding_ss; /* The raw TLVs contained in the payload. */ diff --git a/common/onion_message.c b/common/onion_message.c index 98e5b87d8e9e..c781866ee78c 100644 --- a/common/onion_message.c +++ b/common/onion_message.c @@ -69,17 +69,17 @@ struct blinded_path *blinded_path_from_encdata_tlvs(const tal_t *ctx, assert(tal_count(ids) > 0); randombytes_buf(&first_blinding, sizeof(first_blinding)); - if (!pubkey_from_privkey(&first_blinding, &path->blinding)) + if (!pubkey_from_privkey(&first_blinding, &path->first_path_key)) abort(); sciddir_or_pubkey_from_pubkey(&path->first_node_id, &ids[0]); - path->path = tal_arr(ctx, struct onionmsg_hop *, nhops); + path->path = tal_arr(ctx, struct blinded_path_hop *, nhops); blinding_iter = first_blinding; for (size_t i = 0; i < nhops; i++) { nodeid = get_nodeid(tlvs, ids, i); - path->path[i] = tal(path->path, struct onionmsg_hop); + path->path[i] = tal(path->path, struct blinded_path_hop); path->path[i]->encrypted_recipient_data = encrypt_tlv_encrypted_data(path->path[i], &blinding_iter, @@ -154,9 +154,9 @@ struct blinded_path *incoming_message_blinded_path(const tal_t *ctx, } static void extend_blinded_path(struct blinded_path *bpath, - const struct onionmsg_hop *hop) + const struct blinded_path_hop *hop) { - struct onionmsg_hop *newhop = tal(bpath->path, struct onionmsg_hop); + struct blinded_path_hop *newhop = tal(bpath->path, struct blinded_path_hop); newhop->blinded_node_id = hop->blinded_node_id; newhop->encrypted_recipient_data = tal_dup_talarr(newhop, u8, hop->encrypted_recipient_data); tal_arr_expand(&bpath->path, newhop); @@ -191,9 +191,9 @@ struct onion_message *outgoing_onion_message(const tal_t *ctx, /* We need to tell last hop to hand blinded_path blinding for next hop */ pre_final = etlvs[tal_count(ids)-2]; - pre_final->next_blinding_override = tal_dup(pre_final, + pre_final->next_path_key_override = tal_dup(pre_final, struct pubkey, - &their_path->blinding); + &their_path->first_path_key); } our_path = blinded_path_from_encdata_tlvs(tmpctx, @@ -221,7 +221,7 @@ struct onion_message *outgoing_onion_message(const tal_t *ctx, /* Now populate the onion message to return */ omsg = tal(ctx, struct onion_message); - omsg->first_blinding = combined_path->blinding; + omsg->first_path_key = combined_path->first_path_key; omsg->hops = onionmsg_tlvs_to_hops(omsg, combined_path, cast_const2(const struct tlv_onionmsg_tlv **, otlvs)); return omsg; diff --git a/common/onion_message.h b/common/onion_message.h index efa05c4cb874..03139828d5b5 100644 --- a/common/onion_message.h +++ b/common/onion_message.h @@ -106,7 +106,7 @@ struct blinded_path *incoming_message_blinded_path(const tal_t *ctx, /* A ready-to-be-encrypted-and-sent onion message. */ struct onion_message { - struct pubkey first_blinding; + struct pubkey first_path_key; struct sphinx_hop **hops; }; diff --git a/common/onion_message_parse.c b/common/onion_message_parse.c index 71dad51e9a7a..847a58d1e5df 100644 --- a/common/onion_message_parse.c +++ b/common/onion_message_parse.c @@ -12,7 +12,6 @@ #include static bool decrypt_final_onionmsg(const tal_t *ctx, - const struct pubkey *blinding, const struct secret *ss, const u8 *enctlv, const struct pubkey *my_id, @@ -24,7 +23,7 @@ static bool decrypt_final_onionmsg(const tal_t *ctx, if (!blindedpath_get_alias(ss, my_id, alias)) return false; - encmsg = decrypt_encrypted_data(tmpctx, blinding, ss, enctlv); + encmsg = decrypt_encrypted_data(tmpctx, ss, enctlv); if (!encmsg) return false; @@ -37,15 +36,15 @@ static bool decrypt_final_onionmsg(const tal_t *ctx, return true; } -static bool decrypt_forwarding_onionmsg(const struct pubkey *blinding, +static bool decrypt_forwarding_onionmsg(const struct pubkey *path_key, const struct secret *ss, const u8 *enctlv, struct sciddir_or_pubkey *next_node, - struct pubkey *next_blinding) + struct pubkey *next_path_key) { struct tlv_encrypted_data_tlv *encmsg; - encmsg = decrypt_encrypted_data(tmpctx, blinding, ss, enctlv); + encmsg = decrypt_encrypted_data(tmpctx, ss, enctlv); if (!encmsg) return false; @@ -79,14 +78,14 @@ static bool decrypt_forwarding_onionmsg(const struct pubkey *blinding, } else return false; - blindedpath_next_blinding(encmsg, blinding, ss, next_blinding); + blindedpath_next_path_key(encmsg, path_key, ss, next_path_key); return true; } /* Returns false on failure */ const char *onion_message_parse(const tal_t *ctx, const u8 *onion_message_packet, - const struct pubkey *blinding, + const struct pubkey *path_key, const struct pubkey *me, u8 **next_onion_msg, struct sciddir_or_pubkey *next_node, @@ -114,7 +113,7 @@ const char *onion_message_parse(const tal_t *ctx, } ephemeral = op->ephemeralkey; - if (!unblind_onion(blinding, ecdh, &ephemeral, &ss)) { + if (!unblind_onion(path_key, ecdh, &ephemeral, &ss)) { return tal_fmt(ctx, "onion_message_parse: can't unblind onionpacket"); } @@ -151,7 +150,7 @@ const char *onion_message_parse(const tal_t *ctx, if (!om->encrypted_recipient_data) { *final_alias = *me; *final_path_id = NULL; - } else if (!decrypt_final_onionmsg(ctx, blinding, &ss, + } else if (!decrypt_final_onionmsg(ctx, &ss, om->encrypted_recipient_data, me, final_alias, final_path_id)) { @@ -160,7 +159,7 @@ const char *onion_message_parse(const tal_t *ctx, " %s", tal_hex(tmpctx, om->encrypted_recipient_data)); } } else { - struct pubkey next_blinding; + struct pubkey next_path_key; *final_om = NULL; @@ -174,14 +173,14 @@ const char *onion_message_parse(const tal_t *ctx, } /* This fails as expected if no enctlv. */ - if (!decrypt_forwarding_onionmsg(blinding, &ss, om->encrypted_recipient_data, next_node, - &next_blinding)) { + if (!decrypt_forwarding_onionmsg(path_key, &ss, om->encrypted_recipient_data, next_node, + &next_path_key)) { return tal_fmt(ctx, "onion_message_parse: invalid encrypted_recipient_data %s", tal_hex(tmpctx, om->encrypted_recipient_data)); } *next_onion_msg = towire_onion_message(ctx, - &next_blinding, + &next_path_key, serialize_onionpacket(tmpctx, rs->next)); } diff --git a/common/onion_message_parse.h b/common/onion_message_parse.h index fe0608a90f9d..af4c51908946 100644 --- a/common/onion_message_parse.h +++ b/common/onion_message_parse.h @@ -12,7 +12,7 @@ struct pubkey; * onion_message_parse: core routine to check onion_message * @ctx: context to allocate @next_onion_msg or @final_om/@path_id off * @onion_message_packet: Sphinx-encrypted onion - * @blinding: Blinding we were given for @onion_message_packet + * @path_key: Path_Key we were given for @onion_message_packet * @me: my pubkey * @next_onion_msg (out): set if we should forward, otherwise NULL. * @next_node (out): set to node id or scid to fwd to, iff *@next_onion_msg. @@ -24,7 +24,7 @@ struct pubkey; */ const char *onion_message_parse(const tal_t *ctx, const u8 *onion_message_packet, - const struct pubkey *blinding, + const struct pubkey *path_key, const struct pubkey *me, u8 **next_onion_msg, struct sciddir_or_pubkey *next_node, diff --git a/common/sphinx.c b/common/sphinx.c index 3f63e4e66ffc..5a1b1cf89a10 100644 --- a/common/sphinx.c +++ b/common/sphinx.c @@ -219,7 +219,7 @@ struct onionpacket *parse_onionpacket(const tal_t *ctx, assert(max == 0); if (cursor == NULL) { - *failcode = WIRE_INVALID_REALM; + *failcode = WIRE_INVALID_ONION_HMAC; return tal_free(dest); } diff --git a/common/test/run-blindedpath_enctlv.c b/common/test/run-blindedpath_enctlv.c index af1459074b2a..c9408cba2dd5 100644 --- a/common/test/run-blindedpath_enctlv.c +++ b/common/test/run-blindedpath_enctlv.c @@ -95,13 +95,13 @@ static void test_ecdh(const struct pubkey *point, struct secret *ss) abort(); } -static void test_decrypt(const struct pubkey *blinding, +static void test_decrypt(const struct pubkey *path_key, const u8 *enctlv, const struct privkey *me, const struct pubkey *expected_next_node, - const struct privkey *expected_next_blinding_priv) + const struct privkey *expected_next_path_key_priv) { - struct pubkey expected_next_blinding, dummy, next_blinding; + struct pubkey expected_next_path_key, dummy, next_path_key; struct secret ss; struct tlv_encrypted_data_tlv *enc; @@ -109,17 +109,17 @@ static void test_decrypt(const struct pubkey *blinding, pubkey_from_privkey(me, &dummy); mykey = me; - assert(unblind_onion(blinding, test_ecdh, &dummy, &ss)); - enc = decrypt_encrypted_data(tmpctx, blinding, &ss, enctlv); + assert(unblind_onion(path_key, test_ecdh, &dummy, &ss)); + enc = decrypt_encrypted_data(tmpctx, &ss, enctlv); assert(enc); - pubkey_from_privkey(expected_next_blinding_priv, &expected_next_blinding); - blindedpath_next_blinding(enc, blinding, &ss, &next_blinding); - assert(pubkey_eq(&next_blinding, &expected_next_blinding)); + pubkey_from_privkey(expected_next_path_key_priv, &expected_next_path_key); + blindedpath_next_path_key(enc, path_key, &ss, &next_path_key); + assert(pubkey_eq(&next_path_key, &expected_next_path_key)); assert(pubkey_eq(enc->next_node_id, expected_next_node)); } -static void test_final_decrypt(const struct pubkey *blinding, +static void test_final_decrypt(const struct pubkey *path_key, const u8 *enctlv, const struct privkey *me, const struct pubkey *expected_alias, @@ -134,8 +134,8 @@ static void test_final_decrypt(const struct pubkey *blinding, mykey = me; pubkey_from_privkey(me, &my_pubkey); - assert(unblind_onion(blinding, test_ecdh, &dummy, &ss)); - enc = decrypt_encrypted_data(tmpctx, blinding, &ss, enctlv); + assert(unblind_onion(path_key, test_ecdh, &dummy, &ss)); + enc = decrypt_encrypted_data(tmpctx, &ss, enctlv); assert(enc); assert(blindedpath_get_alias(&ss, &my_pubkey, &alias)); @@ -146,8 +146,8 @@ static void test_final_decrypt(const struct pubkey *blinding, int main(int argc, char *argv[]) { - struct privkey alice, bob, carol, dave, blinding, override_blinding; - struct pubkey alice_id, bob_id, carol_id, dave_id, blinding_pub, override_blinding_pub, alias; + struct privkey alice, bob, carol, dave, path_key, override_path_key; + struct pubkey alice_id, bob_id, carol_id, dave_id, path_key_pub, override_path_key_pub, alias; struct secret self_id; u8 *enctlv; struct tlv_encrypted_data_tlv *tlv; @@ -163,8 +163,8 @@ int main(int argc, char *argv[]) pubkey_from_privkey(&carol, &carol_id); pubkey_from_privkey(&dave, &dave_id); - memset(&blinding, 5, sizeof(blinding)); - pubkey_from_privkey(&blinding, &blinding_pub); + memset(&path_key, 5, sizeof(path_key)); + pubkey_from_privkey(&path_key, &path_key_pub); /* We output the JSON test vectors. */ printf("[{"); @@ -173,10 +173,10 @@ int main(int argc, char *argv[]) fmt_privkey(tmpctx, &alice)); json_strfield("node_id", fmt_pubkey(tmpctx, &alice_id)); - json_strfield("blinding_secret", - fmt_privkey(tmpctx, &blinding)); - json_strfield("blinding", - fmt_pubkey(tmpctx, &blinding_pub)); + json_strfield("path_key_secret", + fmt_privkey(tmpctx, &path_key)); + json_strfield("path_key", + fmt_pubkey(tmpctx, &path_key_pub)); printf("\t\"encrypted_data_tlv\": {\n" "\t\t\"next_node_id\": \"%s\"\n" "\t},\n", @@ -184,50 +184,50 @@ int main(int argc, char *argv[]) tlv = tlv_encrypted_data_tlv_new(tmpctx); tlv->next_node_id = &bob_id; - enctlv = encrypt_tlv_encrypted_data(tmpctx, &blinding, &alice_id, tlv, - &blinding, &alias); + enctlv = encrypt_tlv_encrypted_data(tmpctx, &path_key, &alice_id, tlv, + &path_key, &alias); printf("\t\"encrypted_recipient_data_hex\": \"%s\"\n" "},\n", tal_hex(tmpctx, enctlv)); - test_decrypt(&blinding_pub, enctlv, &alice, &bob_id, &blinding); + test_decrypt(&path_key_pub, enctlv, &alice, &bob_id, &path_key); - pubkey_from_privkey(&blinding, &blinding_pub); - memset(&override_blinding, 7, sizeof(override_blinding)); - pubkey_from_privkey(&override_blinding, &override_blinding_pub); + pubkey_from_privkey(&path_key, &path_key_pub); + memset(&override_path_key, 7, sizeof(override_path_key)); + pubkey_from_privkey(&override_path_key, &override_path_key_pub); printf("{"); json_strfield("test name", - "Blinding-key-override encrypted_recipient_data for Bob, next is Carol"); + "path_key_override encrypted_recipient_data for Bob, next is Carol"); json_strfield("node_privkey", fmt_privkey(tmpctx, &bob)); json_strfield("node_id", fmt_pubkey(tmpctx, &bob_id)); - json_strfield("blinding_secret", - fmt_privkey(tmpctx, &blinding)); - json_strfield("blinding", - fmt_pubkey(tmpctx, &blinding_pub)); + json_strfield("path_key_secret", + fmt_privkey(tmpctx, &path_key)); + json_strfield("path_key", + fmt_pubkey(tmpctx, &path_key_pub)); printf("\t\"encrypted_data_tlv\": {\n" "\t\t\"next_node_id\": \"%s\",\n" - "\t\t\"blinding\": \"%s\"\n" + "\t\t\"path_key\": \"%s\"\n" "\t},\n", fmt_pubkey(tmpctx, &carol_id), - fmt_privkey(tmpctx, &override_blinding)); + fmt_privkey(tmpctx, &override_path_key)); tlv = tlv_encrypted_data_tlv_new(tmpctx); tlv->next_node_id = &carol_id; - tlv->next_blinding_override = &override_blinding_pub; - enctlv = encrypt_tlv_encrypted_data(tmpctx, &blinding, &bob_id, tlv, - &blinding, &alias); + tlv->next_path_key_override = &override_path_key_pub; + enctlv = encrypt_tlv_encrypted_data(tmpctx, &path_key, &bob_id, tlv, + &path_key, &alias); printf("\t\"encrypted_recipient_data_hex\": \"%s\"\n" "},\n", tal_hex(tmpctx, enctlv)); - test_decrypt(&blinding_pub, enctlv, &bob, &carol_id, &override_blinding); + test_decrypt(&path_key_pub, enctlv, &bob, &carol_id, &override_path_key); - /* That replaced the blinding */ - blinding = override_blinding; - blinding_pub = override_blinding_pub; + /* That replaced the path_key */ + path_key = override_path_key; + path_key_pub = override_path_key_pub; printf("{"); json_strfield("test name", "Padded encrypted_recipient_data for Carol, next is Dave"); @@ -235,10 +235,10 @@ int main(int argc, char *argv[]) fmt_privkey(tmpctx, &carol)); json_strfield("node_id", fmt_pubkey(tmpctx, &carol_id)); - json_strfield("blinding_secret", - fmt_privkey(tmpctx, &blinding)); - json_strfield("blinding", - fmt_pubkey(tmpctx, &blinding_pub)); + json_strfield("path_key_secret", + fmt_privkey(tmpctx, &path_key)); + json_strfield("path_key", + fmt_pubkey(tmpctx, &path_key_pub)); printf("\t\"encrypted_data_tlv\": {\n" "\t\t\"next_node_id\": \"%s\",\n" "\t\t\"padding\": \"%s\"\n" @@ -249,13 +249,13 @@ int main(int argc, char *argv[]) tlv = tlv_encrypted_data_tlv_new(tmpctx); tlv->padding = tal_arrz(tlv, u8, 35); tlv->next_node_id = &dave_id; - enctlv = encrypt_tlv_encrypted_data(tmpctx, &blinding, &carol_id, tlv, - &blinding, &alias); + enctlv = encrypt_tlv_encrypted_data(tmpctx, &path_key, &carol_id, tlv, + &path_key, &alias); printf("\t\"encrypted_recipient_data_hex\": \"%s\"\n" "},\n", tal_hex(tmpctx, enctlv)); - test_decrypt(&blinding_pub, enctlv, &carol, &dave_id, &blinding); + test_decrypt(&path_key_pub, enctlv, &carol, &dave_id, &path_key); for (size_t i = 0; i < sizeof(self_id); i++) self_id.data[i] = i+1; @@ -265,10 +265,10 @@ int main(int argc, char *argv[]) fmt_privkey(tmpctx, &dave)); json_strfield("node_id", fmt_pubkey(tmpctx, &dave_id)); - json_strfield("blinding_secret", - fmt_privkey(tmpctx, &blinding)); - json_strfield("blinding", - fmt_pubkey(tmpctx, &blinding_pub)); + json_strfield("path_key_secret", + fmt_privkey(tmpctx, &path_key)); + json_strfield("path_key", + fmt_pubkey(tmpctx, &path_key_pub)); printf("\t\"encrypted_data_tlv\": {\n" "\t\t\"self_id\": \"%s\"\n" "\t},\n", @@ -277,15 +277,15 @@ int main(int argc, char *argv[]) tlv = tlv_encrypted_data_tlv_new(tmpctx); tlv->path_id = tal_dup_arr(tlv, u8, self_id.data, ARRAY_SIZE(self_id.data), 0); - enctlv = encrypt_tlv_encrypted_data(tmpctx, &blinding, &dave_id, tlv, + enctlv = encrypt_tlv_encrypted_data(tmpctx, &path_key, &dave_id, tlv, NULL, &alias); printf("\t\"encrypted_recipient_data_hex\": \"%s\"\n", tal_hex(tmpctx, enctlv)); printf("}]\n"); - pubkey_from_privkey(&blinding, &blinding_pub); + pubkey_from_privkey(&path_key, &path_key_pub); - test_final_decrypt(&blinding_pub, enctlv, &dave, &alias, &self_id); + test_final_decrypt(&path_key_pub, enctlv, &dave, &alias, &self_id); common_shutdown(); } diff --git a/common/test/run-blindedpath_onion.c b/common/test/run-blindedpath_onion.c index 084e1a27eaa7..7fa7abe59c96 100644 --- a/common/test/run-blindedpath_onion.c +++ b/common/test/run-blindedpath_onion.c @@ -118,11 +118,11 @@ void ecdh(const struct pubkey *point, struct secret *ss) static u8 *next_onion(const tal_t *ctx, u8 *omsg, const struct privkey *nodekey, - const struct pubkey *expected_blinding) + const struct pubkey *expected_path_key) { struct onionpacket *op; - struct pubkey blinding, ephemeral; - struct pubkey next_blinding; + struct pubkey path_key, ephemeral; + struct pubkey next_path_key; struct tlv_onionmsg_tlv *om; struct secret ss, onion_ss; const u8 *cursor; @@ -130,14 +130,14 @@ static u8 *next_onion(const tal_t *ctx, u8 *omsg, struct route_step *rs; struct tlv_encrypted_data_tlv *enc; - assert(fromwire_onion_message(tmpctx, omsg, &blinding, &omsg)); - assert(pubkey_eq(&blinding, expected_blinding)); + assert(fromwire_onion_message(tmpctx, omsg, &path_key, &omsg)); + assert(pubkey_eq(&path_key, expected_path_key)); op = parse_onionpacket(tmpctx, omsg, tal_bytelen(omsg), NULL); ephemeral = op->ephemeralkey; ecdh_key = nodekey; - assert(unblind_onion(&blinding, ecdh, &ephemeral, &ss)); + assert(unblind_onion(&path_key, ecdh, &ephemeral, &ss)); ecdh(&ephemeral, &onion_ss); rs = process_onionpacket(tmpctx, op, &onion_ss, NULL, 0); @@ -152,17 +152,17 @@ static u8 *next_onion(const tal_t *ctx, u8 *omsg, if (rs->nextcase == ONION_END) return NULL; - enc = decrypt_encrypted_data(tmpctx, &blinding, &ss, om->encrypted_recipient_data); + enc = decrypt_encrypted_data(tmpctx, &ss, om->encrypted_recipient_data); assert(enc); - blindedpath_next_blinding(enc, &blinding, &ss, &next_blinding); - return towire_onion_message(ctx, &next_blinding, + blindedpath_next_path_key(enc, &path_key, &ss, &next_path_key); + return towire_onion_message(ctx, &next_path_key, serialize_onionpacket(tmpctx, rs->next)); } int main(int argc, char *argv[]) { - struct privkey nodekey[4], blinding[4], override_blinding; - struct pubkey id[4], blinding_pub[4], override_blinding_pub, alias[4]; + struct privkey nodekey[4], path_key[4], override_path_key; + struct pubkey id[4], path_key_pub[4], override_path_key_pub, alias[4]; struct secret self_id; struct tlv_encrypted_data_tlv *tlv[4]; u8 *enctlv[4]; @@ -181,43 +181,43 @@ int main(int argc, char *argv[]) } /* Make enctlvs as per enctlv test vectors */ - memset(&blinding[ALICE], 5, sizeof(blinding[ALICE])); - pubkey_from_privkey(&blinding[ALICE], &blinding_pub[ALICE]); + memset(&path_key[ALICE], 5, sizeof(path_key[ALICE])); + pubkey_from_privkey(&path_key[ALICE], &path_key_pub[ALICE]); tlv[ALICE] = tlv_encrypted_data_tlv_new(tmpctx); tlv[ALICE]->next_node_id = &id[BOB]; enctlv[ALICE] = encrypt_tlv_encrypted_data(tmpctx, - &blinding[ALICE], + &path_key[ALICE], &id[ALICE], tlv[ALICE], - &blinding[BOB], + &path_key[BOB], &alias[ALICE]); - pubkey_from_privkey(&blinding[BOB], &blinding_pub[BOB]); + pubkey_from_privkey(&path_key[BOB], &path_key_pub[BOB]); - /* We override blinding for Carol. */ - memset(&override_blinding, 7, sizeof(override_blinding)); - pubkey_from_privkey(&override_blinding, &override_blinding_pub); + /* We override path_key for Carol. */ + memset(&override_path_key, 7, sizeof(override_path_key)); + pubkey_from_privkey(&override_path_key, &override_path_key_pub); tlv[BOB] = tlv_encrypted_data_tlv_new(tmpctx); tlv[BOB]->next_node_id = &id[CAROL]; - tlv[BOB]->next_blinding_override = &override_blinding_pub; + tlv[BOB]->next_path_key_override = &override_path_key_pub; enctlv[BOB] = encrypt_tlv_encrypted_data(tmpctx, - &blinding[BOB], + &path_key[BOB], &id[BOB], tlv[BOB], - &blinding[CAROL], + &path_key[CAROL], &alias[BOB]); - /* That replaced the blinding */ - blinding[CAROL] = override_blinding; - blinding_pub[CAROL] = override_blinding_pub; + /* That replaced the path_key */ + path_key[CAROL] = override_path_key; + path_key_pub[CAROL] = override_path_key_pub; tlv[CAROL] = tlv_encrypted_data_tlv_new(tmpctx); tlv[CAROL]->next_node_id = &id[DAVE]; tlv[CAROL]->padding = tal_arrz(tlv[CAROL], u8, 35); enctlv[CAROL] = encrypt_tlv_encrypted_data(tmpctx, - &blinding[CAROL], + &path_key[CAROL], &id[CAROL], tlv[CAROL], - &blinding[DAVE], + &path_key[DAVE], &alias[CAROL]); for (size_t i = 0; i < sizeof(self_id); i++) @@ -228,11 +228,11 @@ int main(int argc, char *argv[]) self_id.data, ARRAY_SIZE(self_id.data), 0); enctlv[DAVE] = encrypt_tlv_encrypted_data(tmpctx, - &blinding[DAVE], + &path_key[DAVE], &id[DAVE], tlv[DAVE], NULL, &alias[DAVE]); - pubkey_from_privkey(&blinding[DAVE], &blinding_pub[DAVE]); + pubkey_from_privkey(&path_key[DAVE], &path_key_pub[DAVE]); /* Create an onion which encodes this. */ sphinx_path = sphinx_path_new(tmpctx, NULL); @@ -248,7 +248,7 @@ int main(int argc, char *argv[]) &path_secrets); /* And finally, the onion message as handed to Alice */ - omsg = towire_onion_message(tmpctx, &blinding_pub[ALICE], + omsg = towire_onion_message(tmpctx, &path_key_pub[ALICE], serialize_onionpacket(tmpctx, op)); printf("{\n"); @@ -265,10 +265,10 @@ int main(int argc, char *argv[]) printf("\t\"onion_message\": {"); json_strfield("raw", tal_hex(tmpctx, omsg)); - json_strfield("blinding_secret", - fmt_privkey(tmpctx, &blinding[i])); - json_strfield("blinding", - fmt_pubkey(tmpctx, &blinding_pub[i])); + json_strfield("path_key_secret", + fmt_privkey(tmpctx, &path_key[i])); + json_strfield("path_key", + fmt_pubkey(tmpctx, &path_key_pub[i])); json_strfield("blinded_alias", fmt_pubkey(tmpctx, &alias[i])); json_strfield("onionmsg_tlv", @@ -280,7 +280,7 @@ int main(int argc, char *argv[]) printf(",\n"); /* Unwrap for next hop */ - omsg = next_onion(tmpctx, omsg, &nodekey[i], &blinding_pub[i]); + omsg = next_onion(tmpctx, omsg, &nodekey[i], &path_key_pub[i]); } assert(!omsg); printf("\n]}\n"); diff --git a/common/test/run-bolt12-encode-test.c b/common/test/run-bolt12-encode-test.c index 0b59adaef473..c471dd386926 100644 --- a/common/test/run-bolt12-encode-test.c +++ b/common/test/run-bolt12-encode-test.c @@ -230,19 +230,19 @@ int main(int argc, char *argv[]) offer->offer_paths[0]->first_node_id.is_pubkey = true; assert(pubkey_from_secret(&bob, &offer->offer_paths[0]->first_node_id.pubkey)); /* Random blinding secret. */ - assert(pubkey_from_hexstr("020202020202020202020202020202020202020202020202020202020202020202", 66, &offer->offer_paths[0]->blinding)); + assert(pubkey_from_hexstr("020202020202020202020202020202020202020202020202020202020202020202", 66, &offer->offer_paths[0]->first_path_key)); offer->offer_paths[0]->path = tal_arr(offer->offer_paths[0], - struct onionmsg_hop *, + struct blinded_path_hop *, 2); offer->offer_paths[0]->path[0] = tal(offer->offer_paths[0]->path, - struct onionmsg_hop); + struct blinded_path_hop); assert(pubkey_from_hexstr("020202020202020202020202020202020202020202020202020202020202020202", 66, &offer->offer_paths[0]->path[0]->blinded_node_id)); offer->offer_paths[0]->path[0]->encrypted_recipient_data = tal_arrz(offer->offer_paths[0]->path[0], u8, 16); offer->offer_paths[0]->path[1] = tal(offer->offer_paths[0]->path, - struct onionmsg_hop); + struct blinded_path_hop); assert(pubkey_from_hexstr("020202020202020202020202020202020202020202020202020202020202020202", 66, &offer->offer_paths[0]->path[1]->blinded_node_id)); offer->offer_paths[0]->path[1]->encrypted_recipient_data = tal_hexdata(offer->offer_paths[0]->path[1], "1111111111111111", 16); - print_valid_offer(offer, "with blinded path via Bob (0x424242...), blinding 020202...", + print_valid_offer(offer, "with blinded path via Bob (0x424242...), path_key 020202...", "path is [id=02020202..., enc=0x00*16], [id=02020202..., enc=0x11*8]", NULL); /* BOLT-offers #12: @@ -253,7 +253,7 @@ int main(int argc, char *argv[]) * - MUST set `offer_issuer_id` to the node's public key to request the invoice from. */ offer->offer_issuer_id = tal_free(offer->offer_issuer_id); - print_valid_offer(offer, "with no issuer_id and blinded path via Bob (0x424242...), blinding 020202...", + print_valid_offer(offer, "with no issuer_id and blinded path via Bob (0x424242...), path_key 020202...", "path is [id=02020202..., enc=0x00*16], [id=02020202..., enc=0x11*8]", NULL); offer->offer_issuer_id = tal(offer, struct pubkey); assert(pubkey_from_secret(&alice, offer->offer_issuer_id)); @@ -263,20 +263,20 @@ int main(int argc, char *argv[]) offer->offer_paths[1]->first_node_id.is_pubkey = false; assert(short_channel_id_dir_from_str("1x2x3/1", strlen("1x2x3/1"), &offer->offer_paths[1]->first_node_id.scidd)); - /* Random blinding secret. */ - assert(pubkey_from_hexstr("020202020202020202020202020202020202020202020202020202020202020202", 66, &offer->offer_paths[1]->blinding)); + /* Random path_key secret. */ + assert(pubkey_from_hexstr("020202020202020202020202020202020202020202020202020202020202020202", 66, &offer->offer_paths[1]->first_path_key)); offer->offer_paths[1]->path = tal_arr(offer->offer_paths[1], - struct onionmsg_hop *, + struct blinded_path_hop *, 2); offer->offer_paths[1]->path[0] = tal(offer->offer_paths[1]->path, - struct onionmsg_hop); + struct blinded_path_hop); assert(pubkey_from_hexstr("020202020202020202020202020202020202020202020202020202020202020202", 66, &offer->offer_paths[1]->path[0]->blinded_node_id)); offer->offer_paths[1]->path[0]->encrypted_recipient_data = tal_arrz(offer->offer_paths[1]->path[0], u8, 16); offer->offer_paths[1]->path[1] = tal(offer->offer_paths[1]->path, - struct onionmsg_hop); + struct blinded_path_hop); assert(pubkey_from_hexstr("020202020202020202020202020202020202020202020202020202020202020202", 66, &offer->offer_paths[1]->path[1]->blinded_node_id)); offer->offer_paths[1]->path[1]->encrypted_recipient_data = tal_hexdata(offer->offer_paths[1]->path[1], "2222222222222222", 16); - print_valid_offer(offer, "... and with second blinded path via 1x2x3 (direction 1), blinding 020202...", + print_valid_offer(offer, "... and with second blinded path via 1x2x3 (direction 1), path_key 020202...", "path is [id=02020202..., enc=0x00*16], [id=02020202..., enc=0x22*8]", NULL); paths = offer->offer_paths; offer->offer_paths = NULL; @@ -353,7 +353,7 @@ int main(int argc, char *argv[]) "0A05414C494345" "100202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020102020202020202020202020202020202020202020202020202020202020202020201" "1621020202020202020202020202020202020202020202020202020202020202020202", - "Malformed: truncated onionmsg_hop in blinded_path"); + "Malformed: truncated blinded_path_hop in blinded_path"); print_malformed_tlv("lno", "0A05414C494345" "10030303030303030303030303030303030303030303030303030303030303030303020202020202020202020202020202020202020202020202020202020202020202010202020202020202020202020202020202020202020202020202020202020202020100" @@ -363,12 +363,12 @@ int main(int argc, char *argv[]) "0A05414C494345" "10020202020202020202020202020202020202020202020202020202020202020202030303030303030303030303030303030303030303030303030303030303030303010202020202020202020202020202020202020202020202020202020202020202020100" "1621020202020202020202020202020202020202020202020202020202020202020202", - "Malformed: bad blinding in blinded_path"); + "Malformed: bad path_key in blinded_path"); print_malformed_tlv("lno", "0A05414C494345" "10020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202010303030303030303030303030303030303030303030303030303030303030303030100" "1621020202020202020202020202020202020202020202020202020202020202020202", - "Malformed: bad blinded_node_id in onionmsg_hop"); + "Malformed: bad blinded_node_id in blinded_path_hop"); print_malformed_tlv("lno", "0A05414C494345" diff --git a/common/test/run-onion-message-test.c b/common/test/run-onion-message-test.c index 7017da3cf5f7..ae1d55de76ac 100644 --- a/common/test/run-onion-message-test.c +++ b/common/test/run-onion-message-test.c @@ -119,15 +119,15 @@ void ecdh(const struct pubkey *point, struct secret *ss) #define LARGEST_DAVE_TLV_SIZE 42 /* Generic, ugly, function to calc encrypted_recipient_data, - alias and next blinding, and print out JSON */ + alias and next path_key, and print out JSON */ static u8 *add_hop(const char *name, const char *comment, const struct pubkey *me, const struct pubkey *next, - const struct privkey *override_blinding, + const struct privkey *override_path_key, const char *additional_field_hexstr, const char *path_id_hexstr, - struct privkey *blinding, /* in and out */ + struct privkey *path_key, /* in and out */ struct pubkey *alias /* out */) { struct tlv_encrypted_data_tlv *tlv = tlv_encrypted_data_tlv_new(tmpctx); @@ -137,7 +137,7 @@ static u8 *add_hop(const char *name, json_start(NULL, '{'); json_strfield("alias", name); json_strfield("comment", comment); - json_hexfield("blinding_secret", blinding->secret.data, sizeof(*blinding)); + json_hexfield("path_key_secret", path_key->secret.data, sizeof(*path_key)); /* We have to calc first, to make padding correct */ tlv->next_node_id = tal_dup_or_null(tlv, struct pubkey, next); @@ -145,12 +145,12 @@ static u8 *add_hop(const char *name, tlv->path_id = tal_hexdata(tlv, path_id_hexstr, strlen(path_id_hexstr)); - /* Normally we wouldn't know blinding privkey, and we'd just + /* Normally we wouldn't know path_key privkey, and we'd just * paste in the rest of the path as given, but here we're actually * generating the lot. */ - if (override_blinding) { - tlv->next_blinding_override = tal(tlv, struct pubkey); - assert(pubkey_from_privkey(override_blinding, tlv->next_blinding_override)); + if (override_path_key) { + tlv->next_path_key_override = tal(tlv, struct pubkey); + assert(pubkey_from_privkey(override_path_key, tlv->next_path_key_override)); } /* This is assumed to be a valid TLV tuple, and greater than @@ -178,7 +178,7 @@ static u8 *add_hop(const char *name, enctlv = tal_arr(tmpctx, u8, 0); towire_tlv_encrypted_data_tlv(&enctlv, tlv); towire(&enctlv, additional, tal_bytelen(additional)); - if (!override_blinding) + if (!override_path_key) assert(tal_bytelen(enctlv) == LARGEST_DAVE_TLV_SIZE); json_start("tlvs", '{'); @@ -188,12 +188,12 @@ static u8 *add_hop(const char *name, json_pubkey("next_node_id", tlv->next_node_id); if (tlv->path_id) json_hex_talfield("path_id", tlv->path_id); - if (tlv->next_blinding_override) { - json_pubkey("next_blinding_override", - tlv->next_blinding_override); - json_hexfield("blinding_override_secret", - override_blinding->secret.data, - sizeof(*override_blinding)); + if (tlv->next_path_key_override) { + json_pubkey("next_path_key_override", + tlv->next_path_key_override); + json_hexfield("path_key_override_secret", + override_path_key->secret.data, + sizeof(*override_path_key)); } if (additional) { /* Deconstruct into type, len, value */ @@ -211,16 +211,16 @@ static u8 *add_hop(const char *name, flush_comma(); enable_superverbose = true; encrypted_recipient_data = enctlv_from_encmsg_raw(tmpctx, - blinding, + path_key, me, enctlv, - blinding, + path_key, alias); enable_superverbose = false; json_hex_talfield("encrypted_recipient_data", encrypted_recipient_data); - if (override_blinding) - *blinding = *override_blinding; + if (override_path_key) + *path_key = *override_path_key; json_end('}'); maybe_comma(); @@ -230,8 +230,8 @@ static u8 *add_hop(const char *name, int main(int argc, char *argv[]) { const char *alias[] = {"Alice", "Bob", "Carol", "Dave"}; - struct privkey privkey[ARRAY_SIZE(alias)], blinding, override_blinding; - struct pubkey id[ARRAY_SIZE(alias)], blinding_pub; + struct privkey privkey[ARRAY_SIZE(alias)], path_key, override_path_key; + struct pubkey id[ARRAY_SIZE(alias)], path_key_pub; struct secret session_key; u8 *erd[ARRAY_SIZE(alias)]; /* encrypted_recipient_data */ u8 *onion_message_packet, *onion_message; @@ -257,36 +257,36 @@ int main(int argc, char *argv[]) json_hexfield("session_key", session_key.data, sizeof(session_key)); json_start("hops", '['); - memset(&blinding, 99, sizeof(blinding)); - memset(&override_blinding, 1, sizeof(override_blinding)); - erd[0] = add_hop("Alice", "Alice->Bob: note next_blinding_override to match that give by Dave for Bob", + memset(&path_key, 99, sizeof(path_key)); + memset(&override_path_key, 1, sizeof(override_path_key)); + erd[0] = add_hop("Alice", "Alice->Bob: note next_path_key_override to match that give by Dave for Bob", &id[0], &id[1], - &override_blinding, NULL, NULL, - &blinding, &blinded[0]); + &override_path_key, NULL, NULL, + &path_key, &blinded[0]); erd[1] = add_hop("Bob", "Bob->Carol", &id[1], &id[2], NULL, "fd023103123456", NULL, - &blinding, &blinded[1]); + &path_key, &blinded[1]); erd[2] = add_hop("Carol", "Carol->Dave", &id[2], &id[3], NULL, NULL, NULL, - &blinding, &blinded[2]); + &path_key, &blinded[2]); erd[3] = add_hop("Dave", "Dave is final node, hence path_id", &id[3], NULL, NULL, "fdffff0206c1", "deadbeefbadc0ffeedeadbeefbadc0ffeedeadbeefbadc0ffeedeadbeefbadc0", - &blinding, &blinded[3]); + &path_key, &blinded[3]); json_end(']'); json_end('}'); maybe_comma(); - memset(&blinding, 99, sizeof(blinding)); - assert(pubkey_from_privkey(&blinding, &blinding_pub)); + memset(&path_key, 99, sizeof(path_key)); + assert(pubkey_from_privkey(&path_key, &path_key_pub)); json_start("route", '{'); json_strfield("comment", "The resulting blinded route Alice to Dave."); json_pubkey("introduction_node_id", &id[0]); - json_pubkey("blinding", &blinding_pub); + json_pubkey("path_key", &path_key_pub); json_start("hops", '['); for (size_t i = 0; i < ARRAY_SIZE(erd); i++) { @@ -338,7 +338,7 @@ int main(int argc, char *argv[]) json_start("decrypt", '{'); json_strfield("comment", "This section contains the internal values generated by intermediate nodes when decrypting the onion."); - onion_message = towire_onion_message(tmpctx, &blinding_pub, onion_message_packet); + onion_message = towire_onion_message(tmpctx, &path_key_pub, onion_message_packet); json_start("hops", '['); for (size_t i = 0; i < ARRAY_SIZE(erd); i++) { @@ -354,11 +354,11 @@ int main(int argc, char *argv[]) /* Now, do full decrypt code, to check */ assert(fromwire_onion_message(tmpctx, onion_message, - &blinding_pub, &onion_message_packet)); + &path_key_pub, &onion_message_packet)); /* For test_ecdh */ mykey = &privkey[i]; - assert(onion_message_parse(tmpctx, onion_message_packet, &blinding_pub, + assert(onion_message_parse(tmpctx, onion_message_packet, &path_key_pub, &id[i], &onion_message, &next_node, &final_om, diff --git a/common/test/run-onion-test-vector.c b/common/test/run-onion-test-vector.c index a42cf1e9b802..e7246dc0f1b6 100644 --- a/common/test/run-onion-test-vector.c +++ b/common/test/run-onion-test-vector.c @@ -59,7 +59,6 @@ struct amount_sat amount_tx_fee(u32 fee_per_kw UNNEEDED, size_t weight UNNEEDED) { fprintf(stderr, "amount_tx_fee called!\n"); abort(); } /* Generated stub for decrypt_encrypted_data */ struct tlv_encrypted_data_tlv *decrypt_encrypted_data(const tal_t *ctx UNNEEDED, - const struct pubkey *blinding UNNEEDED, const struct secret *ss UNNEEDED, const u8 *enctlv) diff --git a/common/test/run-route_blinding_onion_test.c b/common/test/run-route_blinding_onion_test.c index 45610fa7c61f..4435ee576b30 100644 --- a/common/test/run-route_blinding_onion_test.c +++ b/common/test/run-route_blinding_onion_test.c @@ -111,7 +111,7 @@ int main(int argc, char *argv[]) "final_amount_msat:%," "final_cltv:%," "blinded_payinfo:{fee_base_msat:%,fee_proportional_millionths:%,cltv_expiry_delta:%}," - "blinded_route:{introduction_node_id:%,blinding:%,hops:%}}}", + "blinded_route:{first_node_id:%,first_path_key:%,hops:%}}}", JSON_SCAN(json_to_secret, &session_key), JSON_SCAN_TAL(tmpctx, json_tok_bin_from_hex, &associated_data), JSON_SCAN(json_to_msat, &final_amount), @@ -120,14 +120,14 @@ int main(int argc, char *argv[]) JSON_SCAN(json_to_u32, &path_fee_proportional_millionths), JSON_SCAN(json_to_u32, &path_cltv_delta), JSON_SCAN(json_to_pubkey, &bpath->first_node_id.pubkey), - JSON_SCAN(json_to_pubkey, &bpath->blinding), + JSON_SCAN(json_to_pubkey, &bpath->first_path_key), JSON_SCAN(json_to_tok, &hops_tok)) == NULL); /* FIXME: Test scid as well! */ bpath->first_node_id.is_pubkey = true; - bpath->path = tal_arr(bpath, struct onionmsg_hop *, hops_tok->size); + bpath->path = tal_arr(bpath, struct blinded_path_hop *, hops_tok->size); json_for_each_arr(i, t, hops_tok) { - bpath->path[i] = tal(bpath->path, struct onionmsg_hop); + bpath->path[i] = tal(bpath->path, struct blinded_path_hop); assert(json_scan(tmpctx, json, t, "{blinded_node_id:%,encrypted_data:%}", JSON_SCAN(json_to_pubkey, &bpath->path[i]->blinded_node_id), diff --git a/common/test/run-route_blinding_test.c b/common/test/run-route_blinding_test.c index 6cc627762ddb..3358319dfae3 100644 --- a/common/test/run-route_blinding_test.c +++ b/common/test/run-route_blinding_test.c @@ -118,10 +118,10 @@ static u8 *json_to_enctlvs(const tal_t *ctx, enctlv->path_id = json_tok_bin_from_hex(enctlv, buf, t+1); assert(enctlv->path_id); - } else if (json_tok_streq(buf, t, "next_blinding_override")) { - enctlv->next_blinding_override = tal(enctlv, struct pubkey); + } else if (json_tok_streq(buf, t, "next_path_key_override")) { + enctlv->next_path_key_override = tal(enctlv, struct pubkey); assert(json_to_pubkey(buf, t+1, - enctlv->next_blinding_override)); + enctlv->next_path_key_override)); } else if (json_tok_streq(buf, t, "payment_relay")) { enctlv->payment_relay = json_to_payment_relay(enctlv, buf, t+1); } else if (json_tok_streq(buf, t, "payment_constraints")) { @@ -159,7 +159,7 @@ int main(int argc, char *argv[]) const jsmntok_t *t, *hops_tok; struct pubkey *ids; u8 **enctlvs; - struct privkey blinding; + struct privkey path_key; common_setup(argv[0]); @@ -204,7 +204,7 @@ int main(int argc, char *argv[]) struct pubkey alias, expected_alias; assert(json_to_secret(json, - json_get_member(json, t, "ephemeral_privkey"), + json_get_member(json, t, "path_privkey"), &s)); /* First blinding/replacement is stated, remainder are @@ -212,20 +212,20 @@ int main(int argc, char *argv[]) if (json_get_member(json, t, "session_key")) assert(json_to_secret(json, json_get_member(json, t, "session_key"), - &blinding.secret)); + &path_key.secret)); else - assert(secret_eq_consttime(&blinding.secret, &s)); + assert(secret_eq_consttime(&path_key.secret, &s)); - assert(pubkey_from_privkey(&blinding, &pubkey)); - json_to_pubkey(json, json_get_member(json, t, "ephemeral_pubkey"), + assert(pubkey_from_privkey(&path_key, &pubkey)); + json_to_pubkey(json, json_get_member(json, t, "path_key"), &expected_pubkey); assert(pubkey_eq(&pubkey, &expected_pubkey)); enctlv = enctlv_from_encmsg_raw(tmpctx, - &blinding, + &path_key, &ids[i], enctlvs[i], - &blinding, + &path_key, &alias); expected_enctlv = json_tok_bin_from_hex(tmpctx,json, json_get_member(json, t, diff --git a/common/test/run-sphinx.c b/common/test/run-sphinx.c index 1af7090907e8..2bca7edf4253 100644 --- a/common/test/run-sphinx.c +++ b/common/test/run-sphinx.c @@ -60,7 +60,6 @@ size_t bigsize_put(u8 buf[BIGSIZE_MAX_LEN] UNNEEDED, bigsize_t v UNNEEDED) { fprintf(stderr, "bigsize_put called!\n"); abort(); } /* Generated stub for decrypt_encrypted_data */ struct tlv_encrypted_data_tlv *decrypt_encrypted_data(const tal_t *ctx UNNEEDED, - const struct pubkey *blinding UNNEEDED, const struct secret *ss UNNEEDED, const u8 *enctlv) diff --git a/connectd/connectd_wire.csv b/connectd/connectd_wire.csv index 9c3aaa7736c3..c85ab8ec7902 100644 --- a/connectd/connectd_wire.csv +++ b/connectd/connectd_wire.csv @@ -147,11 +147,11 @@ msgtype,connectd_send_onionmsg,2041 msgdata,connectd_send_onionmsg,id,node_id, msgdata,connectd_send_onionmsg,onion_len,u16, msgdata,connectd_send_onionmsg,onion,u8,onion_len -msgdata,connectd_send_onionmsg,blinding,pubkey, +msgdata,connectd_send_onionmsg,path_key,pubkey, # Lightningd tells us to digest an onion message. msgtype,connectd_inject_onionmsg,2042 -msgdata,connectd_inject_onionmsg,blinding,pubkey, +msgdata,connectd_inject_onionmsg,path_key,pubkey, msgdata,connectd_inject_onionmsg,onion_len,u16, msgdata,connectd_inject_onionmsg,onion,u8,onion_len diff --git a/connectd/onion_message.c b/connectd/onion_message.c index 9c29aab51366..03c4821a01b6 100644 --- a/connectd/onion_message.c +++ b/connectd/onion_message.c @@ -21,24 +21,24 @@ void onionmsg_req(struct daemon *daemon, const u8 *msg) { struct node_id id; u8 *onionmsg; - struct pubkey blinding; + struct pubkey path_key; struct peer *peer; - if (!fromwire_connectd_send_onionmsg(msg, msg, &id, &onionmsg, &blinding)) + if (!fromwire_connectd_send_onionmsg(msg, msg, &id, &onionmsg, &path_key)) master_badmsg(WIRE_CONNECTD_SEND_ONIONMSG, msg); /* Even though lightningd checks for valid ids, there's a race * where it might vanish before we read this command. */ peer = peer_htable_get(daemon->peers, &id); if (peer) { - u8 *omsg = towire_onion_message(NULL, &blinding, onionmsg); + u8 *omsg = towire_onion_message(NULL, &path_key, onionmsg); inject_peer_msg(peer, take(omsg)); } } static const char *handle_onion(const tal_t *ctx, struct daemon *daemon, - const struct pubkey *blinding, + const struct pubkey *path_key, const u8 *onion) { u8 *next_onion_msg; @@ -48,7 +48,7 @@ static const char *handle_onion(const tal_t *ctx, struct secret *final_path_id; const char *err; - err = onion_message_parse(tmpctx, onion, blinding, + err = onion_message_parse(tmpctx, onion, path_key, &daemon->mykey, &next_onion_msg, &next_node, &final_om, &final_alias, &final_path_id); @@ -113,7 +113,7 @@ static const char *handle_onion(const tal_t *ctx, void handle_onion_message(struct daemon *daemon, struct peer *peer, const u8 *msg) { - struct pubkey blinding; + struct pubkey path_key; u8 *onion; u64 msec; struct timemono now = time_mono(); @@ -144,26 +144,26 @@ void handle_onion_message(struct daemon *daemon, } peer->onionmsg_incoming_tokens -= ONION_MSG_MSEC; - if (!fromwire_onion_message(msg, msg, &blinding, &onion)) { + if (!fromwire_onion_message(msg, msg, &path_key, &onion)) { inject_peer_msg(peer, take(towire_warningfmt(NULL, NULL, "Bad onion_message"))); return; } - handle_onion(tmpctx, daemon, &blinding, onion); + handle_onion(tmpctx, daemon, &path_key, onion); } void inject_onionmsg_req(struct daemon *daemon, const u8 *msg) { u8 *onionmsg; - struct pubkey blinding; + struct pubkey path_key; const char *err; - if (!fromwire_connectd_inject_onionmsg(msg, msg, &blinding, &onionmsg)) + if (!fromwire_connectd_inject_onionmsg(msg, msg, &path_key, &onionmsg)) master_badmsg(WIRE_CONNECTD_INJECT_ONIONMSG, msg); - err = handle_onion(tmpctx, daemon, &blinding, onionmsg); + err = handle_onion(tmpctx, daemon, &path_key, onionmsg); daemon_conn_send(daemon->master, take(towire_connectd_inject_onionmsg_reply(NULL, err ? err : ""))); } diff --git a/contrib/msggen/msggen/schema.json b/contrib/msggen/msggen/schema.json index 7f2eb7e4158a..6cd0b0d4af9a 100644 --- a/contrib/msggen/msggen/schema.json +++ b/contrib/msggen/msggen/schema.json @@ -7397,7 +7397,7 @@ "items": { "type": "object", "required": [ - "blinding", + "first_path_key", "path" ], "additionalProperties": false, @@ -7423,11 +7423,22 @@ ] }, "blinding": { + "deprecated": [ + "v24.11", + "v25.05" + ], "type": "pubkey", "description": [ "Blinding factor for this path." ] }, + "first_path_key": { + "added": "v24.11", + "type": "pubkey", + "description": [ + "Path key to deliver to first hop on this path." + ] + }, "path": { "type": "array", "description": [ @@ -7815,7 +7826,7 @@ "items": { "type": "object", "required": [ - "blinding", + "first_path_key", "path" ], "additionalProperties": false, @@ -7840,7 +7851,18 @@ "which end of the first_scid is the start of the path" ] }, + "first_path_key": { + "added": "v24.11", + "type": "pubkey", + "description": [ + "Path key to deliver to first hop on this path." + ] + }, "blinding": { + "deprecated": [ + "v24.11", + "v25.05" + ], "type": "pubkey", "description": [ "Blinding factor for this path." @@ -8031,7 +8053,7 @@ "items": { "type": "object", "required": [ - "blinding", + "first_path_key", "path" ], "additionalProperties": false, @@ -8059,11 +8081,22 @@ }, "blinding": { "added": "v24.08", + "deprecated": [ + "v24.11", + "v25.05" + ], "type": "pubkey", "description": [ "Blinding factor for this path." ] }, + "first_path_key": { + "added": "v24.11", + "type": "pubkey", + "description": [ + "Path key to deliver to first hop on this path." + ] + }, "path": { "type": "array", "added": "v24.08", @@ -8390,7 +8423,7 @@ "items": { "type": "object", "required": [ - "blinding", + "first_path_key", "path" ], "additionalProperties": false, @@ -8416,11 +8449,22 @@ ] }, "blinding": { + "deprecated": [ + "v24.11", + "v25.05" + ], "type": "pubkey", "description": [ "Blinding factor for this path." ] }, + "first_path_key": { + "added": "v24.11", + "type": "pubkey", + "description": [ + "Path key to deliver to first hop on this path." + ] + }, "path": { "type": "array", "description": [ @@ -8606,7 +8650,7 @@ "items": { "type": "object", "required": [ - "blinding", + "first_path_key", "path" ], "additionalProperties": false, @@ -8634,11 +8678,22 @@ }, "blinding": { "added": "v24.08", + "deprecated": [ + "v24.11", + "v25.05" + ], "type": "pubkey", "description": [ "Blinding factor for this path." ] }, + "first_path_key": { + "added": "v24.11", + "type": "pubkey", + "description": [ + "Path key to deliver to first hop on this path." + ] + }, "path": { "type": "array", "added": "v24.08", @@ -8693,7 +8748,7 @@ "items": { "type": "object", "required": [ - "blinding", + "first_path_key", "payinfo", "path" ], @@ -8721,10 +8776,21 @@ }, "blinding": { "type": "pubkey", + "deprecated": [ + "v24.11", + "v25.05" + ], "description": [ "Blinding factor for this path." ] }, + "first_path_key": { + "added": "v24.11", + "type": "pubkey", + "description": [ + "Path key to deliver to first hop on this path." + ] + }, "payinfo": { "type": "object", "required": [ diff --git a/contrib/pyln-grpc-proto/pyln/grpc/node_pb2.py b/contrib/pyln-grpc-proto/pyln/grpc/node_pb2.py index 83b54a314693..69bdcbd9184c 100644 --- a/contrib/pyln-grpc-proto/pyln/grpc/node_pb2.py +++ b/contrib/pyln-grpc-proto/pyln/grpc/node_pb2.py @@ -15,7 +15,7 @@ from pyln.grpc import primitives_pb2 as primitives__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\nnode.proto\x12\x03\x63ln\x1a\x10primitives.proto\"\x10\n\x0eGetinfoRequest\"\xc1\x04\n\x0fGetinfoResponse\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x12\n\x05\x61lias\x18\x02 \x01(\tH\x00\x88\x01\x01\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\x33\n\x0cour_features\x18\n \x01(\x0b\x32\x18.cln.GetinfoOur_featuresH\x01\x88\x01\x01\x12\x13\n\x0b\x62lockheight\x18\x0b \x01(\r\x12\x0f\n\x07network\x18\x0c \x01(\t\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\x02\x88\x01\x01\x12$\n\x17warning_lightningd_sync\x18\x11 \x01(\tH\x03\x88\x01\x01\x42\x08\n\x06_aliasB\x0f\n\r_our_featuresB\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\"\xc4\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\"G\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\x42\n\n\x08_address\"\xac\x02\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\x12\x14\n\x07subtype\x18\x05 \x01(\tH\x03\x88\x01\x01\"_\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\x12\r\n\tWEBSOCKET\x10\x05\x42\n\n\x08_addressB\x07\n\x05_portB\t\n\x07_socketB\n\n\x08_subtype\"\xb5\x01\n\x10ListpeersRequest\x12\x0f\n\x02id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x38\n\x05level\x18\x02 \x01(\x0e\x32$.cln.ListpeersRequest.ListpeersLevelH\x01\x88\x01\x01\"E\n\x0eListpeersLevel\x12\x06\n\x02IO\x10\x00\x12\t\n\x05\x44\x45\x42UG\x10\x01\x12\x08\n\x04INFO\x10\x02\x12\x0b\n\x07UNUSUAL\x10\x03\x12\t\n\x05TRACE\x10\x04\x42\x05\n\x03_idB\x08\n\x06_level\"7\n\x11ListpeersResponse\x12\"\n\x05peers\x18\x01 \x03(\x0b\x32\x13.cln.ListpeersPeers\"\xdf\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\x0f\n\x07netaddr\x18\x05 \x03(\t\x12\x15\n\x08\x66\x65\x61tures\x18\x06 \x01(\x0cH\x00\x88\x01\x01\x12\x18\n\x0bremote_addr\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x19\n\x0cnum_channels\x18\x08 \x01(\rH\x02\x88\x01\x01\x42\x0b\n\t_featuresB\x0e\n\x0c_remote_addrB\x0f\n\r_num_channels\"\x88\x03\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\"t\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\x12\t\n\x05TRACE\x10\x07\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\"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\"\xb9\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\x18\n\x0b\x62lockheight\x18\x08 \x01(\rH\x02\x88\x01\x01\x12\x10\n\x08reserved\x18\t \x01(\x08\x12\x1e\n\x11reserved_to_block\x18\n \x01(\rH\x03\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_blockheightB\x14\n\x12_reserved_to_block\"\xab\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\x12\x17\n\nchannel_id\x18\t \x01(\x0cH\x01\x88\x01\x01\x42\x13\n\x11_short_channel_idB\r\n\x0b_channel_id\"\xbb\x03\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\x13\n\x06\x62olt11\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x1b\n\x0epayment_secret\x18\x06 \x01(\x0cH\x02\x88\x01\x01\x12\x13\n\x06partid\x18\x07 \x01(\x04H\x03\x88\x01\x01\x12\x14\n\x07groupid\x18\t \x01(\x04H\x04\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x1a\n\rlocalinvreqid\x18\x0b \x01(\x0cH\x06\x88\x01\x01\x12\x1d\n\x10payment_metadata\x18\x0c \x01(\x0cH\x07\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\r \x01(\tH\x08\x88\x01\x01\x42\x08\n\x06_labelB\t\n\x07_bolt11B\x11\n\x0f_payment_secretB\t\n\x07_partidB\n\n\x08_groupidB\x0e\n\x0c_amount_msatB\x10\n\x0e_localinvreqidB\x13\n\x11_payment_metadataB\x0e\n\x0c_description\"\xad\x05\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%\n\x10\x61mount_sent_msat\x18\x08 \x01(\x0b\x32\x0b.cln.Amount\x12\x12\n\x05label\x18\t \x01(\tH\x03\x88\x01\x01\x12\x13\n\x06partid\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x0b \x01(\tH\x05\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x0c \x01(\tH\x06\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\r \x01(\x0cH\x07\x88\x01\x01\x12\x14\n\x07message\x18\x0e \x01(\tH\x08\x88\x01\x01\x12\x19\n\x0c\x63ompleted_at\x18\x0f \x01(\x04H\t\x88\x01\x01\x12\x1a\n\rcreated_index\x18\x10 \x01(\x04H\n\x88\x01\x01\x12\x1a\n\rupdated_index\x18\x11 \x01(\x04H\x0b\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\x08\n\x06_labelB\t\n\x07_partidB\t\n\x07_bolt11B\t\n\x07_bolt12B\x13\n\x11_payment_preimageB\n\n\x08_messageB\x0f\n\r_completed_atB\x10\n\x0e_created_indexB\x10\n\x0e_updated_index\"\\\n\x0cSendpayRoute\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\x12 \n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\"\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\"\xb3\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\x12\x11\n\tdirection\x18\x10 \x01(\rB\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\"\xac\x01\n\x14\x41\x64\x64psbtoutputRequest\x12\x1c\n\x07satoshi\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12\x15\n\x08locktime\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x18\n\x0binitialpsbt\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\x0b\n\t_locktimeB\x0e\n\x0c_initialpsbtB\x0e\n\x0c_destination\"U\n\x15\x41\x64\x64psbtoutputResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x1e\n\x16\x65stimated_added_weight\x18\x02 \x01(\r\x12\x0e\n\x06outnum\x18\x03 \x01(\r\"O\n\x14\x41utocleanonceRequest\x12*\n\tsubsystem\x18\x01 \x01(\x0e\x32\x17.cln.AutocleanSubsystem\x12\x0b\n\x03\x61ge\x18\x02 \x01(\x04\"G\n\x15\x41utocleanonceResponse\x12.\n\tautoclean\x18\x01 \x01(\x0b\x32\x1b.cln.AutocleanonceAutoclean\"\xb1\x04\n\x16\x41utocleanonceAutoclean\x12L\n\x11succeededforwards\x18\x01 \x01(\x0b\x32,.cln.AutocleanonceAutocleanSucceededforwardsH\x00\x88\x01\x01\x12\x46\n\x0e\x66\x61iledforwards\x18\x02 \x01(\x0b\x32).cln.AutocleanonceAutocleanFailedforwardsH\x01\x88\x01\x01\x12\x44\n\rsucceededpays\x18\x03 \x01(\x0b\x32(.cln.AutocleanonceAutocleanSucceededpaysH\x02\x88\x01\x01\x12>\n\nfailedpays\x18\x04 \x01(\x0b\x32%.cln.AutocleanonceAutocleanFailedpaysH\x03\x88\x01\x01\x12\x42\n\x0cpaidinvoices\x18\x05 \x01(\x0b\x32\'.cln.AutocleanonceAutocleanPaidinvoicesH\x04\x88\x01\x01\x12H\n\x0f\x65xpiredinvoices\x18\x06 \x01(\x0b\x32*.cln.AutocleanonceAutocleanExpiredinvoicesH\x05\x88\x01\x01\x42\x14\n\x12_succeededforwardsB\x11\n\x0f_failedforwardsB\x10\n\x0e_succeededpaysB\r\n\x0b_failedpaysB\x0f\n\r_paidinvoicesB\x12\n\x10_expiredinvoices\"M\n\'AutocleanonceAutocleanSucceededforwards\x12\x0f\n\x07\x63leaned\x18\x01 \x01(\x04\x12\x11\n\tuncleaned\x18\x02 \x01(\x04\"J\n$AutocleanonceAutocleanFailedforwards\x12\x0f\n\x07\x63leaned\x18\x01 \x01(\x04\x12\x11\n\tuncleaned\x18\x02 \x01(\x04\"I\n#AutocleanonceAutocleanSucceededpays\x12\x0f\n\x07\x63leaned\x18\x01 \x01(\x04\x12\x11\n\tuncleaned\x18\x02 \x01(\x04\"F\n AutocleanonceAutocleanFailedpays\x12\x0f\n\x07\x63leaned\x18\x01 \x01(\x04\x12\x11\n\tuncleaned\x18\x02 \x01(\x04\"H\n\"AutocleanonceAutocleanPaidinvoices\x12\x0f\n\x07\x63leaned\x18\x01 \x01(\x04\x12\x11\n\tuncleaned\x18\x02 \x01(\x04\"K\n%AutocleanonceAutocleanExpiredinvoices\x12\x0f\n\x07\x63leaned\x18\x01 \x01(\x04\x12\x11\n\tuncleaned\x18\x02 \x01(\x04\"W\n\x16\x41utocleanstatusRequest\x12/\n\tsubsystem\x18\x01 \x01(\x0e\x32\x17.cln.AutocleanSubsystemH\x00\x88\x01\x01\x42\x0c\n\n_subsystem\"K\n\x17\x41utocleanstatusResponse\x12\x30\n\tautoclean\x18\x01 \x01(\x0b\x32\x1d.cln.AutocleanstatusAutoclean\"\xbf\x04\n\x18\x41utocleanstatusAutoclean\x12N\n\x11succeededforwards\x18\x01 \x01(\x0b\x32..cln.AutocleanstatusAutocleanSucceededforwardsH\x00\x88\x01\x01\x12H\n\x0e\x66\x61iledforwards\x18\x02 \x01(\x0b\x32+.cln.AutocleanstatusAutocleanFailedforwardsH\x01\x88\x01\x01\x12\x46\n\rsucceededpays\x18\x03 \x01(\x0b\x32*.cln.AutocleanstatusAutocleanSucceededpaysH\x02\x88\x01\x01\x12@\n\nfailedpays\x18\x04 \x01(\x0b\x32\'.cln.AutocleanstatusAutocleanFailedpaysH\x03\x88\x01\x01\x12\x44\n\x0cpaidinvoices\x18\x05 \x01(\x0b\x32).cln.AutocleanstatusAutocleanPaidinvoicesH\x04\x88\x01\x01\x12J\n\x0f\x65xpiredinvoices\x18\x06 \x01(\x0b\x32,.cln.AutocleanstatusAutocleanExpiredinvoicesH\x05\x88\x01\x01\x42\x14\n\x12_succeededforwardsB\x11\n\x0f_failedforwardsB\x10\n\x0e_succeededpaysB\r\n\x0b_failedpaysB\x0f\n\r_paidinvoicesB\x12\n\x10_expiredinvoices\"g\n)AutocleanstatusAutocleanSucceededforwards\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0f\n\x07\x63leaned\x18\x02 \x01(\x04\x12\x10\n\x03\x61ge\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x06\n\x04_age\"d\n&AutocleanstatusAutocleanFailedforwards\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0f\n\x07\x63leaned\x18\x02 \x01(\x04\x12\x10\n\x03\x61ge\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x06\n\x04_age\"c\n%AutocleanstatusAutocleanSucceededpays\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0f\n\x07\x63leaned\x18\x02 \x01(\x04\x12\x10\n\x03\x61ge\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x06\n\x04_age\"`\n\"AutocleanstatusAutocleanFailedpays\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0f\n\x07\x63leaned\x18\x02 \x01(\x04\x12\x10\n\x03\x61ge\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x06\n\x04_age\"b\n$AutocleanstatusAutocleanPaidinvoices\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0f\n\x07\x63leaned\x18\x02 \x01(\x04\x12\x10\n\x03\x61ge\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x06\n\x04_age\"e\n\'AutocleanstatusAutocleanExpiredinvoices\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0f\n\x07\x63leaned\x18\x02 \x01(\x04\x12\x10\n\x03\x61ge\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x06\n\x04_age\"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\"\xb4\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\x12$\n\x07\x61\x64\x64ress\x18\x04 \x01(\x0b\x32\x13.cln.ConnectAddress\"#\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\"\xfe\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\x12\x1a\n\rcreated_index\x18\x10 \x01(\x04H\t\x88\x01\x01\x12;\n\rpaid_outpoint\x18\x11 \x01(\x0b\x32\x1f.cln.CreateinvoicePaid_outpointH\n\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_noteB\x10\n\x0e_created_indexB\x10\n\x0e_paid_outpoint\":\n\x1a\x43reateinvoicePaid_outpoint\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x0e\n\x06outnum\x18\x02 \x01(\r\"\xb4\x02\n\x10\x44\x61tastoreRequest\x12\x10\n\x03hex\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x36\n\x04mode\x18\x03 \x01(\x0e\x32#.cln.DatastoreRequest.DatastoreModeH\x01\x88\x01\x01\x12\x17\n\ngeneration\x18\x04 \x01(\x04H\x02\x88\x01\x01\x12\x0b\n\x03key\x18\x05 \x03(\t\x12\x13\n\x06string\x18\x06 \x01(\tH\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\x06\n\x04_hexB\x07\n\x05_modeB\r\n\x0b_generationB\t\n\x07_string\"\x82\x01\n\x11\x44\x61tastoreResponse\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\x12\x0b\n\x03key\x18\x05 \x03(\tB\r\n\x0b_generationB\x06\n\x04_hexB\t\n\x07_string\"$\n\x15\x44\x61tastoreusageRequest\x12\x0b\n\x03key\x18\x01 \x03(\t\"S\n\x16\x44\x61tastoreusageResponse\x12\x39\n\x0e\x64\x61tastoreusage\x18\x01 \x01(\x0b\x32!.cln.DatastoreusageDatastoreusage\"@\n\x1c\x44\x61tastoreusageDatastoreusage\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x13\n\x0btotal_bytes\x18\x02 \x01(\x04\"\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\x17\n\ngeneration\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x0b\n\x03key\x18\x03 \x03(\tB\r\n\x0b_generation\"\x85\x01\n\x14\x44\x65ldatastoreResponse\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\x12\x0b\n\x03key\x18\x05 \x03(\tB\r\n\x0b_generationB\x06\n\x04_hexB\t\n\x07_string\"\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\"\xe6\x05\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\x12\x1a\n\rcreated_index\x18\x0c \x01(\x04H\x06\x88\x01\x01\x12\x1a\n\rupdated_index\x18\r \x01(\x04H\x07\x88\x01\x01\x12\x16\n\tpay_index\x18\x0e \x01(\x04H\x08\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\x0f \x01(\x0b\x32\x0b.cln.AmountH\t\x88\x01\x01\x12\x14\n\x07paid_at\x18\x10 \x01(\x04H\n\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x11 \x01(\x0cH\x0b\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_noteB\x10\n\x0e_created_indexB\x10\n\x0e_updated_indexB\x0c\n\n_pay_indexB\x17\n\x15_amount_received_msatB\n\n\x08_paid_atB\x13\n\x11_payment_preimage\"\x9f\x01\n\x17\x44\x65vforgetchannelRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x1d\n\x10short_channel_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x17\n\nchannel_id\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x12\n\x05\x66orce\x18\x04 \x01(\x08H\x02\x88\x01\x01\x42\x13\n\x11_short_channel_idB\r\n\x0b_channel_idB\x08\n\x06_force\"Y\n\x18\x44\x65vforgetchannelResponse\x12\x0e\n\x06\x66orced\x18\x01 \x01(\x08\x12\x17\n\x0f\x66unding_unspent\x18\x02 \x01(\x08\x12\x14\n\x0c\x66unding_txid\x18\x03 \x01(\x0c\"\x19\n\x17\x45mergencyrecoverRequest\")\n\x18\x45mergencyrecoverResponse\x12\r\n\x05stubs\x18\x01 \x03(\x0c\"#\n\x0eRecoverRequest\x12\x11\n\thsmsecret\x18\x01 \x01(\t\"\x88\x01\n\x0fRecoverResponse\x12\x37\n\x06result\x18\x01 \x01(\x0e\x32\".cln.RecoverResponse.RecoverResultH\x00\x88\x01\x01\"1\n\rRecoverResult\x12 \n\x1cRECOVERY_RESTART_IN_PROGRESS\x10\x00\x42\t\n\x07_result\"$\n\x15RecoverchannelRequest\x12\x0b\n\x03scb\x18\x01 \x03(\x0c\"\'\n\x16RecoverchannelResponse\x12\r\n\x05stubs\x18\x01 \x03(\t\"\x99\x02\n\x0eInvoiceRequest\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\r\n\x05label\x18\x03 \x01(\t\x12\x11\n\tfallbacks\x18\x04 \x03(\t\x12\x15\n\x08preimage\x18\x05 \x01(\x0cH\x00\x88\x01\x01\x12\x11\n\x04\x63ltv\x18\x06 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06\x65xpiry\x18\x07 \x01(\x04H\x02\x88\x01\x01\x12\x1d\n\x15\x65xposeprivatechannels\x18\x08 \x03(\t\x12\x19\n\x0c\x64\x65schashonly\x18\t \x01(\x08H\x03\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\n \x01(\x0b\x32\x10.cln.AmountOrAnyB\x0b\n\t_preimageB\x07\n\x05_cltvB\t\n\x07_expiryB\x0f\n\r_deschashonly\"\x95\x03\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\x12\x1a\n\rcreated_index\x18\n \x01(\x04H\x05\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_mppB\x10\n\x0e_created_index\"\xe1\x01\n\x15InvoicerequestRequest\x12\x1b\n\x06\x61mount\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x13\n\x06issuer\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x12\n\x05label\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x1c\n\x0f\x61\x62solute_expiry\x18\x05 \x01(\x04H\x02\x88\x01\x01\x12\x17\n\nsingle_use\x18\x06 \x01(\x08H\x03\x88\x01\x01\x42\t\n\x07_issuerB\x08\n\x06_labelB\x12\n\x10_absolute_expiryB\r\n\x0b_single_use\"\x8b\x01\n\x16InvoicerequestResponse\x12\x11\n\tinvreq_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61\x63tive\x18\x02 \x01(\x08\x12\x12\n\nsingle_use\x18\x03 \x01(\x08\x12\x0e\n\x06\x62olt12\x18\x04 \x01(\t\x12\x0c\n\x04used\x18\x05 \x01(\x08\x12\x12\n\x05label\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_label\"1\n\x1c\x44isableinvoicerequestRequest\x12\x11\n\tinvreq_id\x18\x01 \x01(\t\"\x92\x01\n\x1d\x44isableinvoicerequestResponse\x12\x11\n\tinvreq_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61\x63tive\x18\x02 \x01(\x08\x12\x12\n\nsingle_use\x18\x03 \x01(\x08\x12\x0e\n\x06\x62olt12\x18\x04 \x01(\t\x12\x0c\n\x04used\x18\x05 \x01(\x08\x12\x12\n\x05label\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_label\"l\n\x1aListinvoicerequestsRequest\x12\x16\n\tinvreq_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x61\x63tive_only\x18\x02 \x01(\x08H\x01\x88\x01\x01\x42\x0c\n\n_invreq_idB\x0e\n\x0c_active_only\"_\n\x1bListinvoicerequestsResponse\x12@\n\x0finvoicerequests\x18\x01 \x03(\x0b\x32\'.cln.ListinvoicerequestsInvoicerequests\"\x97\x01\n\"ListinvoicerequestsInvoicerequests\x12\x11\n\tinvreq_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61\x63tive\x18\x02 \x01(\x08\x12\x12\n\nsingle_use\x18\x03 \x01(\x08\x12\x0e\n\x06\x62olt12\x18\x04 \x01(\t\x12\x0c\n\x04used\x18\x05 \x01(\x08\x12\x12\n\x05label\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_label\"#\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\"\xde\x02\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\x12>\n\x05index\x18\x05 \x01(\x0e\x32*.cln.ListinvoicesRequest.ListinvoicesIndexH\x04\x88\x01\x01\x12\x12\n\x05start\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12\x12\n\x05limit\x18\x07 \x01(\rH\x06\x88\x01\x01\"-\n\x11ListinvoicesIndex\x12\x0b\n\x07\x43REATED\x10\x00\x12\x0b\n\x07UPDATED\x10\x01\x42\x08\n\x06_labelB\x0c\n\n_invstringB\x0f\n\r_payment_hashB\x0b\n\t_offer_idB\x08\n\x06_indexB\x08\n\x06_startB\x08\n\x06_limit\"C\n\x14ListinvoicesResponse\x12+\n\x08invoices\x18\x01 \x03(\x0b\x32\x19.cln.ListinvoicesInvoices\"\xd4\x06\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\x16\n\tpay_index\x18\x0b \x01(\x04H\x05\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\x0c \x01(\x0b\x32\x0b.cln.AmountH\x06\x88\x01\x01\x12\x14\n\x07paid_at\x18\r \x01(\x04H\x07\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0e \x01(\x0cH\x08\x88\x01\x01\x12\x1e\n\x11invreq_payer_note\x18\x0f \x01(\tH\t\x88\x01\x01\x12\x1a\n\rcreated_index\x18\x10 \x01(\x04H\n\x88\x01\x01\x12\x1a\n\rupdated_index\x18\x11 \x01(\x04H\x0b\x88\x01\x01\x12\x42\n\rpaid_outpoint\x18\x12 \x01(\x0b\x32&.cln.ListinvoicesInvoicesPaid_outpointH\x0c\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\x0c\n\n_pay_indexB\x17\n\x15_amount_received_msatB\n\n\x08_paid_atB\x13\n\x11_payment_preimageB\x14\n\x12_invreq_payer_noteB\x10\n\x0e_created_indexB\x10\n\x0e_updated_indexB\x10\n\x0e_paid_outpoint\"A\n!ListinvoicesInvoicesPaid_outpoint\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x0e\n\x06outnum\x18\x02 \x01(\r\"\xb4\x03\n\x10SendonionRequest\x12\r\n\x05onion\x18\x01 \x01(\x0c\x12*\n\tfirst_hop\x18\x02 \x01(\x0b\x32\x17.cln.SendonionFirst_hop\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\x18\n\x0b\x64\x65stination\x18\t \x01(\x0cH\x03\x88\x01\x01\x12\x14\n\x07groupid\x18\x0b \x01(\x04H\x04\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\x0c \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x1a\n\rlocalinvreqid\x18\r \x01(\x0cH\x06\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x0e \x01(\tH\x07\x88\x01\x01\x42\x08\n\x06_labelB\t\n\x07_partidB\t\n\x07_bolt11B\x0e\n\x0c_destinationB\n\n\x08_groupidB\x0e\n\x0c_amount_msatB\x10\n\x0e_localinvreqidB\x0e\n\x0c_description\"\xe7\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\x1d\n\x10payment_preimage\x18\x0b \x01(\x0cH\x05\x88\x01\x01\x12\x14\n\x07message\x18\x0c \x01(\tH\x06\x88\x01\x01\x12\x13\n\x06partid\x18\r \x01(\x04H\x07\x88\x01\x01\x12\x1a\n\rcreated_index\x18\x0e \x01(\x04H\x08\x88\x01\x01\x12\x1a\n\rupdated_index\x18\x0f \x01(\x04H\t\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\x13\n\x11_payment_preimageB\n\n\x08_messageB\t\n\x07_partidB\x10\n\x0e_created_indexB\x10\n\x0e_updated_index\"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\"\xa0\x03\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\x12>\n\x05index\x18\x04 \x01(\x0e\x32*.cln.ListsendpaysRequest.ListsendpaysIndexH\x03\x88\x01\x01\x12\x12\n\x05start\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12\x12\n\x05limit\x18\x06 \x01(\rH\x05\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\"-\n\x11ListsendpaysIndex\x12\x0b\n\x07\x43REATED\x10\x00\x12\x0b\n\x07UPDATED\x10\x01\x42\t\n\x07_bolt11B\x0f\n\r_payment_hashB\t\n\x07_statusB\x08\n\x06_indexB\x08\n\x06_startB\x08\n\x06_limit\"C\n\x14ListsendpaysResponse\x12+\n\x08payments\x18\x01 \x03(\x0b\x32\x19.cln.ListsendpaysPayments\"\xfc\x05\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\x13\n\x06\x62olt12\x18\x0b \x01(\tH\x04\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0c \x01(\x0cH\x05\x88\x01\x01\x12\x17\n\nerroronion\x18\r \x01(\x0cH\x06\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x0e \x01(\tH\x07\x88\x01\x01\x12\x13\n\x06partid\x18\x0f \x01(\x04H\x08\x88\x01\x01\x12\x1a\n\rcreated_index\x18\x10 \x01(\x04H\t\x88\x01\x01\x12\x1a\n\rupdated_index\x18\x11 \x01(\x04H\n\x88\x01\x01\x12\x19\n\x0c\x63ompleted_at\x18\x12 \x01(\x04H\x0b\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\t\n\x07_bolt12B\x13\n\x11_payment_preimageB\r\n\x0b_erroronionB\x0e\n\x0c_descriptionB\t\n\x07_partidB\x10\n\x0e_created_indexB\x10\n\x0e_updated_indexB\x0f\n\r_completed_at\"\x19\n\x17ListtransactionsRequest\"S\n\x18ListtransactionsResponse\x12\x37\n\x0ctransactions\x18\x01 \x03(\x0b\x32!.cln.ListtransactionsTransactions\"\xf8\x01\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\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.ListtransactionsTransactionsOutputs\"S\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\"l\n#ListtransactionsTransactionsOutputs\x12\r\n\x05index\x18\x01 \x01(\r\x12\x14\n\x0cscriptPubKey\x18\x03 \x01(\x0c\x12 \n\x0b\x61mount_msat\x18\x06 \x01(\x0b\x32\x0b.cln.Amount\"M\n\x11MakesecretRequest\x12\x10\n\x03hex\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x13\n\x06string\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x06\n\x04_hexB\t\n\x07_string\"$\n\x12MakesecretResponse\x12\x0e\n\x06secret\x18\x01 \x01(\x0c\"\x93\x04\n\nPayRequest\x12\x0e\n\x06\x62olt11\x18\x01 \x01(\t\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\x17\n\nriskfactor\x18\x08 \x01(\x01H\x05\x88\x01\x01\x12\x0f\n\x07\x65xclude\x18\n \x03(\t\x12 \n\x06maxfee\x18\x0b \x01(\x0b\x32\x0b.cln.AmountH\x06\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x0c \x01(\tH\x07\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\r \x01(\x0b\x32\x0b.cln.AmountH\x08\x88\x01\x01\x12\x1a\n\rlocalinvreqid\x18\x0e \x01(\x0cH\t\x88\x01\x01\x12&\n\x0cpartial_msat\x18\x0f \x01(\x0b\x32\x0b.cln.AmountH\n\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_riskfactorB\t\n\x07_maxfeeB\x0e\n\x0c_descriptionB\x0e\n\x0c_amount_msatB\x10\n\x0e_localinvreqidB\x0f\n\r_partial_msat\"\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\"\xba\x02\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.ListnodesNodesAddresses\x12\x42\n\x10option_will_fund\x18\x07 \x01(\x0b\x32#.cln.ListnodesNodesOption_will_fundH\x04\x88\x01\x01\x42\x11\n\x0f_last_timestampB\x08\n\x06_aliasB\x08\n\x06_colorB\x0b\n\t_featuresB\x13\n\x11_option_will_fund\"\xf4\x01\n\x1eListnodesNodesOption_will_fund\x12(\n\x13lease_fee_base_msat\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12\x17\n\x0flease_fee_basis\x18\x02 \x01(\r\x12\x16\n\x0e\x66unding_weight\x18\x03 \x01(\r\x12.\n\x19\x63hannel_fee_max_base_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12\x30\n(channel_fee_max_proportional_thousandths\x18\x05 \x01(\r\x12\x15\n\rcompact_lease\x18\x06 \x01(\x0c\"\xe8\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\"P\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\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\"\xd4\x05\n\x16WaitanyinvoiceResponse\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@\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\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\x16\n\tpay_index\x18\t \x01(\x04H\x04\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x14\n\x07paid_at\x18\x0b \x01(\x04H\x06\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0c \x01(\x0cH\x07\x88\x01\x01\x12\x1a\n\rcreated_index\x18\r \x01(\x04H\x08\x88\x01\x01\x12\x1a\n\rupdated_index\x18\x0e \x01(\x04H\t\x88\x01\x01\x12<\n\rpaid_outpoint\x18\x0f \x01(\x0b\x32 .cln.WaitanyinvoicePaid_outpointH\n\x88\x01\x01\"-\n\x14WaitanyinvoiceStatus\x12\x08\n\x04PAID\x10\x00\x12\x0b\n\x07\x45XPIRED\x10\x01\x42\x0e\n\x0c_descriptionB\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_preimageB\x10\n\x0e_created_indexB\x10\n\x0e_updated_indexB\x10\n\x0e_paid_outpoint\";\n\x1bWaitanyinvoicePaid_outpoint\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x0e\n\x06outnum\x18\x02 \x01(\r\"#\n\x12WaitinvoiceRequest\x12\r\n\x05label\x18\x01 \x01(\t\"\xc5\x05\n\x13WaitinvoiceResponse\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:\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\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\x16\n\tpay_index\x18\t \x01(\x04H\x04\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x14\n\x07paid_at\x18\x0b \x01(\x04H\x06\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0c \x01(\x0cH\x07\x88\x01\x01\x12\x1a\n\rcreated_index\x18\r \x01(\x04H\x08\x88\x01\x01\x12\x1a\n\rupdated_index\x18\x0e \x01(\x04H\t\x88\x01\x01\x12\x39\n\rpaid_outpoint\x18\x0f \x01(\x0b\x32\x1d.cln.WaitinvoicePaid_outpointH\n\x88\x01\x01\"*\n\x11WaitinvoiceStatus\x12\x08\n\x04PAID\x10\x00\x12\x0b\n\x07\x45XPIRED\x10\x01\x42\x0e\n\x0c_descriptionB\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_preimageB\x10\n\x0e_created_indexB\x10\n\x0e_updated_indexB\x10\n\x0e_paid_outpoint\"8\n\x18WaitinvoicePaid_outpoint\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x0e\n\x06outnum\x18\x02 \x01(\r\"\x8e\x01\n\x12WaitsendpayRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x13\n\x06partid\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x14\n\x07timeout\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x14\n\x07groupid\x18\x04 \x01(\x04H\x02\x88\x01\x01\x42\t\n\x07_partidB\n\n\x08_timeoutB\n\n\x08_groupid\"\x8e\x05\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%\n\x10\x61mount_sent_msat\x18\x08 \x01(\x0b\x32\x0b.cln.Amount\x12\x12\n\x05label\x18\t \x01(\tH\x03\x88\x01\x01\x12\x13\n\x06partid\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x0b \x01(\tH\x05\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x0c \x01(\tH\x06\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\r \x01(\x0cH\x07\x88\x01\x01\x12\x19\n\x0c\x63ompleted_at\x18\x0e \x01(\x01H\x08\x88\x01\x01\x12\x1a\n\rcreated_index\x18\x0f \x01(\x04H\t\x88\x01\x01\x12\x1a\n\rupdated_index\x18\x10 \x01(\x04H\n\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\x08\n\x06_labelB\t\n\x07_partidB\t\n\x07_bolt11B\t\n\x07_bolt12B\x13\n\x11_payment_preimageB\x0f\n\r_completed_atB\x10\n\x0e_created_indexB\x10\n\x0e_updated_index\"\x97\x01\n\x0eNewaddrRequest\x12@\n\x0b\x61\x64\x64resstype\x18\x01 \x01(\x0e\x32&.cln.NewaddrRequest.NewaddrAddresstypeH\x00\x88\x01\x01\"3\n\x12NewaddrAddresstype\x12\n\n\x06\x42\x45\x43H32\x10\x00\x12\x07\n\x03\x41LL\x10\x02\x12\x08\n\x04P2TR\x10\x03\x42\x0e\n\x0c_addresstype\"M\n\x0fNewaddrResponse\x12\x13\n\x06\x62\x65\x63h32\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04p2tr\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\t\n\x07_bech32B\x07\n\x05_p2tr\"\xb9\x01\n\x0fWithdrawRequest\x12\x13\n\x0b\x64\x65stination\x18\x01 \x01(\t\x12!\n\x07satoshi\x18\x02 \x01(\x0b\x32\x10.cln.AmountOrAll\x12\x14\n\x07minconf\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x1c\n\x05utxos\x18\x04 \x03(\x0b\x32\r.cln.Outpoint\x12\"\n\x07\x66\x65\x65rate\x18\x05 \x01(\x0b\x32\x0c.cln.FeerateH\x01\x88\x01\x01\x42\n\n\x08_minconfB\n\n\x08_feerate\":\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\"\xaf\x03\n\x0eKeysendRequest\x12\x13\n\x0b\x64\x65stination\x18\x01 \x01(\x0c\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\x12 \n\x0b\x61mount_msat\x18\n \x01(\x0b\x32\x0b.cln.Amount\x12 \n\x06maxfee\x18\x0b \x01(\x0b\x32\x0b.cln.AmountH\x07\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_extratlvsB\t\n\x07_maxfee\"\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\"\xa4\x03\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\x12\x17\n\nnonwrapped\x18\t \x01(\x08H\x05\x88\x01\x01\x12#\n\x16opening_anchor_channel\x18\n \x01(\x08H\x06\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_changeB\r\n\x0b_nonwrappedB\x19\n\x17_opening_anchor_channel\"\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(\rH\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\"\xa0\x03\n\x0fUtxopsbtRequest\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\x1c\n\x05utxos\x18\x04 \x03(\x0b\x32\r.cln.Outpoint\x12\x14\n\x07reserve\x18\x05 \x01(\rH\x00\x88\x01\x01\x12\x15\n\x08locktime\x18\x06 \x01(\rH\x01\x88\x01\x01\x12\x1f\n\x12min_witness_weight\x18\x07 \x01(\rH\x02\x88\x01\x01\x12\x17\n\nreservedok\x18\x08 \x01(\x08H\x03\x88\x01\x01\x12\x1d\n\x10\x65xcess_as_change\x18\t \x01(\x08H\x04\x88\x01\x01\x12#\n\x16opening_anchor_channel\x18\n \x01(\x08H\x05\x88\x01\x01\x42\n\n\x08_reserveB\x0b\n\t_locktimeB\x15\n\x13_min_witness_weightB\r\n\x0b_reservedokB\x13\n\x11_excess_as_changeB\x19\n\x17_opening_anchor_channel\"\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\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.Outpoint\x12 \n\x07outputs\x18\x05 \x03(\x0b\x32\x0f.cln.OutputDescB\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\"1\n\x17ListpeerchannelsRequest\x12\x0f\n\x02id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x05\n\x03_id\"K\n\x18ListpeerchannelsResponse\x12/\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x1d.cln.ListpeerchannelsChannels\"\xd7\x1b\n\x18ListpeerchannelsChannels\x12\x0f\n\x07peer_id\x18\x01 \x01(\x0c\x12\x16\n\x0epeer_connected\x18\x02 \x01(\x08\x12J\n\x05state\x18\x03 \x01(\x0e\x32;.cln.ListpeerchannelsChannels.ListpeerchannelsChannelsState\x12\x19\n\x0cscratch_txid\x18\x04 \x01(\x0cH\x00\x88\x01\x01\x12:\n\x07\x66\x65\x65rate\x18\x06 \x01(\x0b\x32$.cln.ListpeerchannelsChannelsFeerateH\x01\x88\x01\x01\x12\x12\n\x05owner\x18\x07 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x10short_channel_id\x18\x08 \x01(\tH\x03\x88\x01\x01\x12\x17\n\nchannel_id\x18\t \x01(\x0cH\x04\x88\x01\x01\x12\x19\n\x0c\x66unding_txid\x18\n \x01(\x0cH\x05\x88\x01\x01\x12\x1b\n\x0e\x66unding_outnum\x18\x0b \x01(\rH\x06\x88\x01\x01\x12\x1c\n\x0finitial_feerate\x18\x0c \x01(\tH\x07\x88\x01\x01\x12\x19\n\x0clast_feerate\x18\r \x01(\tH\x08\x88\x01\x01\x12\x19\n\x0cnext_feerate\x18\x0e \x01(\tH\t\x88\x01\x01\x12\x1a\n\rnext_fee_step\x18\x0f \x01(\rH\n\x88\x01\x01\x12\x37\n\x08inflight\x18\x10 \x03(\x0b\x32%.cln.ListpeerchannelsChannelsInflight\x12\x15\n\x08\x63lose_to\x18\x11 \x01(\x0cH\x0b\x88\x01\x01\x12\x14\n\x07private\x18\x12 \x01(\x08H\x0c\x88\x01\x01\x12 \n\x06opener\x18\x13 \x01(\x0e\x32\x10.cln.ChannelSide\x12%\n\x06\x63loser\x18\x14 \x01(\x0e\x32\x10.cln.ChannelSideH\r\x88\x01\x01\x12:\n\x07\x66unding\x18\x16 \x01(\x0b\x32$.cln.ListpeerchannelsChannelsFundingH\x0e\x88\x01\x01\x12$\n\nto_us_msat\x18\x17 \x01(\x0b\x32\x0b.cln.AmountH\x0f\x88\x01\x01\x12(\n\x0emin_to_us_msat\x18\x18 \x01(\x0b\x32\x0b.cln.AmountH\x10\x88\x01\x01\x12(\n\x0emax_to_us_msat\x18\x19 \x01(\x0b\x32\x0b.cln.AmountH\x11\x88\x01\x01\x12$\n\ntotal_msat\x18\x1a \x01(\x0b\x32\x0b.cln.AmountH\x12\x88\x01\x01\x12\'\n\rfee_base_msat\x18\x1b \x01(\x0b\x32\x0b.cln.AmountH\x13\x88\x01\x01\x12(\n\x1b\x66\x65\x65_proportional_millionths\x18\x1c \x01(\rH\x14\x88\x01\x01\x12)\n\x0f\x64ust_limit_msat\x18\x1d \x01(\x0b\x32\x0b.cln.AmountH\x15\x88\x01\x01\x12\x30\n\x16max_total_htlc_in_msat\x18\x1e \x01(\x0b\x32\x0b.cln.AmountH\x16\x88\x01\x01\x12,\n\x12their_reserve_msat\x18\x1f \x01(\x0b\x32\x0b.cln.AmountH\x17\x88\x01\x01\x12*\n\x10our_reserve_msat\x18 \x01(\x0b\x32\x0b.cln.AmountH\x18\x88\x01\x01\x12(\n\x0espendable_msat\x18! \x01(\x0b\x32\x0b.cln.AmountH\x19\x88\x01\x01\x12)\n\x0freceivable_msat\x18\" \x01(\x0b\x32\x0b.cln.AmountH\x1a\x88\x01\x01\x12.\n\x14minimum_htlc_in_msat\x18# \x01(\x0b\x32\x0b.cln.AmountH\x1b\x88\x01\x01\x12/\n\x15minimum_htlc_out_msat\x18$ \x01(\x0b\x32\x0b.cln.AmountH\x1c\x88\x01\x01\x12/\n\x15maximum_htlc_out_msat\x18% \x01(\x0b\x32\x0b.cln.AmountH\x1d\x88\x01\x01\x12 \n\x13their_to_self_delay\x18& \x01(\rH\x1e\x88\x01\x01\x12\x1e\n\x11our_to_self_delay\x18\' \x01(\rH\x1f\x88\x01\x01\x12\x1f\n\x12max_accepted_htlcs\x18( \x01(\rH \x88\x01\x01\x12\x36\n\x05\x61lias\x18) \x01(\x0b\x32\".cln.ListpeerchannelsChannelsAliasH!\x88\x01\x01\x12\x0e\n\x06status\x18+ \x03(\t\x12 \n\x13in_payments_offered\x18, \x01(\x04H\"\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\x30 \x01(\x04H&\x88\x01\x01\x12*\n\x10out_offered_msat\x18\x31 \x01(\x0b\x32\x0b.cln.AmountH\'\x88\x01\x01\x12#\n\x16out_payments_fulfilled\x18\x32 \x01(\x04H(\x88\x01\x01\x12,\n\x12out_fulfilled_msat\x18\x33 \x01(\x0b\x32\x0b.cln.AmountH)\x88\x01\x01\x12\x31\n\x05htlcs\x18\x34 \x03(\x0b\x32\".cln.ListpeerchannelsChannelsHtlcs\x12\x1a\n\rclose_to_addr\x18\x35 \x01(\tH*\x88\x01\x01\x12\x1e\n\x11ignore_fee_limits\x18\x36 \x01(\x08H+\x88\x01\x01\x12:\n\x07updates\x18\x37 \x01(\x0b\x32$.cln.ListpeerchannelsChannelsUpdatesH,\x88\x01\x01\x12#\n\x16last_stable_connection\x18\x38 \x01(\x04H-\x88\x01\x01\x12\x17\n\nlost_state\x18\x39 \x01(\x08H.\x88\x01\x01\x12\x1a\n\rreestablished\x18: \x01(\x08H/\x88\x01\x01\x12*\n\x10last_tx_fee_msat\x18; \x01(\x0b\x32\x0b.cln.AmountH0\x88\x01\x01\x12\x16\n\tdirection\x18< \x01(\rH1\x88\x01\x01\"\x80\x03\n\x1dListpeerchannelsChannelsState\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\n\x12\x1c\n\x18\x43HANNELD_AWAITING_SPLICE\x10\x0b\x12\x1c\n\x18\x44UALOPEND_OPEN_COMMITTED\x10\x0c\x12\x1f\n\x1b\x44UALOPEND_OPEN_COMMIT_READY\x10\rB\x0f\n\r_scratch_txidB\n\n\x08_feerateB\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\n\n\x08_fundingB\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\x08\n\x06_aliasB\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_addrB\x14\n\x12_ignore_fee_limitsB\n\n\x08_updatesB\x19\n\x17_last_stable_connectionB\r\n\x0b_lost_stateB\x10\n\x0e_reestablishedB\x13\n\x11_last_tx_fee_msatB\x0c\n\n_direction\"\xa7\x01\n\x1fListpeerchannelsChannelsUpdates\x12\x38\n\x05local\x18\x01 \x01(\x0b\x32).cln.ListpeerchannelsChannelsUpdatesLocal\x12?\n\x06remote\x18\x02 \x01(\x0b\x32*.cln.ListpeerchannelsChannelsUpdatesRemoteH\x00\x88\x01\x01\x42\t\n\x07_remote\"\xda\x01\n$ListpeerchannelsChannelsUpdatesLocal\x12&\n\x11htlc_minimum_msat\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12&\n\x11htlc_maximum_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\x19\n\x11\x63ltv_expiry_delta\x18\x03 \x01(\r\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\"\xdb\x01\n%ListpeerchannelsChannelsUpdatesRemote\x12&\n\x11htlc_minimum_msat\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12&\n\x11htlc_maximum_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\x19\n\x11\x63ltv_expiry_delta\x18\x03 \x01(\r\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\"?\n\x1fListpeerchannelsChannelsFeerate\x12\r\n\x05perkw\x18\x01 \x01(\r\x12\r\n\x05perkb\x18\x02 \x01(\r\"\x8b\x02\n ListpeerchannelsChannelsInflight\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\x19\n\x0cscratch_txid\x18\x06 \x01(\x0cH\x00\x88\x01\x01\x12\x1a\n\rsplice_amount\x18\x07 \x01(\x12H\x01\x88\x01\x01\x42\x0f\n\r_scratch_txidB\x10\n\x0e_splice_amount\"\x9d\x02\n\x1fListpeerchannelsChannelsFunding\x12%\n\x0bpushed_msat\x18\x01 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12%\n\x10local_funds_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12&\n\x11remote_funds_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12\'\n\rfee_paid_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\'\n\rfee_rcvd_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x42\x0e\n\x0c_pushed_msatB\x10\n\x0e_fee_paid_msatB\x10\n\x0e_fee_rcvd_msat\"]\n\x1dListpeerchannelsChannelsAlias\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\"\xf9\x02\n\x1dListpeerchannelsChannelsHtlcs\x12\\\n\tdirection\x18\x01 \x01(\x0e\x32I.cln.ListpeerchannelsChannelsHtlcs.ListpeerchannelsChannelsHtlcsDirection\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\x12\x1d\n\x05state\x18\x08 \x01(\x0e\x32\x0e.cln.HtlcState\"9\n&ListpeerchannelsChannelsHtlcsDirection\x12\x06\n\x02IN\x10\x00\x12\x07\n\x03OUT\x10\x01\x42\x10\n\x0e_local_trimmedB\t\n\x07_status\"3\n\x19ListclosedchannelsRequest\x12\x0f\n\x02id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x05\n\x03_id\"[\n\x1aListclosedchannelsResponse\x12=\n\x0e\x63losedchannels\x18\x01 \x03(\x0b\x32%.cln.ListclosedchannelsClosedchannels\"\xf2\t\n ListclosedchannelsClosedchannels\x12\x14\n\x07peer_id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x12\n\nchannel_id\x18\x02 \x01(\x0c\x12\x1d\n\x10short_channel_id\x18\x03 \x01(\tH\x01\x88\x01\x01\x12>\n\x05\x61lias\x18\x04 \x01(\x0b\x32*.cln.ListclosedchannelsClosedchannelsAliasH\x02\x88\x01\x01\x12 \n\x06opener\x18\x05 \x01(\x0e\x32\x10.cln.ChannelSide\x12%\n\x06\x63loser\x18\x06 \x01(\x0e\x32\x10.cln.ChannelSideH\x03\x88\x01\x01\x12\x0f\n\x07private\x18\x07 \x01(\x08\x12\x1f\n\x17total_local_commitments\x18\t \x01(\x04\x12 \n\x18total_remote_commitments\x18\n \x01(\x04\x12\x18\n\x10total_htlcs_sent\x18\x0b \x01(\x04\x12\x14\n\x0c\x66unding_txid\x18\x0c \x01(\x0c\x12\x16\n\x0e\x66unding_outnum\x18\r \x01(\r\x12\x0e\n\x06leased\x18\x0e \x01(\x08\x12/\n\x15\x66unding_fee_paid_msat\x18\x0f \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12/\n\x15\x66unding_fee_rcvd_msat\x18\x10 \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12-\n\x13\x66unding_pushed_msat\x18\x11 \x01(\x0b\x32\x0b.cln.AmountH\x06\x88\x01\x01\x12\x1f\n\ntotal_msat\x18\x12 \x01(\x0b\x32\x0b.cln.Amount\x12%\n\x10\x66inal_to_us_msat\x18\x13 \x01(\x0b\x32\x0b.cln.Amount\x12#\n\x0emin_to_us_msat\x18\x14 \x01(\x0b\x32\x0b.cln.Amount\x12#\n\x0emax_to_us_msat\x18\x15 \x01(\x0b\x32\x0b.cln.Amount\x12!\n\x14last_commitment_txid\x18\x16 \x01(\x0cH\x07\x88\x01\x01\x12\x32\n\x18last_commitment_fee_msat\x18\x17 \x01(\x0b\x32\x0b.cln.AmountH\x08\x88\x01\x01\x12\x66\n\x0b\x63lose_cause\x18\x18 \x01(\x0e\x32Q.cln.ListclosedchannelsClosedchannels.ListclosedchannelsClosedchannelsClose_cause\x12#\n\x16last_stable_connection\x18\x19 \x01(\x04H\t\x88\x01\x01\"v\n+ListclosedchannelsClosedchannelsClose_cause\x12\x0b\n\x07UNKNOWN\x10\x00\x12\t\n\x05LOCAL\x10\x01\x12\x08\n\x04USER\x10\x02\x12\n\n\x06REMOTE\x10\x03\x12\x0c\n\x08PROTOCOL\x10\x04\x12\x0b\n\x07ONCHAIN\x10\x05\x42\n\n\x08_peer_idB\x13\n\x11_short_channel_idB\x08\n\x06_aliasB\t\n\x07_closerB\x18\n\x16_funding_fee_paid_msatB\x18\n\x16_funding_fee_rcvd_msatB\x16\n\x14_funding_pushed_msatB\x17\n\x15_last_commitment_txidB\x1b\n\x19_last_commitment_fee_msatB\x19\n\x17_last_stable_connection\"e\n%ListclosedchannelsClosedchannelsAlias\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\"L\n\x10\x44\x65\x63odepayRequest\x12\x0e\n\x06\x62olt11\x18\x01 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\xc7\x04\n\x11\x44\x65\x63odepayResponse\x12\x10\n\x08\x63urrency\x18\x01 \x01(\t\x12\x12\n\ncreated_at\x18\x02 \x01(\x04\x12\x0e\n\x06\x65xpiry\x18\x03 \x01(\x04\x12\r\n\x05payee\x18\x04 \x01(\x0c\x12%\n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x14\n\x0cpayment_hash\x18\x06 \x01(\x0c\x12\x11\n\tsignature\x18\x07 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x1d\n\x10\x64\x65scription_hash\x18\t \x01(\x0cH\x02\x88\x01\x01\x12\x1d\n\x15min_final_cltv_expiry\x18\n \x01(\r\x12\x1b\n\x0epayment_secret\x18\x0b \x01(\x0cH\x03\x88\x01\x01\x12\x15\n\x08\x66\x65\x61tures\x18\x0c \x01(\x0cH\x04\x88\x01\x01\x12\x1d\n\x10payment_metadata\x18\r \x01(\x0cH\x05\x88\x01\x01\x12*\n\tfallbacks\x18\x0e \x03(\x0b\x32\x17.cln.DecodepayFallbacks\x12\"\n\x05\x65xtra\x18\x10 \x03(\x0b\x32\x13.cln.DecodepayExtra\x12-\n\x06routes\x18\x11 \x01(\x0b\x32\x18.cln.DecodeRoutehintListH\x06\x88\x01\x01\x42\x0e\n\x0c_amount_msatB\x0e\n\x0c_descriptionB\x13\n\x11_description_hashB\x11\n\x0f_payment_secretB\x0b\n\t_featuresB\x13\n\x11_payment_metadataB\t\n\x07_routes\"\xd0\x01\n\x12\x44\x65\x63odepayFallbacks\x12\x41\n\titem_type\x18\x01 \x01(\x0e\x32..cln.DecodepayFallbacks.DecodepayFallbacksType\x12\x11\n\x04\x61\x64\x64r\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x0b\n\x03hex\x18\x03 \x01(\x0c\"N\n\x16\x44\x65\x63odepayFallbacksType\x12\t\n\x05P2PKH\x10\x00\x12\x08\n\x04P2SH\x10\x01\x12\n\n\x06P2WPKH\x10\x02\x12\t\n\x05P2WSH\x10\x03\x12\x08\n\x04P2TR\x10\x04\x42\x07\n\x05_addr\"+\n\x0e\x44\x65\x63odepayExtra\x12\x0b\n\x03tag\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\t\"\x1f\n\rDecodeRequest\x12\x0e\n\x06string\x18\x01 \x01(\t\"\xec%\n\x0e\x44\x65\x63odeResponse\x12\x31\n\titem_type\x18\x01 \x01(\x0e\x32\x1e.cln.DecodeResponse.DecodeType\x12\r\n\x05valid\x18\x02 \x01(\x08\x12\x15\n\x08offer_id\x18\x03 \x01(\x0cH\x00\x88\x01\x01\x12\x14\n\x0coffer_chains\x18\x04 \x03(\x0c\x12\x1b\n\x0eoffer_metadata\x18\x05 \x01(\x0cH\x01\x88\x01\x01\x12\x1b\n\x0eoffer_currency\x18\x06 \x01(\tH\x02\x88\x01\x01\x12+\n\x1ewarning_unknown_offer_currency\x18\x07 \x01(\tH\x03\x88\x01\x01\x12 \n\x13\x63urrency_minor_unit\x18\x08 \x01(\rH\x04\x88\x01\x01\x12\x19\n\x0coffer_amount\x18\t \x01(\x04H\x05\x88\x01\x01\x12+\n\x11offer_amount_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x06\x88\x01\x01\x12\x1e\n\x11offer_description\x18\x0b \x01(\tH\x07\x88\x01\x01\x12\x19\n\x0coffer_issuer\x18\x0c \x01(\tH\x08\x88\x01\x01\x12\x1b\n\x0eoffer_features\x18\r \x01(\x0cH\t\x88\x01\x01\x12\"\n\x15offer_absolute_expiry\x18\x0e \x01(\x04H\n\x88\x01\x01\x12\x1f\n\x12offer_quantity_max\x18\x0f \x01(\x04H\x0b\x88\x01\x01\x12+\n\x0boffer_paths\x18\x10 \x03(\x0b\x32\x16.cln.DecodeOffer_paths\x12\x1a\n\roffer_node_id\x18\x11 \x01(\x0cH\x0c\x88\x01\x01\x12*\n\x1dwarning_missing_offer_node_id\x18\x14 \x01(\tH\r\x88\x01\x01\x12.\n!warning_invalid_offer_description\x18\x15 \x01(\tH\x0e\x88\x01\x01\x12.\n!warning_missing_offer_description\x18\x16 \x01(\tH\x0f\x88\x01\x01\x12+\n\x1ewarning_invalid_offer_currency\x18\x17 \x01(\tH\x10\x88\x01\x01\x12)\n\x1cwarning_invalid_offer_issuer\x18\x18 \x01(\tH\x11\x88\x01\x01\x12\x1c\n\x0finvreq_metadata\x18\x19 \x01(\x0cH\x12\x88\x01\x01\x12\x1c\n\x0finvreq_payer_id\x18\x1a \x01(\x0cH\x13\x88\x01\x01\x12\x19\n\x0cinvreq_chain\x18\x1b \x01(\x0cH\x14\x88\x01\x01\x12,\n\x12invreq_amount_msat\x18\x1c \x01(\x0b\x32\x0b.cln.AmountH\x15\x88\x01\x01\x12\x1c\n\x0finvreq_features\x18\x1d \x01(\x0cH\x16\x88\x01\x01\x12\x1c\n\x0finvreq_quantity\x18\x1e \x01(\x04H\x17\x88\x01\x01\x12\x1e\n\x11invreq_payer_note\x18\x1f \x01(\tH\x18\x88\x01\x01\x12&\n\x19invreq_recurrence_counter\x18 \x01(\rH\x19\x88\x01\x01\x12$\n\x17invreq_recurrence_start\x18! \x01(\rH\x1a\x88\x01\x01\x12,\n\x1fwarning_missing_invreq_metadata\x18# \x01(\tH\x1b\x88\x01\x01\x12,\n\x1fwarning_missing_invreq_payer_id\x18$ \x01(\tH\x1c\x88\x01\x01\x12.\n!warning_invalid_invreq_payer_note\x18% \x01(\tH\x1d\x88\x01\x01\x12\x36\n)warning_missing_invoice_request_signature\x18& \x01(\tH\x1e\x88\x01\x01\x12\x36\n)warning_invalid_invoice_request_signature\x18\' \x01(\tH\x1f\x88\x01\x01\x12\x1f\n\x12invoice_created_at\x18) \x01(\x04H \x88\x01\x01\x12$\n\x17invoice_relative_expiry\x18* \x01(\rH!\x88\x01\x01\x12!\n\x14invoice_payment_hash\x18+ \x01(\x0cH\"\x88\x01\x01\x12-\n\x13invoice_amount_msat\x18, \x01(\x0b\x32\x0b.cln.AmountH#\x88\x01\x01\x12\x37\n\x11invoice_fallbacks\x18- \x03(\x0b\x32\x1c.cln.DecodeInvoice_fallbacks\x12\x1d\n\x10invoice_features\x18. \x01(\x0cH$\x88\x01\x01\x12\x1c\n\x0finvoice_node_id\x18/ \x01(\x0cH%\x88\x01\x01\x12(\n\x1binvoice_recurrence_basetime\x18\x30 \x01(\x04H&\x88\x01\x01\x12*\n\x1dwarning_missing_invoice_paths\x18\x32 \x01(\tH\'\x88\x01\x01\x12/\n\"warning_missing_invoice_blindedpay\x18\x33 \x01(\tH(\x88\x01\x01\x12/\n\"warning_missing_invoice_created_at\x18\x34 \x01(\tH)\x88\x01\x01\x12\x31\n$warning_missing_invoice_payment_hash\x18\x35 \x01(\tH*\x88\x01\x01\x12+\n\x1ewarning_missing_invoice_amount\x18\x36 \x01(\tH+\x88\x01\x01\x12\x38\n+warning_missing_invoice_recurrence_basetime\x18\x37 \x01(\tH,\x88\x01\x01\x12,\n\x1fwarning_missing_invoice_node_id\x18\x38 \x01(\tH-\x88\x01\x01\x12.\n!warning_missing_invoice_signature\x18\x39 \x01(\tH.\x88\x01\x01\x12.\n!warning_invalid_invoice_signature\x18: \x01(\tH/\x88\x01\x01\x12\'\n\tfallbacks\x18; \x03(\x0b\x32\x14.cln.DecodeFallbacks\x12\x17\n\ncreated_at\x18< \x01(\x04H0\x88\x01\x01\x12\x13\n\x06\x65xpiry\x18= \x01(\x04H1\x88\x01\x01\x12\x12\n\x05payee\x18> \x01(\x0cH2\x88\x01\x01\x12\x19\n\x0cpayment_hash\x18? \x01(\x0cH3\x88\x01\x01\x12\x1d\n\x10\x64\x65scription_hash\x18@ \x01(\x0cH4\x88\x01\x01\x12\"\n\x15min_final_cltv_expiry\x18\x41 \x01(\rH5\x88\x01\x01\x12\x1b\n\x0epayment_secret\x18\x42 \x01(\x0cH6\x88\x01\x01\x12\x1d\n\x10payment_metadata\x18\x43 \x01(\x0cH7\x88\x01\x01\x12\x1f\n\x05\x65xtra\x18\x45 \x03(\x0b\x32\x10.cln.DecodeExtra\x12\x16\n\tunique_id\x18\x46 \x01(\tH8\x88\x01\x01\x12\x14\n\x07version\x18G \x01(\tH9\x88\x01\x01\x12\x13\n\x06string\x18H \x01(\tH:\x88\x01\x01\x12-\n\x0crestrictions\x18I \x03(\x0b\x32\x17.cln.DecodeRestrictions\x12&\n\x19warning_rune_invalid_utf8\x18J \x01(\tH;\x88\x01\x01\x12\x10\n\x03hex\x18K \x01(\x0cH<\x88\x01\x01\x12\x16\n\tdecrypted\x18L \x01(\x0cH=\x88\x01\x01\x12\x16\n\tsignature\x18M \x01(\tH>\x88\x01\x01\x12\x15\n\x08\x63urrency\x18N \x01(\tH?\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18O \x01(\x0b\x32\x0b.cln.AmountH@\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18P \x01(\tHA\x88\x01\x01\x12\x15\n\x08\x66\x65\x61tures\x18Q \x01(\x0cHB\x88\x01\x01\x12-\n\x06routes\x18R \x01(\x0b\x32\x18.cln.DecodeRoutehintListHC\x88\x01\x01\x12\x1c\n\x0foffer_issuer_id\x18S \x01(\x0cHD\x88\x01\x01\x12,\n\x1fwarning_missing_offer_issuer_id\x18T \x01(\tHE\x88\x01\x01\x12-\n\x0cinvreq_paths\x18U \x03(\x0b\x32\x17.cln.DecodeInvreq_paths\x12\'\n\x1awarning_empty_blinded_path\x18V \x01(\tHF\x88\x01\x01\"\x83\x01\n\nDecodeType\x12\x10\n\x0c\x42OLT12_OFFER\x10\x00\x12\x12\n\x0e\x42OLT12_INVOICE\x10\x01\x12\x1a\n\x16\x42OLT12_INVOICE_REQUEST\x10\x02\x12\x12\n\x0e\x42OLT11_INVOICE\x10\x03\x12\x08\n\x04RUNE\x10\x04\x12\x15\n\x11\x45MERGENCY_RECOVER\x10\x05\x42\x0b\n\t_offer_idB\x11\n\x0f_offer_metadataB\x11\n\x0f_offer_currencyB!\n\x1f_warning_unknown_offer_currencyB\x16\n\x14_currency_minor_unitB\x0f\n\r_offer_amountB\x14\n\x12_offer_amount_msatB\x14\n\x12_offer_descriptionB\x0f\n\r_offer_issuerB\x11\n\x0f_offer_featuresB\x18\n\x16_offer_absolute_expiryB\x15\n\x13_offer_quantity_maxB\x10\n\x0e_offer_node_idB \n\x1e_warning_missing_offer_node_idB$\n\"_warning_invalid_offer_descriptionB$\n\"_warning_missing_offer_descriptionB!\n\x1f_warning_invalid_offer_currencyB\x1f\n\x1d_warning_invalid_offer_issuerB\x12\n\x10_invreq_metadataB\x12\n\x10_invreq_payer_idB\x0f\n\r_invreq_chainB\x15\n\x13_invreq_amount_msatB\x12\n\x10_invreq_featuresB\x12\n\x10_invreq_quantityB\x14\n\x12_invreq_payer_noteB\x1c\n\x1a_invreq_recurrence_counterB\x1a\n\x18_invreq_recurrence_startB\"\n _warning_missing_invreq_metadataB\"\n _warning_missing_invreq_payer_idB$\n\"_warning_invalid_invreq_payer_noteB,\n*_warning_missing_invoice_request_signatureB,\n*_warning_invalid_invoice_request_signatureB\x15\n\x13_invoice_created_atB\x1a\n\x18_invoice_relative_expiryB\x17\n\x15_invoice_payment_hashB\x16\n\x14_invoice_amount_msatB\x13\n\x11_invoice_featuresB\x12\n\x10_invoice_node_idB\x1e\n\x1c_invoice_recurrence_basetimeB \n\x1e_warning_missing_invoice_pathsB%\n#_warning_missing_invoice_blindedpayB%\n#_warning_missing_invoice_created_atB\'\n%_warning_missing_invoice_payment_hashB!\n\x1f_warning_missing_invoice_amountB.\n,_warning_missing_invoice_recurrence_basetimeB\"\n _warning_missing_invoice_node_idB$\n\"_warning_missing_invoice_signatureB$\n\"_warning_invalid_invoice_signatureB\r\n\x0b_created_atB\t\n\x07_expiryB\x08\n\x06_payeeB\x0f\n\r_payment_hashB\x13\n\x11_description_hashB\x18\n\x16_min_final_cltv_expiryB\x11\n\x0f_payment_secretB\x13\n\x11_payment_metadataB\x0c\n\n_unique_idB\n\n\x08_versionB\t\n\x07_stringB\x1c\n\x1a_warning_rune_invalid_utf8B\x06\n\x04_hexB\x0c\n\n_decryptedB\x0c\n\n_signatureB\x0b\n\t_currencyB\x0e\n\x0c_amount_msatB\x0e\n\x0c_descriptionB\x0b\n\t_featuresB\t\n\x07_routesB\x12\n\x10_offer_issuer_idB\"\n _warning_missing_offer_issuer_idB\x1d\n\x1b_warning_empty_blinded_path\"\xab\x01\n\x11\x44\x65\x63odeOffer_paths\x12\x1a\n\rfirst_node_id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x10\n\x08\x62linding\x18\x02 \x01(\x0c\x12\x1b\n\x0e\x66irst_scid_dir\x18\x04 \x01(\rH\x01\x88\x01\x01\x12\x17\n\nfirst_scid\x18\x05 \x01(\tH\x02\x88\x01\x01\x42\x10\n\x0e_first_node_idB\x11\n\x0f_first_scid_dirB\r\n\x0b_first_scid\"\x8a\x01\n\x1f\x44\x65\x63odeOffer_recurrencePaywindow\x12\x16\n\x0eseconds_before\x18\x01 \x01(\r\x12\x15\n\rseconds_after\x18\x02 \x01(\r\x12 \n\x13proportional_amount\x18\x03 \x01(\x08H\x00\x88\x01\x01\x42\x16\n\x14_proportional_amount\"\xd7\x01\n\x12\x44\x65\x63odeInvreq_paths\x12\x1b\n\x0e\x66irst_scid_dir\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x10\n\x08\x62linding\x18\x02 \x01(\x0c\x12\x1a\n\rfirst_node_id\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x17\n\nfirst_scid\x18\x04 \x01(\tH\x02\x88\x01\x01\x12)\n\x04path\x18\x05 \x03(\x0b\x32\x1b.cln.DecodeInvreq_pathsPathB\x11\n\x0f_first_scid_dirB\x10\n\x0e_first_node_idB\r\n\x0b_first_scid\"S\n\x16\x44\x65\x63odeInvreq_pathsPath\x12\x17\n\x0f\x62linded_node_id\x18\x01 \x01(\x0c\x12 \n\x18\x65ncrypted_recipient_data\x18\x02 \x01(\x0c\"T\n\x17\x44\x65\x63odeInvoice_pathsPath\x12\x17\n\x0f\x62linded_node_id\x18\x01 \x01(\x0c\x12 \n\x18\x65ncrypted_recipient_data\x18\x02 \x01(\x0c\"Y\n\x17\x44\x65\x63odeInvoice_fallbacks\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0b\n\x03hex\x18\x02 \x01(\x0c\x12\x14\n\x07\x61\x64\x64ress\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\n\n\x08_address\"\xaa\x02\n\x0f\x44\x65\x63odeFallbacks\x12\x36\n)warning_invoice_fallbacks_version_invalid\x18\x01 \x01(\tH\x00\x88\x01\x01\x12;\n\titem_type\x18\x02 \x01(\x0e\x32(.cln.DecodeFallbacks.DecodeFallbacksType\x12\x11\n\x04\x61\x64\x64r\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x0b\n\x03hex\x18\x04 \x01(\x0c\"K\n\x13\x44\x65\x63odeFallbacksType\x12\t\n\x05P2PKH\x10\x00\x12\x08\n\x04P2SH\x10\x01\x12\n\n\x06P2WPKH\x10\x02\x12\t\n\x05P2WSH\x10\x03\x12\x08\n\x04P2TR\x10\x04\x42,\n*_warning_invoice_fallbacks_version_invalidB\x07\n\x05_addr\"(\n\x0b\x44\x65\x63odeExtra\x12\x0b\n\x03tag\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\t\";\n\x12\x44\x65\x63odeRestrictions\x12\x14\n\x0c\x61lternatives\x18\x01 \x03(\t\x12\x0f\n\x07summary\x18\x02 \x01(\t\"\xc2\x01\n\rDelpayRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12/\n\x06status\x18\x02 \x01(\x0e\x32\x1f.cln.DelpayRequest.DelpayStatus\x12\x13\n\x06partid\x18\x03 \x01(\x04H\x00\x88\x01\x01\x12\x14\n\x07groupid\x18\x04 \x01(\x04H\x01\x88\x01\x01\"(\n\x0c\x44\x65lpayStatus\x12\x0c\n\x08\x43OMPLETE\x10\x00\x12\n\n\x06\x46\x41ILED\x10\x01\x42\t\n\x07_partidB\n\n\x08_groupid\"7\n\x0e\x44\x65lpayResponse\x12%\n\x08payments\x18\x01 \x03(\x0b\x32\x13.cln.DelpayPayments\"\xcb\x05\n\x0e\x44\x65lpayPayments\x12\x1a\n\rcreated_index\x18\x01 \x01(\x04H\x00\x88\x01\x01\x12\n\n\x02id\x18\x02 \x01(\x04\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x38\n\x06status\x18\x04 \x01(\x0e\x32(.cln.DelpayPayments.DelpayPaymentsStatus\x12%\n\x10\x61mount_sent_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12\x13\n\x06partid\x18\x06 \x01(\x04H\x01\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\x07 \x01(\x0cH\x02\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\x08 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x12\n\ncreated_at\x18\t \x01(\x04\x12\x1a\n\rupdated_index\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x19\n\x0c\x63ompleted_at\x18\x0b \x01(\x04H\x05\x88\x01\x01\x12\x14\n\x07groupid\x18\x0c \x01(\x04H\x06\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\r \x01(\x0cH\x07\x88\x01\x01\x12\x12\n\x05label\x18\x0e \x01(\tH\x08\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x0f \x01(\tH\t\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x10 \x01(\tH\n\x88\x01\x01\x12\x17\n\nerroronion\x18\x11 \x01(\x0cH\x0b\x88\x01\x01\"=\n\x14\x44\x65lpayPaymentsStatus\x12\x0b\n\x07PENDING\x10\x00\x12\n\n\x06\x46\x41ILED\x10\x01\x12\x0c\n\x08\x43OMPLETE\x10\x02\x42\x10\n\x0e_created_indexB\t\n\x07_partidB\x0e\n\x0c_destinationB\x0e\n\x0c_amount_msatB\x10\n\x0e_updated_indexB\x0f\n\r_completed_atB\n\n\x08_groupidB\x13\n\x11_payment_preimageB\x08\n\x06_labelB\t\n\x07_bolt11B\t\n\x07_bolt12B\r\n\x0b_erroronion\"\xb3\x01\n\x11\x44\x65lforwardRequest\x12\x12\n\nin_channel\x18\x01 \x01(\t\x12\x12\n\nin_htlc_id\x18\x02 \x01(\x04\x12\x37\n\x06status\x18\x03 \x01(\x0e\x32\'.cln.DelforwardRequest.DelforwardStatus\"=\n\x10\x44\x65lforwardStatus\x12\x0b\n\x07SETTLED\x10\x00\x12\x10\n\x0cLOCAL_FAILED\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\"\x14\n\x12\x44\x65lforwardResponse\"\'\n\x13\x44isableofferRequest\x12\x10\n\x08offer_id\x18\x01 \x01(\x0c\"\x88\x01\n\x14\x44isableofferResponse\x12\x10\n\x08offer_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61\x63tive\x18\x02 \x01(\x08\x12\x12\n\nsingle_use\x18\x03 \x01(\x08\x12\x0e\n\x06\x62olt12\x18\x04 \x01(\t\x12\x0c\n\x04used\x18\x05 \x01(\x08\x12\x12\n\x05label\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_label\"=\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\"\x9c\x02\n\x10\x46\x65\x65ratesResponse\x12%\n\x18warning_missing_feerates\x18\x01 \x01(\tH\x00\x88\x01\x01\x12&\n\x05perkb\x18\x02 \x01(\x0b\x32\x12.cln.FeeratesPerkbH\x01\x88\x01\x01\x12&\n\x05perkw\x18\x03 \x01(\x0b\x32\x12.cln.FeeratesPerkwH\x02\x88\x01\x01\x12\x46\n\x15onchain_fee_estimates\x18\x04 \x01(\x0b\x32\".cln.FeeratesOnchain_fee_estimatesH\x03\x88\x01\x01\x42\x1b\n\x19_warning_missing_feeratesB\x08\n\x06_perkbB\x08\n\x06_perkwB\x18\n\x16_onchain_fee_estimates\"\xd3\x03\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\x12.\n\testimates\x18\t \x03(\x0b\x32\x1b.cln.FeeratesPerkbEstimates\x12\x12\n\x05\x66loor\x18\n \x01(\rH\x06\x88\x01\x01\x12$\n\x17unilateral_anchor_close\x18\x0b \x01(\rH\x07\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_penaltyB\x08\n\x06_floorB\x1a\n\x18_unilateral_anchor_close\"W\n\x16\x46\x65\x65ratesPerkbEstimates\x12\x12\n\nblockcount\x18\x01 \x01(\r\x12\x0f\n\x07\x66\x65\x65rate\x18\x02 \x01(\r\x12\x18\n\x10smoothed_feerate\x18\x03 \x01(\r\"\xd3\x03\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\x12.\n\testimates\x18\t \x03(\x0b\x32\x1b.cln.FeeratesPerkwEstimates\x12\x12\n\x05\x66loor\x18\n \x01(\rH\x06\x88\x01\x01\x12$\n\x17unilateral_anchor_close\x18\x0b \x01(\rH\x07\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_penaltyB\x08\n\x06_floorB\x1a\n\x18_unilateral_anchor_close\"W\n\x16\x46\x65\x65ratesPerkwEstimates\x12\x12\n\nblockcount\x18\x01 \x01(\r\x12\x0f\n\x07\x66\x65\x65rate\x18\x02 \x01(\r\x12\x18\n\x10smoothed_feerate\x18\x03 \x01(\r\"\x9b\x02\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\x12\x30\n#unilateral_close_nonanchor_satoshis\x18\x06 \x01(\x04H\x00\x88\x01\x01\x42&\n$_unilateral_close_nonanchor_satoshis\"\xe9\x02\n\x13\x46\x65tchinvoiceRequest\x12\r\n\x05offer\x18\x01 \x01(\t\x12%\n\x0b\x61mount_msat\x18\x02 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x15\n\x08quantity\x18\x03 \x01(\x04H\x01\x88\x01\x01\x12\x1f\n\x12recurrence_counter\x18\x04 \x01(\x04H\x02\x88\x01\x01\x12\x1d\n\x10recurrence_start\x18\x05 \x01(\x01H\x03\x88\x01\x01\x12\x1d\n\x10recurrence_label\x18\x06 \x01(\tH\x04\x88\x01\x01\x12\x14\n\x07timeout\x18\x07 \x01(\x01H\x05\x88\x01\x01\x12\x17\n\npayer_note\x18\x08 \x01(\tH\x06\x88\x01\x01\x42\x0e\n\x0c_amount_msatB\x0b\n\t_quantityB\x15\n\x13_recurrence_counterB\x13\n\x11_recurrence_startB\x13\n\x11_recurrence_labelB\n\n\x08_timeoutB\r\n\x0b_payer_note\"\x9a\x01\n\x14\x46\x65tchinvoiceResponse\x12\x0f\n\x07invoice\x18\x01 \x01(\t\x12)\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x18.cln.FetchinvoiceChanges\x12\x36\n\x0bnext_period\x18\x03 \x01(\x0b\x32\x1c.cln.FetchinvoiceNext_periodH\x00\x88\x01\x01\x42\x0e\n\x0c_next_period\"\x82\x02\n\x13\x46\x65tchinvoiceChanges\x12!\n\x14\x64\x65scription_appended\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1b\n\x0evendor_removed\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x13\n\x06vendor\x18\x04 \x01(\tH\x03\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x42\x17\n\x15_description_appendedB\x0e\n\x0c_descriptionB\x11\n\x0f_vendor_removedB\t\n\x07_vendorB\x0e\n\x0c_amount_msat\"~\n\x17\x46\x65tchinvoiceNext_period\x12\x0f\n\x07\x63ounter\x18\x01 \x01(\x04\x12\x11\n\tstarttime\x18\x02 \x01(\x04\x12\x0f\n\x07\x65ndtime\x18\x03 \x01(\x04\x12\x17\n\x0fpaywindow_start\x18\x04 \x01(\x04\x12\x15\n\rpaywindow_end\x18\x05 \x01(\x04\"\'\n\x19\x46undchannel_cancelRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\"/\n\x1a\x46undchannel_cancelResponse\x12\x11\n\tcancelled\x18\x01 \x01(\t\"7\n\x1b\x46undchannel_completeRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x0c\n\x04psbt\x18\x02 \x01(\t\"O\n\x1c\x46undchannel_completeResponse\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x1b\n\x13\x63ommitments_secured\x18\x02 \x01(\x08\"\xfb\x03\n\x12\x46undchannelRequest\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#\n\tpush_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12\x15\n\x08\x63lose_to\x18\x06 \x01(\tH\x03\x88\x01\x01\x12%\n\x0brequest_amt\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12\x1a\n\rcompact_lease\x18\x08 \x01(\tH\x05\x88\x01\x01\x12\n\n\x02id\x18\t \x01(\x0c\x12\x14\n\x07minconf\x18\n \x01(\rH\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\x12\x14\n\x0c\x63hannel_type\x18\x0e \x03(\rB\n\n\x08_feerateB\x0b\n\t_announceB\x0c\n\n_push_msatB\x0b\n\t_close_toB\x0e\n\x0c_request_amtB\x10\n\x0e_compact_leaseB\n\n\x08_minconfB\x0b\n\t_mindepthB\n\n\x08_reserve\"\xe5\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\x12\x37\n\x0c\x63hannel_type\x18\x07 \x01(\x0b\x32\x1c.cln.FundchannelChannel_typeH\x02\x88\x01\x01\x42\x0b\n\t_close_toB\x0b\n\t_mindepthB\x0f\n\r_channel_type\"L\n\x17\x46undchannelChannel_type\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"\xd7\x02\n\x18\x46undchannel_startRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x1b\n\x06\x61mount\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\"\n\x07\x66\x65\x65rate\x18\x03 \x01(\x0b\x32\x0c.cln.FeerateH\x00\x88\x01\x01\x12\x15\n\x08\x61nnounce\x18\x04 \x01(\x08H\x01\x88\x01\x01\x12\x15\n\x08\x63lose_to\x18\x05 \x01(\tH\x02\x88\x01\x01\x12#\n\tpush_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x15\n\x08mindepth\x18\x07 \x01(\rH\x04\x88\x01\x01\x12!\n\x07reserve\x18\x08 \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x14\n\x0c\x63hannel_type\x18\t \x03(\rB\n\n\x08_feerateB\x0b\n\t_announceB\x0b\n\t_close_toB\x0c\n\n_push_msatB\x0b\n\t_mindepthB\n\n\x08_reserve\"\xf9\x01\n\x19\x46undchannel_startResponse\x12\x17\n\x0f\x66unding_address\x18\x01 \x01(\t\x12\x14\n\x0cscriptpubkey\x18\x02 \x01(\x0c\x12=\n\x0c\x63hannel_type\x18\x03 \x01(\x0b\x32\".cln.Fundchannel_startChannel_typeH\x00\x88\x01\x01\x12\x15\n\x08\x63lose_to\x18\x04 \x01(\x0cH\x01\x88\x01\x01\x12\x15\n\rwarning_usage\x18\x05 \x01(\t\x12\x15\n\x08mindepth\x18\x06 \x01(\rH\x02\x88\x01\x01\x42\x0f\n\r_channel_typeB\x0b\n\t_close_toB\x0b\n\t_mindepth\"R\n\x1d\x46undchannel_startChannel_type\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"\x9d\x01\n\rGetlogRequest\x12\x32\n\x05level\x18\x01 \x01(\x0e\x32\x1e.cln.GetlogRequest.GetlogLevelH\x00\x88\x01\x01\"N\n\x0bGetlogLevel\x12\n\n\x06\x42ROKEN\x10\x00\x12\x0b\n\x07UNUSUAL\x10\x01\x12\x08\n\x04INFO\x10\x02\x12\t\n\x05\x44\x45\x42UG\x10\x03\x12\x06\n\x02IO\x10\x04\x12\t\n\x05TRACE\x10\x05\x42\x08\n\x06_level\"h\n\x0eGetlogResponse\x12\x12\n\ncreated_at\x18\x01 \x01(\t\x12\x12\n\nbytes_used\x18\x02 \x01(\r\x12\x11\n\tbytes_max\x18\x03 \x01(\r\x12\x1b\n\x03log\x18\x04 \x03(\x0b\x32\x0e.cln.GetlogLog\"\xe8\x02\n\tGetlogLog\x12/\n\titem_type\x18\x01 \x01(\x0e\x32\x1c.cln.GetlogLog.GetlogLogType\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\"l\n\rGetlogLogType\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\x12\t\n\x05TRACE\x10\x07\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\"\xd9\x08\n\x13\x46underupdateRequest\x12@\n\x06policy\x18\x01 \x01(\x0e\x32+.cln.FunderupdateRequest.FunderupdatePolicyH\x00\x88\x01\x01\x12$\n\npolicy_mod\x18\x02 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\x18\n\x0bleases_only\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x30\n\x16min_their_funding_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x30\n\x16max_their_funding_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12.\n\x14per_channel_min_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12.\n\x14per_channel_max_msat\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x06\x88\x01\x01\x12+\n\x11reserve_tank_msat\x18\x08 \x01(\x0b\x32\x0b.cln.AmountH\x07\x88\x01\x01\x12\x19\n\x0c\x66uzz_percent\x18\t \x01(\rH\x08\x88\x01\x01\x12\x1d\n\x10\x66und_probability\x18\n \x01(\rH\t\x88\x01\x01\x12-\n\x13lease_fee_base_msat\x18\x0b \x01(\x0b\x32\x0b.cln.AmountH\n\x88\x01\x01\x12\x1c\n\x0flease_fee_basis\x18\x0c \x01(\rH\x0b\x88\x01\x01\x12\x1b\n\x0e\x66unding_weight\x18\r \x01(\rH\x0c\x88\x01\x01\x12\x33\n\x19\x63hannel_fee_max_base_msat\x18\x0e \x01(\x0b\x32\x0b.cln.AmountH\r\x88\x01\x01\x12\x35\n(channel_fee_max_proportional_thousandths\x18\x0f \x01(\rH\x0e\x88\x01\x01\x12\x1a\n\rcompact_lease\x18\x10 \x01(\x0cH\x0f\x88\x01\x01\"9\n\x12\x46underupdatePolicy\x12\t\n\x05MATCH\x10\x00\x12\r\n\tAVAILABLE\x10\x01\x12\t\n\x05\x46IXED\x10\x02\x42\t\n\x07_policyB\r\n\x0b_policy_modB\x0e\n\x0c_leases_onlyB\x19\n\x17_min_their_funding_msatB\x19\n\x17_max_their_funding_msatB\x17\n\x15_per_channel_min_msatB\x17\n\x15_per_channel_max_msatB\x14\n\x12_reserve_tank_msatB\x0f\n\r_fuzz_percentB\x13\n\x11_fund_probabilityB\x16\n\x14_lease_fee_base_msatB\x12\n\x10_lease_fee_basisB\x11\n\x0f_funding_weightB\x1c\n\x1a_channel_fee_max_base_msatB+\n)_channel_fee_max_proportional_thousandthsB\x10\n\x0e_compact_lease\"\xdf\x06\n\x14\x46underupdateResponse\x12\x0f\n\x07summary\x18\x01 \x01(\t\x12<\n\x06policy\x18\x02 \x01(\x0e\x32,.cln.FunderupdateResponse.FunderupdatePolicy\x12\x12\n\npolicy_mod\x18\x03 \x01(\r\x12\x13\n\x0bleases_only\x18\x04 \x01(\x08\x12+\n\x16min_their_funding_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12+\n\x16max_their_funding_msat\x18\x06 \x01(\x0b\x32\x0b.cln.Amount\x12)\n\x14per_channel_min_msat\x18\x07 \x01(\x0b\x32\x0b.cln.Amount\x12)\n\x14per_channel_max_msat\x18\x08 \x01(\x0b\x32\x0b.cln.Amount\x12&\n\x11reserve_tank_msat\x18\t \x01(\x0b\x32\x0b.cln.Amount\x12\x14\n\x0c\x66uzz_percent\x18\n \x01(\r\x12\x18\n\x10\x66und_probability\x18\x0b \x01(\r\x12-\n\x13lease_fee_base_msat\x18\x0c \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x1c\n\x0flease_fee_basis\x18\r \x01(\rH\x01\x88\x01\x01\x12\x1b\n\x0e\x66unding_weight\x18\x0e \x01(\rH\x02\x88\x01\x01\x12\x33\n\x19\x63hannel_fee_max_base_msat\x18\x0f \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x35\n(channel_fee_max_proportional_thousandths\x18\x10 \x01(\rH\x04\x88\x01\x01\x12\x1a\n\rcompact_lease\x18\x11 \x01(\x0cH\x05\x88\x01\x01\"9\n\x12\x46underupdatePolicy\x12\t\n\x05MATCH\x10\x00\x12\r\n\tAVAILABLE\x10\x01\x12\t\n\x05\x46IXED\x10\x02\x42\x16\n\x14_lease_fee_base_msatB\x12\n\x10_lease_fee_basisB\x11\n\x0f_funding_weightB\x1c\n\x1a_channel_fee_max_base_msatB+\n)_channel_fee_max_proportional_thousandthsB\x10\n\x0e_compact_lease\"\xec\x01\n\x0fGetrouteRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x12\n\nriskfactor\x18\x03 \x01(\x04\x12\x11\n\x04\x63ltv\x18\x04 \x01(\rH\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\x12 \n\x0b\x61mount_msat\x18\t \x01(\x0b\x32\x0b.cln.AmountB\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\"\xc5\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 \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\"\xb7\x03\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\x12>\n\x05index\x18\x04 \x01(\x0e\x32*.cln.ListforwardsRequest.ListforwardsIndexH\x03\x88\x01\x01\x12\x12\n\x05start\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12\x12\n\x05limit\x18\x06 \x01(\rH\x05\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\"-\n\x11ListforwardsIndex\x12\x0b\n\x07\x43REATED\x10\x00\x12\x0b\n\x07UPDATED\x10\x01\x42\t\n\x07_statusB\r\n\x0b_in_channelB\x0e\n\x0c_out_channelB\x08\n\x06_indexB\x08\n\x06_startB\x08\n\x06_limit\"C\n\x14ListforwardsResponse\x12+\n\x08\x66orwards\x18\x01 \x03(\x0b\x32\x19.cln.ListforwardsForwards\"\xb4\x06\n\x14ListforwardsForwards\x12\x12\n\nin_channel\x18\x01 \x01(\t\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\x00\x88\x01\x01\x12\"\n\x08\x66\x65\x65_msat\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\"\n\x08out_msat\x18\x08 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12G\n\x05style\x18\t \x01(\x0e\x32\x33.cln.ListforwardsForwards.ListforwardsForwardsStyleH\x03\x88\x01\x01\x12\x17\n\nin_htlc_id\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x18\n\x0bout_htlc_id\x18\x0b \x01(\x04H\x05\x88\x01\x01\x12\x1a\n\rcreated_index\x18\x0c \x01(\x04H\x06\x88\x01\x01\x12\x1a\n\rupdated_index\x18\r \x01(\x04H\x07\x88\x01\x01\x12\x1a\n\rresolved_time\x18\x0e \x01(\x01H\x08\x88\x01\x01\x12\x15\n\x08\x66\x61ilcode\x18\x0f \x01(\rH\t\x88\x01\x01\x12\x17\n\nfailreason\x18\x10 \x01(\tH\n\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\x0e\n\x0c_out_channelB\x0b\n\t_fee_msatB\x0b\n\t_out_msatB\x08\n\x06_styleB\r\n\x0b_in_htlc_idB\x0e\n\x0c_out_htlc_idB\x10\n\x0e_created_indexB\x10\n\x0e_updated_indexB\x10\n\x0e_resolved_timeB\x0b\n\t_failcodeB\r\n\x0b_failreason\"a\n\x11ListoffersRequest\x12\x15\n\x08offer_id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x18\n\x0b\x61\x63tive_only\x18\x02 \x01(\x08H\x01\x88\x01\x01\x42\x0b\n\t_offer_idB\x0e\n\x0c_active_only\";\n\x12ListoffersResponse\x12%\n\x06offers\x18\x01 \x03(\x0b\x32\x15.cln.ListoffersOffers\"\x84\x01\n\x10ListoffersOffers\x12\x10\n\x08offer_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61\x63tive\x18\x02 \x01(\x08\x12\x12\n\nsingle_use\x18\x03 \x01(\x08\x12\x0e\n\x06\x62olt12\x18\x04 \x01(\t\x12\x0c\n\x04used\x18\x05 \x01(\x08\x12\x12\n\x05label\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_label\"\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\"\xff\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\x12\n\x05label\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x06 \x01(\tH\x02\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x07 \x01(\tH\x03\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\x08 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12*\n\x10\x61mount_sent_msat\x18\t \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x17\n\nerroronion\x18\n \x01(\x0cH\x06\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x0b \x01(\tH\x07\x88\x01\x01\x12\x19\n\x0c\x63ompleted_at\x18\x0c \x01(\x04H\x08\x88\x01\x01\x12\x15\n\x08preimage\x18\r \x01(\x0cH\t\x88\x01\x01\x12\x1c\n\x0fnumber_of_parts\x18\x0e \x01(\x04H\n\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\x08\n\x06_labelB\t\n\x07_bolt11B\t\n\x07_bolt12B\x0e\n\x0c_amount_msatB\x13\n\x11_amount_sent_msatB\r\n\x0b_erroronionB\x0e\n\x0c_descriptionB\x0f\n\r_completed_atB\x0b\n\t_preimageB\x12\n\x10_number_of_parts\"*\n\x10ListhtlcsRequest\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x05\n\x03_id\"7\n\x11ListhtlcsResponse\x12\"\n\x05htlcs\x18\x01 \x03(\x0b\x32\x13.cln.ListhtlcsHtlcs\"\x89\x02\n\x0eListhtlcsHtlcs\x12\x18\n\x10short_channel_id\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\x04\x12\x0e\n\x06\x65xpiry\x18\x03 \x01(\r\x12 \n\x0b\x61mount_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12>\n\tdirection\x18\x05 \x01(\x0e\x32+.cln.ListhtlcsHtlcs.ListhtlcsHtlcsDirection\x12\x14\n\x0cpayment_hash\x18\x06 \x01(\x0c\x12\x1d\n\x05state\x18\x07 \x01(\x0e\x32\x0e.cln.HtlcState\"*\n\x17ListhtlcsHtlcsDirection\x12\x07\n\x03OUT\x10\x00\x12\x06\n\x02IN\x10\x01\"\xb2\x02\n\x17MultifundchannelRequest\x12\x37\n\x0c\x64\x65stinations\x18\x01 \x03(\x0b\x32!.cln.MultifundchannelDestinations\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(\x12H\x01\x88\x01\x01\x12\x1c\n\x05utxos\x18\x04 \x03(\x0b\x32\r.cln.Outpoint\x12\x18\n\x0bminchannels\x18\x05 \x01(\x12H\x02\x88\x01\x01\x12-\n\x12\x63ommitment_feerate\x18\x06 \x01(\x0b\x32\x0c.cln.FeerateH\x03\x88\x01\x01\x42\n\n\x08_feerateB\n\n\x08_minconfB\x0e\n\x0c_minchannelsB\x15\n\x13_commitment_feerate\"\x98\x01\n\x18MultifundchannelResponse\x12\n\n\x02tx\x18\x01 \x01(\x0c\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\x12\x35\n\x0b\x63hannel_ids\x18\x03 \x03(\x0b\x32 .cln.MultifundchannelChannel_ids\x12+\n\x06\x66\x61iled\x18\x04 \x03(\x0b\x32\x1b.cln.MultifundchannelFailed\"\xff\x02\n\x1cMultifundchannelDestinations\x12\n\n\x02id\x18\x01 \x01(\t\x12 \n\x06\x61mount\x18\x02 \x01(\x0b\x32\x10.cln.AmountOrAll\x12\x15\n\x08\x61nnounce\x18\x03 \x01(\x08H\x00\x88\x01\x01\x12#\n\tpush_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\x15\n\x08\x63lose_to\x18\x05 \x01(\tH\x02\x88\x01\x01\x12%\n\x0brequest_amt\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x1a\n\rcompact_lease\x18\x07 \x01(\tH\x04\x88\x01\x01\x12\x15\n\x08mindepth\x18\x08 \x01(\rH\x05\x88\x01\x01\x12!\n\x07reserve\x18\t \x01(\x0b\x32\x0b.cln.AmountH\x06\x88\x01\x01\x42\x0b\n\t_announceB\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\"\xcb\x01\n\x1bMultifundchannelChannel_ids\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x0e\n\x06outnum\x18\x02 \x01(\r\x12\x12\n\nchannel_id\x18\x03 \x01(\x0c\x12G\n\x0c\x63hannel_type\x18\x04 \x01(\x0b\x32,.cln.MultifundchannelChannel_idsChannel_typeH\x00\x88\x01\x01\x12\x15\n\x08\x63lose_to\x18\x05 \x01(\x0cH\x01\x88\x01\x01\x42\x0f\n\r_channel_typeB\x0b\n\t_close_to\"\\\n\'MultifundchannelChannel_idsChannel_type\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"\x93\x02\n\x16MultifundchannelFailed\x12\n\n\x02id\x18\x01 \x01(\x0c\x12H\n\x06method\x18\x02 \x01(\x0e\x32\x38.cln.MultifundchannelFailed.MultifundchannelFailedMethod\x12/\n\x05\x65rror\x18\x03 \x01(\x0b\x32 .cln.MultifundchannelFailedError\"r\n\x1cMultifundchannelFailedMethod\x12\x0b\n\x07\x43ONNECT\x10\x00\x12\x14\n\x10OPENCHANNEL_INIT\x10\x01\x12\x15\n\x11\x46UNDCHANNEL_START\x10\x02\x12\x18\n\x14\x46UNDCHANNEL_COMPLETE\x10\x03\"<\n\x1bMultifundchannelFailedError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x12\x12\x0f\n\x07message\x18\x02 \x01(\t\"\xa8\x01\n\x14MultiwithdrawRequest\x12 \n\x07outputs\x18\x01 \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\"1\n\x15MultiwithdrawResponse\x12\n\n\x02tx\x18\x01 \x01(\x0c\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\"\xa0\x04\n\x0cOfferRequest\x12\x0e\n\x06\x61mount\x18\x01 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06issuer\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05label\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x19\n\x0cquantity_max\x18\x05 \x01(\x04H\x03\x88\x01\x01\x12\x1c\n\x0f\x61\x62solute_expiry\x18\x06 \x01(\x04H\x04\x88\x01\x01\x12\x17\n\nrecurrence\x18\x07 \x01(\tH\x05\x88\x01\x01\x12\x1c\n\x0frecurrence_base\x18\x08 \x01(\tH\x06\x88\x01\x01\x12!\n\x14recurrence_paywindow\x18\t \x01(\tH\x07\x88\x01\x01\x12\x1d\n\x10recurrence_limit\x18\n \x01(\rH\x08\x88\x01\x01\x12\x17\n\nsingle_use\x18\x0b \x01(\x08H\t\x88\x01\x01\x12(\n\x1brecurrence_start_any_period\x18\x0c \x01(\x08H\n\x88\x01\x01\x42\x0e\n\x0c_descriptionB\t\n\x07_issuerB\x08\n\x06_labelB\x0f\n\r_quantity_maxB\x12\n\x10_absolute_expiryB\r\n\x0b_recurrenceB\x12\n\x10_recurrence_baseB\x17\n\x15_recurrence_paywindowB\x13\n\x11_recurrence_limitB\r\n\x0b_single_useB\x1e\n\x1c_recurrence_start_any_period\"\x92\x01\n\rOfferResponse\x12\x10\n\x08offer_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61\x63tive\x18\x02 \x01(\x08\x12\x12\n\nsingle_use\x18\x03 \x01(\x08\x12\x0e\n\x06\x62olt12\x18\x04 \x01(\t\x12\x0c\n\x04used\x18\x05 \x01(\x08\x12\x0f\n\x07\x63reated\x18\x06 \x01(\x08\x12\x12\n\x05label\x18\x07 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_label\".\n\x18Openchannel_abortRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\"Y\n\x19Openchannel_abortResponse\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x18\n\x10\x63hannel_canceled\x18\x02 \x01(\x08\x12\x0e\n\x06reason\x18\x03 \x01(\t\"\x9f\x01\n\x17Openchannel_bumpRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x13\n\x0binitialpsbt\x18\x02 \x01(\t\x12*\n\x0f\x66unding_feerate\x18\x03 \x01(\x0b\x32\x0c.cln.FeerateH\x00\x88\x01\x01\x12\x1b\n\x06\x61mount\x18\x04 \x01(\x0b\x32\x0b.cln.AmountB\x12\n\x10_funding_feerate\"\x86\x02\n\x18Openchannel_bumpResponse\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12<\n\x0c\x63hannel_type\x18\x02 \x01(\x0b\x32!.cln.Openchannel_bumpChannel_typeH\x00\x88\x01\x01\x12\x0c\n\x04psbt\x18\x03 \x01(\t\x12\x1b\n\x13\x63ommitments_secured\x18\x04 \x01(\x08\x12\x16\n\x0e\x66unding_serial\x18\x05 \x01(\x04\x12&\n\x19requires_confirmed_inputs\x18\x06 \x01(\x08H\x01\x88\x01\x01\x42\x0f\n\r_channel_typeB\x1c\n\x1a_requires_confirmed_inputs\"Q\n\x1cOpenchannel_bumpChannel_type\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"\xa0\x03\n\x17Openchannel_initRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x13\n\x0binitialpsbt\x18\x02 \x01(\t\x12-\n\x12\x63ommitment_feerate\x18\x03 \x01(\x0b\x32\x0c.cln.FeerateH\x00\x88\x01\x01\x12*\n\x0f\x66unding_feerate\x18\x04 \x01(\x0b\x32\x0c.cln.FeerateH\x01\x88\x01\x01\x12\x15\n\x08\x61nnounce\x18\x05 \x01(\x08H\x02\x88\x01\x01\x12\x15\n\x08\x63lose_to\x18\x06 \x01(\tH\x03\x88\x01\x01\x12%\n\x0brequest_amt\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12\x1a\n\rcompact_lease\x18\x08 \x01(\x0cH\x05\x88\x01\x01\x12\x14\n\x0c\x63hannel_type\x18\t \x03(\r\x12\x1b\n\x06\x61mount\x18\n \x01(\x0b\x32\x0b.cln.AmountB\x15\n\x13_commitment_feerateB\x12\n\x10_funding_feerateB\x0b\n\t_announceB\x0b\n\t_close_toB\x0e\n\x0c_request_amtB\x10\n\x0e_compact_lease\"\x86\x02\n\x18Openchannel_initResponse\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x0c\n\x04psbt\x18\x02 \x01(\t\x12<\n\x0c\x63hannel_type\x18\x03 \x01(\x0b\x32!.cln.Openchannel_initChannel_typeH\x00\x88\x01\x01\x12\x1b\n\x13\x63ommitments_secured\x18\x04 \x01(\x08\x12\x16\n\x0e\x66unding_serial\x18\x05 \x01(\x04\x12&\n\x19requires_confirmed_inputs\x18\x06 \x01(\x08H\x01\x88\x01\x01\x42\x0f\n\r_channel_typeB\x1c\n\x1a_requires_confirmed_inputs\"Q\n\x1cOpenchannel_initChannel_type\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"D\n\x19Openchannel_signedRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x13\n\x0bsigned_psbt\x18\x02 \x01(\t\"J\n\x1aOpenchannel_signedResponse\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\n\n\x02tx\x18\x02 \x01(\x0c\x12\x0c\n\x04txid\x18\x03 \x01(\x0c\"=\n\x19Openchannel_updateRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x0c\n\x04psbt\x18\x02 \x01(\t\"\xae\x02\n\x1aOpenchannel_updateResponse\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12>\n\x0c\x63hannel_type\x18\x02 \x01(\x0b\x32#.cln.Openchannel_updateChannel_typeH\x00\x88\x01\x01\x12\x0c\n\x04psbt\x18\x03 \x01(\t\x12\x1b\n\x13\x63ommitments_secured\x18\x04 \x01(\x08\x12\x16\n\x0e\x66unding_outnum\x18\x05 \x01(\r\x12\x15\n\x08\x63lose_to\x18\x06 \x01(\x0cH\x01\x88\x01\x01\x12&\n\x19requires_confirmed_inputs\x18\x07 \x01(\x08H\x02\x88\x01\x01\x42\x0f\n\r_channel_typeB\x0b\n\t_close_toB\x1c\n\x1a_requires_confirmed_inputs\"S\n\x1eOpenchannel_updateChannel_type\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"Y\n\x0bPingRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x10\n\x03len\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x16\n\tpongbytes\x18\x03 \x01(\rH\x01\x88\x01\x01\x42\x06\n\x04_lenB\x0c\n\n_pongbytes\"\x1e\n\x0cPingResponse\x12\x0e\n\x06totlen\x18\x01 \x01(\r\"\x91\x01\n\rPluginRequest\x12)\n\nsubcommand\x18\x01 \x01(\x0e\x32\x15.cln.PluginSubcommand\x12\x13\n\x06plugin\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tdirectory\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x0f\n\x07options\x18\x04 \x03(\tB\t\n\x07_pluginB\x0c\n\n_directory\"}\n\x0ePluginResponse\x12&\n\x07\x63ommand\x18\x01 \x01(\x0e\x32\x15.cln.PluginSubcommand\x12#\n\x07plugins\x18\x02 \x03(\x0b\x32\x12.cln.PluginPlugins\x12\x13\n\x06result\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\t\n\x07_result\">\n\rPluginPlugins\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06\x61\x63tive\x18\x02 \x01(\x08\x12\x0f\n\x07\x64ynamic\x18\x03 \x01(\x08\"<\n\x14RenepaystatusRequest\x12\x16\n\tinvstring\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_invstring\"G\n\x15RenepaystatusResponse\x12.\n\tpaystatus\x18\x01 \x03(\x0b\x32\x1b.cln.RenepaystatusPaystatus\"\xe2\x03\n\x16RenepaystatusPaystatus\x12\x0e\n\x06\x62olt11\x18\x01 \x01(\t\x12\x1d\n\x10payment_preimage\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\x0f\n\x07groupid\x18\x05 \x01(\r\x12\x12\n\x05parts\x18\x06 \x01(\rH\x01\x88\x01\x01\x12 \n\x0b\x61mount_msat\x18\x07 \x01(\x0b\x32\x0b.cln.Amount\x12*\n\x10\x61mount_sent_msat\x18\x08 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12H\n\x06status\x18\t \x01(\x0e\x32\x38.cln.RenepaystatusPaystatus.RenepaystatusPaystatusStatus\x12\x18\n\x0b\x64\x65stination\x18\n \x01(\x0cH\x03\x88\x01\x01\x12\r\n\x05notes\x18\x0b \x03(\t\"E\n\x1cRenepaystatusPaystatusStatus\x12\x0c\n\x08\x43OMPLETE\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\x42\x13\n\x11_payment_preimageB\x08\n\x06_partsB\x13\n\x11_amount_sent_msatB\x0e\n\x0c_destination\"\xda\x02\n\x0eRenepayRequest\x12\x11\n\tinvstring\x18\x01 \x01(\t\x12%\n\x0b\x61mount_msat\x18\x02 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12 \n\x06maxfee\x18\x03 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\x15\n\x08maxdelay\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x16\n\tretry_for\x18\x05 \x01(\rH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x06 \x01(\tH\x04\x88\x01\x01\x12\x12\n\x05label\x18\x07 \x01(\tH\x05\x88\x01\x01\x12\x1b\n\x0e\x64\x65v_use_shadow\x18\x08 \x01(\x08H\x06\x88\x01\x01\x12\x0f\n\x07\x65xclude\x18\t \x03(\tB\x0e\n\x0c_amount_msatB\t\n\x07_maxfeeB\x0b\n\t_maxdelayB\x0c\n\n_retry_forB\x0e\n\x0c_descriptionB\x08\n\x06_labelB\x11\n\x0f_dev_use_shadow\"\xc3\x02\n\x0fRenepayResponse\x12\x18\n\x10payment_preimage\x18\x01 \x01(\x0c\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\x0c\x12\x12\n\ncreated_at\x18\x03 \x01(\x01\x12\r\n\x05parts\x18\x04 \x01(\r\x12 \n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12%\n\x10\x61mount_sent_msat\x18\x06 \x01(\x0b\x32\x0b.cln.Amount\x12\x32\n\x06status\x18\x07 \x01(\x0e\x32\".cln.RenepayResponse.RenepayStatus\x12\x18\n\x0b\x64\x65stination\x18\x08 \x01(\x0cH\x00\x88\x01\x01\"6\n\rRenepayStatus\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_destination\"l\n\x14ReserveinputsRequest\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x16\n\texclusive\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12\x14\n\x07reserve\x18\x03 \x01(\rH\x01\x88\x01\x01\x42\x0c\n\n_exclusiveB\n\n\x08_reserve\"M\n\x15ReserveinputsResponse\x12\x34\n\x0creservations\x18\x01 \x03(\x0b\x32\x1e.cln.ReserveinputsReservations\"z\n\x19ReserveinputsReservations\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\"4\n\x14SendcustommsgRequest\x12\x0f\n\x07node_id\x18\x01 \x01(\x0c\x12\x0b\n\x03msg\x18\x02 \x01(\x0c\"\'\n\x15SendcustommsgResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\"\xb0\x01\n\x12SendinvoiceRequest\x12\x0e\n\x06invreq\x18\x01 \x01(\t\x12\r\n\x05label\x18\x02 \x01(\t\x12%\n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x14\n\x07timeout\x18\x04 \x01(\rH\x01\x88\x01\x01\x12\x15\n\x08quantity\x18\x05 \x01(\x04H\x02\x88\x01\x01\x42\x0e\n\x0c_amount_msatB\n\n\x08_timeoutB\x0b\n\t_quantity\"\xcf\x04\n\x13SendinvoiceResponse\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.SendinvoiceResponse.SendinvoiceStatus\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\x62olt12\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\rcreated_index\x18\x08 \x01(\x04H\x02\x88\x01\x01\x12\x1a\n\rupdated_index\x18\t \x01(\x04H\x03\x88\x01\x01\x12\x16\n\tpay_index\x18\n \x01(\x04H\x04\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\x0b \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x14\n\x07paid_at\x18\x0c \x01(\x04H\x06\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\r \x01(\x0cH\x07\x88\x01\x01\"6\n\x11SendinvoiceStatus\x12\n\n\x06UNPAID\x10\x00\x12\x08\n\x04PAID\x10\x01\x12\x0b\n\x07\x45XPIRED\x10\x02\x42\x0e\n\x0c_amount_msatB\t\n\x07_bolt12B\x10\n\x0e_created_indexB\x10\n\x0e_updated_indexB\x0c\n\n_pay_indexB\x17\n\x15_amount_received_msatB\n\n\x08_paid_atB\x13\n\x11_payment_preimage\"\xaa\x02\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\x12\x1c\n\x0fignorefeelimits\x18\x07 \x01(\x08H\x05\x88\x01\x01\x42\n\n\x08_feebaseB\t\n\x07_feeppmB\n\n\x08_htlcminB\n\n\x08_htlcmaxB\x0f\n\r_enforcedelayB\x12\n\x10_ignorefeelimits\"?\n\x12SetchannelResponse\x12)\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x17.cln.SetchannelChannels\"\xca\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\x12\x1e\n\x11ignore_fee_limits\x18\n \x01(\x08H\x03\x88\x01\x01\x42\x13\n\x11_short_channel_idB\x1a\n\x18_warning_htlcmin_too_lowB\x1b\n\x19_warning_htlcmax_too_highB\x14\n\x12_ignore_fee_limits\"<\n\x10SetconfigRequest\x12\x0e\n\x06\x63onfig\x18\x01 \x01(\t\x12\x10\n\x03val\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x06\n\x04_val\"9\n\x11SetconfigResponse\x12$\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x14.cln.SetconfigConfig\"\xa5\x02\n\x0fSetconfigConfig\x12\x0e\n\x06\x63onfig\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\x12\x13\n\x06plugin\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x0f\n\x07\x64ynamic\x18\x04 \x01(\x08\x12\x10\n\x03set\x18\x05 \x01(\x08H\x01\x88\x01\x01\x12\x16\n\tvalue_str\x18\x06 \x01(\tH\x02\x88\x01\x01\x12$\n\nvalue_msat\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x16\n\tvalue_int\x18\x08 \x01(\x12H\x04\x88\x01\x01\x12\x17\n\nvalue_bool\x18\t \x01(\x08H\x05\x88\x01\x01\x42\t\n\x07_pluginB\x06\n\x04_setB\x0c\n\n_value_strB\r\n\x0b_value_msatB\x0c\n\n_value_intB\r\n\x0b_value_bool\"6\n\x15SetpsbtversionRequest\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\r\"&\n\x16SetpsbtversionResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\"\'\n\x12SigninvoiceRequest\x12\x11\n\tinvstring\x18\x01 \x01(\t\"%\n\x13SigninvoiceResponse\x12\x0e\n\x06\x62olt11\x18\x01 \x01(\t\"%\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\"\xc9\x01\n\x12Splice_initRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x17\n\x0frelative_amount\x18\x02 \x01(\x12\x12\x18\n\x0binitialpsbt\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x1b\n\x0e\x66\x65\x65rate_per_kw\x18\x04 \x01(\rH\x01\x88\x01\x01\x12\x1a\n\rforce_feerate\x18\x05 \x01(\x08H\x02\x88\x01\x01\x42\x0e\n\x0c_initialpsbtB\x11\n\x0f_feerate_per_kwB\x10\n\x0e_force_feerate\"#\n\x13Splice_initResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\"`\n\x14Splice_signedRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x0c\n\x04psbt\x18\x02 \x01(\t\x12\x17\n\nsign_first\x18\x03 \x01(\x08H\x00\x88\x01\x01\x42\r\n\x0b_sign_first\"Q\n\x15Splice_signedResponse\x12\n\n\x02tx\x18\x01 \x01(\x0c\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\x12\x13\n\x06outnum\x18\x03 \x01(\rH\x00\x88\x01\x01\x42\t\n\x07_outnum\"8\n\x14Splice_updateRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x0c\n\x04psbt\x18\x02 \x01(\t\"B\n\x15Splice_updateResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x1b\n\x13\x63ommitments_secured\x18\x02 \x01(\x08\"H\n\x16UnreserveinputsRequest\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x14\n\x07reserve\x18\x02 \x01(\rH\x00\x88\x01\x01\x42\n\n\x08_reserve\"Q\n\x17UnreserveinputsResponse\x12\x36\n\x0creservations\x18\x01 \x03(\x0b\x32 .cln.UnreserveinputsReservations\"\x97\x01\n\x1bUnreserveinputsReservations\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\x1e\n\x11reserved_to_block\x18\x05 \x01(\rH\x00\x88\x01\x01\x42\x14\n\x12_reserved_to_block\"n\n\x14UpgradewalletRequest\x12\"\n\x07\x66\x65\x65rate\x18\x01 \x01(\x0b\x32\x0c.cln.FeerateH\x00\x88\x01\x01\x12\x17\n\nreservedok\x18\x02 \x01(\x08H\x01\x88\x01\x01\x42\n\n\x08_feerateB\r\n\x0b_reservedok\"\x95\x01\n\x15UpgradewalletResponse\x12\x1a\n\rupgraded_outs\x18\x01 \x01(\x04H\x00\x88\x01\x01\x12\x11\n\x04psbt\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0f\n\x02tx\x18\x03 \x01(\x0cH\x02\x88\x01\x01\x12\x11\n\x04txid\x18\x04 \x01(\x0cH\x03\x88\x01\x01\x42\x10\n\x0e_upgraded_outsB\x07\n\x05_psbtB\x05\n\x03_txB\x07\n\x05_txid\"O\n\x16WaitblockheightRequest\x12\x13\n\x0b\x62lockheight\x18\x01 \x01(\r\x12\x14\n\x07timeout\x18\x02 \x01(\rH\x00\x88\x01\x01\x42\n\n\x08_timeout\".\n\x17WaitblockheightResponse\x12\x13\n\x0b\x62lockheight\x18\x01 \x01(\r\"\xf9\x01\n\x0bWaitRequest\x12\x31\n\tsubsystem\x18\x01 \x01(\x0e\x32\x1e.cln.WaitRequest.WaitSubsystem\x12\x31\n\tindexname\x18\x02 \x01(\x0e\x32\x1e.cln.WaitRequest.WaitIndexname\x12\x11\n\tnextvalue\x18\x03 \x01(\x04\"9\n\rWaitSubsystem\x12\x0c\n\x08INVOICES\x10\x00\x12\x0c\n\x08\x46ORWARDS\x10\x01\x12\x0c\n\x08SENDPAYS\x10\x02\"6\n\rWaitIndexname\x12\x0b\n\x07\x43REATED\x10\x00\x12\x0b\n\x07UPDATED\x10\x01\x12\x0b\n\x07\x44\x45LETED\x10\x02\"\x97\x02\n\x0cWaitResponse\x12\x32\n\tsubsystem\x18\x01 \x01(\x0e\x32\x1f.cln.WaitResponse.WaitSubsystem\x12\x14\n\x07\x63reated\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x14\n\x07updated\x18\x03 \x01(\x04H\x01\x88\x01\x01\x12\x14\n\x07\x64\x65leted\x18\x04 \x01(\x04H\x02\x88\x01\x01\x12&\n\x07\x64\x65tails\x18\x05 \x01(\x0b\x32\x10.cln.WaitDetailsH\x03\x88\x01\x01\"9\n\rWaitSubsystem\x12\x0c\n\x08INVOICES\x10\x00\x12\x0c\n\x08\x46ORWARDS\x10\x01\x12\x0c\n\x08SENDPAYS\x10\x02\x42\n\n\x08_createdB\n\n\x08_updatedB\n\n\x08_deletedB\n\n\x08_details\"\xfc\x04\n\x0bWaitDetails\x12\x37\n\x06status\x18\x01 \x01(\x0e\x32\".cln.WaitDetails.WaitDetailsStatusH\x00\x88\x01\x01\x12\x12\n\x05label\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x13\n\x06partid\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12\x14\n\x07groupid\x18\x07 \x01(\x04H\x06\x88\x01\x01\x12\x19\n\x0cpayment_hash\x18\x08 \x01(\x0cH\x07\x88\x01\x01\x12\x17\n\nin_channel\x18\t \x01(\tH\x08\x88\x01\x01\x12\x17\n\nin_htlc_id\x18\n \x01(\x04H\t\x88\x01\x01\x12!\n\x07in_msat\x18\x0b \x01(\x0b\x32\x0b.cln.AmountH\n\x88\x01\x01\x12\x18\n\x0bout_channel\x18\x0c \x01(\tH\x0b\x88\x01\x01\"\x89\x01\n\x11WaitDetailsStatus\x12\n\n\x06UNPAID\x10\x00\x12\x08\n\x04PAID\x10\x01\x12\x0b\n\x07\x45XPIRED\x10\x02\x12\x0b\n\x07PENDING\x10\x03\x12\n\n\x06\x46\x41ILED\x10\x04\x12\x0c\n\x08\x43OMPLETE\x10\x05\x12\x0b\n\x07OFFERED\x10\x06\x12\x0b\n\x07SETTLED\x10\x07\x12\x10\n\x0cLOCAL_FAILED\x10\x08\x42\t\n\x07_statusB\x08\n\x06_labelB\x0e\n\x0c_descriptionB\t\n\x07_bolt11B\t\n\x07_bolt12B\t\n\x07_partidB\n\n\x08_groupidB\x0f\n\r_payment_hashB\r\n\x0b_in_channelB\r\n\x0b_in_htlc_idB\n\n\x08_in_msatB\x0e\n\x0c_out_channel\"4\n\x12ListconfigsRequest\x12\x13\n\x06\x63onfig\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\t\n\x07_config\"\xdf\x1b\n\x13ListconfigsResponse\x12-\n\x07\x63onfigs\x18\x01 \x01(\x0b\x32\x17.cln.ListconfigsConfigsH\x00\x88\x01\x01\x12(\n\x07plugins\x18\x03 \x03(\x0b\x32\x17.cln.ListconfigsPlugins\x12;\n\x11important_plugins\x18\x04 \x03(\x0b\x32 .cln.ListconfigsImportantplugins\x12\x11\n\x04\x63onf\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\rlightning_dir\x18\x06 \x01(\tH\x02\x88\x01\x01\x12\x14\n\x07network\x18\x07 \x01(\tH\x03\x88\x01\x01\x12\"\n\x15\x61llow_deprecated_apis\x18\x08 \x01(\x08H\x04\x88\x01\x01\x12\x15\n\x08rpc_file\x18\t \x01(\tH\x05\x88\x01\x01\x12\x16\n\x0e\x64isable_plugin\x18\n \x03(\t\x12\x1b\n\x0e\x62ookkeeper_dir\x18\x0b \x01(\tH\x06\x88\x01\x01\x12\x1a\n\rbookkeeper_db\x18\x0c \x01(\tH\x07\x88\x01\x01\x12\x1d\n\x10\x61lways_use_proxy\x18\r \x01(\x08H\x08\x88\x01\x01\x12\x13\n\x06\x64\x61\x65mon\x18\x0e \x01(\x08H\t\x88\x01\x01\x12\x13\n\x06wallet\x18\x0f \x01(\tH\n\x88\x01\x01\x12\x1b\n\x0elarge_channels\x18\x10 \x01(\x08H\x0b\x88\x01\x01\x12#\n\x16\x65xperimental_dual_fund\x18\x11 \x01(\x08H\x0c\x88\x01\x01\x12\"\n\x15\x65xperimental_splicing\x18\x12 \x01(\x08H\r\x88\x01\x01\x12(\n\x1b\x65xperimental_onion_messages\x18\x13 \x01(\x08H\x0e\x88\x01\x01\x12 \n\x13\x65xperimental_offers\x18\x14 \x01(\x08H\x0f\x88\x01\x01\x12\x30\n#experimental_shutdown_wrong_funding\x18\x15 \x01(\x08H\x10\x88\x01\x01\x12&\n\x19\x65xperimental_peer_storage\x18\x16 \x01(\x08H\x11\x88\x01\x01\x12!\n\x14\x65xperimental_quiesce\x18\x17 \x01(\x08H\x12\x88\x01\x01\x12*\n\x1d\x65xperimental_upgrade_protocol\x18\x18 \x01(\x08H\x13\x88\x01\x01\x12&\n\x19invoices_onchain_fallback\x18\x19 \x01(\x08H\x14\x88\x01\x01\x12\x1d\n\x10\x64\x61tabase_upgrade\x18\x1a \x01(\x08H\x15\x88\x01\x01\x12\x10\n\x03rgb\x18\x1b \x01(\x0cH\x16\x88\x01\x01\x12\x12\n\x05\x61lias\x18\x1c \x01(\tH\x17\x88\x01\x01\x12\x15\n\x08pid_file\x18\x1d \x01(\tH\x18\x88\x01\x01\x12\x1e\n\x11ignore_fee_limits\x18\x1e \x01(\x08H\x19\x88\x01\x01\x12\x1d\n\x10watchtime_blocks\x18\x1f \x01(\rH\x1a\x88\x01\x01\x12 \n\x13max_locktime_blocks\x18 \x01(\rH\x1b\x88\x01\x01\x12\x1d\n\x10\x66unding_confirms\x18! \x01(\rH\x1c\x88\x01\x01\x12\x17\n\ncltv_delta\x18\" \x01(\rH\x1d\x88\x01\x01\x12\x17\n\ncltv_final\x18# \x01(\rH\x1e\x88\x01\x01\x12\x18\n\x0b\x63ommit_time\x18$ \x01(\rH\x1f\x88\x01\x01\x12\x15\n\x08\x66\x65\x65_base\x18% \x01(\rH \x88\x01\x01\x12\x13\n\x06rescan\x18& \x01(\x12H!\x88\x01\x01\x12\x1c\n\x0f\x66\x65\x65_per_satoshi\x18\' \x01(\rH\"\x88\x01\x01\x12!\n\x14max_concurrent_htlcs\x18( \x01(\rH#\x88\x01\x01\x12+\n\x11htlc_minimum_msat\x18) \x01(\x0b\x32\x0b.cln.AmountH$\x88\x01\x01\x12+\n\x11htlc_maximum_msat\x18* \x01(\x0b\x32\x0b.cln.AmountH%\x88\x01\x01\x12\x35\n\x1bmax_dust_htlc_exposure_msat\x18+ \x01(\x0b\x32\x0b.cln.AmountH&\x88\x01\x01\x12\x1d\n\x10min_capacity_sat\x18, \x01(\x04H\'\x88\x01\x01\x12\x11\n\x04\x61\x64\x64r\x18- \x01(\tH(\x88\x01\x01\x12\x1a\n\rannounce_addr\x18. \x01(\tH)\x88\x01\x01\x12\x16\n\tbind_addr\x18/ \x01(\tH*\x88\x01\x01\x12\x14\n\x07offline\x18\x30 \x01(\x08H+\x88\x01\x01\x12\x17\n\nautolisten\x18\x31 \x01(\x08H,\x88\x01\x01\x12\x12\n\x05proxy\x18\x32 \x01(\tH-\x88\x01\x01\x12\x18\n\x0b\x64isable_dns\x18\x33 \x01(\x08H.\x88\x01\x01\x12%\n\x18\x61nnounce_addr_discovered\x18\x34 \x01(\tH/\x88\x01\x01\x12*\n\x1d\x61nnounce_addr_discovered_port\x18\x35 \x01(\x12H0\x88\x01\x01\x12\x1a\n\rencrypted_hsm\x18\x36 \x01(\x08H1\x88\x01\x01\x12\x1a\n\rrpc_file_mode\x18\x37 \x01(\tH2\x88\x01\x01\x12\x16\n\tlog_level\x18\x38 \x01(\tH3\x88\x01\x01\x12\x17\n\nlog_prefix\x18\x39 \x01(\tH4\x88\x01\x01\x12\x15\n\x08log_file\x18: \x01(\tH5\x88\x01\x01\x12\x1b\n\x0elog_timestamps\x18; \x01(\x08H6\x88\x01\x01\x12\x1b\n\x0e\x66orce_feerates\x18< \x01(\tH7\x88\x01\x01\x12\x16\n\tsubdaemon\x18= \x01(\tH8\x88\x01\x01\x12#\n\x16\x66\x65tchinvoice_noconnect\x18> \x01(\x08H9\x88\x01\x01\x12\"\n\x15\x61\x63\x63\x65pt_htlc_tlv_types\x18? \x01(\tH:\x88\x01\x01\x12!\n\x14tor_service_password\x18@ \x01(\tH;\x88\x01\x01\x12!\n\x14\x64\x65v_allowdustreserve\x18\x41 \x01(\x08H<\x88\x01\x01\x12\x1e\n\x11\x61nnounce_addr_dns\x18\x42 \x01(\x08H=\x88\x01\x01\x12%\n\x18require_confirmed_inputs\x18\x43 \x01(\x08H>\x88\x01\x01\x12\x16\n\tdeveloper\x18\x44 \x01(\x08H?\x88\x01\x01\x12\x17\n\ncommit_fee\x18\x45 \x01(\x04H@\x88\x01\x01\x12,\n\x12min_emergency_msat\x18\x46 \x01(\x0b\x32\x0b.cln.AmountHA\x88\x01\x01\x12\"\n\x15\x63ommit_feerate_offset\x18G \x01(\rHB\x88\x01\x01\x42\n\n\x08_configsB\x07\n\x05_confB\x10\n\x0e_lightning_dirB\n\n\x08_networkB\x18\n\x16_allow_deprecated_apisB\x0b\n\t_rpc_fileB\x11\n\x0f_bookkeeper_dirB\x10\n\x0e_bookkeeper_dbB\x13\n\x11_always_use_proxyB\t\n\x07_daemonB\t\n\x07_walletB\x11\n\x0f_large_channelsB\x19\n\x17_experimental_dual_fundB\x18\n\x16_experimental_splicingB\x1e\n\x1c_experimental_onion_messagesB\x16\n\x14_experimental_offersB&\n$_experimental_shutdown_wrong_fundingB\x1c\n\x1a_experimental_peer_storageB\x17\n\x15_experimental_quiesceB \n\x1e_experimental_upgrade_protocolB\x1c\n\x1a_invoices_onchain_fallbackB\x13\n\x11_database_upgradeB\x06\n\x04_rgbB\x08\n\x06_aliasB\x0b\n\t_pid_fileB\x14\n\x12_ignore_fee_limitsB\x13\n\x11_watchtime_blocksB\x16\n\x14_max_locktime_blocksB\x13\n\x11_funding_confirmsB\r\n\x0b_cltv_deltaB\r\n\x0b_cltv_finalB\x0e\n\x0c_commit_timeB\x0b\n\t_fee_baseB\t\n\x07_rescanB\x12\n\x10_fee_per_satoshiB\x17\n\x15_max_concurrent_htlcsB\x14\n\x12_htlc_minimum_msatB\x14\n\x12_htlc_maximum_msatB\x1e\n\x1c_max_dust_htlc_exposure_msatB\x13\n\x11_min_capacity_satB\x07\n\x05_addrB\x10\n\x0e_announce_addrB\x0c\n\n_bind_addrB\n\n\x08_offlineB\r\n\x0b_autolistenB\x08\n\x06_proxyB\x0e\n\x0c_disable_dnsB\x1b\n\x19_announce_addr_discoveredB \n\x1e_announce_addr_discovered_portB\x10\n\x0e_encrypted_hsmB\x10\n\x0e_rpc_file_modeB\x0c\n\n_log_levelB\r\n\x0b_log_prefixB\x0b\n\t_log_fileB\x11\n\x0f_log_timestampsB\x11\n\x0f_force_feeratesB\x0c\n\n_subdaemonB\x19\n\x17_fetchinvoice_noconnectB\x18\n\x16_accept_htlc_tlv_typesB\x17\n\x15_tor_service_passwordB\x17\n\x15_dev_allowdustreserveB\x14\n\x12_announce_addr_dnsB\x1b\n\x19_require_confirmed_inputsB\x0c\n\n_developerB\r\n\x0b_commit_feeB\x15\n\x13_min_emergency_msatB\x18\n\x16_commit_feerate_offset\"\xdf.\n\x12ListconfigsConfigs\x12.\n\x04\x63onf\x18\x01 \x01(\x0b\x32\x1b.cln.ListconfigsConfigsConfH\x00\x88\x01\x01\x12\x38\n\tdeveloper\x18\x02 \x01(\x0b\x32 .cln.ListconfigsConfigsDeveloperH\x01\x88\x01\x01\x12?\n\rclear_plugins\x18\x03 \x01(\x0b\x32#.cln.ListconfigsConfigsClearpluginsH\x02\x88\x01\x01\x12;\n\x0b\x64isable_mpp\x18\x04 \x01(\x0b\x32!.cln.ListconfigsConfigsDisablemppH\x03\x88\x01\x01\x12\x34\n\x07mainnet\x18\x05 \x01(\x0b\x32\x1e.cln.ListconfigsConfigsMainnetH\x04\x88\x01\x01\x12\x34\n\x07regtest\x18\x06 \x01(\x0b\x32\x1e.cln.ListconfigsConfigsRegtestH\x05\x88\x01\x01\x12\x32\n\x06signet\x18\x07 \x01(\x0b\x32\x1d.cln.ListconfigsConfigsSignetH\x06\x88\x01\x01\x12\x34\n\x07testnet\x18\x08 \x01(\x0b\x32\x1e.cln.ListconfigsConfigsTestnetH\x07\x88\x01\x01\x12\x45\n\x10important_plugin\x18\t \x01(\x0b\x32&.cln.ListconfigsConfigsImportantpluginH\x08\x88\x01\x01\x12\x32\n\x06plugin\x18\n \x01(\x0b\x32\x1d.cln.ListconfigsConfigsPluginH\t\x88\x01\x01\x12\x39\n\nplugin_dir\x18\x0b \x01(\x0b\x32 .cln.ListconfigsConfigsPlugindirH\n\x88\x01\x01\x12?\n\rlightning_dir\x18\x0c \x01(\x0b\x32#.cln.ListconfigsConfigsLightningdirH\x0b\x88\x01\x01\x12\x34\n\x07network\x18\r \x01(\x0b\x32\x1e.cln.ListconfigsConfigsNetworkH\x0c\x88\x01\x01\x12N\n\x15\x61llow_deprecated_apis\x18\x0e \x01(\x0b\x32*.cln.ListconfigsConfigsAllowdeprecatedapisH\r\x88\x01\x01\x12\x35\n\x08rpc_file\x18\x0f \x01(\x0b\x32\x1e.cln.ListconfigsConfigsRpcfileH\x0e\x88\x01\x01\x12\x41\n\x0e\x64isable_plugin\x18\x10 \x01(\x0b\x32$.cln.ListconfigsConfigsDisablepluginH\x0f\x88\x01\x01\x12\x44\n\x10\x61lways_use_proxy\x18\x11 \x01(\x0b\x32%.cln.ListconfigsConfigsAlwaysuseproxyH\x10\x88\x01\x01\x12\x32\n\x06\x64\x61\x65mon\x18\x12 \x01(\x0b\x32\x1d.cln.ListconfigsConfigsDaemonH\x11\x88\x01\x01\x12\x32\n\x06wallet\x18\x13 \x01(\x0b\x32\x1d.cln.ListconfigsConfigsWalletH\x12\x88\x01\x01\x12\x41\n\x0elarge_channels\x18\x14 \x01(\x0b\x32$.cln.ListconfigsConfigsLargechannelsH\x13\x88\x01\x01\x12P\n\x16\x65xperimental_dual_fund\x18\x15 \x01(\x0b\x32+.cln.ListconfigsConfigsExperimentaldualfundH\x14\x88\x01\x01\x12O\n\x15\x65xperimental_splicing\x18\x16 \x01(\x0b\x32+.cln.ListconfigsConfigsExperimentalsplicingH\x15\x88\x01\x01\x12Z\n\x1b\x65xperimental_onion_messages\x18\x17 \x01(\x0b\x32\x30.cln.ListconfigsConfigsExperimentalonionmessagesH\x16\x88\x01\x01\x12K\n\x13\x65xperimental_offers\x18\x18 \x01(\x0b\x32).cln.ListconfigsConfigsExperimentaloffersH\x17\x88\x01\x01\x12i\n#experimental_shutdown_wrong_funding\x18\x19 \x01(\x0b\x32\x37.cln.ListconfigsConfigsExperimentalshutdownwrongfundingH\x18\x88\x01\x01\x12V\n\x19\x65xperimental_peer_storage\x18\x1a \x01(\x0b\x32..cln.ListconfigsConfigsExperimentalpeerstorageH\x19\x88\x01\x01\x12M\n\x14\x65xperimental_anchors\x18\x1b \x01(\x0b\x32*.cln.ListconfigsConfigsExperimentalanchorsH\x1a\x88\x01\x01\x12\x45\n\x10\x64\x61tabase_upgrade\x18\x1c \x01(\x0b\x32&.cln.ListconfigsConfigsDatabaseupgradeH\x1b\x88\x01\x01\x12,\n\x03rgb\x18\x1d \x01(\x0b\x32\x1a.cln.ListconfigsConfigsRgbH\x1c\x88\x01\x01\x12\x30\n\x05\x61lias\x18\x1e \x01(\x0b\x32\x1c.cln.ListconfigsConfigsAliasH\x1d\x88\x01\x01\x12\x35\n\x08pid_file\x18\x1f \x01(\x0b\x32\x1e.cln.ListconfigsConfigsPidfileH\x1e\x88\x01\x01\x12\x46\n\x11ignore_fee_limits\x18 \x01(\x0b\x32&.cln.ListconfigsConfigsIgnorefeelimitsH\x1f\x88\x01\x01\x12\x45\n\x10watchtime_blocks\x18! \x01(\x0b\x32&.cln.ListconfigsConfigsWatchtimeblocksH \x88\x01\x01\x12J\n\x13max_locktime_blocks\x18\" \x01(\x0b\x32(.cln.ListconfigsConfigsMaxlocktimeblocksH!\x88\x01\x01\x12\x45\n\x10\x66unding_confirms\x18# \x01(\x0b\x32&.cln.ListconfigsConfigsFundingconfirmsH\"\x88\x01\x01\x12\x39\n\ncltv_delta\x18$ \x01(\x0b\x32 .cln.ListconfigsConfigsCltvdeltaH#\x88\x01\x01\x12\x39\n\ncltv_final\x18% \x01(\x0b\x32 .cln.ListconfigsConfigsCltvfinalH$\x88\x01\x01\x12;\n\x0b\x63ommit_time\x18& \x01(\x0b\x32!.cln.ListconfigsConfigsCommittimeH%\x88\x01\x01\x12\x35\n\x08\x66\x65\x65_base\x18\' \x01(\x0b\x32\x1e.cln.ListconfigsConfigsFeebaseH&\x88\x01\x01\x12\x32\n\x06rescan\x18( \x01(\x0b\x32\x1d.cln.ListconfigsConfigsRescanH\'\x88\x01\x01\x12\x42\n\x0f\x66\x65\x65_per_satoshi\x18) \x01(\x0b\x32$.cln.ListconfigsConfigsFeepersatoshiH(\x88\x01\x01\x12L\n\x14max_concurrent_htlcs\x18* \x01(\x0b\x32).cln.ListconfigsConfigsMaxconcurrenthtlcsH)\x88\x01\x01\x12\x46\n\x11htlc_minimum_msat\x18+ \x01(\x0b\x32&.cln.ListconfigsConfigsHtlcminimummsatH*\x88\x01\x01\x12\x46\n\x11htlc_maximum_msat\x18, \x01(\x0b\x32&.cln.ListconfigsConfigsHtlcmaximummsatH+\x88\x01\x01\x12X\n\x1bmax_dust_htlc_exposure_msat\x18- \x01(\x0b\x32..cln.ListconfigsConfigsMaxdusthtlcexposuremsatH,\x88\x01\x01\x12\x44\n\x10min_capacity_sat\x18. \x01(\x0b\x32%.cln.ListconfigsConfigsMincapacitysatH-\x88\x01\x01\x12.\n\x04\x61\x64\x64r\x18/ \x01(\x0b\x32\x1b.cln.ListconfigsConfigsAddrH.\x88\x01\x01\x12?\n\rannounce_addr\x18\x30 \x01(\x0b\x32#.cln.ListconfigsConfigsAnnounceaddrH/\x88\x01\x01\x12\x37\n\tbind_addr\x18\x31 \x01(\x0b\x32\x1f.cln.ListconfigsConfigsBindaddrH0\x88\x01\x01\x12\x34\n\x07offline\x18\x32 \x01(\x0b\x32\x1e.cln.ListconfigsConfigsOfflineH1\x88\x01\x01\x12:\n\nautolisten\x18\x33 \x01(\x0b\x32!.cln.ListconfigsConfigsAutolistenH2\x88\x01\x01\x12\x30\n\x05proxy\x18\x34 \x01(\x0b\x32\x1c.cln.ListconfigsConfigsProxyH3\x88\x01\x01\x12;\n\x0b\x64isable_dns\x18\x35 \x01(\x0b\x32!.cln.ListconfigsConfigsDisablednsH4\x88\x01\x01\x12T\n\x18\x61nnounce_addr_discovered\x18\x36 \x01(\x0b\x32-.cln.ListconfigsConfigsAnnounceaddrdiscoveredH5\x88\x01\x01\x12]\n\x1d\x61nnounce_addr_discovered_port\x18\x37 \x01(\x0b\x32\x31.cln.ListconfigsConfigsAnnounceaddrdiscoveredportH6\x88\x01\x01\x12?\n\rencrypted_hsm\x18\x38 \x01(\x0b\x32#.cln.ListconfigsConfigsEncryptedhsmH7\x88\x01\x01\x12>\n\rrpc_file_mode\x18\x39 \x01(\x0b\x32\".cln.ListconfigsConfigsRpcfilemodeH8\x88\x01\x01\x12\x37\n\tlog_level\x18: \x01(\x0b\x32\x1f.cln.ListconfigsConfigsLoglevelH9\x88\x01\x01\x12\x39\n\nlog_prefix\x18; \x01(\x0b\x32 .cln.ListconfigsConfigsLogprefixH:\x88\x01\x01\x12\x35\n\x08log_file\x18< \x01(\x0b\x32\x1e.cln.ListconfigsConfigsLogfileH;\x88\x01\x01\x12\x41\n\x0elog_timestamps\x18= \x01(\x0b\x32$.cln.ListconfigsConfigsLogtimestampsH<\x88\x01\x01\x12\x41\n\x0e\x66orce_feerates\x18> \x01(\x0b\x32$.cln.ListconfigsConfigsForcefeeratesH=\x88\x01\x01\x12\x38\n\tsubdaemon\x18? \x01(\x0b\x32 .cln.ListconfigsConfigsSubdaemonH>\x88\x01\x01\x12Q\n\x16\x66\x65tchinvoice_noconnect\x18@ \x01(\x0b\x32,.cln.ListconfigsConfigsFetchinvoicenoconnectH?\x88\x01\x01\x12M\n\x15\x61\x63\x63\x65pt_htlc_tlv_types\x18\x41 \x01(\x0b\x32).cln.ListconfigsConfigsAccepthtlctlvtypesH@\x88\x01\x01\x12L\n\x14tor_service_password\x18\x42 \x01(\x0b\x32).cln.ListconfigsConfigsTorservicepasswordHA\x88\x01\x01\x12\x46\n\x11\x61nnounce_addr_dns\x18\x43 \x01(\x0b\x32&.cln.ListconfigsConfigsAnnounceaddrdnsHB\x88\x01\x01\x12T\n\x18require_confirmed_inputs\x18\x44 \x01(\x0b\x32-.cln.ListconfigsConfigsRequireconfirmedinputsHC\x88\x01\x01\x12\x39\n\ncommit_fee\x18\x45 \x01(\x0b\x32 .cln.ListconfigsConfigsCommitfeeHD\x88\x01\x01\x12N\n\x15\x63ommit_feerate_offset\x18\x46 \x01(\x0b\x32*.cln.ListconfigsConfigsCommitfeerateoffsetHE\x88\x01\x01\x42\x07\n\x05_confB\x0c\n\n_developerB\x10\n\x0e_clear_pluginsB\x0e\n\x0c_disable_mppB\n\n\x08_mainnetB\n\n\x08_regtestB\t\n\x07_signetB\n\n\x08_testnetB\x13\n\x11_important_pluginB\t\n\x07_pluginB\r\n\x0b_plugin_dirB\x10\n\x0e_lightning_dirB\n\n\x08_networkB\x18\n\x16_allow_deprecated_apisB\x0b\n\t_rpc_fileB\x11\n\x0f_disable_pluginB\x13\n\x11_always_use_proxyB\t\n\x07_daemonB\t\n\x07_walletB\x11\n\x0f_large_channelsB\x19\n\x17_experimental_dual_fundB\x18\n\x16_experimental_splicingB\x1e\n\x1c_experimental_onion_messagesB\x16\n\x14_experimental_offersB&\n$_experimental_shutdown_wrong_fundingB\x1c\n\x1a_experimental_peer_storageB\x17\n\x15_experimental_anchorsB\x13\n\x11_database_upgradeB\x06\n\x04_rgbB\x08\n\x06_aliasB\x0b\n\t_pid_fileB\x14\n\x12_ignore_fee_limitsB\x13\n\x11_watchtime_blocksB\x16\n\x14_max_locktime_blocksB\x13\n\x11_funding_confirmsB\r\n\x0b_cltv_deltaB\r\n\x0b_cltv_finalB\x0e\n\x0c_commit_timeB\x0b\n\t_fee_baseB\t\n\x07_rescanB\x12\n\x10_fee_per_satoshiB\x17\n\x15_max_concurrent_htlcsB\x14\n\x12_htlc_minimum_msatB\x14\n\x12_htlc_maximum_msatB\x1e\n\x1c_max_dust_htlc_exposure_msatB\x13\n\x11_min_capacity_satB\x07\n\x05_addrB\x10\n\x0e_announce_addrB\x0c\n\n_bind_addrB\n\n\x08_offlineB\r\n\x0b_autolistenB\x08\n\x06_proxyB\x0e\n\x0c_disable_dnsB\x1b\n\x19_announce_addr_discoveredB \n\x1e_announce_addr_discovered_portB\x10\n\x0e_encrypted_hsmB\x10\n\x0e_rpc_file_modeB\x0c\n\n_log_levelB\r\n\x0b_log_prefixB\x0b\n\t_log_fileB\x11\n\x0f_log_timestampsB\x11\n\x0f_force_feeratesB\x0c\n\n_subdaemonB\x19\n\x17_fetchinvoice_noconnectB\x18\n\x16_accept_htlc_tlv_typesB\x17\n\x15_tor_service_passwordB\x14\n\x12_announce_addr_dnsB\x1b\n\x19_require_confirmed_inputsB\r\n\x0b_commit_feeB\x18\n\x16_commit_feerate_offset\"\xa2\x01\n\x16ListconfigsConfigsConf\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12H\n\x06source\x18\x02 \x01(\x0e\x32\x38.cln.ListconfigsConfigsConf.ListconfigsConfigsConfSource\"+\n\x1cListconfigsConfigsConfSource\x12\x0b\n\x07\x43MDLINE\x10\x00\":\n\x1bListconfigsConfigsDeveloper\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"=\n\x1eListconfigsConfigsClearplugins\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"[\n\x1cListconfigsConfigsDisablempp\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\x12\x13\n\x06plugin\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\t\n\x07_plugin\"8\n\x19ListconfigsConfigsMainnet\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"8\n\x19ListconfigsConfigsRegtest\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"7\n\x18ListconfigsConfigsSignet\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"8\n\x19ListconfigsConfigsTestnet\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"H\n!ListconfigsConfigsImportantplugin\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"?\n\x18ListconfigsConfigsPlugin\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"B\n\x1bListconfigsConfigsPlugindir\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"C\n\x1eListconfigsConfigsLightningdir\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\">\n\x19ListconfigsConfigsNetwork\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"K\n%ListconfigsConfigsAllowdeprecatedapis\x12\x12\n\nvalue_bool\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\">\n\x19ListconfigsConfigsRpcfile\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"F\n\x1fListconfigsConfigsDisableplugin\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"F\n ListconfigsConfigsAlwaysuseproxy\x12\x12\n\nvalue_bool\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"7\n\x18ListconfigsConfigsDaemon\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"=\n\x18ListconfigsConfigsWallet\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\">\n\x1fListconfigsConfigsLargechannels\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"E\n&ListconfigsConfigsExperimentaldualfund\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"E\n&ListconfigsConfigsExperimentalsplicing\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"J\n+ListconfigsConfigsExperimentalonionmessages\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"C\n$ListconfigsConfigsExperimentaloffers\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"Q\n2ListconfigsConfigsExperimentalshutdownwrongfunding\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"H\n)ListconfigsConfigsExperimentalpeerstorage\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"D\n%ListconfigsConfigsExperimentalanchors\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"G\n!ListconfigsConfigsDatabaseupgrade\x12\x12\n\nvalue_bool\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\":\n\x15ListconfigsConfigsRgb\x12\x11\n\tvalue_str\x18\x01 \x01(\x0c\x12\x0e\n\x06source\x18\x02 \x01(\t\"<\n\x17ListconfigsConfigsAlias\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\">\n\x19ListconfigsConfigsPidfile\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"G\n!ListconfigsConfigsIgnorefeelimits\x12\x12\n\nvalue_bool\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"F\n!ListconfigsConfigsWatchtimeblocks\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"H\n#ListconfigsConfigsMaxlocktimeblocks\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"F\n!ListconfigsConfigsFundingconfirms\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"@\n\x1bListconfigsConfigsCltvdelta\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"@\n\x1bListconfigsConfigsCltvfinal\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"A\n\x1cListconfigsConfigsCommittime\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\">\n\x19ListconfigsConfigsFeebase\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"=\n\x18ListconfigsConfigsRescan\x12\x11\n\tvalue_int\x18\x01 \x01(\x12\x12\x0e\n\x06source\x18\x02 \x01(\t\"D\n\x1fListconfigsConfigsFeepersatoshi\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"I\n$ListconfigsConfigsMaxconcurrenthtlcs\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"T\n!ListconfigsConfigsHtlcminimummsat\x12\x1f\n\nvalue_msat\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12\x0e\n\x06source\x18\x02 \x01(\t\"T\n!ListconfigsConfigsHtlcmaximummsat\x12\x1f\n\nvalue_msat\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12\x0e\n\x06source\x18\x02 \x01(\t\"\\\n)ListconfigsConfigsMaxdusthtlcexposuremsat\x12\x1f\n\nvalue_msat\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12\x0e\n\x06source\x18\x02 \x01(\t\"g\n ListconfigsConfigsMincapacitysat\x12\x11\n\tvalue_int\x18\x01 \x01(\x04\x12\x0e\n\x06source\x18\x02 \x01(\t\x12\x14\n\x07\x64ynamic\x18\x03 \x01(\x08H\x00\x88\x01\x01\x42\n\n\x08_dynamic\"=\n\x16ListconfigsConfigsAddr\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"E\n\x1eListconfigsConfigsAnnounceaddr\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"A\n\x1aListconfigsConfigsBindaddr\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"8\n\x19ListconfigsConfigsOffline\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"B\n\x1cListconfigsConfigsAutolisten\x12\x12\n\nvalue_bool\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"<\n\x17ListconfigsConfigsProxy\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\";\n\x1cListconfigsConfigsDisabledns\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"\x82\x02\n(ListconfigsConfigsAnnounceaddrdiscovered\x12r\n\tvalue_str\x18\x01 \x01(\x0e\x32_.cln.ListconfigsConfigsAnnounceaddrdiscovered.ListconfigsConfigsAnnounceaddrdiscoveredValue_str\x12\x0e\n\x06source\x18\x02 \x01(\t\"R\n1ListconfigsConfigsAnnounceaddrdiscoveredValue_str\x12\x08\n\x04TRUE\x10\x00\x12\t\n\x05\x46\x41LSE\x10\x01\x12\x08\n\x04\x41UTO\x10\x02\"Q\n,ListconfigsConfigsAnnounceaddrdiscoveredport\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"=\n\x1eListconfigsConfigsEncryptedhsm\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"B\n\x1dListconfigsConfigsRpcfilemode\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"?\n\x1aListconfigsConfigsLoglevel\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"@\n\x1bListconfigsConfigsLogprefix\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"@\n\x19ListconfigsConfigsLogfile\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"E\n\x1fListconfigsConfigsLogtimestamps\x12\x12\n\nvalue_bool\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"D\n\x1fListconfigsConfigsForcefeerates\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"B\n\x1bListconfigsConfigsSubdaemon\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"f\n\'ListconfigsConfigsFetchinvoicenoconnect\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\x12\x13\n\x06plugin\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\t\n\x07_plugin\"I\n$ListconfigsConfigsAccepthtlctlvtypes\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"I\n$ListconfigsConfigsTorservicepassword\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"G\n!ListconfigsConfigsAnnounceaddrdns\x12\x12\n\nvalue_bool\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"N\n(ListconfigsConfigsRequireconfirmedinputs\x12\x12\n\nvalue_bool\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"@\n\x1bListconfigsConfigsCommitfee\x12\x11\n\tvalue_int\x18\x01 \x01(\x04\x12\x0e\n\x06source\x18\x02 \x01(\t\"J\n%ListconfigsConfigsCommitfeerateoffset\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"r\n\x12ListconfigsPlugins\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x34\n\x07options\x18\x03 \x01(\x0b\x32\x1e.cln.ListconfigsPluginsOptionsH\x00\x88\x01\x01\x42\n\n\x08_options\"\x1b\n\x19ListconfigsPluginsOptions\"\x84\x01\n\x1bListconfigsImportantplugins\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12=\n\x07options\x18\x03 \x01(\x0b\x32\'.cln.ListconfigsImportantpluginsOptionsH\x00\x88\x01\x01\x42\n\n\x08_options\"$\n\"ListconfigsImportantpluginsOptions\"\r\n\x0bStopRequest\"q\n\x0cStopResponse\x12\x31\n\x06result\x18\x01 \x01(\x0e\x32\x1c.cln.StopResponse.StopResultH\x00\x88\x01\x01\"#\n\nStopResult\x12\x15\n\x11SHUTDOWN_COMPLETE\x10\x00\x42\t\n\x07_result\"/\n\x0bHelpRequest\x12\x14\n\x07\x63ommand\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\n\n\x08_command\"\x95\x01\n\x0cHelpResponse\x12\x1b\n\x04help\x18\x01 \x03(\x0b\x32\r.cln.HelpHelp\x12:\n\x0b\x66ormat_hint\x18\x02 \x01(\x0e\x32 .cln.HelpResponse.HelpFormathintH\x00\x88\x01\x01\"\x1c\n\x0eHelpFormathint\x12\n\n\x06SIMPLE\x10\x00\x42\x0e\n\x0c_format_hint\"\x1b\n\x08HelpHelp\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\t\"g\n\x18PreapprovekeysendRequest\x12\x13\n\x0b\x64\x65stination\x18\x01 \x01(\x0c\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\x0c\x12 \n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\"\x1b\n\x19PreapprovekeysendResponse\"*\n\x18PreapproveinvoiceRequest\x12\x0e\n\x06\x62olt11\x18\x01 \x01(\t\"\x1b\n\x19PreapproveinvoiceResponse\"\x15\n\x13StaticbackupRequest\"#\n\x14StaticbackupResponse\x12\x0b\n\x03scb\x18\x01 \x03(\x0c\"d\n\x16\x42kprchannelsapyRequest\x12\x17\n\nstart_time\x18\x01 \x01(\x04H\x00\x88\x01\x01\x12\x15\n\x08\x65nd_time\x18\x02 \x01(\x04H\x01\x88\x01\x01\x42\r\n\x0b_start_timeB\x0b\n\t_end_time\"Q\n\x17\x42kprchannelsapyResponse\x12\x36\n\x0c\x63hannels_apy\x18\x01 \x03(\x0b\x32 .cln.BkprchannelsapyChannels_apy\"\xfa\x06\n\x1b\x42kprchannelsapyChannels_apy\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12$\n\x0frouted_out_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12#\n\x0erouted_in_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12(\n\x13lease_fee_paid_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12*\n\x15lease_fee_earned_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12$\n\x0fpushed_out_msat\x18\x06 \x01(\x0b\x32\x0b.cln.Amount\x12#\n\x0epushed_in_msat\x18\x07 \x01(\x0b\x32\x0b.cln.Amount\x12+\n\x16our_start_balance_msat\x18\x08 \x01(\x0b\x32\x0b.cln.Amount\x12/\n\x1a\x63hannel_start_balance_msat\x18\t \x01(\x0b\x32\x0b.cln.Amount\x12\"\n\rfees_out_msat\x18\n \x01(\x0b\x32\x0b.cln.Amount\x12&\n\x0c\x66\x65\x65s_in_msat\x18\x0b \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x17\n\x0futilization_out\x18\x0c \x01(\t\x12$\n\x17utilization_out_initial\x18\r \x01(\tH\x01\x88\x01\x01\x12\x16\n\x0eutilization_in\x18\x0e \x01(\t\x12#\n\x16utilization_in_initial\x18\x0f \x01(\tH\x02\x88\x01\x01\x12\x0f\n\x07\x61py_out\x18\x10 \x01(\t\x12\x1c\n\x0f\x61py_out_initial\x18\x11 \x01(\tH\x03\x88\x01\x01\x12\x0e\n\x06\x61py_in\x18\x12 \x01(\t\x12\x1b\n\x0e\x61py_in_initial\x18\x13 \x01(\tH\x04\x88\x01\x01\x12\x11\n\tapy_total\x18\x14 \x01(\t\x12\x1e\n\x11\x61py_total_initial\x18\x15 \x01(\tH\x05\x88\x01\x01\x12\x16\n\tapy_lease\x18\x16 \x01(\tH\x06\x88\x01\x01\x42\x0f\n\r_fees_in_msatB\x1a\n\x18_utilization_out_initialB\x19\n\x17_utilization_in_initialB\x12\n\x10_apy_out_initialB\x11\n\x0f_apy_in_initialB\x14\n\x12_apy_total_initialB\x0c\n\n_apy_lease\"\xd2\x01\n\x18\x42kprdumpincomecsvRequest\x12\x12\n\ncsv_format\x18\x01 \x01(\t\x12\x15\n\x08\x63sv_file\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x10\x63onsolidate_fees\x18\x03 \x01(\x08H\x01\x88\x01\x01\x12\x17\n\nstart_time\x18\x04 \x01(\x04H\x02\x88\x01\x01\x12\x15\n\x08\x65nd_time\x18\x05 \x01(\x04H\x03\x88\x01\x01\x42\x0b\n\t_csv_fileB\x13\n\x11_consolidate_feesB\r\n\x0b_start_timeB\x0b\n\t_end_time\"\xd6\x01\n\x19\x42kprdumpincomecsvResponse\x12\x10\n\x08\x63sv_file\x18\x01 \x01(\t\x12N\n\ncsv_format\x18\x02 \x01(\x0e\x32:.cln.BkprdumpincomecsvResponse.BkprdumpincomecsvCsv_format\"W\n\x1b\x42kprdumpincomecsvCsv_format\x12\x0f\n\x0b\x43OINTRACKER\x10\x00\x12\n\n\x06KOINLY\x10\x01\x12\x0b\n\x07HARMONY\x10\x02\x12\x0e\n\nQUICKBOOKS\x10\x03\"%\n\x12\x42kprinspectRequest\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\"7\n\x13\x42kprinspectResponse\x12 \n\x03txs\x18\x01 \x03(\x0b\x32\x13.cln.BkprinspectTxs\"\x9a\x01\n\x0e\x42kprinspectTxs\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x18\n\x0b\x62lockheight\x18\x02 \x01(\rH\x00\x88\x01\x01\x12#\n\x0e\x66\x65\x65s_paid_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12+\n\x07outputs\x18\x04 \x03(\x0b\x32\x1a.cln.BkprinspectTxsOutputsB\x0e\n\x0c_blockheight\"\xbc\x03\n\x15\x42kprinspectTxsOutputs\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12\x0e\n\x06outnum\x18\x02 \x01(\r\x12&\n\x11output_value_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12\x10\n\x08\x63urrency\x18\x04 \x01(\t\x12%\n\x0b\x63redit_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12$\n\ndebit_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12 \n\x13originating_account\x18\x07 \x01(\tH\x02\x88\x01\x01\x12\x17\n\noutput_tag\x18\x08 \x01(\tH\x03\x88\x01\x01\x12\x16\n\tspend_tag\x18\t \x01(\tH\x04\x88\x01\x01\x12\x1a\n\rspending_txid\x18\n \x01(\x0cH\x05\x88\x01\x01\x12\x17\n\npayment_id\x18\x0b \x01(\x0cH\x06\x88\x01\x01\x42\x0e\n\x0c_credit_msatB\r\n\x0b_debit_msatB\x16\n\x14_originating_accountB\r\n\x0b_output_tagB\x0c\n\n_spend_tagB\x10\n\x0e_spending_txidB\r\n\x0b_payment_id\"h\n\x1c\x42kprlistaccounteventsRequest\x12\x14\n\x07\x61\x63\x63ount\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x17\n\npayment_id\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\n\n\x08_accountB\r\n\x0b_payment_id\"Q\n\x1d\x42kprlistaccounteventsResponse\x12\x30\n\x06\x65vents\x18\x01 \x03(\x0b\x32 .cln.BkprlistaccounteventsEvents\"\xa1\x05\n\x1b\x42kprlistaccounteventsEvents\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12S\n\titem_type\x18\x02 \x01(\x0e\x32@.cln.BkprlistaccounteventsEvents.BkprlistaccounteventsEventsType\x12\x0b\n\x03tag\x18\x03 \x01(\t\x12 \n\x0b\x63redit_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12\x1f\n\ndebit_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12\x10\n\x08\x63urrency\x18\x06 \x01(\t\x12\x11\n\ttimestamp\x18\x07 \x01(\r\x12\x15\n\x08outpoint\x18\x08 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x62lockheight\x18\t \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06origin\x18\n \x01(\tH\x02\x88\x01\x01\x12\x17\n\npayment_id\x18\x0b \x01(\x0cH\x03\x88\x01\x01\x12\x11\n\x04txid\x18\x0c \x01(\x0cH\x04\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\r \x01(\tH\x05\x88\x01\x01\x12#\n\tfees_msat\x18\x0e \x01(\x0b\x32\x0b.cln.AmountH\x06\x88\x01\x01\x12\x19\n\x0cis_rebalance\x18\x0f \x01(\x08H\x07\x88\x01\x01\x12\x14\n\x07part_id\x18\x10 \x01(\rH\x08\x88\x01\x01\"J\n\x1f\x42kprlistaccounteventsEventsType\x12\x0f\n\x0bONCHAIN_FEE\x10\x00\x12\t\n\x05\x43HAIN\x10\x01\x12\x0b\n\x07\x43HANNEL\x10\x02\x42\x0b\n\t_outpointB\x0e\n\x0c_blockheightB\t\n\x07_originB\r\n\x0b_payment_idB\x07\n\x05_txidB\x0e\n\x0c_descriptionB\x0c\n\n_fees_msatB\x0f\n\r_is_rebalanceB\n\n\x08_part_id\"\x19\n\x17\x42kprlistbalancesRequest\"K\n\x18\x42kprlistbalancesResponse\x12/\n\x08\x61\x63\x63ounts\x18\x01 \x03(\x0b\x32\x1d.cln.BkprlistbalancesAccounts\"\xc6\x02\n\x18\x42kprlistbalancesAccounts\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12\x37\n\x08\x62\x61lances\x18\x02 \x03(\x0b\x32%.cln.BkprlistbalancesAccountsBalances\x12\x14\n\x07peer_id\x18\x03 \x01(\x0cH\x00\x88\x01\x01\x12\x16\n\twe_opened\x18\x04 \x01(\x08H\x01\x88\x01\x01\x12\x1b\n\x0e\x61\x63\x63ount_closed\x18\x05 \x01(\x08H\x02\x88\x01\x01\x12\x1d\n\x10\x61\x63\x63ount_resolved\x18\x06 \x01(\x08H\x03\x88\x01\x01\x12\x1e\n\x11resolved_at_block\x18\x07 \x01(\rH\x04\x88\x01\x01\x42\n\n\x08_peer_idB\x0c\n\n_we_openedB\x11\n\x0f_account_closedB\x13\n\x11_account_resolvedB\x14\n\x12_resolved_at_block\"X\n BkprlistbalancesAccountsBalances\x12!\n\x0c\x62\x61lance_msat\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12\x11\n\tcoin_type\x18\x02 \x01(\t\"\x97\x01\n\x15\x42kprlistincomeRequest\x12\x1d\n\x10\x63onsolidate_fees\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x17\n\nstart_time\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x15\n\x08\x65nd_time\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x13\n\x11_consolidate_feesB\r\n\x0b_start_timeB\x0b\n\t_end_time\"Q\n\x16\x42kprlistincomeResponse\x12\x37\n\rincome_events\x18\x01 \x03(\x0b\x32 .cln.BkprlistincomeIncome_events\"\xb5\x02\n\x1b\x42kprlistincomeIncome_events\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12\x0b\n\x03tag\x18\x02 \x01(\t\x12 \n\x0b\x63redit_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12\x1f\n\ndebit_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12\x10\n\x08\x63urrency\x18\x05 \x01(\t\x12\x11\n\ttimestamp\x18\x06 \x01(\r\x12\x18\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08outpoint\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x11\n\x04txid\x18\t \x01(\x0cH\x02\x88\x01\x01\x12\x17\n\npayment_id\x18\n \x01(\x0cH\x03\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0b\n\t_outpointB\x07\n\x05_txidB\r\n\x0b_payment_id\"N\n\x14\x42lacklistruneRequest\x12\x12\n\x05start\x18\x01 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03\x65nd\x18\x02 \x01(\x04H\x01\x88\x01\x01\x42\x08\n\x06_startB\x06\n\x04_end\"G\n\x15\x42lacklistruneResponse\x12.\n\tblacklist\x18\x01 \x03(\x0b\x32\x1b.cln.BlacklistruneBlacklist\"4\n\x16\x42lacklistruneBlacklist\x12\r\n\x05start\x18\x01 \x01(\x04\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x04\"p\n\x10\x43heckruneRequest\x12\x0c\n\x04rune\x18\x01 \x01(\t\x12\x13\n\x06nodeid\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06method\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06params\x18\x04 \x03(\tB\t\n\x07_nodeidB\t\n\x07_method\"\"\n\x11\x43heckruneResponse\x12\r\n\x05valid\x18\x01 \x01(\x08\"E\n\x11\x43reateruneRequest\x12\x11\n\x04rune\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x0crestrictions\x18\x02 \x03(\tB\x07\n\x05_rune\"{\n\x12\x43reateruneResponse\x12\x0c\n\x04rune\x18\x01 \x01(\t\x12\x11\n\tunique_id\x18\x02 \x01(\t\x12&\n\x19warning_unrestricted_rune\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x1c\n\x1a_warning_unrestricted_rune\".\n\x10ShowrunesRequest\x12\x11\n\x04rune\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x07\n\x05_rune\"7\n\x11ShowrunesResponse\x12\"\n\x05runes\x18\x01 \x03(\x0b\x32\x13.cln.ShowrunesRunes\"\x9d\x02\n\x0eShowrunesRunes\x12\x0c\n\x04rune\x18\x01 \x01(\t\x12\x11\n\tunique_id\x18\x02 \x01(\t\x12\x35\n\x0crestrictions\x18\x03 \x03(\x0b\x32\x1f.cln.ShowrunesRunesRestrictions\x12\x1f\n\x17restrictions_as_english\x18\x04 \x01(\t\x12\x13\n\x06stored\x18\x05 \x01(\x08H\x00\x88\x01\x01\x12\x18\n\x0b\x62lacklisted\x18\x06 \x01(\x08H\x01\x88\x01\x01\x12\x16\n\tlast_used\x18\x07 \x01(\x01H\x02\x88\x01\x01\x12\x15\n\x08our_rune\x18\x08 \x01(\x08H\x03\x88\x01\x01\x42\t\n\x07_storedB\x0e\n\x0c_blacklistedB\x0c\n\n_last_usedB\x0b\n\t_our_rune\"p\n\x1aShowrunesRunesRestrictions\x12\x41\n\x0c\x61lternatives\x18\x01 \x03(\x0b\x32+.cln.ShowrunesRunesRestrictionsAlternatives\x12\x0f\n\x07\x65nglish\x18\x02 \x01(\t\"n\n&ShowrunesRunesRestrictionsAlternatives\x12\x11\n\tfieldname\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\x12\x11\n\tcondition\x18\x03 \x01(\t\x12\x0f\n\x07\x65nglish\x18\x04 \x01(\t\"\x19\n\x17StreamBlockAddedRequest\"6\n\x16\x42lockAddedNotification\x12\x0c\n\x04hash\x18\x01 \x01(\x0c\x12\x0e\n\x06height\x18\x02 \x01(\r\" \n\x1eStreamChannelOpenFailedRequest\"3\n\x1d\x43hannelOpenFailedNotification\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\"\x1c\n\x1aStreamChannelOpenedRequest\"w\n\x19\x43hannelOpenedNotification\x12\n\n\x02id\x18\x01 \x01(\x0c\x12!\n\x0c\x66unding_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\x14\n\x0c\x66unding_txid\x18\x03 \x01(\x0c\x12\x15\n\rchannel_ready\x18\x04 \x01(\x08\"\x16\n\x14StreamConnectRequest\"\xbe\x01\n\x17PeerConnectNotification\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x44\n\tdirection\x18\x02 \x01(\x0e\x32\x31.cln.PeerConnectNotification.PeerConnectDirection\x12(\n\x07\x61\x64\x64ress\x18\x03 \x01(\x0b\x32\x17.cln.PeerConnectAddress\"\'\n\x14PeerConnectDirection\x12\x06\n\x02IN\x10\x00\x12\x07\n\x03OUT\x10\x01\"\x8b\x02\n\x12PeerConnectAddress\x12\x41\n\titem_type\x18\x01 \x01(\x0e\x32..cln.PeerConnectAddress.PeerConnectAddressType\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\"T\n\x16PeerConnectAddressType\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\"\x18\n\x16StreamCustomMsgRequest\"9\n\x15\x43ustomMsgNotification\x12\x0f\n\x07peer_id\x18\x01 \x01(\x0c\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\x32\xcb?\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\x12H\n\rAddPsbtOutput\x12\x19.cln.AddpsbtoutputRequest\x1a\x1a.cln.AddpsbtoutputResponse\"\x00\x12H\n\rAutoCleanOnce\x12\x19.cln.AutocleanonceRequest\x1a\x1a.cln.AutocleanonceResponse\"\x00\x12N\n\x0f\x41utoCleanStatus\x12\x1b.cln.AutocleanstatusRequest\x1a\x1c.cln.AutocleanstatusResponse\"\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\x12K\n\x0e\x44\x61tastoreUsage\x12\x1a.cln.DatastoreusageRequest\x1a\x1b.cln.DatastoreusageResponse\"\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\x12?\n\nDelInvoice\x12\x16.cln.DelinvoiceRequest\x1a\x17.cln.DelinvoiceResponse\"\x00\x12Q\n\x10\x44\x65vForgetChannel\x12\x1c.cln.DevforgetchannelRequest\x1a\x1d.cln.DevforgetchannelResponse\"\x00\x12Q\n\x10\x45mergencyRecover\x12\x1c.cln.EmergencyrecoverRequest\x1a\x1d.cln.EmergencyrecoverResponse\"\x00\x12\x36\n\x07Recover\x12\x13.cln.RecoverRequest\x1a\x14.cln.RecoverResponse\"\x00\x12K\n\x0eRecoverChannel\x12\x1a.cln.RecoverchannelRequest\x1a\x1b.cln.RecoverchannelResponse\"\x00\x12\x36\n\x07Invoice\x12\x13.cln.InvoiceRequest\x1a\x14.cln.InvoiceResponse\"\x00\x12Q\n\x14\x43reateInvoiceRequest\x12\x1a.cln.InvoicerequestRequest\x1a\x1b.cln.InvoicerequestResponse\"\x00\x12`\n\x15\x44isableInvoiceRequest\x12!.cln.DisableinvoicerequestRequest\x1a\".cln.DisableinvoicerequestResponse\"\x00\x12Z\n\x13ListInvoiceRequests\x12\x1f.cln.ListinvoicerequestsRequest\x1a .cln.ListinvoicerequestsResponse\"\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\nMakeSecret\x12\x16.cln.MakesecretRequest\x1a\x17.cln.MakesecretResponse\"\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\x12Q\n\x10ListPeerChannels\x12\x1c.cln.ListpeerchannelsRequest\x1a\x1d.cln.ListpeerchannelsResponse\"\x00\x12W\n\x12ListClosedChannels\x12\x1e.cln.ListclosedchannelsRequest\x1a\x1f.cln.ListclosedchannelsResponse\"\x00\x12<\n\tDecodePay\x12\x15.cln.DecodepayRequest\x1a\x16.cln.DecodepayResponse\"\x00\x12\x33\n\x06\x44\x65\x63ode\x12\x12.cln.DecodeRequest\x1a\x13.cln.DecodeResponse\"\x00\x12\x33\n\x06\x44\x65lPay\x12\x12.cln.DelpayRequest\x1a\x13.cln.DelpayResponse\"\x00\x12?\n\nDelForward\x12\x16.cln.DelforwardRequest\x1a\x17.cln.DelforwardResponse\"\x00\x12\x45\n\x0c\x44isableOffer\x12\x18.cln.DisableofferRequest\x1a\x19.cln.DisableofferResponse\"\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\x45\n\x0c\x46\x65tchInvoice\x12\x18.cln.FetchinvoiceRequest\x1a\x19.cln.FetchinvoiceResponse\"\x00\x12W\n\x12\x46undChannel_Cancel\x12\x1e.cln.Fundchannel_cancelRequest\x1a\x1f.cln.Fundchannel_cancelResponse\"\x00\x12]\n\x14\x46undChannel_Complete\x12 .cln.Fundchannel_completeRequest\x1a!.cln.Fundchannel_completeResponse\"\x00\x12\x42\n\x0b\x46undChannel\x12\x17.cln.FundchannelRequest\x1a\x18.cln.FundchannelResponse\"\x00\x12T\n\x11\x46undChannel_Start\x12\x1d.cln.Fundchannel_startRequest\x1a\x1e.cln.Fundchannel_startResponse\"\x00\x12\x33\n\x06GetLog\x12\x12.cln.GetlogRequest\x1a\x13.cln.GetlogResponse\"\x00\x12\x45\n\x0c\x46underUpdate\x12\x18.cln.FunderupdateRequest\x1a\x19.cln.FunderupdateResponse\"\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?\n\nListOffers\x12\x16.cln.ListoffersRequest\x1a\x17.cln.ListoffersResponse\"\x00\x12\x39\n\x08ListPays\x12\x14.cln.ListpaysRequest\x1a\x15.cln.ListpaysResponse\"\x00\x12<\n\tListHtlcs\x12\x15.cln.ListhtlcsRequest\x1a\x16.cln.ListhtlcsResponse\"\x00\x12Q\n\x10MultiFundChannel\x12\x1c.cln.MultifundchannelRequest\x1a\x1d.cln.MultifundchannelResponse\"\x00\x12H\n\rMultiWithdraw\x12\x19.cln.MultiwithdrawRequest\x1a\x1a.cln.MultiwithdrawResponse\"\x00\x12\x30\n\x05Offer\x12\x11.cln.OfferRequest\x1a\x12.cln.OfferResponse\"\x00\x12T\n\x11OpenChannel_Abort\x12\x1d.cln.Openchannel_abortRequest\x1a\x1e.cln.Openchannel_abortResponse\"\x00\x12Q\n\x10OpenChannel_Bump\x12\x1c.cln.Openchannel_bumpRequest\x1a\x1d.cln.Openchannel_bumpResponse\"\x00\x12Q\n\x10OpenChannel_Init\x12\x1c.cln.Openchannel_initRequest\x1a\x1d.cln.Openchannel_initResponse\"\x00\x12W\n\x12OpenChannel_Signed\x12\x1e.cln.Openchannel_signedRequest\x1a\x1f.cln.Openchannel_signedResponse\"\x00\x12W\n\x12OpenChannel_Update\x12\x1e.cln.Openchannel_updateRequest\x1a\x1f.cln.Openchannel_updateResponse\"\x00\x12-\n\x04Ping\x12\x10.cln.PingRequest\x1a\x11.cln.PingResponse\"\x00\x12\x33\n\x06Plugin\x12\x12.cln.PluginRequest\x1a\x13.cln.PluginResponse\"\x00\x12H\n\rRenePayStatus\x12\x19.cln.RenepaystatusRequest\x1a\x1a.cln.RenepaystatusResponse\"\x00\x12\x36\n\x07RenePay\x12\x13.cln.RenepayRequest\x1a\x14.cln.RenepayResponse\"\x00\x12H\n\rReserveInputs\x12\x19.cln.ReserveinputsRequest\x1a\x1a.cln.ReserveinputsResponse\"\x00\x12H\n\rSendCustomMsg\x12\x19.cln.SendcustommsgRequest\x1a\x1a.cln.SendcustommsgResponse\"\x00\x12\x42\n\x0bSendInvoice\x12\x17.cln.SendinvoiceRequest\x1a\x18.cln.SendinvoiceResponse\"\x00\x12?\n\nSetChannel\x12\x16.cln.SetchannelRequest\x1a\x17.cln.SetchannelResponse\"\x00\x12<\n\tSetConfig\x12\x15.cln.SetconfigRequest\x1a\x16.cln.SetconfigResponse\"\x00\x12K\n\x0eSetPsbtVersion\x12\x1a.cln.SetpsbtversionRequest\x1a\x1b.cln.SetpsbtversionResponse\"\x00\x12\x42\n\x0bSignInvoice\x12\x17.cln.SigninvoiceRequest\x1a\x18.cln.SigninvoiceResponse\"\x00\x12\x42\n\x0bSignMessage\x12\x17.cln.SignmessageRequest\x1a\x18.cln.SignmessageResponse\"\x00\x12\x42\n\x0bSplice_Init\x12\x17.cln.Splice_initRequest\x1a\x18.cln.Splice_initResponse\"\x00\x12H\n\rSplice_Signed\x12\x19.cln.Splice_signedRequest\x1a\x1a.cln.Splice_signedResponse\"\x00\x12H\n\rSplice_Update\x12\x19.cln.Splice_updateRequest\x1a\x1a.cln.Splice_updateResponse\"\x00\x12N\n\x0fUnreserveInputs\x12\x1b.cln.UnreserveinputsRequest\x1a\x1c.cln.UnreserveinputsResponse\"\x00\x12H\n\rUpgradeWallet\x12\x19.cln.UpgradewalletRequest\x1a\x1a.cln.UpgradewalletResponse\"\x00\x12N\n\x0fWaitBlockHeight\x12\x1b.cln.WaitblockheightRequest\x1a\x1c.cln.WaitblockheightResponse\"\x00\x12-\n\x04Wait\x12\x10.cln.WaitRequest\x1a\x11.cln.WaitResponse\"\x00\x12\x42\n\x0bListConfigs\x12\x17.cln.ListconfigsRequest\x1a\x18.cln.ListconfigsResponse\"\x00\x12-\n\x04Stop\x12\x10.cln.StopRequest\x1a\x11.cln.StopResponse\"\x00\x12-\n\x04Help\x12\x10.cln.HelpRequest\x1a\x11.cln.HelpResponse\"\x00\x12T\n\x11PreApproveKeysend\x12\x1d.cln.PreapprovekeysendRequest\x1a\x1e.cln.PreapprovekeysendResponse\"\x00\x12T\n\x11PreApproveInvoice\x12\x1d.cln.PreapproveinvoiceRequest\x1a\x1e.cln.PreapproveinvoiceResponse\"\x00\x12\x45\n\x0cStaticBackup\x12\x18.cln.StaticbackupRequest\x1a\x19.cln.StaticbackupResponse\"\x00\x12N\n\x0f\x42kprChannelsApy\x12\x1b.cln.BkprchannelsapyRequest\x1a\x1c.cln.BkprchannelsapyResponse\"\x00\x12T\n\x11\x42kprDumpIncomeCsv\x12\x1d.cln.BkprdumpincomecsvRequest\x1a\x1e.cln.BkprdumpincomecsvResponse\"\x00\x12\x42\n\x0b\x42kprInspect\x12\x17.cln.BkprinspectRequest\x1a\x18.cln.BkprinspectResponse\"\x00\x12`\n\x15\x42kprListAccountEvents\x12!.cln.BkprlistaccounteventsRequest\x1a\".cln.BkprlistaccounteventsResponse\"\x00\x12Q\n\x10\x42kprListBalances\x12\x1c.cln.BkprlistbalancesRequest\x1a\x1d.cln.BkprlistbalancesResponse\"\x00\x12K\n\x0e\x42kprListIncome\x12\x1a.cln.BkprlistincomeRequest\x1a\x1b.cln.BkprlistincomeResponse\"\x00\x12H\n\rBlacklistRune\x12\x19.cln.BlacklistruneRequest\x1a\x1a.cln.BlacklistruneResponse\"\x00\x12<\n\tCheckRune\x12\x15.cln.CheckruneRequest\x1a\x16.cln.CheckruneResponse\"\x00\x12?\n\nCreateRune\x12\x16.cln.CreateruneRequest\x1a\x17.cln.CreateruneResponse\"\x00\x12<\n\tShowRunes\x12\x15.cln.ShowrunesRequest\x1a\x16.cln.ShowrunesResponse\"\x00\x12T\n\x13SubscribeBlockAdded\x12\x1c.cln.StreamBlockAddedRequest\x1a\x1b.cln.BlockAddedNotification\"\x00\x30\x01\x12i\n\x1aSubscribeChannelOpenFailed\x12#.cln.StreamChannelOpenFailedRequest\x1a\".cln.ChannelOpenFailedNotification\"\x00\x30\x01\x12]\n\x16SubscribeChannelOpened\x12\x1f.cln.StreamChannelOpenedRequest\x1a\x1e.cln.ChannelOpenedNotification\"\x00\x30\x01\x12O\n\x10SubscribeConnect\x12\x19.cln.StreamConnectRequest\x1a\x1c.cln.PeerConnectNotification\"\x00\x30\x01\x12Q\n\x12SubscribeCustomMsg\x12\x1b.cln.StreamCustomMsgRequest\x1a\x1a.cln.CustomMsgNotification\"\x00\x30\x01\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\nnode.proto\x12\x03\x63ln\x1a\x10primitives.proto\"\x10\n\x0eGetinfoRequest\"\xc1\x04\n\x0fGetinfoResponse\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x12\n\x05\x61lias\x18\x02 \x01(\tH\x00\x88\x01\x01\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\x33\n\x0cour_features\x18\n \x01(\x0b\x32\x18.cln.GetinfoOur_featuresH\x01\x88\x01\x01\x12\x13\n\x0b\x62lockheight\x18\x0b \x01(\r\x12\x0f\n\x07network\x18\x0c \x01(\t\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\x02\x88\x01\x01\x12$\n\x17warning_lightningd_sync\x18\x11 \x01(\tH\x03\x88\x01\x01\x42\x08\n\x06_aliasB\x0f\n\r_our_featuresB\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\"\xc4\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\"G\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\x42\n\n\x08_address\"\xac\x02\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\x12\x14\n\x07subtype\x18\x05 \x01(\tH\x03\x88\x01\x01\"_\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\x12\r\n\tWEBSOCKET\x10\x05\x42\n\n\x08_addressB\x07\n\x05_portB\t\n\x07_socketB\n\n\x08_subtype\"\xb5\x01\n\x10ListpeersRequest\x12\x0f\n\x02id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x38\n\x05level\x18\x02 \x01(\x0e\x32$.cln.ListpeersRequest.ListpeersLevelH\x01\x88\x01\x01\"E\n\x0eListpeersLevel\x12\x06\n\x02IO\x10\x00\x12\t\n\x05\x44\x45\x42UG\x10\x01\x12\x08\n\x04INFO\x10\x02\x12\x0b\n\x07UNUSUAL\x10\x03\x12\t\n\x05TRACE\x10\x04\x42\x05\n\x03_idB\x08\n\x06_level\"7\n\x11ListpeersResponse\x12\"\n\x05peers\x18\x01 \x03(\x0b\x32\x13.cln.ListpeersPeers\"\xdf\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\x0f\n\x07netaddr\x18\x05 \x03(\t\x12\x15\n\x08\x66\x65\x61tures\x18\x06 \x01(\x0cH\x00\x88\x01\x01\x12\x18\n\x0bremote_addr\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x19\n\x0cnum_channels\x18\x08 \x01(\rH\x02\x88\x01\x01\x42\x0b\n\t_featuresB\x0e\n\x0c_remote_addrB\x0f\n\r_num_channels\"\x88\x03\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\"t\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\x12\t\n\x05TRACE\x10\x07\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\"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\"\xb9\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\x18\n\x0b\x62lockheight\x18\x08 \x01(\rH\x02\x88\x01\x01\x12\x10\n\x08reserved\x18\t \x01(\x08\x12\x1e\n\x11reserved_to_block\x18\n \x01(\rH\x03\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_blockheightB\x14\n\x12_reserved_to_block\"\xab\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\x12\x17\n\nchannel_id\x18\t \x01(\x0cH\x01\x88\x01\x01\x42\x13\n\x11_short_channel_idB\r\n\x0b_channel_id\"\xbb\x03\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\x13\n\x06\x62olt11\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x1b\n\x0epayment_secret\x18\x06 \x01(\x0cH\x02\x88\x01\x01\x12\x13\n\x06partid\x18\x07 \x01(\x04H\x03\x88\x01\x01\x12\x14\n\x07groupid\x18\t \x01(\x04H\x04\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x1a\n\rlocalinvreqid\x18\x0b \x01(\x0cH\x06\x88\x01\x01\x12\x1d\n\x10payment_metadata\x18\x0c \x01(\x0cH\x07\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\r \x01(\tH\x08\x88\x01\x01\x42\x08\n\x06_labelB\t\n\x07_bolt11B\x11\n\x0f_payment_secretB\t\n\x07_partidB\n\n\x08_groupidB\x0e\n\x0c_amount_msatB\x10\n\x0e_localinvreqidB\x13\n\x11_payment_metadataB\x0e\n\x0c_description\"\xad\x05\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%\n\x10\x61mount_sent_msat\x18\x08 \x01(\x0b\x32\x0b.cln.Amount\x12\x12\n\x05label\x18\t \x01(\tH\x03\x88\x01\x01\x12\x13\n\x06partid\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x0b \x01(\tH\x05\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x0c \x01(\tH\x06\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\r \x01(\x0cH\x07\x88\x01\x01\x12\x14\n\x07message\x18\x0e \x01(\tH\x08\x88\x01\x01\x12\x19\n\x0c\x63ompleted_at\x18\x0f \x01(\x04H\t\x88\x01\x01\x12\x1a\n\rcreated_index\x18\x10 \x01(\x04H\n\x88\x01\x01\x12\x1a\n\rupdated_index\x18\x11 \x01(\x04H\x0b\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\x08\n\x06_labelB\t\n\x07_partidB\t\n\x07_bolt11B\t\n\x07_bolt12B\x13\n\x11_payment_preimageB\n\n\x08_messageB\x0f\n\r_completed_atB\x10\n\x0e_created_indexB\x10\n\x0e_updated_index\"\\\n\x0cSendpayRoute\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\x12 \n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\"\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\"\xb3\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\x12\x11\n\tdirection\x18\x10 \x01(\rB\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\"\xac\x01\n\x14\x41\x64\x64psbtoutputRequest\x12\x1c\n\x07satoshi\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12\x15\n\x08locktime\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x18\n\x0binitialpsbt\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\x0b\n\t_locktimeB\x0e\n\x0c_initialpsbtB\x0e\n\x0c_destination\"U\n\x15\x41\x64\x64psbtoutputResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x1e\n\x16\x65stimated_added_weight\x18\x02 \x01(\r\x12\x0e\n\x06outnum\x18\x03 \x01(\r\"O\n\x14\x41utocleanonceRequest\x12*\n\tsubsystem\x18\x01 \x01(\x0e\x32\x17.cln.AutocleanSubsystem\x12\x0b\n\x03\x61ge\x18\x02 \x01(\x04\"G\n\x15\x41utocleanonceResponse\x12.\n\tautoclean\x18\x01 \x01(\x0b\x32\x1b.cln.AutocleanonceAutoclean\"\xb1\x04\n\x16\x41utocleanonceAutoclean\x12L\n\x11succeededforwards\x18\x01 \x01(\x0b\x32,.cln.AutocleanonceAutocleanSucceededforwardsH\x00\x88\x01\x01\x12\x46\n\x0e\x66\x61iledforwards\x18\x02 \x01(\x0b\x32).cln.AutocleanonceAutocleanFailedforwardsH\x01\x88\x01\x01\x12\x44\n\rsucceededpays\x18\x03 \x01(\x0b\x32(.cln.AutocleanonceAutocleanSucceededpaysH\x02\x88\x01\x01\x12>\n\nfailedpays\x18\x04 \x01(\x0b\x32%.cln.AutocleanonceAutocleanFailedpaysH\x03\x88\x01\x01\x12\x42\n\x0cpaidinvoices\x18\x05 \x01(\x0b\x32\'.cln.AutocleanonceAutocleanPaidinvoicesH\x04\x88\x01\x01\x12H\n\x0f\x65xpiredinvoices\x18\x06 \x01(\x0b\x32*.cln.AutocleanonceAutocleanExpiredinvoicesH\x05\x88\x01\x01\x42\x14\n\x12_succeededforwardsB\x11\n\x0f_failedforwardsB\x10\n\x0e_succeededpaysB\r\n\x0b_failedpaysB\x0f\n\r_paidinvoicesB\x12\n\x10_expiredinvoices\"M\n\'AutocleanonceAutocleanSucceededforwards\x12\x0f\n\x07\x63leaned\x18\x01 \x01(\x04\x12\x11\n\tuncleaned\x18\x02 \x01(\x04\"J\n$AutocleanonceAutocleanFailedforwards\x12\x0f\n\x07\x63leaned\x18\x01 \x01(\x04\x12\x11\n\tuncleaned\x18\x02 \x01(\x04\"I\n#AutocleanonceAutocleanSucceededpays\x12\x0f\n\x07\x63leaned\x18\x01 \x01(\x04\x12\x11\n\tuncleaned\x18\x02 \x01(\x04\"F\n AutocleanonceAutocleanFailedpays\x12\x0f\n\x07\x63leaned\x18\x01 \x01(\x04\x12\x11\n\tuncleaned\x18\x02 \x01(\x04\"H\n\"AutocleanonceAutocleanPaidinvoices\x12\x0f\n\x07\x63leaned\x18\x01 \x01(\x04\x12\x11\n\tuncleaned\x18\x02 \x01(\x04\"K\n%AutocleanonceAutocleanExpiredinvoices\x12\x0f\n\x07\x63leaned\x18\x01 \x01(\x04\x12\x11\n\tuncleaned\x18\x02 \x01(\x04\"W\n\x16\x41utocleanstatusRequest\x12/\n\tsubsystem\x18\x01 \x01(\x0e\x32\x17.cln.AutocleanSubsystemH\x00\x88\x01\x01\x42\x0c\n\n_subsystem\"K\n\x17\x41utocleanstatusResponse\x12\x30\n\tautoclean\x18\x01 \x01(\x0b\x32\x1d.cln.AutocleanstatusAutoclean\"\xbf\x04\n\x18\x41utocleanstatusAutoclean\x12N\n\x11succeededforwards\x18\x01 \x01(\x0b\x32..cln.AutocleanstatusAutocleanSucceededforwardsH\x00\x88\x01\x01\x12H\n\x0e\x66\x61iledforwards\x18\x02 \x01(\x0b\x32+.cln.AutocleanstatusAutocleanFailedforwardsH\x01\x88\x01\x01\x12\x46\n\rsucceededpays\x18\x03 \x01(\x0b\x32*.cln.AutocleanstatusAutocleanSucceededpaysH\x02\x88\x01\x01\x12@\n\nfailedpays\x18\x04 \x01(\x0b\x32\'.cln.AutocleanstatusAutocleanFailedpaysH\x03\x88\x01\x01\x12\x44\n\x0cpaidinvoices\x18\x05 \x01(\x0b\x32).cln.AutocleanstatusAutocleanPaidinvoicesH\x04\x88\x01\x01\x12J\n\x0f\x65xpiredinvoices\x18\x06 \x01(\x0b\x32,.cln.AutocleanstatusAutocleanExpiredinvoicesH\x05\x88\x01\x01\x42\x14\n\x12_succeededforwardsB\x11\n\x0f_failedforwardsB\x10\n\x0e_succeededpaysB\r\n\x0b_failedpaysB\x0f\n\r_paidinvoicesB\x12\n\x10_expiredinvoices\"g\n)AutocleanstatusAutocleanSucceededforwards\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0f\n\x07\x63leaned\x18\x02 \x01(\x04\x12\x10\n\x03\x61ge\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x06\n\x04_age\"d\n&AutocleanstatusAutocleanFailedforwards\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0f\n\x07\x63leaned\x18\x02 \x01(\x04\x12\x10\n\x03\x61ge\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x06\n\x04_age\"c\n%AutocleanstatusAutocleanSucceededpays\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0f\n\x07\x63leaned\x18\x02 \x01(\x04\x12\x10\n\x03\x61ge\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x06\n\x04_age\"`\n\"AutocleanstatusAutocleanFailedpays\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0f\n\x07\x63leaned\x18\x02 \x01(\x04\x12\x10\n\x03\x61ge\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x06\n\x04_age\"b\n$AutocleanstatusAutocleanPaidinvoices\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0f\n\x07\x63leaned\x18\x02 \x01(\x04\x12\x10\n\x03\x61ge\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x06\n\x04_age\"e\n\'AutocleanstatusAutocleanExpiredinvoices\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0f\n\x07\x63leaned\x18\x02 \x01(\x04\x12\x10\n\x03\x61ge\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x06\n\x04_age\"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\"\xb4\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\x12$\n\x07\x61\x64\x64ress\x18\x04 \x01(\x0b\x32\x13.cln.ConnectAddress\"#\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\"\xfe\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\x12\x1a\n\rcreated_index\x18\x10 \x01(\x04H\t\x88\x01\x01\x12;\n\rpaid_outpoint\x18\x11 \x01(\x0b\x32\x1f.cln.CreateinvoicePaid_outpointH\n\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_noteB\x10\n\x0e_created_indexB\x10\n\x0e_paid_outpoint\":\n\x1a\x43reateinvoicePaid_outpoint\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x0e\n\x06outnum\x18\x02 \x01(\r\"\xb4\x02\n\x10\x44\x61tastoreRequest\x12\x10\n\x03hex\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x36\n\x04mode\x18\x03 \x01(\x0e\x32#.cln.DatastoreRequest.DatastoreModeH\x01\x88\x01\x01\x12\x17\n\ngeneration\x18\x04 \x01(\x04H\x02\x88\x01\x01\x12\x0b\n\x03key\x18\x05 \x03(\t\x12\x13\n\x06string\x18\x06 \x01(\tH\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\x06\n\x04_hexB\x07\n\x05_modeB\r\n\x0b_generationB\t\n\x07_string\"\x82\x01\n\x11\x44\x61tastoreResponse\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\x12\x0b\n\x03key\x18\x05 \x03(\tB\r\n\x0b_generationB\x06\n\x04_hexB\t\n\x07_string\"$\n\x15\x44\x61tastoreusageRequest\x12\x0b\n\x03key\x18\x01 \x03(\t\"S\n\x16\x44\x61tastoreusageResponse\x12\x39\n\x0e\x64\x61tastoreusage\x18\x01 \x01(\x0b\x32!.cln.DatastoreusageDatastoreusage\"@\n\x1c\x44\x61tastoreusageDatastoreusage\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x13\n\x0btotal_bytes\x18\x02 \x01(\x04\"\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\x17\n\ngeneration\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x0b\n\x03key\x18\x03 \x03(\tB\r\n\x0b_generation\"\x85\x01\n\x14\x44\x65ldatastoreResponse\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\x12\x0b\n\x03key\x18\x05 \x03(\tB\r\n\x0b_generationB\x06\n\x04_hexB\t\n\x07_string\"\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\"\xe6\x05\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\x12\x1a\n\rcreated_index\x18\x0c \x01(\x04H\x06\x88\x01\x01\x12\x1a\n\rupdated_index\x18\r \x01(\x04H\x07\x88\x01\x01\x12\x16\n\tpay_index\x18\x0e \x01(\x04H\x08\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\x0f \x01(\x0b\x32\x0b.cln.AmountH\t\x88\x01\x01\x12\x14\n\x07paid_at\x18\x10 \x01(\x04H\n\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x11 \x01(\x0cH\x0b\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_noteB\x10\n\x0e_created_indexB\x10\n\x0e_updated_indexB\x0c\n\n_pay_indexB\x17\n\x15_amount_received_msatB\n\n\x08_paid_atB\x13\n\x11_payment_preimage\"\x9f\x01\n\x17\x44\x65vforgetchannelRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x1d\n\x10short_channel_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x17\n\nchannel_id\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x12\n\x05\x66orce\x18\x04 \x01(\x08H\x02\x88\x01\x01\x42\x13\n\x11_short_channel_idB\r\n\x0b_channel_idB\x08\n\x06_force\"Y\n\x18\x44\x65vforgetchannelResponse\x12\x0e\n\x06\x66orced\x18\x01 \x01(\x08\x12\x17\n\x0f\x66unding_unspent\x18\x02 \x01(\x08\x12\x14\n\x0c\x66unding_txid\x18\x03 \x01(\x0c\"\x19\n\x17\x45mergencyrecoverRequest\")\n\x18\x45mergencyrecoverResponse\x12\r\n\x05stubs\x18\x01 \x03(\x0c\"#\n\x0eRecoverRequest\x12\x11\n\thsmsecret\x18\x01 \x01(\t\"\x88\x01\n\x0fRecoverResponse\x12\x37\n\x06result\x18\x01 \x01(\x0e\x32\".cln.RecoverResponse.RecoverResultH\x00\x88\x01\x01\"1\n\rRecoverResult\x12 \n\x1cRECOVERY_RESTART_IN_PROGRESS\x10\x00\x42\t\n\x07_result\"$\n\x15RecoverchannelRequest\x12\x0b\n\x03scb\x18\x01 \x03(\x0c\"\'\n\x16RecoverchannelResponse\x12\r\n\x05stubs\x18\x01 \x03(\t\"\x99\x02\n\x0eInvoiceRequest\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\r\n\x05label\x18\x03 \x01(\t\x12\x11\n\tfallbacks\x18\x04 \x03(\t\x12\x15\n\x08preimage\x18\x05 \x01(\x0cH\x00\x88\x01\x01\x12\x11\n\x04\x63ltv\x18\x06 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06\x65xpiry\x18\x07 \x01(\x04H\x02\x88\x01\x01\x12\x1d\n\x15\x65xposeprivatechannels\x18\x08 \x03(\t\x12\x19\n\x0c\x64\x65schashonly\x18\t \x01(\x08H\x03\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\n \x01(\x0b\x32\x10.cln.AmountOrAnyB\x0b\n\t_preimageB\x07\n\x05_cltvB\t\n\x07_expiryB\x0f\n\r_deschashonly\"\x95\x03\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\x12\x1a\n\rcreated_index\x18\n \x01(\x04H\x05\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_mppB\x10\n\x0e_created_index\"\xe1\x01\n\x15InvoicerequestRequest\x12\x1b\n\x06\x61mount\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x13\n\x06issuer\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x12\n\x05label\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x1c\n\x0f\x61\x62solute_expiry\x18\x05 \x01(\x04H\x02\x88\x01\x01\x12\x17\n\nsingle_use\x18\x06 \x01(\x08H\x03\x88\x01\x01\x42\t\n\x07_issuerB\x08\n\x06_labelB\x12\n\x10_absolute_expiryB\r\n\x0b_single_use\"\x8b\x01\n\x16InvoicerequestResponse\x12\x11\n\tinvreq_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61\x63tive\x18\x02 \x01(\x08\x12\x12\n\nsingle_use\x18\x03 \x01(\x08\x12\x0e\n\x06\x62olt12\x18\x04 \x01(\t\x12\x0c\n\x04used\x18\x05 \x01(\x08\x12\x12\n\x05label\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_label\"1\n\x1c\x44isableinvoicerequestRequest\x12\x11\n\tinvreq_id\x18\x01 \x01(\t\"\x92\x01\n\x1d\x44isableinvoicerequestResponse\x12\x11\n\tinvreq_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61\x63tive\x18\x02 \x01(\x08\x12\x12\n\nsingle_use\x18\x03 \x01(\x08\x12\x0e\n\x06\x62olt12\x18\x04 \x01(\t\x12\x0c\n\x04used\x18\x05 \x01(\x08\x12\x12\n\x05label\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_label\"l\n\x1aListinvoicerequestsRequest\x12\x16\n\tinvreq_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x61\x63tive_only\x18\x02 \x01(\x08H\x01\x88\x01\x01\x42\x0c\n\n_invreq_idB\x0e\n\x0c_active_only\"_\n\x1bListinvoicerequestsResponse\x12@\n\x0finvoicerequests\x18\x01 \x03(\x0b\x32\'.cln.ListinvoicerequestsInvoicerequests\"\x97\x01\n\"ListinvoicerequestsInvoicerequests\x12\x11\n\tinvreq_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61\x63tive\x18\x02 \x01(\x08\x12\x12\n\nsingle_use\x18\x03 \x01(\x08\x12\x0e\n\x06\x62olt12\x18\x04 \x01(\t\x12\x0c\n\x04used\x18\x05 \x01(\x08\x12\x12\n\x05label\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_label\"#\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\"\xde\x02\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\x12>\n\x05index\x18\x05 \x01(\x0e\x32*.cln.ListinvoicesRequest.ListinvoicesIndexH\x04\x88\x01\x01\x12\x12\n\x05start\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12\x12\n\x05limit\x18\x07 \x01(\rH\x06\x88\x01\x01\"-\n\x11ListinvoicesIndex\x12\x0b\n\x07\x43REATED\x10\x00\x12\x0b\n\x07UPDATED\x10\x01\x42\x08\n\x06_labelB\x0c\n\n_invstringB\x0f\n\r_payment_hashB\x0b\n\t_offer_idB\x08\n\x06_indexB\x08\n\x06_startB\x08\n\x06_limit\"C\n\x14ListinvoicesResponse\x12+\n\x08invoices\x18\x01 \x03(\x0b\x32\x19.cln.ListinvoicesInvoices\"\xd4\x06\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\x16\n\tpay_index\x18\x0b \x01(\x04H\x05\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\x0c \x01(\x0b\x32\x0b.cln.AmountH\x06\x88\x01\x01\x12\x14\n\x07paid_at\x18\r \x01(\x04H\x07\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0e \x01(\x0cH\x08\x88\x01\x01\x12\x1e\n\x11invreq_payer_note\x18\x0f \x01(\tH\t\x88\x01\x01\x12\x1a\n\rcreated_index\x18\x10 \x01(\x04H\n\x88\x01\x01\x12\x1a\n\rupdated_index\x18\x11 \x01(\x04H\x0b\x88\x01\x01\x12\x42\n\rpaid_outpoint\x18\x12 \x01(\x0b\x32&.cln.ListinvoicesInvoicesPaid_outpointH\x0c\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\x0c\n\n_pay_indexB\x17\n\x15_amount_received_msatB\n\n\x08_paid_atB\x13\n\x11_payment_preimageB\x14\n\x12_invreq_payer_noteB\x10\n\x0e_created_indexB\x10\n\x0e_updated_indexB\x10\n\x0e_paid_outpoint\"A\n!ListinvoicesInvoicesPaid_outpoint\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x0e\n\x06outnum\x18\x02 \x01(\r\"\xb4\x03\n\x10SendonionRequest\x12\r\n\x05onion\x18\x01 \x01(\x0c\x12*\n\tfirst_hop\x18\x02 \x01(\x0b\x32\x17.cln.SendonionFirst_hop\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\x18\n\x0b\x64\x65stination\x18\t \x01(\x0cH\x03\x88\x01\x01\x12\x14\n\x07groupid\x18\x0b \x01(\x04H\x04\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\x0c \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x1a\n\rlocalinvreqid\x18\r \x01(\x0cH\x06\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x0e \x01(\tH\x07\x88\x01\x01\x42\x08\n\x06_labelB\t\n\x07_partidB\t\n\x07_bolt11B\x0e\n\x0c_destinationB\n\n\x08_groupidB\x0e\n\x0c_amount_msatB\x10\n\x0e_localinvreqidB\x0e\n\x0c_description\"\xe7\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\x1d\n\x10payment_preimage\x18\x0b \x01(\x0cH\x05\x88\x01\x01\x12\x14\n\x07message\x18\x0c \x01(\tH\x06\x88\x01\x01\x12\x13\n\x06partid\x18\r \x01(\x04H\x07\x88\x01\x01\x12\x1a\n\rcreated_index\x18\x0e \x01(\x04H\x08\x88\x01\x01\x12\x1a\n\rupdated_index\x18\x0f \x01(\x04H\t\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\x13\n\x11_payment_preimageB\n\n\x08_messageB\t\n\x07_partidB\x10\n\x0e_created_indexB\x10\n\x0e_updated_index\"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\"\xa0\x03\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\x12>\n\x05index\x18\x04 \x01(\x0e\x32*.cln.ListsendpaysRequest.ListsendpaysIndexH\x03\x88\x01\x01\x12\x12\n\x05start\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12\x12\n\x05limit\x18\x06 \x01(\rH\x05\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\"-\n\x11ListsendpaysIndex\x12\x0b\n\x07\x43REATED\x10\x00\x12\x0b\n\x07UPDATED\x10\x01\x42\t\n\x07_bolt11B\x0f\n\r_payment_hashB\t\n\x07_statusB\x08\n\x06_indexB\x08\n\x06_startB\x08\n\x06_limit\"C\n\x14ListsendpaysResponse\x12+\n\x08payments\x18\x01 \x03(\x0b\x32\x19.cln.ListsendpaysPayments\"\xfc\x05\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\x13\n\x06\x62olt12\x18\x0b \x01(\tH\x04\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0c \x01(\x0cH\x05\x88\x01\x01\x12\x17\n\nerroronion\x18\r \x01(\x0cH\x06\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x0e \x01(\tH\x07\x88\x01\x01\x12\x13\n\x06partid\x18\x0f \x01(\x04H\x08\x88\x01\x01\x12\x1a\n\rcreated_index\x18\x10 \x01(\x04H\t\x88\x01\x01\x12\x1a\n\rupdated_index\x18\x11 \x01(\x04H\n\x88\x01\x01\x12\x19\n\x0c\x63ompleted_at\x18\x12 \x01(\x04H\x0b\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\t\n\x07_bolt12B\x13\n\x11_payment_preimageB\r\n\x0b_erroronionB\x0e\n\x0c_descriptionB\t\n\x07_partidB\x10\n\x0e_created_indexB\x10\n\x0e_updated_indexB\x0f\n\r_completed_at\"\x19\n\x17ListtransactionsRequest\"S\n\x18ListtransactionsResponse\x12\x37\n\x0ctransactions\x18\x01 \x03(\x0b\x32!.cln.ListtransactionsTransactions\"\xf8\x01\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\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.ListtransactionsTransactionsOutputs\"S\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\"l\n#ListtransactionsTransactionsOutputs\x12\r\n\x05index\x18\x01 \x01(\r\x12\x14\n\x0cscriptPubKey\x18\x03 \x01(\x0c\x12 \n\x0b\x61mount_msat\x18\x06 \x01(\x0b\x32\x0b.cln.Amount\"M\n\x11MakesecretRequest\x12\x10\n\x03hex\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x13\n\x06string\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x06\n\x04_hexB\t\n\x07_string\"$\n\x12MakesecretResponse\x12\x0e\n\x06secret\x18\x01 \x01(\x0c\"\x93\x04\n\nPayRequest\x12\x0e\n\x06\x62olt11\x18\x01 \x01(\t\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\x17\n\nriskfactor\x18\x08 \x01(\x01H\x05\x88\x01\x01\x12\x0f\n\x07\x65xclude\x18\n \x03(\t\x12 \n\x06maxfee\x18\x0b \x01(\x0b\x32\x0b.cln.AmountH\x06\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x0c \x01(\tH\x07\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\r \x01(\x0b\x32\x0b.cln.AmountH\x08\x88\x01\x01\x12\x1a\n\rlocalinvreqid\x18\x0e \x01(\x0cH\t\x88\x01\x01\x12&\n\x0cpartial_msat\x18\x0f \x01(\x0b\x32\x0b.cln.AmountH\n\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_riskfactorB\t\n\x07_maxfeeB\x0e\n\x0c_descriptionB\x0e\n\x0c_amount_msatB\x10\n\x0e_localinvreqidB\x0f\n\r_partial_msat\"\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\"\xba\x02\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.ListnodesNodesAddresses\x12\x42\n\x10option_will_fund\x18\x07 \x01(\x0b\x32#.cln.ListnodesNodesOption_will_fundH\x04\x88\x01\x01\x42\x11\n\x0f_last_timestampB\x08\n\x06_aliasB\x08\n\x06_colorB\x0b\n\t_featuresB\x13\n\x11_option_will_fund\"\xf4\x01\n\x1eListnodesNodesOption_will_fund\x12(\n\x13lease_fee_base_msat\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12\x17\n\x0flease_fee_basis\x18\x02 \x01(\r\x12\x16\n\x0e\x66unding_weight\x18\x03 \x01(\r\x12.\n\x19\x63hannel_fee_max_base_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12\x30\n(channel_fee_max_proportional_thousandths\x18\x05 \x01(\r\x12\x15\n\rcompact_lease\x18\x06 \x01(\x0c\"\xe8\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\"P\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\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\"\xd4\x05\n\x16WaitanyinvoiceResponse\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@\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\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\x16\n\tpay_index\x18\t \x01(\x04H\x04\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x14\n\x07paid_at\x18\x0b \x01(\x04H\x06\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0c \x01(\x0cH\x07\x88\x01\x01\x12\x1a\n\rcreated_index\x18\r \x01(\x04H\x08\x88\x01\x01\x12\x1a\n\rupdated_index\x18\x0e \x01(\x04H\t\x88\x01\x01\x12<\n\rpaid_outpoint\x18\x0f \x01(\x0b\x32 .cln.WaitanyinvoicePaid_outpointH\n\x88\x01\x01\"-\n\x14WaitanyinvoiceStatus\x12\x08\n\x04PAID\x10\x00\x12\x0b\n\x07\x45XPIRED\x10\x01\x42\x0e\n\x0c_descriptionB\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_preimageB\x10\n\x0e_created_indexB\x10\n\x0e_updated_indexB\x10\n\x0e_paid_outpoint\";\n\x1bWaitanyinvoicePaid_outpoint\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x0e\n\x06outnum\x18\x02 \x01(\r\"#\n\x12WaitinvoiceRequest\x12\r\n\x05label\x18\x01 \x01(\t\"\xc5\x05\n\x13WaitinvoiceResponse\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:\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\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\x16\n\tpay_index\x18\t \x01(\x04H\x04\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x14\n\x07paid_at\x18\x0b \x01(\x04H\x06\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\x0c \x01(\x0cH\x07\x88\x01\x01\x12\x1a\n\rcreated_index\x18\r \x01(\x04H\x08\x88\x01\x01\x12\x1a\n\rupdated_index\x18\x0e \x01(\x04H\t\x88\x01\x01\x12\x39\n\rpaid_outpoint\x18\x0f \x01(\x0b\x32\x1d.cln.WaitinvoicePaid_outpointH\n\x88\x01\x01\"*\n\x11WaitinvoiceStatus\x12\x08\n\x04PAID\x10\x00\x12\x0b\n\x07\x45XPIRED\x10\x01\x42\x0e\n\x0c_descriptionB\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_preimageB\x10\n\x0e_created_indexB\x10\n\x0e_updated_indexB\x10\n\x0e_paid_outpoint\"8\n\x18WaitinvoicePaid_outpoint\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x0e\n\x06outnum\x18\x02 \x01(\r\"\x8e\x01\n\x12WaitsendpayRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x13\n\x06partid\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x14\n\x07timeout\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x14\n\x07groupid\x18\x04 \x01(\x04H\x02\x88\x01\x01\x42\t\n\x07_partidB\n\n\x08_timeoutB\n\n\x08_groupid\"\x8e\x05\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%\n\x10\x61mount_sent_msat\x18\x08 \x01(\x0b\x32\x0b.cln.Amount\x12\x12\n\x05label\x18\t \x01(\tH\x03\x88\x01\x01\x12\x13\n\x06partid\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x0b \x01(\tH\x05\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x0c \x01(\tH\x06\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\r \x01(\x0cH\x07\x88\x01\x01\x12\x19\n\x0c\x63ompleted_at\x18\x0e \x01(\x01H\x08\x88\x01\x01\x12\x1a\n\rcreated_index\x18\x0f \x01(\x04H\t\x88\x01\x01\x12\x1a\n\rupdated_index\x18\x10 \x01(\x04H\n\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\x08\n\x06_labelB\t\n\x07_partidB\t\n\x07_bolt11B\t\n\x07_bolt12B\x13\n\x11_payment_preimageB\x0f\n\r_completed_atB\x10\n\x0e_created_indexB\x10\n\x0e_updated_index\"\x97\x01\n\x0eNewaddrRequest\x12@\n\x0b\x61\x64\x64resstype\x18\x01 \x01(\x0e\x32&.cln.NewaddrRequest.NewaddrAddresstypeH\x00\x88\x01\x01\"3\n\x12NewaddrAddresstype\x12\n\n\x06\x42\x45\x43H32\x10\x00\x12\x07\n\x03\x41LL\x10\x02\x12\x08\n\x04P2TR\x10\x03\x42\x0e\n\x0c_addresstype\"M\n\x0fNewaddrResponse\x12\x13\n\x06\x62\x65\x63h32\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04p2tr\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\t\n\x07_bech32B\x07\n\x05_p2tr\"\xb9\x01\n\x0fWithdrawRequest\x12\x13\n\x0b\x64\x65stination\x18\x01 \x01(\t\x12!\n\x07satoshi\x18\x02 \x01(\x0b\x32\x10.cln.AmountOrAll\x12\x14\n\x07minconf\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x1c\n\x05utxos\x18\x04 \x03(\x0b\x32\r.cln.Outpoint\x12\"\n\x07\x66\x65\x65rate\x18\x05 \x01(\x0b\x32\x0c.cln.FeerateH\x01\x88\x01\x01\x42\n\n\x08_minconfB\n\n\x08_feerate\":\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\"\xaf\x03\n\x0eKeysendRequest\x12\x13\n\x0b\x64\x65stination\x18\x01 \x01(\x0c\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\x12 \n\x0b\x61mount_msat\x18\n \x01(\x0b\x32\x0b.cln.Amount\x12 \n\x06maxfee\x18\x0b \x01(\x0b\x32\x0b.cln.AmountH\x07\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_extratlvsB\t\n\x07_maxfee\"\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\"\xa4\x03\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\x12\x17\n\nnonwrapped\x18\t \x01(\x08H\x05\x88\x01\x01\x12#\n\x16opening_anchor_channel\x18\n \x01(\x08H\x06\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_changeB\r\n\x0b_nonwrappedB\x19\n\x17_opening_anchor_channel\"\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(\rH\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\"\xa0\x03\n\x0fUtxopsbtRequest\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\x1c\n\x05utxos\x18\x04 \x03(\x0b\x32\r.cln.Outpoint\x12\x14\n\x07reserve\x18\x05 \x01(\rH\x00\x88\x01\x01\x12\x15\n\x08locktime\x18\x06 \x01(\rH\x01\x88\x01\x01\x12\x1f\n\x12min_witness_weight\x18\x07 \x01(\rH\x02\x88\x01\x01\x12\x17\n\nreservedok\x18\x08 \x01(\x08H\x03\x88\x01\x01\x12\x1d\n\x10\x65xcess_as_change\x18\t \x01(\x08H\x04\x88\x01\x01\x12#\n\x16opening_anchor_channel\x18\n \x01(\x08H\x05\x88\x01\x01\x42\n\n\x08_reserveB\x0b\n\t_locktimeB\x15\n\x13_min_witness_weightB\r\n\x0b_reservedokB\x13\n\x11_excess_as_changeB\x19\n\x17_opening_anchor_channel\"\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\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.Outpoint\x12 \n\x07outputs\x18\x05 \x03(\x0b\x32\x0f.cln.OutputDescB\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\"1\n\x17ListpeerchannelsRequest\x12\x0f\n\x02id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x05\n\x03_id\"K\n\x18ListpeerchannelsResponse\x12/\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x1d.cln.ListpeerchannelsChannels\"\xd7\x1b\n\x18ListpeerchannelsChannels\x12\x0f\n\x07peer_id\x18\x01 \x01(\x0c\x12\x16\n\x0epeer_connected\x18\x02 \x01(\x08\x12J\n\x05state\x18\x03 \x01(\x0e\x32;.cln.ListpeerchannelsChannels.ListpeerchannelsChannelsState\x12\x19\n\x0cscratch_txid\x18\x04 \x01(\x0cH\x00\x88\x01\x01\x12:\n\x07\x66\x65\x65rate\x18\x06 \x01(\x0b\x32$.cln.ListpeerchannelsChannelsFeerateH\x01\x88\x01\x01\x12\x12\n\x05owner\x18\x07 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x10short_channel_id\x18\x08 \x01(\tH\x03\x88\x01\x01\x12\x17\n\nchannel_id\x18\t \x01(\x0cH\x04\x88\x01\x01\x12\x19\n\x0c\x66unding_txid\x18\n \x01(\x0cH\x05\x88\x01\x01\x12\x1b\n\x0e\x66unding_outnum\x18\x0b \x01(\rH\x06\x88\x01\x01\x12\x1c\n\x0finitial_feerate\x18\x0c \x01(\tH\x07\x88\x01\x01\x12\x19\n\x0clast_feerate\x18\r \x01(\tH\x08\x88\x01\x01\x12\x19\n\x0cnext_feerate\x18\x0e \x01(\tH\t\x88\x01\x01\x12\x1a\n\rnext_fee_step\x18\x0f \x01(\rH\n\x88\x01\x01\x12\x37\n\x08inflight\x18\x10 \x03(\x0b\x32%.cln.ListpeerchannelsChannelsInflight\x12\x15\n\x08\x63lose_to\x18\x11 \x01(\x0cH\x0b\x88\x01\x01\x12\x14\n\x07private\x18\x12 \x01(\x08H\x0c\x88\x01\x01\x12 \n\x06opener\x18\x13 \x01(\x0e\x32\x10.cln.ChannelSide\x12%\n\x06\x63loser\x18\x14 \x01(\x0e\x32\x10.cln.ChannelSideH\r\x88\x01\x01\x12:\n\x07\x66unding\x18\x16 \x01(\x0b\x32$.cln.ListpeerchannelsChannelsFundingH\x0e\x88\x01\x01\x12$\n\nto_us_msat\x18\x17 \x01(\x0b\x32\x0b.cln.AmountH\x0f\x88\x01\x01\x12(\n\x0emin_to_us_msat\x18\x18 \x01(\x0b\x32\x0b.cln.AmountH\x10\x88\x01\x01\x12(\n\x0emax_to_us_msat\x18\x19 \x01(\x0b\x32\x0b.cln.AmountH\x11\x88\x01\x01\x12$\n\ntotal_msat\x18\x1a \x01(\x0b\x32\x0b.cln.AmountH\x12\x88\x01\x01\x12\'\n\rfee_base_msat\x18\x1b \x01(\x0b\x32\x0b.cln.AmountH\x13\x88\x01\x01\x12(\n\x1b\x66\x65\x65_proportional_millionths\x18\x1c \x01(\rH\x14\x88\x01\x01\x12)\n\x0f\x64ust_limit_msat\x18\x1d \x01(\x0b\x32\x0b.cln.AmountH\x15\x88\x01\x01\x12\x30\n\x16max_total_htlc_in_msat\x18\x1e \x01(\x0b\x32\x0b.cln.AmountH\x16\x88\x01\x01\x12,\n\x12their_reserve_msat\x18\x1f \x01(\x0b\x32\x0b.cln.AmountH\x17\x88\x01\x01\x12*\n\x10our_reserve_msat\x18 \x01(\x0b\x32\x0b.cln.AmountH\x18\x88\x01\x01\x12(\n\x0espendable_msat\x18! \x01(\x0b\x32\x0b.cln.AmountH\x19\x88\x01\x01\x12)\n\x0freceivable_msat\x18\" \x01(\x0b\x32\x0b.cln.AmountH\x1a\x88\x01\x01\x12.\n\x14minimum_htlc_in_msat\x18# \x01(\x0b\x32\x0b.cln.AmountH\x1b\x88\x01\x01\x12/\n\x15minimum_htlc_out_msat\x18$ \x01(\x0b\x32\x0b.cln.AmountH\x1c\x88\x01\x01\x12/\n\x15maximum_htlc_out_msat\x18% \x01(\x0b\x32\x0b.cln.AmountH\x1d\x88\x01\x01\x12 \n\x13their_to_self_delay\x18& \x01(\rH\x1e\x88\x01\x01\x12\x1e\n\x11our_to_self_delay\x18\' \x01(\rH\x1f\x88\x01\x01\x12\x1f\n\x12max_accepted_htlcs\x18( \x01(\rH \x88\x01\x01\x12\x36\n\x05\x61lias\x18) \x01(\x0b\x32\".cln.ListpeerchannelsChannelsAliasH!\x88\x01\x01\x12\x0e\n\x06status\x18+ \x03(\t\x12 \n\x13in_payments_offered\x18, \x01(\x04H\"\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\x30 \x01(\x04H&\x88\x01\x01\x12*\n\x10out_offered_msat\x18\x31 \x01(\x0b\x32\x0b.cln.AmountH\'\x88\x01\x01\x12#\n\x16out_payments_fulfilled\x18\x32 \x01(\x04H(\x88\x01\x01\x12,\n\x12out_fulfilled_msat\x18\x33 \x01(\x0b\x32\x0b.cln.AmountH)\x88\x01\x01\x12\x31\n\x05htlcs\x18\x34 \x03(\x0b\x32\".cln.ListpeerchannelsChannelsHtlcs\x12\x1a\n\rclose_to_addr\x18\x35 \x01(\tH*\x88\x01\x01\x12\x1e\n\x11ignore_fee_limits\x18\x36 \x01(\x08H+\x88\x01\x01\x12:\n\x07updates\x18\x37 \x01(\x0b\x32$.cln.ListpeerchannelsChannelsUpdatesH,\x88\x01\x01\x12#\n\x16last_stable_connection\x18\x38 \x01(\x04H-\x88\x01\x01\x12\x17\n\nlost_state\x18\x39 \x01(\x08H.\x88\x01\x01\x12\x1a\n\rreestablished\x18: \x01(\x08H/\x88\x01\x01\x12*\n\x10last_tx_fee_msat\x18; \x01(\x0b\x32\x0b.cln.AmountH0\x88\x01\x01\x12\x16\n\tdirection\x18< \x01(\rH1\x88\x01\x01\"\x80\x03\n\x1dListpeerchannelsChannelsState\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\n\x12\x1c\n\x18\x43HANNELD_AWAITING_SPLICE\x10\x0b\x12\x1c\n\x18\x44UALOPEND_OPEN_COMMITTED\x10\x0c\x12\x1f\n\x1b\x44UALOPEND_OPEN_COMMIT_READY\x10\rB\x0f\n\r_scratch_txidB\n\n\x08_feerateB\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\n\n\x08_fundingB\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\x08\n\x06_aliasB\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_addrB\x14\n\x12_ignore_fee_limitsB\n\n\x08_updatesB\x19\n\x17_last_stable_connectionB\r\n\x0b_lost_stateB\x10\n\x0e_reestablishedB\x13\n\x11_last_tx_fee_msatB\x0c\n\n_direction\"\xa7\x01\n\x1fListpeerchannelsChannelsUpdates\x12\x38\n\x05local\x18\x01 \x01(\x0b\x32).cln.ListpeerchannelsChannelsUpdatesLocal\x12?\n\x06remote\x18\x02 \x01(\x0b\x32*.cln.ListpeerchannelsChannelsUpdatesRemoteH\x00\x88\x01\x01\x42\t\n\x07_remote\"\xda\x01\n$ListpeerchannelsChannelsUpdatesLocal\x12&\n\x11htlc_minimum_msat\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12&\n\x11htlc_maximum_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\x19\n\x11\x63ltv_expiry_delta\x18\x03 \x01(\r\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\"\xdb\x01\n%ListpeerchannelsChannelsUpdatesRemote\x12&\n\x11htlc_minimum_msat\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12&\n\x11htlc_maximum_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\x19\n\x11\x63ltv_expiry_delta\x18\x03 \x01(\r\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\"?\n\x1fListpeerchannelsChannelsFeerate\x12\r\n\x05perkw\x18\x01 \x01(\r\x12\r\n\x05perkb\x18\x02 \x01(\r\"\x8b\x02\n ListpeerchannelsChannelsInflight\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\x19\n\x0cscratch_txid\x18\x06 \x01(\x0cH\x00\x88\x01\x01\x12\x1a\n\rsplice_amount\x18\x07 \x01(\x12H\x01\x88\x01\x01\x42\x0f\n\r_scratch_txidB\x10\n\x0e_splice_amount\"\x9d\x02\n\x1fListpeerchannelsChannelsFunding\x12%\n\x0bpushed_msat\x18\x01 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12%\n\x10local_funds_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12&\n\x11remote_funds_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12\'\n\rfee_paid_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\'\n\rfee_rcvd_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x42\x0e\n\x0c_pushed_msatB\x10\n\x0e_fee_paid_msatB\x10\n\x0e_fee_rcvd_msat\"]\n\x1dListpeerchannelsChannelsAlias\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\"\xf9\x02\n\x1dListpeerchannelsChannelsHtlcs\x12\\\n\tdirection\x18\x01 \x01(\x0e\x32I.cln.ListpeerchannelsChannelsHtlcs.ListpeerchannelsChannelsHtlcsDirection\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\x12\x1d\n\x05state\x18\x08 \x01(\x0e\x32\x0e.cln.HtlcState\"9\n&ListpeerchannelsChannelsHtlcsDirection\x12\x06\n\x02IN\x10\x00\x12\x07\n\x03OUT\x10\x01\x42\x10\n\x0e_local_trimmedB\t\n\x07_status\"3\n\x19ListclosedchannelsRequest\x12\x0f\n\x02id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x05\n\x03_id\"[\n\x1aListclosedchannelsResponse\x12=\n\x0e\x63losedchannels\x18\x01 \x03(\x0b\x32%.cln.ListclosedchannelsClosedchannels\"\xf2\t\n ListclosedchannelsClosedchannels\x12\x14\n\x07peer_id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x12\n\nchannel_id\x18\x02 \x01(\x0c\x12\x1d\n\x10short_channel_id\x18\x03 \x01(\tH\x01\x88\x01\x01\x12>\n\x05\x61lias\x18\x04 \x01(\x0b\x32*.cln.ListclosedchannelsClosedchannelsAliasH\x02\x88\x01\x01\x12 \n\x06opener\x18\x05 \x01(\x0e\x32\x10.cln.ChannelSide\x12%\n\x06\x63loser\x18\x06 \x01(\x0e\x32\x10.cln.ChannelSideH\x03\x88\x01\x01\x12\x0f\n\x07private\x18\x07 \x01(\x08\x12\x1f\n\x17total_local_commitments\x18\t \x01(\x04\x12 \n\x18total_remote_commitments\x18\n \x01(\x04\x12\x18\n\x10total_htlcs_sent\x18\x0b \x01(\x04\x12\x14\n\x0c\x66unding_txid\x18\x0c \x01(\x0c\x12\x16\n\x0e\x66unding_outnum\x18\r \x01(\r\x12\x0e\n\x06leased\x18\x0e \x01(\x08\x12/\n\x15\x66unding_fee_paid_msat\x18\x0f \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12/\n\x15\x66unding_fee_rcvd_msat\x18\x10 \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12-\n\x13\x66unding_pushed_msat\x18\x11 \x01(\x0b\x32\x0b.cln.AmountH\x06\x88\x01\x01\x12\x1f\n\ntotal_msat\x18\x12 \x01(\x0b\x32\x0b.cln.Amount\x12%\n\x10\x66inal_to_us_msat\x18\x13 \x01(\x0b\x32\x0b.cln.Amount\x12#\n\x0emin_to_us_msat\x18\x14 \x01(\x0b\x32\x0b.cln.Amount\x12#\n\x0emax_to_us_msat\x18\x15 \x01(\x0b\x32\x0b.cln.Amount\x12!\n\x14last_commitment_txid\x18\x16 \x01(\x0cH\x07\x88\x01\x01\x12\x32\n\x18last_commitment_fee_msat\x18\x17 \x01(\x0b\x32\x0b.cln.AmountH\x08\x88\x01\x01\x12\x66\n\x0b\x63lose_cause\x18\x18 \x01(\x0e\x32Q.cln.ListclosedchannelsClosedchannels.ListclosedchannelsClosedchannelsClose_cause\x12#\n\x16last_stable_connection\x18\x19 \x01(\x04H\t\x88\x01\x01\"v\n+ListclosedchannelsClosedchannelsClose_cause\x12\x0b\n\x07UNKNOWN\x10\x00\x12\t\n\x05LOCAL\x10\x01\x12\x08\n\x04USER\x10\x02\x12\n\n\x06REMOTE\x10\x03\x12\x0c\n\x08PROTOCOL\x10\x04\x12\x0b\n\x07ONCHAIN\x10\x05\x42\n\n\x08_peer_idB\x13\n\x11_short_channel_idB\x08\n\x06_aliasB\t\n\x07_closerB\x18\n\x16_funding_fee_paid_msatB\x18\n\x16_funding_fee_rcvd_msatB\x16\n\x14_funding_pushed_msatB\x17\n\x15_last_commitment_txidB\x1b\n\x19_last_commitment_fee_msatB\x19\n\x17_last_stable_connection\"e\n%ListclosedchannelsClosedchannelsAlias\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\"L\n\x10\x44\x65\x63odepayRequest\x12\x0e\n\x06\x62olt11\x18\x01 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\xc7\x04\n\x11\x44\x65\x63odepayResponse\x12\x10\n\x08\x63urrency\x18\x01 \x01(\t\x12\x12\n\ncreated_at\x18\x02 \x01(\x04\x12\x0e\n\x06\x65xpiry\x18\x03 \x01(\x04\x12\r\n\x05payee\x18\x04 \x01(\x0c\x12%\n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x14\n\x0cpayment_hash\x18\x06 \x01(\x0c\x12\x11\n\tsignature\x18\x07 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x1d\n\x10\x64\x65scription_hash\x18\t \x01(\x0cH\x02\x88\x01\x01\x12\x1d\n\x15min_final_cltv_expiry\x18\n \x01(\r\x12\x1b\n\x0epayment_secret\x18\x0b \x01(\x0cH\x03\x88\x01\x01\x12\x15\n\x08\x66\x65\x61tures\x18\x0c \x01(\x0cH\x04\x88\x01\x01\x12\x1d\n\x10payment_metadata\x18\r \x01(\x0cH\x05\x88\x01\x01\x12*\n\tfallbacks\x18\x0e \x03(\x0b\x32\x17.cln.DecodepayFallbacks\x12\"\n\x05\x65xtra\x18\x10 \x03(\x0b\x32\x13.cln.DecodepayExtra\x12-\n\x06routes\x18\x11 \x01(\x0b\x32\x18.cln.DecodeRoutehintListH\x06\x88\x01\x01\x42\x0e\n\x0c_amount_msatB\x0e\n\x0c_descriptionB\x13\n\x11_description_hashB\x11\n\x0f_payment_secretB\x0b\n\t_featuresB\x13\n\x11_payment_metadataB\t\n\x07_routes\"\xd0\x01\n\x12\x44\x65\x63odepayFallbacks\x12\x41\n\titem_type\x18\x01 \x01(\x0e\x32..cln.DecodepayFallbacks.DecodepayFallbacksType\x12\x11\n\x04\x61\x64\x64r\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x0b\n\x03hex\x18\x03 \x01(\x0c\"N\n\x16\x44\x65\x63odepayFallbacksType\x12\t\n\x05P2PKH\x10\x00\x12\x08\n\x04P2SH\x10\x01\x12\n\n\x06P2WPKH\x10\x02\x12\t\n\x05P2WSH\x10\x03\x12\x08\n\x04P2TR\x10\x04\x42\x07\n\x05_addr\"+\n\x0e\x44\x65\x63odepayExtra\x12\x0b\n\x03tag\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\t\"\x1f\n\rDecodeRequest\x12\x0e\n\x06string\x18\x01 \x01(\t\"\xec%\n\x0e\x44\x65\x63odeResponse\x12\x31\n\titem_type\x18\x01 \x01(\x0e\x32\x1e.cln.DecodeResponse.DecodeType\x12\r\n\x05valid\x18\x02 \x01(\x08\x12\x15\n\x08offer_id\x18\x03 \x01(\x0cH\x00\x88\x01\x01\x12\x14\n\x0coffer_chains\x18\x04 \x03(\x0c\x12\x1b\n\x0eoffer_metadata\x18\x05 \x01(\x0cH\x01\x88\x01\x01\x12\x1b\n\x0eoffer_currency\x18\x06 \x01(\tH\x02\x88\x01\x01\x12+\n\x1ewarning_unknown_offer_currency\x18\x07 \x01(\tH\x03\x88\x01\x01\x12 \n\x13\x63urrency_minor_unit\x18\x08 \x01(\rH\x04\x88\x01\x01\x12\x19\n\x0coffer_amount\x18\t \x01(\x04H\x05\x88\x01\x01\x12+\n\x11offer_amount_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x06\x88\x01\x01\x12\x1e\n\x11offer_description\x18\x0b \x01(\tH\x07\x88\x01\x01\x12\x19\n\x0coffer_issuer\x18\x0c \x01(\tH\x08\x88\x01\x01\x12\x1b\n\x0eoffer_features\x18\r \x01(\x0cH\t\x88\x01\x01\x12\"\n\x15offer_absolute_expiry\x18\x0e \x01(\x04H\n\x88\x01\x01\x12\x1f\n\x12offer_quantity_max\x18\x0f \x01(\x04H\x0b\x88\x01\x01\x12+\n\x0boffer_paths\x18\x10 \x03(\x0b\x32\x16.cln.DecodeOffer_paths\x12\x1a\n\roffer_node_id\x18\x11 \x01(\x0cH\x0c\x88\x01\x01\x12*\n\x1dwarning_missing_offer_node_id\x18\x14 \x01(\tH\r\x88\x01\x01\x12.\n!warning_invalid_offer_description\x18\x15 \x01(\tH\x0e\x88\x01\x01\x12.\n!warning_missing_offer_description\x18\x16 \x01(\tH\x0f\x88\x01\x01\x12+\n\x1ewarning_invalid_offer_currency\x18\x17 \x01(\tH\x10\x88\x01\x01\x12)\n\x1cwarning_invalid_offer_issuer\x18\x18 \x01(\tH\x11\x88\x01\x01\x12\x1c\n\x0finvreq_metadata\x18\x19 \x01(\x0cH\x12\x88\x01\x01\x12\x1c\n\x0finvreq_payer_id\x18\x1a \x01(\x0cH\x13\x88\x01\x01\x12\x19\n\x0cinvreq_chain\x18\x1b \x01(\x0cH\x14\x88\x01\x01\x12,\n\x12invreq_amount_msat\x18\x1c \x01(\x0b\x32\x0b.cln.AmountH\x15\x88\x01\x01\x12\x1c\n\x0finvreq_features\x18\x1d \x01(\x0cH\x16\x88\x01\x01\x12\x1c\n\x0finvreq_quantity\x18\x1e \x01(\x04H\x17\x88\x01\x01\x12\x1e\n\x11invreq_payer_note\x18\x1f \x01(\tH\x18\x88\x01\x01\x12&\n\x19invreq_recurrence_counter\x18 \x01(\rH\x19\x88\x01\x01\x12$\n\x17invreq_recurrence_start\x18! \x01(\rH\x1a\x88\x01\x01\x12,\n\x1fwarning_missing_invreq_metadata\x18# \x01(\tH\x1b\x88\x01\x01\x12,\n\x1fwarning_missing_invreq_payer_id\x18$ \x01(\tH\x1c\x88\x01\x01\x12.\n!warning_invalid_invreq_payer_note\x18% \x01(\tH\x1d\x88\x01\x01\x12\x36\n)warning_missing_invoice_request_signature\x18& \x01(\tH\x1e\x88\x01\x01\x12\x36\n)warning_invalid_invoice_request_signature\x18\' \x01(\tH\x1f\x88\x01\x01\x12\x1f\n\x12invoice_created_at\x18) \x01(\x04H \x88\x01\x01\x12$\n\x17invoice_relative_expiry\x18* \x01(\rH!\x88\x01\x01\x12!\n\x14invoice_payment_hash\x18+ \x01(\x0cH\"\x88\x01\x01\x12-\n\x13invoice_amount_msat\x18, \x01(\x0b\x32\x0b.cln.AmountH#\x88\x01\x01\x12\x37\n\x11invoice_fallbacks\x18- \x03(\x0b\x32\x1c.cln.DecodeInvoice_fallbacks\x12\x1d\n\x10invoice_features\x18. \x01(\x0cH$\x88\x01\x01\x12\x1c\n\x0finvoice_node_id\x18/ \x01(\x0cH%\x88\x01\x01\x12(\n\x1binvoice_recurrence_basetime\x18\x30 \x01(\x04H&\x88\x01\x01\x12*\n\x1dwarning_missing_invoice_paths\x18\x32 \x01(\tH\'\x88\x01\x01\x12/\n\"warning_missing_invoice_blindedpay\x18\x33 \x01(\tH(\x88\x01\x01\x12/\n\"warning_missing_invoice_created_at\x18\x34 \x01(\tH)\x88\x01\x01\x12\x31\n$warning_missing_invoice_payment_hash\x18\x35 \x01(\tH*\x88\x01\x01\x12+\n\x1ewarning_missing_invoice_amount\x18\x36 \x01(\tH+\x88\x01\x01\x12\x38\n+warning_missing_invoice_recurrence_basetime\x18\x37 \x01(\tH,\x88\x01\x01\x12,\n\x1fwarning_missing_invoice_node_id\x18\x38 \x01(\tH-\x88\x01\x01\x12.\n!warning_missing_invoice_signature\x18\x39 \x01(\tH.\x88\x01\x01\x12.\n!warning_invalid_invoice_signature\x18: \x01(\tH/\x88\x01\x01\x12\'\n\tfallbacks\x18; \x03(\x0b\x32\x14.cln.DecodeFallbacks\x12\x17\n\ncreated_at\x18< \x01(\x04H0\x88\x01\x01\x12\x13\n\x06\x65xpiry\x18= \x01(\x04H1\x88\x01\x01\x12\x12\n\x05payee\x18> \x01(\x0cH2\x88\x01\x01\x12\x19\n\x0cpayment_hash\x18? \x01(\x0cH3\x88\x01\x01\x12\x1d\n\x10\x64\x65scription_hash\x18@ \x01(\x0cH4\x88\x01\x01\x12\"\n\x15min_final_cltv_expiry\x18\x41 \x01(\rH5\x88\x01\x01\x12\x1b\n\x0epayment_secret\x18\x42 \x01(\x0cH6\x88\x01\x01\x12\x1d\n\x10payment_metadata\x18\x43 \x01(\x0cH7\x88\x01\x01\x12\x1f\n\x05\x65xtra\x18\x45 \x03(\x0b\x32\x10.cln.DecodeExtra\x12\x16\n\tunique_id\x18\x46 \x01(\tH8\x88\x01\x01\x12\x14\n\x07version\x18G \x01(\tH9\x88\x01\x01\x12\x13\n\x06string\x18H \x01(\tH:\x88\x01\x01\x12-\n\x0crestrictions\x18I \x03(\x0b\x32\x17.cln.DecodeRestrictions\x12&\n\x19warning_rune_invalid_utf8\x18J \x01(\tH;\x88\x01\x01\x12\x10\n\x03hex\x18K \x01(\x0cH<\x88\x01\x01\x12\x16\n\tdecrypted\x18L \x01(\x0cH=\x88\x01\x01\x12\x16\n\tsignature\x18M \x01(\tH>\x88\x01\x01\x12\x15\n\x08\x63urrency\x18N \x01(\tH?\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18O \x01(\x0b\x32\x0b.cln.AmountH@\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18P \x01(\tHA\x88\x01\x01\x12\x15\n\x08\x66\x65\x61tures\x18Q \x01(\x0cHB\x88\x01\x01\x12-\n\x06routes\x18R \x01(\x0b\x32\x18.cln.DecodeRoutehintListHC\x88\x01\x01\x12\x1c\n\x0foffer_issuer_id\x18S \x01(\x0cHD\x88\x01\x01\x12,\n\x1fwarning_missing_offer_issuer_id\x18T \x01(\tHE\x88\x01\x01\x12-\n\x0cinvreq_paths\x18U \x03(\x0b\x32\x17.cln.DecodeInvreq_paths\x12\'\n\x1awarning_empty_blinded_path\x18V \x01(\tHF\x88\x01\x01\"\x83\x01\n\nDecodeType\x12\x10\n\x0c\x42OLT12_OFFER\x10\x00\x12\x12\n\x0e\x42OLT12_INVOICE\x10\x01\x12\x1a\n\x16\x42OLT12_INVOICE_REQUEST\x10\x02\x12\x12\n\x0e\x42OLT11_INVOICE\x10\x03\x12\x08\n\x04RUNE\x10\x04\x12\x15\n\x11\x45MERGENCY_RECOVER\x10\x05\x42\x0b\n\t_offer_idB\x11\n\x0f_offer_metadataB\x11\n\x0f_offer_currencyB!\n\x1f_warning_unknown_offer_currencyB\x16\n\x14_currency_minor_unitB\x0f\n\r_offer_amountB\x14\n\x12_offer_amount_msatB\x14\n\x12_offer_descriptionB\x0f\n\r_offer_issuerB\x11\n\x0f_offer_featuresB\x18\n\x16_offer_absolute_expiryB\x15\n\x13_offer_quantity_maxB\x10\n\x0e_offer_node_idB \n\x1e_warning_missing_offer_node_idB$\n\"_warning_invalid_offer_descriptionB$\n\"_warning_missing_offer_descriptionB!\n\x1f_warning_invalid_offer_currencyB\x1f\n\x1d_warning_invalid_offer_issuerB\x12\n\x10_invreq_metadataB\x12\n\x10_invreq_payer_idB\x0f\n\r_invreq_chainB\x15\n\x13_invreq_amount_msatB\x12\n\x10_invreq_featuresB\x12\n\x10_invreq_quantityB\x14\n\x12_invreq_payer_noteB\x1c\n\x1a_invreq_recurrence_counterB\x1a\n\x18_invreq_recurrence_startB\"\n _warning_missing_invreq_metadataB\"\n _warning_missing_invreq_payer_idB$\n\"_warning_invalid_invreq_payer_noteB,\n*_warning_missing_invoice_request_signatureB,\n*_warning_invalid_invoice_request_signatureB\x15\n\x13_invoice_created_atB\x1a\n\x18_invoice_relative_expiryB\x17\n\x15_invoice_payment_hashB\x16\n\x14_invoice_amount_msatB\x13\n\x11_invoice_featuresB\x12\n\x10_invoice_node_idB\x1e\n\x1c_invoice_recurrence_basetimeB \n\x1e_warning_missing_invoice_pathsB%\n#_warning_missing_invoice_blindedpayB%\n#_warning_missing_invoice_created_atB\'\n%_warning_missing_invoice_payment_hashB!\n\x1f_warning_missing_invoice_amountB.\n,_warning_missing_invoice_recurrence_basetimeB\"\n _warning_missing_invoice_node_idB$\n\"_warning_missing_invoice_signatureB$\n\"_warning_invalid_invoice_signatureB\r\n\x0b_created_atB\t\n\x07_expiryB\x08\n\x06_payeeB\x0f\n\r_payment_hashB\x13\n\x11_description_hashB\x18\n\x16_min_final_cltv_expiryB\x11\n\x0f_payment_secretB\x13\n\x11_payment_metadataB\x0c\n\n_unique_idB\n\n\x08_versionB\t\n\x07_stringB\x1c\n\x1a_warning_rune_invalid_utf8B\x06\n\x04_hexB\x0c\n\n_decryptedB\x0c\n\n_signatureB\x0b\n\t_currencyB\x0e\n\x0c_amount_msatB\x0e\n\x0c_descriptionB\x0b\n\t_featuresB\t\n\x07_routesB\x12\n\x10_offer_issuer_idB\"\n _warning_missing_offer_issuer_idB\x1d\n\x1b_warning_empty_blinded_path\"\xed\x01\n\x11\x44\x65\x63odeOffer_paths\x12\x1a\n\rfirst_node_id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x15\n\x08\x62linding\x18\x02 \x01(\x0cH\x01\x88\x01\x01\x12\x1b\n\x0e\x66irst_scid_dir\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x17\n\nfirst_scid\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\x1b\n\x0e\x66irst_path_key\x18\x06 \x01(\x0cH\x04\x88\x01\x01\x42\x10\n\x0e_first_node_idB\x0b\n\t_blindingB\x11\n\x0f_first_scid_dirB\r\n\x0b_first_scidB\x11\n\x0f_first_path_key\"\x8a\x01\n\x1f\x44\x65\x63odeOffer_recurrencePaywindow\x12\x16\n\x0eseconds_before\x18\x01 \x01(\r\x12\x15\n\rseconds_after\x18\x02 \x01(\r\x12 \n\x13proportional_amount\x18\x03 \x01(\x08H\x00\x88\x01\x01\x42\x16\n\x14_proportional_amount\"\x99\x02\n\x12\x44\x65\x63odeInvreq_paths\x12\x1b\n\x0e\x66irst_scid_dir\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x15\n\x08\x62linding\x18\x02 \x01(\x0cH\x01\x88\x01\x01\x12\x1a\n\rfirst_node_id\x18\x03 \x01(\x0cH\x02\x88\x01\x01\x12\x17\n\nfirst_scid\x18\x04 \x01(\tH\x03\x88\x01\x01\x12)\n\x04path\x18\x05 \x03(\x0b\x32\x1b.cln.DecodeInvreq_pathsPath\x12\x1b\n\x0e\x66irst_path_key\x18\x06 \x01(\x0cH\x04\x88\x01\x01\x42\x11\n\x0f_first_scid_dirB\x0b\n\t_blindingB\x10\n\x0e_first_node_idB\r\n\x0b_first_scidB\x11\n\x0f_first_path_key\"S\n\x16\x44\x65\x63odeInvreq_pathsPath\x12\x17\n\x0f\x62linded_node_id\x18\x01 \x01(\x0c\x12 \n\x18\x65ncrypted_recipient_data\x18\x02 \x01(\x0c\"T\n\x17\x44\x65\x63odeInvoice_pathsPath\x12\x17\n\x0f\x62linded_node_id\x18\x01 \x01(\x0c\x12 \n\x18\x65ncrypted_recipient_data\x18\x02 \x01(\x0c\"Y\n\x17\x44\x65\x63odeInvoice_fallbacks\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0b\n\x03hex\x18\x02 \x01(\x0c\x12\x14\n\x07\x61\x64\x64ress\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\n\n\x08_address\"\xaa\x02\n\x0f\x44\x65\x63odeFallbacks\x12\x36\n)warning_invoice_fallbacks_version_invalid\x18\x01 \x01(\tH\x00\x88\x01\x01\x12;\n\titem_type\x18\x02 \x01(\x0e\x32(.cln.DecodeFallbacks.DecodeFallbacksType\x12\x11\n\x04\x61\x64\x64r\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x0b\n\x03hex\x18\x04 \x01(\x0c\"K\n\x13\x44\x65\x63odeFallbacksType\x12\t\n\x05P2PKH\x10\x00\x12\x08\n\x04P2SH\x10\x01\x12\n\n\x06P2WPKH\x10\x02\x12\t\n\x05P2WSH\x10\x03\x12\x08\n\x04P2TR\x10\x04\x42,\n*_warning_invoice_fallbacks_version_invalidB\x07\n\x05_addr\"(\n\x0b\x44\x65\x63odeExtra\x12\x0b\n\x03tag\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\t\";\n\x12\x44\x65\x63odeRestrictions\x12\x14\n\x0c\x61lternatives\x18\x01 \x03(\t\x12\x0f\n\x07summary\x18\x02 \x01(\t\"\xc2\x01\n\rDelpayRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12/\n\x06status\x18\x02 \x01(\x0e\x32\x1f.cln.DelpayRequest.DelpayStatus\x12\x13\n\x06partid\x18\x03 \x01(\x04H\x00\x88\x01\x01\x12\x14\n\x07groupid\x18\x04 \x01(\x04H\x01\x88\x01\x01\"(\n\x0c\x44\x65lpayStatus\x12\x0c\n\x08\x43OMPLETE\x10\x00\x12\n\n\x06\x46\x41ILED\x10\x01\x42\t\n\x07_partidB\n\n\x08_groupid\"7\n\x0e\x44\x65lpayResponse\x12%\n\x08payments\x18\x01 \x03(\x0b\x32\x13.cln.DelpayPayments\"\xcb\x05\n\x0e\x44\x65lpayPayments\x12\x1a\n\rcreated_index\x18\x01 \x01(\x04H\x00\x88\x01\x01\x12\n\n\x02id\x18\x02 \x01(\x04\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x38\n\x06status\x18\x04 \x01(\x0e\x32(.cln.DelpayPayments.DelpayPaymentsStatus\x12%\n\x10\x61mount_sent_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12\x13\n\x06partid\x18\x06 \x01(\x04H\x01\x88\x01\x01\x12\x18\n\x0b\x64\x65stination\x18\x07 \x01(\x0cH\x02\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\x08 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x12\n\ncreated_at\x18\t \x01(\x04\x12\x1a\n\rupdated_index\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x19\n\x0c\x63ompleted_at\x18\x0b \x01(\x04H\x05\x88\x01\x01\x12\x14\n\x07groupid\x18\x0c \x01(\x04H\x06\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\r \x01(\x0cH\x07\x88\x01\x01\x12\x12\n\x05label\x18\x0e \x01(\tH\x08\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x0f \x01(\tH\t\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x10 \x01(\tH\n\x88\x01\x01\x12\x17\n\nerroronion\x18\x11 \x01(\x0cH\x0b\x88\x01\x01\"=\n\x14\x44\x65lpayPaymentsStatus\x12\x0b\n\x07PENDING\x10\x00\x12\n\n\x06\x46\x41ILED\x10\x01\x12\x0c\n\x08\x43OMPLETE\x10\x02\x42\x10\n\x0e_created_indexB\t\n\x07_partidB\x0e\n\x0c_destinationB\x0e\n\x0c_amount_msatB\x10\n\x0e_updated_indexB\x0f\n\r_completed_atB\n\n\x08_groupidB\x13\n\x11_payment_preimageB\x08\n\x06_labelB\t\n\x07_bolt11B\t\n\x07_bolt12B\r\n\x0b_erroronion\"\xb3\x01\n\x11\x44\x65lforwardRequest\x12\x12\n\nin_channel\x18\x01 \x01(\t\x12\x12\n\nin_htlc_id\x18\x02 \x01(\x04\x12\x37\n\x06status\x18\x03 \x01(\x0e\x32\'.cln.DelforwardRequest.DelforwardStatus\"=\n\x10\x44\x65lforwardStatus\x12\x0b\n\x07SETTLED\x10\x00\x12\x10\n\x0cLOCAL_FAILED\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\"\x14\n\x12\x44\x65lforwardResponse\"\'\n\x13\x44isableofferRequest\x12\x10\n\x08offer_id\x18\x01 \x01(\x0c\"\x88\x01\n\x14\x44isableofferResponse\x12\x10\n\x08offer_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61\x63tive\x18\x02 \x01(\x08\x12\x12\n\nsingle_use\x18\x03 \x01(\x08\x12\x0e\n\x06\x62olt12\x18\x04 \x01(\t\x12\x0c\n\x04used\x18\x05 \x01(\x08\x12\x12\n\x05label\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_label\"=\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\"\x9c\x02\n\x10\x46\x65\x65ratesResponse\x12%\n\x18warning_missing_feerates\x18\x01 \x01(\tH\x00\x88\x01\x01\x12&\n\x05perkb\x18\x02 \x01(\x0b\x32\x12.cln.FeeratesPerkbH\x01\x88\x01\x01\x12&\n\x05perkw\x18\x03 \x01(\x0b\x32\x12.cln.FeeratesPerkwH\x02\x88\x01\x01\x12\x46\n\x15onchain_fee_estimates\x18\x04 \x01(\x0b\x32\".cln.FeeratesOnchain_fee_estimatesH\x03\x88\x01\x01\x42\x1b\n\x19_warning_missing_feeratesB\x08\n\x06_perkbB\x08\n\x06_perkwB\x18\n\x16_onchain_fee_estimates\"\xd3\x03\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\x12.\n\testimates\x18\t \x03(\x0b\x32\x1b.cln.FeeratesPerkbEstimates\x12\x12\n\x05\x66loor\x18\n \x01(\rH\x06\x88\x01\x01\x12$\n\x17unilateral_anchor_close\x18\x0b \x01(\rH\x07\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_penaltyB\x08\n\x06_floorB\x1a\n\x18_unilateral_anchor_close\"W\n\x16\x46\x65\x65ratesPerkbEstimates\x12\x12\n\nblockcount\x18\x01 \x01(\r\x12\x0f\n\x07\x66\x65\x65rate\x18\x02 \x01(\r\x12\x18\n\x10smoothed_feerate\x18\x03 \x01(\r\"\xd3\x03\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\x12.\n\testimates\x18\t \x03(\x0b\x32\x1b.cln.FeeratesPerkwEstimates\x12\x12\n\x05\x66loor\x18\n \x01(\rH\x06\x88\x01\x01\x12$\n\x17unilateral_anchor_close\x18\x0b \x01(\rH\x07\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_penaltyB\x08\n\x06_floorB\x1a\n\x18_unilateral_anchor_close\"W\n\x16\x46\x65\x65ratesPerkwEstimates\x12\x12\n\nblockcount\x18\x01 \x01(\r\x12\x0f\n\x07\x66\x65\x65rate\x18\x02 \x01(\r\x12\x18\n\x10smoothed_feerate\x18\x03 \x01(\r\"\x9b\x02\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\x12\x30\n#unilateral_close_nonanchor_satoshis\x18\x06 \x01(\x04H\x00\x88\x01\x01\x42&\n$_unilateral_close_nonanchor_satoshis\"\xe9\x02\n\x13\x46\x65tchinvoiceRequest\x12\r\n\x05offer\x18\x01 \x01(\t\x12%\n\x0b\x61mount_msat\x18\x02 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x15\n\x08quantity\x18\x03 \x01(\x04H\x01\x88\x01\x01\x12\x1f\n\x12recurrence_counter\x18\x04 \x01(\x04H\x02\x88\x01\x01\x12\x1d\n\x10recurrence_start\x18\x05 \x01(\x01H\x03\x88\x01\x01\x12\x1d\n\x10recurrence_label\x18\x06 \x01(\tH\x04\x88\x01\x01\x12\x14\n\x07timeout\x18\x07 \x01(\x01H\x05\x88\x01\x01\x12\x17\n\npayer_note\x18\x08 \x01(\tH\x06\x88\x01\x01\x42\x0e\n\x0c_amount_msatB\x0b\n\t_quantityB\x15\n\x13_recurrence_counterB\x13\n\x11_recurrence_startB\x13\n\x11_recurrence_labelB\n\n\x08_timeoutB\r\n\x0b_payer_note\"\x9a\x01\n\x14\x46\x65tchinvoiceResponse\x12\x0f\n\x07invoice\x18\x01 \x01(\t\x12)\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x18.cln.FetchinvoiceChanges\x12\x36\n\x0bnext_period\x18\x03 \x01(\x0b\x32\x1c.cln.FetchinvoiceNext_periodH\x00\x88\x01\x01\x42\x0e\n\x0c_next_period\"\x82\x02\n\x13\x46\x65tchinvoiceChanges\x12!\n\x14\x64\x65scription_appended\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1b\n\x0evendor_removed\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x13\n\x06vendor\x18\x04 \x01(\tH\x03\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x42\x17\n\x15_description_appendedB\x0e\n\x0c_descriptionB\x11\n\x0f_vendor_removedB\t\n\x07_vendorB\x0e\n\x0c_amount_msat\"~\n\x17\x46\x65tchinvoiceNext_period\x12\x0f\n\x07\x63ounter\x18\x01 \x01(\x04\x12\x11\n\tstarttime\x18\x02 \x01(\x04\x12\x0f\n\x07\x65ndtime\x18\x03 \x01(\x04\x12\x17\n\x0fpaywindow_start\x18\x04 \x01(\x04\x12\x15\n\rpaywindow_end\x18\x05 \x01(\x04\"\'\n\x19\x46undchannel_cancelRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\"/\n\x1a\x46undchannel_cancelResponse\x12\x11\n\tcancelled\x18\x01 \x01(\t\"7\n\x1b\x46undchannel_completeRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x0c\n\x04psbt\x18\x02 \x01(\t\"O\n\x1c\x46undchannel_completeResponse\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x1b\n\x13\x63ommitments_secured\x18\x02 \x01(\x08\"\xfb\x03\n\x12\x46undchannelRequest\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#\n\tpush_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12\x15\n\x08\x63lose_to\x18\x06 \x01(\tH\x03\x88\x01\x01\x12%\n\x0brequest_amt\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12\x1a\n\rcompact_lease\x18\x08 \x01(\tH\x05\x88\x01\x01\x12\n\n\x02id\x18\t \x01(\x0c\x12\x14\n\x07minconf\x18\n \x01(\rH\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\x12\x14\n\x0c\x63hannel_type\x18\x0e \x03(\rB\n\n\x08_feerateB\x0b\n\t_announceB\x0c\n\n_push_msatB\x0b\n\t_close_toB\x0e\n\x0c_request_amtB\x10\n\x0e_compact_leaseB\n\n\x08_minconfB\x0b\n\t_mindepthB\n\n\x08_reserve\"\xe5\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\x12\x37\n\x0c\x63hannel_type\x18\x07 \x01(\x0b\x32\x1c.cln.FundchannelChannel_typeH\x02\x88\x01\x01\x42\x0b\n\t_close_toB\x0b\n\t_mindepthB\x0f\n\r_channel_type\"L\n\x17\x46undchannelChannel_type\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"\xd7\x02\n\x18\x46undchannel_startRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x1b\n\x06\x61mount\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\"\n\x07\x66\x65\x65rate\x18\x03 \x01(\x0b\x32\x0c.cln.FeerateH\x00\x88\x01\x01\x12\x15\n\x08\x61nnounce\x18\x04 \x01(\x08H\x01\x88\x01\x01\x12\x15\n\x08\x63lose_to\x18\x05 \x01(\tH\x02\x88\x01\x01\x12#\n\tpush_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x15\n\x08mindepth\x18\x07 \x01(\rH\x04\x88\x01\x01\x12!\n\x07reserve\x18\x08 \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x14\n\x0c\x63hannel_type\x18\t \x03(\rB\n\n\x08_feerateB\x0b\n\t_announceB\x0b\n\t_close_toB\x0c\n\n_push_msatB\x0b\n\t_mindepthB\n\n\x08_reserve\"\xf9\x01\n\x19\x46undchannel_startResponse\x12\x17\n\x0f\x66unding_address\x18\x01 \x01(\t\x12\x14\n\x0cscriptpubkey\x18\x02 \x01(\x0c\x12=\n\x0c\x63hannel_type\x18\x03 \x01(\x0b\x32\".cln.Fundchannel_startChannel_typeH\x00\x88\x01\x01\x12\x15\n\x08\x63lose_to\x18\x04 \x01(\x0cH\x01\x88\x01\x01\x12\x15\n\rwarning_usage\x18\x05 \x01(\t\x12\x15\n\x08mindepth\x18\x06 \x01(\rH\x02\x88\x01\x01\x42\x0f\n\r_channel_typeB\x0b\n\t_close_toB\x0b\n\t_mindepth\"R\n\x1d\x46undchannel_startChannel_type\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"\x9d\x01\n\rGetlogRequest\x12\x32\n\x05level\x18\x01 \x01(\x0e\x32\x1e.cln.GetlogRequest.GetlogLevelH\x00\x88\x01\x01\"N\n\x0bGetlogLevel\x12\n\n\x06\x42ROKEN\x10\x00\x12\x0b\n\x07UNUSUAL\x10\x01\x12\x08\n\x04INFO\x10\x02\x12\t\n\x05\x44\x45\x42UG\x10\x03\x12\x06\n\x02IO\x10\x04\x12\t\n\x05TRACE\x10\x05\x42\x08\n\x06_level\"h\n\x0eGetlogResponse\x12\x12\n\ncreated_at\x18\x01 \x01(\t\x12\x12\n\nbytes_used\x18\x02 \x01(\r\x12\x11\n\tbytes_max\x18\x03 \x01(\r\x12\x1b\n\x03log\x18\x04 \x03(\x0b\x32\x0e.cln.GetlogLog\"\xe8\x02\n\tGetlogLog\x12/\n\titem_type\x18\x01 \x01(\x0e\x32\x1c.cln.GetlogLog.GetlogLogType\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\"l\n\rGetlogLogType\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\x12\t\n\x05TRACE\x10\x07\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\"\xd9\x08\n\x13\x46underupdateRequest\x12@\n\x06policy\x18\x01 \x01(\x0e\x32+.cln.FunderupdateRequest.FunderupdatePolicyH\x00\x88\x01\x01\x12$\n\npolicy_mod\x18\x02 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\x18\n\x0bleases_only\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x30\n\x16min_their_funding_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x30\n\x16max_their_funding_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12.\n\x14per_channel_min_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12.\n\x14per_channel_max_msat\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x06\x88\x01\x01\x12+\n\x11reserve_tank_msat\x18\x08 \x01(\x0b\x32\x0b.cln.AmountH\x07\x88\x01\x01\x12\x19\n\x0c\x66uzz_percent\x18\t \x01(\rH\x08\x88\x01\x01\x12\x1d\n\x10\x66und_probability\x18\n \x01(\rH\t\x88\x01\x01\x12-\n\x13lease_fee_base_msat\x18\x0b \x01(\x0b\x32\x0b.cln.AmountH\n\x88\x01\x01\x12\x1c\n\x0flease_fee_basis\x18\x0c \x01(\rH\x0b\x88\x01\x01\x12\x1b\n\x0e\x66unding_weight\x18\r \x01(\rH\x0c\x88\x01\x01\x12\x33\n\x19\x63hannel_fee_max_base_msat\x18\x0e \x01(\x0b\x32\x0b.cln.AmountH\r\x88\x01\x01\x12\x35\n(channel_fee_max_proportional_thousandths\x18\x0f \x01(\rH\x0e\x88\x01\x01\x12\x1a\n\rcompact_lease\x18\x10 \x01(\x0cH\x0f\x88\x01\x01\"9\n\x12\x46underupdatePolicy\x12\t\n\x05MATCH\x10\x00\x12\r\n\tAVAILABLE\x10\x01\x12\t\n\x05\x46IXED\x10\x02\x42\t\n\x07_policyB\r\n\x0b_policy_modB\x0e\n\x0c_leases_onlyB\x19\n\x17_min_their_funding_msatB\x19\n\x17_max_their_funding_msatB\x17\n\x15_per_channel_min_msatB\x17\n\x15_per_channel_max_msatB\x14\n\x12_reserve_tank_msatB\x0f\n\r_fuzz_percentB\x13\n\x11_fund_probabilityB\x16\n\x14_lease_fee_base_msatB\x12\n\x10_lease_fee_basisB\x11\n\x0f_funding_weightB\x1c\n\x1a_channel_fee_max_base_msatB+\n)_channel_fee_max_proportional_thousandthsB\x10\n\x0e_compact_lease\"\xdf\x06\n\x14\x46underupdateResponse\x12\x0f\n\x07summary\x18\x01 \x01(\t\x12<\n\x06policy\x18\x02 \x01(\x0e\x32,.cln.FunderupdateResponse.FunderupdatePolicy\x12\x12\n\npolicy_mod\x18\x03 \x01(\r\x12\x13\n\x0bleases_only\x18\x04 \x01(\x08\x12+\n\x16min_their_funding_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12+\n\x16max_their_funding_msat\x18\x06 \x01(\x0b\x32\x0b.cln.Amount\x12)\n\x14per_channel_min_msat\x18\x07 \x01(\x0b\x32\x0b.cln.Amount\x12)\n\x14per_channel_max_msat\x18\x08 \x01(\x0b\x32\x0b.cln.Amount\x12&\n\x11reserve_tank_msat\x18\t \x01(\x0b\x32\x0b.cln.Amount\x12\x14\n\x0c\x66uzz_percent\x18\n \x01(\r\x12\x18\n\x10\x66und_probability\x18\x0b \x01(\r\x12-\n\x13lease_fee_base_msat\x18\x0c \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x1c\n\x0flease_fee_basis\x18\r \x01(\rH\x01\x88\x01\x01\x12\x1b\n\x0e\x66unding_weight\x18\x0e \x01(\rH\x02\x88\x01\x01\x12\x33\n\x19\x63hannel_fee_max_base_msat\x18\x0f \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x35\n(channel_fee_max_proportional_thousandths\x18\x10 \x01(\rH\x04\x88\x01\x01\x12\x1a\n\rcompact_lease\x18\x11 \x01(\x0cH\x05\x88\x01\x01\"9\n\x12\x46underupdatePolicy\x12\t\n\x05MATCH\x10\x00\x12\r\n\tAVAILABLE\x10\x01\x12\t\n\x05\x46IXED\x10\x02\x42\x16\n\x14_lease_fee_base_msatB\x12\n\x10_lease_fee_basisB\x11\n\x0f_funding_weightB\x1c\n\x1a_channel_fee_max_base_msatB+\n)_channel_fee_max_proportional_thousandthsB\x10\n\x0e_compact_lease\"\xec\x01\n\x0fGetrouteRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x12\n\nriskfactor\x18\x03 \x01(\x04\x12\x11\n\x04\x63ltv\x18\x04 \x01(\rH\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\x12 \n\x0b\x61mount_msat\x18\t \x01(\x0b\x32\x0b.cln.AmountB\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\"\xc5\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 \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\"\xb7\x03\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\x12>\n\x05index\x18\x04 \x01(\x0e\x32*.cln.ListforwardsRequest.ListforwardsIndexH\x03\x88\x01\x01\x12\x12\n\x05start\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12\x12\n\x05limit\x18\x06 \x01(\rH\x05\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\"-\n\x11ListforwardsIndex\x12\x0b\n\x07\x43REATED\x10\x00\x12\x0b\n\x07UPDATED\x10\x01\x42\t\n\x07_statusB\r\n\x0b_in_channelB\x0e\n\x0c_out_channelB\x08\n\x06_indexB\x08\n\x06_startB\x08\n\x06_limit\"C\n\x14ListforwardsResponse\x12+\n\x08\x66orwards\x18\x01 \x03(\x0b\x32\x19.cln.ListforwardsForwards\"\xb4\x06\n\x14ListforwardsForwards\x12\x12\n\nin_channel\x18\x01 \x01(\t\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\x00\x88\x01\x01\x12\"\n\x08\x66\x65\x65_msat\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\"\n\x08out_msat\x18\x08 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12G\n\x05style\x18\t \x01(\x0e\x32\x33.cln.ListforwardsForwards.ListforwardsForwardsStyleH\x03\x88\x01\x01\x12\x17\n\nin_htlc_id\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x18\n\x0bout_htlc_id\x18\x0b \x01(\x04H\x05\x88\x01\x01\x12\x1a\n\rcreated_index\x18\x0c \x01(\x04H\x06\x88\x01\x01\x12\x1a\n\rupdated_index\x18\r \x01(\x04H\x07\x88\x01\x01\x12\x1a\n\rresolved_time\x18\x0e \x01(\x01H\x08\x88\x01\x01\x12\x15\n\x08\x66\x61ilcode\x18\x0f \x01(\rH\t\x88\x01\x01\x12\x17\n\nfailreason\x18\x10 \x01(\tH\n\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\x0e\n\x0c_out_channelB\x0b\n\t_fee_msatB\x0b\n\t_out_msatB\x08\n\x06_styleB\r\n\x0b_in_htlc_idB\x0e\n\x0c_out_htlc_idB\x10\n\x0e_created_indexB\x10\n\x0e_updated_indexB\x10\n\x0e_resolved_timeB\x0b\n\t_failcodeB\r\n\x0b_failreason\"a\n\x11ListoffersRequest\x12\x15\n\x08offer_id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x18\n\x0b\x61\x63tive_only\x18\x02 \x01(\x08H\x01\x88\x01\x01\x42\x0b\n\t_offer_idB\x0e\n\x0c_active_only\";\n\x12ListoffersResponse\x12%\n\x06offers\x18\x01 \x03(\x0b\x32\x15.cln.ListoffersOffers\"\x84\x01\n\x10ListoffersOffers\x12\x10\n\x08offer_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61\x63tive\x18\x02 \x01(\x08\x12\x12\n\nsingle_use\x18\x03 \x01(\x08\x12\x0e\n\x06\x62olt12\x18\x04 \x01(\t\x12\x0c\n\x04used\x18\x05 \x01(\x08\x12\x12\n\x05label\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_label\"\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\"\xff\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\x12\n\x05label\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x06 \x01(\tH\x02\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x07 \x01(\tH\x03\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\x08 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12*\n\x10\x61mount_sent_msat\x18\t \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x17\n\nerroronion\x18\n \x01(\x0cH\x06\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x0b \x01(\tH\x07\x88\x01\x01\x12\x19\n\x0c\x63ompleted_at\x18\x0c \x01(\x04H\x08\x88\x01\x01\x12\x15\n\x08preimage\x18\r \x01(\x0cH\t\x88\x01\x01\x12\x1c\n\x0fnumber_of_parts\x18\x0e \x01(\x04H\n\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\x08\n\x06_labelB\t\n\x07_bolt11B\t\n\x07_bolt12B\x0e\n\x0c_amount_msatB\x13\n\x11_amount_sent_msatB\r\n\x0b_erroronionB\x0e\n\x0c_descriptionB\x0f\n\r_completed_atB\x0b\n\t_preimageB\x12\n\x10_number_of_parts\"*\n\x10ListhtlcsRequest\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x05\n\x03_id\"7\n\x11ListhtlcsResponse\x12\"\n\x05htlcs\x18\x01 \x03(\x0b\x32\x13.cln.ListhtlcsHtlcs\"\x89\x02\n\x0eListhtlcsHtlcs\x12\x18\n\x10short_channel_id\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\x04\x12\x0e\n\x06\x65xpiry\x18\x03 \x01(\r\x12 \n\x0b\x61mount_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12>\n\tdirection\x18\x05 \x01(\x0e\x32+.cln.ListhtlcsHtlcs.ListhtlcsHtlcsDirection\x12\x14\n\x0cpayment_hash\x18\x06 \x01(\x0c\x12\x1d\n\x05state\x18\x07 \x01(\x0e\x32\x0e.cln.HtlcState\"*\n\x17ListhtlcsHtlcsDirection\x12\x07\n\x03OUT\x10\x00\x12\x06\n\x02IN\x10\x01\"\xb2\x02\n\x17MultifundchannelRequest\x12\x37\n\x0c\x64\x65stinations\x18\x01 \x03(\x0b\x32!.cln.MultifundchannelDestinations\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(\x12H\x01\x88\x01\x01\x12\x1c\n\x05utxos\x18\x04 \x03(\x0b\x32\r.cln.Outpoint\x12\x18\n\x0bminchannels\x18\x05 \x01(\x12H\x02\x88\x01\x01\x12-\n\x12\x63ommitment_feerate\x18\x06 \x01(\x0b\x32\x0c.cln.FeerateH\x03\x88\x01\x01\x42\n\n\x08_feerateB\n\n\x08_minconfB\x0e\n\x0c_minchannelsB\x15\n\x13_commitment_feerate\"\x98\x01\n\x18MultifundchannelResponse\x12\n\n\x02tx\x18\x01 \x01(\x0c\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\x12\x35\n\x0b\x63hannel_ids\x18\x03 \x03(\x0b\x32 .cln.MultifundchannelChannel_ids\x12+\n\x06\x66\x61iled\x18\x04 \x03(\x0b\x32\x1b.cln.MultifundchannelFailed\"\xff\x02\n\x1cMultifundchannelDestinations\x12\n\n\x02id\x18\x01 \x01(\t\x12 \n\x06\x61mount\x18\x02 \x01(\x0b\x32\x10.cln.AmountOrAll\x12\x15\n\x08\x61nnounce\x18\x03 \x01(\x08H\x00\x88\x01\x01\x12#\n\tpush_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\x15\n\x08\x63lose_to\x18\x05 \x01(\tH\x02\x88\x01\x01\x12%\n\x0brequest_amt\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x1a\n\rcompact_lease\x18\x07 \x01(\tH\x04\x88\x01\x01\x12\x15\n\x08mindepth\x18\x08 \x01(\rH\x05\x88\x01\x01\x12!\n\x07reserve\x18\t \x01(\x0b\x32\x0b.cln.AmountH\x06\x88\x01\x01\x42\x0b\n\t_announceB\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\"\xcb\x01\n\x1bMultifundchannelChannel_ids\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x0e\n\x06outnum\x18\x02 \x01(\r\x12\x12\n\nchannel_id\x18\x03 \x01(\x0c\x12G\n\x0c\x63hannel_type\x18\x04 \x01(\x0b\x32,.cln.MultifundchannelChannel_idsChannel_typeH\x00\x88\x01\x01\x12\x15\n\x08\x63lose_to\x18\x05 \x01(\x0cH\x01\x88\x01\x01\x42\x0f\n\r_channel_typeB\x0b\n\t_close_to\"\\\n\'MultifundchannelChannel_idsChannel_type\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"\x93\x02\n\x16MultifundchannelFailed\x12\n\n\x02id\x18\x01 \x01(\x0c\x12H\n\x06method\x18\x02 \x01(\x0e\x32\x38.cln.MultifundchannelFailed.MultifundchannelFailedMethod\x12/\n\x05\x65rror\x18\x03 \x01(\x0b\x32 .cln.MultifundchannelFailedError\"r\n\x1cMultifundchannelFailedMethod\x12\x0b\n\x07\x43ONNECT\x10\x00\x12\x14\n\x10OPENCHANNEL_INIT\x10\x01\x12\x15\n\x11\x46UNDCHANNEL_START\x10\x02\x12\x18\n\x14\x46UNDCHANNEL_COMPLETE\x10\x03\"<\n\x1bMultifundchannelFailedError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x12\x12\x0f\n\x07message\x18\x02 \x01(\t\"\xa8\x01\n\x14MultiwithdrawRequest\x12 \n\x07outputs\x18\x01 \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\"1\n\x15MultiwithdrawResponse\x12\n\n\x02tx\x18\x01 \x01(\x0c\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\"\xa0\x04\n\x0cOfferRequest\x12\x0e\n\x06\x61mount\x18\x01 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06issuer\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05label\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x19\n\x0cquantity_max\x18\x05 \x01(\x04H\x03\x88\x01\x01\x12\x1c\n\x0f\x61\x62solute_expiry\x18\x06 \x01(\x04H\x04\x88\x01\x01\x12\x17\n\nrecurrence\x18\x07 \x01(\tH\x05\x88\x01\x01\x12\x1c\n\x0frecurrence_base\x18\x08 \x01(\tH\x06\x88\x01\x01\x12!\n\x14recurrence_paywindow\x18\t \x01(\tH\x07\x88\x01\x01\x12\x1d\n\x10recurrence_limit\x18\n \x01(\rH\x08\x88\x01\x01\x12\x17\n\nsingle_use\x18\x0b \x01(\x08H\t\x88\x01\x01\x12(\n\x1brecurrence_start_any_period\x18\x0c \x01(\x08H\n\x88\x01\x01\x42\x0e\n\x0c_descriptionB\t\n\x07_issuerB\x08\n\x06_labelB\x0f\n\r_quantity_maxB\x12\n\x10_absolute_expiryB\r\n\x0b_recurrenceB\x12\n\x10_recurrence_baseB\x17\n\x15_recurrence_paywindowB\x13\n\x11_recurrence_limitB\r\n\x0b_single_useB\x1e\n\x1c_recurrence_start_any_period\"\x92\x01\n\rOfferResponse\x12\x10\n\x08offer_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61\x63tive\x18\x02 \x01(\x08\x12\x12\n\nsingle_use\x18\x03 \x01(\x08\x12\x0e\n\x06\x62olt12\x18\x04 \x01(\t\x12\x0c\n\x04used\x18\x05 \x01(\x08\x12\x0f\n\x07\x63reated\x18\x06 \x01(\x08\x12\x12\n\x05label\x18\x07 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_label\".\n\x18Openchannel_abortRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\"Y\n\x19Openchannel_abortResponse\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x18\n\x10\x63hannel_canceled\x18\x02 \x01(\x08\x12\x0e\n\x06reason\x18\x03 \x01(\t\"\x9f\x01\n\x17Openchannel_bumpRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x13\n\x0binitialpsbt\x18\x02 \x01(\t\x12*\n\x0f\x66unding_feerate\x18\x03 \x01(\x0b\x32\x0c.cln.FeerateH\x00\x88\x01\x01\x12\x1b\n\x06\x61mount\x18\x04 \x01(\x0b\x32\x0b.cln.AmountB\x12\n\x10_funding_feerate\"\x86\x02\n\x18Openchannel_bumpResponse\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12<\n\x0c\x63hannel_type\x18\x02 \x01(\x0b\x32!.cln.Openchannel_bumpChannel_typeH\x00\x88\x01\x01\x12\x0c\n\x04psbt\x18\x03 \x01(\t\x12\x1b\n\x13\x63ommitments_secured\x18\x04 \x01(\x08\x12\x16\n\x0e\x66unding_serial\x18\x05 \x01(\x04\x12&\n\x19requires_confirmed_inputs\x18\x06 \x01(\x08H\x01\x88\x01\x01\x42\x0f\n\r_channel_typeB\x1c\n\x1a_requires_confirmed_inputs\"Q\n\x1cOpenchannel_bumpChannel_type\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"\xa0\x03\n\x17Openchannel_initRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x13\n\x0binitialpsbt\x18\x02 \x01(\t\x12-\n\x12\x63ommitment_feerate\x18\x03 \x01(\x0b\x32\x0c.cln.FeerateH\x00\x88\x01\x01\x12*\n\x0f\x66unding_feerate\x18\x04 \x01(\x0b\x32\x0c.cln.FeerateH\x01\x88\x01\x01\x12\x15\n\x08\x61nnounce\x18\x05 \x01(\x08H\x02\x88\x01\x01\x12\x15\n\x08\x63lose_to\x18\x06 \x01(\tH\x03\x88\x01\x01\x12%\n\x0brequest_amt\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12\x1a\n\rcompact_lease\x18\x08 \x01(\x0cH\x05\x88\x01\x01\x12\x14\n\x0c\x63hannel_type\x18\t \x03(\r\x12\x1b\n\x06\x61mount\x18\n \x01(\x0b\x32\x0b.cln.AmountB\x15\n\x13_commitment_feerateB\x12\n\x10_funding_feerateB\x0b\n\t_announceB\x0b\n\t_close_toB\x0e\n\x0c_request_amtB\x10\n\x0e_compact_lease\"\x86\x02\n\x18Openchannel_initResponse\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x0c\n\x04psbt\x18\x02 \x01(\t\x12<\n\x0c\x63hannel_type\x18\x03 \x01(\x0b\x32!.cln.Openchannel_initChannel_typeH\x00\x88\x01\x01\x12\x1b\n\x13\x63ommitments_secured\x18\x04 \x01(\x08\x12\x16\n\x0e\x66unding_serial\x18\x05 \x01(\x04\x12&\n\x19requires_confirmed_inputs\x18\x06 \x01(\x08H\x01\x88\x01\x01\x42\x0f\n\r_channel_typeB\x1c\n\x1a_requires_confirmed_inputs\"Q\n\x1cOpenchannel_initChannel_type\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"D\n\x19Openchannel_signedRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x13\n\x0bsigned_psbt\x18\x02 \x01(\t\"J\n\x1aOpenchannel_signedResponse\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\n\n\x02tx\x18\x02 \x01(\x0c\x12\x0c\n\x04txid\x18\x03 \x01(\x0c\"=\n\x19Openchannel_updateRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x0c\n\x04psbt\x18\x02 \x01(\t\"\xae\x02\n\x1aOpenchannel_updateResponse\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12>\n\x0c\x63hannel_type\x18\x02 \x01(\x0b\x32#.cln.Openchannel_updateChannel_typeH\x00\x88\x01\x01\x12\x0c\n\x04psbt\x18\x03 \x01(\t\x12\x1b\n\x13\x63ommitments_secured\x18\x04 \x01(\x08\x12\x16\n\x0e\x66unding_outnum\x18\x05 \x01(\r\x12\x15\n\x08\x63lose_to\x18\x06 \x01(\x0cH\x01\x88\x01\x01\x12&\n\x19requires_confirmed_inputs\x18\x07 \x01(\x08H\x02\x88\x01\x01\x42\x0f\n\r_channel_typeB\x0b\n\t_close_toB\x1c\n\x1a_requires_confirmed_inputs\"S\n\x1eOpenchannel_updateChannel_type\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"Y\n\x0bPingRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x10\n\x03len\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x16\n\tpongbytes\x18\x03 \x01(\rH\x01\x88\x01\x01\x42\x06\n\x04_lenB\x0c\n\n_pongbytes\"\x1e\n\x0cPingResponse\x12\x0e\n\x06totlen\x18\x01 \x01(\r\"\x91\x01\n\rPluginRequest\x12)\n\nsubcommand\x18\x01 \x01(\x0e\x32\x15.cln.PluginSubcommand\x12\x13\n\x06plugin\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tdirectory\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x0f\n\x07options\x18\x04 \x03(\tB\t\n\x07_pluginB\x0c\n\n_directory\"}\n\x0ePluginResponse\x12&\n\x07\x63ommand\x18\x01 \x01(\x0e\x32\x15.cln.PluginSubcommand\x12#\n\x07plugins\x18\x02 \x03(\x0b\x32\x12.cln.PluginPlugins\x12\x13\n\x06result\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\t\n\x07_result\">\n\rPluginPlugins\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06\x61\x63tive\x18\x02 \x01(\x08\x12\x0f\n\x07\x64ynamic\x18\x03 \x01(\x08\"<\n\x14RenepaystatusRequest\x12\x16\n\tinvstring\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_invstring\"G\n\x15RenepaystatusResponse\x12.\n\tpaystatus\x18\x01 \x03(\x0b\x32\x1b.cln.RenepaystatusPaystatus\"\xe2\x03\n\x16RenepaystatusPaystatus\x12\x0e\n\x06\x62olt11\x18\x01 \x01(\t\x12\x1d\n\x10payment_preimage\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\x0f\n\x07groupid\x18\x05 \x01(\r\x12\x12\n\x05parts\x18\x06 \x01(\rH\x01\x88\x01\x01\x12 \n\x0b\x61mount_msat\x18\x07 \x01(\x0b\x32\x0b.cln.Amount\x12*\n\x10\x61mount_sent_msat\x18\x08 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12H\n\x06status\x18\t \x01(\x0e\x32\x38.cln.RenepaystatusPaystatus.RenepaystatusPaystatusStatus\x12\x18\n\x0b\x64\x65stination\x18\n \x01(\x0cH\x03\x88\x01\x01\x12\r\n\x05notes\x18\x0b \x03(\t\"E\n\x1cRenepaystatusPaystatusStatus\x12\x0c\n\x08\x43OMPLETE\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\x42\x13\n\x11_payment_preimageB\x08\n\x06_partsB\x13\n\x11_amount_sent_msatB\x0e\n\x0c_destination\"\xda\x02\n\x0eRenepayRequest\x12\x11\n\tinvstring\x18\x01 \x01(\t\x12%\n\x0b\x61mount_msat\x18\x02 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12 \n\x06maxfee\x18\x03 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\x15\n\x08maxdelay\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x16\n\tretry_for\x18\x05 \x01(\rH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x06 \x01(\tH\x04\x88\x01\x01\x12\x12\n\x05label\x18\x07 \x01(\tH\x05\x88\x01\x01\x12\x1b\n\x0e\x64\x65v_use_shadow\x18\x08 \x01(\x08H\x06\x88\x01\x01\x12\x0f\n\x07\x65xclude\x18\t \x03(\tB\x0e\n\x0c_amount_msatB\t\n\x07_maxfeeB\x0b\n\t_maxdelayB\x0c\n\n_retry_forB\x0e\n\x0c_descriptionB\x08\n\x06_labelB\x11\n\x0f_dev_use_shadow\"\xc3\x02\n\x0fRenepayResponse\x12\x18\n\x10payment_preimage\x18\x01 \x01(\x0c\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\x0c\x12\x12\n\ncreated_at\x18\x03 \x01(\x01\x12\r\n\x05parts\x18\x04 \x01(\r\x12 \n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12%\n\x10\x61mount_sent_msat\x18\x06 \x01(\x0b\x32\x0b.cln.Amount\x12\x32\n\x06status\x18\x07 \x01(\x0e\x32\".cln.RenepayResponse.RenepayStatus\x12\x18\n\x0b\x64\x65stination\x18\x08 \x01(\x0cH\x00\x88\x01\x01\"6\n\rRenepayStatus\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_destination\"l\n\x14ReserveinputsRequest\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x16\n\texclusive\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12\x14\n\x07reserve\x18\x03 \x01(\rH\x01\x88\x01\x01\x42\x0c\n\n_exclusiveB\n\n\x08_reserve\"M\n\x15ReserveinputsResponse\x12\x34\n\x0creservations\x18\x01 \x03(\x0b\x32\x1e.cln.ReserveinputsReservations\"z\n\x19ReserveinputsReservations\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\"4\n\x14SendcustommsgRequest\x12\x0f\n\x07node_id\x18\x01 \x01(\x0c\x12\x0b\n\x03msg\x18\x02 \x01(\x0c\"\'\n\x15SendcustommsgResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\"\xb0\x01\n\x12SendinvoiceRequest\x12\x0e\n\x06invreq\x18\x01 \x01(\t\x12\r\n\x05label\x18\x02 \x01(\t\x12%\n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x14\n\x07timeout\x18\x04 \x01(\rH\x01\x88\x01\x01\x12\x15\n\x08quantity\x18\x05 \x01(\x04H\x02\x88\x01\x01\x42\x0e\n\x0c_amount_msatB\n\n\x08_timeoutB\x0b\n\t_quantity\"\xcf\x04\n\x13SendinvoiceResponse\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.SendinvoiceResponse.SendinvoiceStatus\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\x62olt12\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\rcreated_index\x18\x08 \x01(\x04H\x02\x88\x01\x01\x12\x1a\n\rupdated_index\x18\t \x01(\x04H\x03\x88\x01\x01\x12\x16\n\tpay_index\x18\n \x01(\x04H\x04\x88\x01\x01\x12.\n\x14\x61mount_received_msat\x18\x0b \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x14\n\x07paid_at\x18\x0c \x01(\x04H\x06\x88\x01\x01\x12\x1d\n\x10payment_preimage\x18\r \x01(\x0cH\x07\x88\x01\x01\"6\n\x11SendinvoiceStatus\x12\n\n\x06UNPAID\x10\x00\x12\x08\n\x04PAID\x10\x01\x12\x0b\n\x07\x45XPIRED\x10\x02\x42\x0e\n\x0c_amount_msatB\t\n\x07_bolt12B\x10\n\x0e_created_indexB\x10\n\x0e_updated_indexB\x0c\n\n_pay_indexB\x17\n\x15_amount_received_msatB\n\n\x08_paid_atB\x13\n\x11_payment_preimage\"\xaa\x02\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\x12\x1c\n\x0fignorefeelimits\x18\x07 \x01(\x08H\x05\x88\x01\x01\x42\n\n\x08_feebaseB\t\n\x07_feeppmB\n\n\x08_htlcminB\n\n\x08_htlcmaxB\x0f\n\r_enforcedelayB\x12\n\x10_ignorefeelimits\"?\n\x12SetchannelResponse\x12)\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x17.cln.SetchannelChannels\"\xca\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\x12\x1e\n\x11ignore_fee_limits\x18\n \x01(\x08H\x03\x88\x01\x01\x42\x13\n\x11_short_channel_idB\x1a\n\x18_warning_htlcmin_too_lowB\x1b\n\x19_warning_htlcmax_too_highB\x14\n\x12_ignore_fee_limits\"<\n\x10SetconfigRequest\x12\x0e\n\x06\x63onfig\x18\x01 \x01(\t\x12\x10\n\x03val\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x06\n\x04_val\"9\n\x11SetconfigResponse\x12$\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x14.cln.SetconfigConfig\"\xa5\x02\n\x0fSetconfigConfig\x12\x0e\n\x06\x63onfig\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\x12\x13\n\x06plugin\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x0f\n\x07\x64ynamic\x18\x04 \x01(\x08\x12\x10\n\x03set\x18\x05 \x01(\x08H\x01\x88\x01\x01\x12\x16\n\tvalue_str\x18\x06 \x01(\tH\x02\x88\x01\x01\x12$\n\nvalue_msat\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x16\n\tvalue_int\x18\x08 \x01(\x12H\x04\x88\x01\x01\x12\x17\n\nvalue_bool\x18\t \x01(\x08H\x05\x88\x01\x01\x42\t\n\x07_pluginB\x06\n\x04_setB\x0c\n\n_value_strB\r\n\x0b_value_msatB\x0c\n\n_value_intB\r\n\x0b_value_bool\"6\n\x15SetpsbtversionRequest\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\r\"&\n\x16SetpsbtversionResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\"\'\n\x12SigninvoiceRequest\x12\x11\n\tinvstring\x18\x01 \x01(\t\"%\n\x13SigninvoiceResponse\x12\x0e\n\x06\x62olt11\x18\x01 \x01(\t\"%\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\"\xc9\x01\n\x12Splice_initRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x17\n\x0frelative_amount\x18\x02 \x01(\x12\x12\x18\n\x0binitialpsbt\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x1b\n\x0e\x66\x65\x65rate_per_kw\x18\x04 \x01(\rH\x01\x88\x01\x01\x12\x1a\n\rforce_feerate\x18\x05 \x01(\x08H\x02\x88\x01\x01\x42\x0e\n\x0c_initialpsbtB\x11\n\x0f_feerate_per_kwB\x10\n\x0e_force_feerate\"#\n\x13Splice_initResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\"`\n\x14Splice_signedRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x0c\n\x04psbt\x18\x02 \x01(\t\x12\x17\n\nsign_first\x18\x03 \x01(\x08H\x00\x88\x01\x01\x42\r\n\x0b_sign_first\"Q\n\x15Splice_signedResponse\x12\n\n\x02tx\x18\x01 \x01(\x0c\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\x12\x13\n\x06outnum\x18\x03 \x01(\rH\x00\x88\x01\x01\x42\t\n\x07_outnum\"8\n\x14Splice_updateRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x0c\n\x04psbt\x18\x02 \x01(\t\"B\n\x15Splice_updateResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x1b\n\x13\x63ommitments_secured\x18\x02 \x01(\x08\"H\n\x16UnreserveinputsRequest\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x14\n\x07reserve\x18\x02 \x01(\rH\x00\x88\x01\x01\x42\n\n\x08_reserve\"Q\n\x17UnreserveinputsResponse\x12\x36\n\x0creservations\x18\x01 \x03(\x0b\x32 .cln.UnreserveinputsReservations\"\x97\x01\n\x1bUnreserveinputsReservations\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\x1e\n\x11reserved_to_block\x18\x05 \x01(\rH\x00\x88\x01\x01\x42\x14\n\x12_reserved_to_block\"n\n\x14UpgradewalletRequest\x12\"\n\x07\x66\x65\x65rate\x18\x01 \x01(\x0b\x32\x0c.cln.FeerateH\x00\x88\x01\x01\x12\x17\n\nreservedok\x18\x02 \x01(\x08H\x01\x88\x01\x01\x42\n\n\x08_feerateB\r\n\x0b_reservedok\"\x95\x01\n\x15UpgradewalletResponse\x12\x1a\n\rupgraded_outs\x18\x01 \x01(\x04H\x00\x88\x01\x01\x12\x11\n\x04psbt\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0f\n\x02tx\x18\x03 \x01(\x0cH\x02\x88\x01\x01\x12\x11\n\x04txid\x18\x04 \x01(\x0cH\x03\x88\x01\x01\x42\x10\n\x0e_upgraded_outsB\x07\n\x05_psbtB\x05\n\x03_txB\x07\n\x05_txid\"O\n\x16WaitblockheightRequest\x12\x13\n\x0b\x62lockheight\x18\x01 \x01(\r\x12\x14\n\x07timeout\x18\x02 \x01(\rH\x00\x88\x01\x01\x42\n\n\x08_timeout\".\n\x17WaitblockheightResponse\x12\x13\n\x0b\x62lockheight\x18\x01 \x01(\r\"\xf9\x01\n\x0bWaitRequest\x12\x31\n\tsubsystem\x18\x01 \x01(\x0e\x32\x1e.cln.WaitRequest.WaitSubsystem\x12\x31\n\tindexname\x18\x02 \x01(\x0e\x32\x1e.cln.WaitRequest.WaitIndexname\x12\x11\n\tnextvalue\x18\x03 \x01(\x04\"9\n\rWaitSubsystem\x12\x0c\n\x08INVOICES\x10\x00\x12\x0c\n\x08\x46ORWARDS\x10\x01\x12\x0c\n\x08SENDPAYS\x10\x02\"6\n\rWaitIndexname\x12\x0b\n\x07\x43REATED\x10\x00\x12\x0b\n\x07UPDATED\x10\x01\x12\x0b\n\x07\x44\x45LETED\x10\x02\"\x97\x02\n\x0cWaitResponse\x12\x32\n\tsubsystem\x18\x01 \x01(\x0e\x32\x1f.cln.WaitResponse.WaitSubsystem\x12\x14\n\x07\x63reated\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x14\n\x07updated\x18\x03 \x01(\x04H\x01\x88\x01\x01\x12\x14\n\x07\x64\x65leted\x18\x04 \x01(\x04H\x02\x88\x01\x01\x12&\n\x07\x64\x65tails\x18\x05 \x01(\x0b\x32\x10.cln.WaitDetailsH\x03\x88\x01\x01\"9\n\rWaitSubsystem\x12\x0c\n\x08INVOICES\x10\x00\x12\x0c\n\x08\x46ORWARDS\x10\x01\x12\x0c\n\x08SENDPAYS\x10\x02\x42\n\n\x08_createdB\n\n\x08_updatedB\n\n\x08_deletedB\n\n\x08_details\"\xfc\x04\n\x0bWaitDetails\x12\x37\n\x06status\x18\x01 \x01(\x0e\x32\".cln.WaitDetails.WaitDetailsStatusH\x00\x88\x01\x01\x12\x12\n\x05label\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x13\n\x06\x62olt11\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x13\n\x06partid\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12\x14\n\x07groupid\x18\x07 \x01(\x04H\x06\x88\x01\x01\x12\x19\n\x0cpayment_hash\x18\x08 \x01(\x0cH\x07\x88\x01\x01\x12\x17\n\nin_channel\x18\t \x01(\tH\x08\x88\x01\x01\x12\x17\n\nin_htlc_id\x18\n \x01(\x04H\t\x88\x01\x01\x12!\n\x07in_msat\x18\x0b \x01(\x0b\x32\x0b.cln.AmountH\n\x88\x01\x01\x12\x18\n\x0bout_channel\x18\x0c \x01(\tH\x0b\x88\x01\x01\"\x89\x01\n\x11WaitDetailsStatus\x12\n\n\x06UNPAID\x10\x00\x12\x08\n\x04PAID\x10\x01\x12\x0b\n\x07\x45XPIRED\x10\x02\x12\x0b\n\x07PENDING\x10\x03\x12\n\n\x06\x46\x41ILED\x10\x04\x12\x0c\n\x08\x43OMPLETE\x10\x05\x12\x0b\n\x07OFFERED\x10\x06\x12\x0b\n\x07SETTLED\x10\x07\x12\x10\n\x0cLOCAL_FAILED\x10\x08\x42\t\n\x07_statusB\x08\n\x06_labelB\x0e\n\x0c_descriptionB\t\n\x07_bolt11B\t\n\x07_bolt12B\t\n\x07_partidB\n\n\x08_groupidB\x0f\n\r_payment_hashB\r\n\x0b_in_channelB\r\n\x0b_in_htlc_idB\n\n\x08_in_msatB\x0e\n\x0c_out_channel\"4\n\x12ListconfigsRequest\x12\x13\n\x06\x63onfig\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\t\n\x07_config\"\xdf\x1b\n\x13ListconfigsResponse\x12-\n\x07\x63onfigs\x18\x01 \x01(\x0b\x32\x17.cln.ListconfigsConfigsH\x00\x88\x01\x01\x12(\n\x07plugins\x18\x03 \x03(\x0b\x32\x17.cln.ListconfigsPlugins\x12;\n\x11important_plugins\x18\x04 \x03(\x0b\x32 .cln.ListconfigsImportantplugins\x12\x11\n\x04\x63onf\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\rlightning_dir\x18\x06 \x01(\tH\x02\x88\x01\x01\x12\x14\n\x07network\x18\x07 \x01(\tH\x03\x88\x01\x01\x12\"\n\x15\x61llow_deprecated_apis\x18\x08 \x01(\x08H\x04\x88\x01\x01\x12\x15\n\x08rpc_file\x18\t \x01(\tH\x05\x88\x01\x01\x12\x16\n\x0e\x64isable_plugin\x18\n \x03(\t\x12\x1b\n\x0e\x62ookkeeper_dir\x18\x0b \x01(\tH\x06\x88\x01\x01\x12\x1a\n\rbookkeeper_db\x18\x0c \x01(\tH\x07\x88\x01\x01\x12\x1d\n\x10\x61lways_use_proxy\x18\r \x01(\x08H\x08\x88\x01\x01\x12\x13\n\x06\x64\x61\x65mon\x18\x0e \x01(\x08H\t\x88\x01\x01\x12\x13\n\x06wallet\x18\x0f \x01(\tH\n\x88\x01\x01\x12\x1b\n\x0elarge_channels\x18\x10 \x01(\x08H\x0b\x88\x01\x01\x12#\n\x16\x65xperimental_dual_fund\x18\x11 \x01(\x08H\x0c\x88\x01\x01\x12\"\n\x15\x65xperimental_splicing\x18\x12 \x01(\x08H\r\x88\x01\x01\x12(\n\x1b\x65xperimental_onion_messages\x18\x13 \x01(\x08H\x0e\x88\x01\x01\x12 \n\x13\x65xperimental_offers\x18\x14 \x01(\x08H\x0f\x88\x01\x01\x12\x30\n#experimental_shutdown_wrong_funding\x18\x15 \x01(\x08H\x10\x88\x01\x01\x12&\n\x19\x65xperimental_peer_storage\x18\x16 \x01(\x08H\x11\x88\x01\x01\x12!\n\x14\x65xperimental_quiesce\x18\x17 \x01(\x08H\x12\x88\x01\x01\x12*\n\x1d\x65xperimental_upgrade_protocol\x18\x18 \x01(\x08H\x13\x88\x01\x01\x12&\n\x19invoices_onchain_fallback\x18\x19 \x01(\x08H\x14\x88\x01\x01\x12\x1d\n\x10\x64\x61tabase_upgrade\x18\x1a \x01(\x08H\x15\x88\x01\x01\x12\x10\n\x03rgb\x18\x1b \x01(\x0cH\x16\x88\x01\x01\x12\x12\n\x05\x61lias\x18\x1c \x01(\tH\x17\x88\x01\x01\x12\x15\n\x08pid_file\x18\x1d \x01(\tH\x18\x88\x01\x01\x12\x1e\n\x11ignore_fee_limits\x18\x1e \x01(\x08H\x19\x88\x01\x01\x12\x1d\n\x10watchtime_blocks\x18\x1f \x01(\rH\x1a\x88\x01\x01\x12 \n\x13max_locktime_blocks\x18 \x01(\rH\x1b\x88\x01\x01\x12\x1d\n\x10\x66unding_confirms\x18! \x01(\rH\x1c\x88\x01\x01\x12\x17\n\ncltv_delta\x18\" \x01(\rH\x1d\x88\x01\x01\x12\x17\n\ncltv_final\x18# \x01(\rH\x1e\x88\x01\x01\x12\x18\n\x0b\x63ommit_time\x18$ \x01(\rH\x1f\x88\x01\x01\x12\x15\n\x08\x66\x65\x65_base\x18% \x01(\rH \x88\x01\x01\x12\x13\n\x06rescan\x18& \x01(\x12H!\x88\x01\x01\x12\x1c\n\x0f\x66\x65\x65_per_satoshi\x18\' \x01(\rH\"\x88\x01\x01\x12!\n\x14max_concurrent_htlcs\x18( \x01(\rH#\x88\x01\x01\x12+\n\x11htlc_minimum_msat\x18) \x01(\x0b\x32\x0b.cln.AmountH$\x88\x01\x01\x12+\n\x11htlc_maximum_msat\x18* \x01(\x0b\x32\x0b.cln.AmountH%\x88\x01\x01\x12\x35\n\x1bmax_dust_htlc_exposure_msat\x18+ \x01(\x0b\x32\x0b.cln.AmountH&\x88\x01\x01\x12\x1d\n\x10min_capacity_sat\x18, \x01(\x04H\'\x88\x01\x01\x12\x11\n\x04\x61\x64\x64r\x18- \x01(\tH(\x88\x01\x01\x12\x1a\n\rannounce_addr\x18. \x01(\tH)\x88\x01\x01\x12\x16\n\tbind_addr\x18/ \x01(\tH*\x88\x01\x01\x12\x14\n\x07offline\x18\x30 \x01(\x08H+\x88\x01\x01\x12\x17\n\nautolisten\x18\x31 \x01(\x08H,\x88\x01\x01\x12\x12\n\x05proxy\x18\x32 \x01(\tH-\x88\x01\x01\x12\x18\n\x0b\x64isable_dns\x18\x33 \x01(\x08H.\x88\x01\x01\x12%\n\x18\x61nnounce_addr_discovered\x18\x34 \x01(\tH/\x88\x01\x01\x12*\n\x1d\x61nnounce_addr_discovered_port\x18\x35 \x01(\x12H0\x88\x01\x01\x12\x1a\n\rencrypted_hsm\x18\x36 \x01(\x08H1\x88\x01\x01\x12\x1a\n\rrpc_file_mode\x18\x37 \x01(\tH2\x88\x01\x01\x12\x16\n\tlog_level\x18\x38 \x01(\tH3\x88\x01\x01\x12\x17\n\nlog_prefix\x18\x39 \x01(\tH4\x88\x01\x01\x12\x15\n\x08log_file\x18: \x01(\tH5\x88\x01\x01\x12\x1b\n\x0elog_timestamps\x18; \x01(\x08H6\x88\x01\x01\x12\x1b\n\x0e\x66orce_feerates\x18< \x01(\tH7\x88\x01\x01\x12\x16\n\tsubdaemon\x18= \x01(\tH8\x88\x01\x01\x12#\n\x16\x66\x65tchinvoice_noconnect\x18> \x01(\x08H9\x88\x01\x01\x12\"\n\x15\x61\x63\x63\x65pt_htlc_tlv_types\x18? \x01(\tH:\x88\x01\x01\x12!\n\x14tor_service_password\x18@ \x01(\tH;\x88\x01\x01\x12!\n\x14\x64\x65v_allowdustreserve\x18\x41 \x01(\x08H<\x88\x01\x01\x12\x1e\n\x11\x61nnounce_addr_dns\x18\x42 \x01(\x08H=\x88\x01\x01\x12%\n\x18require_confirmed_inputs\x18\x43 \x01(\x08H>\x88\x01\x01\x12\x16\n\tdeveloper\x18\x44 \x01(\x08H?\x88\x01\x01\x12\x17\n\ncommit_fee\x18\x45 \x01(\x04H@\x88\x01\x01\x12,\n\x12min_emergency_msat\x18\x46 \x01(\x0b\x32\x0b.cln.AmountHA\x88\x01\x01\x12\"\n\x15\x63ommit_feerate_offset\x18G \x01(\rHB\x88\x01\x01\x42\n\n\x08_configsB\x07\n\x05_confB\x10\n\x0e_lightning_dirB\n\n\x08_networkB\x18\n\x16_allow_deprecated_apisB\x0b\n\t_rpc_fileB\x11\n\x0f_bookkeeper_dirB\x10\n\x0e_bookkeeper_dbB\x13\n\x11_always_use_proxyB\t\n\x07_daemonB\t\n\x07_walletB\x11\n\x0f_large_channelsB\x19\n\x17_experimental_dual_fundB\x18\n\x16_experimental_splicingB\x1e\n\x1c_experimental_onion_messagesB\x16\n\x14_experimental_offersB&\n$_experimental_shutdown_wrong_fundingB\x1c\n\x1a_experimental_peer_storageB\x17\n\x15_experimental_quiesceB \n\x1e_experimental_upgrade_protocolB\x1c\n\x1a_invoices_onchain_fallbackB\x13\n\x11_database_upgradeB\x06\n\x04_rgbB\x08\n\x06_aliasB\x0b\n\t_pid_fileB\x14\n\x12_ignore_fee_limitsB\x13\n\x11_watchtime_blocksB\x16\n\x14_max_locktime_blocksB\x13\n\x11_funding_confirmsB\r\n\x0b_cltv_deltaB\r\n\x0b_cltv_finalB\x0e\n\x0c_commit_timeB\x0b\n\t_fee_baseB\t\n\x07_rescanB\x12\n\x10_fee_per_satoshiB\x17\n\x15_max_concurrent_htlcsB\x14\n\x12_htlc_minimum_msatB\x14\n\x12_htlc_maximum_msatB\x1e\n\x1c_max_dust_htlc_exposure_msatB\x13\n\x11_min_capacity_satB\x07\n\x05_addrB\x10\n\x0e_announce_addrB\x0c\n\n_bind_addrB\n\n\x08_offlineB\r\n\x0b_autolistenB\x08\n\x06_proxyB\x0e\n\x0c_disable_dnsB\x1b\n\x19_announce_addr_discoveredB \n\x1e_announce_addr_discovered_portB\x10\n\x0e_encrypted_hsmB\x10\n\x0e_rpc_file_modeB\x0c\n\n_log_levelB\r\n\x0b_log_prefixB\x0b\n\t_log_fileB\x11\n\x0f_log_timestampsB\x11\n\x0f_force_feeratesB\x0c\n\n_subdaemonB\x19\n\x17_fetchinvoice_noconnectB\x18\n\x16_accept_htlc_tlv_typesB\x17\n\x15_tor_service_passwordB\x17\n\x15_dev_allowdustreserveB\x14\n\x12_announce_addr_dnsB\x1b\n\x19_require_confirmed_inputsB\x0c\n\n_developerB\r\n\x0b_commit_feeB\x15\n\x13_min_emergency_msatB\x18\n\x16_commit_feerate_offset\"\xdf.\n\x12ListconfigsConfigs\x12.\n\x04\x63onf\x18\x01 \x01(\x0b\x32\x1b.cln.ListconfigsConfigsConfH\x00\x88\x01\x01\x12\x38\n\tdeveloper\x18\x02 \x01(\x0b\x32 .cln.ListconfigsConfigsDeveloperH\x01\x88\x01\x01\x12?\n\rclear_plugins\x18\x03 \x01(\x0b\x32#.cln.ListconfigsConfigsClearpluginsH\x02\x88\x01\x01\x12;\n\x0b\x64isable_mpp\x18\x04 \x01(\x0b\x32!.cln.ListconfigsConfigsDisablemppH\x03\x88\x01\x01\x12\x34\n\x07mainnet\x18\x05 \x01(\x0b\x32\x1e.cln.ListconfigsConfigsMainnetH\x04\x88\x01\x01\x12\x34\n\x07regtest\x18\x06 \x01(\x0b\x32\x1e.cln.ListconfigsConfigsRegtestH\x05\x88\x01\x01\x12\x32\n\x06signet\x18\x07 \x01(\x0b\x32\x1d.cln.ListconfigsConfigsSignetH\x06\x88\x01\x01\x12\x34\n\x07testnet\x18\x08 \x01(\x0b\x32\x1e.cln.ListconfigsConfigsTestnetH\x07\x88\x01\x01\x12\x45\n\x10important_plugin\x18\t \x01(\x0b\x32&.cln.ListconfigsConfigsImportantpluginH\x08\x88\x01\x01\x12\x32\n\x06plugin\x18\n \x01(\x0b\x32\x1d.cln.ListconfigsConfigsPluginH\t\x88\x01\x01\x12\x39\n\nplugin_dir\x18\x0b \x01(\x0b\x32 .cln.ListconfigsConfigsPlugindirH\n\x88\x01\x01\x12?\n\rlightning_dir\x18\x0c \x01(\x0b\x32#.cln.ListconfigsConfigsLightningdirH\x0b\x88\x01\x01\x12\x34\n\x07network\x18\r \x01(\x0b\x32\x1e.cln.ListconfigsConfigsNetworkH\x0c\x88\x01\x01\x12N\n\x15\x61llow_deprecated_apis\x18\x0e \x01(\x0b\x32*.cln.ListconfigsConfigsAllowdeprecatedapisH\r\x88\x01\x01\x12\x35\n\x08rpc_file\x18\x0f \x01(\x0b\x32\x1e.cln.ListconfigsConfigsRpcfileH\x0e\x88\x01\x01\x12\x41\n\x0e\x64isable_plugin\x18\x10 \x01(\x0b\x32$.cln.ListconfigsConfigsDisablepluginH\x0f\x88\x01\x01\x12\x44\n\x10\x61lways_use_proxy\x18\x11 \x01(\x0b\x32%.cln.ListconfigsConfigsAlwaysuseproxyH\x10\x88\x01\x01\x12\x32\n\x06\x64\x61\x65mon\x18\x12 \x01(\x0b\x32\x1d.cln.ListconfigsConfigsDaemonH\x11\x88\x01\x01\x12\x32\n\x06wallet\x18\x13 \x01(\x0b\x32\x1d.cln.ListconfigsConfigsWalletH\x12\x88\x01\x01\x12\x41\n\x0elarge_channels\x18\x14 \x01(\x0b\x32$.cln.ListconfigsConfigsLargechannelsH\x13\x88\x01\x01\x12P\n\x16\x65xperimental_dual_fund\x18\x15 \x01(\x0b\x32+.cln.ListconfigsConfigsExperimentaldualfundH\x14\x88\x01\x01\x12O\n\x15\x65xperimental_splicing\x18\x16 \x01(\x0b\x32+.cln.ListconfigsConfigsExperimentalsplicingH\x15\x88\x01\x01\x12Z\n\x1b\x65xperimental_onion_messages\x18\x17 \x01(\x0b\x32\x30.cln.ListconfigsConfigsExperimentalonionmessagesH\x16\x88\x01\x01\x12K\n\x13\x65xperimental_offers\x18\x18 \x01(\x0b\x32).cln.ListconfigsConfigsExperimentaloffersH\x17\x88\x01\x01\x12i\n#experimental_shutdown_wrong_funding\x18\x19 \x01(\x0b\x32\x37.cln.ListconfigsConfigsExperimentalshutdownwrongfundingH\x18\x88\x01\x01\x12V\n\x19\x65xperimental_peer_storage\x18\x1a \x01(\x0b\x32..cln.ListconfigsConfigsExperimentalpeerstorageH\x19\x88\x01\x01\x12M\n\x14\x65xperimental_anchors\x18\x1b \x01(\x0b\x32*.cln.ListconfigsConfigsExperimentalanchorsH\x1a\x88\x01\x01\x12\x45\n\x10\x64\x61tabase_upgrade\x18\x1c \x01(\x0b\x32&.cln.ListconfigsConfigsDatabaseupgradeH\x1b\x88\x01\x01\x12,\n\x03rgb\x18\x1d \x01(\x0b\x32\x1a.cln.ListconfigsConfigsRgbH\x1c\x88\x01\x01\x12\x30\n\x05\x61lias\x18\x1e \x01(\x0b\x32\x1c.cln.ListconfigsConfigsAliasH\x1d\x88\x01\x01\x12\x35\n\x08pid_file\x18\x1f \x01(\x0b\x32\x1e.cln.ListconfigsConfigsPidfileH\x1e\x88\x01\x01\x12\x46\n\x11ignore_fee_limits\x18 \x01(\x0b\x32&.cln.ListconfigsConfigsIgnorefeelimitsH\x1f\x88\x01\x01\x12\x45\n\x10watchtime_blocks\x18! \x01(\x0b\x32&.cln.ListconfigsConfigsWatchtimeblocksH \x88\x01\x01\x12J\n\x13max_locktime_blocks\x18\" \x01(\x0b\x32(.cln.ListconfigsConfigsMaxlocktimeblocksH!\x88\x01\x01\x12\x45\n\x10\x66unding_confirms\x18# \x01(\x0b\x32&.cln.ListconfigsConfigsFundingconfirmsH\"\x88\x01\x01\x12\x39\n\ncltv_delta\x18$ \x01(\x0b\x32 .cln.ListconfigsConfigsCltvdeltaH#\x88\x01\x01\x12\x39\n\ncltv_final\x18% \x01(\x0b\x32 .cln.ListconfigsConfigsCltvfinalH$\x88\x01\x01\x12;\n\x0b\x63ommit_time\x18& \x01(\x0b\x32!.cln.ListconfigsConfigsCommittimeH%\x88\x01\x01\x12\x35\n\x08\x66\x65\x65_base\x18\' \x01(\x0b\x32\x1e.cln.ListconfigsConfigsFeebaseH&\x88\x01\x01\x12\x32\n\x06rescan\x18( \x01(\x0b\x32\x1d.cln.ListconfigsConfigsRescanH\'\x88\x01\x01\x12\x42\n\x0f\x66\x65\x65_per_satoshi\x18) \x01(\x0b\x32$.cln.ListconfigsConfigsFeepersatoshiH(\x88\x01\x01\x12L\n\x14max_concurrent_htlcs\x18* \x01(\x0b\x32).cln.ListconfigsConfigsMaxconcurrenthtlcsH)\x88\x01\x01\x12\x46\n\x11htlc_minimum_msat\x18+ \x01(\x0b\x32&.cln.ListconfigsConfigsHtlcminimummsatH*\x88\x01\x01\x12\x46\n\x11htlc_maximum_msat\x18, \x01(\x0b\x32&.cln.ListconfigsConfigsHtlcmaximummsatH+\x88\x01\x01\x12X\n\x1bmax_dust_htlc_exposure_msat\x18- \x01(\x0b\x32..cln.ListconfigsConfigsMaxdusthtlcexposuremsatH,\x88\x01\x01\x12\x44\n\x10min_capacity_sat\x18. \x01(\x0b\x32%.cln.ListconfigsConfigsMincapacitysatH-\x88\x01\x01\x12.\n\x04\x61\x64\x64r\x18/ \x01(\x0b\x32\x1b.cln.ListconfigsConfigsAddrH.\x88\x01\x01\x12?\n\rannounce_addr\x18\x30 \x01(\x0b\x32#.cln.ListconfigsConfigsAnnounceaddrH/\x88\x01\x01\x12\x37\n\tbind_addr\x18\x31 \x01(\x0b\x32\x1f.cln.ListconfigsConfigsBindaddrH0\x88\x01\x01\x12\x34\n\x07offline\x18\x32 \x01(\x0b\x32\x1e.cln.ListconfigsConfigsOfflineH1\x88\x01\x01\x12:\n\nautolisten\x18\x33 \x01(\x0b\x32!.cln.ListconfigsConfigsAutolistenH2\x88\x01\x01\x12\x30\n\x05proxy\x18\x34 \x01(\x0b\x32\x1c.cln.ListconfigsConfigsProxyH3\x88\x01\x01\x12;\n\x0b\x64isable_dns\x18\x35 \x01(\x0b\x32!.cln.ListconfigsConfigsDisablednsH4\x88\x01\x01\x12T\n\x18\x61nnounce_addr_discovered\x18\x36 \x01(\x0b\x32-.cln.ListconfigsConfigsAnnounceaddrdiscoveredH5\x88\x01\x01\x12]\n\x1d\x61nnounce_addr_discovered_port\x18\x37 \x01(\x0b\x32\x31.cln.ListconfigsConfigsAnnounceaddrdiscoveredportH6\x88\x01\x01\x12?\n\rencrypted_hsm\x18\x38 \x01(\x0b\x32#.cln.ListconfigsConfigsEncryptedhsmH7\x88\x01\x01\x12>\n\rrpc_file_mode\x18\x39 \x01(\x0b\x32\".cln.ListconfigsConfigsRpcfilemodeH8\x88\x01\x01\x12\x37\n\tlog_level\x18: \x01(\x0b\x32\x1f.cln.ListconfigsConfigsLoglevelH9\x88\x01\x01\x12\x39\n\nlog_prefix\x18; \x01(\x0b\x32 .cln.ListconfigsConfigsLogprefixH:\x88\x01\x01\x12\x35\n\x08log_file\x18< \x01(\x0b\x32\x1e.cln.ListconfigsConfigsLogfileH;\x88\x01\x01\x12\x41\n\x0elog_timestamps\x18= \x01(\x0b\x32$.cln.ListconfigsConfigsLogtimestampsH<\x88\x01\x01\x12\x41\n\x0e\x66orce_feerates\x18> \x01(\x0b\x32$.cln.ListconfigsConfigsForcefeeratesH=\x88\x01\x01\x12\x38\n\tsubdaemon\x18? \x01(\x0b\x32 .cln.ListconfigsConfigsSubdaemonH>\x88\x01\x01\x12Q\n\x16\x66\x65tchinvoice_noconnect\x18@ \x01(\x0b\x32,.cln.ListconfigsConfigsFetchinvoicenoconnectH?\x88\x01\x01\x12M\n\x15\x61\x63\x63\x65pt_htlc_tlv_types\x18\x41 \x01(\x0b\x32).cln.ListconfigsConfigsAccepthtlctlvtypesH@\x88\x01\x01\x12L\n\x14tor_service_password\x18\x42 \x01(\x0b\x32).cln.ListconfigsConfigsTorservicepasswordHA\x88\x01\x01\x12\x46\n\x11\x61nnounce_addr_dns\x18\x43 \x01(\x0b\x32&.cln.ListconfigsConfigsAnnounceaddrdnsHB\x88\x01\x01\x12T\n\x18require_confirmed_inputs\x18\x44 \x01(\x0b\x32-.cln.ListconfigsConfigsRequireconfirmedinputsHC\x88\x01\x01\x12\x39\n\ncommit_fee\x18\x45 \x01(\x0b\x32 .cln.ListconfigsConfigsCommitfeeHD\x88\x01\x01\x12N\n\x15\x63ommit_feerate_offset\x18\x46 \x01(\x0b\x32*.cln.ListconfigsConfigsCommitfeerateoffsetHE\x88\x01\x01\x42\x07\n\x05_confB\x0c\n\n_developerB\x10\n\x0e_clear_pluginsB\x0e\n\x0c_disable_mppB\n\n\x08_mainnetB\n\n\x08_regtestB\t\n\x07_signetB\n\n\x08_testnetB\x13\n\x11_important_pluginB\t\n\x07_pluginB\r\n\x0b_plugin_dirB\x10\n\x0e_lightning_dirB\n\n\x08_networkB\x18\n\x16_allow_deprecated_apisB\x0b\n\t_rpc_fileB\x11\n\x0f_disable_pluginB\x13\n\x11_always_use_proxyB\t\n\x07_daemonB\t\n\x07_walletB\x11\n\x0f_large_channelsB\x19\n\x17_experimental_dual_fundB\x18\n\x16_experimental_splicingB\x1e\n\x1c_experimental_onion_messagesB\x16\n\x14_experimental_offersB&\n$_experimental_shutdown_wrong_fundingB\x1c\n\x1a_experimental_peer_storageB\x17\n\x15_experimental_anchorsB\x13\n\x11_database_upgradeB\x06\n\x04_rgbB\x08\n\x06_aliasB\x0b\n\t_pid_fileB\x14\n\x12_ignore_fee_limitsB\x13\n\x11_watchtime_blocksB\x16\n\x14_max_locktime_blocksB\x13\n\x11_funding_confirmsB\r\n\x0b_cltv_deltaB\r\n\x0b_cltv_finalB\x0e\n\x0c_commit_timeB\x0b\n\t_fee_baseB\t\n\x07_rescanB\x12\n\x10_fee_per_satoshiB\x17\n\x15_max_concurrent_htlcsB\x14\n\x12_htlc_minimum_msatB\x14\n\x12_htlc_maximum_msatB\x1e\n\x1c_max_dust_htlc_exposure_msatB\x13\n\x11_min_capacity_satB\x07\n\x05_addrB\x10\n\x0e_announce_addrB\x0c\n\n_bind_addrB\n\n\x08_offlineB\r\n\x0b_autolistenB\x08\n\x06_proxyB\x0e\n\x0c_disable_dnsB\x1b\n\x19_announce_addr_discoveredB \n\x1e_announce_addr_discovered_portB\x10\n\x0e_encrypted_hsmB\x10\n\x0e_rpc_file_modeB\x0c\n\n_log_levelB\r\n\x0b_log_prefixB\x0b\n\t_log_fileB\x11\n\x0f_log_timestampsB\x11\n\x0f_force_feeratesB\x0c\n\n_subdaemonB\x19\n\x17_fetchinvoice_noconnectB\x18\n\x16_accept_htlc_tlv_typesB\x17\n\x15_tor_service_passwordB\x14\n\x12_announce_addr_dnsB\x1b\n\x19_require_confirmed_inputsB\r\n\x0b_commit_feeB\x18\n\x16_commit_feerate_offset\"\xa2\x01\n\x16ListconfigsConfigsConf\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12H\n\x06source\x18\x02 \x01(\x0e\x32\x38.cln.ListconfigsConfigsConf.ListconfigsConfigsConfSource\"+\n\x1cListconfigsConfigsConfSource\x12\x0b\n\x07\x43MDLINE\x10\x00\":\n\x1bListconfigsConfigsDeveloper\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"=\n\x1eListconfigsConfigsClearplugins\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"[\n\x1cListconfigsConfigsDisablempp\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\x12\x13\n\x06plugin\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\t\n\x07_plugin\"8\n\x19ListconfigsConfigsMainnet\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"8\n\x19ListconfigsConfigsRegtest\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"7\n\x18ListconfigsConfigsSignet\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"8\n\x19ListconfigsConfigsTestnet\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"H\n!ListconfigsConfigsImportantplugin\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"?\n\x18ListconfigsConfigsPlugin\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"B\n\x1bListconfigsConfigsPlugindir\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"C\n\x1eListconfigsConfigsLightningdir\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\">\n\x19ListconfigsConfigsNetwork\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"K\n%ListconfigsConfigsAllowdeprecatedapis\x12\x12\n\nvalue_bool\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\">\n\x19ListconfigsConfigsRpcfile\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"F\n\x1fListconfigsConfigsDisableplugin\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"F\n ListconfigsConfigsAlwaysuseproxy\x12\x12\n\nvalue_bool\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"7\n\x18ListconfigsConfigsDaemon\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"=\n\x18ListconfigsConfigsWallet\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\">\n\x1fListconfigsConfigsLargechannels\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"E\n&ListconfigsConfigsExperimentaldualfund\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"E\n&ListconfigsConfigsExperimentalsplicing\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"J\n+ListconfigsConfigsExperimentalonionmessages\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"C\n$ListconfigsConfigsExperimentaloffers\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"Q\n2ListconfigsConfigsExperimentalshutdownwrongfunding\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"H\n)ListconfigsConfigsExperimentalpeerstorage\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"D\n%ListconfigsConfigsExperimentalanchors\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"G\n!ListconfigsConfigsDatabaseupgrade\x12\x12\n\nvalue_bool\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\":\n\x15ListconfigsConfigsRgb\x12\x11\n\tvalue_str\x18\x01 \x01(\x0c\x12\x0e\n\x06source\x18\x02 \x01(\t\"<\n\x17ListconfigsConfigsAlias\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\">\n\x19ListconfigsConfigsPidfile\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"G\n!ListconfigsConfigsIgnorefeelimits\x12\x12\n\nvalue_bool\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"F\n!ListconfigsConfigsWatchtimeblocks\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"H\n#ListconfigsConfigsMaxlocktimeblocks\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"F\n!ListconfigsConfigsFundingconfirms\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"@\n\x1bListconfigsConfigsCltvdelta\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"@\n\x1bListconfigsConfigsCltvfinal\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"A\n\x1cListconfigsConfigsCommittime\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\">\n\x19ListconfigsConfigsFeebase\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"=\n\x18ListconfigsConfigsRescan\x12\x11\n\tvalue_int\x18\x01 \x01(\x12\x12\x0e\n\x06source\x18\x02 \x01(\t\"D\n\x1fListconfigsConfigsFeepersatoshi\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"I\n$ListconfigsConfigsMaxconcurrenthtlcs\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"T\n!ListconfigsConfigsHtlcminimummsat\x12\x1f\n\nvalue_msat\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12\x0e\n\x06source\x18\x02 \x01(\t\"T\n!ListconfigsConfigsHtlcmaximummsat\x12\x1f\n\nvalue_msat\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12\x0e\n\x06source\x18\x02 \x01(\t\"\\\n)ListconfigsConfigsMaxdusthtlcexposuremsat\x12\x1f\n\nvalue_msat\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12\x0e\n\x06source\x18\x02 \x01(\t\"g\n ListconfigsConfigsMincapacitysat\x12\x11\n\tvalue_int\x18\x01 \x01(\x04\x12\x0e\n\x06source\x18\x02 \x01(\t\x12\x14\n\x07\x64ynamic\x18\x03 \x01(\x08H\x00\x88\x01\x01\x42\n\n\x08_dynamic\"=\n\x16ListconfigsConfigsAddr\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"E\n\x1eListconfigsConfigsAnnounceaddr\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"A\n\x1aListconfigsConfigsBindaddr\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"8\n\x19ListconfigsConfigsOffline\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"B\n\x1cListconfigsConfigsAutolisten\x12\x12\n\nvalue_bool\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"<\n\x17ListconfigsConfigsProxy\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\";\n\x1cListconfigsConfigsDisabledns\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"\x82\x02\n(ListconfigsConfigsAnnounceaddrdiscovered\x12r\n\tvalue_str\x18\x01 \x01(\x0e\x32_.cln.ListconfigsConfigsAnnounceaddrdiscovered.ListconfigsConfigsAnnounceaddrdiscoveredValue_str\x12\x0e\n\x06source\x18\x02 \x01(\t\"R\n1ListconfigsConfigsAnnounceaddrdiscoveredValue_str\x12\x08\n\x04TRUE\x10\x00\x12\t\n\x05\x46\x41LSE\x10\x01\x12\x08\n\x04\x41UTO\x10\x02\"Q\n,ListconfigsConfigsAnnounceaddrdiscoveredport\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"=\n\x1eListconfigsConfigsEncryptedhsm\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"B\n\x1dListconfigsConfigsRpcfilemode\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"?\n\x1aListconfigsConfigsLoglevel\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"@\n\x1bListconfigsConfigsLogprefix\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"@\n\x19ListconfigsConfigsLogfile\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"E\n\x1fListconfigsConfigsLogtimestamps\x12\x12\n\nvalue_bool\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"D\n\x1fListconfigsConfigsForcefeerates\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"B\n\x1bListconfigsConfigsSubdaemon\x12\x12\n\nvalues_str\x18\x01 \x03(\t\x12\x0f\n\x07sources\x18\x02 \x03(\t\"f\n\'ListconfigsConfigsFetchinvoicenoconnect\x12\x0b\n\x03set\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\x12\x13\n\x06plugin\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\t\n\x07_plugin\"I\n$ListconfigsConfigsAccepthtlctlvtypes\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"I\n$ListconfigsConfigsTorservicepassword\x12\x11\n\tvalue_str\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\"G\n!ListconfigsConfigsAnnounceaddrdns\x12\x12\n\nvalue_bool\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"N\n(ListconfigsConfigsRequireconfirmedinputs\x12\x12\n\nvalue_bool\x18\x01 \x01(\x08\x12\x0e\n\x06source\x18\x02 \x01(\t\"@\n\x1bListconfigsConfigsCommitfee\x12\x11\n\tvalue_int\x18\x01 \x01(\x04\x12\x0e\n\x06source\x18\x02 \x01(\t\"J\n%ListconfigsConfigsCommitfeerateoffset\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"r\n\x12ListconfigsPlugins\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x34\n\x07options\x18\x03 \x01(\x0b\x32\x1e.cln.ListconfigsPluginsOptionsH\x00\x88\x01\x01\x42\n\n\x08_options\"\x1b\n\x19ListconfigsPluginsOptions\"\x84\x01\n\x1bListconfigsImportantplugins\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12=\n\x07options\x18\x03 \x01(\x0b\x32\'.cln.ListconfigsImportantpluginsOptionsH\x00\x88\x01\x01\x42\n\n\x08_options\"$\n\"ListconfigsImportantpluginsOptions\"\r\n\x0bStopRequest\"q\n\x0cStopResponse\x12\x31\n\x06result\x18\x01 \x01(\x0e\x32\x1c.cln.StopResponse.StopResultH\x00\x88\x01\x01\"#\n\nStopResult\x12\x15\n\x11SHUTDOWN_COMPLETE\x10\x00\x42\t\n\x07_result\"/\n\x0bHelpRequest\x12\x14\n\x07\x63ommand\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\n\n\x08_command\"\x95\x01\n\x0cHelpResponse\x12\x1b\n\x04help\x18\x01 \x03(\x0b\x32\r.cln.HelpHelp\x12:\n\x0b\x66ormat_hint\x18\x02 \x01(\x0e\x32 .cln.HelpResponse.HelpFormathintH\x00\x88\x01\x01\"\x1c\n\x0eHelpFormathint\x12\n\n\x06SIMPLE\x10\x00\x42\x0e\n\x0c_format_hint\"\x1b\n\x08HelpHelp\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\t\"g\n\x18PreapprovekeysendRequest\x12\x13\n\x0b\x64\x65stination\x18\x01 \x01(\x0c\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\x0c\x12 \n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\"\x1b\n\x19PreapprovekeysendResponse\"*\n\x18PreapproveinvoiceRequest\x12\x0e\n\x06\x62olt11\x18\x01 \x01(\t\"\x1b\n\x19PreapproveinvoiceResponse\"\x15\n\x13StaticbackupRequest\"#\n\x14StaticbackupResponse\x12\x0b\n\x03scb\x18\x01 \x03(\x0c\"d\n\x16\x42kprchannelsapyRequest\x12\x17\n\nstart_time\x18\x01 \x01(\x04H\x00\x88\x01\x01\x12\x15\n\x08\x65nd_time\x18\x02 \x01(\x04H\x01\x88\x01\x01\x42\r\n\x0b_start_timeB\x0b\n\t_end_time\"Q\n\x17\x42kprchannelsapyResponse\x12\x36\n\x0c\x63hannels_apy\x18\x01 \x03(\x0b\x32 .cln.BkprchannelsapyChannels_apy\"\xfa\x06\n\x1b\x42kprchannelsapyChannels_apy\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12$\n\x0frouted_out_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12#\n\x0erouted_in_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12(\n\x13lease_fee_paid_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12*\n\x15lease_fee_earned_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12$\n\x0fpushed_out_msat\x18\x06 \x01(\x0b\x32\x0b.cln.Amount\x12#\n\x0epushed_in_msat\x18\x07 \x01(\x0b\x32\x0b.cln.Amount\x12+\n\x16our_start_balance_msat\x18\x08 \x01(\x0b\x32\x0b.cln.Amount\x12/\n\x1a\x63hannel_start_balance_msat\x18\t \x01(\x0b\x32\x0b.cln.Amount\x12\"\n\rfees_out_msat\x18\n \x01(\x0b\x32\x0b.cln.Amount\x12&\n\x0c\x66\x65\x65s_in_msat\x18\x0b \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12\x17\n\x0futilization_out\x18\x0c \x01(\t\x12$\n\x17utilization_out_initial\x18\r \x01(\tH\x01\x88\x01\x01\x12\x16\n\x0eutilization_in\x18\x0e \x01(\t\x12#\n\x16utilization_in_initial\x18\x0f \x01(\tH\x02\x88\x01\x01\x12\x0f\n\x07\x61py_out\x18\x10 \x01(\t\x12\x1c\n\x0f\x61py_out_initial\x18\x11 \x01(\tH\x03\x88\x01\x01\x12\x0e\n\x06\x61py_in\x18\x12 \x01(\t\x12\x1b\n\x0e\x61py_in_initial\x18\x13 \x01(\tH\x04\x88\x01\x01\x12\x11\n\tapy_total\x18\x14 \x01(\t\x12\x1e\n\x11\x61py_total_initial\x18\x15 \x01(\tH\x05\x88\x01\x01\x12\x16\n\tapy_lease\x18\x16 \x01(\tH\x06\x88\x01\x01\x42\x0f\n\r_fees_in_msatB\x1a\n\x18_utilization_out_initialB\x19\n\x17_utilization_in_initialB\x12\n\x10_apy_out_initialB\x11\n\x0f_apy_in_initialB\x14\n\x12_apy_total_initialB\x0c\n\n_apy_lease\"\xd2\x01\n\x18\x42kprdumpincomecsvRequest\x12\x12\n\ncsv_format\x18\x01 \x01(\t\x12\x15\n\x08\x63sv_file\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x10\x63onsolidate_fees\x18\x03 \x01(\x08H\x01\x88\x01\x01\x12\x17\n\nstart_time\x18\x04 \x01(\x04H\x02\x88\x01\x01\x12\x15\n\x08\x65nd_time\x18\x05 \x01(\x04H\x03\x88\x01\x01\x42\x0b\n\t_csv_fileB\x13\n\x11_consolidate_feesB\r\n\x0b_start_timeB\x0b\n\t_end_time\"\xd6\x01\n\x19\x42kprdumpincomecsvResponse\x12\x10\n\x08\x63sv_file\x18\x01 \x01(\t\x12N\n\ncsv_format\x18\x02 \x01(\x0e\x32:.cln.BkprdumpincomecsvResponse.BkprdumpincomecsvCsv_format\"W\n\x1b\x42kprdumpincomecsvCsv_format\x12\x0f\n\x0b\x43OINTRACKER\x10\x00\x12\n\n\x06KOINLY\x10\x01\x12\x0b\n\x07HARMONY\x10\x02\x12\x0e\n\nQUICKBOOKS\x10\x03\"%\n\x12\x42kprinspectRequest\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\"7\n\x13\x42kprinspectResponse\x12 \n\x03txs\x18\x01 \x03(\x0b\x32\x13.cln.BkprinspectTxs\"\x9a\x01\n\x0e\x42kprinspectTxs\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x18\n\x0b\x62lockheight\x18\x02 \x01(\rH\x00\x88\x01\x01\x12#\n\x0e\x66\x65\x65s_paid_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12+\n\x07outputs\x18\x04 \x03(\x0b\x32\x1a.cln.BkprinspectTxsOutputsB\x0e\n\x0c_blockheight\"\xbc\x03\n\x15\x42kprinspectTxsOutputs\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12\x0e\n\x06outnum\x18\x02 \x01(\r\x12&\n\x11output_value_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12\x10\n\x08\x63urrency\x18\x04 \x01(\t\x12%\n\x0b\x63redit_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12$\n\ndebit_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12 \n\x13originating_account\x18\x07 \x01(\tH\x02\x88\x01\x01\x12\x17\n\noutput_tag\x18\x08 \x01(\tH\x03\x88\x01\x01\x12\x16\n\tspend_tag\x18\t \x01(\tH\x04\x88\x01\x01\x12\x1a\n\rspending_txid\x18\n \x01(\x0cH\x05\x88\x01\x01\x12\x17\n\npayment_id\x18\x0b \x01(\x0cH\x06\x88\x01\x01\x42\x0e\n\x0c_credit_msatB\r\n\x0b_debit_msatB\x16\n\x14_originating_accountB\r\n\x0b_output_tagB\x0c\n\n_spend_tagB\x10\n\x0e_spending_txidB\r\n\x0b_payment_id\"h\n\x1c\x42kprlistaccounteventsRequest\x12\x14\n\x07\x61\x63\x63ount\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x17\n\npayment_id\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\n\n\x08_accountB\r\n\x0b_payment_id\"Q\n\x1d\x42kprlistaccounteventsResponse\x12\x30\n\x06\x65vents\x18\x01 \x03(\x0b\x32 .cln.BkprlistaccounteventsEvents\"\xa1\x05\n\x1b\x42kprlistaccounteventsEvents\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12S\n\titem_type\x18\x02 \x01(\x0e\x32@.cln.BkprlistaccounteventsEvents.BkprlistaccounteventsEventsType\x12\x0b\n\x03tag\x18\x03 \x01(\t\x12 \n\x0b\x63redit_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12\x1f\n\ndebit_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12\x10\n\x08\x63urrency\x18\x06 \x01(\t\x12\x11\n\ttimestamp\x18\x07 \x01(\r\x12\x15\n\x08outpoint\x18\x08 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x62lockheight\x18\t \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06origin\x18\n \x01(\tH\x02\x88\x01\x01\x12\x17\n\npayment_id\x18\x0b \x01(\x0cH\x03\x88\x01\x01\x12\x11\n\x04txid\x18\x0c \x01(\x0cH\x04\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\r \x01(\tH\x05\x88\x01\x01\x12#\n\tfees_msat\x18\x0e \x01(\x0b\x32\x0b.cln.AmountH\x06\x88\x01\x01\x12\x19\n\x0cis_rebalance\x18\x0f \x01(\x08H\x07\x88\x01\x01\x12\x14\n\x07part_id\x18\x10 \x01(\rH\x08\x88\x01\x01\"J\n\x1f\x42kprlistaccounteventsEventsType\x12\x0f\n\x0bONCHAIN_FEE\x10\x00\x12\t\n\x05\x43HAIN\x10\x01\x12\x0b\n\x07\x43HANNEL\x10\x02\x42\x0b\n\t_outpointB\x0e\n\x0c_blockheightB\t\n\x07_originB\r\n\x0b_payment_idB\x07\n\x05_txidB\x0e\n\x0c_descriptionB\x0c\n\n_fees_msatB\x0f\n\r_is_rebalanceB\n\n\x08_part_id\"\x19\n\x17\x42kprlistbalancesRequest\"K\n\x18\x42kprlistbalancesResponse\x12/\n\x08\x61\x63\x63ounts\x18\x01 \x03(\x0b\x32\x1d.cln.BkprlistbalancesAccounts\"\xc6\x02\n\x18\x42kprlistbalancesAccounts\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12\x37\n\x08\x62\x61lances\x18\x02 \x03(\x0b\x32%.cln.BkprlistbalancesAccountsBalances\x12\x14\n\x07peer_id\x18\x03 \x01(\x0cH\x00\x88\x01\x01\x12\x16\n\twe_opened\x18\x04 \x01(\x08H\x01\x88\x01\x01\x12\x1b\n\x0e\x61\x63\x63ount_closed\x18\x05 \x01(\x08H\x02\x88\x01\x01\x12\x1d\n\x10\x61\x63\x63ount_resolved\x18\x06 \x01(\x08H\x03\x88\x01\x01\x12\x1e\n\x11resolved_at_block\x18\x07 \x01(\rH\x04\x88\x01\x01\x42\n\n\x08_peer_idB\x0c\n\n_we_openedB\x11\n\x0f_account_closedB\x13\n\x11_account_resolvedB\x14\n\x12_resolved_at_block\"X\n BkprlistbalancesAccountsBalances\x12!\n\x0c\x62\x61lance_msat\x18\x01 \x01(\x0b\x32\x0b.cln.Amount\x12\x11\n\tcoin_type\x18\x02 \x01(\t\"\x97\x01\n\x15\x42kprlistincomeRequest\x12\x1d\n\x10\x63onsolidate_fees\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x17\n\nstart_time\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x15\n\x08\x65nd_time\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x13\n\x11_consolidate_feesB\r\n\x0b_start_timeB\x0b\n\t_end_time\"Q\n\x16\x42kprlistincomeResponse\x12\x37\n\rincome_events\x18\x01 \x03(\x0b\x32 .cln.BkprlistincomeIncome_events\"\xb5\x02\n\x1b\x42kprlistincomeIncome_events\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12\x0b\n\x03tag\x18\x02 \x01(\t\x12 \n\x0b\x63redit_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12\x1f\n\ndebit_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12\x10\n\x08\x63urrency\x18\x05 \x01(\t\x12\x11\n\ttimestamp\x18\x06 \x01(\r\x12\x18\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08outpoint\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x11\n\x04txid\x18\t \x01(\x0cH\x02\x88\x01\x01\x12\x17\n\npayment_id\x18\n \x01(\x0cH\x03\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0b\n\t_outpointB\x07\n\x05_txidB\r\n\x0b_payment_id\"N\n\x14\x42lacklistruneRequest\x12\x12\n\x05start\x18\x01 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03\x65nd\x18\x02 \x01(\x04H\x01\x88\x01\x01\x42\x08\n\x06_startB\x06\n\x04_end\"G\n\x15\x42lacklistruneResponse\x12.\n\tblacklist\x18\x01 \x03(\x0b\x32\x1b.cln.BlacklistruneBlacklist\"4\n\x16\x42lacklistruneBlacklist\x12\r\n\x05start\x18\x01 \x01(\x04\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x04\"p\n\x10\x43heckruneRequest\x12\x0c\n\x04rune\x18\x01 \x01(\t\x12\x13\n\x06nodeid\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06method\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06params\x18\x04 \x03(\tB\t\n\x07_nodeidB\t\n\x07_method\"\"\n\x11\x43heckruneResponse\x12\r\n\x05valid\x18\x01 \x01(\x08\"E\n\x11\x43reateruneRequest\x12\x11\n\x04rune\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x0crestrictions\x18\x02 \x03(\tB\x07\n\x05_rune\"{\n\x12\x43reateruneResponse\x12\x0c\n\x04rune\x18\x01 \x01(\t\x12\x11\n\tunique_id\x18\x02 \x01(\t\x12&\n\x19warning_unrestricted_rune\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x1c\n\x1a_warning_unrestricted_rune\".\n\x10ShowrunesRequest\x12\x11\n\x04rune\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x07\n\x05_rune\"7\n\x11ShowrunesResponse\x12\"\n\x05runes\x18\x01 \x03(\x0b\x32\x13.cln.ShowrunesRunes\"\x9d\x02\n\x0eShowrunesRunes\x12\x0c\n\x04rune\x18\x01 \x01(\t\x12\x11\n\tunique_id\x18\x02 \x01(\t\x12\x35\n\x0crestrictions\x18\x03 \x03(\x0b\x32\x1f.cln.ShowrunesRunesRestrictions\x12\x1f\n\x17restrictions_as_english\x18\x04 \x01(\t\x12\x13\n\x06stored\x18\x05 \x01(\x08H\x00\x88\x01\x01\x12\x18\n\x0b\x62lacklisted\x18\x06 \x01(\x08H\x01\x88\x01\x01\x12\x16\n\tlast_used\x18\x07 \x01(\x01H\x02\x88\x01\x01\x12\x15\n\x08our_rune\x18\x08 \x01(\x08H\x03\x88\x01\x01\x42\t\n\x07_storedB\x0e\n\x0c_blacklistedB\x0c\n\n_last_usedB\x0b\n\t_our_rune\"p\n\x1aShowrunesRunesRestrictions\x12\x41\n\x0c\x61lternatives\x18\x01 \x03(\x0b\x32+.cln.ShowrunesRunesRestrictionsAlternatives\x12\x0f\n\x07\x65nglish\x18\x02 \x01(\t\"n\n&ShowrunesRunesRestrictionsAlternatives\x12\x11\n\tfieldname\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\x12\x11\n\tcondition\x18\x03 \x01(\t\x12\x0f\n\x07\x65nglish\x18\x04 \x01(\t\"\x19\n\x17StreamBlockAddedRequest\"6\n\x16\x42lockAddedNotification\x12\x0c\n\x04hash\x18\x01 \x01(\x0c\x12\x0e\n\x06height\x18\x02 \x01(\r\" \n\x1eStreamChannelOpenFailedRequest\"3\n\x1d\x43hannelOpenFailedNotification\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\"\x1c\n\x1aStreamChannelOpenedRequest\"w\n\x19\x43hannelOpenedNotification\x12\n\n\x02id\x18\x01 \x01(\x0c\x12!\n\x0c\x66unding_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\x14\n\x0c\x66unding_txid\x18\x03 \x01(\x0c\x12\x15\n\rchannel_ready\x18\x04 \x01(\x08\"\x16\n\x14StreamConnectRequest\"\xbe\x01\n\x17PeerConnectNotification\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x44\n\tdirection\x18\x02 \x01(\x0e\x32\x31.cln.PeerConnectNotification.PeerConnectDirection\x12(\n\x07\x61\x64\x64ress\x18\x03 \x01(\x0b\x32\x17.cln.PeerConnectAddress\"\'\n\x14PeerConnectDirection\x12\x06\n\x02IN\x10\x00\x12\x07\n\x03OUT\x10\x01\"\x8b\x02\n\x12PeerConnectAddress\x12\x41\n\titem_type\x18\x01 \x01(\x0e\x32..cln.PeerConnectAddress.PeerConnectAddressType\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\"T\n\x16PeerConnectAddressType\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\"\x18\n\x16StreamCustomMsgRequest\"9\n\x15\x43ustomMsgNotification\x12\x0f\n\x07peer_id\x18\x01 \x01(\x0c\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\x32\xcb?\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\x12H\n\rAddPsbtOutput\x12\x19.cln.AddpsbtoutputRequest\x1a\x1a.cln.AddpsbtoutputResponse\"\x00\x12H\n\rAutoCleanOnce\x12\x19.cln.AutocleanonceRequest\x1a\x1a.cln.AutocleanonceResponse\"\x00\x12N\n\x0f\x41utoCleanStatus\x12\x1b.cln.AutocleanstatusRequest\x1a\x1c.cln.AutocleanstatusResponse\"\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\x12K\n\x0e\x44\x61tastoreUsage\x12\x1a.cln.DatastoreusageRequest\x1a\x1b.cln.DatastoreusageResponse\"\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\x12?\n\nDelInvoice\x12\x16.cln.DelinvoiceRequest\x1a\x17.cln.DelinvoiceResponse\"\x00\x12Q\n\x10\x44\x65vForgetChannel\x12\x1c.cln.DevforgetchannelRequest\x1a\x1d.cln.DevforgetchannelResponse\"\x00\x12Q\n\x10\x45mergencyRecover\x12\x1c.cln.EmergencyrecoverRequest\x1a\x1d.cln.EmergencyrecoverResponse\"\x00\x12\x36\n\x07Recover\x12\x13.cln.RecoverRequest\x1a\x14.cln.RecoverResponse\"\x00\x12K\n\x0eRecoverChannel\x12\x1a.cln.RecoverchannelRequest\x1a\x1b.cln.RecoverchannelResponse\"\x00\x12\x36\n\x07Invoice\x12\x13.cln.InvoiceRequest\x1a\x14.cln.InvoiceResponse\"\x00\x12Q\n\x14\x43reateInvoiceRequest\x12\x1a.cln.InvoicerequestRequest\x1a\x1b.cln.InvoicerequestResponse\"\x00\x12`\n\x15\x44isableInvoiceRequest\x12!.cln.DisableinvoicerequestRequest\x1a\".cln.DisableinvoicerequestResponse\"\x00\x12Z\n\x13ListInvoiceRequests\x12\x1f.cln.ListinvoicerequestsRequest\x1a .cln.ListinvoicerequestsResponse\"\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\nMakeSecret\x12\x16.cln.MakesecretRequest\x1a\x17.cln.MakesecretResponse\"\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\x12Q\n\x10ListPeerChannels\x12\x1c.cln.ListpeerchannelsRequest\x1a\x1d.cln.ListpeerchannelsResponse\"\x00\x12W\n\x12ListClosedChannels\x12\x1e.cln.ListclosedchannelsRequest\x1a\x1f.cln.ListclosedchannelsResponse\"\x00\x12<\n\tDecodePay\x12\x15.cln.DecodepayRequest\x1a\x16.cln.DecodepayResponse\"\x00\x12\x33\n\x06\x44\x65\x63ode\x12\x12.cln.DecodeRequest\x1a\x13.cln.DecodeResponse\"\x00\x12\x33\n\x06\x44\x65lPay\x12\x12.cln.DelpayRequest\x1a\x13.cln.DelpayResponse\"\x00\x12?\n\nDelForward\x12\x16.cln.DelforwardRequest\x1a\x17.cln.DelforwardResponse\"\x00\x12\x45\n\x0c\x44isableOffer\x12\x18.cln.DisableofferRequest\x1a\x19.cln.DisableofferResponse\"\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\x45\n\x0c\x46\x65tchInvoice\x12\x18.cln.FetchinvoiceRequest\x1a\x19.cln.FetchinvoiceResponse\"\x00\x12W\n\x12\x46undChannel_Cancel\x12\x1e.cln.Fundchannel_cancelRequest\x1a\x1f.cln.Fundchannel_cancelResponse\"\x00\x12]\n\x14\x46undChannel_Complete\x12 .cln.Fundchannel_completeRequest\x1a!.cln.Fundchannel_completeResponse\"\x00\x12\x42\n\x0b\x46undChannel\x12\x17.cln.FundchannelRequest\x1a\x18.cln.FundchannelResponse\"\x00\x12T\n\x11\x46undChannel_Start\x12\x1d.cln.Fundchannel_startRequest\x1a\x1e.cln.Fundchannel_startResponse\"\x00\x12\x33\n\x06GetLog\x12\x12.cln.GetlogRequest\x1a\x13.cln.GetlogResponse\"\x00\x12\x45\n\x0c\x46underUpdate\x12\x18.cln.FunderupdateRequest\x1a\x19.cln.FunderupdateResponse\"\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?\n\nListOffers\x12\x16.cln.ListoffersRequest\x1a\x17.cln.ListoffersResponse\"\x00\x12\x39\n\x08ListPays\x12\x14.cln.ListpaysRequest\x1a\x15.cln.ListpaysResponse\"\x00\x12<\n\tListHtlcs\x12\x15.cln.ListhtlcsRequest\x1a\x16.cln.ListhtlcsResponse\"\x00\x12Q\n\x10MultiFundChannel\x12\x1c.cln.MultifundchannelRequest\x1a\x1d.cln.MultifundchannelResponse\"\x00\x12H\n\rMultiWithdraw\x12\x19.cln.MultiwithdrawRequest\x1a\x1a.cln.MultiwithdrawResponse\"\x00\x12\x30\n\x05Offer\x12\x11.cln.OfferRequest\x1a\x12.cln.OfferResponse\"\x00\x12T\n\x11OpenChannel_Abort\x12\x1d.cln.Openchannel_abortRequest\x1a\x1e.cln.Openchannel_abortResponse\"\x00\x12Q\n\x10OpenChannel_Bump\x12\x1c.cln.Openchannel_bumpRequest\x1a\x1d.cln.Openchannel_bumpResponse\"\x00\x12Q\n\x10OpenChannel_Init\x12\x1c.cln.Openchannel_initRequest\x1a\x1d.cln.Openchannel_initResponse\"\x00\x12W\n\x12OpenChannel_Signed\x12\x1e.cln.Openchannel_signedRequest\x1a\x1f.cln.Openchannel_signedResponse\"\x00\x12W\n\x12OpenChannel_Update\x12\x1e.cln.Openchannel_updateRequest\x1a\x1f.cln.Openchannel_updateResponse\"\x00\x12-\n\x04Ping\x12\x10.cln.PingRequest\x1a\x11.cln.PingResponse\"\x00\x12\x33\n\x06Plugin\x12\x12.cln.PluginRequest\x1a\x13.cln.PluginResponse\"\x00\x12H\n\rRenePayStatus\x12\x19.cln.RenepaystatusRequest\x1a\x1a.cln.RenepaystatusResponse\"\x00\x12\x36\n\x07RenePay\x12\x13.cln.RenepayRequest\x1a\x14.cln.RenepayResponse\"\x00\x12H\n\rReserveInputs\x12\x19.cln.ReserveinputsRequest\x1a\x1a.cln.ReserveinputsResponse\"\x00\x12H\n\rSendCustomMsg\x12\x19.cln.SendcustommsgRequest\x1a\x1a.cln.SendcustommsgResponse\"\x00\x12\x42\n\x0bSendInvoice\x12\x17.cln.SendinvoiceRequest\x1a\x18.cln.SendinvoiceResponse\"\x00\x12?\n\nSetChannel\x12\x16.cln.SetchannelRequest\x1a\x17.cln.SetchannelResponse\"\x00\x12<\n\tSetConfig\x12\x15.cln.SetconfigRequest\x1a\x16.cln.SetconfigResponse\"\x00\x12K\n\x0eSetPsbtVersion\x12\x1a.cln.SetpsbtversionRequest\x1a\x1b.cln.SetpsbtversionResponse\"\x00\x12\x42\n\x0bSignInvoice\x12\x17.cln.SigninvoiceRequest\x1a\x18.cln.SigninvoiceResponse\"\x00\x12\x42\n\x0bSignMessage\x12\x17.cln.SignmessageRequest\x1a\x18.cln.SignmessageResponse\"\x00\x12\x42\n\x0bSplice_Init\x12\x17.cln.Splice_initRequest\x1a\x18.cln.Splice_initResponse\"\x00\x12H\n\rSplice_Signed\x12\x19.cln.Splice_signedRequest\x1a\x1a.cln.Splice_signedResponse\"\x00\x12H\n\rSplice_Update\x12\x19.cln.Splice_updateRequest\x1a\x1a.cln.Splice_updateResponse\"\x00\x12N\n\x0fUnreserveInputs\x12\x1b.cln.UnreserveinputsRequest\x1a\x1c.cln.UnreserveinputsResponse\"\x00\x12H\n\rUpgradeWallet\x12\x19.cln.UpgradewalletRequest\x1a\x1a.cln.UpgradewalletResponse\"\x00\x12N\n\x0fWaitBlockHeight\x12\x1b.cln.WaitblockheightRequest\x1a\x1c.cln.WaitblockheightResponse\"\x00\x12-\n\x04Wait\x12\x10.cln.WaitRequest\x1a\x11.cln.WaitResponse\"\x00\x12\x42\n\x0bListConfigs\x12\x17.cln.ListconfigsRequest\x1a\x18.cln.ListconfigsResponse\"\x00\x12-\n\x04Stop\x12\x10.cln.StopRequest\x1a\x11.cln.StopResponse\"\x00\x12-\n\x04Help\x12\x10.cln.HelpRequest\x1a\x11.cln.HelpResponse\"\x00\x12T\n\x11PreApproveKeysend\x12\x1d.cln.PreapprovekeysendRequest\x1a\x1e.cln.PreapprovekeysendResponse\"\x00\x12T\n\x11PreApproveInvoice\x12\x1d.cln.PreapproveinvoiceRequest\x1a\x1e.cln.PreapproveinvoiceResponse\"\x00\x12\x45\n\x0cStaticBackup\x12\x18.cln.StaticbackupRequest\x1a\x19.cln.StaticbackupResponse\"\x00\x12N\n\x0f\x42kprChannelsApy\x12\x1b.cln.BkprchannelsapyRequest\x1a\x1c.cln.BkprchannelsapyResponse\"\x00\x12T\n\x11\x42kprDumpIncomeCsv\x12\x1d.cln.BkprdumpincomecsvRequest\x1a\x1e.cln.BkprdumpincomecsvResponse\"\x00\x12\x42\n\x0b\x42kprInspect\x12\x17.cln.BkprinspectRequest\x1a\x18.cln.BkprinspectResponse\"\x00\x12`\n\x15\x42kprListAccountEvents\x12!.cln.BkprlistaccounteventsRequest\x1a\".cln.BkprlistaccounteventsResponse\"\x00\x12Q\n\x10\x42kprListBalances\x12\x1c.cln.BkprlistbalancesRequest\x1a\x1d.cln.BkprlistbalancesResponse\"\x00\x12K\n\x0e\x42kprListIncome\x12\x1a.cln.BkprlistincomeRequest\x1a\x1b.cln.BkprlistincomeResponse\"\x00\x12H\n\rBlacklistRune\x12\x19.cln.BlacklistruneRequest\x1a\x1a.cln.BlacklistruneResponse\"\x00\x12<\n\tCheckRune\x12\x15.cln.CheckruneRequest\x1a\x16.cln.CheckruneResponse\"\x00\x12?\n\nCreateRune\x12\x16.cln.CreateruneRequest\x1a\x17.cln.CreateruneResponse\"\x00\x12<\n\tShowRunes\x12\x15.cln.ShowrunesRequest\x1a\x16.cln.ShowrunesResponse\"\x00\x12T\n\x13SubscribeBlockAdded\x12\x1c.cln.StreamBlockAddedRequest\x1a\x1b.cln.BlockAddedNotification\"\x00\x30\x01\x12i\n\x1aSubscribeChannelOpenFailed\x12#.cln.StreamChannelOpenFailedRequest\x1a\".cln.ChannelOpenFailedNotification\"\x00\x30\x01\x12]\n\x16SubscribeChannelOpened\x12\x1f.cln.StreamChannelOpenedRequest\x1a\x1e.cln.ChannelOpenedNotification\"\x00\x30\x01\x12O\n\x10SubscribeConnect\x12\x19.cln.StreamConnectRequest\x1a\x1c.cln.PeerConnectNotification\"\x00\x30\x01\x12Q\n\x12SubscribeCustomMsg\x12\x1b.cln.StreamCustomMsgRequest\x1a\x1a.cln.CustomMsgNotification\"\x00\x30\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -403,587 +403,587 @@ _globals['_DECODERESPONSE_DECODETYPE']._serialized_start=37248 _globals['_DECODERESPONSE_DECODETYPE']._serialized_end=37379 _globals['_DECODEOFFER_PATHS']._serialized_start=39156 - _globals['_DECODEOFFER_PATHS']._serialized_end=39327 - _globals['_DECODEOFFER_RECURRENCEPAYWINDOW']._serialized_start=39330 - _globals['_DECODEOFFER_RECURRENCEPAYWINDOW']._serialized_end=39468 - _globals['_DECODEINVREQ_PATHS']._serialized_start=39471 - _globals['_DECODEINVREQ_PATHS']._serialized_end=39686 - _globals['_DECODEINVREQ_PATHSPATH']._serialized_start=39688 - _globals['_DECODEINVREQ_PATHSPATH']._serialized_end=39771 - _globals['_DECODEINVOICE_PATHSPATH']._serialized_start=39773 - _globals['_DECODEINVOICE_PATHSPATH']._serialized_end=39857 - _globals['_DECODEINVOICE_FALLBACKS']._serialized_start=39859 - _globals['_DECODEINVOICE_FALLBACKS']._serialized_end=39948 - _globals['_DECODEFALLBACKS']._serialized_start=39951 - _globals['_DECODEFALLBACKS']._serialized_end=40249 - _globals['_DECODEFALLBACKS_DECODEFALLBACKSTYPE']._serialized_start=40119 - _globals['_DECODEFALLBACKS_DECODEFALLBACKSTYPE']._serialized_end=40194 - _globals['_DECODEEXTRA']._serialized_start=40251 - _globals['_DECODEEXTRA']._serialized_end=40291 - _globals['_DECODERESTRICTIONS']._serialized_start=40293 - _globals['_DECODERESTRICTIONS']._serialized_end=40352 - _globals['_DELPAYREQUEST']._serialized_start=40355 - _globals['_DELPAYREQUEST']._serialized_end=40549 - _globals['_DELPAYREQUEST_DELPAYSTATUS']._serialized_start=40486 - _globals['_DELPAYREQUEST_DELPAYSTATUS']._serialized_end=40526 - _globals['_DELPAYRESPONSE']._serialized_start=40551 - _globals['_DELPAYRESPONSE']._serialized_end=40606 - _globals['_DELPAYPAYMENTS']._serialized_start=40609 - _globals['_DELPAYPAYMENTS']._serialized_end=41324 - _globals['_DELPAYPAYMENTS_DELPAYPAYMENTSSTATUS']._serialized_start=41087 - _globals['_DELPAYPAYMENTS_DELPAYPAYMENTSSTATUS']._serialized_end=41148 - _globals['_DELFORWARDREQUEST']._serialized_start=41327 - _globals['_DELFORWARDREQUEST']._serialized_end=41506 - _globals['_DELFORWARDREQUEST_DELFORWARDSTATUS']._serialized_start=41445 - _globals['_DELFORWARDREQUEST_DELFORWARDSTATUS']._serialized_end=41506 - _globals['_DELFORWARDRESPONSE']._serialized_start=41508 - _globals['_DELFORWARDRESPONSE']._serialized_end=41528 - _globals['_DISABLEOFFERREQUEST']._serialized_start=41530 - _globals['_DISABLEOFFERREQUEST']._serialized_end=41569 - _globals['_DISABLEOFFERRESPONSE']._serialized_start=41572 - _globals['_DISABLEOFFERRESPONSE']._serialized_end=41708 - _globals['_DISCONNECTREQUEST']._serialized_start=41710 - _globals['_DISCONNECTREQUEST']._serialized_end=41771 - _globals['_DISCONNECTRESPONSE']._serialized_start=41773 - _globals['_DISCONNECTRESPONSE']._serialized_end=41793 - _globals['_FEERATESREQUEST']._serialized_start=41795 - _globals['_FEERATESREQUEST']._serialized_end=41902 - _globals['_FEERATESREQUEST_FEERATESSTYLE']._serialized_start=41865 - _globals['_FEERATESREQUEST_FEERATESSTYLE']._serialized_end=41902 - _globals['_FEERATESRESPONSE']._serialized_start=41905 - _globals['_FEERATESRESPONSE']._serialized_end=42189 - _globals['_FEERATESPERKB']._serialized_start=42192 - _globals['_FEERATESPERKB']._serialized_end=42659 - _globals['_FEERATESPERKBESTIMATES']._serialized_start=42661 - _globals['_FEERATESPERKBESTIMATES']._serialized_end=42748 - _globals['_FEERATESPERKW']._serialized_start=42751 - _globals['_FEERATESPERKW']._serialized_end=43218 - _globals['_FEERATESPERKWESTIMATES']._serialized_start=43220 - _globals['_FEERATESPERKWESTIMATES']._serialized_end=43307 - _globals['_FEERATESONCHAIN_FEE_ESTIMATES']._serialized_start=43310 - _globals['_FEERATESONCHAIN_FEE_ESTIMATES']._serialized_end=43593 - _globals['_FETCHINVOICEREQUEST']._serialized_start=43596 - _globals['_FETCHINVOICEREQUEST']._serialized_end=43957 - _globals['_FETCHINVOICERESPONSE']._serialized_start=43960 - _globals['_FETCHINVOICERESPONSE']._serialized_end=44114 - _globals['_FETCHINVOICECHANGES']._serialized_start=44117 - _globals['_FETCHINVOICECHANGES']._serialized_end=44375 - _globals['_FETCHINVOICENEXT_PERIOD']._serialized_start=44377 - _globals['_FETCHINVOICENEXT_PERIOD']._serialized_end=44503 - _globals['_FUNDCHANNEL_CANCELREQUEST']._serialized_start=44505 - _globals['_FUNDCHANNEL_CANCELREQUEST']._serialized_end=44544 - _globals['_FUNDCHANNEL_CANCELRESPONSE']._serialized_start=44546 - _globals['_FUNDCHANNEL_CANCELRESPONSE']._serialized_end=44593 - _globals['_FUNDCHANNEL_COMPLETEREQUEST']._serialized_start=44595 - _globals['_FUNDCHANNEL_COMPLETEREQUEST']._serialized_end=44650 - _globals['_FUNDCHANNEL_COMPLETERESPONSE']._serialized_start=44652 - _globals['_FUNDCHANNEL_COMPLETERESPONSE']._serialized_end=44731 - _globals['_FUNDCHANNELREQUEST']._serialized_start=44734 - _globals['_FUNDCHANNELREQUEST']._serialized_end=45241 - _globals['_FUNDCHANNELRESPONSE']._serialized_start=45244 - _globals['_FUNDCHANNELRESPONSE']._serialized_end=45473 - _globals['_FUNDCHANNELCHANNEL_TYPE']._serialized_start=45475 - _globals['_FUNDCHANNELCHANNEL_TYPE']._serialized_end=45551 - _globals['_FUNDCHANNEL_STARTREQUEST']._serialized_start=45554 - _globals['_FUNDCHANNEL_STARTREQUEST']._serialized_end=45897 - _globals['_FUNDCHANNEL_STARTRESPONSE']._serialized_start=45900 - _globals['_FUNDCHANNEL_STARTRESPONSE']._serialized_end=46149 - _globals['_FUNDCHANNEL_STARTCHANNEL_TYPE']._serialized_start=46151 - _globals['_FUNDCHANNEL_STARTCHANNEL_TYPE']._serialized_end=46233 - _globals['_GETLOGREQUEST']._serialized_start=46236 - _globals['_GETLOGREQUEST']._serialized_end=46393 - _globals['_GETLOGREQUEST_GETLOGLEVEL']._serialized_start=46305 - _globals['_GETLOGREQUEST_GETLOGLEVEL']._serialized_end=46383 - _globals['_GETLOGRESPONSE']._serialized_start=46395 - _globals['_GETLOGRESPONSE']._serialized_end=46499 - _globals['_GETLOGLOG']._serialized_start=46502 - _globals['_GETLOGLOG']._serialized_end=46862 - _globals['_GETLOGLOG_GETLOGLOGTYPE']._serialized_start=46689 - _globals['_GETLOGLOG_GETLOGLOGTYPE']._serialized_end=46797 - _globals['_FUNDERUPDATEREQUEST']._serialized_start=46865 - _globals['_FUNDERUPDATEREQUEST']._serialized_end=47978 - _globals['_FUNDERUPDATEREQUEST_FUNDERUPDATEPOLICY']._serialized_start=47559 - _globals['_FUNDERUPDATEREQUEST_FUNDERUPDATEPOLICY']._serialized_end=47616 - _globals['_FUNDERUPDATERESPONSE']._serialized_start=47981 - _globals['_FUNDERUPDATERESPONSE']._serialized_end=48844 - _globals['_FUNDERUPDATERESPONSE_FUNDERUPDATEPOLICY']._serialized_start=47559 - _globals['_FUNDERUPDATERESPONSE_FUNDERUPDATEPOLICY']._serialized_end=47616 - _globals['_GETROUTEREQUEST']._serialized_start=48847 - _globals['_GETROUTEREQUEST']._serialized_end=49083 - _globals['_GETROUTERESPONSE']._serialized_start=49085 - _globals['_GETROUTERESPONSE']._serialized_end=49138 - _globals['_GETROUTEROUTE']._serialized_start=49141 - _globals['_GETROUTEROUTE']._serialized_end=49338 - _globals['_GETROUTEROUTE_GETROUTEROUTESTYLE']._serialized_start=49309 - _globals['_GETROUTEROUTE_GETROUTEROUTESTYLE']._serialized_end=49338 - _globals['_LISTFORWARDSREQUEST']._serialized_start=49341 - _globals['_LISTFORWARDSREQUEST']._serialized_end=49780 - _globals['_LISTFORWARDSREQUEST_LISTFORWARDSSTATUS']._serialized_start=49585 - _globals['_LISTFORWARDSREQUEST_LISTFORWARDSSTATUS']._serialized_end=49661 - _globals['_LISTFORWARDSREQUEST_LISTFORWARDSINDEX']._serialized_start=49663 - _globals['_LISTFORWARDSREQUEST_LISTFORWARDSINDEX']._serialized_end=49708 - _globals['_LISTFORWARDSRESPONSE']._serialized_start=49782 - _globals['_LISTFORWARDSRESPONSE']._serialized_end=49849 - _globals['_LISTFORWARDSFORWARDS']._serialized_start=49852 - _globals['_LISTFORWARDSFORWARDS']._serialized_end=50672 - _globals['_LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTATUS']._serialized_start=50373 - _globals['_LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTATUS']._serialized_end=50457 - _globals['_LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTYLE']._serialized_start=50459 - _globals['_LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTYLE']._serialized_end=50507 - _globals['_LISTOFFERSREQUEST']._serialized_start=50674 - _globals['_LISTOFFERSREQUEST']._serialized_end=50771 - _globals['_LISTOFFERSRESPONSE']._serialized_start=50773 - _globals['_LISTOFFERSRESPONSE']._serialized_end=50832 - _globals['_LISTOFFERSOFFERS']._serialized_start=50835 - _globals['_LISTOFFERSOFFERS']._serialized_end=50967 - _globals['_LISTPAYSREQUEST']._serialized_start=50970 - _globals['_LISTPAYSREQUEST']._serialized_end=51189 - _globals['_LISTPAYSREQUEST_LISTPAYSSTATUS']._serialized_start=51095 - _globals['_LISTPAYSREQUEST_LISTPAYSSTATUS']._serialized_end=51150 - _globals['_LISTPAYSRESPONSE']._serialized_start=51191 - _globals['_LISTPAYSRESPONSE']._serialized_end=51242 - _globals['_LISTPAYSPAYS']._serialized_start=51245 - _globals['_LISTPAYSPAYS']._serialized_end=51884 - _globals['_LISTPAYSPAYS_LISTPAYSPAYSSTATUS']._serialized_start=51659 - _globals['_LISTPAYSPAYS_LISTPAYSPAYSSTATUS']._serialized_end=51718 - _globals['_LISTHTLCSREQUEST']._serialized_start=51886 - _globals['_LISTHTLCSREQUEST']._serialized_end=51928 - _globals['_LISTHTLCSRESPONSE']._serialized_start=51930 - _globals['_LISTHTLCSRESPONSE']._serialized_end=51985 - _globals['_LISTHTLCSHTLCS']._serialized_start=51988 - _globals['_LISTHTLCSHTLCS']._serialized_end=52253 - _globals['_LISTHTLCSHTLCS_LISTHTLCSHTLCSDIRECTION']._serialized_start=52211 - _globals['_LISTHTLCSHTLCS_LISTHTLCSHTLCSDIRECTION']._serialized_end=52253 - _globals['_MULTIFUNDCHANNELREQUEST']._serialized_start=52256 - _globals['_MULTIFUNDCHANNELREQUEST']._serialized_end=52562 - _globals['_MULTIFUNDCHANNELRESPONSE']._serialized_start=52565 - _globals['_MULTIFUNDCHANNELRESPONSE']._serialized_end=52717 - _globals['_MULTIFUNDCHANNELDESTINATIONS']._serialized_start=52720 - _globals['_MULTIFUNDCHANNELDESTINATIONS']._serialized_end=53103 - _globals['_MULTIFUNDCHANNELCHANNEL_IDS']._serialized_start=53106 - _globals['_MULTIFUNDCHANNELCHANNEL_IDS']._serialized_end=53309 - _globals['_MULTIFUNDCHANNELCHANNEL_IDSCHANNEL_TYPE']._serialized_start=53311 - _globals['_MULTIFUNDCHANNELCHANNEL_IDSCHANNEL_TYPE']._serialized_end=53403 - _globals['_MULTIFUNDCHANNELFAILED']._serialized_start=53406 - _globals['_MULTIFUNDCHANNELFAILED']._serialized_end=53681 - _globals['_MULTIFUNDCHANNELFAILED_MULTIFUNDCHANNELFAILEDMETHOD']._serialized_start=53567 - _globals['_MULTIFUNDCHANNELFAILED_MULTIFUNDCHANNELFAILEDMETHOD']._serialized_end=53681 - _globals['_MULTIFUNDCHANNELFAILEDERROR']._serialized_start=53683 - _globals['_MULTIFUNDCHANNELFAILEDERROR']._serialized_end=53743 - _globals['_MULTIWITHDRAWREQUEST']._serialized_start=53746 - _globals['_MULTIWITHDRAWREQUEST']._serialized_end=53914 - _globals['_MULTIWITHDRAWRESPONSE']._serialized_start=53916 - _globals['_MULTIWITHDRAWRESPONSE']._serialized_end=53965 - _globals['_OFFERREQUEST']._serialized_start=53968 - _globals['_OFFERREQUEST']._serialized_end=54512 - _globals['_OFFERRESPONSE']._serialized_start=54515 - _globals['_OFFERRESPONSE']._serialized_end=54661 - _globals['_OPENCHANNEL_ABORTREQUEST']._serialized_start=54663 - _globals['_OPENCHANNEL_ABORTREQUEST']._serialized_end=54709 - _globals['_OPENCHANNEL_ABORTRESPONSE']._serialized_start=54711 - _globals['_OPENCHANNEL_ABORTRESPONSE']._serialized_end=54800 - _globals['_OPENCHANNEL_BUMPREQUEST']._serialized_start=54803 - _globals['_OPENCHANNEL_BUMPREQUEST']._serialized_end=54962 - _globals['_OPENCHANNEL_BUMPRESPONSE']._serialized_start=54965 - _globals['_OPENCHANNEL_BUMPRESPONSE']._serialized_end=55227 - _globals['_OPENCHANNEL_BUMPCHANNEL_TYPE']._serialized_start=55229 - _globals['_OPENCHANNEL_BUMPCHANNEL_TYPE']._serialized_end=55310 - _globals['_OPENCHANNEL_INITREQUEST']._serialized_start=55313 - _globals['_OPENCHANNEL_INITREQUEST']._serialized_end=55729 - _globals['_OPENCHANNEL_INITRESPONSE']._serialized_start=55732 - _globals['_OPENCHANNEL_INITRESPONSE']._serialized_end=55994 - _globals['_OPENCHANNEL_INITCHANNEL_TYPE']._serialized_start=55996 - _globals['_OPENCHANNEL_INITCHANNEL_TYPE']._serialized_end=56077 - _globals['_OPENCHANNEL_SIGNEDREQUEST']._serialized_start=56079 - _globals['_OPENCHANNEL_SIGNEDREQUEST']._serialized_end=56147 - _globals['_OPENCHANNEL_SIGNEDRESPONSE']._serialized_start=56149 - _globals['_OPENCHANNEL_SIGNEDRESPONSE']._serialized_end=56223 - _globals['_OPENCHANNEL_UPDATEREQUEST']._serialized_start=56225 - _globals['_OPENCHANNEL_UPDATEREQUEST']._serialized_end=56286 - _globals['_OPENCHANNEL_UPDATERESPONSE']._serialized_start=56289 - _globals['_OPENCHANNEL_UPDATERESPONSE']._serialized_end=56591 - _globals['_OPENCHANNEL_UPDATECHANNEL_TYPE']._serialized_start=56593 - _globals['_OPENCHANNEL_UPDATECHANNEL_TYPE']._serialized_end=56676 - _globals['_PINGREQUEST']._serialized_start=56678 - _globals['_PINGREQUEST']._serialized_end=56767 - _globals['_PINGRESPONSE']._serialized_start=56769 - _globals['_PINGRESPONSE']._serialized_end=56799 - _globals['_PLUGINREQUEST']._serialized_start=56802 - _globals['_PLUGINREQUEST']._serialized_end=56947 - _globals['_PLUGINRESPONSE']._serialized_start=56949 - _globals['_PLUGINRESPONSE']._serialized_end=57074 - _globals['_PLUGINPLUGINS']._serialized_start=57076 - _globals['_PLUGINPLUGINS']._serialized_end=57138 - _globals['_RENEPAYSTATUSREQUEST']._serialized_start=57140 - _globals['_RENEPAYSTATUSREQUEST']._serialized_end=57200 - _globals['_RENEPAYSTATUSRESPONSE']._serialized_start=57202 - _globals['_RENEPAYSTATUSRESPONSE']._serialized_end=57273 - _globals['_RENEPAYSTATUSPAYSTATUS']._serialized_start=57276 - _globals['_RENEPAYSTATUSPAYSTATUS']._serialized_end=57758 - _globals['_RENEPAYSTATUSPAYSTATUS_RENEPAYSTATUSPAYSTATUSSTATUS']._serialized_start=57621 - _globals['_RENEPAYSTATUSPAYSTATUS_RENEPAYSTATUSPAYSTATUSSTATUS']._serialized_end=57690 - _globals['_RENEPAYREQUEST']._serialized_start=57761 - _globals['_RENEPAYREQUEST']._serialized_end=58107 - _globals['_RENEPAYRESPONSE']._serialized_start=58110 - _globals['_RENEPAYRESPONSE']._serialized_end=58433 - _globals['_RENEPAYRESPONSE_RENEPAYSTATUS']._serialized_start=58363 - _globals['_RENEPAYRESPONSE_RENEPAYSTATUS']._serialized_end=58417 - _globals['_RESERVEINPUTSREQUEST']._serialized_start=58435 - _globals['_RESERVEINPUTSREQUEST']._serialized_end=58543 - _globals['_RESERVEINPUTSRESPONSE']._serialized_start=58545 - _globals['_RESERVEINPUTSRESPONSE']._serialized_end=58622 - _globals['_RESERVEINPUTSRESERVATIONS']._serialized_start=58624 - _globals['_RESERVEINPUTSRESERVATIONS']._serialized_end=58746 - _globals['_SENDCUSTOMMSGREQUEST']._serialized_start=58748 - _globals['_SENDCUSTOMMSGREQUEST']._serialized_end=58800 - _globals['_SENDCUSTOMMSGRESPONSE']._serialized_start=58802 - _globals['_SENDCUSTOMMSGRESPONSE']._serialized_end=58841 - _globals['_SENDINVOICEREQUEST']._serialized_start=58844 - _globals['_SENDINVOICEREQUEST']._serialized_end=59020 - _globals['_SENDINVOICERESPONSE']._serialized_start=59023 - _globals['_SENDINVOICERESPONSE']._serialized_end=59614 - _globals['_SENDINVOICERESPONSE_SENDINVOICESTATUS']._serialized_start=59425 - _globals['_SENDINVOICERESPONSE_SENDINVOICESTATUS']._serialized_end=59479 - _globals['_SETCHANNELREQUEST']._serialized_start=59617 - _globals['_SETCHANNELREQUEST']._serialized_end=59915 - _globals['_SETCHANNELRESPONSE']._serialized_start=59917 - _globals['_SETCHANNELRESPONSE']._serialized_end=59980 - _globals['_SETCHANNELCHANNELS']._serialized_start=59983 - _globals['_SETCHANNELCHANNELS']._serialized_end=60441 - _globals['_SETCONFIGREQUEST']._serialized_start=60443 - _globals['_SETCONFIGREQUEST']._serialized_end=60503 - _globals['_SETCONFIGRESPONSE']._serialized_start=60505 - _globals['_SETCONFIGRESPONSE']._serialized_end=60562 - _globals['_SETCONFIGCONFIG']._serialized_start=60565 - _globals['_SETCONFIGCONFIG']._serialized_end=60858 - _globals['_SETPSBTVERSIONREQUEST']._serialized_start=60860 - _globals['_SETPSBTVERSIONREQUEST']._serialized_end=60914 - _globals['_SETPSBTVERSIONRESPONSE']._serialized_start=60916 - _globals['_SETPSBTVERSIONRESPONSE']._serialized_end=60954 - _globals['_SIGNINVOICEREQUEST']._serialized_start=60956 - _globals['_SIGNINVOICEREQUEST']._serialized_end=60995 - _globals['_SIGNINVOICERESPONSE']._serialized_start=60997 - _globals['_SIGNINVOICERESPONSE']._serialized_end=61034 - _globals['_SIGNMESSAGEREQUEST']._serialized_start=61036 - _globals['_SIGNMESSAGEREQUEST']._serialized_end=61073 - _globals['_SIGNMESSAGERESPONSE']._serialized_start=61075 - _globals['_SIGNMESSAGERESPONSE']._serialized_end=61145 - _globals['_SPLICE_INITREQUEST']._serialized_start=61148 - _globals['_SPLICE_INITREQUEST']._serialized_end=61349 - _globals['_SPLICE_INITRESPONSE']._serialized_start=61351 - _globals['_SPLICE_INITRESPONSE']._serialized_end=61386 - _globals['_SPLICE_SIGNEDREQUEST']._serialized_start=61388 - _globals['_SPLICE_SIGNEDREQUEST']._serialized_end=61484 - _globals['_SPLICE_SIGNEDRESPONSE']._serialized_start=61486 - _globals['_SPLICE_SIGNEDRESPONSE']._serialized_end=61567 - _globals['_SPLICE_UPDATEREQUEST']._serialized_start=61569 - _globals['_SPLICE_UPDATEREQUEST']._serialized_end=61625 - _globals['_SPLICE_UPDATERESPONSE']._serialized_start=61627 - _globals['_SPLICE_UPDATERESPONSE']._serialized_end=61693 - _globals['_UNRESERVEINPUTSREQUEST']._serialized_start=61695 - _globals['_UNRESERVEINPUTSREQUEST']._serialized_end=61767 - _globals['_UNRESERVEINPUTSRESPONSE']._serialized_start=61769 - _globals['_UNRESERVEINPUTSRESPONSE']._serialized_end=61850 - _globals['_UNRESERVEINPUTSRESERVATIONS']._serialized_start=61853 - _globals['_UNRESERVEINPUTSRESERVATIONS']._serialized_end=62004 - _globals['_UPGRADEWALLETREQUEST']._serialized_start=62006 - _globals['_UPGRADEWALLETREQUEST']._serialized_end=62116 - _globals['_UPGRADEWALLETRESPONSE']._serialized_start=62119 - _globals['_UPGRADEWALLETRESPONSE']._serialized_end=62268 - _globals['_WAITBLOCKHEIGHTREQUEST']._serialized_start=62270 - _globals['_WAITBLOCKHEIGHTREQUEST']._serialized_end=62349 - _globals['_WAITBLOCKHEIGHTRESPONSE']._serialized_start=62351 - _globals['_WAITBLOCKHEIGHTRESPONSE']._serialized_end=62397 - _globals['_WAITREQUEST']._serialized_start=62400 - _globals['_WAITREQUEST']._serialized_end=62649 - _globals['_WAITREQUEST_WAITSUBSYSTEM']._serialized_start=62536 - _globals['_WAITREQUEST_WAITSUBSYSTEM']._serialized_end=62593 - _globals['_WAITREQUEST_WAITINDEXNAME']._serialized_start=62595 - _globals['_WAITREQUEST_WAITINDEXNAME']._serialized_end=62649 - _globals['_WAITRESPONSE']._serialized_start=62652 - _globals['_WAITRESPONSE']._serialized_end=62931 - _globals['_WAITRESPONSE_WAITSUBSYSTEM']._serialized_start=62536 - _globals['_WAITRESPONSE_WAITSUBSYSTEM']._serialized_end=62593 - _globals['_WAITDETAILS']._serialized_start=62934 - _globals['_WAITDETAILS']._serialized_end=63570 - _globals['_WAITDETAILS_WAITDETAILSSTATUS']._serialized_start=63276 - _globals['_WAITDETAILS_WAITDETAILSSTATUS']._serialized_end=63413 - _globals['_LISTCONFIGSREQUEST']._serialized_start=63572 - _globals['_LISTCONFIGSREQUEST']._serialized_end=63624 - _globals['_LISTCONFIGSRESPONSE']._serialized_start=63627 - _globals['_LISTCONFIGSRESPONSE']._serialized_end=67178 - _globals['_LISTCONFIGSCONFIGS']._serialized_start=67181 - _globals['_LISTCONFIGSCONFIGS']._serialized_end=73164 - _globals['_LISTCONFIGSCONFIGSCONF']._serialized_start=73167 - _globals['_LISTCONFIGSCONFIGSCONF']._serialized_end=73329 - _globals['_LISTCONFIGSCONFIGSCONF_LISTCONFIGSCONFIGSCONFSOURCE']._serialized_start=73286 - _globals['_LISTCONFIGSCONFIGSCONF_LISTCONFIGSCONFIGSCONFSOURCE']._serialized_end=73329 - _globals['_LISTCONFIGSCONFIGSDEVELOPER']._serialized_start=73331 - _globals['_LISTCONFIGSCONFIGSDEVELOPER']._serialized_end=73389 - _globals['_LISTCONFIGSCONFIGSCLEARPLUGINS']._serialized_start=73391 - _globals['_LISTCONFIGSCONFIGSCLEARPLUGINS']._serialized_end=73452 - _globals['_LISTCONFIGSCONFIGSDISABLEMPP']._serialized_start=73454 - _globals['_LISTCONFIGSCONFIGSDISABLEMPP']._serialized_end=73545 - _globals['_LISTCONFIGSCONFIGSMAINNET']._serialized_start=73547 - _globals['_LISTCONFIGSCONFIGSMAINNET']._serialized_end=73603 - _globals['_LISTCONFIGSCONFIGSREGTEST']._serialized_start=73605 - _globals['_LISTCONFIGSCONFIGSREGTEST']._serialized_end=73661 - _globals['_LISTCONFIGSCONFIGSSIGNET']._serialized_start=73663 - _globals['_LISTCONFIGSCONFIGSSIGNET']._serialized_end=73718 - _globals['_LISTCONFIGSCONFIGSTESTNET']._serialized_start=73720 - _globals['_LISTCONFIGSCONFIGSTESTNET']._serialized_end=73776 - _globals['_LISTCONFIGSCONFIGSIMPORTANTPLUGIN']._serialized_start=73778 - _globals['_LISTCONFIGSCONFIGSIMPORTANTPLUGIN']._serialized_end=73850 - _globals['_LISTCONFIGSCONFIGSPLUGIN']._serialized_start=73852 - _globals['_LISTCONFIGSCONFIGSPLUGIN']._serialized_end=73915 - _globals['_LISTCONFIGSCONFIGSPLUGINDIR']._serialized_start=73917 - _globals['_LISTCONFIGSCONFIGSPLUGINDIR']._serialized_end=73983 - _globals['_LISTCONFIGSCONFIGSLIGHTNINGDIR']._serialized_start=73985 - _globals['_LISTCONFIGSCONFIGSLIGHTNINGDIR']._serialized_end=74052 - _globals['_LISTCONFIGSCONFIGSNETWORK']._serialized_start=74054 - _globals['_LISTCONFIGSCONFIGSNETWORK']._serialized_end=74116 - _globals['_LISTCONFIGSCONFIGSALLOWDEPRECATEDAPIS']._serialized_start=74118 - _globals['_LISTCONFIGSCONFIGSALLOWDEPRECATEDAPIS']._serialized_end=74193 - _globals['_LISTCONFIGSCONFIGSRPCFILE']._serialized_start=74195 - _globals['_LISTCONFIGSCONFIGSRPCFILE']._serialized_end=74257 - _globals['_LISTCONFIGSCONFIGSDISABLEPLUGIN']._serialized_start=74259 - _globals['_LISTCONFIGSCONFIGSDISABLEPLUGIN']._serialized_end=74329 - _globals['_LISTCONFIGSCONFIGSALWAYSUSEPROXY']._serialized_start=74331 - _globals['_LISTCONFIGSCONFIGSALWAYSUSEPROXY']._serialized_end=74401 - _globals['_LISTCONFIGSCONFIGSDAEMON']._serialized_start=74403 - _globals['_LISTCONFIGSCONFIGSDAEMON']._serialized_end=74458 - _globals['_LISTCONFIGSCONFIGSWALLET']._serialized_start=74460 - _globals['_LISTCONFIGSCONFIGSWALLET']._serialized_end=74521 - _globals['_LISTCONFIGSCONFIGSLARGECHANNELS']._serialized_start=74523 - _globals['_LISTCONFIGSCONFIGSLARGECHANNELS']._serialized_end=74585 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALDUALFUND']._serialized_start=74587 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALDUALFUND']._serialized_end=74656 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALSPLICING']._serialized_start=74658 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALSPLICING']._serialized_end=74727 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALONIONMESSAGES']._serialized_start=74729 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALONIONMESSAGES']._serialized_end=74803 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALOFFERS']._serialized_start=74805 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALOFFERS']._serialized_end=74872 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALSHUTDOWNWRONGFUNDING']._serialized_start=74874 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALSHUTDOWNWRONGFUNDING']._serialized_end=74955 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALPEERSTORAGE']._serialized_start=74957 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALPEERSTORAGE']._serialized_end=75029 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALANCHORS']._serialized_start=75031 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALANCHORS']._serialized_end=75099 - _globals['_LISTCONFIGSCONFIGSDATABASEUPGRADE']._serialized_start=75101 - _globals['_LISTCONFIGSCONFIGSDATABASEUPGRADE']._serialized_end=75172 - _globals['_LISTCONFIGSCONFIGSRGB']._serialized_start=75174 - _globals['_LISTCONFIGSCONFIGSRGB']._serialized_end=75232 - _globals['_LISTCONFIGSCONFIGSALIAS']._serialized_start=75234 - _globals['_LISTCONFIGSCONFIGSALIAS']._serialized_end=75294 - _globals['_LISTCONFIGSCONFIGSPIDFILE']._serialized_start=75296 - _globals['_LISTCONFIGSCONFIGSPIDFILE']._serialized_end=75358 - _globals['_LISTCONFIGSCONFIGSIGNOREFEELIMITS']._serialized_start=75360 - _globals['_LISTCONFIGSCONFIGSIGNOREFEELIMITS']._serialized_end=75431 - _globals['_LISTCONFIGSCONFIGSWATCHTIMEBLOCKS']._serialized_start=75433 - _globals['_LISTCONFIGSCONFIGSWATCHTIMEBLOCKS']._serialized_end=75503 - _globals['_LISTCONFIGSCONFIGSMAXLOCKTIMEBLOCKS']._serialized_start=75505 - _globals['_LISTCONFIGSCONFIGSMAXLOCKTIMEBLOCKS']._serialized_end=75577 - _globals['_LISTCONFIGSCONFIGSFUNDINGCONFIRMS']._serialized_start=75579 - _globals['_LISTCONFIGSCONFIGSFUNDINGCONFIRMS']._serialized_end=75649 - _globals['_LISTCONFIGSCONFIGSCLTVDELTA']._serialized_start=75651 - _globals['_LISTCONFIGSCONFIGSCLTVDELTA']._serialized_end=75715 - _globals['_LISTCONFIGSCONFIGSCLTVFINAL']._serialized_start=75717 - _globals['_LISTCONFIGSCONFIGSCLTVFINAL']._serialized_end=75781 - _globals['_LISTCONFIGSCONFIGSCOMMITTIME']._serialized_start=75783 - _globals['_LISTCONFIGSCONFIGSCOMMITTIME']._serialized_end=75848 - _globals['_LISTCONFIGSCONFIGSFEEBASE']._serialized_start=75850 - _globals['_LISTCONFIGSCONFIGSFEEBASE']._serialized_end=75912 - _globals['_LISTCONFIGSCONFIGSRESCAN']._serialized_start=75914 - _globals['_LISTCONFIGSCONFIGSRESCAN']._serialized_end=75975 - _globals['_LISTCONFIGSCONFIGSFEEPERSATOSHI']._serialized_start=75977 - _globals['_LISTCONFIGSCONFIGSFEEPERSATOSHI']._serialized_end=76045 - _globals['_LISTCONFIGSCONFIGSMAXCONCURRENTHTLCS']._serialized_start=76047 - _globals['_LISTCONFIGSCONFIGSMAXCONCURRENTHTLCS']._serialized_end=76120 - _globals['_LISTCONFIGSCONFIGSHTLCMINIMUMMSAT']._serialized_start=76122 - _globals['_LISTCONFIGSCONFIGSHTLCMINIMUMMSAT']._serialized_end=76206 - _globals['_LISTCONFIGSCONFIGSHTLCMAXIMUMMSAT']._serialized_start=76208 - _globals['_LISTCONFIGSCONFIGSHTLCMAXIMUMMSAT']._serialized_end=76292 - _globals['_LISTCONFIGSCONFIGSMAXDUSTHTLCEXPOSUREMSAT']._serialized_start=76294 - _globals['_LISTCONFIGSCONFIGSMAXDUSTHTLCEXPOSUREMSAT']._serialized_end=76386 - _globals['_LISTCONFIGSCONFIGSMINCAPACITYSAT']._serialized_start=76388 - _globals['_LISTCONFIGSCONFIGSMINCAPACITYSAT']._serialized_end=76491 - _globals['_LISTCONFIGSCONFIGSADDR']._serialized_start=76493 - _globals['_LISTCONFIGSCONFIGSADDR']._serialized_end=76554 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDR']._serialized_start=76556 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDR']._serialized_end=76625 - _globals['_LISTCONFIGSCONFIGSBINDADDR']._serialized_start=76627 - _globals['_LISTCONFIGSCONFIGSBINDADDR']._serialized_end=76692 - _globals['_LISTCONFIGSCONFIGSOFFLINE']._serialized_start=76694 - _globals['_LISTCONFIGSCONFIGSOFFLINE']._serialized_end=76750 - _globals['_LISTCONFIGSCONFIGSAUTOLISTEN']._serialized_start=76752 - _globals['_LISTCONFIGSCONFIGSAUTOLISTEN']._serialized_end=76818 - _globals['_LISTCONFIGSCONFIGSPROXY']._serialized_start=76820 - _globals['_LISTCONFIGSCONFIGSPROXY']._serialized_end=76880 - _globals['_LISTCONFIGSCONFIGSDISABLEDNS']._serialized_start=76882 - _globals['_LISTCONFIGSCONFIGSDISABLEDNS']._serialized_end=76941 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVERED']._serialized_start=76944 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVERED']._serialized_end=77202 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVERED_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVEREDVALUE_STR']._serialized_start=77120 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVERED_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVEREDVALUE_STR']._serialized_end=77202 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVEREDPORT']._serialized_start=77204 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVEREDPORT']._serialized_end=77285 - _globals['_LISTCONFIGSCONFIGSENCRYPTEDHSM']._serialized_start=77287 - _globals['_LISTCONFIGSCONFIGSENCRYPTEDHSM']._serialized_end=77348 - _globals['_LISTCONFIGSCONFIGSRPCFILEMODE']._serialized_start=77350 - _globals['_LISTCONFIGSCONFIGSRPCFILEMODE']._serialized_end=77416 - _globals['_LISTCONFIGSCONFIGSLOGLEVEL']._serialized_start=77418 - _globals['_LISTCONFIGSCONFIGSLOGLEVEL']._serialized_end=77481 - _globals['_LISTCONFIGSCONFIGSLOGPREFIX']._serialized_start=77483 - _globals['_LISTCONFIGSCONFIGSLOGPREFIX']._serialized_end=77547 - _globals['_LISTCONFIGSCONFIGSLOGFILE']._serialized_start=77549 - _globals['_LISTCONFIGSCONFIGSLOGFILE']._serialized_end=77613 - _globals['_LISTCONFIGSCONFIGSLOGTIMESTAMPS']._serialized_start=77615 - _globals['_LISTCONFIGSCONFIGSLOGTIMESTAMPS']._serialized_end=77684 - _globals['_LISTCONFIGSCONFIGSFORCEFEERATES']._serialized_start=77686 - _globals['_LISTCONFIGSCONFIGSFORCEFEERATES']._serialized_end=77754 - _globals['_LISTCONFIGSCONFIGSSUBDAEMON']._serialized_start=77756 - _globals['_LISTCONFIGSCONFIGSSUBDAEMON']._serialized_end=77822 - _globals['_LISTCONFIGSCONFIGSFETCHINVOICENOCONNECT']._serialized_start=77824 - _globals['_LISTCONFIGSCONFIGSFETCHINVOICENOCONNECT']._serialized_end=77926 - _globals['_LISTCONFIGSCONFIGSACCEPTHTLCTLVTYPES']._serialized_start=77928 - _globals['_LISTCONFIGSCONFIGSACCEPTHTLCTLVTYPES']._serialized_end=78001 - _globals['_LISTCONFIGSCONFIGSTORSERVICEPASSWORD']._serialized_start=78003 - _globals['_LISTCONFIGSCONFIGSTORSERVICEPASSWORD']._serialized_end=78076 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDNS']._serialized_start=78078 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDNS']._serialized_end=78149 - _globals['_LISTCONFIGSCONFIGSREQUIRECONFIRMEDINPUTS']._serialized_start=78151 - _globals['_LISTCONFIGSCONFIGSREQUIRECONFIRMEDINPUTS']._serialized_end=78229 - _globals['_LISTCONFIGSCONFIGSCOMMITFEE']._serialized_start=78231 - _globals['_LISTCONFIGSCONFIGSCOMMITFEE']._serialized_end=78295 - _globals['_LISTCONFIGSCONFIGSCOMMITFEERATEOFFSET']._serialized_start=78297 - _globals['_LISTCONFIGSCONFIGSCOMMITFEERATEOFFSET']._serialized_end=78371 - _globals['_LISTCONFIGSPLUGINS']._serialized_start=78373 - _globals['_LISTCONFIGSPLUGINS']._serialized_end=78487 - _globals['_LISTCONFIGSPLUGINSOPTIONS']._serialized_start=78489 - _globals['_LISTCONFIGSPLUGINSOPTIONS']._serialized_end=78516 - _globals['_LISTCONFIGSIMPORTANTPLUGINS']._serialized_start=78519 - _globals['_LISTCONFIGSIMPORTANTPLUGINS']._serialized_end=78651 - _globals['_LISTCONFIGSIMPORTANTPLUGINSOPTIONS']._serialized_start=78653 - _globals['_LISTCONFIGSIMPORTANTPLUGINSOPTIONS']._serialized_end=78689 - _globals['_STOPREQUEST']._serialized_start=78691 - _globals['_STOPREQUEST']._serialized_end=78704 - _globals['_STOPRESPONSE']._serialized_start=78706 - _globals['_STOPRESPONSE']._serialized_end=78819 - _globals['_STOPRESPONSE_STOPRESULT']._serialized_start=78773 - _globals['_STOPRESPONSE_STOPRESULT']._serialized_end=78808 - _globals['_HELPREQUEST']._serialized_start=78821 - _globals['_HELPREQUEST']._serialized_end=78868 - _globals['_HELPRESPONSE']._serialized_start=78871 - _globals['_HELPRESPONSE']._serialized_end=79020 - _globals['_HELPRESPONSE_HELPFORMATHINT']._serialized_start=78976 - _globals['_HELPRESPONSE_HELPFORMATHINT']._serialized_end=79004 - _globals['_HELPHELP']._serialized_start=79022 - _globals['_HELPHELP']._serialized_end=79049 - _globals['_PREAPPROVEKEYSENDREQUEST']._serialized_start=79051 - _globals['_PREAPPROVEKEYSENDREQUEST']._serialized_end=79154 - _globals['_PREAPPROVEKEYSENDRESPONSE']._serialized_start=79156 - _globals['_PREAPPROVEKEYSENDRESPONSE']._serialized_end=79183 - _globals['_PREAPPROVEINVOICEREQUEST']._serialized_start=79185 - _globals['_PREAPPROVEINVOICEREQUEST']._serialized_end=79227 - _globals['_PREAPPROVEINVOICERESPONSE']._serialized_start=79229 - _globals['_PREAPPROVEINVOICERESPONSE']._serialized_end=79256 - _globals['_STATICBACKUPREQUEST']._serialized_start=79258 - _globals['_STATICBACKUPREQUEST']._serialized_end=79279 - _globals['_STATICBACKUPRESPONSE']._serialized_start=79281 - _globals['_STATICBACKUPRESPONSE']._serialized_end=79316 - _globals['_BKPRCHANNELSAPYREQUEST']._serialized_start=79318 - _globals['_BKPRCHANNELSAPYREQUEST']._serialized_end=79418 - _globals['_BKPRCHANNELSAPYRESPONSE']._serialized_start=79420 - _globals['_BKPRCHANNELSAPYRESPONSE']._serialized_end=79501 - _globals['_BKPRCHANNELSAPYCHANNELS_APY']._serialized_start=79504 - _globals['_BKPRCHANNELSAPYCHANNELS_APY']._serialized_end=80394 - _globals['_BKPRDUMPINCOMECSVREQUEST']._serialized_start=80397 - _globals['_BKPRDUMPINCOMECSVREQUEST']._serialized_end=80607 - _globals['_BKPRDUMPINCOMECSVRESPONSE']._serialized_start=80610 - _globals['_BKPRDUMPINCOMECSVRESPONSE']._serialized_end=80824 - _globals['_BKPRDUMPINCOMECSVRESPONSE_BKPRDUMPINCOMECSVCSV_FORMAT']._serialized_start=80737 - _globals['_BKPRDUMPINCOMECSVRESPONSE_BKPRDUMPINCOMECSVCSV_FORMAT']._serialized_end=80824 - _globals['_BKPRINSPECTREQUEST']._serialized_start=80826 - _globals['_BKPRINSPECTREQUEST']._serialized_end=80863 - _globals['_BKPRINSPECTRESPONSE']._serialized_start=80865 - _globals['_BKPRINSPECTRESPONSE']._serialized_end=80920 - _globals['_BKPRINSPECTTXS']._serialized_start=80923 - _globals['_BKPRINSPECTTXS']._serialized_end=81077 - _globals['_BKPRINSPECTTXSOUTPUTS']._serialized_start=81080 - _globals['_BKPRINSPECTTXSOUTPUTS']._serialized_end=81524 - _globals['_BKPRLISTACCOUNTEVENTSREQUEST']._serialized_start=81526 - _globals['_BKPRLISTACCOUNTEVENTSREQUEST']._serialized_end=81630 - _globals['_BKPRLISTACCOUNTEVENTSRESPONSE']._serialized_start=81632 - _globals['_BKPRLISTACCOUNTEVENTSRESPONSE']._serialized_end=81713 - _globals['_BKPRLISTACCOUNTEVENTSEVENTS']._serialized_start=81716 - _globals['_BKPRLISTACCOUNTEVENTSEVENTS']._serialized_end=82389 - _globals['_BKPRLISTACCOUNTEVENTSEVENTS_BKPRLISTACCOUNTEVENTSEVENTSTYPE']._serialized_start=82192 - _globals['_BKPRLISTACCOUNTEVENTSEVENTS_BKPRLISTACCOUNTEVENTSEVENTSTYPE']._serialized_end=82266 - _globals['_BKPRLISTBALANCESREQUEST']._serialized_start=82391 - _globals['_BKPRLISTBALANCESREQUEST']._serialized_end=82416 - _globals['_BKPRLISTBALANCESRESPONSE']._serialized_start=82418 - _globals['_BKPRLISTBALANCESRESPONSE']._serialized_end=82493 - _globals['_BKPRLISTBALANCESACCOUNTS']._serialized_start=82496 - _globals['_BKPRLISTBALANCESACCOUNTS']._serialized_end=82822 - _globals['_BKPRLISTBALANCESACCOUNTSBALANCES']._serialized_start=82824 - _globals['_BKPRLISTBALANCESACCOUNTSBALANCES']._serialized_end=82912 - _globals['_BKPRLISTINCOMEREQUEST']._serialized_start=82915 - _globals['_BKPRLISTINCOMEREQUEST']._serialized_end=83066 - _globals['_BKPRLISTINCOMERESPONSE']._serialized_start=83068 - _globals['_BKPRLISTINCOMERESPONSE']._serialized_end=83149 - _globals['_BKPRLISTINCOMEINCOME_EVENTS']._serialized_start=83152 - _globals['_BKPRLISTINCOMEINCOME_EVENTS']._serialized_end=83461 - _globals['_BLACKLISTRUNEREQUEST']._serialized_start=83463 - _globals['_BLACKLISTRUNEREQUEST']._serialized_end=83541 - _globals['_BLACKLISTRUNERESPONSE']._serialized_start=83543 - _globals['_BLACKLISTRUNERESPONSE']._serialized_end=83614 - _globals['_BLACKLISTRUNEBLACKLIST']._serialized_start=83616 - _globals['_BLACKLISTRUNEBLACKLIST']._serialized_end=83668 - _globals['_CHECKRUNEREQUEST']._serialized_start=83670 - _globals['_CHECKRUNEREQUEST']._serialized_end=83782 - _globals['_CHECKRUNERESPONSE']._serialized_start=83784 - _globals['_CHECKRUNERESPONSE']._serialized_end=83818 - _globals['_CREATERUNEREQUEST']._serialized_start=83820 - _globals['_CREATERUNEREQUEST']._serialized_end=83889 - _globals['_CREATERUNERESPONSE']._serialized_start=83891 - _globals['_CREATERUNERESPONSE']._serialized_end=84014 - _globals['_SHOWRUNESREQUEST']._serialized_start=84016 - _globals['_SHOWRUNESREQUEST']._serialized_end=84062 - _globals['_SHOWRUNESRESPONSE']._serialized_start=84064 - _globals['_SHOWRUNESRESPONSE']._serialized_end=84119 - _globals['_SHOWRUNESRUNES']._serialized_start=84122 - _globals['_SHOWRUNESRUNES']._serialized_end=84407 - _globals['_SHOWRUNESRUNESRESTRICTIONS']._serialized_start=84409 - _globals['_SHOWRUNESRUNESRESTRICTIONS']._serialized_end=84521 - _globals['_SHOWRUNESRUNESRESTRICTIONSALTERNATIVES']._serialized_start=84523 - _globals['_SHOWRUNESRUNESRESTRICTIONSALTERNATIVES']._serialized_end=84633 - _globals['_STREAMBLOCKADDEDREQUEST']._serialized_start=84635 - _globals['_STREAMBLOCKADDEDREQUEST']._serialized_end=84660 - _globals['_BLOCKADDEDNOTIFICATION']._serialized_start=84662 - _globals['_BLOCKADDEDNOTIFICATION']._serialized_end=84716 - _globals['_STREAMCHANNELOPENFAILEDREQUEST']._serialized_start=84718 - _globals['_STREAMCHANNELOPENFAILEDREQUEST']._serialized_end=84750 - _globals['_CHANNELOPENFAILEDNOTIFICATION']._serialized_start=84752 - _globals['_CHANNELOPENFAILEDNOTIFICATION']._serialized_end=84803 - _globals['_STREAMCHANNELOPENEDREQUEST']._serialized_start=84805 - _globals['_STREAMCHANNELOPENEDREQUEST']._serialized_end=84833 - _globals['_CHANNELOPENEDNOTIFICATION']._serialized_start=84835 - _globals['_CHANNELOPENEDNOTIFICATION']._serialized_end=84954 - _globals['_STREAMCONNECTREQUEST']._serialized_start=84956 - _globals['_STREAMCONNECTREQUEST']._serialized_end=84978 - _globals['_PEERCONNECTNOTIFICATION']._serialized_start=84981 - _globals['_PEERCONNECTNOTIFICATION']._serialized_end=85171 - _globals['_PEERCONNECTNOTIFICATION_PEERCONNECTDIRECTION']._serialized_start=85132 - _globals['_PEERCONNECTNOTIFICATION_PEERCONNECTDIRECTION']._serialized_end=85171 - _globals['_PEERCONNECTADDRESS']._serialized_start=85174 - _globals['_PEERCONNECTADDRESS']._serialized_end=85441 - _globals['_PEERCONNECTADDRESS_PEERCONNECTADDRESSTYPE']._serialized_start=85325 - _globals['_PEERCONNECTADDRESS_PEERCONNECTADDRESSTYPE']._serialized_end=85409 - _globals['_STREAMCUSTOMMSGREQUEST']._serialized_start=85443 - _globals['_STREAMCUSTOMMSGREQUEST']._serialized_end=85467 - _globals['_CUSTOMMSGNOTIFICATION']._serialized_start=85469 - _globals['_CUSTOMMSGNOTIFICATION']._serialized_end=85526 - _globals['_NODE']._serialized_start=85529 - _globals['_NODE']._serialized_end=93668 + _globals['_DECODEOFFER_PATHS']._serialized_end=39393 + _globals['_DECODEOFFER_RECURRENCEPAYWINDOW']._serialized_start=39396 + _globals['_DECODEOFFER_RECURRENCEPAYWINDOW']._serialized_end=39534 + _globals['_DECODEINVREQ_PATHS']._serialized_start=39537 + _globals['_DECODEINVREQ_PATHS']._serialized_end=39818 + _globals['_DECODEINVREQ_PATHSPATH']._serialized_start=39820 + _globals['_DECODEINVREQ_PATHSPATH']._serialized_end=39903 + _globals['_DECODEINVOICE_PATHSPATH']._serialized_start=39905 + _globals['_DECODEINVOICE_PATHSPATH']._serialized_end=39989 + _globals['_DECODEINVOICE_FALLBACKS']._serialized_start=39991 + _globals['_DECODEINVOICE_FALLBACKS']._serialized_end=40080 + _globals['_DECODEFALLBACKS']._serialized_start=40083 + _globals['_DECODEFALLBACKS']._serialized_end=40381 + _globals['_DECODEFALLBACKS_DECODEFALLBACKSTYPE']._serialized_start=40251 + _globals['_DECODEFALLBACKS_DECODEFALLBACKSTYPE']._serialized_end=40326 + _globals['_DECODEEXTRA']._serialized_start=40383 + _globals['_DECODEEXTRA']._serialized_end=40423 + _globals['_DECODERESTRICTIONS']._serialized_start=40425 + _globals['_DECODERESTRICTIONS']._serialized_end=40484 + _globals['_DELPAYREQUEST']._serialized_start=40487 + _globals['_DELPAYREQUEST']._serialized_end=40681 + _globals['_DELPAYREQUEST_DELPAYSTATUS']._serialized_start=40618 + _globals['_DELPAYREQUEST_DELPAYSTATUS']._serialized_end=40658 + _globals['_DELPAYRESPONSE']._serialized_start=40683 + _globals['_DELPAYRESPONSE']._serialized_end=40738 + _globals['_DELPAYPAYMENTS']._serialized_start=40741 + _globals['_DELPAYPAYMENTS']._serialized_end=41456 + _globals['_DELPAYPAYMENTS_DELPAYPAYMENTSSTATUS']._serialized_start=41219 + _globals['_DELPAYPAYMENTS_DELPAYPAYMENTSSTATUS']._serialized_end=41280 + _globals['_DELFORWARDREQUEST']._serialized_start=41459 + _globals['_DELFORWARDREQUEST']._serialized_end=41638 + _globals['_DELFORWARDREQUEST_DELFORWARDSTATUS']._serialized_start=41577 + _globals['_DELFORWARDREQUEST_DELFORWARDSTATUS']._serialized_end=41638 + _globals['_DELFORWARDRESPONSE']._serialized_start=41640 + _globals['_DELFORWARDRESPONSE']._serialized_end=41660 + _globals['_DISABLEOFFERREQUEST']._serialized_start=41662 + _globals['_DISABLEOFFERREQUEST']._serialized_end=41701 + _globals['_DISABLEOFFERRESPONSE']._serialized_start=41704 + _globals['_DISABLEOFFERRESPONSE']._serialized_end=41840 + _globals['_DISCONNECTREQUEST']._serialized_start=41842 + _globals['_DISCONNECTREQUEST']._serialized_end=41903 + _globals['_DISCONNECTRESPONSE']._serialized_start=41905 + _globals['_DISCONNECTRESPONSE']._serialized_end=41925 + _globals['_FEERATESREQUEST']._serialized_start=41927 + _globals['_FEERATESREQUEST']._serialized_end=42034 + _globals['_FEERATESREQUEST_FEERATESSTYLE']._serialized_start=41997 + _globals['_FEERATESREQUEST_FEERATESSTYLE']._serialized_end=42034 + _globals['_FEERATESRESPONSE']._serialized_start=42037 + _globals['_FEERATESRESPONSE']._serialized_end=42321 + _globals['_FEERATESPERKB']._serialized_start=42324 + _globals['_FEERATESPERKB']._serialized_end=42791 + _globals['_FEERATESPERKBESTIMATES']._serialized_start=42793 + _globals['_FEERATESPERKBESTIMATES']._serialized_end=42880 + _globals['_FEERATESPERKW']._serialized_start=42883 + _globals['_FEERATESPERKW']._serialized_end=43350 + _globals['_FEERATESPERKWESTIMATES']._serialized_start=43352 + _globals['_FEERATESPERKWESTIMATES']._serialized_end=43439 + _globals['_FEERATESONCHAIN_FEE_ESTIMATES']._serialized_start=43442 + _globals['_FEERATESONCHAIN_FEE_ESTIMATES']._serialized_end=43725 + _globals['_FETCHINVOICEREQUEST']._serialized_start=43728 + _globals['_FETCHINVOICEREQUEST']._serialized_end=44089 + _globals['_FETCHINVOICERESPONSE']._serialized_start=44092 + _globals['_FETCHINVOICERESPONSE']._serialized_end=44246 + _globals['_FETCHINVOICECHANGES']._serialized_start=44249 + _globals['_FETCHINVOICECHANGES']._serialized_end=44507 + _globals['_FETCHINVOICENEXT_PERIOD']._serialized_start=44509 + _globals['_FETCHINVOICENEXT_PERIOD']._serialized_end=44635 + _globals['_FUNDCHANNEL_CANCELREQUEST']._serialized_start=44637 + _globals['_FUNDCHANNEL_CANCELREQUEST']._serialized_end=44676 + _globals['_FUNDCHANNEL_CANCELRESPONSE']._serialized_start=44678 + _globals['_FUNDCHANNEL_CANCELRESPONSE']._serialized_end=44725 + _globals['_FUNDCHANNEL_COMPLETEREQUEST']._serialized_start=44727 + _globals['_FUNDCHANNEL_COMPLETEREQUEST']._serialized_end=44782 + _globals['_FUNDCHANNEL_COMPLETERESPONSE']._serialized_start=44784 + _globals['_FUNDCHANNEL_COMPLETERESPONSE']._serialized_end=44863 + _globals['_FUNDCHANNELREQUEST']._serialized_start=44866 + _globals['_FUNDCHANNELREQUEST']._serialized_end=45373 + _globals['_FUNDCHANNELRESPONSE']._serialized_start=45376 + _globals['_FUNDCHANNELRESPONSE']._serialized_end=45605 + _globals['_FUNDCHANNELCHANNEL_TYPE']._serialized_start=45607 + _globals['_FUNDCHANNELCHANNEL_TYPE']._serialized_end=45683 + _globals['_FUNDCHANNEL_STARTREQUEST']._serialized_start=45686 + _globals['_FUNDCHANNEL_STARTREQUEST']._serialized_end=46029 + _globals['_FUNDCHANNEL_STARTRESPONSE']._serialized_start=46032 + _globals['_FUNDCHANNEL_STARTRESPONSE']._serialized_end=46281 + _globals['_FUNDCHANNEL_STARTCHANNEL_TYPE']._serialized_start=46283 + _globals['_FUNDCHANNEL_STARTCHANNEL_TYPE']._serialized_end=46365 + _globals['_GETLOGREQUEST']._serialized_start=46368 + _globals['_GETLOGREQUEST']._serialized_end=46525 + _globals['_GETLOGREQUEST_GETLOGLEVEL']._serialized_start=46437 + _globals['_GETLOGREQUEST_GETLOGLEVEL']._serialized_end=46515 + _globals['_GETLOGRESPONSE']._serialized_start=46527 + _globals['_GETLOGRESPONSE']._serialized_end=46631 + _globals['_GETLOGLOG']._serialized_start=46634 + _globals['_GETLOGLOG']._serialized_end=46994 + _globals['_GETLOGLOG_GETLOGLOGTYPE']._serialized_start=46821 + _globals['_GETLOGLOG_GETLOGLOGTYPE']._serialized_end=46929 + _globals['_FUNDERUPDATEREQUEST']._serialized_start=46997 + _globals['_FUNDERUPDATEREQUEST']._serialized_end=48110 + _globals['_FUNDERUPDATEREQUEST_FUNDERUPDATEPOLICY']._serialized_start=47691 + _globals['_FUNDERUPDATEREQUEST_FUNDERUPDATEPOLICY']._serialized_end=47748 + _globals['_FUNDERUPDATERESPONSE']._serialized_start=48113 + _globals['_FUNDERUPDATERESPONSE']._serialized_end=48976 + _globals['_FUNDERUPDATERESPONSE_FUNDERUPDATEPOLICY']._serialized_start=47691 + _globals['_FUNDERUPDATERESPONSE_FUNDERUPDATEPOLICY']._serialized_end=47748 + _globals['_GETROUTEREQUEST']._serialized_start=48979 + _globals['_GETROUTEREQUEST']._serialized_end=49215 + _globals['_GETROUTERESPONSE']._serialized_start=49217 + _globals['_GETROUTERESPONSE']._serialized_end=49270 + _globals['_GETROUTEROUTE']._serialized_start=49273 + _globals['_GETROUTEROUTE']._serialized_end=49470 + _globals['_GETROUTEROUTE_GETROUTEROUTESTYLE']._serialized_start=49441 + _globals['_GETROUTEROUTE_GETROUTEROUTESTYLE']._serialized_end=49470 + _globals['_LISTFORWARDSREQUEST']._serialized_start=49473 + _globals['_LISTFORWARDSREQUEST']._serialized_end=49912 + _globals['_LISTFORWARDSREQUEST_LISTFORWARDSSTATUS']._serialized_start=49717 + _globals['_LISTFORWARDSREQUEST_LISTFORWARDSSTATUS']._serialized_end=49793 + _globals['_LISTFORWARDSREQUEST_LISTFORWARDSINDEX']._serialized_start=49795 + _globals['_LISTFORWARDSREQUEST_LISTFORWARDSINDEX']._serialized_end=49840 + _globals['_LISTFORWARDSRESPONSE']._serialized_start=49914 + _globals['_LISTFORWARDSRESPONSE']._serialized_end=49981 + _globals['_LISTFORWARDSFORWARDS']._serialized_start=49984 + _globals['_LISTFORWARDSFORWARDS']._serialized_end=50804 + _globals['_LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTATUS']._serialized_start=50505 + _globals['_LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTATUS']._serialized_end=50589 + _globals['_LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTYLE']._serialized_start=50591 + _globals['_LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTYLE']._serialized_end=50639 + _globals['_LISTOFFERSREQUEST']._serialized_start=50806 + _globals['_LISTOFFERSREQUEST']._serialized_end=50903 + _globals['_LISTOFFERSRESPONSE']._serialized_start=50905 + _globals['_LISTOFFERSRESPONSE']._serialized_end=50964 + _globals['_LISTOFFERSOFFERS']._serialized_start=50967 + _globals['_LISTOFFERSOFFERS']._serialized_end=51099 + _globals['_LISTPAYSREQUEST']._serialized_start=51102 + _globals['_LISTPAYSREQUEST']._serialized_end=51321 + _globals['_LISTPAYSREQUEST_LISTPAYSSTATUS']._serialized_start=51227 + _globals['_LISTPAYSREQUEST_LISTPAYSSTATUS']._serialized_end=51282 + _globals['_LISTPAYSRESPONSE']._serialized_start=51323 + _globals['_LISTPAYSRESPONSE']._serialized_end=51374 + _globals['_LISTPAYSPAYS']._serialized_start=51377 + _globals['_LISTPAYSPAYS']._serialized_end=52016 + _globals['_LISTPAYSPAYS_LISTPAYSPAYSSTATUS']._serialized_start=51791 + _globals['_LISTPAYSPAYS_LISTPAYSPAYSSTATUS']._serialized_end=51850 + _globals['_LISTHTLCSREQUEST']._serialized_start=52018 + _globals['_LISTHTLCSREQUEST']._serialized_end=52060 + _globals['_LISTHTLCSRESPONSE']._serialized_start=52062 + _globals['_LISTHTLCSRESPONSE']._serialized_end=52117 + _globals['_LISTHTLCSHTLCS']._serialized_start=52120 + _globals['_LISTHTLCSHTLCS']._serialized_end=52385 + _globals['_LISTHTLCSHTLCS_LISTHTLCSHTLCSDIRECTION']._serialized_start=52343 + _globals['_LISTHTLCSHTLCS_LISTHTLCSHTLCSDIRECTION']._serialized_end=52385 + _globals['_MULTIFUNDCHANNELREQUEST']._serialized_start=52388 + _globals['_MULTIFUNDCHANNELREQUEST']._serialized_end=52694 + _globals['_MULTIFUNDCHANNELRESPONSE']._serialized_start=52697 + _globals['_MULTIFUNDCHANNELRESPONSE']._serialized_end=52849 + _globals['_MULTIFUNDCHANNELDESTINATIONS']._serialized_start=52852 + _globals['_MULTIFUNDCHANNELDESTINATIONS']._serialized_end=53235 + _globals['_MULTIFUNDCHANNELCHANNEL_IDS']._serialized_start=53238 + _globals['_MULTIFUNDCHANNELCHANNEL_IDS']._serialized_end=53441 + _globals['_MULTIFUNDCHANNELCHANNEL_IDSCHANNEL_TYPE']._serialized_start=53443 + _globals['_MULTIFUNDCHANNELCHANNEL_IDSCHANNEL_TYPE']._serialized_end=53535 + _globals['_MULTIFUNDCHANNELFAILED']._serialized_start=53538 + _globals['_MULTIFUNDCHANNELFAILED']._serialized_end=53813 + _globals['_MULTIFUNDCHANNELFAILED_MULTIFUNDCHANNELFAILEDMETHOD']._serialized_start=53699 + _globals['_MULTIFUNDCHANNELFAILED_MULTIFUNDCHANNELFAILEDMETHOD']._serialized_end=53813 + _globals['_MULTIFUNDCHANNELFAILEDERROR']._serialized_start=53815 + _globals['_MULTIFUNDCHANNELFAILEDERROR']._serialized_end=53875 + _globals['_MULTIWITHDRAWREQUEST']._serialized_start=53878 + _globals['_MULTIWITHDRAWREQUEST']._serialized_end=54046 + _globals['_MULTIWITHDRAWRESPONSE']._serialized_start=54048 + _globals['_MULTIWITHDRAWRESPONSE']._serialized_end=54097 + _globals['_OFFERREQUEST']._serialized_start=54100 + _globals['_OFFERREQUEST']._serialized_end=54644 + _globals['_OFFERRESPONSE']._serialized_start=54647 + _globals['_OFFERRESPONSE']._serialized_end=54793 + _globals['_OPENCHANNEL_ABORTREQUEST']._serialized_start=54795 + _globals['_OPENCHANNEL_ABORTREQUEST']._serialized_end=54841 + _globals['_OPENCHANNEL_ABORTRESPONSE']._serialized_start=54843 + _globals['_OPENCHANNEL_ABORTRESPONSE']._serialized_end=54932 + _globals['_OPENCHANNEL_BUMPREQUEST']._serialized_start=54935 + _globals['_OPENCHANNEL_BUMPREQUEST']._serialized_end=55094 + _globals['_OPENCHANNEL_BUMPRESPONSE']._serialized_start=55097 + _globals['_OPENCHANNEL_BUMPRESPONSE']._serialized_end=55359 + _globals['_OPENCHANNEL_BUMPCHANNEL_TYPE']._serialized_start=55361 + _globals['_OPENCHANNEL_BUMPCHANNEL_TYPE']._serialized_end=55442 + _globals['_OPENCHANNEL_INITREQUEST']._serialized_start=55445 + _globals['_OPENCHANNEL_INITREQUEST']._serialized_end=55861 + _globals['_OPENCHANNEL_INITRESPONSE']._serialized_start=55864 + _globals['_OPENCHANNEL_INITRESPONSE']._serialized_end=56126 + _globals['_OPENCHANNEL_INITCHANNEL_TYPE']._serialized_start=56128 + _globals['_OPENCHANNEL_INITCHANNEL_TYPE']._serialized_end=56209 + _globals['_OPENCHANNEL_SIGNEDREQUEST']._serialized_start=56211 + _globals['_OPENCHANNEL_SIGNEDREQUEST']._serialized_end=56279 + _globals['_OPENCHANNEL_SIGNEDRESPONSE']._serialized_start=56281 + _globals['_OPENCHANNEL_SIGNEDRESPONSE']._serialized_end=56355 + _globals['_OPENCHANNEL_UPDATEREQUEST']._serialized_start=56357 + _globals['_OPENCHANNEL_UPDATEREQUEST']._serialized_end=56418 + _globals['_OPENCHANNEL_UPDATERESPONSE']._serialized_start=56421 + _globals['_OPENCHANNEL_UPDATERESPONSE']._serialized_end=56723 + _globals['_OPENCHANNEL_UPDATECHANNEL_TYPE']._serialized_start=56725 + _globals['_OPENCHANNEL_UPDATECHANNEL_TYPE']._serialized_end=56808 + _globals['_PINGREQUEST']._serialized_start=56810 + _globals['_PINGREQUEST']._serialized_end=56899 + _globals['_PINGRESPONSE']._serialized_start=56901 + _globals['_PINGRESPONSE']._serialized_end=56931 + _globals['_PLUGINREQUEST']._serialized_start=56934 + _globals['_PLUGINREQUEST']._serialized_end=57079 + _globals['_PLUGINRESPONSE']._serialized_start=57081 + _globals['_PLUGINRESPONSE']._serialized_end=57206 + _globals['_PLUGINPLUGINS']._serialized_start=57208 + _globals['_PLUGINPLUGINS']._serialized_end=57270 + _globals['_RENEPAYSTATUSREQUEST']._serialized_start=57272 + _globals['_RENEPAYSTATUSREQUEST']._serialized_end=57332 + _globals['_RENEPAYSTATUSRESPONSE']._serialized_start=57334 + _globals['_RENEPAYSTATUSRESPONSE']._serialized_end=57405 + _globals['_RENEPAYSTATUSPAYSTATUS']._serialized_start=57408 + _globals['_RENEPAYSTATUSPAYSTATUS']._serialized_end=57890 + _globals['_RENEPAYSTATUSPAYSTATUS_RENEPAYSTATUSPAYSTATUSSTATUS']._serialized_start=57753 + _globals['_RENEPAYSTATUSPAYSTATUS_RENEPAYSTATUSPAYSTATUSSTATUS']._serialized_end=57822 + _globals['_RENEPAYREQUEST']._serialized_start=57893 + _globals['_RENEPAYREQUEST']._serialized_end=58239 + _globals['_RENEPAYRESPONSE']._serialized_start=58242 + _globals['_RENEPAYRESPONSE']._serialized_end=58565 + _globals['_RENEPAYRESPONSE_RENEPAYSTATUS']._serialized_start=58495 + _globals['_RENEPAYRESPONSE_RENEPAYSTATUS']._serialized_end=58549 + _globals['_RESERVEINPUTSREQUEST']._serialized_start=58567 + _globals['_RESERVEINPUTSREQUEST']._serialized_end=58675 + _globals['_RESERVEINPUTSRESPONSE']._serialized_start=58677 + _globals['_RESERVEINPUTSRESPONSE']._serialized_end=58754 + _globals['_RESERVEINPUTSRESERVATIONS']._serialized_start=58756 + _globals['_RESERVEINPUTSRESERVATIONS']._serialized_end=58878 + _globals['_SENDCUSTOMMSGREQUEST']._serialized_start=58880 + _globals['_SENDCUSTOMMSGREQUEST']._serialized_end=58932 + _globals['_SENDCUSTOMMSGRESPONSE']._serialized_start=58934 + _globals['_SENDCUSTOMMSGRESPONSE']._serialized_end=58973 + _globals['_SENDINVOICEREQUEST']._serialized_start=58976 + _globals['_SENDINVOICEREQUEST']._serialized_end=59152 + _globals['_SENDINVOICERESPONSE']._serialized_start=59155 + _globals['_SENDINVOICERESPONSE']._serialized_end=59746 + _globals['_SENDINVOICERESPONSE_SENDINVOICESTATUS']._serialized_start=59557 + _globals['_SENDINVOICERESPONSE_SENDINVOICESTATUS']._serialized_end=59611 + _globals['_SETCHANNELREQUEST']._serialized_start=59749 + _globals['_SETCHANNELREQUEST']._serialized_end=60047 + _globals['_SETCHANNELRESPONSE']._serialized_start=60049 + _globals['_SETCHANNELRESPONSE']._serialized_end=60112 + _globals['_SETCHANNELCHANNELS']._serialized_start=60115 + _globals['_SETCHANNELCHANNELS']._serialized_end=60573 + _globals['_SETCONFIGREQUEST']._serialized_start=60575 + _globals['_SETCONFIGREQUEST']._serialized_end=60635 + _globals['_SETCONFIGRESPONSE']._serialized_start=60637 + _globals['_SETCONFIGRESPONSE']._serialized_end=60694 + _globals['_SETCONFIGCONFIG']._serialized_start=60697 + _globals['_SETCONFIGCONFIG']._serialized_end=60990 + _globals['_SETPSBTVERSIONREQUEST']._serialized_start=60992 + _globals['_SETPSBTVERSIONREQUEST']._serialized_end=61046 + _globals['_SETPSBTVERSIONRESPONSE']._serialized_start=61048 + _globals['_SETPSBTVERSIONRESPONSE']._serialized_end=61086 + _globals['_SIGNINVOICEREQUEST']._serialized_start=61088 + _globals['_SIGNINVOICEREQUEST']._serialized_end=61127 + _globals['_SIGNINVOICERESPONSE']._serialized_start=61129 + _globals['_SIGNINVOICERESPONSE']._serialized_end=61166 + _globals['_SIGNMESSAGEREQUEST']._serialized_start=61168 + _globals['_SIGNMESSAGEREQUEST']._serialized_end=61205 + _globals['_SIGNMESSAGERESPONSE']._serialized_start=61207 + _globals['_SIGNMESSAGERESPONSE']._serialized_end=61277 + _globals['_SPLICE_INITREQUEST']._serialized_start=61280 + _globals['_SPLICE_INITREQUEST']._serialized_end=61481 + _globals['_SPLICE_INITRESPONSE']._serialized_start=61483 + _globals['_SPLICE_INITRESPONSE']._serialized_end=61518 + _globals['_SPLICE_SIGNEDREQUEST']._serialized_start=61520 + _globals['_SPLICE_SIGNEDREQUEST']._serialized_end=61616 + _globals['_SPLICE_SIGNEDRESPONSE']._serialized_start=61618 + _globals['_SPLICE_SIGNEDRESPONSE']._serialized_end=61699 + _globals['_SPLICE_UPDATEREQUEST']._serialized_start=61701 + _globals['_SPLICE_UPDATEREQUEST']._serialized_end=61757 + _globals['_SPLICE_UPDATERESPONSE']._serialized_start=61759 + _globals['_SPLICE_UPDATERESPONSE']._serialized_end=61825 + _globals['_UNRESERVEINPUTSREQUEST']._serialized_start=61827 + _globals['_UNRESERVEINPUTSREQUEST']._serialized_end=61899 + _globals['_UNRESERVEINPUTSRESPONSE']._serialized_start=61901 + _globals['_UNRESERVEINPUTSRESPONSE']._serialized_end=61982 + _globals['_UNRESERVEINPUTSRESERVATIONS']._serialized_start=61985 + _globals['_UNRESERVEINPUTSRESERVATIONS']._serialized_end=62136 + _globals['_UPGRADEWALLETREQUEST']._serialized_start=62138 + _globals['_UPGRADEWALLETREQUEST']._serialized_end=62248 + _globals['_UPGRADEWALLETRESPONSE']._serialized_start=62251 + _globals['_UPGRADEWALLETRESPONSE']._serialized_end=62400 + _globals['_WAITBLOCKHEIGHTREQUEST']._serialized_start=62402 + _globals['_WAITBLOCKHEIGHTREQUEST']._serialized_end=62481 + _globals['_WAITBLOCKHEIGHTRESPONSE']._serialized_start=62483 + _globals['_WAITBLOCKHEIGHTRESPONSE']._serialized_end=62529 + _globals['_WAITREQUEST']._serialized_start=62532 + _globals['_WAITREQUEST']._serialized_end=62781 + _globals['_WAITREQUEST_WAITSUBSYSTEM']._serialized_start=62668 + _globals['_WAITREQUEST_WAITSUBSYSTEM']._serialized_end=62725 + _globals['_WAITREQUEST_WAITINDEXNAME']._serialized_start=62727 + _globals['_WAITREQUEST_WAITINDEXNAME']._serialized_end=62781 + _globals['_WAITRESPONSE']._serialized_start=62784 + _globals['_WAITRESPONSE']._serialized_end=63063 + _globals['_WAITRESPONSE_WAITSUBSYSTEM']._serialized_start=62668 + _globals['_WAITRESPONSE_WAITSUBSYSTEM']._serialized_end=62725 + _globals['_WAITDETAILS']._serialized_start=63066 + _globals['_WAITDETAILS']._serialized_end=63702 + _globals['_WAITDETAILS_WAITDETAILSSTATUS']._serialized_start=63408 + _globals['_WAITDETAILS_WAITDETAILSSTATUS']._serialized_end=63545 + _globals['_LISTCONFIGSREQUEST']._serialized_start=63704 + _globals['_LISTCONFIGSREQUEST']._serialized_end=63756 + _globals['_LISTCONFIGSRESPONSE']._serialized_start=63759 + _globals['_LISTCONFIGSRESPONSE']._serialized_end=67310 + _globals['_LISTCONFIGSCONFIGS']._serialized_start=67313 + _globals['_LISTCONFIGSCONFIGS']._serialized_end=73296 + _globals['_LISTCONFIGSCONFIGSCONF']._serialized_start=73299 + _globals['_LISTCONFIGSCONFIGSCONF']._serialized_end=73461 + _globals['_LISTCONFIGSCONFIGSCONF_LISTCONFIGSCONFIGSCONFSOURCE']._serialized_start=73418 + _globals['_LISTCONFIGSCONFIGSCONF_LISTCONFIGSCONFIGSCONFSOURCE']._serialized_end=73461 + _globals['_LISTCONFIGSCONFIGSDEVELOPER']._serialized_start=73463 + _globals['_LISTCONFIGSCONFIGSDEVELOPER']._serialized_end=73521 + _globals['_LISTCONFIGSCONFIGSCLEARPLUGINS']._serialized_start=73523 + _globals['_LISTCONFIGSCONFIGSCLEARPLUGINS']._serialized_end=73584 + _globals['_LISTCONFIGSCONFIGSDISABLEMPP']._serialized_start=73586 + _globals['_LISTCONFIGSCONFIGSDISABLEMPP']._serialized_end=73677 + _globals['_LISTCONFIGSCONFIGSMAINNET']._serialized_start=73679 + _globals['_LISTCONFIGSCONFIGSMAINNET']._serialized_end=73735 + _globals['_LISTCONFIGSCONFIGSREGTEST']._serialized_start=73737 + _globals['_LISTCONFIGSCONFIGSREGTEST']._serialized_end=73793 + _globals['_LISTCONFIGSCONFIGSSIGNET']._serialized_start=73795 + _globals['_LISTCONFIGSCONFIGSSIGNET']._serialized_end=73850 + _globals['_LISTCONFIGSCONFIGSTESTNET']._serialized_start=73852 + _globals['_LISTCONFIGSCONFIGSTESTNET']._serialized_end=73908 + _globals['_LISTCONFIGSCONFIGSIMPORTANTPLUGIN']._serialized_start=73910 + _globals['_LISTCONFIGSCONFIGSIMPORTANTPLUGIN']._serialized_end=73982 + _globals['_LISTCONFIGSCONFIGSPLUGIN']._serialized_start=73984 + _globals['_LISTCONFIGSCONFIGSPLUGIN']._serialized_end=74047 + _globals['_LISTCONFIGSCONFIGSPLUGINDIR']._serialized_start=74049 + _globals['_LISTCONFIGSCONFIGSPLUGINDIR']._serialized_end=74115 + _globals['_LISTCONFIGSCONFIGSLIGHTNINGDIR']._serialized_start=74117 + _globals['_LISTCONFIGSCONFIGSLIGHTNINGDIR']._serialized_end=74184 + _globals['_LISTCONFIGSCONFIGSNETWORK']._serialized_start=74186 + _globals['_LISTCONFIGSCONFIGSNETWORK']._serialized_end=74248 + _globals['_LISTCONFIGSCONFIGSALLOWDEPRECATEDAPIS']._serialized_start=74250 + _globals['_LISTCONFIGSCONFIGSALLOWDEPRECATEDAPIS']._serialized_end=74325 + _globals['_LISTCONFIGSCONFIGSRPCFILE']._serialized_start=74327 + _globals['_LISTCONFIGSCONFIGSRPCFILE']._serialized_end=74389 + _globals['_LISTCONFIGSCONFIGSDISABLEPLUGIN']._serialized_start=74391 + _globals['_LISTCONFIGSCONFIGSDISABLEPLUGIN']._serialized_end=74461 + _globals['_LISTCONFIGSCONFIGSALWAYSUSEPROXY']._serialized_start=74463 + _globals['_LISTCONFIGSCONFIGSALWAYSUSEPROXY']._serialized_end=74533 + _globals['_LISTCONFIGSCONFIGSDAEMON']._serialized_start=74535 + _globals['_LISTCONFIGSCONFIGSDAEMON']._serialized_end=74590 + _globals['_LISTCONFIGSCONFIGSWALLET']._serialized_start=74592 + _globals['_LISTCONFIGSCONFIGSWALLET']._serialized_end=74653 + _globals['_LISTCONFIGSCONFIGSLARGECHANNELS']._serialized_start=74655 + _globals['_LISTCONFIGSCONFIGSLARGECHANNELS']._serialized_end=74717 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALDUALFUND']._serialized_start=74719 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALDUALFUND']._serialized_end=74788 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALSPLICING']._serialized_start=74790 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALSPLICING']._serialized_end=74859 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALONIONMESSAGES']._serialized_start=74861 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALONIONMESSAGES']._serialized_end=74935 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALOFFERS']._serialized_start=74937 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALOFFERS']._serialized_end=75004 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALSHUTDOWNWRONGFUNDING']._serialized_start=75006 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALSHUTDOWNWRONGFUNDING']._serialized_end=75087 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALPEERSTORAGE']._serialized_start=75089 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALPEERSTORAGE']._serialized_end=75161 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALANCHORS']._serialized_start=75163 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALANCHORS']._serialized_end=75231 + _globals['_LISTCONFIGSCONFIGSDATABASEUPGRADE']._serialized_start=75233 + _globals['_LISTCONFIGSCONFIGSDATABASEUPGRADE']._serialized_end=75304 + _globals['_LISTCONFIGSCONFIGSRGB']._serialized_start=75306 + _globals['_LISTCONFIGSCONFIGSRGB']._serialized_end=75364 + _globals['_LISTCONFIGSCONFIGSALIAS']._serialized_start=75366 + _globals['_LISTCONFIGSCONFIGSALIAS']._serialized_end=75426 + _globals['_LISTCONFIGSCONFIGSPIDFILE']._serialized_start=75428 + _globals['_LISTCONFIGSCONFIGSPIDFILE']._serialized_end=75490 + _globals['_LISTCONFIGSCONFIGSIGNOREFEELIMITS']._serialized_start=75492 + _globals['_LISTCONFIGSCONFIGSIGNOREFEELIMITS']._serialized_end=75563 + _globals['_LISTCONFIGSCONFIGSWATCHTIMEBLOCKS']._serialized_start=75565 + _globals['_LISTCONFIGSCONFIGSWATCHTIMEBLOCKS']._serialized_end=75635 + _globals['_LISTCONFIGSCONFIGSMAXLOCKTIMEBLOCKS']._serialized_start=75637 + _globals['_LISTCONFIGSCONFIGSMAXLOCKTIMEBLOCKS']._serialized_end=75709 + _globals['_LISTCONFIGSCONFIGSFUNDINGCONFIRMS']._serialized_start=75711 + _globals['_LISTCONFIGSCONFIGSFUNDINGCONFIRMS']._serialized_end=75781 + _globals['_LISTCONFIGSCONFIGSCLTVDELTA']._serialized_start=75783 + _globals['_LISTCONFIGSCONFIGSCLTVDELTA']._serialized_end=75847 + _globals['_LISTCONFIGSCONFIGSCLTVFINAL']._serialized_start=75849 + _globals['_LISTCONFIGSCONFIGSCLTVFINAL']._serialized_end=75913 + _globals['_LISTCONFIGSCONFIGSCOMMITTIME']._serialized_start=75915 + _globals['_LISTCONFIGSCONFIGSCOMMITTIME']._serialized_end=75980 + _globals['_LISTCONFIGSCONFIGSFEEBASE']._serialized_start=75982 + _globals['_LISTCONFIGSCONFIGSFEEBASE']._serialized_end=76044 + _globals['_LISTCONFIGSCONFIGSRESCAN']._serialized_start=76046 + _globals['_LISTCONFIGSCONFIGSRESCAN']._serialized_end=76107 + _globals['_LISTCONFIGSCONFIGSFEEPERSATOSHI']._serialized_start=76109 + _globals['_LISTCONFIGSCONFIGSFEEPERSATOSHI']._serialized_end=76177 + _globals['_LISTCONFIGSCONFIGSMAXCONCURRENTHTLCS']._serialized_start=76179 + _globals['_LISTCONFIGSCONFIGSMAXCONCURRENTHTLCS']._serialized_end=76252 + _globals['_LISTCONFIGSCONFIGSHTLCMINIMUMMSAT']._serialized_start=76254 + _globals['_LISTCONFIGSCONFIGSHTLCMINIMUMMSAT']._serialized_end=76338 + _globals['_LISTCONFIGSCONFIGSHTLCMAXIMUMMSAT']._serialized_start=76340 + _globals['_LISTCONFIGSCONFIGSHTLCMAXIMUMMSAT']._serialized_end=76424 + _globals['_LISTCONFIGSCONFIGSMAXDUSTHTLCEXPOSUREMSAT']._serialized_start=76426 + _globals['_LISTCONFIGSCONFIGSMAXDUSTHTLCEXPOSUREMSAT']._serialized_end=76518 + _globals['_LISTCONFIGSCONFIGSMINCAPACITYSAT']._serialized_start=76520 + _globals['_LISTCONFIGSCONFIGSMINCAPACITYSAT']._serialized_end=76623 + _globals['_LISTCONFIGSCONFIGSADDR']._serialized_start=76625 + _globals['_LISTCONFIGSCONFIGSADDR']._serialized_end=76686 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDR']._serialized_start=76688 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDR']._serialized_end=76757 + _globals['_LISTCONFIGSCONFIGSBINDADDR']._serialized_start=76759 + _globals['_LISTCONFIGSCONFIGSBINDADDR']._serialized_end=76824 + _globals['_LISTCONFIGSCONFIGSOFFLINE']._serialized_start=76826 + _globals['_LISTCONFIGSCONFIGSOFFLINE']._serialized_end=76882 + _globals['_LISTCONFIGSCONFIGSAUTOLISTEN']._serialized_start=76884 + _globals['_LISTCONFIGSCONFIGSAUTOLISTEN']._serialized_end=76950 + _globals['_LISTCONFIGSCONFIGSPROXY']._serialized_start=76952 + _globals['_LISTCONFIGSCONFIGSPROXY']._serialized_end=77012 + _globals['_LISTCONFIGSCONFIGSDISABLEDNS']._serialized_start=77014 + _globals['_LISTCONFIGSCONFIGSDISABLEDNS']._serialized_end=77073 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVERED']._serialized_start=77076 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVERED']._serialized_end=77334 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVERED_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVEREDVALUE_STR']._serialized_start=77252 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVERED_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVEREDVALUE_STR']._serialized_end=77334 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVEREDPORT']._serialized_start=77336 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVEREDPORT']._serialized_end=77417 + _globals['_LISTCONFIGSCONFIGSENCRYPTEDHSM']._serialized_start=77419 + _globals['_LISTCONFIGSCONFIGSENCRYPTEDHSM']._serialized_end=77480 + _globals['_LISTCONFIGSCONFIGSRPCFILEMODE']._serialized_start=77482 + _globals['_LISTCONFIGSCONFIGSRPCFILEMODE']._serialized_end=77548 + _globals['_LISTCONFIGSCONFIGSLOGLEVEL']._serialized_start=77550 + _globals['_LISTCONFIGSCONFIGSLOGLEVEL']._serialized_end=77613 + _globals['_LISTCONFIGSCONFIGSLOGPREFIX']._serialized_start=77615 + _globals['_LISTCONFIGSCONFIGSLOGPREFIX']._serialized_end=77679 + _globals['_LISTCONFIGSCONFIGSLOGFILE']._serialized_start=77681 + _globals['_LISTCONFIGSCONFIGSLOGFILE']._serialized_end=77745 + _globals['_LISTCONFIGSCONFIGSLOGTIMESTAMPS']._serialized_start=77747 + _globals['_LISTCONFIGSCONFIGSLOGTIMESTAMPS']._serialized_end=77816 + _globals['_LISTCONFIGSCONFIGSFORCEFEERATES']._serialized_start=77818 + _globals['_LISTCONFIGSCONFIGSFORCEFEERATES']._serialized_end=77886 + _globals['_LISTCONFIGSCONFIGSSUBDAEMON']._serialized_start=77888 + _globals['_LISTCONFIGSCONFIGSSUBDAEMON']._serialized_end=77954 + _globals['_LISTCONFIGSCONFIGSFETCHINVOICENOCONNECT']._serialized_start=77956 + _globals['_LISTCONFIGSCONFIGSFETCHINVOICENOCONNECT']._serialized_end=78058 + _globals['_LISTCONFIGSCONFIGSACCEPTHTLCTLVTYPES']._serialized_start=78060 + _globals['_LISTCONFIGSCONFIGSACCEPTHTLCTLVTYPES']._serialized_end=78133 + _globals['_LISTCONFIGSCONFIGSTORSERVICEPASSWORD']._serialized_start=78135 + _globals['_LISTCONFIGSCONFIGSTORSERVICEPASSWORD']._serialized_end=78208 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDNS']._serialized_start=78210 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDNS']._serialized_end=78281 + _globals['_LISTCONFIGSCONFIGSREQUIRECONFIRMEDINPUTS']._serialized_start=78283 + _globals['_LISTCONFIGSCONFIGSREQUIRECONFIRMEDINPUTS']._serialized_end=78361 + _globals['_LISTCONFIGSCONFIGSCOMMITFEE']._serialized_start=78363 + _globals['_LISTCONFIGSCONFIGSCOMMITFEE']._serialized_end=78427 + _globals['_LISTCONFIGSCONFIGSCOMMITFEERATEOFFSET']._serialized_start=78429 + _globals['_LISTCONFIGSCONFIGSCOMMITFEERATEOFFSET']._serialized_end=78503 + _globals['_LISTCONFIGSPLUGINS']._serialized_start=78505 + _globals['_LISTCONFIGSPLUGINS']._serialized_end=78619 + _globals['_LISTCONFIGSPLUGINSOPTIONS']._serialized_start=78621 + _globals['_LISTCONFIGSPLUGINSOPTIONS']._serialized_end=78648 + _globals['_LISTCONFIGSIMPORTANTPLUGINS']._serialized_start=78651 + _globals['_LISTCONFIGSIMPORTANTPLUGINS']._serialized_end=78783 + _globals['_LISTCONFIGSIMPORTANTPLUGINSOPTIONS']._serialized_start=78785 + _globals['_LISTCONFIGSIMPORTANTPLUGINSOPTIONS']._serialized_end=78821 + _globals['_STOPREQUEST']._serialized_start=78823 + _globals['_STOPREQUEST']._serialized_end=78836 + _globals['_STOPRESPONSE']._serialized_start=78838 + _globals['_STOPRESPONSE']._serialized_end=78951 + _globals['_STOPRESPONSE_STOPRESULT']._serialized_start=78905 + _globals['_STOPRESPONSE_STOPRESULT']._serialized_end=78940 + _globals['_HELPREQUEST']._serialized_start=78953 + _globals['_HELPREQUEST']._serialized_end=79000 + _globals['_HELPRESPONSE']._serialized_start=79003 + _globals['_HELPRESPONSE']._serialized_end=79152 + _globals['_HELPRESPONSE_HELPFORMATHINT']._serialized_start=79108 + _globals['_HELPRESPONSE_HELPFORMATHINT']._serialized_end=79136 + _globals['_HELPHELP']._serialized_start=79154 + _globals['_HELPHELP']._serialized_end=79181 + _globals['_PREAPPROVEKEYSENDREQUEST']._serialized_start=79183 + _globals['_PREAPPROVEKEYSENDREQUEST']._serialized_end=79286 + _globals['_PREAPPROVEKEYSENDRESPONSE']._serialized_start=79288 + _globals['_PREAPPROVEKEYSENDRESPONSE']._serialized_end=79315 + _globals['_PREAPPROVEINVOICEREQUEST']._serialized_start=79317 + _globals['_PREAPPROVEINVOICEREQUEST']._serialized_end=79359 + _globals['_PREAPPROVEINVOICERESPONSE']._serialized_start=79361 + _globals['_PREAPPROVEINVOICERESPONSE']._serialized_end=79388 + _globals['_STATICBACKUPREQUEST']._serialized_start=79390 + _globals['_STATICBACKUPREQUEST']._serialized_end=79411 + _globals['_STATICBACKUPRESPONSE']._serialized_start=79413 + _globals['_STATICBACKUPRESPONSE']._serialized_end=79448 + _globals['_BKPRCHANNELSAPYREQUEST']._serialized_start=79450 + _globals['_BKPRCHANNELSAPYREQUEST']._serialized_end=79550 + _globals['_BKPRCHANNELSAPYRESPONSE']._serialized_start=79552 + _globals['_BKPRCHANNELSAPYRESPONSE']._serialized_end=79633 + _globals['_BKPRCHANNELSAPYCHANNELS_APY']._serialized_start=79636 + _globals['_BKPRCHANNELSAPYCHANNELS_APY']._serialized_end=80526 + _globals['_BKPRDUMPINCOMECSVREQUEST']._serialized_start=80529 + _globals['_BKPRDUMPINCOMECSVREQUEST']._serialized_end=80739 + _globals['_BKPRDUMPINCOMECSVRESPONSE']._serialized_start=80742 + _globals['_BKPRDUMPINCOMECSVRESPONSE']._serialized_end=80956 + _globals['_BKPRDUMPINCOMECSVRESPONSE_BKPRDUMPINCOMECSVCSV_FORMAT']._serialized_start=80869 + _globals['_BKPRDUMPINCOMECSVRESPONSE_BKPRDUMPINCOMECSVCSV_FORMAT']._serialized_end=80956 + _globals['_BKPRINSPECTREQUEST']._serialized_start=80958 + _globals['_BKPRINSPECTREQUEST']._serialized_end=80995 + _globals['_BKPRINSPECTRESPONSE']._serialized_start=80997 + _globals['_BKPRINSPECTRESPONSE']._serialized_end=81052 + _globals['_BKPRINSPECTTXS']._serialized_start=81055 + _globals['_BKPRINSPECTTXS']._serialized_end=81209 + _globals['_BKPRINSPECTTXSOUTPUTS']._serialized_start=81212 + _globals['_BKPRINSPECTTXSOUTPUTS']._serialized_end=81656 + _globals['_BKPRLISTACCOUNTEVENTSREQUEST']._serialized_start=81658 + _globals['_BKPRLISTACCOUNTEVENTSREQUEST']._serialized_end=81762 + _globals['_BKPRLISTACCOUNTEVENTSRESPONSE']._serialized_start=81764 + _globals['_BKPRLISTACCOUNTEVENTSRESPONSE']._serialized_end=81845 + _globals['_BKPRLISTACCOUNTEVENTSEVENTS']._serialized_start=81848 + _globals['_BKPRLISTACCOUNTEVENTSEVENTS']._serialized_end=82521 + _globals['_BKPRLISTACCOUNTEVENTSEVENTS_BKPRLISTACCOUNTEVENTSEVENTSTYPE']._serialized_start=82324 + _globals['_BKPRLISTACCOUNTEVENTSEVENTS_BKPRLISTACCOUNTEVENTSEVENTSTYPE']._serialized_end=82398 + _globals['_BKPRLISTBALANCESREQUEST']._serialized_start=82523 + _globals['_BKPRLISTBALANCESREQUEST']._serialized_end=82548 + _globals['_BKPRLISTBALANCESRESPONSE']._serialized_start=82550 + _globals['_BKPRLISTBALANCESRESPONSE']._serialized_end=82625 + _globals['_BKPRLISTBALANCESACCOUNTS']._serialized_start=82628 + _globals['_BKPRLISTBALANCESACCOUNTS']._serialized_end=82954 + _globals['_BKPRLISTBALANCESACCOUNTSBALANCES']._serialized_start=82956 + _globals['_BKPRLISTBALANCESACCOUNTSBALANCES']._serialized_end=83044 + _globals['_BKPRLISTINCOMEREQUEST']._serialized_start=83047 + _globals['_BKPRLISTINCOMEREQUEST']._serialized_end=83198 + _globals['_BKPRLISTINCOMERESPONSE']._serialized_start=83200 + _globals['_BKPRLISTINCOMERESPONSE']._serialized_end=83281 + _globals['_BKPRLISTINCOMEINCOME_EVENTS']._serialized_start=83284 + _globals['_BKPRLISTINCOMEINCOME_EVENTS']._serialized_end=83593 + _globals['_BLACKLISTRUNEREQUEST']._serialized_start=83595 + _globals['_BLACKLISTRUNEREQUEST']._serialized_end=83673 + _globals['_BLACKLISTRUNERESPONSE']._serialized_start=83675 + _globals['_BLACKLISTRUNERESPONSE']._serialized_end=83746 + _globals['_BLACKLISTRUNEBLACKLIST']._serialized_start=83748 + _globals['_BLACKLISTRUNEBLACKLIST']._serialized_end=83800 + _globals['_CHECKRUNEREQUEST']._serialized_start=83802 + _globals['_CHECKRUNEREQUEST']._serialized_end=83914 + _globals['_CHECKRUNERESPONSE']._serialized_start=83916 + _globals['_CHECKRUNERESPONSE']._serialized_end=83950 + _globals['_CREATERUNEREQUEST']._serialized_start=83952 + _globals['_CREATERUNEREQUEST']._serialized_end=84021 + _globals['_CREATERUNERESPONSE']._serialized_start=84023 + _globals['_CREATERUNERESPONSE']._serialized_end=84146 + _globals['_SHOWRUNESREQUEST']._serialized_start=84148 + _globals['_SHOWRUNESREQUEST']._serialized_end=84194 + _globals['_SHOWRUNESRESPONSE']._serialized_start=84196 + _globals['_SHOWRUNESRESPONSE']._serialized_end=84251 + _globals['_SHOWRUNESRUNES']._serialized_start=84254 + _globals['_SHOWRUNESRUNES']._serialized_end=84539 + _globals['_SHOWRUNESRUNESRESTRICTIONS']._serialized_start=84541 + _globals['_SHOWRUNESRUNESRESTRICTIONS']._serialized_end=84653 + _globals['_SHOWRUNESRUNESRESTRICTIONSALTERNATIVES']._serialized_start=84655 + _globals['_SHOWRUNESRUNESRESTRICTIONSALTERNATIVES']._serialized_end=84765 + _globals['_STREAMBLOCKADDEDREQUEST']._serialized_start=84767 + _globals['_STREAMBLOCKADDEDREQUEST']._serialized_end=84792 + _globals['_BLOCKADDEDNOTIFICATION']._serialized_start=84794 + _globals['_BLOCKADDEDNOTIFICATION']._serialized_end=84848 + _globals['_STREAMCHANNELOPENFAILEDREQUEST']._serialized_start=84850 + _globals['_STREAMCHANNELOPENFAILEDREQUEST']._serialized_end=84882 + _globals['_CHANNELOPENFAILEDNOTIFICATION']._serialized_start=84884 + _globals['_CHANNELOPENFAILEDNOTIFICATION']._serialized_end=84935 + _globals['_STREAMCHANNELOPENEDREQUEST']._serialized_start=84937 + _globals['_STREAMCHANNELOPENEDREQUEST']._serialized_end=84965 + _globals['_CHANNELOPENEDNOTIFICATION']._serialized_start=84967 + _globals['_CHANNELOPENEDNOTIFICATION']._serialized_end=85086 + _globals['_STREAMCONNECTREQUEST']._serialized_start=85088 + _globals['_STREAMCONNECTREQUEST']._serialized_end=85110 + _globals['_PEERCONNECTNOTIFICATION']._serialized_start=85113 + _globals['_PEERCONNECTNOTIFICATION']._serialized_end=85303 + _globals['_PEERCONNECTNOTIFICATION_PEERCONNECTDIRECTION']._serialized_start=85264 + _globals['_PEERCONNECTNOTIFICATION_PEERCONNECTDIRECTION']._serialized_end=85303 + _globals['_PEERCONNECTADDRESS']._serialized_start=85306 + _globals['_PEERCONNECTADDRESS']._serialized_end=85573 + _globals['_PEERCONNECTADDRESS_PEERCONNECTADDRESSTYPE']._serialized_start=85457 + _globals['_PEERCONNECTADDRESS_PEERCONNECTADDRESSTYPE']._serialized_end=85541 + _globals['_STREAMCUSTOMMSGREQUEST']._serialized_start=85575 + _globals['_STREAMCUSTOMMSGREQUEST']._serialized_end=85599 + _globals['_CUSTOMMSGNOTIFICATION']._serialized_start=85601 + _globals['_CUSTOMMSGNOTIFICATION']._serialized_end=85658 + _globals['_NODE']._serialized_start=85661 + _globals['_NODE']._serialized_end=93800 # @@protoc_insertion_point(module_scope) diff --git a/contrib/pyln-testing/pyln/testing/grpc2py.py b/contrib/pyln-testing/pyln/testing/grpc2py.py index 751abd053c67..b0d55cf9ac6d 100644 --- a/contrib/pyln-testing/pyln/testing/grpc2py.py +++ b/contrib/pyln-testing/pyln/testing/grpc2py.py @@ -1159,6 +1159,7 @@ def decode_invoice_paths2py(m): return remove_default({ "blinding": hexlify(m.blinding), # PrimitiveField in generate_composite "first_node_id": hexlify(m.first_node_id), # PrimitiveField in generate_composite + "first_path_key": hexlify(m.first_path_key), # PrimitiveField in generate_composite "first_scid": m.first_scid, # PrimitiveField in generate_composite "first_scid_dir": m.first_scid_dir, # PrimitiveField in generate_composite "path": [decode_invoice_paths_path2py(i) for i in m.path], # ArrayField[composite] in generate_composite @@ -1177,6 +1178,7 @@ def decode_invreq_paths2py(m): "path": [decode_invreq_paths_path2py(i) for i in m.path], # ArrayField[composite] in generate_composite "blinding": hexlify(m.blinding), # PrimitiveField in generate_composite "first_node_id": hexlify(m.first_node_id), # PrimitiveField in generate_composite + "first_path_key": hexlify(m.first_path_key), # PrimitiveField in generate_composite "first_scid": m.first_scid, # PrimitiveField in generate_composite "first_scid_dir": m.first_scid_dir, # PrimitiveField in generate_composite }) @@ -1194,6 +1196,7 @@ def decode_offer_paths2py(m): "path": [decode_offer_paths_path2py(i) for i in m.path], # ArrayField[composite] in generate_composite "blinding": hexlify(m.blinding), # PrimitiveField in generate_composite "first_node_id": hexlify(m.first_node_id), # PrimitiveField in generate_composite + "first_path_key": hexlify(m.first_path_key), # PrimitiveField in generate_composite "first_scid": m.first_scid, # PrimitiveField in generate_composite "first_scid_dir": m.first_scid_dir, # PrimitiveField in generate_composite }) diff --git a/devtools/bolt12-cli.c b/devtools/bolt12-cli.c index 7b4dae1968c2..2dc10be7243c 100644 --- a/devtools/bolt12-cli.c +++ b/devtools/bolt12-cli.c @@ -269,11 +269,11 @@ static bool print_blindedpaths(const char *fieldname, size_t bp_idx = 0; for (size_t i = 0; i < tal_count(paths); i++) { - struct onionmsg_hop **p = paths[i]->path; - printf("%s %zu/%zu: blinding %s ", + struct blinded_path_hop **p = paths[i]->path; + printf("%s %zu/%zu: first_path_key %s ", fieldname, i, tal_count(paths), - fmt_pubkey(tmpctx, &paths[i]->blinding)); + fmt_pubkey(tmpctx, &paths[i]->first_path_key)); printf("first_node_id %s ", fmt_sciddir_or_pubkey(tmpctx, &paths[i]->first_node_id)); printf("path "); diff --git a/doc/developers-guide/deprecations.md b/doc/developers-guide/deprecations.md index 114207047c2d..507b3b2ab6a9 100644 --- a/doc/developers-guide/deprecations.md +++ b/doc/developers-guide/deprecations.md @@ -31,6 +31,8 @@ hidden: false | listpeers.features.option_anchors_zero_fee_htlc_tx | Field | v24.08 | v25.08 | Renamed to `option_anchors` in the spec: check for that in `features` instead | | experimental-anchors | Config | v24.02 | v25.02 | Now the default | | experimental-onion-messages | Config | v24.08 | v25.02 | Now the default | +| decode.blinding | Field | v24.11 | v25.05 | Renamed to `first_path_key` in BOLT 4 (available in `decode` from v24.11) | +| onion_message_recv.blinding | Hook Field | v24.11 | v25.05 | Renamed to `first_path_key` in BOLT 4 (available in hook from v24.11) | Inevitably there are features which need to change: either to be generalized, or removed when they can no longer be supported. @@ -42,7 +44,7 @@ Types of deprecation: * Parameter(s): a JSON RPC input. * Getmanifest Reply: a field in the JSON reply which plugins give to `getmanifest`. * Hook Return: a field/value in the JSON reply which plugins give to a plugin hook. -* Notification Field: a field in the JSON notification to a plugin. +* Notification/Hook Field: a field in the JSON notification/hook to a plugin. For each deprecation: 1. The deprecation is listed here, and in the CHANGELOG.md file. diff --git a/doc/schemas/lightning-decode.json b/doc/schemas/lightning-decode.json index 0523f2def593..d1eb5e79bcbe 100644 --- a/doc/schemas/lightning-decode.json +++ b/doc/schemas/lightning-decode.json @@ -173,7 +173,7 @@ "items": { "type": "object", "required": [ - "blinding", + "first_path_key", "path" ], "additionalProperties": false, @@ -199,11 +199,22 @@ ] }, "blinding": { + "deprecated": [ + "v24.11", + "v25.05" + ], "type": "pubkey", "description": [ "Blinding factor for this path." ] }, + "first_path_key": { + "added": "v24.11", + "type": "pubkey", + "description": [ + "Path key to deliver to first hop on this path." + ] + }, "path": { "type": "array", "description": [ @@ -591,7 +602,7 @@ "items": { "type": "object", "required": [ - "blinding", + "first_path_key", "path" ], "additionalProperties": false, @@ -616,7 +627,18 @@ "which end of the first_scid is the start of the path" ] }, + "first_path_key": { + "added": "v24.11", + "type": "pubkey", + "description": [ + "Path key to deliver to first hop on this path." + ] + }, "blinding": { + "deprecated": [ + "v24.11", + "v25.05" + ], "type": "pubkey", "description": [ "Blinding factor for this path." @@ -807,7 +829,7 @@ "items": { "type": "object", "required": [ - "blinding", + "first_path_key", "path" ], "additionalProperties": false, @@ -835,11 +857,22 @@ }, "blinding": { "added": "v24.08", + "deprecated": [ + "v24.11", + "v25.05" + ], "type": "pubkey", "description": [ "Blinding factor for this path." ] }, + "first_path_key": { + "added": "v24.11", + "type": "pubkey", + "description": [ + "Path key to deliver to first hop on this path." + ] + }, "path": { "type": "array", "added": "v24.08", @@ -1166,7 +1199,7 @@ "items": { "type": "object", "required": [ - "blinding", + "first_path_key", "path" ], "additionalProperties": false, @@ -1192,11 +1225,22 @@ ] }, "blinding": { + "deprecated": [ + "v24.11", + "v25.05" + ], "type": "pubkey", "description": [ "Blinding factor for this path." ] }, + "first_path_key": { + "added": "v24.11", + "type": "pubkey", + "description": [ + "Path key to deliver to first hop on this path." + ] + }, "path": { "type": "array", "description": [ @@ -1382,7 +1426,7 @@ "items": { "type": "object", "required": [ - "blinding", + "first_path_key", "path" ], "additionalProperties": false, @@ -1410,11 +1454,22 @@ }, "blinding": { "added": "v24.08", + "deprecated": [ + "v24.11", + "v25.05" + ], "type": "pubkey", "description": [ "Blinding factor for this path." ] }, + "first_path_key": { + "added": "v24.11", + "type": "pubkey", + "description": [ + "Path key to deliver to first hop on this path." + ] + }, "path": { "type": "array", "added": "v24.08", @@ -1469,7 +1524,7 @@ "items": { "type": "object", "required": [ - "blinding", + "first_path_key", "payinfo", "path" ], @@ -1497,10 +1552,21 @@ }, "blinding": { "type": "pubkey", + "deprecated": [ + "v24.11", + "v25.05" + ], "description": [ "Blinding factor for this path." ] }, + "first_path_key": { + "added": "v24.11", + "type": "pubkey", + "description": [ + "Path key to deliver to first hop on this path." + ] + }, "payinfo": { "type": "object", "required": [ diff --git a/gossipd/test/run-check_channel_announcement.c b/gossipd/test/run-check_channel_announcement.c index 42da0a71037d..6c743d4d9871 100644 --- a/gossipd/test/run-check_channel_announcement.c +++ b/gossipd/test/run-check_channel_announcement.c @@ -46,16 +46,16 @@ void blinding_hash_e_and_ss(const struct pubkey *e UNNEEDED, const struct secret *ss UNNEEDED, struct sha256 *sha UNNEEDED) { fprintf(stderr, "blinding_hash_e_and_ss called!\n"); abort(); } -/* Generated stub for blinding_next_privkey */ -bool blinding_next_privkey(const struct privkey *e UNNEEDED, - const struct sha256 *h UNNEEDED, - struct privkey *next UNNEEDED) -{ fprintf(stderr, "blinding_next_privkey called!\n"); abort(); } -/* Generated stub for blinding_next_pubkey */ -bool blinding_next_pubkey(const struct pubkey *pk UNNEEDED, - const struct sha256 *h UNNEEDED, - struct pubkey *next UNNEEDED) -{ fprintf(stderr, "blinding_next_pubkey called!\n"); abort(); } +/* Generated stub for blinding_next_path_key */ +bool blinding_next_path_key(const struct pubkey *pk UNNEEDED, + const struct sha256 *h UNNEEDED, + struct pubkey *next UNNEEDED) +{ fprintf(stderr, "blinding_next_path_key called!\n"); abort(); } +/* Generated stub for blinding_next_path_privkey */ +bool blinding_next_path_privkey(const struct privkey *e UNNEEDED, + const struct sha256 *h UNNEEDED, + struct privkey *next UNNEEDED) +{ fprintf(stderr, "blinding_next_path_privkey called!\n"); abort(); } /* Generated stub for fromwire_sciddir_or_pubkey */ void fromwire_sciddir_or_pubkey(const u8 **cursor UNNEEDED, size_t *max UNNEEDED, struct sciddir_or_pubkey *sciddpk UNNEEDED) diff --git a/gossipd/test/run-extended-info.c b/gossipd/test/run-extended-info.c index 10ba32ad774f..4973af8d9258 100644 --- a/gossipd/test/run-extended-info.c +++ b/gossipd/test/run-extended-info.c @@ -21,16 +21,16 @@ void blinding_hash_e_and_ss(const struct pubkey *e UNNEEDED, const struct secret *ss UNNEEDED, struct sha256 *sha UNNEEDED) { fprintf(stderr, "blinding_hash_e_and_ss called!\n"); abort(); } -/* Generated stub for blinding_next_privkey */ -bool blinding_next_privkey(const struct privkey *e UNNEEDED, - const struct sha256 *h UNNEEDED, - struct privkey *next UNNEEDED) -{ fprintf(stderr, "blinding_next_privkey called!\n"); abort(); } -/* Generated stub for blinding_next_pubkey */ -bool blinding_next_pubkey(const struct pubkey *pk UNNEEDED, - const struct sha256 *h UNNEEDED, - struct pubkey *next UNNEEDED) -{ fprintf(stderr, "blinding_next_pubkey called!\n"); abort(); } +/* Generated stub for blinding_next_path_key */ +bool blinding_next_path_key(const struct pubkey *pk UNNEEDED, + const struct sha256 *h UNNEEDED, + struct pubkey *next UNNEEDED) +{ fprintf(stderr, "blinding_next_path_key called!\n"); abort(); } +/* Generated stub for blinding_next_path_privkey */ +bool blinding_next_path_privkey(const struct privkey *e UNNEEDED, + const struct sha256 *h UNNEEDED, + struct privkey *next UNNEEDED) +{ fprintf(stderr, "blinding_next_path_privkey called!\n"); abort(); } /* Generated stub for decode_channel_update_timestamps */ struct channel_update_timestamps *decode_channel_update_timestamps(const tal_t *ctx UNNEEDED, const struct tlv_reply_channel_range_tlvs_timestamps_tlv *timestamps_tlv UNNEEDED) diff --git a/gossipd/test/run-next_block_range.c b/gossipd/test/run-next_block_range.c index be5859db3f68..bf8bad7252f2 100644 --- a/gossipd/test/run-next_block_range.c +++ b/gossipd/test/run-next_block_range.c @@ -17,16 +17,16 @@ void blinding_hash_e_and_ss(const struct pubkey *e UNNEEDED, const struct secret *ss UNNEEDED, struct sha256 *sha UNNEEDED) { fprintf(stderr, "blinding_hash_e_and_ss called!\n"); abort(); } -/* Generated stub for blinding_next_privkey */ -bool blinding_next_privkey(const struct privkey *e UNNEEDED, - const struct sha256 *h UNNEEDED, - struct privkey *next UNNEEDED) -{ fprintf(stderr, "blinding_next_privkey called!\n"); abort(); } -/* Generated stub for blinding_next_pubkey */ -bool blinding_next_pubkey(const struct pubkey *pk UNNEEDED, - const struct sha256 *h UNNEEDED, - struct pubkey *next UNNEEDED) -{ fprintf(stderr, "blinding_next_pubkey called!\n"); abort(); } +/* Generated stub for blinding_next_path_key */ +bool blinding_next_path_key(const struct pubkey *pk UNNEEDED, + const struct sha256 *h UNNEEDED, + struct pubkey *next UNNEEDED) +{ fprintf(stderr, "blinding_next_path_key called!\n"); abort(); } +/* Generated stub for blinding_next_path_privkey */ +bool blinding_next_path_privkey(const struct privkey *e UNNEEDED, + const struct sha256 *h UNNEEDED, + struct privkey *next UNNEEDED) +{ fprintf(stderr, "blinding_next_path_privkey called!\n"); abort(); } /* Generated stub for find_peer */ struct peer *find_peer(struct daemon *daemon UNNEEDED, const struct node_id *id UNNEEDED) { fprintf(stderr, "find_peer called!\n"); abort(); } diff --git a/gossipd/test/run-txout_failure.c b/gossipd/test/run-txout_failure.c index 64ee3b69875a..ebb740ea77f4 100644 --- a/gossipd/test/run-txout_failure.c +++ b/gossipd/test/run-txout_failure.c @@ -19,16 +19,16 @@ void blinding_hash_e_and_ss(const struct pubkey *e UNNEEDED, const struct secret *ss UNNEEDED, struct sha256 *sha UNNEEDED) { fprintf(stderr, "blinding_hash_e_and_ss called!\n"); abort(); } -/* Generated stub for blinding_next_privkey */ -bool blinding_next_privkey(const struct privkey *e UNNEEDED, - const struct sha256 *h UNNEEDED, - struct privkey *next UNNEEDED) -{ fprintf(stderr, "blinding_next_privkey called!\n"); abort(); } -/* Generated stub for blinding_next_pubkey */ -bool blinding_next_pubkey(const struct pubkey *pk UNNEEDED, - const struct sha256 *h UNNEEDED, - struct pubkey *next UNNEEDED) -{ fprintf(stderr, "blinding_next_pubkey called!\n"); abort(); } +/* Generated stub for blinding_next_path_key */ +bool blinding_next_path_key(const struct pubkey *pk UNNEEDED, + const struct sha256 *h UNNEEDED, + struct pubkey *next UNNEEDED) +{ fprintf(stderr, "blinding_next_path_key called!\n"); abort(); } +/* Generated stub for blinding_next_path_privkey */ +bool blinding_next_path_privkey(const struct privkey *e UNNEEDED, + const struct sha256 *h UNNEEDED, + struct privkey *next UNNEEDED) +{ fprintf(stderr, "blinding_next_path_privkey called!\n"); abort(); } /* Generated stub for fromwire_sciddir_or_pubkey */ void fromwire_sciddir_or_pubkey(const u8 **cursor UNNEEDED, size_t *max UNNEEDED, struct sciddir_or_pubkey *sciddpk UNNEEDED) diff --git a/lightningd/htlc_end.c b/lightningd/htlc_end.c index 8106509801aa..46083353877c 100644 --- a/lightningd/htlc_end.c +++ b/lightningd/htlc_end.c @@ -128,7 +128,7 @@ struct htlc_in *new_htlc_in(const tal_t *ctx, struct amount_msat msat, u32 cltv_expiry, const struct sha256 *payment_hash, const struct secret *shared_secret TAKES, - const struct pubkey *blinding TAKES, + const struct pubkey *path_key TAKES, const u8 *onion_routing_packet, bool fail_immediate) { @@ -143,10 +143,7 @@ struct htlc_in *new_htlc_in(const tal_t *ctx, hin->status = NULL; hin->fail_immediate = fail_immediate; hin->shared_secret = tal_dup_or_null(hin, struct secret, shared_secret); - if (blinding) - hin->blinding = tal_dup(hin, struct pubkey, blinding); - else - hin->blinding = NULL; + hin->path_key = tal_dup_or_null(hin, struct pubkey, path_key); memcpy(hin->onion_routing_packet, onion_routing_packet, sizeof(hin->onion_routing_packet)); @@ -267,7 +264,7 @@ struct htlc_out *new_htlc_out(const tal_t *ctx, u32 cltv_expiry, const struct sha256 *payment_hash, const u8 *onion_routing_packet, - const struct pubkey *blinding, + const struct pubkey *path_key, bool am_origin, struct amount_msat final_msat, u64 partid, @@ -293,7 +290,7 @@ struct htlc_out *new_htlc_out(const tal_t *ctx, hout->preimage = NULL; hout->timeout = NULL; - hout->blinding = tal_dup_or_null(hout, struct pubkey, blinding); + hout->path_key = tal_dup_or_null(hout, struct pubkey, path_key); hout->am_origin = am_origin; if (am_origin) { hout->partid = partid; diff --git a/lightningd/htlc_end.h b/lightningd/htlc_end.h index b98a96f97dd4..42f2a0384ae4 100644 --- a/lightningd/htlc_end.h +++ b/lightningd/htlc_end.h @@ -47,7 +47,7 @@ struct htlc_in { struct timeabs received_time; /* If it was blinded. */ - struct pubkey *blinding; + struct pubkey *path_key; /* true if we supplied the preimage */ bool *we_filled; /* true if we immediately fail the htlc (too much dust) */ @@ -101,8 +101,8 @@ struct htlc_out { /* Where it's from, if not going to us. */ struct htlc_in *in; - /* Blinding to send alongside, if any. */ - struct pubkey *blinding; + /* Path_Key to send alongside, if any. */ + struct pubkey *path_key; /* Timer we use in case they don't add an HTLC in a timely manner. */ struct oneshot *timeout; @@ -156,7 +156,7 @@ struct htlc_in *new_htlc_in(const tal_t *ctx, struct amount_msat msat, u32 cltv_expiry, const struct sha256 *payment_hash, const struct secret *shared_secret TAKES, - const struct pubkey *blinding TAKES, + const struct pubkey *path_key TAKES, const u8 *onion_routing_packet, bool fail_immediate); @@ -167,7 +167,7 @@ struct htlc_out *new_htlc_out(const tal_t *ctx, u32 cltv_expiry, const struct sha256 *payment_hash, const u8 *onion_routing_packet, - const struct pubkey *blinding, + const struct pubkey *path_key, bool am_origin, struct amount_msat final_msat, u64 partid, diff --git a/lightningd/invoice.c b/lightningd/invoice.c index ff185de61a09..265dc212212d 100644 --- a/lightningd/invoice.c +++ b/lightningd/invoice.c @@ -1613,16 +1613,16 @@ static void add_stub_blindedpath(const tal_t *ctx, struct tlv_invoice *inv) { struct blinded_path *path; - struct privkey blinding; + struct privkey path_key; struct tlv_encrypted_data_tlv *tlv; path = tal(NULL, struct blinded_path); sciddir_or_pubkey_from_pubkey(&path->first_node_id, &ld->our_pubkey); - randombytes_buf(&blinding, sizeof(blinding)); - if (!pubkey_from_privkey(&blinding, &path->blinding)) + randombytes_buf(&path_key, sizeof(path_key)); + if (!pubkey_from_privkey(&path_key, &path->first_path_key)) abort(); - path->path = tal_arr(path, struct onionmsg_hop *, 1); - path->path[0] = tal(path->path, struct onionmsg_hop); + path->path = tal_arr(path, struct blinded_path_hop *, 1); + path->path[0] = tal(path->path, struct blinded_path_hop); /* A message in a bottle to ourselves: match it with * the invoice: we assume the payment_hash is unique! */ @@ -1633,7 +1633,7 @@ static void add_stub_blindedpath(const tal_t *ctx, path->path[0]->encrypted_recipient_data = encrypt_tlv_encrypted_data(path->path[0], - &blinding, + &path_key, &path->first_node_id.pubkey, tlv, NULL, diff --git a/lightningd/lightningd.c b/lightningd/lightningd.c index 1a05d16ffc75..e4cafa5bea29 100644 --- a/lightningd/lightningd.c +++ b/lightningd/lightningd.c @@ -919,6 +919,7 @@ static struct feature_set *default_features(const tal_t *ctx) OPTIONAL_FEATURE(OPT_PAYMENT_METADATA), OPTIONAL_FEATURE(OPT_SCID_ALIAS), OPTIONAL_FEATURE(OPT_ZEROCONF), + OPTIONAL_FEATURE(OPT_QUIESCE), OPTIONAL_FEATURE(OPT_ONION_MESSAGES), OPTIONAL_FEATURE(OPT_CHANNEL_TYPE), OPTIONAL_FEATURE(OPT_ROUTE_BLINDING), diff --git a/lightningd/onion_message.c b/lightningd/onion_message.c index 495541266071..c30699e3301a 100644 --- a/lightningd/onion_message.c +++ b/lightningd/onion_message.c @@ -21,7 +21,8 @@ struct onion_message_hook_payload { struct tlv_onionmsg_tlv *om; }; -static void json_add_blindedpath(struct json_stream *stream, +static void json_add_blindedpath(struct plugin *plugin, + struct json_stream *stream, const char *fieldname, const struct blinded_path *path) { @@ -32,7 +33,15 @@ static void json_add_blindedpath(struct json_stream *stream, json_add_short_channel_id(stream, "first_scid", path->first_node_id.scidd.scid); json_add_u32(stream, "first_scid_dir", path->first_node_id.scidd.dir); } - json_add_pubkey(stream, "blinding", &path->blinding); + if (lightningd_deprecated_in_ok(plugin->plugins->ld, + plugin->log, + plugin->plugins->ld->deprecated_ok, + "onion_message_recv", "blinding", + "v24.11", "v25.05", + NULL)) { + json_add_pubkey(stream, "blinding", &path->first_path_key); + } + json_add_pubkey(stream, "first_path_key", &path->first_path_key); json_array_start(stream, "hops"); for (size_t i = 0; i < tal_count(path->path); i++) { json_object_start(stream, NULL); @@ -55,7 +64,7 @@ static void onion_message_serialize(struct onion_message_hook_payload *payload, json_add_secret(stream, "pathsecret", payload->pathsecret); if (payload->reply_path) - json_add_blindedpath(stream, "reply_blindedpath", + json_add_blindedpath(plugin, stream, "reply_blindedpath", payload->reply_path); if (payload->om->invoice_request) @@ -209,14 +218,14 @@ static struct command_result *json_injectonionmessage(struct command *cmd, const jsmntok_t *params) { struct onion_hop *hops; - struct pubkey *blinding; + struct pubkey *path_key; struct sphinx_path *sphinx_path; struct onionpacket *op; struct secret *path_secrets; size_t onion_size; if (!param_check(cmd, buffer, params, - p_req("blinding", param_pubkey, &blinding), + p_req("path_key", param_pubkey, &path_key), p_req("hops", param_onion_hops, &hops), NULL)) return command_param_failed(); @@ -249,7 +258,7 @@ static struct command_result *json_injectonionmessage(struct command *cmd, subd_req(cmd, cmd->ld->connectd, take(towire_connectd_inject_onionmsg(NULL, - blinding, + path_key, serialize_onionpacket(tmpctx, op))), -1, 0, inject_onionmsg_reply, cmd); return command_still_pending(cmd); @@ -267,14 +276,14 @@ static struct command_result *json_decryptencrypteddata(struct command *cmd, const jsmntok_t *params) { u8 *encdata, *decrypted; - struct pubkey *blinding, next_blinding; + struct pubkey *path_key, next_path_key; struct secret ss; struct sha256 h; struct json_stream *response; if (!param_check(cmd, buffer, params, p_req("encrypted_data", param_bin_from_hex, &encdata), - p_req("blinding", param_pubkey, &blinding), + p_req("path_key", param_pubkey, &path_key), NULL)) return command_param_failed(); @@ -283,11 +292,12 @@ static struct command_result *json_decryptencrypteddata(struct command *cmd, * - MUST compute: * - $`ss_i = SHA256(k_i * E_i)`$ (standard ECDH) *... - * - MUST decrypt the `encrypted_data` field using $`rho_i`$ + * - $`rho_i = HMAC256(\text{"rho"}, ss_i)`$ + * - MUST decrypt the `encrypted_recipient_data` field using $`rho_i`$ */ - ecdh(blinding, &ss); + ecdh(path_key, &ss); - decrypted = decrypt_encmsg_raw(cmd, blinding, &ss, encdata); + decrypted = decrypt_encmsg_raw(cmd, &ss, encdata); if (!decrypted) return command_fail(cmd, JSONRPC2_INVALID_PARAMS, "Decryption failed!"); @@ -299,13 +309,13 @@ static struct command_result *json_decryptencrypteddata(struct command *cmd, * * - $`E_{i+1} = SHA256(E_i || ss_i) * E_i`$ */ - blinding_hash_e_and_ss(blinding, &ss, &h); - blinding_next_pubkey(blinding, &h, &next_blinding); + blinding_hash_e_and_ss(path_key, &ss, &h); + blinding_next_path_key(path_key, &h, &next_path_key); response = json_stream_success(cmd); json_object_start(response, "decryptencrypteddata"); json_add_hex_talarr(response, "decrypted", decrypted); - json_add_pubkey(response, "next_blinding", &next_blinding); + json_add_pubkey(response, "next_path_key", &next_path_key); json_object_end(response); return command_success(cmd, response); } diff --git a/lightningd/options.c b/lightningd/options.c index 8c62e23e9c16..052e8c00a1e6 100644 --- a/lightningd/options.c +++ b/lightningd/options.c @@ -1260,10 +1260,6 @@ static char *opt_set_dual_fund(struct lightningd *ld) static char *opt_set_splicing(struct lightningd *ld) { - /* Splicing requires STFU to be enabled */ - feature_set_or(ld->our_features, - take(feature_set_for_feature(NULL, - OPTIONAL_FEATURE(OPT_QUIESCE)))); feature_set_or(ld->our_features, take(feature_set_for_feature(NULL, OPTIONAL_FEATURE(OPT_EXPERIMENTAL_SPLICE)))); @@ -1299,9 +1295,9 @@ static char *opt_set_peer_storage(struct lightningd *ld) static char *opt_set_quiesce(struct lightningd *ld) { - feature_set_or(ld->our_features, - take(feature_set_for_feature(NULL, - OPTIONAL_FEATURE(OPT_QUIESCE)))); + if (!opt_deprecated_ok(ld, "experimental-quiesce", NULL, + "v24.11", "v25.05")) + return "--experimental-quiesce is now enabled by default"; return NULL; } diff --git a/lightningd/pay.c b/lightningd/pay.c index 9d65a6319927..ac72e42d8fc2 100644 --- a/lightningd/pay.c +++ b/lightningd/pay.c @@ -723,7 +723,7 @@ static const u8 *send_onion(const tal_t *ctx, struct lightningd *ld, const struct route_hop *first_hop, const struct amount_msat final_amount, const struct sha256 *payment_hash, - const struct pubkey *blinding, + const struct pubkey *path_key, u64 partid, u64 groupid, struct channel *channel, @@ -738,7 +738,7 @@ static const u8 *send_onion(const tal_t *ctx, struct lightningd *ld, return send_htlc_out(ctx, channel, first_hop->amount, base_expiry + first_hop->delay, final_amount, payment_hash, - blinding, partid, groupid, onion, NULL, hout); + path_key, partid, groupid, onion, NULL, hout); } static struct command_result *check_invoice_request_usage(struct command *cmd, diff --git a/lightningd/peer_htlcs.c b/lightningd/peer_htlcs.c index a9af74260cae..955dffa94fd0 100644 --- a/lightningd/peer_htlcs.c +++ b/lightningd/peer_htlcs.c @@ -136,19 +136,19 @@ static void channel_stats_incr_out_offered(struct channel *c, } /* BOLT #4: - * - if `blinding_point` is set in the incoming `update_add_htlc`: + * - if `path_key` is set in the incoming `update_add_htlc`: * - MUST return an `invalid_onion_blinding` error. - * - if `current_blinding_point` is set in the onion payload and it is not the + * - if `current_path_key` is set in the onion payload and it is not the * final node: * - MUST return an `invalid_onion_blinding` error. */ static bool blind_error_return(const struct htlc_in *hin) { - if (hin->blinding) + if (hin->path_key) return true; if (hin->payload - && hin->payload->blinding + && hin->payload->path_key && !hin->payload->final) return true; @@ -186,7 +186,7 @@ static struct failed_htlc *mk_failed_htlc(const tal_t *ctx, /* Also, at head of the blinded path, return "normal" invalid * onion blinding. */ - if (hin->payload && hin->payload->blinding) { + if (hin->payload && hin->payload->path_key) { struct sha256 sha; sha256(&sha, hin->onion_routing_packet, sizeof(hin->onion_routing_packet)); @@ -564,7 +564,18 @@ static void rcvd_htlc_reply(struct subd *subd, const u8 *msg, const int *fds UNU } if (tal_count(failmsg)) { - /* It's our job to append the channel_update */ + /* BOLT #4: + * The `channel_update` field used to be mandatory in messages + * whose `failure_code` includes the `UPDATE` flag. However, + * because nodes applying an update contained in the onion to + * their gossip data is a massive fingerprinting + * vulnerability, the `channel_update` field is no longer + * mandatory and nodes are expected to transition away from + * including it. Nodes which do not provide a `channel_update` + * are expected to set the `channel_update` `len` field to + * zero. + */ + /* We still append the channel_update (if we have one!) FIXME: provide an option? */ if (fromwire_peektype(failmsg) & UPDATE) { const u8 *update = channel_update_for_error(tmpctx, hout->key.channel); towire(&failmsg, update, tal_bytelen(update)); @@ -644,7 +655,7 @@ const u8 *send_htlc_out(const tal_t *ctx, struct amount_msat amount, u32 cltv, struct amount_msat final_msat, const struct sha256 *payment_hash, - const struct pubkey *blinding, + const struct pubkey *path_key, u64 partid, u64 groupid, const u8 *onion_routing_packet, @@ -679,7 +690,7 @@ const u8 *send_htlc_out(const tal_t *ctx, /* Make peer's daemon own it, catch if it dies. */ *houtp = new_htlc_out(out->owner, out, amount, cltv, payment_hash, onion_routing_packet, - blinding, in == NULL, + path_key, in == NULL, final_msat, partid, groupid, in); tal_add_destructor(*houtp, destroy_hout_subd_died); @@ -693,7 +704,7 @@ const u8 *send_htlc_out(const tal_t *ctx, } msg = towire_channeld_offer_htlc(out, amount, cltv, payment_hash, - onion_routing_packet, blinding); + onion_routing_packet, path_key); subd_req(out->peer->ld, out->owner, take(msg), -1, 0, rcvd_htlc_reply, *houtp); @@ -746,7 +757,7 @@ static void forward_htlc(struct htlc_in *hin, const struct short_channel_id *forward_scid, const struct channel_id *forward_to, const u8 next_onion[TOTAL_PACKET_SIZE(ROUTING_INFO_SIZE)], - const struct pubkey *next_blinding) + const struct pubkey *next_path_key) { const u8 *failmsg; struct lightningd *ld = hin->key.channel->peer->ld; @@ -861,7 +872,7 @@ static void forward_htlc(struct htlc_in *hin, failmsg = send_htlc_out(tmpctx, next, amt_to_forward, outgoing_cltv_value, AMOUNT_MSAT(0), &hin->payment_hash, - next_blinding, 0 /* partid */, 0 /* groupid */, + next_path_key, 0 /* partid */, 0 /* groupid */, next_onion, hin, &hout); if (!failmsg) return; @@ -884,7 +895,7 @@ struct htlc_accepted_hook_payload { struct htlc_in *hin; struct channel *channel; struct lightningd *ld; - struct pubkey *next_blinding; + struct pubkey *next_path_key; /* NULL if we couldn't find it */ struct channel_id *fwd_channel_id; u8 *next_onion; @@ -975,7 +986,7 @@ static bool htlc_accepted_hook_deserialize(struct htlc_accepted_hook_payload *re rs->raw_payload = prepend_length(rs, take(payload)); request->payload = onion_decode(request, rs, - hin->blinding, + hin->path_key, ld->accept_extra_tlv_types, hin->msat, hin->cltv_expiry, @@ -1152,7 +1163,7 @@ htlc_accepted_hook_final(struct htlc_accepted_hook_payload *request STEALS) request->payload->forward_channel, request->fwd_channel_id, serialize_onionpacket(tmpctx, rs->next), - request->next_blinding); + request->next_path_key); } else handle_localpay(hin, request->payload->amt_to_forward, @@ -1164,18 +1175,18 @@ htlc_accepted_hook_final(struct htlc_accepted_hook_payload *request STEALS) tal_free(request); } -/* Apply tweak to ephemeral key if blinding is non-NULL, then do ECDH */ +/* Apply tweak to ephemeral key if path_key is non-NULL, then do ECDH */ static bool ecdh_maybe_blinding(const struct pubkey *ephemeral_key, - const struct pubkey *blinding, + const struct pubkey *path_key, struct secret *ss) { struct pubkey point = *ephemeral_key; - if (blinding) { + if (path_key) { struct secret hmac; struct secret blinding_ss; - ecdh(blinding, &blinding_ss); + ecdh(path_key, &blinding_ss); /* b(i) = HMAC256("blinded_node_id", ss(i)) * k(i) */ subkey_from_hmac("blinded_node_id", &blinding_ss, &hmac); @@ -1392,7 +1403,7 @@ static bool peer_accepted_htlc(const tal_t *ctx, hook_payload->route_step = tal_steal(hook_payload, rs); hook_payload->payload = onion_decode(hook_payload, rs, - hin->blinding, + hin->path_key, ld->accept_extra_tlv_types, hin->msat, hin->cltv_expiry, @@ -1404,16 +1415,16 @@ static bool peer_accepted_htlc(const tal_t *ctx, hook_payload->next_onion = serialize_onionpacket(hook_payload, rs->next); /* We could have blinding from hin or from inside onion. */ - if (hook_payload->payload && hook_payload->payload->blinding) { + if (hook_payload->payload && hook_payload->payload->path_key) { struct sha256 sha; - blinding_hash_e_and_ss(hook_payload->payload->blinding, + blinding_hash_e_and_ss(hook_payload->payload->path_key, &hook_payload->payload->blinding_ss, &sha); - hook_payload->next_blinding = tal(hook_payload, struct pubkey); - blinding_next_pubkey(hook_payload->payload->blinding, &sha, - hook_payload->next_blinding); + hook_payload->next_path_key = tal(hook_payload, struct pubkey); + blinding_next_path_key(hook_payload->payload->path_key, &sha, + hook_payload->next_path_key); } else - hook_payload->next_blinding = NULL; + hook_payload->next_path_key = NULL; /* The scid is merely used to indicate the next peer, it is not * a requirement (nor, ideally, observable anyway). We can change @@ -1432,7 +1443,7 @@ static bool peer_accepted_htlc(const tal_t *ctx, fail: /* In a blinded path, *all* failures are "invalid_onion_blinding" */ - if (hin->blinding) { + if (hin->path_key) { *failmsg = tal_free(*failmsg); *badonion = WIRE_INVALID_ONION_BLINDING; } @@ -2146,7 +2157,7 @@ static bool channel_added_their_htlc(struct channel *channel, &failcode); if (op) { if (!ecdh_maybe_blinding(&op->ephemeralkey, - added->blinding, + added->path_key, &shared_secret)) { log_debug(channel->log, "htlc %"PRIu64 ": can't tweak pubkey", added->id); @@ -2159,7 +2170,7 @@ static bool channel_added_their_htlc(struct channel *channel, hin = new_htlc_in(channel, channel, added->id, added->amount, added->cltv_expiry, &added->payment_hash, op ? &shared_secret : NULL, - added->blinding, + added->path_key, added->onion_routing_packet, added->fail_immediate); @@ -2596,7 +2607,7 @@ const struct existing_htlc **peer_htlcs(const tal_t *ctx, hin->msat, &hin->payment_hash, hin->cltv_expiry, hin->onion_routing_packet, - hin->blinding, + hin->path_key, hin->preimage, f); tal_arr_expand(&htlcs, existing); @@ -2628,7 +2639,7 @@ const struct existing_htlc **peer_htlcs(const tal_t *ctx, hout->msat, &hout->payment_hash, hout->cltv_expiry, hout->onion_routing_packet, - hout->blinding, + hout->path_key, hout->preimage, f); tal_arr_expand(&htlcs, existing); diff --git a/lightningd/peer_htlcs.h b/lightningd/peer_htlcs.h index 688dd23ad7ed..f67ff0ed530c 100644 --- a/lightningd/peer_htlcs.h +++ b/lightningd/peer_htlcs.h @@ -32,7 +32,7 @@ const u8 *send_htlc_out(const tal_t *ctx, struct amount_msat amount, u32 cltv, struct amount_msat final_msat, const struct sha256 *payment_hash, - const struct pubkey *blinding, + const struct pubkey *path_key, u64 partid, u64 groupid, const u8 *onion_routing_packet, diff --git a/lightningd/test/run-invoice-select-inchan.c b/lightningd/test/run-invoice-select-inchan.c index 54fe654ac139..4d2b0832b1c2 100644 --- a/lightningd/test/run-invoice-select-inchan.c +++ b/lightningd/test/run-invoice-select-inchan.c @@ -244,10 +244,10 @@ char *encode_scriptpubkey_to_addr(const tal_t *ctx UNNEEDED, { fprintf(stderr, "encode_scriptpubkey_to_addr called!\n"); abort(); } /* Generated stub for encrypt_tlv_encrypted_data */ u8 *encrypt_tlv_encrypted_data(const tal_t *ctx UNNEEDED, - const struct privkey *blinding UNNEEDED, + const struct privkey *path_privkey UNNEEDED, const struct pubkey *node UNNEEDED, const struct tlv_encrypted_data_tlv *tlv UNNEEDED, - struct privkey *next_blinding UNNEEDED, + struct privkey *next_path_privkey UNNEEDED, struct pubkey *node_alias) { fprintf(stderr, "encrypt_tlv_encrypted_data called!\n"); abort(); } diff --git a/plugins/libplugin-pay.c b/plugins/libplugin-pay.c index b8f68582391f..14a250926c16 100644 --- a/plugins/libplugin-pay.c +++ b/plugins/libplugin-pay.c @@ -1373,7 +1373,6 @@ handle_final_failure(struct command *cmd, goto strange_error; case WIRE_INVALID_ONION_PAYLOAD: - case WIRE_INVALID_REALM: case WIRE_PERMANENT_NODE_FAILURE: case WIRE_TEMPORARY_NODE_FAILURE: case WIRE_REQUIRED_NODE_FEATURE_MISSING: @@ -1477,7 +1476,6 @@ handle_intermediate_failure(struct command *cmd, case WIRE_TEMPORARY_NODE_FAILURE: case WIRE_REQUIRED_NODE_FEATURE_MISSING: case WIRE_INVALID_ONION_PAYLOAD: - case WIRE_INVALID_REALM: case WIRE_INVALID_ONION_BLINDING: tal_arr_expand(&root->excluded_nodes, *errnode); goto error; @@ -2449,7 +2447,6 @@ static bool payment_can_retry(struct payment *p) case WIRE_INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS: case WIRE_INVALID_ONION_PAYLOAD: case WIRE_INVALID_ONION_VERSION: - case WIRE_INVALID_REALM: case WIRE_MPP_TIMEOUT: case WIRE_PERMANENT_NODE_FAILURE: case WIRE_REQUIRED_NODE_FEATURE_MISSING: diff --git a/plugins/offers.c b/plugins/offers.c index ef75d6c46218..21b50943bdaa 100644 --- a/plugins/offers.c +++ b/plugins/offers.c @@ -106,7 +106,7 @@ inject_onionmessage_(struct command *cmd, req = jsonrpc_request_start(cmd->plugin, cmd, "injectonionmessage", cb, errcb, arg); - json_add_pubkey(req->js, "blinding", &omsg->first_blinding); + json_add_pubkey(req->js, "path_key", &omsg->first_path_key); json_array_start(req->js, "hops"); for (size_t i = 0; i < tal_count(omsg->hops); i++) { json_object_start(req->js, NULL); @@ -150,9 +150,9 @@ static struct blinded_path *blinded_path_dup(const tal_t *ctx, { struct blinded_path *bp = tal(ctx, struct blinded_path); *bp = *old; - bp->path = tal_arr(bp, struct onionmsg_hop *, tal_count(old->path)); + bp->path = tal_arr(bp, struct blinded_path_hop *, tal_count(old->path)); for (size_t i = 0; i < tal_count(bp->path); i++) { - bp->path[i] = tal(bp->path, struct onionmsg_hop); + bp->path[i] = tal(bp->path, struct blinded_path_hop); bp->path[i]->blinded_node_id = old->path[i]->blinded_node_id; bp->path[i]->encrypted_recipient_data = tal_dup_talarr(bp->path[i], u8, old->path[i]->encrypted_recipient_data); @@ -504,7 +504,7 @@ static void json_add_chains(struct json_stream *js, static void json_add_onionmsg_path(struct json_stream *js, const char *fieldname, - const struct onionmsg_hop *hop) + const struct blinded_path_hop *hop) { json_object_start(js, fieldname); json_add_pubkey(js, "blinded_node_id", &hop->blinded_node_id); @@ -513,7 +513,8 @@ static void json_add_onionmsg_path(struct json_stream *js, } /* Returns true if valid */ -static bool json_add_blinded_paths(struct json_stream *js, +static bool json_add_blinded_paths(struct command *cmd, + struct json_stream *js, const char *fieldname, struct blinded_path **paths, struct blinded_payinfo **blindedpay) @@ -530,7 +531,10 @@ static bool json_add_blinded_paths(struct json_stream *js, json_add_u32(js, "first_scid_dir", paths[i]->first_node_id.scidd.dir); } - json_add_pubkey(js, "blinding", &paths[i]->blinding); + + if (command_deprecated_out_ok(cmd, "blinding", "v24.11", "v25.05")) + json_add_pubkey(js, "blinding", &paths[i]->first_path_key); + json_add_pubkey(js, "first_path_key", &paths[i]->first_path_key); /* Don't crash if we're short a payinfo! */ if (i < tal_count(blindedpay)) { @@ -612,7 +616,8 @@ static bool json_add_utf8(struct json_stream *js, return false; } -static bool json_add_offer_fields(struct json_stream *js, +static bool json_add_offer_fields(struct command *cmd, + struct json_stream *js, const struct bitcoin_blkid *offer_chains, const u8 *offer_metadata, const char *offer_currency, @@ -672,7 +677,7 @@ static bool json_add_offer_fields(struct json_stream *js, json_add_u64(js, "offer_absolute_expiry", *offer_absolute_expiry); if (offer_paths) - valid &= json_add_blinded_paths(js, "offer_paths", + valid &= json_add_blinded_paths(cmd, js, "offer_paths", offer_paths, NULL); if (offer_quantity_max) @@ -737,7 +742,7 @@ static void json_add_extra_fields(struct json_stream *js, json_array_end(js); } -static void json_add_offer(struct json_stream *js, const struct tlv_offer *offer) +static void json_add_offer(struct command *cmd, struct json_stream *js, const struct tlv_offer *offer) { struct sha256 offer_id; bool valid = true; @@ -745,7 +750,7 @@ static void json_add_offer(struct json_stream *js, const struct tlv_offer *offer offer_offer_id(offer, &offer_id); json_add_sha256(js, "offer_id", &offer_id); - valid &= json_add_offer_fields(js, + valid &= json_add_offer_fields(cmd, js, offer->offer_chains, offer->offer_metadata, offer->offer_currency, @@ -774,7 +779,8 @@ static void json_add_offer(struct json_stream *js, const struct tlv_offer *offer json_add_bool(js, "valid", valid); } -static bool json_add_invreq_fields(struct json_stream *js, +static bool json_add_invreq_fields(struct command *cmd, + struct json_stream *js, const u8 *invreq_metadata, const struct bitcoin_blkid *invreq_chain, const u64 *invreq_amount, @@ -817,7 +823,7 @@ static bool json_add_invreq_fields(struct json_stream *js, if (invreq_payer_note) valid &= json_add_utf8(js, "invreq_payer_note", invreq_payer_note); if (invreq_paths) - valid &= json_add_blinded_paths(js, "invreq_paths", + valid &= json_add_blinded_paths(cmd, js, "invreq_paths", invreq_paths, NULL); if (invreq_recurrence_counter) { json_add_u32(js, "invreq_recurrence_counter", @@ -902,7 +908,8 @@ static bool json_add_fallbacks(struct json_stream *js, return valid; } -static void json_add_invoice_request(struct json_stream *js, +static void json_add_invoice_request(struct command *cmd, + struct json_stream *js, const struct tlv_invoice_request *invreq) { bool valid = true; @@ -915,7 +922,7 @@ static void json_add_invoice_request(struct json_stream *js, json_add_sha256(js, "offer_id", &offer_id); } - valid &= json_add_offer_fields(js, + valid &= json_add_offer_fields(cmd, js, invreq->offer_chains, invreq->offer_metadata, invreq->offer_currency, @@ -931,7 +938,7 @@ static void json_add_invoice_request(struct json_stream *js, invreq->offer_recurrence_paywindow, invreq->offer_recurrence_limit, invreq->offer_recurrence_base); - valid &= json_add_invreq_fields(js, + valid &= json_add_invreq_fields(cmd, js, invreq->invreq_metadata, invreq->invreq_chain, invreq->invreq_amount, @@ -980,7 +987,8 @@ static void json_add_invoice_request(struct json_stream *js, json_add_bool(js, "valid", valid); } -static void json_add_b12_invoice(struct json_stream *js, +static void json_add_b12_invoice(struct command *cmd, + struct json_stream *js, const struct tlv_invoice *invoice) { bool valid = true; @@ -993,7 +1001,7 @@ static void json_add_b12_invoice(struct json_stream *js, json_add_sha256(js, "offer_id", &offer_id); } - valid &= json_add_offer_fields(js, + valid &= json_add_offer_fields(cmd, js, invoice->offer_chains, invoice->offer_metadata, invoice->offer_currency, @@ -1009,7 +1017,7 @@ static void json_add_b12_invoice(struct json_stream *js, invoice->offer_recurrence_paywindow, invoice->offer_recurrence_limit, invoice->offer_recurrence_base); - valid &= json_add_invreq_fields(js, + valid &= json_add_invreq_fields(cmd, js, invoice->invreq_metadata, invoice->invreq_chain, invoice->invreq_amount, @@ -1035,7 +1043,7 @@ static void json_add_b12_invoice(struct json_stream *js, "invoices with paths without blindedpay are invalid"); valid = false; } - valid &= json_add_blinded_paths(js, "invoice_paths", + valid &= json_add_blinded_paths(cmd, js, "invoice_paths", invoice->invoice_paths, invoice->invoice_blindedpay); } else { @@ -1354,11 +1362,11 @@ static struct command_result *json_decode(struct command *cmd, response = jsonrpc_stream_success(cmd); json_add_string(response, "type", decodable->type); if (decodable->offer) - json_add_offer(response, decodable->offer); + json_add_offer(cmd, response, decodable->offer); if (decodable->invreq) - json_add_invoice_request(response, decodable->invreq); + json_add_invoice_request(cmd, response, decodable->invreq); if (decodable->invoice) - json_add_b12_invoice(response, decodable->invoice); + json_add_b12_invoice(cmd, response, decodable->invoice); if (decodable->b11) { /* The bolt11 decoder simply refuses to decode bad invs. */ json_add_bolt11(response, decodable->b11); diff --git a/plugins/pay.c b/plugins/pay.c index 967d97123fb0..98dcd1df1424 100644 --- a/plugins/pay.c +++ b/plugins/pay.c @@ -1110,16 +1110,16 @@ decrypt_done(struct command *cmd, { const char *err; u8 *encdata; - struct pubkey next_blinding; + struct pubkey next_path_key; struct tlv_encrypted_data_tlv *enctlv; const u8 *cursor; size_t maxlen; err = json_scan(tmpctx, buf, result, "{decryptencrypteddata:{decrypted:%" - ",next_blinding:%}}", + ",next_path_key:%}}", JSON_SCAN_TAL(tmpctx, json_tok_bin_from_hex, &encdata), - JSON_SCAN(json_to_pubkey, &next_blinding)); + JSON_SCAN(json_to_pubkey, &next_path_key)); if (err) { return command_fail(cmd, LIGHTNINGD, "Bad decryptencrypteddata response? %.*s: %s", @@ -1151,10 +1151,10 @@ decrypt_done(struct command *cmd, } /* Promote second hop to first hop */ - if (enctlv->next_blinding_override) - p->blindedpath->blinding = *enctlv->next_blinding_override; + if (enctlv->next_path_key_override) + p->blindedpath->first_path_key = *enctlv->next_path_key_override; else - p->blindedpath->blinding = next_blinding; + p->blindedpath->first_path_key = next_path_key; /* Remove now-decrypted part of path */ tal_free(p->blindedpath->path[0]); @@ -1205,7 +1205,7 @@ preapproveinvoice_succeed(struct command *cmd, json_add_hex_talarr(req->js, "encrypted_data", p->blindedpath->path[0]->encrypted_recipient_data); - json_add_pubkey(req->js, "blinding", &p->blindedpath->blinding); + json_add_pubkey(req->js, "path_key", &p->blindedpath->first_path_key); return send_outreq(cmd->plugin, req); } diff --git a/plugins/renepay/routefail.c b/plugins/renepay/routefail.c index 175b7d5b03d4..a149fa32244e 100644 --- a/plugins/renepay/routefail.c +++ b/plugins/renepay/routefail.c @@ -303,7 +303,6 @@ static struct command_result *handle_failure(struct routefail *r) case WIRE_PERMANENT_NODE_FAILURE: case WIRE_REQUIRED_NODE_FEATURE_MISSING: case WIRE_TEMPORARY_NODE_FAILURE: - case WIRE_INVALID_REALM: case WIRE_INVALID_ONION_PAYLOAD: if (node_type == FINAL_NODE) { diff --git a/tests/fuzz/fuzz-wire-onion_message.c b/tests/fuzz/fuzz-wire-onion_message.c index eb007220ed19..bb71a3092e84 100644 --- a/tests/fuzz/fuzz-wire-onion_message.c +++ b/tests/fuzz/fuzz-wire-onion_message.c @@ -5,27 +5,27 @@ #include struct onion_message { - struct pubkey blinding; + struct pubkey path_key; u8 *onionmsg; }; static void *encode(const tal_t *ctx, const struct onion_message *s) { - return towire_onion_message(ctx, &s->blinding, s->onionmsg); + return towire_onion_message(ctx, &s->path_key, s->onionmsg); } static struct onion_message *decode(const tal_t *ctx, const void *p) { struct onion_message *s = tal(ctx, struct onion_message); - if (fromwire_onion_message(s, p, &s->blinding, &s->onionmsg)) + if (fromwire_onion_message(s, p, &s->path_key, &s->onionmsg)) return s; return tal_free(s); } static bool equal(const struct onion_message *x, const struct onion_message *y) { - if (memcmp(&x->blinding, &y->blinding, sizeof(x->blinding)) != 0) + if (memcmp(&x->path_key, &y->path_key, sizeof(x->path_key)) != 0) return false; return tal_arr_eq(x->onionmsg, y->onionmsg); } diff --git a/tests/fuzz/fuzz-wire-update_add_htlc.c b/tests/fuzz/fuzz-wire-update_add_htlc.c index 4f20964dc675..7fa22be8b334 100644 --- a/tests/fuzz/fuzz-wire-update_add_htlc.c +++ b/tests/fuzz/fuzz-wire-update_add_htlc.c @@ -47,7 +47,7 @@ static bool equal(const struct update_add_htlc *x, return false; assert(x->tlvs && y->tlvs); - return tal_arr_eq(x->tlvs->blinding_point, y->tlvs->blinding_point); + return tal_arr_eq(x->tlvs->blinded_path, y->tlvs->blinded_path); } void run(const u8 *data, size_t size) diff --git a/tests/test_connection.py b/tests/test_connection.py index ce29926ad6f2..288c01ffcec4 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -3996,7 +3996,7 @@ def test_upgrade_statickey_fail(node_factory, executor, bitcoind): def test_quiescence(node_factory, executor): - l1, l2 = node_factory.line_graph(2, opts={'experimental-quiesce': None}) + l1, l2 = node_factory.line_graph(2) # Works fine. l1.pay(l2, 1000) diff --git a/tests/test_misc.py b/tests/test_misc.py index c369f87e8082..283ed119a713 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -2373,6 +2373,7 @@ def test_list_features_only(node_factory): 'option_anchors/odd', 'option_route_blinding/odd', 'option_shutdown_anysegwit/odd', + 'option_quiesce/odd', 'option_onion_messages/odd', 'option_channel_type/odd', 'option_scid_alias/odd', diff --git a/tests/test_pay.py b/tests/test_pay.py index 878b75bea074..2035285fe4ae 100644 --- a/tests/test_pay.py +++ b/tests/test_pay.py @@ -5957,7 +5957,7 @@ def test_decryptencrypteddata(node_factory): decode = l2.rpc.decode(inv) path = decode['invoice_paths'][0] assert path['first_node_id'] == l2.info['id'] - blinding = path['blinding'] + first_path_key = path['first_path_key'] encdata1 = path['path'][0]['encrypted_recipient_data'] # BOLT #4: @@ -5967,7 +5967,7 @@ def test_decryptencrypteddata(node_factory): # 1. type: 4 (`next_node_id`) # 2. data: # * [`point`:`node_id`] - dec = l2.rpc.decryptencrypteddata(encrypted_data=encdata1, blinding=blinding)['decryptencrypteddata'] + dec = l2.rpc.decryptencrypteddata(encrypted_data=encdata1, path_key=first_path_key)['decryptencrypteddata'] assert dec['decrypted'].startswith('0421' + l3.info['id']) diff --git a/tests/utils.py b/tests/utils.py index 1dac69fd10e2..da26b53a8bc2 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -38,12 +38,11 @@ def hex_bits(features): def expected_peer_features(extra=[]): """Return the expected peer features hexstring for this configuration""" - features = [0, 5, 7, 8, 11, 12, 14, 17, 19, 25, 27, 39, 45, 47, 51] + features = [0, 5, 7, 8, 11, 12, 14, 17, 19, 25, 27, 35, 39, 45, 47, 51] if EXPERIMENTAL_DUAL_FUND: # option_dual_fund features += [29] if EXPERIMENTAL_SPLICING: - features += [35] # option_quiesce features += [163] # option_experimental_splice if TEST_NETWORK != 'liquid-regtest': # Anchors, except for elements @@ -55,12 +54,11 @@ def expected_peer_features(extra=[]): # features for the 'node' and the 'peer' feature sets def expected_node_features(extra=[]): """Return the expected node features hexstring for this configuration""" - features = [0, 5, 7, 8, 11, 12, 14, 17, 19, 25, 27, 39, 45, 47, 51, 55] + features = [0, 5, 7, 8, 11, 12, 14, 17, 19, 25, 27, 35, 39, 45, 47, 51, 55] if EXPERIMENTAL_DUAL_FUND: # option_dual_fund features += [29] if EXPERIMENTAL_SPLICING: - features += [35] # option_quiesce features += [163] # option_experimental_splice if TEST_NETWORK != 'liquid-regtest': # Anchors, except for elements diff --git a/wallet/test/run-wallet.c b/wallet/test/run-wallet.c index 31006b1f7a6d..9fe88a2cbf2a 100644 --- a/wallet/test/run-wallet.c +++ b/wallet/test/run-wallet.c @@ -62,11 +62,11 @@ void blinding_hash_e_and_ss(const struct pubkey *e UNNEEDED, const struct secret *ss UNNEEDED, struct sha256 *sha UNNEEDED) { fprintf(stderr, "blinding_hash_e_and_ss called!\n"); abort(); } -/* Generated stub for blinding_next_pubkey */ -bool blinding_next_pubkey(const struct pubkey *pk UNNEEDED, - const struct sha256 *h UNNEEDED, - struct pubkey *next UNNEEDED) -{ fprintf(stderr, "blinding_next_pubkey called!\n"); abort(); } +/* Generated stub for blinding_next_path_key */ +bool blinding_next_path_key(const struct pubkey *pk UNNEEDED, + const struct sha256 *h UNNEEDED, + struct pubkey *next UNNEEDED) +{ fprintf(stderr, "blinding_next_path_key called!\n"); abort(); } /* Generated stub for bolt11_decode */ struct bolt11 *bolt11_decode(const tal_t *ctx UNNEEDED, const char *str UNNEEDED, const struct feature_set *our_features UNNEEDED, diff --git a/wallet/wallet.c b/wallet/wallet.c index 84a449d0ac91..149778f684f1 100644 --- a/wallet/wallet.c +++ b/wallet/wallet.c @@ -2991,8 +2991,8 @@ static bool wallet_stmt2htlc_in(struct channel *channel, in->cltv_expiry = db_col_int(stmt, "cltv_expiry"); in->hstate = db_col_int(stmt, "hstate"); in->status = NULL; - /* FIXME: save blinding in db !*/ - in->blinding = NULL; + /* FIXME: save path_key in db !*/ + in->path_key = NULL; in->payload = NULL; db_col_sha256(stmt, "payment_hash", &in->payment_hash); @@ -3064,8 +3064,8 @@ static bool wallet_stmt2htlc_out(struct wallet *wallet, out->cltv_expiry = db_col_int(stmt, "cltv_expiry"); out->hstate = db_col_int(stmt, "hstate"); db_col_sha256(stmt, "payment_hash", &out->payment_hash); - /* FIXME: save blinding in db !*/ - out->blinding = NULL; + /* FIXME: save path_key in db !*/ + out->path_key = NULL; out->preimage = db_col_optional(out, stmt, "payment_key", preimage); diff --git a/wire/extracted_onion_02_offers.patch b/wire/extracted_onion_02_offers.patch index c1de44245612..07103ee200d7 100644 --- a/wire/extracted_onion_02_offers.patch +++ b/wire/extracted_onion_02_offers.patch @@ -2,7 +2,7 @@ diff --git a/wire/onion_wire.csv b/wire/onion_wire.csv index ae05f09fd..b09811ed1 100644 --- a/wire/onion_wire.csv +++ b/wire/onion_wire.csv -@@ -92,6 +92,12 @@ tlvtype,onionmsg_tlv,reply_path,2 +@@ -92,3 +92,9 @@ tlvtype,onionmsg_tlv,reply_path,2 tlvdata,onionmsg_tlv,reply_path,path,blinded_path, tlvtype,onionmsg_tlv,encrypted_recipient_data,4 tlvdata,onionmsg_tlv,encrypted_recipient_data,encrypted_recipient_data,byte,... @@ -12,6 +12,3 @@ index ae05f09fd..b09811ed1 100644 +tlvdata,onionmsg_tlv,invoice,invoice,tlv_invoice, +tlvtype,onionmsg_tlv,invoice_error,68 +tlvdata,onionmsg_tlv,invoice_error,invoice_error,tlv_invoice_error, - subtype,blinded_path - subtypedata,blinded_path,first_node_id,point, - subtypedata,blinded_path,blinding,point, diff --git a/wire/extracted_onion_03_onionmsg-payload-as-bytearr.patch b/wire/extracted_onion_03_onionmsg-payload-as-bytearr.patch index 1c17f0b3131e..55dce3419ac9 100644 --- a/wire/extracted_onion_03_onionmsg-payload-as-bytearr.patch +++ b/wire/extracted_onion_03_onionmsg-payload-as-bytearr.patch @@ -4,7 +4,7 @@ diff --git b/wire/onion_wire.csv a/wire/onion_wire.csv index 5c52fe9a1..2ac0c4cff 100644 --- b/wire/onion_wire.csv +++ a/wire/onion_wire.csv -@@ -51,11 +29,11 @@ tlvdata,onionmsg_tlv,reply_path,path,onionmsg_path,... +@@ -51,8 +29,8 @@ tlvdata,onionmsg_tlv,reply_path,path,onionmsg_path,... tlvtype,onionmsg_tlv,encrypted_data_tlv,4 tlvdata,onionmsg_tlv,encrypted_data_tlv,encrypted_data_tlv,byte,... tlvtype,onionmsg_tlv,invoice_request,64 @@ -16,6 +16,3 @@ index 5c52fe9a1..2ac0c4cff 100644 tlvtype,onionmsg_tlv,invoice_error,68 -tlvdata,onionmsg_tlv,invoice_error,invoice_error,tlv_invoice_error, +tlvdata,onionmsg_tlv,invoice_error,invoice_error,byte,... - subtype,blinded_path - subtypedata,blinded_path,first_node_id,point, - subtypedata,blinded_path,blinding,point, diff --git a/wire/extracted_onion_05_remove-onion_message.patch b/wire/extracted_onion_05_remove-onion_message.patch index ae099ba26bea..ebadab75f243 100644 --- a/wire/extracted_onion_05_remove-onion_message.patch +++ b/wire/extracted_onion_05_remove-onion_message.patch @@ -9,7 +9,7 @@ index 3884c63dd..25798c3da 100644 msgtype,invalid_onion_blinding,BADONION|PERM|24 msgdata,invalid_onion_blinding,sha256_of_onion,sha256, -msgtype,onion_message,513 --msgdata,onion_message,blinding,point, +-msgdata,onion_message,path_key,point, -msgdata,onion_message,len,u16, -msgdata,onion_message,onion_message_packet,byte,len tlvtype,onionmsg_tlv,reply_path,2 diff --git a/wire/extracted_onion_06_blinded_path_first_sciddir_or_pubkey.patch b/wire/extracted_onion_06_blinded_path_first_sciddir_or_pubkey.patch new file mode 100644 index 000000000000..d58e831e2272 --- /dev/null +++ b/wire/extracted_onion_06_blinded_path_first_sciddir_or_pubkey.patch @@ -0,0 +1,13 @@ +diff --git a/wire/onion_wire.csv b/wire/onion_wire.csv +index 41cafe553..c1d850c60 100644 +--- a/wire/onion_wire.csv ++++ b/wire/onion_wire.csv +@@ -95,7 +95,7 @@ tlvdata,onionmsg_tlv,invoice,invoice,byte,... + tlvtype,onionmsg_tlv,invoice_error,68 + tlvdata,onionmsg_tlv,invoice_error,invoice_error,byte,... + subtype,blinded_path +-subtypedata,blinded_path,first_node_id,point, ++subtypedata,blinded_path,first_node_id,sciddir_or_pubkey, + subtypedata,blinded_path,first_path_key,point, + subtypedata,blinded_path,num_hops,byte, + subtypedata,blinded_path,path,onionmsg_hop,num_hops diff --git a/wire/extracted_peer_04_opt_will_fund.patch b/wire/extracted_peer_04_opt_will_fund.patch index 298de8f870e4..00f50b25b39e 100644 --- a/wire/extracted_peer_04_opt_will_fund.patch +++ b/wire/extracted_peer_04_opt_will_fund.patch @@ -23,9 +23,9 @@ +subtypedata,lease_rates,channel_fee_max_proportional_thousandths,u16, +subtypedata,lease_rates,lease_fee_base_sat,u32, +subtypedata,lease_rates,channel_fee_max_base_msat,tu32, - msgtype,shutdown,38 - msgdata,shutdown,channel_id,channel_id, - msgdata,shutdown,len,u16, + msgtype,stfu,2 + msgdata,stfu,channel_id,channel_id, + msgdata,stfu,initiator,u8, @@ -215,6 +219,9 @@ msgtype,update_fee,134 msgdata,update_fee,channel_id,channel_id, diff --git a/wire/extracted_peer_05_newonion.patch b/wire/extracted_peer_05_newonion.patch index cc9676fec9aa..b5b4674e96db 100644 --- a/wire/extracted_peer_05_newonion.patch +++ b/wire/extracted_peer_05_newonion.patch @@ -7,6 +7,6 @@ FIXME: This is actually from BOLT 4, but we remove it from onion_wire.csv and pu msgdata,gossip_timestamp_filter,first_timestamp,u32, msgdata,gossip_timestamp_filter,timestamp_range,u32, +msgtype,onion_message,513,option_onion_messages -+msgdata,onion_message,blinding,point, ++msgdata,onion_message,path_key,point, +msgdata,onion_message,len,u16, +msgdata,onion_message,onionmsg,byte,len diff --git a/wire/extracted_peer_09_quiescence-protocol.patch b/wire/extracted_peer_09_quiescence-protocol.patch deleted file mode 100644 index de073f5f8153..000000000000 --- a/wire/extracted_peer_09_quiescence-protocol.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- wire/peer_exp_wire.csv 2021-05-17 09:30:02.302260471 +0930 -+++ - 2021-05-31 12:20:36.390910632 +0930 -@@ -120,6 +82,9 @@ - subtypedata,lease_rates,channel_fee_max_proportional_thousandths,u16, - subtypedata,lease_rates,lease_fee_base_sat,u32, - subtypedata,lease_rates,channel_fee_max_base_msat,tu32, -+msgtype,stfu,2 -+msgdata,stfu,channel_id,channel_id, -+msgdata,stfu,initiator,u8, - msgtype,shutdown,38 - msgdata,shutdown,channel_id,channel_id, - msgdata,shutdown,len,u16, diff --git a/wire/onion_defs.h b/wire/onion_defs.h index 6bf5f4f8fc43..cdfc0b3b8d78 100644 --- a/wire/onion_defs.h +++ b/wire/onion_defs.h @@ -10,7 +10,7 @@ * * 0x8000 (BADONION): unparsable onion encrypted by sending peer * * 0x4000 (PERM): permanent failure (otherwise transient) * * 0x2000 (NODE): node failure (otherwise channel) - * * 0x1000 (UPDATE): new channel update enclosed + * * 0x1000 (UPDATE): channel forwarding parameter was violated */ #define BADONION 0x8000 #define PERM 0x4000 diff --git a/wire/onion_wire.csv b/wire/onion_wire.csv index c1d850c6056f..07b068b86350 100644 --- a/wire/onion_wire.csv +++ b/wire/onion_wire.csv @@ -9,13 +9,22 @@ tlvtype,payload,payment_data,8 tlvdata,payload,payment_data,payment_secret,byte,32 tlvdata,payload,payment_data,total_msat,tu64, tlvtype,payload,encrypted_recipient_data,10 -tlvdata,payload,encrypted_recipient_data,encrypted_data,byte,... -tlvtype,payload,current_blinding_point,12 -tlvdata,payload,current_blinding_point,blinding,point, +tlvdata,payload,encrypted_recipient_data,encrypted_recipient_data,byte,... +tlvtype,payload,current_path_key,12 +tlvdata,payload,current_path_key,path_key,point, tlvtype,payload,payment_metadata,16 tlvdata,payload,payment_metadata,payment_metadata,byte,... tlvtype,payload,total_amount_msat,18 tlvdata,payload,total_amount_msat,total_msat,tu64, +subtype,blinded_path +subtypedata,blinded_path,first_node_id,sciddir_or_pubkey, +subtypedata,blinded_path,first_path_key,point, +subtypedata,blinded_path,num_hops,byte, +subtypedata,blinded_path,path,blinded_path_hop,num_hops +subtype,blinded_path_hop +subtypedata,blinded_path_hop,blinded_node_id,point, +subtypedata,blinded_path_hop,enclen,u16, +subtypedata,blinded_path_hop,encrypted_recipient_data,byte,enclen tlvtype,encrypted_data_tlv,padding,1 tlvdata,encrypted_data_tlv,padding,padding,byte,... tlvtype,encrypted_data_tlv,short_channel_id,2 @@ -24,8 +33,8 @@ tlvtype,encrypted_data_tlv,next_node_id,4 tlvdata,encrypted_data_tlv,next_node_id,node_id,point, tlvtype,encrypted_data_tlv,path_id,6 tlvdata,encrypted_data_tlv,path_id,data,byte,... -tlvtype,encrypted_data_tlv,next_blinding_override,8 -tlvdata,encrypted_data_tlv,next_blinding_override,blinding,point, +tlvtype,encrypted_data_tlv,next_path_key_override,8 +tlvdata,encrypted_data_tlv,next_path_key_override,path_key,point, tlvtype,encrypted_data_tlv,payment_relay,10 tlvdata,encrypted_data_tlv,payment_relay,cltv_expiry_delta,u16, tlvdata,encrypted_data_tlv,payment_relay,fee_proportional_millionths,u32, @@ -35,7 +44,6 @@ tlvdata,encrypted_data_tlv,payment_constraints,max_cltv_expiry,u32, tlvdata,encrypted_data_tlv,payment_constraints,htlc_minimum_msat,tu64, tlvtype,encrypted_data_tlv,allowed_features,14 tlvdata,encrypted_data_tlv,allowed_features,features,byte,... -msgtype,invalid_realm,PERM|1 msgtype,temporary_node_failure,NODE|2 msgtype,permanent_node_failure,PERM|NODE|2 msgtype,required_node_feature_missing,PERM|NODE|3 @@ -94,12 +102,3 @@ tlvtype,onionmsg_tlv,invoice,66 tlvdata,onionmsg_tlv,invoice,invoice,byte,... tlvtype,onionmsg_tlv,invoice_error,68 tlvdata,onionmsg_tlv,invoice_error,invoice_error,byte,... -subtype,blinded_path -subtypedata,blinded_path,first_node_id,sciddir_or_pubkey, -subtypedata,blinded_path,blinding,point, -subtypedata,blinded_path,num_hops,byte, -subtypedata,blinded_path,path,onionmsg_hop,num_hops -subtype,onionmsg_hop -subtypedata,onionmsg_hop,blinded_node_id,point, -subtypedata,onionmsg_hop,enclen,u16, -subtypedata,onionmsg_hop,encrypted_recipient_data,byte,enclen diff --git a/wire/peer_wire.c b/wire/peer_wire.c index 29ab139bf921..864aba0d9e1e 100644 --- a/wire/peer_wire.c +++ b/wire/peer_wire.c @@ -366,7 +366,7 @@ bool extract_channel_id(const u8 *in_pkt, struct channel_id *channel_id) * * [`channel_id`:`channel_id`] */ case WIRE_STFU: - /* BOLT-quiescent #2: + /* BOLT #2: * 1. type: 2 (`stfu`) * 2. data: * * [`channel_id`:`channel_id`] diff --git a/wire/peer_wire.csv b/wire/peer_wire.csv index 3865c11f18f0..6543e34ee4f4 100644 --- a/wire/peer_wire.csv +++ b/wire/peer_wire.csv @@ -245,8 +245,8 @@ msgdata,update_add_htlc,amount_msat,u64, msgdata,update_add_htlc,payment_hash,sha256, msgdata,update_add_htlc,cltv_expiry,u32, msgdata,update_add_htlc,onion_routing_packet,byte,1366 -tlvtype,update_add_htlc_tlvs,blinding_point,0 -tlvdata,update_add_htlc_tlvs,blinding_point,blinding,point, +tlvtype,update_add_htlc_tlvs,blinded_path,0 +tlvdata,update_add_htlc_tlvs,blinded_path,path_key,point, msgtype,update_fulfill_htlc,130 msgdata,update_fulfill_htlc,channel_id,channel_id, msgdata,update_fulfill_htlc,id,u64, @@ -388,6 +388,6 @@ msgdata,gossip_timestamp_filter,chain_hash,chain_hash, msgdata,gossip_timestamp_filter,first_timestamp,u32, msgdata,gossip_timestamp_filter,timestamp_range,u32, msgtype,onion_message,513,option_onion_messages -msgdata,onion_message,blinding,point, +msgdata,onion_message,path_key,point, msgdata,onion_message,len,u16, msgdata,onion_message,onionmsg,byte,len