diff --git a/.msggen.json b/.msggen.json index 2c92354496ed..aeeea4268b88 100644 --- a/.msggen.json +++ b/.msggen.json @@ -1689,6 +1689,7 @@ "Feerates.perkb.mutual_close": 4, "Feerates.perkb.opening": 3, "Feerates.perkb.penalty": 8, + "Feerates.perkb.splice": 12, "Feerates.perkb.unilateral_anchor_close": 11, "Feerates.perkb.unilateral_close": 5 }, @@ -1707,6 +1708,7 @@ "Feerates.perkw.mutual_close": 4, "Feerates.perkw.opening": 3, "Feerates.perkw.penalty": 8, + "Feerates.perkw.splice": 12, "Feerates.perkw.unilateral_anchor_close": 11, "Feerates.perkw.unilateral_close": 5 }, @@ -7288,6 +7290,10 @@ "added": "pre-v0.10.1", "deprecated": null }, + "Feerates.perkb.splice": { + "added": "v26.04", + "deprecated": null + }, "Feerates.perkb.unilateral_anchor_close": { "added": "v23.08", "deprecated": null @@ -7348,6 +7354,10 @@ "added": "pre-v0.10.1", "deprecated": null }, + "Feerates.perkw.splice": { + "added": "v26.04", + "deprecated": null + }, "Feerates.perkw.unilateral_anchor_close": { "added": "v23.08", "deprecated": null diff --git a/bitcoin/psbt.c b/bitcoin/psbt.c index ea4a6c2f3307..6856459536dd 100644 --- a/bitcoin/psbt.c +++ b/bitcoin/psbt.c @@ -7,6 +7,7 @@ #include #include #include +#include #include @@ -480,6 +481,28 @@ void psbt_input_set_witscript(struct wally_psbt *psbt, size_t in, const u8 *wscr tal_wally_end(psbt); } +const u8 *psbt_input_get_witscript(const tal_t *ctx, + const struct wally_psbt *psbt, + size_t in) +{ + size_t witscript_len, written_len; + u8 *witscript; + if (wally_psbt_get_input_witness_script_len(psbt, in, &witscript_len) != WALLY_OK) + abort(); + witscript = tal_arr(ctx, u8, witscript_len); + if (wally_psbt_get_input_witness_script(psbt, in, witscript, witscript_len, &written_len) != WALLY_OK) + abort(); + if (witscript_len != written_len) + abort(); + return witscript; +} + +bool psbt_input_get_ecdsa_sig(const tal_t *ctx, + const struct wally_psbt *psbt, + size_t in, + const struct pubkey *pubkey, + struct bitcoin_signature **sig); + void psbt_elements_input_set_asset(struct wally_psbt *psbt, size_t in, struct amount_asset *asset) { @@ -592,10 +615,16 @@ struct amount_sat psbt_input_get_amount(const struct wally_psbt *psbt, } size_t psbt_input_get_weight(const struct wally_psbt *psbt, - size_t in) + size_t in, + enum PSBT_GUESS guess) { size_t weight; const struct wally_map_item *redeem_script; + struct wally_psbt_input *input = &psbt->inputs[in]; + struct wally_tx_output *utxo_out = NULL; + + if (input->utxo) + utxo_out = &input->utxo->outputs[input->index]; redeem_script = wally_map_get_integer(&psbt->inputs[in].psbt_fields, /* PSBT_IN_REDEEM_SCRIPT */ 0x04); @@ -605,8 +634,20 @@ size_t psbt_input_get_weight(const struct wally_psbt *psbt, weight += (redeem_script->value_len + varint_size(redeem_script->value_len)) * 4; + } else if ((guess & PSBT_GUESS_2OF2) + && utxo_out + && is_p2wsh(utxo_out->script, utxo_out->script_len, NULL)) { + weight = bitcoin_tx_input_weight(false, + bitcoin_tx_2of2_input_witness_weight()); + } else if (utxo_out + && is_p2wpkh(utxo_out->script, utxo_out->script_len, NULL)) { + weight = bitcoin_tx_input_weight(false, + bitcoin_tx_input_witness_weight(UTXO_P2SH_P2WPKH)); + } else if (utxo_out + && is_p2tr(utxo_out->script, utxo_out->script_len, NULL)) { + weight = bitcoin_tx_input_weight(false, + bitcoin_tx_input_witness_weight(UTXO_P2TR)); } else { - /* zero scriptSig length */ weight += varint_size(0) * 4; } diff --git a/bitcoin/psbt.h b/bitcoin/psbt.h index a44bba06636e..b5b186c2ee7d 100644 --- a/bitcoin/psbt.h +++ b/bitcoin/psbt.h @@ -207,6 +207,10 @@ WARN_UNUSED_RESULT bool psbt_input_get_ecdsa_sig(const tal_t *ctx, void psbt_input_set_witscript(struct wally_psbt *psbt, size_t in, const u8 *wscript); +const u8 *psbt_input_get_witscript(const tal_t *ctx, + const struct wally_psbt *psbt, + size_t in); + /* psbt_input_set_unknown - Set the given Key-Value in the psbt's input keymap * @ctx - tal context for allocations * @in - psbt input to set key-value on @@ -265,9 +269,20 @@ void psbt_output_set_unknown(const tal_t *ctx, struct amount_sat psbt_input_get_amount(const struct wally_psbt *psbt, size_t in); -/* psbt_input_get_weight - Calculate the tx weight for input index `in` */ +enum PSBT_GUESS { + PSBT_GUESS_ZERO = 0x0, /* Assume unknown is 0 bytes (fallback) */ + PSBT_GUESS_2OF2 = 0x1, /* Assume P2WSH is 2of2 multisig (req prevtx) */ +}; + +/* psbt_input_get_weight - Calculate the tx weight for input index `in`. + * + * @psbt - psbt + * @in - index of input who's weight you want + * @guess - How to guess if we have incomplete information + * */ size_t psbt_input_get_weight(const struct wally_psbt *psbt, - size_t in); + size_t in, + enum PSBT_GUESS guess); /* psbt_output_get_amount - Returns the value of this output * diff --git a/channeld/channeld.c b/channeld/channeld.c index bef107c66f4e..87fce3693ec4 100644 --- a/channeld/channeld.c +++ b/channeld/channeld.c @@ -76,12 +76,18 @@ struct peer { /* What (additional) messages the HSM accepts */ u32 *hsm_capabilities; + /* The feerate to initiate a splice */ + u32 feerate_splice; + /* Tolerable amounts for feerate (only relevant for fundee). */ u32 feerate_min, feerate_max; /* Feerate to be used when creating penalty transactions. */ u32 feerate_penalty; + /* Feerate to be used when opening a channel. */ + u32 feerate_opening; + /* Local next per-commit point. */ struct pubkey next_local_per_commit; @@ -964,6 +970,10 @@ static struct bitcoin_signature *calc_commitsigs(const tal_t *ctx, const u8 *msg; struct bitcoin_signature *htlc_sigs; + status_debug("calc_commitsigs(%p, %p, %p, %p, %p, %d, %p, %p)", + ctx, peer, txs, funding_wscript, htlc_map, + (int)commit_index, remote_per_commit, commit_sig); + htlcs = collect_htlcs(tmpctx, htlc_map); msg = towire_hsmd_sign_remote_commitment_tx(NULL, txs[0], &remote_funding_pubkey, @@ -1887,9 +1897,9 @@ static void check_tx_abort(struct peer *peer, const u8 *msg, struct bitcoin_txid exit(0); } -static void splice_abort(struct peer *peer, const char *fmt, ...) +static void splice_abort(struct peer *peer, struct inflight *inflight, + const char *fmt, ...) { - struct inflight *inflight = last_inflight(peer); struct bitcoin_outpoint *outpoint; u8 *msg; char *reason; @@ -3175,47 +3185,70 @@ static struct wally_psbt_output *find_channel_output(struct peer *peer, return NULL; } -static size_t calc_weight(enum tx_role role, const struct wally_psbt *psbt) +static size_t calc_weight(enum tx_role role, const struct wally_psbt *psbt, + bool log_math) { - size_t weight = 0; + size_t lweight = 0, weight = 0; - /* BOLT #2: - * The *initiator* is responsible for paying the fees for the following fields, - * to be referred to as the `common fields`. - * - * - version - * - segwit marker + flag - * - input count - * - output count - * - locktime - */ - if (role == TX_INITIATOR) - weight += bitcoin_tx_core_weight(psbt->num_inputs, - psbt->num_outputs); + if (log_math) + status_debug("Counting tx weight;"); /* BOLT #2: * The rest of the transaction bytes' fees are the responsibility of * the peer who contributed that input or output via `tx_add_input` or * `tx_add_output`, at the agreed upon `feerate`. */ - for (size_t i = 0; i < psbt->num_inputs; i++) + for (size_t i = 0; i < psbt->num_inputs; i++) { if (is_initiators_serial(&psbt->inputs[i].unknowns)) { if (role == TX_INITIATOR) - weight += psbt_input_get_weight(psbt, i); + weight += psbt_input_get_weight(psbt, i, PSBT_GUESS_2OF2); } - else + else { if (role != TX_INITIATOR) - weight += psbt_input_get_weight(psbt, i); + weight += psbt_input_get_weight(psbt, i, PSBT_GUESS_2OF2); + } + if (log_math) + status_debug(" Adding input" + " %lu; weight: %lu", i, weight - lweight); + lweight = weight; + } - for (size_t i = 0; i < psbt->num_outputs; i++) + for (size_t i = 0; i < psbt->num_outputs; i++) { if (is_initiators_serial(&psbt->outputs[i].unknowns)) { if (role == TX_INITIATOR) weight += psbt_output_get_weight(psbt, i); } - else + else { if (role != TX_INITIATOR) weight += psbt_output_get_weight(psbt, i); + } + if (log_math) + status_debug(" Adding output" + " %lu; weight: %lu", i, weight - lweight); + lweight = weight; + } + /* BOLT #2: + * The *initiator* is responsible for paying the fees for the following fields, + * to be referred to as the `common fields`. + * + * - version + * - segwit marker + flag + * - input count + * - output count + * - locktime + */ + if (role == TX_INITIATOR) { + weight += bitcoin_tx_core_weight(psbt->num_inputs, + psbt->num_outputs); + if (log_math) + status_debug(" Adding bitcoin_tx_core_weight;" + " weight: %lu", weight - lweight); + lweight = weight; + } + + if (log_math) + status_debug("Total weight: %lu", weight); return weight; } @@ -3307,7 +3340,8 @@ static struct amount_sat calc_balance(struct peer *peer) } /* Returns the total channel funding output amount if all checks pass. - * Otherwise, exits via peer_failed_warn. DTODO: Change to `tx_abort`. */ + * Otherwise, exits via peer_failed_warn. + * Note: Should only be called before adding splice to inflights. */ static struct amount_sat check_balances(struct peer *peer, enum tx_role our_role, const struct wally_psbt *psbt, @@ -3316,8 +3350,7 @@ static struct amount_sat check_balances(struct peer *peer, { struct amount_sat min_initiator_fee, min_accepter_fee, max_initiator_fee, max_accepter_fee, - funding_amount_res, min_multiplied, - initiator_penalty_fee, accepter_penalty_fee; + funding_amount_res; struct amount_msat funding_amount, initiator_fee, accepter_fee; struct amount_msat in[NUM_TX_ROLES], out[NUM_TX_ROLES], @@ -3349,6 +3382,32 @@ static struct amount_sat check_balances(struct peer *peer, "Unable to add HTLC balance"); } + status_debug("in[TX_INITIATOR] %s; in[TX_ACCEPTER] %s", + fmt_amount_m_as_sat(tmpctx, in[TX_INITIATOR]), + fmt_amount_m_as_sat(tmpctx, in[TX_ACCEPTER])); + + /* Here in[*] only contains the amounts from this channel. + * This is a great opportunity to check their splice out amount does + * not exceed their channel funds as this is never allowed even if + * additional funds are otherwise contributed. */ + if (!amount_msat_can_add_sat_s64(in[TX_INITIATOR], + peer->splicing->opener_relative)) { + splice_abort(peer, NULL, "Intiator is attempting to splice out" + " %"PRId64"sat funds out of channel while only " + "having %s funds attributable to them.", + peer->splicing->opener_relative, + fmt_amount_m_as_sat(tmpctx, in[TX_INITIATOR])); + } + if (!amount_msat_can_add_sat_s64(in[TX_ACCEPTER], + peer->splicing->accepter_relative)) { + splice_abort(peer, NULL, "Accepter is attempting to splice out" + " %"PRId64"sat funds out of channel while only " + "having %s funds attributable to them.", + peer->splicing->accepter_relative, + fmt_amount_m_as_sat(tmpctx, in[TX_ACCEPTER])); + } + + /* Now add values from the other outputs */ for (size_t i = 0; i < psbt->num_inputs; i++) if (i != chan_input_index) add_amount_to_side(peer, in, @@ -3397,11 +3456,16 @@ static struct amount_sat check_balances(struct peer *peer, */ if (!amount_msat_add_sat_s64(&funding_amount, funding_amount, peer->splicing->opener_relative)) - splice_abort(peer, "Splice initiator did not provide enough" + splice_abort(peer, NULL, "Splice initiator did not provide enough" " funding, funding_amount: %s, opener_relative:" " %"PRIu64, fmt_amount_msat(tmpctx, funding_amount), peer->splicing->opener_relative); + + status_debug("out[TX_INITIATOR] %s + %"PRId64, + fmt_amount_m_as_sat(tmpctx, out[TX_INITIATOR]), + peer->splicing->opener_relative); + if (!amount_msat_add_sat_s64(&out[TX_INITIATOR], out[TX_INITIATOR], peer->splicing->opener_relative)) peer_failed_warn(peer->pps, &peer->channel_id, @@ -3409,20 +3473,24 @@ static struct amount_sat check_balances(struct peer *peer, if (!amount_msat_add_sat_s64(&funding_amount, funding_amount, peer->splicing->accepter_relative)) - splice_abort(peer, "Splice accepter did not provide enough" + splice_abort(peer, NULL, "Splice accepter did not provide enough" " funding"); if (!amount_msat_add_sat_s64(&out[TX_ACCEPTER], out[TX_ACCEPTER], peer->splicing->accepter_relative)) peer_failed_warn(peer->pps, &peer->channel_id, "Unable to add accepter funding to out amnt."); + status_debug("is in[TX_INITIATOR] %s less than out[TX_INITIATOR] %s?", + fmt_amount_m_as_sat(tmpctx, in[TX_INITIATOR]), + fmt_amount_m_as_sat(tmpctx, out[TX_INITIATOR])); + if (amount_msat_less(in[TX_INITIATOR], out[TX_INITIATOR])) { msg = towire_channeld_splice_funding_error(NULL, in[TX_INITIATOR], out[TX_INITIATOR], true); wire_sync_write(MASTER_FD, take(msg)); - splice_abort(peer, + splice_abort(peer, NULL, "Initiator funding is less than commited" " amount. Initiator contributing %s but they" " committed to %s. Pending offered HTLC" @@ -3449,7 +3517,7 @@ static struct amount_sat check_balances(struct peer *peer, out[TX_INITIATOR], true); wire_sync_write(MASTER_FD, take(msg)); - splice_abort(peer, + splice_abort(peer, NULL, "Accepter funding is less than commited" " amount. Accepter contributing %s but they" " committed to %s. Pending offered HTLC" @@ -3466,40 +3534,33 @@ static struct amount_sat check_balances(struct peer *peer, "amount_sat_less / amount_sat_sub mismtach"); min_initiator_fee = amount_tx_fee(peer->splicing->feerate_per_kw, - calc_weight(TX_INITIATOR, psbt)); + calc_weight(TX_INITIATOR, psbt, false)); min_accepter_fee = amount_tx_fee(peer->splicing->feerate_per_kw, - calc_weight(TX_ACCEPTER, psbt)); + calc_weight(TX_ACCEPTER, psbt, false)); /* As a safeguard max feerate is checked (only) locally, if it's * particularly high we fail and tell the user but allow them to * override with `splice_force_feerate` */ - max_accepter_fee = amount_tx_fee(peer->feerate_max, - calc_weight(TX_ACCEPTER, psbt)); - max_initiator_fee = amount_tx_fee(peer->feerate_max, - calc_weight(TX_INITIATOR, psbt)); - initiator_penalty_fee = amount_tx_fee(peer->feerate_penalty, - calc_weight(TX_INITIATOR, psbt)); - accepter_penalty_fee = amount_tx_fee(peer->feerate_penalty, - calc_weight(TX_ACCEPTER, psbt)); - - /* Sometimes feerate_max is some absurdly high value, in that case we - * give a fee warning based of a multiple of the min value. */ - amount_sat_mul(&min_multiplied, min_accepter_fee, 5); - max_accepter_fee = SAT_MIN(min_multiplied, max_accepter_fee); - if (amount_sat_greater(accepter_penalty_fee, max_accepter_fee)) - max_accepter_fee = accepter_penalty_fee; - - amount_sat_mul(&min_multiplied, min_initiator_fee, 5); - max_initiator_fee = SAT_MIN(min_multiplied, max_initiator_fee); - if (amount_sat_greater(initiator_penalty_fee, max_initiator_fee)) - max_initiator_fee = initiator_penalty_fee; + max_accepter_fee = amount_tx_fee(peer->feerate_opening, + calc_weight(TX_ACCEPTER, psbt, false)); + max_initiator_fee = amount_tx_fee(peer->feerate_opening, + calc_weight(TX_INITIATOR, psbt, opener)); + + if (opener) { + status_debug("User specified fee of %s. Splice feerate %"PRIu32 + " * weight %lu / 1000 = %s", + fmt_amount_m_as_sat(tmpctx, initiator_fee), + peer->feerate_splice, + calc_weight(TX_INITIATOR, psbt, false), + fmt_amount_sat(tmpctx, max_initiator_fee)); + } /* Check initiator fee */ if (amount_msat_less_sat(initiator_fee, min_initiator_fee)) { msg = towire_channeld_splice_feerate_error(NULL, initiator_fee, false); wire_sync_write(MASTER_FD, take(msg)); - splice_abort(peer, + splice_abort(peer, NULL, "%s fee (%s) was too low, must be at least %s", opener ? "Our" : "Your", fmt_amount_msat(tmpctx, initiator_fee), @@ -3509,30 +3570,45 @@ static struct amount_sat check_balances(struct peer *peer, && amount_msat_greater_sat(initiator_fee, max_initiator_fee)) { msg = towire_channeld_splice_feerate_error(NULL, initiator_fee, true); + status_debug("Our own fee (%s) is too high to use without" + " forcing. Splice feerate %"PRIu32 + " x weight %lu / 1000 = %s (max)", + fmt_amount_m_as_sat(tmpctx, initiator_fee), + peer->feerate_splice, + calc_weight(TX_INITIATOR, psbt, false), + fmt_amount_sat(tmpctx, max_initiator_fee)); + wire_sync_write(MASTER_FD, take(msg)); - splice_abort(peer, - "Our own fee (%s) was too high, max without" - " forcing is %s.", - fmt_amount_msat(tmpctx, initiator_fee), - fmt_amount_sat(tmpctx, max_initiator_fee)); + + splice_abort(peer, NULL, + "Our own fee (%s) is too high to use without" + " forcing. Splice feerate %"PRIu32 + " x weight %lu / 1000 = %s (max)", + fmt_amount_m_as_sat(tmpctx, initiator_fee), + peer->feerate_splice, + calc_weight(TX_INITIATOR, psbt, false), + fmt_amount_sat(tmpctx, max_initiator_fee)); } /* Check accepter fee */ if (amount_msat_less_sat(accepter_fee, min_accepter_fee)) { msg = towire_channeld_splice_feerate_error(NULL, accepter_fee, false); wire_sync_write(MASTER_FD, take(msg)); - splice_abort(peer, - "%s fee (%s) was too low, must be at least %s", - opener ? "Your" : "Our", - fmt_amount_msat(tmpctx, accepter_fee), - fmt_amount_sat(tmpctx, min_accepter_fee)); + splice_abort(peer, NULL, + "%s fee (%s) was too low, must be at least %s" + " weight: %"PRIu64", feerate_max: %"PRIu32, + opener ? "Your" : "Our", + fmt_amount_msat(tmpctx, accepter_fee), + fmt_amount_sat(tmpctx, min_accepter_fee), + calc_weight(TX_INITIATOR, psbt, false), + peer->feerate_opening); } if (!peer->splicing->force_feerate && !opener && amount_msat_greater_sat(accepter_fee, max_accepter_fee)) { msg = towire_channeld_splice_feerate_error(NULL, accepter_fee, true); wire_sync_write(MASTER_FD, take(msg)); - splice_abort(peer, + splice_abort(peer, NULL, "Our own fee (%s) was too high, max without" " forcing is %s.", fmt_amount_msat(tmpctx, accepter_fee), @@ -3978,6 +4054,9 @@ static void resume_splice_negotiation(struct peer *peer, peer->splicing = tal_free(peer->splicing); + if (our_role == TX_INITIATOR) + calc_weight(TX_INITIATOR, current_psbt, true); + final_tx = bitcoin_tx_with_psbt(tmpctx, current_psbt); msg = towire_channeld_splice_confirmed_signed(tmpctx, final_tx, new_output_index); @@ -4952,7 +5031,7 @@ static void handle_abort_req(struct peer *peer, const u8 *inmsg) if (!fromwire_channeld_abort(inmsg)) master_badmsg(WIRE_CHANNELD_ABORT, inmsg); - splice_abort(peer, "requested by user"); + splice_abort(peer, last_inflight(peer), "requested by user"); } static void peer_in(struct peer *peer, const u8 *msg) @@ -5808,7 +5887,8 @@ static void peer_reconnect(struct peer *peer, " channel, ignoring it: %s", fmt_bitcoin_outpoint(tmpctx, &peer->channel->funding)); else - splice_abort(peer, "next_funding_txid not recognized."); + splice_abort(peer, NULL, + "next_funding_txid not recognized."); } /* BOLT #2: @@ -6302,10 +6382,13 @@ static void handle_feerates(struct peer *peer, const u8 *inmsg) { u32 feerate; - if (!fromwire_channeld_feerates(inmsg, &feerate, - &peer->feerate_min, - &peer->feerate_max, - &peer->feerate_penalty)) + if (!fromwire_channeld_feerates(inmsg, + &feerate, + &peer->feerate_min, + &peer->feerate_max, + &peer->feerate_penalty, + &peer->feerate_opening, + &peer->feerate_splice)) master_badmsg(WIRE_CHANNELD_FEERATES, inmsg); /* BOLT #2: @@ -6673,9 +6756,11 @@ static void init_channel(struct peer *peer) &lease_expiry, &conf[LOCAL], &conf[REMOTE], &fee_states, + &peer->feerate_splice, &peer->feerate_min, &peer->feerate_max, &peer->feerate_penalty, + &peer->feerate_opening, &peer->their_commit_sig, &funding_pubkey[REMOTE], &points[REMOTE], diff --git a/channeld/channeld_wire.csv b/channeld/channeld_wire.csv index be5a5c6dee36..d94fcdc2d567 100644 --- a/channeld/channeld_wire.csv +++ b/channeld/channeld_wire.csv @@ -28,9 +28,11 @@ msgdata,channeld_init,lease_expiry,u32, msgdata,channeld_init,our_config,channel_config, msgdata,channeld_init,their_config,channel_config, msgdata,channeld_init,fee_states,fee_states, +msgdata,channeld_init,feerate_splice,u32, msgdata,channeld_init,feerate_min,u32, msgdata,channeld_init,feerate_max,u32, msgdata,channeld_init,feerate_penalty,u32, +msgdata,channeld_init,feerate_opening,u32, msgdata,channeld_init,first_commit_sig,bitcoin_signature, msgdata,channeld_init,remote_fundingkey,pubkey, msgdata,channeld_init,remote_basepoints,basepoints, @@ -329,6 +331,8 @@ msgdata,channeld_feerates,feerate,u32, msgdata,channeld_feerates,min_feerate,u32, msgdata,channeld_feerates,max_feerate,u32, msgdata,channeld_feerates,penalty_feerate,u32, +msgdata,channeld_feerates,opening_feerate,u32, +msgdata,channeld_feerates,feerate_splice,u32, # master -> channeld: do you have a memleak? msgtype,channeld_dev_memleak,1033 diff --git a/channeld/full_channel.c b/channeld/full_channel.c index c3df6ee66900..7d2a49449504 100644 --- a/channeld/full_channel.c +++ b/channeld/full_channel.c @@ -317,8 +317,10 @@ struct bitcoin_tx **channel_txs(const tal_t *ctx, &channel->basepoints[side], &channel->basepoints[!side], channel_has(channel, OPT_STATIC_REMOTEKEY), - &keyset)) + &keyset)) { + status_broken("channel_txs fails to derive keyset"); return NULL; + } /* Figure out what @side will already be committed to. */ gather_htlcs(ctx, channel, side, &committed, NULL, NULL); @@ -332,16 +334,53 @@ struct bitcoin_tx **channel_txs(const tal_t *ctx, side_pay = channel->view[side].owed[side]; other_side_pay = channel->view[side].owed[!side]; + status_debug("channel->view[REMOTE].owed[REMOTE] %s;" + " channel->view[REMOTE].owed[LOCAL] %s;" + " channel->view[LOCAL].owed[REMOTE] %s;" + " channel->view[LOCAL].owed[LOCAL] %s;", + fmt_amount_m_as_sat(tmpctx, + channel->view[REMOTE].owed[REMOTE]), + fmt_amount_m_as_sat(tmpctx, + channel->view[REMOTE].owed[LOCAL]), + fmt_amount_m_as_sat(tmpctx, + channel->view[LOCAL].owed[REMOTE]), + fmt_amount_m_as_sat(tmpctx, + channel->view[LOCAL].owed[LOCAL])); + if (side == LOCAL) { - if (!amount_msat_add_sat_s64(&side_pay, side_pay, splice_amnt)) + if (!amount_msat_add_sat_s64(&side_pay, side_pay, splice_amnt)) { + status_broken("channel_txs fails to" + " amount_msat_add_sat_s64 %s + %"PRId64 + " LOCAL (side_pay + splice_amnt)", + fmt_amount_m_as_sat(tmpctx, side_pay), + splice_amnt); return NULL; - if (!amount_msat_add_sat_s64(&other_side_pay, other_side_pay, remote_splice_amnt)) + } + if (!amount_msat_add_sat_s64(&other_side_pay, other_side_pay, remote_splice_amnt)) { + status_broken("channel_txs fails to" + " amount_msat_add_sat_s64 %s + %"PRId64 + " LOCAL (other_side_pay + remote_splice_amnt)", + fmt_amount_m_as_sat(tmpctx, other_side_pay), + remote_splice_amnt); return NULL; + } } else if (side == REMOTE) { - if (!amount_msat_add_sat_s64(&side_pay, side_pay, remote_splice_amnt)) + if (!amount_msat_add_sat_s64(&side_pay, side_pay, remote_splice_amnt)) { + status_broken("channel_txs fails to" + " amount_msat_add_sat_s64 %s + %"PRId64 + " REMOTE (side_pay + remote_splice_amnt)", + fmt_amount_m_as_sat(tmpctx, side_pay), + remote_splice_amnt); return NULL; - if (!amount_msat_add_sat_s64(&other_side_pay, other_side_pay, splice_amnt)) + } + if (!amount_msat_add_sat_s64(&other_side_pay, other_side_pay, splice_amnt)){ + status_broken("channel_txs fails to" + " amount_msat_add_sat_s64 %s + %"PRId64 + " REMOTE (other_side_pay + splice_amnt)", + fmt_amount_m_as_sat(tmpctx, other_side_pay), + splice_amnt); return NULL; + } } txs = tal_arr(ctx, struct bitcoin_tx *, 1); diff --git a/cln-grpc/proto/node.proto b/cln-grpc/proto/node.proto index 6d12a572844c..667ead123cb6 100644 --- a/cln-grpc/proto/node.proto +++ b/cln-grpc/proto/node.proto @@ -1871,6 +1871,7 @@ message FeeratesPerkb { repeated FeeratesPerkbEstimates estimates = 9; optional uint32 floor = 10; optional uint32 unilateral_anchor_close = 11; + optional uint32 splice = 12; } message FeeratesPerkbEstimates { @@ -1891,6 +1892,7 @@ message FeeratesPerkw { repeated FeeratesPerkwEstimates estimates = 9; optional uint32 floor = 10; optional uint32 unilateral_anchor_close = 11; + optional uint32 splice = 12; } message FeeratesPerkwEstimates { diff --git a/cln-grpc/src/convert.rs b/cln-grpc/src/convert.rs index 9b0d34f88831..15d4ce3dccc7 100644 --- a/cln-grpc/src/convert.rs +++ b/cln-grpc/src/convert.rs @@ -1772,6 +1772,7 @@ impl From for pb::FeeratesPerkb { mutual_close: c.mutual_close, // Rule #2 for type u32? opening: c.opening, // Rule #2 for type u32? penalty: c.penalty, // Rule #2 for type u32? + splice: c.splice, // Rule #2 for type u32? unilateral_anchor_close: c.unilateral_anchor_close, // Rule #2 for type u32? unilateral_close: c.unilateral_close, // Rule #2 for type u32? } @@ -1805,6 +1806,7 @@ impl From for pb::FeeratesPerkw { mutual_close: c.mutual_close, // Rule #2 for type u32? opening: c.opening, // Rule #2 for type u32? penalty: c.penalty, // Rule #2 for type u32? + splice: c.splice, // Rule #2 for type u32? unilateral_anchor_close: c.unilateral_anchor_close, // Rule #2 for type u32? unilateral_close: c.unilateral_close, // Rule #2 for type u32? } diff --git a/cln-rpc/src/model.rs b/cln-rpc/src/model.rs index 2eb8ebccaf2e..7e09ad4f08c1 100644 --- a/cln-rpc/src/model.rs +++ b/cln-rpc/src/model.rs @@ -8276,6 +8276,8 @@ pub mod responses { #[serde(skip_serializing_if = "Option::is_none")] pub penalty: Option, #[serde(skip_serializing_if = "Option::is_none")] + pub splice: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub unilateral_anchor_close: Option, #[serde(skip_serializing_if = "Option::is_none")] pub unilateral_close: Option, @@ -8309,6 +8311,8 @@ pub mod responses { #[serde(skip_serializing_if = "Option::is_none")] pub penalty: Option, #[serde(skip_serializing_if = "Option::is_none")] + pub splice: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub unilateral_anchor_close: Option, #[serde(skip_serializing_if = "Option::is_none")] pub unilateral_close: Option, diff --git a/common/amount.c b/common/amount.c index cf872d0cb598..bccff3f882e4 100644 --- a/common/amount.c +++ b/common/amount.c @@ -7,6 +7,7 @@ #include #include #include +#include #include bool amount_sat_to_msat(struct amount_msat *msat, @@ -64,6 +65,24 @@ char *fmt_amount_msat(const tal_t *ctx, struct amount_msat msat) return tal_fmt(ctx, "%"PRIu64"msat", msat.millisatoshis); } +#define LSIZE 5 + +char *fmt_amount_m_as_sat(const tal_t *ctx, struct amount_msat msat) +{ + char last[LSIZE] = {0}; + + if (msat.millisatoshis % MSAT_PER_SAT) { + snprintf(last, LSIZE, ".%03"PRIu64, + msat.millisatoshis % MSAT_PER_SAT); + while(last[strlen(last) - 1] == '0') + last[strlen(last) - 1] = 0; + } + + return tal_fmt(ctx, "%"PRIu64"%ssat", + msat.millisatoshis / MSAT_PER_SAT, + last); +} + const char *fmt_amount_sat_btc(const tal_t *ctx, struct amount_sat sat, bool append_unit) @@ -399,6 +418,13 @@ WARN_UNUSED_RESULT bool amount_sat_add_sat_s64(struct amount_sat *val, return amount_sat_add(val, a, amount_sat(b)); } +bool amount_msat_can_add_sat_s64(struct amount_msat a, s64 b) +{ + struct amount_msat val; + /* This fails if the result goes below 0 */ + return amount_msat_add_sat_s64(&val, a, b); +} + bool amount_sat_eq(struct amount_sat a, struct amount_sat b) { return a.satoshis == b.satoshis; diff --git a/common/amount.h b/common/amount.h index 04965889b758..9cfc262c4d6c 100644 --- a/common/amount.h +++ b/common/amount.h @@ -101,6 +101,9 @@ WARN_UNUSED_RESULT bool amount_sat_add_sat_s64(struct amount_sat *val, struct amount_sat a, s64 b); +WARN_UNUSED_RESULT bool amount_msat_can_add_sat_s64(struct amount_msat a, + s64 b); + /* a += b */ WARN_UNUSED_RESULT bool amount_msat_accumulate(struct amount_msat *a, struct amount_msat b); @@ -232,6 +235,9 @@ const char *fmt_amount_msat_btc(const tal_t *ctx, /* => 1234msat */ char *fmt_amount_msat(const tal_t *ctx, struct amount_msat msat); +/* => 1234.12sat */ +char *fmt_amount_m_as_sat(const tal_t *ctx, struct amount_msat msat); + /* => 1.23456789btc (8 decimals!) */ const char *fmt_amount_sat_btc(const tal_t *ctx, struct amount_sat sat, diff --git a/common/splice_script.c b/common/splice_script.c index 0affda6ef140..209f5b0b6dce 100644 --- a/common/splice_script.c +++ b/common/splice_script.c @@ -278,6 +278,19 @@ static struct splice_script_error *new_error(const tal_t *ctx, return new_error_offset(ctx, type, token, phase, 0); } +static struct splice_script_error *new_error_msg(const tal_t *ctx, + enum splice_script_error_type type, + struct token *token, + const char *phase, + char *msg) +{ + struct splice_script_error *error = new_error(ctx, type, token, phase); + + tal_append_fmt(&error->message, "%s", msg); + + return error; +} + static char *context_snippet(const tal_t *ctx, const char *script, struct splice_script_error *error) @@ -1110,12 +1123,6 @@ static struct splice_script_error *type_data(const tal_t *ctx, input[i]->type = TOK_NODEID; input[i]->node_id = tal(input[i], struct node_id); - if (!node_id_from_hexstr(input[i]->str, - strlen(input[i]->str), - input[i]->node_id)) - return new_error(ctx, INVALID_NODEID, - input[i], - "type_data"); /* Rare corner case where channel begins with * prefix of 02 or 03 */ if (autocomplete_chan_id(input[i], channels, @@ -1133,6 +1140,12 @@ static struct splice_script_error *type_data(const tal_t *ctx, "type_data"); input[i]->type = TOK_CHANID; input[i]->node_id = tal_free(input[i]->node_id); + } else if (!node_id_from_hexstr(input[i]->str, + strlen(input[i]->str), + input[i]->node_id)) { + return new_error(ctx, INVALID_NODEID, + input[i], + "type_data"); } } else if (is_bitcoin_address(input[i]->str)) { input[i]->type = TOK_BTCADDR; @@ -2341,10 +2354,15 @@ static struct splice_script_error *calculate_amounts(const tal_t *ctx, /* Do we know precisely how much we're getting? */ if (!right_wilds && !right_used_ppm) { /* Then we can give sat amount errors */ - if (amount_sat_greater(left_total, right_total)) - return new_error(ctx, INSUFFICENT_FUNDS, - left_wildcard_token ?: input[0], - "calculate_amounts"); + if (amount_sat_greater(left_total, right_total)) { + return new_error_msg(ctx, INSUFFICENT_FUNDS, + left_wildcard_token ?: input[0], + "calculate_amounts", + tal_fmt(tmpctx, "required: %s," + " provided: %s", + fmt_amount_sat(tmpctx, left_total), + fmt_amount_sat(tmpctx, right_total))); + } if (left_used_ppm && amount_sat_eq(left_total, right_total)) return new_error(ctx, PERCENT_IS_ZERO, left_percent_token ?: input[0], @@ -2759,11 +2777,13 @@ char *splice_to_string(const tal_t *ctx, result->feerate_per_kw); if (!amount_sat_is_zero(result->in_sat)) - tal_append_fmt(&str, "%sput %s%s into ", into_prefix, + tal_append_fmt(&str, "%sput %s%s %s ", into_prefix, fmt_amount_sat(ctx, result->in_sat), - fee_str); + fee_str, + result->in_ppm ? "and" : "into"); if (result->in_ppm) - tal_append_fmt(&str, "%sput %s%s of rest into ", into_prefix, + tal_append_fmt(&str, "%s%s%s%s of rest into ", into_prefix, + amount_sat_is_zero(result->in_sat) ? "put " : "", ppm_to_str(ctx, result->in_ppm), fee_str); @@ -2789,7 +2809,9 @@ char *splice_to_string(const tal_t *ctx, fmt_amount_sat(ctx, result->out_sat), fee_str); if (result->out_ppm) - tal_append_fmt(&str, " withdraw %s%s", + tal_append_fmt(&str, " %s %s%s", + amount_sat_is_zero(result->out_sat) + ? "withdraw" : "and", ppm_to_str(ctx, result->out_ppm), fee_str); diff --git a/common/test/run-amount.c b/common/test/run-amount.c index f76484ef3436..751ff6c60dad 100644 --- a/common/test/run-amount.c +++ b/common/test/run-amount.c @@ -347,6 +347,57 @@ int main(int argc, char *argv[]) /* Overflowingly big. */ FAIL_SAT(&sat, "21000000000000000000000000.00000000btc"); + const char *partial_sats[] = + { + "10.111sat", + "10.11sat", + "10.1sat", + "10sat", + "10.001sat", + "10.01sat", + "10.1sat", + "1.111sat", + "1.11sat", + "1.1sat", + "1sat", + "0.111sat", + "0.011sat", + "0.001sat", + "0sat", + NULL, + }; + + u64 msat_amnts[] = + { + 10111, + 10110, + 10100, + 10000, + 10001, + 10010, + 10100, + 1111, + 1110, + 1100, + 1000, + 111, + 11, + 1, + 0, + }; + + assert(sizeof(partial_sats) / sizeof(partial_sats[0]) - 1 + == sizeof(msat_amnts) / sizeof(msat_amnts[0])); + + for (int i = 0; partial_sats[i]; i++) { + msat.millisatoshis = msat_amnts[i]; + printf("Does '%s' equal '%s'\n", + fmt_amount_m_as_sat(tmpctx, msat), + partial_sats[i]); + assert(streq(fmt_amount_m_as_sat(tmpctx, msat), + partial_sats[i])); + } + /* Test fmt_amount_msat_btc, fmt_amount_msat */ for (u64 i = 0; i <= UINT64_MAX / 10; i = i ? i * 10 : 1) { const char *with, *without; diff --git a/contrib/msggen/msggen/schema.json b/contrib/msggen/msggen/schema.json index ca068e2fb5e7..5043c2db65aa 100644 --- a/contrib/msggen/msggen/schema.json +++ b/contrib/msggen/msggen/schema.json @@ -12309,6 +12309,13 @@ "description": [ "Feerate to use when creating penalty tx for watchtowers." ] + }, + "splice": { + "type": "u32", + "added": "v26.04", + "description": [ + "Feerate to use when performing a splice." + ] } } }, @@ -12433,6 +12440,13 @@ "description": [ "Feerate to use when creating penalty tx for watchtowers." ] + }, + "splice": { + "type": "u32", + "added": "v26.04", + "description": [ + "Feerate to use when performing a splice." + ] } } }, @@ -12539,6 +12553,7 @@ "unilateral_close": 11000, "unilateral_anchor_close": 3750, "penalty": 7500, + "splice": 7505, "min_acceptable": 1875, "max_acceptable": 150000, "floor": 253, @@ -12590,6 +12605,7 @@ "unilateral_close": 44000, "unilateral_anchor_close": 15000, "penalty": 30000, + "splice": 30005, "min_acceptable": 7500, "max_acceptable": 600000, "floor": 1012, diff --git a/contrib/pyln-grpc-proto/pyln/grpc/node_pb2.py b/contrib/pyln-grpc-proto/pyln/grpc/node_pb2.py index b686d47b7fd5..fd5f157c66a6 100644 --- a/contrib/pyln-grpc-proto/pyln/grpc/node_pb2.py +++ b/contrib/pyln-grpc-proto/pyln/grpc/node_pb2.py @@ -25,7 +25,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\"\xc0\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\x32\n\x0cour_features\x18\n \x01(\x0b\x32\x17.cln.GetinfoOurFeaturesH\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\"R\n\x12GetinfoOurFeatures\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\"\x89\x05\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\x12\x44\n\rnetworkevents\x18\x07 \x01(\x0b\x32(.cln.AutocleanonceAutocleanNetworkeventsH\x06\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_expiredinvoicesB\x10\n\x0e_networkevents\"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\"I\n#AutocleanonceAutocleanNetworkevents\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\"\x99\x05\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\x12\x46\n\rnetworkevents\x18\x07 \x01(\x0b\x32*.cln.AutocleanstatusAutocleanNetworkeventsH\x06\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_expiredinvoicesB\x10\n\x0e_networkevents\"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\"c\n%AutocleanstatusAutocleanNetworkevents\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\"\x93\x01\n\rCloseResponse\x12/\n\titem_type\x18\x01 \x01(\x0e\x32\x1c.cln.CloseResponse.CloseType\x12\x0b\n\x03txs\x18\x04 \x03(\x0c\x12\r\n\x05txids\x18\x05 \x03(\x0c\"5\n\tCloseType\x12\n\n\x06MUTUAL\x10\x00\x12\x0e\n\nUNILATERAL\x10\x01\x12\x0c\n\x08UNOPENED\x10\x02\"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\"\xfd\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\x1e.cln.CreateinvoicePaidOutpointH\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\"9\n\x19\x43reateinvoicePaidOutpoint\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\x1eGetemergencyrecoverdataRequest\"3\n\x1fGetemergencyrecoverdataResponse\x12\x10\n\x08\x66iledata\x18\x01 \x01(\x0c\"Q\n\x13\x45xposesecretRequest\x12\x12\n\npassphrase\x18\x01 \x01(\t\x12\x17\n\nidentifier\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\r\n\x0b_identifier\"_\n\x14\x45xposesecretResponse\x12\x12\n\nidentifier\x18\x01 \x01(\t\x12\x0f\n\x07\x63odex32\x18\x02 \x01(\t\x12\x15\n\x08mnemonic\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0b\n\t_mnemonic\"#\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\"\xd3\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\x41\n\rpaid_outpoint\x18\x12 \x01(\x0b\x32%.cln.ListinvoicesInvoicesPaidOutpointH\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\"@\n ListinvoicesInvoicesPaidOutpoint\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x0e\n\x06outnum\x18\x02 \x01(\r\"\xf6\x03\n\x10SendonionRequest\x12\r\n\x05onion\x18\x01 \x01(\x0c\x12)\n\tfirst_hop\x18\x02 \x01(\x0b\x32\x16.cln.SendonionFirstHop\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\x12+\n\x11total_amount_msat\x18\x0f \x01(\x0b\x32\x0b.cln.AmountH\x08\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_descriptionB\x14\n\x12_total_amount_msat\"\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\"P\n\x11SendonionFirstHop\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\"\xb8\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@\n\x10option_will_fund\x18\x07 \x01(\x0b\x32!.cln.ListnodesNodesOptionWillFundH\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\"\xf2\x01\n\x1cListnodesNodesOptionWillFund\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\"\xd3\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\x1f.cln.WaitanyinvoicePaidOutpointH\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\x1aWaitanyinvoicePaidOutpoint\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\"\xc4\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\x38\n\rpaid_outpoint\x18\x0f \x01(\x0b\x32\x1c.cln.WaitinvoicePaidOutpointH\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\"7\n\x17WaitinvoicePaidOutpoint\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\"e\n\x17ListpeerchannelsRequest\x12\x0f\n\x02id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x1d\n\x10short_channel_id\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x05\n\x03_idB\x13\n\x11_short_channel_id\"K\n\x18ListpeerchannelsResponse\x12/\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x1d.cln.ListpeerchannelsChannels\"\xf4\x19\n\x18ListpeerchannelsChannels\x12\x0f\n\x07peer_id\x18\x01 \x01(\x0c\x12\x16\n\x0epeer_connected\x18\x02 \x01(\x08\x12 \n\x05state\x18\x03 \x01(\x0e\x32\x11.cln.ChannelState\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(\x12H1\x88\x01\x01\x12=\n#their_max_htlc_value_in_flight_msat\x18= \x01(\x0b\x32\x0b.cln.AmountH2\x88\x01\x01\x12;\n!our_max_htlc_value_in_flight_msat\x18> \x01(\x0b\x32\x0b.cln.AmountH3\x88\x01\x01\x42\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_directionB&\n$_their_max_htlc_value_in_flight_msatB$\n\"_our_max_htlc_value_in_flight_msat\"\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\"\xdd\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\x12\x11\n\x04psbt\x18\x06 \x01(\tH\x03\x88\x01\x01\x12\x15\n\x08withheld\x18\x07 \x01(\x08H\x04\x88\x01\x01\x42\x0e\n\x0c_pushed_msatB\x10\n\x0e_fee_paid_msatB\x10\n\x0e_fee_rcvd_msatB\x07\n\x05_psbtB\x0b\n\t_withheld\"]\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\"\xd0\n\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\x65\n\x0b\x63lose_cause\x18\x18 \x01(\x0e\x32P.cln.ListclosedchannelsClosedchannels.ListclosedchannelsClosedchannelsCloseCause\x12#\n\x16last_stable_connection\x18\x19 \x01(\x04H\t\x88\x01\x01\x12\x19\n\x0c\x66unding_psbt\x18\x1a \x01(\tH\n\x88\x01\x01\x12\x1d\n\x10\x66unding_withheld\x18\x1b \x01(\x08H\x0b\x88\x01\x01\"u\n*ListclosedchannelsClosedchannelsCloseCause\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_connectionB\x0f\n\r_funding_psbtB\x13\n\x11_funding_withheld\"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\"\x1f\n\rDecodeRequest\x12\x0e\n\x06string\x18\x01 \x01(\t\"\x8c(\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\x15.cln.DecodeOfferPaths\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\x36\n\x11invoice_fallbacks\x18- \x03(\x0b\x32\x1b.cln.DecodeInvoiceFallbacks\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\x16.cln.DecodeInvreqPaths\x12\'\n\x1awarning_empty_blinded_path\x18V \x01(\tHF\x88\x01\x01\x12=\n\x13invreq_bip_353_name\x18W \x01(\x0b\x32\x1b.cln.DecodeInvreqBip353NameHG\x88\x01\x01\x12\x35\n(warning_invreq_bip_353_name_name_invalid\x18X \x01(\tHH\x88\x01\x01\x12\x37\n*warning_invreq_bip_353_name_domain_invalid\x18Y \x01(\tHI\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_pathB\x16\n\x14_invreq_bip_353_nameB+\n)_warning_invreq_bip_353_name_name_invalidB-\n+_warning_invreq_bip_353_name_domain_invalid\"\xec\x01\n\x10\x44\x65\x63odeOfferPaths\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\"\x89\x01\n\x1e\x44\x65\x63odeOfferRecurrencePaywindow\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\"\x97\x02\n\x11\x44\x65\x63odeInvreqPaths\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\x1a.cln.DecodeInvreqPathsPath\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\"R\n\x15\x44\x65\x63odeInvreqPathsPath\x12\x17\n\x0f\x62linded_node_id\x18\x01 \x01(\x0c\x12 \n\x18\x65ncrypted_recipient_data\x18\x02 \x01(\x0c\"T\n\x16\x44\x65\x63odeInvreqBip353Name\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x64omain\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_domain\"S\n\x16\x44\x65\x63odeInvoicePathsPath\x12\x17\n\x0f\x62linded_node_id\x18\x01 \x01(\x0c\x12 \n\x18\x65ncrypted_recipient_data\x18\x02 \x01(\x0c\"X\n\x16\x44\x65\x63odeInvoiceFallbacks\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\"\xb2\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\x12\x18\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_labelB\x0e\n\x0c_description\"&\n\x12\x45nableofferRequest\x12\x10\n\x08offer_id\x18\x01 \x01(\x0c\"\xb1\x01\n\x13\x45nableofferResponse\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\x12\x18\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_labelB\x0e\n\x0c_description\"=\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\"\x9a\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\x44\n\x15onchain_fee_estimates\x18\x04 \x01(\x0b\x32 .cln.FeeratesOnchainFeeEstimatesH\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\"\x99\x02\n\x1b\x46\x65\x65ratesOnchainFeeEstimates\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\"%\n\x12\x46\x65tchbip353Request\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\"X\n\x13\x46\x65tchbip353Response\x12\r\n\x05proof\x18\x01 \x01(\t\x12\x32\n\x0cinstructions\x18\x02 \x03(\x0b\x32\x1c.cln.Fetchbip353Instructions\"\xf7\x01\n\x17\x46\x65tchbip353Instructions\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x12\n\x05offer\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x07onchain\x18\x03 \x01(\tH\x02\x88\x01\x01\x12!\n\x14offchain_amount_msat\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12\x1f\n\x12onchain_amount_sat\x18\x05 \x01(\x04H\x04\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x08\n\x06_offerB\n\n\x08_onchainB\x17\n\x15_offchain_amount_msatB\x15\n\x13_onchain_amount_sat\"\xb9\x03\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\x12\x1b\n\x0epayer_metadata\x18\t \x01(\tH\x07\x88\x01\x01\x12\x13\n\x06\x62ip353\x18\n \x01(\tH\x08\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_noteB\x11\n\x0f_payer_metadataB\t\n\x07_bip353\"\x99\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\x35\n\x0bnext_period\x18\x03 \x01(\x0b\x32\x1b.cln.FetchinvoiceNextPeriodH\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\x16\x46\x65tchinvoiceNextPeriod\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\"\xe0\x01\n\x1d\x43\x61ncelrecurringinvoiceRequest\x12\r\n\x05offer\x18\x01 \x01(\t\x12\x1a\n\x12recurrence_counter\x18\x02 \x01(\x04\x12\x18\n\x10recurrence_label\x18\x03 \x01(\t\x12\x1d\n\x10recurrence_start\x18\x04 \x01(\x01H\x00\x88\x01\x01\x12\x17\n\npayer_note\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06\x62ip353\x18\x06 \x01(\tH\x02\x88\x01\x01\x42\x13\n\x11_recurrence_startB\r\n\x0b_payer_noteB\t\n\x07_bip353\"0\n\x1e\x43\x61ncelrecurringinvoiceResponse\x12\x0e\n\x06\x62olt12\x18\x01 \x01(\t\"&\n\x18\x46undchannelCancelRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\".\n\x19\x46undchannelCancelResponse\x12\x11\n\tcancelled\x18\x01 \x01(\t\"Z\n\x1a\x46undchannelCompleteRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x0c\n\x04psbt\x18\x02 \x01(\t\x12\x15\n\x08withhold\x18\x03 \x01(\x08H\x00\x88\x01\x01\x42\x0b\n\t_withhold\"N\n\x1b\x46undchannelCompleteResponse\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\"\xe4\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\x36\n\x0c\x63hannel_type\x18\x07 \x01(\x0b\x32\x1b.cln.FundchannelChannelTypeH\x02\x88\x01\x01\x42\x0b\n\t_close_toB\x0b\n\t_mindepthB\x0f\n\r_channel_type\"K\n\x16\x46undchannelChannelType\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"\xd6\x02\n\x17\x46undchannelStartRequest\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\"\xf6\x01\n\x18\x46undchannelStartResponse\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.FundchannelStartChannelTypeH\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\"P\n\x1b\x46undchannelStartChannelType\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\"t\n\x14ListaddressesRequest\x12\x14\n\x07\x61\x64\x64ress\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x12\n\x05start\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\n\n\x08_addressB\x08\n\x06_startB\x08\n\x06_limit\"G\n\x15ListaddressesResponse\x12.\n\taddresses\x18\x01 \x03(\x0b\x32\x1b.cln.ListaddressesAddresses\"d\n\x16ListaddressesAddresses\x12\x0e\n\x06keyidx\x18\x01 \x01(\x04\x12\x13\n\x06\x62\x65\x63h32\x18\x02 \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\"\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\"\xae\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\x12\x18\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_labelB\x0e\n\x0c_description\"\x84\x03\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\x12\x36\n\x05index\x18\x04 \x01(\x0e\x32\".cln.ListpaysRequest.ListpaysIndexH\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\"7\n\x0eListpaysStatus\x12\x0b\n\x07PENDING\x10\x00\x12\x0c\n\x08\x43OMPLETE\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\")\n\rListpaysIndex\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\"3\n\x10ListpaysResponse\x12\x1f\n\x04pays\x18\x01 \x03(\x0b\x32\x11.cln.ListpaysPays\"\xdb\x05\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\x12\x1a\n\rcreated_index\x18\x0f \x01(\x04H\x0b\x88\x01\x01\x12\x1a\n\rupdated_index\x18\x10 \x01(\x04H\x0c\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_partsB\x10\n\x0e_created_indexB\x10\n\x0e_updated_index\"\xd6\x01\n\x10ListhtlcsRequest\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x38\n\x05index\x18\x02 \x01(\x0e\x32$.cln.ListhtlcsRequest.ListhtlcsIndexH\x01\x88\x01\x01\x12\x12\n\x05start\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12\x12\n\x05limit\x18\x04 \x01(\rH\x03\x88\x01\x01\"*\n\x0eListhtlcsIndex\x12\x0b\n\x07\x43REATED\x10\x00\x12\x0b\n\x07UPDATED\x10\x01\x42\x05\n\x03_idB\x08\n\x06_indexB\x08\n\x06_startB\x08\n\x06_limit\"7\n\x11ListhtlcsResponse\x12\"\n\x05htlcs\x18\x01 \x03(\x0b\x32\x13.cln.ListhtlcsHtlcs\"\xe5\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\x12\x1a\n\rcreated_index\x18\x08 \x01(\x04H\x00\x88\x01\x01\x12\x1a\n\rupdated_index\x18\t \x01(\x04H\x01\x88\x01\x01\"*\n\x17ListhtlcsHtlcsDirection\x12\x07\n\x03OUT\x10\x00\x12\x06\n\x02IN\x10\x01\x42\x10\n\x0e_created_indexB\x10\n\x0e_updated_index\"\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\"\x97\x01\n\x18MultifundchannelResponse\x12\n\n\x02tx\x18\x01 \x01(\x0c\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\x12\x34\n\x0b\x63hannel_ids\x18\x03 \x03(\x0b\x32\x1f.cln.MultifundchannelChannelIds\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\"\xc8\x01\n\x1aMultifundchannelChannelIds\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\x12\x45\n\x0c\x63hannel_type\x18\x04 \x01(\x0b\x32*.cln.MultifundchannelChannelIdsChannelTypeH\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\"Z\n%MultifundchannelChannelIdsChannelType\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\"\xca\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\x13proportional_amount\x18\r \x01(\x08H\n\x88\x01\x01\x12 \n\x13optional_recurrence\x18\x0e \x01(\x08H\x0b\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\x16\n\x14_proportional_amountB\x16\n\x14_optional_recurrence\"\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\x17OpenchannelAbortRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\"X\n\x18OpenchannelAbortResponse\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\"\x9e\x01\n\x16OpenchannelBumpRequest\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\"\x83\x02\n\x17OpenchannelBumpResponse\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12:\n\x0c\x63hannel_type\x18\x02 \x01(\x0b\x32\x1f.cln.OpenchannelBumpChannelTypeH\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\"O\n\x1aOpenchannelBumpChannelType\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"\x9f\x03\n\x16OpenchannelInitRequest\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\"\x83\x02\n\x17OpenchannelInitResponse\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\x1f.cln.OpenchannelInitChannelTypeH\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\"O\n\x1aOpenchannelInitChannelType\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"C\n\x18OpenchannelSignedRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x13\n\x0bsigned_psbt\x18\x02 \x01(\t\"I\n\x19OpenchannelSignedResponse\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\x18OpenchannelUpdateRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x0c\n\x04psbt\x18\x02 \x01(\t\"\xab\x02\n\x19OpenchannelUpdateResponse\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12<\n\x0c\x63hannel_type\x18\x02 \x01(\x0b\x32!.cln.OpenchannelUpdateChannelTypeH\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\"Q\n\x1cOpenchannelUpdateChannelType\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\"\xa5\x03\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\x12\x13\n\x06\x62olt11\x18\t \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\n \x01(\tH\x02\x88\x01\x01\x12\x14\n\x07groupid\x18\x0b \x01(\x04H\x03\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_destinationB\t\n\x07_bolt11B\t\n\x07_bolt12B\n\n\x08_groupid\"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\"b\n\x10SetconfigRequest\x12\x0e\n\x06\x63onfig\x18\x01 \x01(\t\x12\x10\n\x03val\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x16\n\ttransient\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x06\n\x04_valB\x0c\n\n_transient\"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\"\xc8\x01\n\x11SpliceInitRequest\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\x12SpliceInitResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\"_\n\x13SpliceSignedRequest\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\"^\n\x14SpliceSignedResponse\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\x12\x0c\n\x04psbt\x18\x04 \x01(\tB\t\n\x07_outnum\"7\n\x13SpliceUpdateRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x0c\n\x04psbt\x18\x02 \x01(\t\"y\n\x14SpliceUpdateResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x1b\n\x13\x63ommitments_secured\x18\x02 \x01(\x08\x12\x1f\n\x12signatures_secured\x18\x03 \x01(\x08H\x00\x88\x01\x01\x42\x15\n\x13_signatures_secured\"\xc6\x01\n\x10\x44\x65vspliceRequest\x12\x16\n\x0escript_or_json\x18\x01 \x01(\t\x12\x13\n\x06\x64ryrun\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12\x1a\n\rforce_feerate\x18\x03 \x01(\x08H\x01\x88\x01\x01\x12\x16\n\tdebug_log\x18\x04 \x01(\x08H\x02\x88\x01\x01\x12\x17\n\ndev_wetrun\x18\x05 \x01(\x08H\x03\x88\x01\x01\x42\t\n\x07_dryrunB\x10\n\x0e_force_feerateB\x0c\n\n_debug_logB\r\n\x0b_dev_wetrun\"\x80\x01\n\x11\x44\x65vspliceResponse\x12\x0e\n\x06\x64ryrun\x18\x01 \x03(\t\x12\x11\n\x04psbt\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x0f\n\x02tx\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x11\n\x04txid\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x0b\n\x03log\x18\x05 \x03(\tB\x07\n\x05_psbtB\x05\n\x03_txB\x07\n\x05_txid\"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\"\xb9\x02\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\"y\n\rWaitSubsystem\x12\x0c\n\x08INVOICES\x10\x00\x12\x0c\n\x08\x46ORWARDS\x10\x01\x12\x0c\n\x08SENDPAYS\x10\x02\x12\t\n\x05HTLCS\x10\x03\x12\x0e\n\nCHAINMOVES\x10\x04\x12\x10\n\x0c\x43HANNELMOVES\x10\x05\x12\x11\n\rNETWORKEVENTS\x10\x06\"6\n\rWaitIndexname\x12\x0b\n\x07\x43REATED\x10\x00\x12\x0b\n\x07UPDATED\x10\x01\x12\x0b\n\x07\x44\x45LETED\x10\x02\"\xf0\x05\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\x12(\n\x08\x66orwards\x18\x06 \x01(\x0b\x32\x11.cln.WaitForwardsH\x04\x88\x01\x01\x12(\n\x08invoices\x18\x07 \x01(\x0b\x32\x11.cln.WaitInvoicesH\x05\x88\x01\x01\x12(\n\x08sendpays\x18\x08 \x01(\x0b\x32\x11.cln.WaitSendpaysH\x06\x88\x01\x01\x12\"\n\x05htlcs\x18\t \x01(\x0b\x32\x0e.cln.WaitHtlcsH\x07\x88\x01\x01\x12,\n\nchainmoves\x18\n \x01(\x0b\x32\x13.cln.WaitChainmovesH\x08\x88\x01\x01\x12\x30\n\x0c\x63hannelmoves\x18\x0b \x01(\x0b\x32\x15.cln.WaitChannelmovesH\t\x88\x01\x01\x12\x32\n\rnetworkevents\x18\x0c \x01(\x0b\x32\x16.cln.WaitNetworkeventsH\n\x88\x01\x01\"y\n\rWaitSubsystem\x12\x0c\n\x08INVOICES\x10\x00\x12\x0c\n\x08\x46ORWARDS\x10\x01\x12\x0c\n\x08SENDPAYS\x10\x02\x12\t\n\x05HTLCS\x10\x03\x12\x0e\n\nCHAINMOVES\x10\x04\x12\x10\n\x0c\x43HANNELMOVES\x10\x05\x12\x11\n\rNETWORKEVENTS\x10\x06\x42\n\n\x08_createdB\n\n\x08_updatedB\n\n\x08_deletedB\n\n\x08_detailsB\x0b\n\t_forwardsB\x0b\n\t_invoicesB\x0b\n\t_sendpaysB\x08\n\x06_htlcsB\r\n\x0b_chainmovesB\x0f\n\r_channelmovesB\x10\n\x0e_networkevents\"\xcb\x02\n\x0cWaitForwards\x12\x39\n\x06status\x18\x01 \x01(\x0e\x32$.cln.WaitForwards.WaitForwardsStatusH\x00\x88\x01\x01\x12\x17\n\nin_channel\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x17\n\nin_htlc_id\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12!\n\x07in_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x18\n\x0bout_channel\x18\x05 \x01(\tH\x04\x88\x01\x01\"L\n\x12WaitForwardsStatus\x12\x0b\n\x07OFFERED\x10\x00\x12\x0b\n\x07SETTLED\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\x12\x10\n\x0cLOCAL_FAILED\x10\x03\x42\t\n\x07_statusB\r\n\x0b_in_channelB\r\n\x0b_in_htlc_idB\n\n\x08_in_msatB\x0e\n\x0c_out_channel\"\x95\x02\n\x0cWaitInvoices\x12\x39\n\x06status\x18\x01 \x01(\x0e\x32$.cln.WaitInvoices.WaitInvoicesStatusH\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\"7\n\x12WaitInvoicesStatus\x12\n\n\x06UNPAID\x10\x00\x12\x08\n\x04PAID\x10\x01\x12\x0b\n\x07\x45XPIRED\x10\x02\x42\t\n\x07_statusB\x08\n\x06_labelB\x0e\n\x0c_descriptionB\t\n\x07_bolt11B\t\n\x07_bolt12\"\xff\x01\n\x0cWaitSendpays\x12\x39\n\x06status\x18\x01 \x01(\x0e\x32$.cln.WaitSendpays.WaitSendpaysStatusH\x00\x88\x01\x01\x12\x13\n\x06partid\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x14\n\x07groupid\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12\x19\n\x0cpayment_hash\x18\x04 \x01(\x0cH\x03\x88\x01\x01\";\n\x12WaitSendpaysStatus\x12\x0b\n\x07PENDING\x10\x00\x12\n\n\x06\x46\x41ILED\x10\x01\x12\x0c\n\x08\x43OMPLETE\x10\x02\x42\t\n\x07_statusB\t\n\x07_partidB\n\n\x08_groupidB\x0f\n\r_payment_hash\"\x8c\x03\n\tWaitHtlcs\x12\"\n\x05state\x18\x01 \x01(\x0e\x32\x0e.cln.HtlcStateH\x00\x88\x01\x01\x12\x14\n\x07htlc_id\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x1d\n\x10short_channel_id\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x18\n\x0b\x63ltv_expiry\x18\x04 \x01(\rH\x03\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12\x39\n\tdirection\x18\x06 \x01(\x0e\x32!.cln.WaitHtlcs.WaitHtlcsDirectionH\x05\x88\x01\x01\x12\x19\n\x0cpayment_hash\x18\x07 \x01(\x0cH\x06\x88\x01\x01\"%\n\x12WaitHtlcsDirection\x12\x07\n\x03OUT\x10\x00\x12\x06\n\x02IN\x10\x01\x42\x08\n\x06_stateB\n\n\x08_htlc_idB\x13\n\x11_short_channel_idB\x0e\n\x0c_cltv_expiryB\x0e\n\x0c_amount_msatB\x0c\n\n_directionB\x0f\n\r_payment_hash\"d\n\x0eWaitChainmoves\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12 \n\x0b\x63redit_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\x1f\n\ndebit_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\"f\n\x10WaitChannelmoves\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12 \n\x0b\x63redit_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\x1f\n\ndebit_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\"\x89\x02\n\x11WaitNetworkevents\x12\x1a\n\rcreated_index\x18\x01 \x01(\x04H\x00\x88\x01\x01\x12\x44\n\titem_type\x18\x02 \x01(\x0e\x32,.cln.WaitNetworkevents.WaitNetworkeventsTypeH\x01\x88\x01\x01\x12\x14\n\x07peer_id\x18\x03 \x01(\x0cH\x02\x88\x01\x01\"P\n\x15WaitNetworkeventsType\x12\x0b\n\x07\x43ONNECT\x10\x00\x12\x10\n\x0c\x43ONNECT_FAIL\x10\x01\x12\x08\n\x04PING\x10\x02\x12\x0e\n\nDISCONNECT\x10\x03\x42\x10\n\x0e_created_indexB\x0c\n\n_item_typeB\n\n\x08_peer_id\"\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\"P\n\x13ListconfigsResponse\x12-\n\x07\x63onfigs\x18\x01 \x01(\x0b\x32\x17.cln.ListconfigsConfigsH\x00\x88\x01\x01\x42\n\n\x08_configs\"\xe9.\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\x12L\n\x14tor_service_password\x18\x42 \x01(\x0b\x32).cln.ListconfigsConfigsTorservicepasswordH@\x88\x01\x01\x12\x46\n\x11\x61nnounce_addr_dns\x18\x43 \x01(\x0b\x32&.cln.ListconfigsConfigsAnnounceaddrdnsHA\x88\x01\x01\x12T\n\x18require_confirmed_inputs\x18\x44 \x01(\x0b\x32-.cln.ListconfigsConfigsRequireconfirmedinputsHB\x88\x01\x01\x12\x39\n\ncommit_fee\x18\x45 \x01(\x0b\x32 .cln.ListconfigsConfigsCommitfeeHC\x88\x01\x01\x12N\n\x15\x63ommit_feerate_offset\x18\x46 \x01(\x0b\x32*.cln.ListconfigsConfigsCommitfeerateoffsetHD\x88\x01\x01\x12T\n\x18\x61utoconnect_seeker_peers\x18G \x01(\x0b\x32-.cln.ListconfigsConfigsAutoconnectseekerpeersHE\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\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_offsetB\x1b\n\x19_autoconnect_seeker_peers\"\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\"\x80\x02\n(ListconfigsConfigsAnnounceaddrdiscovered\x12q\n\tvalue_str\x18\x01 \x01(\x0e\x32^.cln.ListconfigsConfigsAnnounceaddrdiscovered.ListconfigsConfigsAnnounceaddrdiscoveredValueStr\x12\x0e\n\x06source\x18\x02 \x01(\t\"Q\n0ListconfigsConfigsAnnounceaddrdiscoveredValueStr\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$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\"M\n(ListconfigsConfigsAutoconnectseekerpeers\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"\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\"P\n\x17\x42kprchannelsapyResponse\x12\x35\n\x0c\x63hannels_apy\x18\x01 \x03(\x0b\x32\x1f.cln.BkprchannelsapyChannelsApy\"\xf9\x06\n\x1a\x42kprchannelsapyChannelsApy\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\"\xd4\x01\n\x19\x42kprdumpincomecsvResponse\x12\x10\n\x08\x63sv_file\x18\x01 \x01(\t\x12M\n\ncsv_format\x18\x02 \x01(\x0e\x32\x39.cln.BkprdumpincomecsvResponse.BkprdumpincomecsvCsvFormat\"V\n\x1a\x42kprdumpincomecsvCsvFormat\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\"P\n\x16\x42kprlistincomeResponse\x12\x36\n\rincome_events\x18\x01 \x03(\x0b\x32\x1f.cln.BkprlistincomeIncomeEvents\"\xb4\x02\n\x1a\x42kprlistincomeIncomeEvents\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\"P\n%BkpreditdescriptionbypaymentidRequest\x12\x12\n\npayment_id\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\"e\n&BkpreditdescriptionbypaymentidResponse\x12;\n\x07updated\x18\x01 \x03(\x0b\x32*.cln.BkpreditdescriptionbypaymentidUpdated\"\xa3\x05\n%BkpreditdescriptionbypaymentidUpdated\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12g\n\titem_type\x18\x02 \x01(\x0e\x32T.cln.BkpreditdescriptionbypaymentidUpdated.BkpreditdescriptionbypaymentidUpdatedType\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\x13\n\x0b\x64\x65scription\x18\x08 \x01(\t\x12\x15\n\x08outpoint\x18\t \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x62lockheight\x18\n \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06origin\x18\x0b \x01(\tH\x02\x88\x01\x01\x12\x17\n\npayment_id\x18\x0c \x01(\x0cH\x03\x88\x01\x01\x12\x11\n\x04txid\x18\r \x01(\x0cH\x04\x88\x01\x01\x12#\n\tfees_msat\x18\x0e \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x19\n\x0cis_rebalance\x18\x0f \x01(\x08H\x06\x88\x01\x01\x12\x14\n\x07part_id\x18\x10 \x01(\rH\x07\x88\x01\x01\"C\n)BkpreditdescriptionbypaymentidUpdatedType\x12\t\n\x05\x43HAIN\x10\x00\x12\x0b\n\x07\x43HANNEL\x10\x01\x42\x0b\n\t_outpointB\x0e\n\x0c_blockheightB\t\n\x07_originB\r\n\x0b_payment_idB\x07\n\x05_txidB\x0c\n\n_fees_msatB\x0f\n\r_is_rebalanceB\n\n\x08_part_id\"M\n$BkpreditdescriptionbyoutpointRequest\x12\x10\n\x08outpoint\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\"c\n%BkpreditdescriptionbyoutpointResponse\x12:\n\x07updated\x18\x01 \x03(\x0b\x32).cln.BkpreditdescriptionbyoutpointUpdated\"\x9f\x05\n$BkpreditdescriptionbyoutpointUpdated\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12\x65\n\titem_type\x18\x02 \x01(\x0e\x32R.cln.BkpreditdescriptionbyoutpointUpdated.BkpreditdescriptionbyoutpointUpdatedType\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\x13\n\x0b\x64\x65scription\x18\x08 \x01(\t\x12\x15\n\x08outpoint\x18\t \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x62lockheight\x18\n \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06origin\x18\x0b \x01(\tH\x02\x88\x01\x01\x12\x17\n\npayment_id\x18\x0c \x01(\x0cH\x03\x88\x01\x01\x12\x11\n\x04txid\x18\r \x01(\x0cH\x04\x88\x01\x01\x12#\n\tfees_msat\x18\x0e \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x19\n\x0cis_rebalance\x18\x0f \x01(\x08H\x06\x88\x01\x01\x12\x14\n\x07part_id\x18\x10 \x01(\rH\x07\x88\x01\x01\"B\n(BkpreditdescriptionbyoutpointUpdatedType\x12\t\n\x05\x43HAIN\x10\x00\x12\x0b\n\x07\x43HANNEL\x10\x01\x42\x0b\n\t_outpointB\x0e\n\x0c_blockheightB\t\n\x07_originB\r\n\x0b_payment_idB\x07\n\x05_txidB\x0c\n\n_fees_msatB\x0f\n\r_is_rebalanceB\n\n\x08_part_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\x12\x13\n\x06relist\x18\x03 \x01(\x08H\x02\x88\x01\x01\x42\x08\n\x06_startB\x06\n\x04_endB\t\n\x07_relist\"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\"B\n\x17\x41skreneunreserveRequest\x12\'\n\x04path\x18\x01 \x03(\x0b\x32\x19.cln.AskreneunreservePath\"\x1a\n\x18\x41skreneunreserveResponse\"\x92\x01\n\x14\x41skreneunreservePath\x12 \n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12!\n\x14short_channel_id_dir\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x12\n\x05layer\x18\x05 \x01(\tH\x01\x88\x01\x01\x42\x17\n\x15_short_channel_id_dirB\x08\n\x06_layer\"8\n\x18\x41skrenelistlayersRequest\x12\x12\n\x05layer\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_layer\"I\n\x19\x41skrenelistlayersResponse\x12,\n\x06layers\x18\x01 \x03(\x0b\x32\x1c.cln.AskrenelistlayersLayers\"\xbe\x03\n\x17\x41skrenelistlayersLayers\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x16\n\x0e\x64isabled_nodes\x18\x02 \x03(\x0c\x12\x45\n\x10\x63reated_channels\x18\x03 \x03(\x0b\x32+.cln.AskrenelistlayersLayersCreatedChannels\x12<\n\x0b\x63onstraints\x18\x04 \x03(\x0b\x32\'.cln.AskrenelistlayersLayersConstraints\x12\x17\n\npersistent\x18\x05 \x01(\x08H\x00\x88\x01\x01\x12\x19\n\x11\x64isabled_channels\x18\x06 \x03(\t\x12\x43\n\x0f\x63hannel_updates\x18\x07 \x03(\x0b\x32*.cln.AskrenelistlayersLayersChannelUpdates\x12\x32\n\x06\x62iases\x18\x08 \x03(\x0b\x32\".cln.AskrenelistlayersLayersBiases\x12;\n\x0bnode_biases\x18\t \x03(\x0b\x32&.cln.AskrenelistlayersLayersNodeBiasesB\r\n\x0b_persistent\"\x8b\x01\n&AskrenelistlayersLayersCreatedChannels\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\"\n\rcapacity_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\"\xa8\x03\n%AskrenelistlayersLayersChannelUpdates\x12\x1c\n\x14short_channel_id_dir\x18\x01 \x01(\t\x12\x14\n\x07\x65nabled\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12+\n\x11htlc_minimum_msat\x18\x03 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12+\n\x11htlc_maximum_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12\'\n\rfee_base_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12(\n\x1b\x66\x65\x65_proportional_millionths\x18\x06 \x01(\rH\x04\x88\x01\x01\x12\x1e\n\x11\x63ltv_expiry_delta\x18\x07 \x01(\rH\x05\x88\x01\x01\x42\n\n\x08_enabledB\x14\n\x12_htlc_minimum_msatB\x14\n\x12_htlc_maximum_msatB\x10\n\x0e_fee_base_msatB\x1e\n\x1c_fee_proportional_millionthsB\x14\n\x12_cltv_expiry_delta\"\xf8\x01\n\"AskrenelistlayersLayersConstraints\x12&\n\x0cmaximum_msat\x18\x03 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12&\n\x0cminimum_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12!\n\x14short_channel_id_dir\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x16\n\ttimestamp\x18\x06 \x01(\x04H\x03\x88\x01\x01\x42\x0f\n\r_maximum_msatB\x0f\n\r_minimum_msatB\x17\n\x15_short_channel_id_dirB\x0c\n\n_timestamp\"\x9b\x01\n\x1d\x41skrenelistlayersLayersBiases\x12\x1c\n\x14short_channel_id_dir\x18\x01 \x01(\t\x12\x0c\n\x04\x62ias\x18\x02 \x01(\x12\x12\x18\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x16\n\ttimestamp\x18\x04 \x01(\x04H\x01\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0c\n\n_timestamp\"\x91\x01\n!AskrenelistlayersLayersNodeBiases\x12\x0c\n\x04node\x18\x01 \x01(\x0c\x12\x0f\n\x07in_bias\x18\x02 \x01(\x12\x12\x10\n\x08out_bias\x18\x03 \x01(\x12\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x11\n\ttimestamp\x18\x05 \x01(\x04\x42\x0e\n\x0c_description\"R\n\x19\x41skrenecreatelayerRequest\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x17\n\npersistent\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\r\n\x0b_persistent\"K\n\x1a\x41skrenecreatelayerResponse\x12-\n\x06layers\x18\x01 \x03(\x0b\x32\x1d.cln.AskrenecreatelayerLayers\"\xb0\x03\n\x18\x41skrenecreatelayerLayers\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12\x16\n\x0e\x64isabled_nodes\x18\x03 \x03(\x0c\x12\x19\n\x11\x64isabled_channels\x18\x04 \x03(\t\x12\x46\n\x10\x63reated_channels\x18\x05 \x03(\x0b\x32,.cln.AskrenecreatelayerLayersCreatedChannels\x12\x44\n\x0f\x63hannel_updates\x18\x06 \x03(\x0b\x32+.cln.AskrenecreatelayerLayersChannelUpdates\x12=\n\x0b\x63onstraints\x18\x07 \x03(\x0b\x32(.cln.AskrenecreatelayerLayersConstraints\x12\x33\n\x06\x62iases\x18\x08 \x03(\x0b\x32#.cln.AskrenecreatelayerLayersBiases\x12<\n\x0bnode_biases\x18\t \x03(\x0b\x32\'.cln.AskrenecreatelayerLayersNodeBiases\"\x8c\x01\n\'AskrenecreatelayerLayersCreatedChannels\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\"\n\rcapacity_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\"\xd1\x02\n&AskrenecreatelayerLayersChannelUpdates\x12+\n\x11htlc_minimum_msat\x18\x01 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12+\n\x11htlc_maximum_msat\x18\x02 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\'\n\rfee_base_msat\x18\x03 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12(\n\x1b\x66\x65\x65_proportional_millionths\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x12\n\x05\x64\x65lay\x18\x05 \x01(\rH\x04\x88\x01\x01\x42\x14\n\x12_htlc_minimum_msatB\x14\n\x12_htlc_maximum_msatB\x10\n\x0e_fee_base_msatB\x1e\n\x1c_fee_proportional_millionthsB\x08\n\x06_delay\"\xc4\x01\n#AskrenecreatelayerLayersConstraints\x12\x18\n\x10short_channel_id\x18\x01 \x01(\t\x12\x11\n\tdirection\x18\x02 \x01(\r\x12&\n\x0cmaximum_msat\x18\x03 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12&\n\x0cminimum_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x42\x0f\n\r_maximum_msatB\x0f\n\r_minimum_msat\"\x9c\x01\n\x1e\x41skrenecreatelayerLayersBiases\x12\x1c\n\x14short_channel_id_dir\x18\x01 \x01(\t\x12\x0c\n\x04\x62ias\x18\x02 \x01(\x12\x12\x18\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x16\n\ttimestamp\x18\x04 \x01(\x04H\x01\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0c\n\n_timestamp\"\x92\x01\n\"AskrenecreatelayerLayersNodeBiases\x12\x0c\n\x04node\x18\x01 \x01(\x0c\x12\x0f\n\x07in_bias\x18\x02 \x01(\x12\x12\x10\n\x08out_bias\x18\x03 \x01(\x12\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x11\n\ttimestamp\x18\x05 \x01(\x04\x42\x0e\n\x0c_description\"*\n\x19\x41skreneremovelayerRequest\x12\r\n\x05layer\x18\x01 \x01(\t\"\x1c\n\x1a\x41skreneremovelayerResponse\">\n\x15\x41skrenereserveRequest\x12%\n\x04path\x18\x01 \x03(\x0b\x32\x17.cln.AskrenereservePath\"\x18\n\x16\x41skrenereserveResponse\"\x90\x01\n\x12\x41skrenereservePath\x12 \n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12!\n\x14short_channel_id_dir\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x12\n\x05layer\x18\x05 \x01(\tH\x01\x88\x01\x01\x42\x17\n\x15_short_channel_id_dirB\x08\n\x06_layer\"2\n\x11\x41skreneageRequest\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x0e\n\x06\x63utoff\x18\x02 \x01(\x04\"8\n\x12\x41skreneageResponse\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x13\n\x0bnum_removed\x18\x02 \x01(\x04\"\xfb\x01\n\x10GetroutesRequest\x12\x0e\n\x06source\x18\x01 \x01(\x0c\x12\x13\n\x0b\x64\x65stination\x18\x02 \x01(\x0c\x12 \n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12\x0e\n\x06layers\x18\x04 \x03(\t\x12 \n\x0bmaxfee_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12\x17\n\nfinal_cltv\x18\x07 \x01(\rH\x00\x88\x01\x01\x12\x15\n\x08maxdelay\x18\x08 \x01(\rH\x01\x88\x01\x01\x12\x15\n\x08maxparts\x18\t \x01(\rH\x02\x88\x01\x01\x42\r\n\x0b_final_cltvB\x0b\n\t_maxdelayB\x0b\n\t_maxparts\"R\n\x11GetroutesResponse\x12\x17\n\x0fprobability_ppm\x18\x01 \x01(\x04\x12$\n\x06routes\x18\x02 \x03(\x0b\x32\x14.cln.GetroutesRoutes\"\x9c\x01\n\x0fGetroutesRoutes\x12\x17\n\x0fprobability_ppm\x18\x01 \x01(\x04\x12 \n\x0b\x61mount_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12&\n\x04path\x18\x03 \x03(\x0b\x32\x18.cln.GetroutesRoutesPath\x12\x17\n\nfinal_cltv\x18\x04 \x01(\rH\x00\x88\x01\x01\x42\r\n\x0b_final_cltv\"\x98\x01\n\x13GetroutesRoutesPath\x12 \n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12\x14\n\x0cnext_node_id\x18\x04 \x01(\x0c\x12\r\n\x05\x64\x65lay\x18\x05 \x01(\r\x12!\n\x14short_channel_id_dir\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x17\n\x15_short_channel_id_dir\"8\n\x19\x41skrenedisablenodeRequest\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x0c\n\x04node\x18\x02 \x01(\x0c\"\x1c\n\x1a\x41skrenedisablenodeResponse\"\xcd\x02\n\x1b\x41skreneinformchannelRequest\x12\r\n\x05layer\x18\x01 \x01(\t\x12!\n\x14short_channel_id_dir\x18\x06 \x01(\tH\x00\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12P\n\x06inform\x18\x08 \x01(\x0e\x32;.cln.AskreneinformchannelRequest.AskreneinformchannelInformH\x02\x88\x01\x01\"O\n\x1a\x41skreneinformchannelInform\x12\x0f\n\x0b\x43ONSTRAINED\x10\x00\x12\x11\n\rUNCONSTRAINED\x10\x01\x12\r\n\tSUCCEEDED\x10\x02\x42\x17\n\x15_short_channel_id_dirB\x0e\n\x0c_amount_msatB\t\n\x07_inform\"Y\n\x1c\x41skreneinformchannelResponse\x12\x39\n\x0b\x63onstraints\x18\x02 \x03(\x0b\x32$.cln.AskreneinformchannelConstraints\"\xd3\x01\n\x1f\x41skreneinformchannelConstraints\x12\x1c\n\x14short_channel_id_dir\x18\x01 \x01(\t\x12\r\n\x05layer\x18\x02 \x01(\t\x12\x11\n\ttimestamp\x18\x03 \x01(\x04\x12&\n\x0cmaximum_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12&\n\x0cminimum_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x42\x0f\n\r_maximum_msatB\x0f\n\r_minimum_msat\"\x8f\x01\n\x1b\x41skrenecreatechannelRequest\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\x0c\x12\x13\n\x0b\x64\x65stination\x18\x03 \x01(\x0c\x12\x18\n\x10short_channel_id\x18\x04 \x01(\t\x12\"\n\rcapacity_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\"\x1e\n\x1c\x41skrenecreatechannelResponse\"\xad\x03\n\x1b\x41skreneupdatechannelRequest\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x1c\n\x14short_channel_id_dir\x18\x02 \x01(\t\x12\x14\n\x07\x65nabled\x18\x03 \x01(\x08H\x00\x88\x01\x01\x12+\n\x11htlc_minimum_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12+\n\x11htlc_maximum_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12\'\n\rfee_base_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12(\n\x1b\x66\x65\x65_proportional_millionths\x18\x07 \x01(\rH\x04\x88\x01\x01\x12\x1e\n\x11\x63ltv_expiry_delta\x18\x08 \x01(\rH\x05\x88\x01\x01\x42\n\n\x08_enabledB\x14\n\x12_htlc_minimum_msatB\x14\n\x12_htlc_maximum_msatB\x10\n\x0e_fee_base_msatB\x1e\n\x1c_fee_proportional_millionthsB\x14\n\x12_cltv_expiry_delta\"\x1e\n\x1c\x41skreneupdatechannelResponse\"\xa4\x01\n\x19\x41skrenebiaschannelRequest\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x1c\n\x14short_channel_id_dir\x18\x02 \x01(\t\x12\x0c\n\x04\x62ias\x18\x03 \x01(\x12\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08relative\x18\x05 \x01(\x08H\x01\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0b\n\t_relative\"K\n\x1a\x41skrenebiaschannelResponse\x12-\n\x06\x62iases\x18\x01 \x03(\x0b\x32\x1d.cln.AskrenebiaschannelBiases\"\xa5\x01\n\x18\x41skrenebiaschannelBiases\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x1c\n\x14short_channel_id_dir\x18\x02 \x01(\t\x12\x0c\n\x04\x62ias\x18\x03 \x01(\x12\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x16\n\ttimestamp\x18\x05 \x01(\x04H\x01\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0c\n\n_timestamp\"\xa4\x01\n\x16\x41skrenebiasnodeRequest\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x0c\n\x04node\x18\x02 \x01(\x0c\x12\x11\n\tdirection\x18\x03 \x01(\t\x12\x0c\n\x04\x62ias\x18\x04 \x01(\x12\x12\x18\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08relative\x18\x06 \x01(\x08H\x01\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0b\n\t_relative\"N\n\x17\x41skrenebiasnodeResponse\x12\x33\n\x0bnode_biases\x18\x01 \x03(\x0b\x32\x1e.cln.AskrenebiasnodeNodeBiases\"\x98\x01\n\x19\x41skrenebiasnodeNodeBiases\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x0c\n\x04node\x18\x02 \x01(\x0c\x12\x0f\n\x07in_bias\x18\x03 \x01(\x12\x12\x10\n\x08out_bias\x18\x04 \x01(\x12\x12\x18\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x11\n\ttimestamp\x18\x06 \x01(\x04\x42\x0e\n\x0c_description\" \n\x1e\x41skrenelistreservationsRequest\"a\n\x1f\x41skrenelistreservationsResponse\x12>\n\x0creservations\x18\x01 \x03(\x0b\x32(.cln.AskrenelistreservationsReservations\"\x91\x01\n#AskrenelistreservationsReservations\x12\x1c\n\x14short_channel_id_dir\x18\x01 \x01(\t\x12 \n\x0b\x61mount_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\x16\n\x0e\x61ge_in_seconds\x18\x03 \x01(\x04\x12\x12\n\ncommand_id\x18\x04 \x01(\t\"\xcb\x02\n\x19InjectpaymentonionRequest\x12\r\n\x05onion\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\x12\x13\n\x0b\x63ltv_expiry\x18\x04 \x01(\r\x12\x0e\n\x06partid\x18\x05 \x01(\x04\x12\x0f\n\x07groupid\x18\x06 \x01(\x04\x12\x12\n\x05label\x18\x07 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tinvstring\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\rlocalinvreqid\x18\t \x01(\x0cH\x02\x88\x01\x01\x12*\n\x10\x64\x65stination_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x42\x08\n\x06_labelB\x0c\n\n_invstringB\x10\n\x0e_localinvreqidB\x13\n\x11_destination_msat\"w\n\x1aInjectpaymentonionResponse\x12\x12\n\ncreated_at\x18\x01 \x01(\x04\x12\x14\n\x0c\x63ompleted_at\x18\x02 \x01(\x04\x12\x15\n\rcreated_index\x18\x03 \x01(\x04\x12\x18\n\x10payment_preimage\x18\x04 \x01(\x0c\">\n\x19InjectonionmessageRequest\x12\x10\n\x08path_key\x18\x01 \x01(\x0c\x12\x0f\n\x07message\x18\x02 \x01(\x0c\"\x1c\n\x1aInjectonionmessageResponse\"\xbf\x02\n\x0bXpayRequest\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\x0e\n\x06layers\x18\x04 \x03(\t\x12\x16\n\tretry_for\x18\x05 \x01(\rH\x02\x88\x01\x01\x12&\n\x0cpartial_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x15\n\x08maxdelay\x18\x07 \x01(\rH\x04\x88\x01\x01\x12\x17\n\npayer_note\x18\x08 \x01(\tH\x05\x88\x01\x01\x42\x0e\n\x0c_amount_msatB\t\n\x07_maxfeeB\x0c\n\n_retry_forB\x0f\n\r_partial_msatB\x0b\n\t_maxdelayB\r\n\x0b_payer_note\"\xa1\x01\n\x0cXpayResponse\x12\x18\n\x10payment_preimage\x18\x01 \x01(\x0c\x12\x14\n\x0c\x66\x61iled_parts\x18\x02 \x01(\x04\x12\x18\n\x10successful_parts\x18\x03 \x01(\x04\x12 \n\x0b\x61mount_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12%\n\x10\x61mount_sent_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\"=\n\x19SignmessagewithkeyRequest\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\"`\n\x1aSignmessagewithkeyResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x0e\n\x06pubkey\x18\x02 \x01(\x0c\x12\x11\n\tsignature\x18\x03 \x01(\x0c\x12\x0e\n\x06\x62\x61se64\x18\x04 \x01(\t\"\xcd\x01\n\x17ListchannelmovesRequest\x12\x46\n\x05index\x18\x01 \x01(\x0e\x32\x32.cln.ListchannelmovesRequest.ListchannelmovesIndexH\x00\x88\x01\x01\x12\x12\n\x05start\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x02\x88\x01\x01\"$\n\x15ListchannelmovesIndex\x12\x0b\n\x07\x43REATED\x10\x00\x42\x08\n\x06_indexB\x08\n\x06_startB\x08\n\x06_limit\"S\n\x18ListchannelmovesResponse\x12\x37\n\x0c\x63hannelmoves\x18\x01 \x03(\x0b\x32!.cln.ListchannelmovesChannelmoves\"\xa9\x04\n\x1cListchannelmovesChannelmoves\x12\x15\n\rcreated_index\x18\x01 \x01(\x04\x12\x12\n\naccount_id\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\x11\n\ttimestamp\x18\x05 \x01(\x04\x12]\n\x0bprimary_tag\x18\x06 \x01(\x0e\x32H.cln.ListchannelmovesChannelmoves.ListchannelmovesChannelmovesPrimaryTag\x12\x19\n\x0cpayment_hash\x18\x07 \x01(\x0cH\x00\x88\x01\x01\x12\x14\n\x07part_id\x18\x08 \x01(\x04H\x01\x88\x01\x01\x12\x15\n\x08group_id\x18\t \x01(\x04H\x02\x88\x01\x01\x12\x1e\n\tfees_msat\x18\n \x01(\x0b\x32\x0b.cln.Amount\"\x96\x01\n&ListchannelmovesChannelmovesPrimaryTag\x12\x0b\n\x07INVOICE\x10\x00\x12\n\n\x06ROUTED\x10\x01\x12\n\n\x06PUSHED\x10\x02\x12\r\n\tLEASE_FEE\x10\x03\x12\x14\n\x10\x43HANNEL_PROPOSED\x10\x04\x12\x0f\n\x0bPENALTY_ADJ\x10\x05\x12\x11\n\rJOURNAL_ENTRY\x10\x06\x42\x0f\n\r_payment_hashB\n\n\x08_part_idB\x0b\n\t_group_id\"\xc5\x01\n\x15ListchainmovesRequest\x12\x42\n\x05index\x18\x01 \x01(\x0e\x32..cln.ListchainmovesRequest.ListchainmovesIndexH\x00\x88\x01\x01\x12\x12\n\x05start\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x02\x88\x01\x01\"\"\n\x13ListchainmovesIndex\x12\x0b\n\x07\x43REATED\x10\x00\x42\x08\n\x06_indexB\x08\n\x06_startB\x08\n\x06_limit\"K\n\x16ListchainmovesResponse\x12\x31\n\nchainmoves\x18\x01 \x03(\x0b\x32\x1d.cln.ListchainmovesChainmoves\"\xd4\x06\n\x18ListchainmovesChainmoves\x12\x15\n\rcreated_index\x18\x01 \x01(\x04\x12\x12\n\naccount_id\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\x11\n\ttimestamp\x18\x05 \x01(\x04\x12U\n\x0bprimary_tag\x18\x06 \x01(\x0e\x32@.cln.ListchainmovesChainmoves.ListchainmovesChainmovesPrimaryTag\x12\x14\n\x07peer_id\x18\x08 \x01(\x0cH\x00\x88\x01\x01\x12 \n\x13originating_account\x18\t \x01(\tH\x01\x88\x01\x01\x12\x1a\n\rspending_txid\x18\n \x01(\x0cH\x02\x88\x01\x01\x12\x1b\n\x04utxo\x18\x0b \x01(\x0b\x32\r.cln.Outpoint\x12\x19\n\x0cpayment_hash\x18\x0c \x01(\x0cH\x03\x88\x01\x01\x12 \n\x0boutput_msat\x18\r \x01(\x0b\x32\x0b.cln.Amount\x12\x19\n\x0coutput_count\x18\x0e \x01(\rH\x04\x88\x01\x01\x12\x13\n\x0b\x62lockheight\x18\x0f \x01(\r\x12\x12\n\nextra_tags\x18\x10 \x03(\t\"\x95\x02\n\"ListchainmovesChainmovesPrimaryTag\x12\x0b\n\x07\x44\x45POSIT\x10\x00\x12\x0e\n\nWITHDRAWAL\x10\x01\x12\x0b\n\x07PENALTY\x10\x02\x12\x10\n\x0c\x43HANNEL_OPEN\x10\x03\x12\x11\n\rCHANNEL_CLOSE\x10\x04\x12\x11\n\rDELAYED_TO_US\x10\x05\x12\x0b\n\x07HTLC_TX\x10\x06\x12\x10\n\x0cHTLC_TIMEOUT\x10\x07\x12\x10\n\x0cHTLC_FULFILL\x10\x08\x12\r\n\tTO_WALLET\x10\t\x12\n\n\x06\x41NCHOR\x10\n\x12\x0b\n\x07TO_THEM\x10\x0b\x12\r\n\tPENALIZED\x10\x0c\x12\n\n\x06STOLEN\x10\r\x12\x0b\n\x07IGNORED\x10\x0e\x12\x0c\n\x08TO_MINER\x10\x0f\x42\n\n\x08_peer_idB\x16\n\x14_originating_accountB\x10\n\x0e_spending_txidB\x0f\n\r_payment_hashB\x0f\n\r_output_count\"\xe9\x01\n\x18ListnetworkeventsRequest\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12H\n\x05index\x18\x02 \x01(\x0e\x32\x34.cln.ListnetworkeventsRequest.ListnetworkeventsIndexH\x01\x88\x01\x01\x12\x12\n\x05start\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12\x12\n\x05limit\x18\x04 \x01(\rH\x03\x88\x01\x01\"%\n\x16ListnetworkeventsIndex\x12\x0b\n\x07\x43REATED\x10\x00\x42\x05\n\x03_idB\x08\n\x06_indexB\x08\n\x06_startB\x08\n\x06_limit\"W\n\x19ListnetworkeventsResponse\x12:\n\rnetworkevents\x18\x01 \x03(\x0b\x32#.cln.ListnetworkeventsNetworkevents\"\xf2\x01\n\x1eListnetworkeventsNetworkevents\x12\x15\n\rcreated_index\x18\x01 \x01(\x04\x12\x11\n\ttimestamp\x18\x02 \x01(\x04\x12\x0f\n\x07peer_id\x18\x03 \x01(\x0c\x12\x11\n\titem_type\x18\x04 \x01(\t\x12\x13\n\x06reason\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rduration_nsec\x18\x06 \x01(\x04H\x01\x88\x01\x01\x12\x1e\n\x11\x63onnect_attempted\x18\x07 \x01(\x08H\x02\x88\x01\x01\x42\t\n\x07_reasonB\x10\n\x0e_duration_nsecB\x14\n\x12_connect_attempted\"/\n\x16\x44\x65lnetworkeventRequest\x12\x15\n\rcreated_index\x18\x01 \x01(\x04\"\x19\n\x17\x44\x65lnetworkeventResponse\"\xf6\x01\n\x1a\x43lnrestregisterpathRequest\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x12\n\nrpc_method\x18\x02 \x01(\t\x12H\n\x11rune_restrictions\x18\x03 \x01(\x0b\x32(.cln.ClnrestregisterpathRuneRestrictionsH\x00\x88\x01\x01\x12\x1a\n\rrune_required\x18\x04 \x01(\x08H\x01\x88\x01\x01\x12\x18\n\x0bhttp_method\x18\x05 \x01(\tH\x02\x88\x01\x01\x42\x14\n\x12_rune_restrictionsB\x10\n\x0e_rune_requiredB\x0e\n\x0c_http_method\"\x1d\n\x1b\x43lnrestregisterpathResponse\"\xda\x01\n#ClnrestregisterpathRuneRestrictions\x12\x13\n\x06nodeid\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06method\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x44\n\x06params\x18\x03 \x03(\x0b\x32\x34.cln.ClnrestregisterpathRuneRestrictions.ParamsEntry\x1a-\n\x0bParamsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_nodeidB\t\n\x07_method\"\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\"\x9a\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\"c\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\x12\r\n\tWEBSOCKET\x10\x05\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\"\"\n StreamChannelStateChangedRequest\"\xc1\x03\n\x1f\x43hannelStateChangedNotification\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\x11\n\ttimestamp\x18\x04 \x01(\t\x12)\n\told_state\x18\x05 \x01(\x0e\x32\x11.cln.ChannelStateH\x01\x88\x01\x01\x12$\n\tnew_state\x18\x06 \x01(\x0e\x32\x11.cln.ChannelState\x12L\n\x05\x63\x61use\x18\x07 \x01(\x0e\x32=.cln.ChannelStateChangedNotification.ChannelStateChangedCause\x12\x14\n\x07message\x18\x08 \x01(\tH\x02\x88\x01\x01\"c\n\x18\x43hannelStateChangedCause\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\x13\n\x11_short_channel_idB\x0c\n\n_old_stateB\n\n\x08_message2\x82U\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\x66\n\x17GetEmergencyRecoverData\x12#.cln.GetemergencyrecoverdataRequest\x1a$.cln.GetemergencyrecoverdataResponse\"\x00\x12\x45\n\x0c\x45xposeSecret\x12\x18.cln.ExposesecretRequest\x1a\x19.cln.ExposesecretResponse\"\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\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\x42\n\x0b\x45nableOffer\x12\x17.cln.EnableofferRequest\x1a\x18.cln.EnableofferResponse\"\x00\x12?\n\nDisconnect\x12\x16.cln.DisconnectRequest\x1a\x17.cln.DisconnectResponse\"\x00\x12\x39\n\x08\x46\x65\x65rates\x12\x14.cln.FeeratesRequest\x1a\x15.cln.FeeratesResponse\"\x00\x12\x42\n\x0b\x46\x65tchBip353\x12\x17.cln.Fetchbip353Request\x1a\x18.cln.Fetchbip353Response\"\x00\x12\x45\n\x0c\x46\x65tchInvoice\x12\x18.cln.FetchinvoiceRequest\x1a\x19.cln.FetchinvoiceResponse\"\x00\x12\x63\n\x16\x43\x61ncelRecurringInvoice\x12\".cln.CancelrecurringinvoiceRequest\x1a#.cln.CancelrecurringinvoiceResponse\"\x00\x12T\n\x11\x46undChannelCancel\x12\x1d.cln.FundchannelCancelRequest\x1a\x1e.cln.FundchannelCancelResponse\"\x00\x12Z\n\x13\x46undChannelComplete\x12\x1f.cln.FundchannelCompleteRequest\x1a .cln.FundchannelCompleteResponse\"\x00\x12\x42\n\x0b\x46undChannel\x12\x17.cln.FundchannelRequest\x1a\x18.cln.FundchannelResponse\"\x00\x12Q\n\x10\x46undChannelStart\x12\x1c.cln.FundchannelStartRequest\x1a\x1d.cln.FundchannelStartResponse\"\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\x12H\n\rListAddresses\x12\x19.cln.ListaddressesRequest\x1a\x1a.cln.ListaddressesResponse\"\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\x12Q\n\x10OpenChannelAbort\x12\x1c.cln.OpenchannelAbortRequest\x1a\x1d.cln.OpenchannelAbortResponse\"\x00\x12N\n\x0fOpenChannelBump\x12\x1b.cln.OpenchannelBumpRequest\x1a\x1c.cln.OpenchannelBumpResponse\"\x00\x12N\n\x0fOpenChannelInit\x12\x1b.cln.OpenchannelInitRequest\x1a\x1c.cln.OpenchannelInitResponse\"\x00\x12T\n\x11OpenChannelSigned\x12\x1d.cln.OpenchannelSignedRequest\x1a\x1e.cln.OpenchannelSignedResponse\"\x00\x12T\n\x11OpenChannelUpdate\x12\x1d.cln.OpenchannelUpdateRequest\x1a\x1e.cln.OpenchannelUpdateResponse\"\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?\n\nSpliceInit\x12\x16.cln.SpliceInitRequest\x1a\x17.cln.SpliceInitResponse\"\x00\x12\x45\n\x0cSpliceSigned\x12\x18.cln.SpliceSignedRequest\x1a\x19.cln.SpliceSignedResponse\"\x00\x12\x45\n\x0cSpliceUpdate\x12\x18.cln.SpliceUpdateRequest\x1a\x19.cln.SpliceUpdateResponse\"\x00\x12<\n\tDevSplice\x12\x15.cln.DevspliceRequest\x1a\x16.cln.DevspliceResponse\"\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\x12{\n\x1e\x42kprEditDescriptionByPaymentId\x12*.cln.BkpreditdescriptionbypaymentidRequest\x1a+.cln.BkpreditdescriptionbypaymentidResponse\"\x00\x12x\n\x1d\x42kprEditDescriptionByOutpoint\x12).cln.BkpreditdescriptionbyoutpointRequest\x1a*.cln.BkpreditdescriptionbyoutpointResponse\"\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\x12Q\n\x10\x41skReneUnreserve\x12\x1c.cln.AskreneunreserveRequest\x1a\x1d.cln.AskreneunreserveResponse\"\x00\x12T\n\x11\x41skReneListLayers\x12\x1d.cln.AskrenelistlayersRequest\x1a\x1e.cln.AskrenelistlayersResponse\"\x00\x12W\n\x12\x41skReneCreateLayer\x12\x1e.cln.AskrenecreatelayerRequest\x1a\x1f.cln.AskrenecreatelayerResponse\"\x00\x12W\n\x12\x41skReneRemoveLayer\x12\x1e.cln.AskreneremovelayerRequest\x1a\x1f.cln.AskreneremovelayerResponse\"\x00\x12K\n\x0e\x41skReneReserve\x12\x1a.cln.AskrenereserveRequest\x1a\x1b.cln.AskrenereserveResponse\"\x00\x12?\n\nAskReneAge\x12\x16.cln.AskreneageRequest\x1a\x17.cln.AskreneageResponse\"\x00\x12<\n\tGetRoutes\x12\x15.cln.GetroutesRequest\x1a\x16.cln.GetroutesResponse\"\x00\x12W\n\x12\x41skReneDisableNode\x12\x1e.cln.AskrenedisablenodeRequest\x1a\x1f.cln.AskrenedisablenodeResponse\"\x00\x12]\n\x14\x41skReneInformChannel\x12 .cln.AskreneinformchannelRequest\x1a!.cln.AskreneinformchannelResponse\"\x00\x12]\n\x14\x41skReneCreateChannel\x12 .cln.AskrenecreatechannelRequest\x1a!.cln.AskrenecreatechannelResponse\"\x00\x12]\n\x14\x41skReneUpdateChannel\x12 .cln.AskreneupdatechannelRequest\x1a!.cln.AskreneupdatechannelResponse\"\x00\x12W\n\x12\x41skReneBiasChannel\x12\x1e.cln.AskrenebiaschannelRequest\x1a\x1f.cln.AskrenebiaschannelResponse\"\x00\x12N\n\x0f\x41skreneBiasNode\x12\x1b.cln.AskrenebiasnodeRequest\x1a\x1c.cln.AskrenebiasnodeResponse\"\x00\x12\x66\n\x17\x41skReneListReservations\x12#.cln.AskrenelistreservationsRequest\x1a$.cln.AskrenelistreservationsResponse\"\x00\x12W\n\x12InjectPaymentOnion\x12\x1e.cln.InjectpaymentonionRequest\x1a\x1f.cln.InjectpaymentonionResponse\"\x00\x12W\n\x12InjectOnionMessage\x12\x1e.cln.InjectonionmessageRequest\x1a\x1f.cln.InjectonionmessageResponse\"\x00\x12-\n\x04Xpay\x12\x10.cln.XpayRequest\x1a\x11.cln.XpayResponse\"\x00\x12W\n\x12SignMessageWithKey\x12\x1e.cln.SignmessagewithkeyRequest\x1a\x1f.cln.SignmessagewithkeyResponse\"\x00\x12Q\n\x10ListChannelMoves\x12\x1c.cln.ListchannelmovesRequest\x1a\x1d.cln.ListchannelmovesResponse\"\x00\x12K\n\x0eListChainMoves\x12\x1a.cln.ListchainmovesRequest\x1a\x1b.cln.ListchainmovesResponse\"\x00\x12T\n\x11ListNetworkEvents\x12\x1d.cln.ListnetworkeventsRequest\x1a\x1e.cln.ListnetworkeventsResponse\"\x00\x12N\n\x0f\x44\x65lNetworkEvent\x12\x1b.cln.DelnetworkeventRequest\x1a\x1c.cln.DelnetworkeventResponse\"\x00\x12Z\n\x13\x43lnrestRegisterPath\x12\x1f.cln.ClnrestregisterpathRequest\x1a .cln.ClnrestregisterpathResponse\"\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\x12o\n\x1cSubscribeChannelStateChanged\x12%.cln.StreamChannelStateChangedRequest\x1a$.cln.ChannelStateChangedNotification\"\x00\x30\x01\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\nnode.proto\x12\x03\x63ln\x1a\x10primitives.proto\"\x10\n\x0eGetinfoRequest\"\xc0\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\x32\n\x0cour_features\x18\n \x01(\x0b\x32\x17.cln.GetinfoOurFeaturesH\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\"R\n\x12GetinfoOurFeatures\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\"\x89\x05\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\x12\x44\n\rnetworkevents\x18\x07 \x01(\x0b\x32(.cln.AutocleanonceAutocleanNetworkeventsH\x06\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_expiredinvoicesB\x10\n\x0e_networkevents\"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\"I\n#AutocleanonceAutocleanNetworkevents\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\"\x99\x05\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\x12\x46\n\rnetworkevents\x18\x07 \x01(\x0b\x32*.cln.AutocleanstatusAutocleanNetworkeventsH\x06\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_expiredinvoicesB\x10\n\x0e_networkevents\"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\"c\n%AutocleanstatusAutocleanNetworkevents\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\"\x93\x01\n\rCloseResponse\x12/\n\titem_type\x18\x01 \x01(\x0e\x32\x1c.cln.CloseResponse.CloseType\x12\x0b\n\x03txs\x18\x04 \x03(\x0c\x12\r\n\x05txids\x18\x05 \x03(\x0c\"5\n\tCloseType\x12\n\n\x06MUTUAL\x10\x00\x12\x0e\n\nUNILATERAL\x10\x01\x12\x0c\n\x08UNOPENED\x10\x02\"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\"\xfd\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\x1e.cln.CreateinvoicePaidOutpointH\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\"9\n\x19\x43reateinvoicePaidOutpoint\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\x1eGetemergencyrecoverdataRequest\"3\n\x1fGetemergencyrecoverdataResponse\x12\x10\n\x08\x66iledata\x18\x01 \x01(\x0c\"Q\n\x13\x45xposesecretRequest\x12\x12\n\npassphrase\x18\x01 \x01(\t\x12\x17\n\nidentifier\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\r\n\x0b_identifier\"_\n\x14\x45xposesecretResponse\x12\x12\n\nidentifier\x18\x01 \x01(\t\x12\x0f\n\x07\x63odex32\x18\x02 \x01(\t\x12\x15\n\x08mnemonic\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0b\n\t_mnemonic\"#\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\"\xd3\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\x41\n\rpaid_outpoint\x18\x12 \x01(\x0b\x32%.cln.ListinvoicesInvoicesPaidOutpointH\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\"@\n ListinvoicesInvoicesPaidOutpoint\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x0e\n\x06outnum\x18\x02 \x01(\r\"\xf6\x03\n\x10SendonionRequest\x12\r\n\x05onion\x18\x01 \x01(\x0c\x12)\n\tfirst_hop\x18\x02 \x01(\x0b\x32\x16.cln.SendonionFirstHop\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\x12+\n\x11total_amount_msat\x18\x0f \x01(\x0b\x32\x0b.cln.AmountH\x08\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_descriptionB\x14\n\x12_total_amount_msat\"\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\"P\n\x11SendonionFirstHop\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\"\xb8\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@\n\x10option_will_fund\x18\x07 \x01(\x0b\x32!.cln.ListnodesNodesOptionWillFundH\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\"\xf2\x01\n\x1cListnodesNodesOptionWillFund\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\"\xd3\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\x1f.cln.WaitanyinvoicePaidOutpointH\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\x1aWaitanyinvoicePaidOutpoint\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\"\xc4\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\x38\n\rpaid_outpoint\x18\x0f \x01(\x0b\x32\x1c.cln.WaitinvoicePaidOutpointH\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\"7\n\x17WaitinvoicePaidOutpoint\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\"e\n\x17ListpeerchannelsRequest\x12\x0f\n\x02id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x1d\n\x10short_channel_id\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x05\n\x03_idB\x13\n\x11_short_channel_id\"K\n\x18ListpeerchannelsResponse\x12/\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x1d.cln.ListpeerchannelsChannels\"\xf4\x19\n\x18ListpeerchannelsChannels\x12\x0f\n\x07peer_id\x18\x01 \x01(\x0c\x12\x16\n\x0epeer_connected\x18\x02 \x01(\x08\x12 \n\x05state\x18\x03 \x01(\x0e\x32\x11.cln.ChannelState\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(\x12H1\x88\x01\x01\x12=\n#their_max_htlc_value_in_flight_msat\x18= \x01(\x0b\x32\x0b.cln.AmountH2\x88\x01\x01\x12;\n!our_max_htlc_value_in_flight_msat\x18> \x01(\x0b\x32\x0b.cln.AmountH3\x88\x01\x01\x42\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_directionB&\n$_their_max_htlc_value_in_flight_msatB$\n\"_our_max_htlc_value_in_flight_msat\"\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\"\xdd\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\x12\x11\n\x04psbt\x18\x06 \x01(\tH\x03\x88\x01\x01\x12\x15\n\x08withheld\x18\x07 \x01(\x08H\x04\x88\x01\x01\x42\x0e\n\x0c_pushed_msatB\x10\n\x0e_fee_paid_msatB\x10\n\x0e_fee_rcvd_msatB\x07\n\x05_psbtB\x0b\n\t_withheld\"]\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\"\xd0\n\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\x65\n\x0b\x63lose_cause\x18\x18 \x01(\x0e\x32P.cln.ListclosedchannelsClosedchannels.ListclosedchannelsClosedchannelsCloseCause\x12#\n\x16last_stable_connection\x18\x19 \x01(\x04H\t\x88\x01\x01\x12\x19\n\x0c\x66unding_psbt\x18\x1a \x01(\tH\n\x88\x01\x01\x12\x1d\n\x10\x66unding_withheld\x18\x1b \x01(\x08H\x0b\x88\x01\x01\"u\n*ListclosedchannelsClosedchannelsCloseCause\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_connectionB\x0f\n\r_funding_psbtB\x13\n\x11_funding_withheld\"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\"\x1f\n\rDecodeRequest\x12\x0e\n\x06string\x18\x01 \x01(\t\"\x8c(\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\x15.cln.DecodeOfferPaths\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\x36\n\x11invoice_fallbacks\x18- \x03(\x0b\x32\x1b.cln.DecodeInvoiceFallbacks\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\x16.cln.DecodeInvreqPaths\x12\'\n\x1awarning_empty_blinded_path\x18V \x01(\tHF\x88\x01\x01\x12=\n\x13invreq_bip_353_name\x18W \x01(\x0b\x32\x1b.cln.DecodeInvreqBip353NameHG\x88\x01\x01\x12\x35\n(warning_invreq_bip_353_name_name_invalid\x18X \x01(\tHH\x88\x01\x01\x12\x37\n*warning_invreq_bip_353_name_domain_invalid\x18Y \x01(\tHI\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_pathB\x16\n\x14_invreq_bip_353_nameB+\n)_warning_invreq_bip_353_name_name_invalidB-\n+_warning_invreq_bip_353_name_domain_invalid\"\xec\x01\n\x10\x44\x65\x63odeOfferPaths\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\"\x89\x01\n\x1e\x44\x65\x63odeOfferRecurrencePaywindow\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\"\x97\x02\n\x11\x44\x65\x63odeInvreqPaths\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\x1a.cln.DecodeInvreqPathsPath\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\"R\n\x15\x44\x65\x63odeInvreqPathsPath\x12\x17\n\x0f\x62linded_node_id\x18\x01 \x01(\x0c\x12 \n\x18\x65ncrypted_recipient_data\x18\x02 \x01(\x0c\"T\n\x16\x44\x65\x63odeInvreqBip353Name\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x64omain\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_domain\"S\n\x16\x44\x65\x63odeInvoicePathsPath\x12\x17\n\x0f\x62linded_node_id\x18\x01 \x01(\x0c\x12 \n\x18\x65ncrypted_recipient_data\x18\x02 \x01(\x0c\"X\n\x16\x44\x65\x63odeInvoiceFallbacks\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\"\xb2\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\x12\x18\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_labelB\x0e\n\x0c_description\"&\n\x12\x45nableofferRequest\x12\x10\n\x08offer_id\x18\x01 \x01(\x0c\"\xb1\x01\n\x13\x45nableofferResponse\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\x12\x18\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_labelB\x0e\n\x0c_description\"=\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\"\x9a\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\x44\n\x15onchain_fee_estimates\x18\x04 \x01(\x0b\x32 .cln.FeeratesOnchainFeeEstimatesH\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\"\xf3\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\x12\x13\n\x06splice\x18\x0c \x01(\rH\x08\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_closeB\t\n\x07_splice\"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\"\xf3\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\x12\x13\n\x06splice\x18\x0c \x01(\rH\x08\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_closeB\t\n\x07_splice\"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\"\x99\x02\n\x1b\x46\x65\x65ratesOnchainFeeEstimates\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\"%\n\x12\x46\x65tchbip353Request\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\"X\n\x13\x46\x65tchbip353Response\x12\r\n\x05proof\x18\x01 \x01(\t\x12\x32\n\x0cinstructions\x18\x02 \x03(\x0b\x32\x1c.cln.Fetchbip353Instructions\"\xf7\x01\n\x17\x46\x65tchbip353Instructions\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x12\n\x05offer\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x07onchain\x18\x03 \x01(\tH\x02\x88\x01\x01\x12!\n\x14offchain_amount_msat\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12\x1f\n\x12onchain_amount_sat\x18\x05 \x01(\x04H\x04\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x08\n\x06_offerB\n\n\x08_onchainB\x17\n\x15_offchain_amount_msatB\x15\n\x13_onchain_amount_sat\"\xb9\x03\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\x12\x1b\n\x0epayer_metadata\x18\t \x01(\tH\x07\x88\x01\x01\x12\x13\n\x06\x62ip353\x18\n \x01(\tH\x08\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_noteB\x11\n\x0f_payer_metadataB\t\n\x07_bip353\"\x99\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\x35\n\x0bnext_period\x18\x03 \x01(\x0b\x32\x1b.cln.FetchinvoiceNextPeriodH\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\x16\x46\x65tchinvoiceNextPeriod\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\"\xe0\x01\n\x1d\x43\x61ncelrecurringinvoiceRequest\x12\r\n\x05offer\x18\x01 \x01(\t\x12\x1a\n\x12recurrence_counter\x18\x02 \x01(\x04\x12\x18\n\x10recurrence_label\x18\x03 \x01(\t\x12\x1d\n\x10recurrence_start\x18\x04 \x01(\x01H\x00\x88\x01\x01\x12\x17\n\npayer_note\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06\x62ip353\x18\x06 \x01(\tH\x02\x88\x01\x01\x42\x13\n\x11_recurrence_startB\r\n\x0b_payer_noteB\t\n\x07_bip353\"0\n\x1e\x43\x61ncelrecurringinvoiceResponse\x12\x0e\n\x06\x62olt12\x18\x01 \x01(\t\"&\n\x18\x46undchannelCancelRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\".\n\x19\x46undchannelCancelResponse\x12\x11\n\tcancelled\x18\x01 \x01(\t\"Z\n\x1a\x46undchannelCompleteRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x0c\n\x04psbt\x18\x02 \x01(\t\x12\x15\n\x08withhold\x18\x03 \x01(\x08H\x00\x88\x01\x01\x42\x0b\n\t_withhold\"N\n\x1b\x46undchannelCompleteResponse\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\"\xe4\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\x36\n\x0c\x63hannel_type\x18\x07 \x01(\x0b\x32\x1b.cln.FundchannelChannelTypeH\x02\x88\x01\x01\x42\x0b\n\t_close_toB\x0b\n\t_mindepthB\x0f\n\r_channel_type\"K\n\x16\x46undchannelChannelType\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"\xd6\x02\n\x17\x46undchannelStartRequest\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\"\xf6\x01\n\x18\x46undchannelStartResponse\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.FundchannelStartChannelTypeH\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\"P\n\x1b\x46undchannelStartChannelType\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\"t\n\x14ListaddressesRequest\x12\x14\n\x07\x61\x64\x64ress\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x12\n\x05start\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\n\n\x08_addressB\x08\n\x06_startB\x08\n\x06_limit\"G\n\x15ListaddressesResponse\x12.\n\taddresses\x18\x01 \x03(\x0b\x32\x1b.cln.ListaddressesAddresses\"d\n\x16ListaddressesAddresses\x12\x0e\n\x06keyidx\x18\x01 \x01(\x04\x12\x13\n\x06\x62\x65\x63h32\x18\x02 \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\"\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\"\xae\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\x12\x18\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_labelB\x0e\n\x0c_description\"\x84\x03\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\x12\x36\n\x05index\x18\x04 \x01(\x0e\x32\".cln.ListpaysRequest.ListpaysIndexH\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\"7\n\x0eListpaysStatus\x12\x0b\n\x07PENDING\x10\x00\x12\x0c\n\x08\x43OMPLETE\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\")\n\rListpaysIndex\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\"3\n\x10ListpaysResponse\x12\x1f\n\x04pays\x18\x01 \x03(\x0b\x32\x11.cln.ListpaysPays\"\xdb\x05\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\x12\x1a\n\rcreated_index\x18\x0f \x01(\x04H\x0b\x88\x01\x01\x12\x1a\n\rupdated_index\x18\x10 \x01(\x04H\x0c\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_partsB\x10\n\x0e_created_indexB\x10\n\x0e_updated_index\"\xd6\x01\n\x10ListhtlcsRequest\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x38\n\x05index\x18\x02 \x01(\x0e\x32$.cln.ListhtlcsRequest.ListhtlcsIndexH\x01\x88\x01\x01\x12\x12\n\x05start\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12\x12\n\x05limit\x18\x04 \x01(\rH\x03\x88\x01\x01\"*\n\x0eListhtlcsIndex\x12\x0b\n\x07\x43REATED\x10\x00\x12\x0b\n\x07UPDATED\x10\x01\x42\x05\n\x03_idB\x08\n\x06_indexB\x08\n\x06_startB\x08\n\x06_limit\"7\n\x11ListhtlcsResponse\x12\"\n\x05htlcs\x18\x01 \x03(\x0b\x32\x13.cln.ListhtlcsHtlcs\"\xe5\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\x12\x1a\n\rcreated_index\x18\x08 \x01(\x04H\x00\x88\x01\x01\x12\x1a\n\rupdated_index\x18\t \x01(\x04H\x01\x88\x01\x01\"*\n\x17ListhtlcsHtlcsDirection\x12\x07\n\x03OUT\x10\x00\x12\x06\n\x02IN\x10\x01\x42\x10\n\x0e_created_indexB\x10\n\x0e_updated_index\"\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\"\x97\x01\n\x18MultifundchannelResponse\x12\n\n\x02tx\x18\x01 \x01(\x0c\x12\x0c\n\x04txid\x18\x02 \x01(\x0c\x12\x34\n\x0b\x63hannel_ids\x18\x03 \x03(\x0b\x32\x1f.cln.MultifundchannelChannelIds\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\"\xc8\x01\n\x1aMultifundchannelChannelIds\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\x12\x45\n\x0c\x63hannel_type\x18\x04 \x01(\x0b\x32*.cln.MultifundchannelChannelIdsChannelTypeH\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\"Z\n%MultifundchannelChannelIdsChannelType\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\"\xca\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\x13proportional_amount\x18\r \x01(\x08H\n\x88\x01\x01\x12 \n\x13optional_recurrence\x18\x0e \x01(\x08H\x0b\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\x16\n\x14_proportional_amountB\x16\n\x14_optional_recurrence\"\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\x17OpenchannelAbortRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\"X\n\x18OpenchannelAbortResponse\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\"\x9e\x01\n\x16OpenchannelBumpRequest\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\"\x83\x02\n\x17OpenchannelBumpResponse\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12:\n\x0c\x63hannel_type\x18\x02 \x01(\x0b\x32\x1f.cln.OpenchannelBumpChannelTypeH\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\"O\n\x1aOpenchannelBumpChannelType\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"\x9f\x03\n\x16OpenchannelInitRequest\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\"\x83\x02\n\x17OpenchannelInitResponse\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\x1f.cln.OpenchannelInitChannelTypeH\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\"O\n\x1aOpenchannelInitChannelType\x12\x0c\n\x04\x62its\x18\x01 \x03(\r\x12#\n\x05names\x18\x02 \x03(\x0e\x32\x14.cln.ChannelTypeName\"C\n\x18OpenchannelSignedRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x13\n\x0bsigned_psbt\x18\x02 \x01(\t\"I\n\x19OpenchannelSignedResponse\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\x18OpenchannelUpdateRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x0c\n\x04psbt\x18\x02 \x01(\t\"\xab\x02\n\x19OpenchannelUpdateResponse\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12<\n\x0c\x63hannel_type\x18\x02 \x01(\x0b\x32!.cln.OpenchannelUpdateChannelTypeH\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\"Q\n\x1cOpenchannelUpdateChannelType\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\"\xa5\x03\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\x12\x13\n\x06\x62olt11\x18\t \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06\x62olt12\x18\n \x01(\tH\x02\x88\x01\x01\x12\x14\n\x07groupid\x18\x0b \x01(\x04H\x03\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_destinationB\t\n\x07_bolt11B\t\n\x07_bolt12B\n\n\x08_groupid\"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\"b\n\x10SetconfigRequest\x12\x0e\n\x06\x63onfig\x18\x01 \x01(\t\x12\x10\n\x03val\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x16\n\ttransient\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x06\n\x04_valB\x0c\n\n_transient\"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\"\xc8\x01\n\x11SpliceInitRequest\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\x12SpliceInitResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\"_\n\x13SpliceSignedRequest\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\"^\n\x14SpliceSignedResponse\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\x12\x0c\n\x04psbt\x18\x04 \x01(\tB\t\n\x07_outnum\"7\n\x13SpliceUpdateRequest\x12\x12\n\nchannel_id\x18\x01 \x01(\x0c\x12\x0c\n\x04psbt\x18\x02 \x01(\t\"y\n\x14SpliceUpdateResponse\x12\x0c\n\x04psbt\x18\x01 \x01(\t\x12\x1b\n\x13\x63ommitments_secured\x18\x02 \x01(\x08\x12\x1f\n\x12signatures_secured\x18\x03 \x01(\x08H\x00\x88\x01\x01\x42\x15\n\x13_signatures_secured\"\xc6\x01\n\x10\x44\x65vspliceRequest\x12\x16\n\x0escript_or_json\x18\x01 \x01(\t\x12\x13\n\x06\x64ryrun\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12\x1a\n\rforce_feerate\x18\x03 \x01(\x08H\x01\x88\x01\x01\x12\x16\n\tdebug_log\x18\x04 \x01(\x08H\x02\x88\x01\x01\x12\x17\n\ndev_wetrun\x18\x05 \x01(\x08H\x03\x88\x01\x01\x42\t\n\x07_dryrunB\x10\n\x0e_force_feerateB\x0c\n\n_debug_logB\r\n\x0b_dev_wetrun\"\x80\x01\n\x11\x44\x65vspliceResponse\x12\x0e\n\x06\x64ryrun\x18\x01 \x03(\t\x12\x11\n\x04psbt\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x0f\n\x02tx\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x11\n\x04txid\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x0b\n\x03log\x18\x05 \x03(\tB\x07\n\x05_psbtB\x05\n\x03_txB\x07\n\x05_txid\"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\"\xb9\x02\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\"y\n\rWaitSubsystem\x12\x0c\n\x08INVOICES\x10\x00\x12\x0c\n\x08\x46ORWARDS\x10\x01\x12\x0c\n\x08SENDPAYS\x10\x02\x12\t\n\x05HTLCS\x10\x03\x12\x0e\n\nCHAINMOVES\x10\x04\x12\x10\n\x0c\x43HANNELMOVES\x10\x05\x12\x11\n\rNETWORKEVENTS\x10\x06\"6\n\rWaitIndexname\x12\x0b\n\x07\x43REATED\x10\x00\x12\x0b\n\x07UPDATED\x10\x01\x12\x0b\n\x07\x44\x45LETED\x10\x02\"\xf0\x05\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\x12(\n\x08\x66orwards\x18\x06 \x01(\x0b\x32\x11.cln.WaitForwardsH\x04\x88\x01\x01\x12(\n\x08invoices\x18\x07 \x01(\x0b\x32\x11.cln.WaitInvoicesH\x05\x88\x01\x01\x12(\n\x08sendpays\x18\x08 \x01(\x0b\x32\x11.cln.WaitSendpaysH\x06\x88\x01\x01\x12\"\n\x05htlcs\x18\t \x01(\x0b\x32\x0e.cln.WaitHtlcsH\x07\x88\x01\x01\x12,\n\nchainmoves\x18\n \x01(\x0b\x32\x13.cln.WaitChainmovesH\x08\x88\x01\x01\x12\x30\n\x0c\x63hannelmoves\x18\x0b \x01(\x0b\x32\x15.cln.WaitChannelmovesH\t\x88\x01\x01\x12\x32\n\rnetworkevents\x18\x0c \x01(\x0b\x32\x16.cln.WaitNetworkeventsH\n\x88\x01\x01\"y\n\rWaitSubsystem\x12\x0c\n\x08INVOICES\x10\x00\x12\x0c\n\x08\x46ORWARDS\x10\x01\x12\x0c\n\x08SENDPAYS\x10\x02\x12\t\n\x05HTLCS\x10\x03\x12\x0e\n\nCHAINMOVES\x10\x04\x12\x10\n\x0c\x43HANNELMOVES\x10\x05\x12\x11\n\rNETWORKEVENTS\x10\x06\x42\n\n\x08_createdB\n\n\x08_updatedB\n\n\x08_deletedB\n\n\x08_detailsB\x0b\n\t_forwardsB\x0b\n\t_invoicesB\x0b\n\t_sendpaysB\x08\n\x06_htlcsB\r\n\x0b_chainmovesB\x0f\n\r_channelmovesB\x10\n\x0e_networkevents\"\xcb\x02\n\x0cWaitForwards\x12\x39\n\x06status\x18\x01 \x01(\x0e\x32$.cln.WaitForwards.WaitForwardsStatusH\x00\x88\x01\x01\x12\x17\n\nin_channel\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x17\n\nin_htlc_id\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12!\n\x07in_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x18\n\x0bout_channel\x18\x05 \x01(\tH\x04\x88\x01\x01\"L\n\x12WaitForwardsStatus\x12\x0b\n\x07OFFERED\x10\x00\x12\x0b\n\x07SETTLED\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\x12\x10\n\x0cLOCAL_FAILED\x10\x03\x42\t\n\x07_statusB\r\n\x0b_in_channelB\r\n\x0b_in_htlc_idB\n\n\x08_in_msatB\x0e\n\x0c_out_channel\"\x95\x02\n\x0cWaitInvoices\x12\x39\n\x06status\x18\x01 \x01(\x0e\x32$.cln.WaitInvoices.WaitInvoicesStatusH\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\"7\n\x12WaitInvoicesStatus\x12\n\n\x06UNPAID\x10\x00\x12\x08\n\x04PAID\x10\x01\x12\x0b\n\x07\x45XPIRED\x10\x02\x42\t\n\x07_statusB\x08\n\x06_labelB\x0e\n\x0c_descriptionB\t\n\x07_bolt11B\t\n\x07_bolt12\"\xff\x01\n\x0cWaitSendpays\x12\x39\n\x06status\x18\x01 \x01(\x0e\x32$.cln.WaitSendpays.WaitSendpaysStatusH\x00\x88\x01\x01\x12\x13\n\x06partid\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x14\n\x07groupid\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12\x19\n\x0cpayment_hash\x18\x04 \x01(\x0cH\x03\x88\x01\x01\";\n\x12WaitSendpaysStatus\x12\x0b\n\x07PENDING\x10\x00\x12\n\n\x06\x46\x41ILED\x10\x01\x12\x0c\n\x08\x43OMPLETE\x10\x02\x42\t\n\x07_statusB\t\n\x07_partidB\n\n\x08_groupidB\x0f\n\r_payment_hash\"\x8c\x03\n\tWaitHtlcs\x12\"\n\x05state\x18\x01 \x01(\x0e\x32\x0e.cln.HtlcStateH\x00\x88\x01\x01\x12\x14\n\x07htlc_id\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x1d\n\x10short_channel_id\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x18\n\x0b\x63ltv_expiry\x18\x04 \x01(\rH\x03\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x04\x88\x01\x01\x12\x39\n\tdirection\x18\x06 \x01(\x0e\x32!.cln.WaitHtlcs.WaitHtlcsDirectionH\x05\x88\x01\x01\x12\x19\n\x0cpayment_hash\x18\x07 \x01(\x0cH\x06\x88\x01\x01\"%\n\x12WaitHtlcsDirection\x12\x07\n\x03OUT\x10\x00\x12\x06\n\x02IN\x10\x01\x42\x08\n\x06_stateB\n\n\x08_htlc_idB\x13\n\x11_short_channel_idB\x0e\n\x0c_cltv_expiryB\x0e\n\x0c_amount_msatB\x0c\n\n_directionB\x0f\n\r_payment_hash\"d\n\x0eWaitChainmoves\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12 \n\x0b\x63redit_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\x1f\n\ndebit_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\"f\n\x10WaitChannelmoves\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12 \n\x0b\x63redit_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\x1f\n\ndebit_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\"\x89\x02\n\x11WaitNetworkevents\x12\x1a\n\rcreated_index\x18\x01 \x01(\x04H\x00\x88\x01\x01\x12\x44\n\titem_type\x18\x02 \x01(\x0e\x32,.cln.WaitNetworkevents.WaitNetworkeventsTypeH\x01\x88\x01\x01\x12\x14\n\x07peer_id\x18\x03 \x01(\x0cH\x02\x88\x01\x01\"P\n\x15WaitNetworkeventsType\x12\x0b\n\x07\x43ONNECT\x10\x00\x12\x10\n\x0c\x43ONNECT_FAIL\x10\x01\x12\x08\n\x04PING\x10\x02\x12\x0e\n\nDISCONNECT\x10\x03\x42\x10\n\x0e_created_indexB\x0c\n\n_item_typeB\n\n\x08_peer_id\"\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\"P\n\x13ListconfigsResponse\x12-\n\x07\x63onfigs\x18\x01 \x01(\x0b\x32\x17.cln.ListconfigsConfigsH\x00\x88\x01\x01\x42\n\n\x08_configs\"\xe9.\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\x12L\n\x14tor_service_password\x18\x42 \x01(\x0b\x32).cln.ListconfigsConfigsTorservicepasswordH@\x88\x01\x01\x12\x46\n\x11\x61nnounce_addr_dns\x18\x43 \x01(\x0b\x32&.cln.ListconfigsConfigsAnnounceaddrdnsHA\x88\x01\x01\x12T\n\x18require_confirmed_inputs\x18\x44 \x01(\x0b\x32-.cln.ListconfigsConfigsRequireconfirmedinputsHB\x88\x01\x01\x12\x39\n\ncommit_fee\x18\x45 \x01(\x0b\x32 .cln.ListconfigsConfigsCommitfeeHC\x88\x01\x01\x12N\n\x15\x63ommit_feerate_offset\x18\x46 \x01(\x0b\x32*.cln.ListconfigsConfigsCommitfeerateoffsetHD\x88\x01\x01\x12T\n\x18\x61utoconnect_seeker_peers\x18G \x01(\x0b\x32-.cln.ListconfigsConfigsAutoconnectseekerpeersHE\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\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_offsetB\x1b\n\x19_autoconnect_seeker_peers\"\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\"\x80\x02\n(ListconfigsConfigsAnnounceaddrdiscovered\x12q\n\tvalue_str\x18\x01 \x01(\x0e\x32^.cln.ListconfigsConfigsAnnounceaddrdiscovered.ListconfigsConfigsAnnounceaddrdiscoveredValueStr\x12\x0e\n\x06source\x18\x02 \x01(\t\"Q\n0ListconfigsConfigsAnnounceaddrdiscoveredValueStr\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$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\"M\n(ListconfigsConfigsAutoconnectseekerpeers\x12\x11\n\tvalue_int\x18\x01 \x01(\r\x12\x0e\n\x06source\x18\x02 \x01(\t\"\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\"P\n\x17\x42kprchannelsapyResponse\x12\x35\n\x0c\x63hannels_apy\x18\x01 \x03(\x0b\x32\x1f.cln.BkprchannelsapyChannelsApy\"\xf9\x06\n\x1a\x42kprchannelsapyChannelsApy\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\"\xd4\x01\n\x19\x42kprdumpincomecsvResponse\x12\x10\n\x08\x63sv_file\x18\x01 \x01(\t\x12M\n\ncsv_format\x18\x02 \x01(\x0e\x32\x39.cln.BkprdumpincomecsvResponse.BkprdumpincomecsvCsvFormat\"V\n\x1a\x42kprdumpincomecsvCsvFormat\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\"P\n\x16\x42kprlistincomeResponse\x12\x36\n\rincome_events\x18\x01 \x03(\x0b\x32\x1f.cln.BkprlistincomeIncomeEvents\"\xb4\x02\n\x1a\x42kprlistincomeIncomeEvents\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\"P\n%BkpreditdescriptionbypaymentidRequest\x12\x12\n\npayment_id\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\"e\n&BkpreditdescriptionbypaymentidResponse\x12;\n\x07updated\x18\x01 \x03(\x0b\x32*.cln.BkpreditdescriptionbypaymentidUpdated\"\xa3\x05\n%BkpreditdescriptionbypaymentidUpdated\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12g\n\titem_type\x18\x02 \x01(\x0e\x32T.cln.BkpreditdescriptionbypaymentidUpdated.BkpreditdescriptionbypaymentidUpdatedType\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\x13\n\x0b\x64\x65scription\x18\x08 \x01(\t\x12\x15\n\x08outpoint\x18\t \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x62lockheight\x18\n \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06origin\x18\x0b \x01(\tH\x02\x88\x01\x01\x12\x17\n\npayment_id\x18\x0c \x01(\x0cH\x03\x88\x01\x01\x12\x11\n\x04txid\x18\r \x01(\x0cH\x04\x88\x01\x01\x12#\n\tfees_msat\x18\x0e \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x19\n\x0cis_rebalance\x18\x0f \x01(\x08H\x06\x88\x01\x01\x12\x14\n\x07part_id\x18\x10 \x01(\rH\x07\x88\x01\x01\"C\n)BkpreditdescriptionbypaymentidUpdatedType\x12\t\n\x05\x43HAIN\x10\x00\x12\x0b\n\x07\x43HANNEL\x10\x01\x42\x0b\n\t_outpointB\x0e\n\x0c_blockheightB\t\n\x07_originB\r\n\x0b_payment_idB\x07\n\x05_txidB\x0c\n\n_fees_msatB\x0f\n\r_is_rebalanceB\n\n\x08_part_id\"M\n$BkpreditdescriptionbyoutpointRequest\x12\x10\n\x08outpoint\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\"c\n%BkpreditdescriptionbyoutpointResponse\x12:\n\x07updated\x18\x01 \x03(\x0b\x32).cln.BkpreditdescriptionbyoutpointUpdated\"\x9f\x05\n$BkpreditdescriptionbyoutpointUpdated\x12\x0f\n\x07\x61\x63\x63ount\x18\x01 \x01(\t\x12\x65\n\titem_type\x18\x02 \x01(\x0e\x32R.cln.BkpreditdescriptionbyoutpointUpdated.BkpreditdescriptionbyoutpointUpdatedType\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\x13\n\x0b\x64\x65scription\x18\x08 \x01(\t\x12\x15\n\x08outpoint\x18\t \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x62lockheight\x18\n \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06origin\x18\x0b \x01(\tH\x02\x88\x01\x01\x12\x17\n\npayment_id\x18\x0c \x01(\x0cH\x03\x88\x01\x01\x12\x11\n\x04txid\x18\r \x01(\x0cH\x04\x88\x01\x01\x12#\n\tfees_msat\x18\x0e \x01(\x0b\x32\x0b.cln.AmountH\x05\x88\x01\x01\x12\x19\n\x0cis_rebalance\x18\x0f \x01(\x08H\x06\x88\x01\x01\x12\x14\n\x07part_id\x18\x10 \x01(\rH\x07\x88\x01\x01\"B\n(BkpreditdescriptionbyoutpointUpdatedType\x12\t\n\x05\x43HAIN\x10\x00\x12\x0b\n\x07\x43HANNEL\x10\x01\x42\x0b\n\t_outpointB\x0e\n\x0c_blockheightB\t\n\x07_originB\r\n\x0b_payment_idB\x07\n\x05_txidB\x0c\n\n_fees_msatB\x0f\n\r_is_rebalanceB\n\n\x08_part_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\x12\x13\n\x06relist\x18\x03 \x01(\x08H\x02\x88\x01\x01\x42\x08\n\x06_startB\x06\n\x04_endB\t\n\x07_relist\"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\"B\n\x17\x41skreneunreserveRequest\x12\'\n\x04path\x18\x01 \x03(\x0b\x32\x19.cln.AskreneunreservePath\"\x1a\n\x18\x41skreneunreserveResponse\"\x92\x01\n\x14\x41skreneunreservePath\x12 \n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12!\n\x14short_channel_id_dir\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x12\n\x05layer\x18\x05 \x01(\tH\x01\x88\x01\x01\x42\x17\n\x15_short_channel_id_dirB\x08\n\x06_layer\"8\n\x18\x41skrenelistlayersRequest\x12\x12\n\x05layer\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_layer\"I\n\x19\x41skrenelistlayersResponse\x12,\n\x06layers\x18\x01 \x03(\x0b\x32\x1c.cln.AskrenelistlayersLayers\"\xbe\x03\n\x17\x41skrenelistlayersLayers\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x16\n\x0e\x64isabled_nodes\x18\x02 \x03(\x0c\x12\x45\n\x10\x63reated_channels\x18\x03 \x03(\x0b\x32+.cln.AskrenelistlayersLayersCreatedChannels\x12<\n\x0b\x63onstraints\x18\x04 \x03(\x0b\x32\'.cln.AskrenelistlayersLayersConstraints\x12\x17\n\npersistent\x18\x05 \x01(\x08H\x00\x88\x01\x01\x12\x19\n\x11\x64isabled_channels\x18\x06 \x03(\t\x12\x43\n\x0f\x63hannel_updates\x18\x07 \x03(\x0b\x32*.cln.AskrenelistlayersLayersChannelUpdates\x12\x32\n\x06\x62iases\x18\x08 \x03(\x0b\x32\".cln.AskrenelistlayersLayersBiases\x12;\n\x0bnode_biases\x18\t \x03(\x0b\x32&.cln.AskrenelistlayersLayersNodeBiasesB\r\n\x0b_persistent\"\x8b\x01\n&AskrenelistlayersLayersCreatedChannels\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\"\n\rcapacity_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\"\xa8\x03\n%AskrenelistlayersLayersChannelUpdates\x12\x1c\n\x14short_channel_id_dir\x18\x01 \x01(\t\x12\x14\n\x07\x65nabled\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12+\n\x11htlc_minimum_msat\x18\x03 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12+\n\x11htlc_maximum_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12\'\n\rfee_base_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12(\n\x1b\x66\x65\x65_proportional_millionths\x18\x06 \x01(\rH\x04\x88\x01\x01\x12\x1e\n\x11\x63ltv_expiry_delta\x18\x07 \x01(\rH\x05\x88\x01\x01\x42\n\n\x08_enabledB\x14\n\x12_htlc_minimum_msatB\x14\n\x12_htlc_maximum_msatB\x10\n\x0e_fee_base_msatB\x1e\n\x1c_fee_proportional_millionthsB\x14\n\x12_cltv_expiry_delta\"\xf8\x01\n\"AskrenelistlayersLayersConstraints\x12&\n\x0cmaximum_msat\x18\x03 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12&\n\x0cminimum_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12!\n\x14short_channel_id_dir\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x16\n\ttimestamp\x18\x06 \x01(\x04H\x03\x88\x01\x01\x42\x0f\n\r_maximum_msatB\x0f\n\r_minimum_msatB\x17\n\x15_short_channel_id_dirB\x0c\n\n_timestamp\"\x9b\x01\n\x1d\x41skrenelistlayersLayersBiases\x12\x1c\n\x14short_channel_id_dir\x18\x01 \x01(\t\x12\x0c\n\x04\x62ias\x18\x02 \x01(\x12\x12\x18\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x16\n\ttimestamp\x18\x04 \x01(\x04H\x01\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0c\n\n_timestamp\"\x91\x01\n!AskrenelistlayersLayersNodeBiases\x12\x0c\n\x04node\x18\x01 \x01(\x0c\x12\x0f\n\x07in_bias\x18\x02 \x01(\x12\x12\x10\n\x08out_bias\x18\x03 \x01(\x12\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x11\n\ttimestamp\x18\x05 \x01(\x04\x42\x0e\n\x0c_description\"R\n\x19\x41skrenecreatelayerRequest\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x17\n\npersistent\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\r\n\x0b_persistent\"K\n\x1a\x41skrenecreatelayerResponse\x12-\n\x06layers\x18\x01 \x03(\x0b\x32\x1d.cln.AskrenecreatelayerLayers\"\xb0\x03\n\x18\x41skrenecreatelayerLayers\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12\x16\n\x0e\x64isabled_nodes\x18\x03 \x03(\x0c\x12\x19\n\x11\x64isabled_channels\x18\x04 \x03(\t\x12\x46\n\x10\x63reated_channels\x18\x05 \x03(\x0b\x32,.cln.AskrenecreatelayerLayersCreatedChannels\x12\x44\n\x0f\x63hannel_updates\x18\x06 \x03(\x0b\x32+.cln.AskrenecreatelayerLayersChannelUpdates\x12=\n\x0b\x63onstraints\x18\x07 \x03(\x0b\x32(.cln.AskrenecreatelayerLayersConstraints\x12\x33\n\x06\x62iases\x18\x08 \x03(\x0b\x32#.cln.AskrenecreatelayerLayersBiases\x12<\n\x0bnode_biases\x18\t \x03(\x0b\x32\'.cln.AskrenecreatelayerLayersNodeBiases\"\x8c\x01\n\'AskrenecreatelayerLayersCreatedChannels\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\"\n\rcapacity_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\"\xd1\x02\n&AskrenecreatelayerLayersChannelUpdates\x12+\n\x11htlc_minimum_msat\x18\x01 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12+\n\x11htlc_maximum_msat\x18\x02 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12\'\n\rfee_base_msat\x18\x03 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12(\n\x1b\x66\x65\x65_proportional_millionths\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x12\n\x05\x64\x65lay\x18\x05 \x01(\rH\x04\x88\x01\x01\x42\x14\n\x12_htlc_minimum_msatB\x14\n\x12_htlc_maximum_msatB\x10\n\x0e_fee_base_msatB\x1e\n\x1c_fee_proportional_millionthsB\x08\n\x06_delay\"\xc4\x01\n#AskrenecreatelayerLayersConstraints\x12\x18\n\x10short_channel_id\x18\x01 \x01(\t\x12\x11\n\tdirection\x18\x02 \x01(\r\x12&\n\x0cmaximum_msat\x18\x03 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12&\n\x0cminimum_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x42\x0f\n\r_maximum_msatB\x0f\n\r_minimum_msat\"\x9c\x01\n\x1e\x41skrenecreatelayerLayersBiases\x12\x1c\n\x14short_channel_id_dir\x18\x01 \x01(\t\x12\x0c\n\x04\x62ias\x18\x02 \x01(\x12\x12\x18\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x16\n\ttimestamp\x18\x04 \x01(\x04H\x01\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0c\n\n_timestamp\"\x92\x01\n\"AskrenecreatelayerLayersNodeBiases\x12\x0c\n\x04node\x18\x01 \x01(\x0c\x12\x0f\n\x07in_bias\x18\x02 \x01(\x12\x12\x10\n\x08out_bias\x18\x03 \x01(\x12\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x11\n\ttimestamp\x18\x05 \x01(\x04\x42\x0e\n\x0c_description\"*\n\x19\x41skreneremovelayerRequest\x12\r\n\x05layer\x18\x01 \x01(\t\"\x1c\n\x1a\x41skreneremovelayerResponse\">\n\x15\x41skrenereserveRequest\x12%\n\x04path\x18\x01 \x03(\x0b\x32\x17.cln.AskrenereservePath\"\x18\n\x16\x41skrenereserveResponse\"\x90\x01\n\x12\x41skrenereservePath\x12 \n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12!\n\x14short_channel_id_dir\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x12\n\x05layer\x18\x05 \x01(\tH\x01\x88\x01\x01\x42\x17\n\x15_short_channel_id_dirB\x08\n\x06_layer\"2\n\x11\x41skreneageRequest\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x0e\n\x06\x63utoff\x18\x02 \x01(\x04\"8\n\x12\x41skreneageResponse\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x13\n\x0bnum_removed\x18\x02 \x01(\x04\"\xfb\x01\n\x10GetroutesRequest\x12\x0e\n\x06source\x18\x01 \x01(\x0c\x12\x13\n\x0b\x64\x65stination\x18\x02 \x01(\x0c\x12 \n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12\x0e\n\x06layers\x18\x04 \x03(\t\x12 \n\x0bmaxfee_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\x12\x17\n\nfinal_cltv\x18\x07 \x01(\rH\x00\x88\x01\x01\x12\x15\n\x08maxdelay\x18\x08 \x01(\rH\x01\x88\x01\x01\x12\x15\n\x08maxparts\x18\t \x01(\rH\x02\x88\x01\x01\x42\r\n\x0b_final_cltvB\x0b\n\t_maxdelayB\x0b\n\t_maxparts\"R\n\x11GetroutesResponse\x12\x17\n\x0fprobability_ppm\x18\x01 \x01(\x04\x12$\n\x06routes\x18\x02 \x03(\x0b\x32\x14.cln.GetroutesRoutes\"\x9c\x01\n\x0fGetroutesRoutes\x12\x17\n\x0fprobability_ppm\x18\x01 \x01(\x04\x12 \n\x0b\x61mount_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12&\n\x04path\x18\x03 \x03(\x0b\x32\x18.cln.GetroutesRoutesPath\x12\x17\n\nfinal_cltv\x18\x04 \x01(\rH\x00\x88\x01\x01\x42\r\n\x0b_final_cltv\"\x98\x01\n\x13GetroutesRoutesPath\x12 \n\x0b\x61mount_msat\x18\x03 \x01(\x0b\x32\x0b.cln.Amount\x12\x14\n\x0cnext_node_id\x18\x04 \x01(\x0c\x12\r\n\x05\x64\x65lay\x18\x05 \x01(\r\x12!\n\x14short_channel_id_dir\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x17\n\x15_short_channel_id_dir\"8\n\x19\x41skrenedisablenodeRequest\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x0c\n\x04node\x18\x02 \x01(\x0c\"\x1c\n\x1a\x41skrenedisablenodeResponse\"\xcd\x02\n\x1b\x41skreneinformchannelRequest\x12\r\n\x05layer\x18\x01 \x01(\t\x12!\n\x14short_channel_id_dir\x18\x06 \x01(\tH\x00\x88\x01\x01\x12%\n\x0b\x61mount_msat\x18\x07 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12P\n\x06inform\x18\x08 \x01(\x0e\x32;.cln.AskreneinformchannelRequest.AskreneinformchannelInformH\x02\x88\x01\x01\"O\n\x1a\x41skreneinformchannelInform\x12\x0f\n\x0b\x43ONSTRAINED\x10\x00\x12\x11\n\rUNCONSTRAINED\x10\x01\x12\r\n\tSUCCEEDED\x10\x02\x42\x17\n\x15_short_channel_id_dirB\x0e\n\x0c_amount_msatB\t\n\x07_inform\"Y\n\x1c\x41skreneinformchannelResponse\x12\x39\n\x0b\x63onstraints\x18\x02 \x03(\x0b\x32$.cln.AskreneinformchannelConstraints\"\xd3\x01\n\x1f\x41skreneinformchannelConstraints\x12\x1c\n\x14short_channel_id_dir\x18\x01 \x01(\t\x12\r\n\x05layer\x18\x02 \x01(\t\x12\x11\n\ttimestamp\x18\x03 \x01(\x04\x12&\n\x0cmaximum_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x00\x88\x01\x01\x12&\n\x0cminimum_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x42\x0f\n\r_maximum_msatB\x0f\n\r_minimum_msat\"\x8f\x01\n\x1b\x41skrenecreatechannelRequest\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\x0c\x12\x13\n\x0b\x64\x65stination\x18\x03 \x01(\x0c\x12\x18\n\x10short_channel_id\x18\x04 \x01(\t\x12\"\n\rcapacity_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\"\x1e\n\x1c\x41skrenecreatechannelResponse\"\xad\x03\n\x1b\x41skreneupdatechannelRequest\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x1c\n\x14short_channel_id_dir\x18\x02 \x01(\t\x12\x14\n\x07\x65nabled\x18\x03 \x01(\x08H\x00\x88\x01\x01\x12+\n\x11htlc_minimum_msat\x18\x04 \x01(\x0b\x32\x0b.cln.AmountH\x01\x88\x01\x01\x12+\n\x11htlc_maximum_msat\x18\x05 \x01(\x0b\x32\x0b.cln.AmountH\x02\x88\x01\x01\x12\'\n\rfee_base_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12(\n\x1b\x66\x65\x65_proportional_millionths\x18\x07 \x01(\rH\x04\x88\x01\x01\x12\x1e\n\x11\x63ltv_expiry_delta\x18\x08 \x01(\rH\x05\x88\x01\x01\x42\n\n\x08_enabledB\x14\n\x12_htlc_minimum_msatB\x14\n\x12_htlc_maximum_msatB\x10\n\x0e_fee_base_msatB\x1e\n\x1c_fee_proportional_millionthsB\x14\n\x12_cltv_expiry_delta\"\x1e\n\x1c\x41skreneupdatechannelResponse\"\xa4\x01\n\x19\x41skrenebiaschannelRequest\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x1c\n\x14short_channel_id_dir\x18\x02 \x01(\t\x12\x0c\n\x04\x62ias\x18\x03 \x01(\x12\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08relative\x18\x05 \x01(\x08H\x01\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0b\n\t_relative\"K\n\x1a\x41skrenebiaschannelResponse\x12-\n\x06\x62iases\x18\x01 \x03(\x0b\x32\x1d.cln.AskrenebiaschannelBiases\"\xa5\x01\n\x18\x41skrenebiaschannelBiases\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x1c\n\x14short_channel_id_dir\x18\x02 \x01(\t\x12\x0c\n\x04\x62ias\x18\x03 \x01(\x12\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x16\n\ttimestamp\x18\x05 \x01(\x04H\x01\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0c\n\n_timestamp\"\xa4\x01\n\x16\x41skrenebiasnodeRequest\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x0c\n\x04node\x18\x02 \x01(\x0c\x12\x11\n\tdirection\x18\x03 \x01(\t\x12\x0c\n\x04\x62ias\x18\x04 \x01(\x12\x12\x18\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08relative\x18\x06 \x01(\x08H\x01\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0b\n\t_relative\"N\n\x17\x41skrenebiasnodeResponse\x12\x33\n\x0bnode_biases\x18\x01 \x03(\x0b\x32\x1e.cln.AskrenebiasnodeNodeBiases\"\x98\x01\n\x19\x41skrenebiasnodeNodeBiases\x12\r\n\x05layer\x18\x01 \x01(\t\x12\x0c\n\x04node\x18\x02 \x01(\x0c\x12\x0f\n\x07in_bias\x18\x03 \x01(\x12\x12\x10\n\x08out_bias\x18\x04 \x01(\x12\x12\x18\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x11\n\ttimestamp\x18\x06 \x01(\x04\x42\x0e\n\x0c_description\" \n\x1e\x41skrenelistreservationsRequest\"a\n\x1f\x41skrenelistreservationsResponse\x12>\n\x0creservations\x18\x01 \x03(\x0b\x32(.cln.AskrenelistreservationsReservations\"\x91\x01\n#AskrenelistreservationsReservations\x12\x1c\n\x14short_channel_id_dir\x18\x01 \x01(\t\x12 \n\x0b\x61mount_msat\x18\x02 \x01(\x0b\x32\x0b.cln.Amount\x12\x16\n\x0e\x61ge_in_seconds\x18\x03 \x01(\x04\x12\x12\n\ncommand_id\x18\x04 \x01(\t\"\xcb\x02\n\x19InjectpaymentonionRequest\x12\r\n\x05onion\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\x12\x13\n\x0b\x63ltv_expiry\x18\x04 \x01(\r\x12\x0e\n\x06partid\x18\x05 \x01(\x04\x12\x0f\n\x07groupid\x18\x06 \x01(\x04\x12\x12\n\x05label\x18\x07 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tinvstring\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\rlocalinvreqid\x18\t \x01(\x0cH\x02\x88\x01\x01\x12*\n\x10\x64\x65stination_msat\x18\n \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x42\x08\n\x06_labelB\x0c\n\n_invstringB\x10\n\x0e_localinvreqidB\x13\n\x11_destination_msat\"w\n\x1aInjectpaymentonionResponse\x12\x12\n\ncreated_at\x18\x01 \x01(\x04\x12\x14\n\x0c\x63ompleted_at\x18\x02 \x01(\x04\x12\x15\n\rcreated_index\x18\x03 \x01(\x04\x12\x18\n\x10payment_preimage\x18\x04 \x01(\x0c\">\n\x19InjectonionmessageRequest\x12\x10\n\x08path_key\x18\x01 \x01(\x0c\x12\x0f\n\x07message\x18\x02 \x01(\x0c\"\x1c\n\x1aInjectonionmessageResponse\"\xbf\x02\n\x0bXpayRequest\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\x0e\n\x06layers\x18\x04 \x03(\t\x12\x16\n\tretry_for\x18\x05 \x01(\rH\x02\x88\x01\x01\x12&\n\x0cpartial_msat\x18\x06 \x01(\x0b\x32\x0b.cln.AmountH\x03\x88\x01\x01\x12\x15\n\x08maxdelay\x18\x07 \x01(\rH\x04\x88\x01\x01\x12\x17\n\npayer_note\x18\x08 \x01(\tH\x05\x88\x01\x01\x42\x0e\n\x0c_amount_msatB\t\n\x07_maxfeeB\x0c\n\n_retry_forB\x0f\n\r_partial_msatB\x0b\n\t_maxdelayB\r\n\x0b_payer_note\"\xa1\x01\n\x0cXpayResponse\x12\x18\n\x10payment_preimage\x18\x01 \x01(\x0c\x12\x14\n\x0c\x66\x61iled_parts\x18\x02 \x01(\x04\x12\x18\n\x10successful_parts\x18\x03 \x01(\x04\x12 \n\x0b\x61mount_msat\x18\x04 \x01(\x0b\x32\x0b.cln.Amount\x12%\n\x10\x61mount_sent_msat\x18\x05 \x01(\x0b\x32\x0b.cln.Amount\"=\n\x19SignmessagewithkeyRequest\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\"`\n\x1aSignmessagewithkeyResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x0e\n\x06pubkey\x18\x02 \x01(\x0c\x12\x11\n\tsignature\x18\x03 \x01(\x0c\x12\x0e\n\x06\x62\x61se64\x18\x04 \x01(\t\"\xcd\x01\n\x17ListchannelmovesRequest\x12\x46\n\x05index\x18\x01 \x01(\x0e\x32\x32.cln.ListchannelmovesRequest.ListchannelmovesIndexH\x00\x88\x01\x01\x12\x12\n\x05start\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x02\x88\x01\x01\"$\n\x15ListchannelmovesIndex\x12\x0b\n\x07\x43REATED\x10\x00\x42\x08\n\x06_indexB\x08\n\x06_startB\x08\n\x06_limit\"S\n\x18ListchannelmovesResponse\x12\x37\n\x0c\x63hannelmoves\x18\x01 \x03(\x0b\x32!.cln.ListchannelmovesChannelmoves\"\xa9\x04\n\x1cListchannelmovesChannelmoves\x12\x15\n\rcreated_index\x18\x01 \x01(\x04\x12\x12\n\naccount_id\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\x11\n\ttimestamp\x18\x05 \x01(\x04\x12]\n\x0bprimary_tag\x18\x06 \x01(\x0e\x32H.cln.ListchannelmovesChannelmoves.ListchannelmovesChannelmovesPrimaryTag\x12\x19\n\x0cpayment_hash\x18\x07 \x01(\x0cH\x00\x88\x01\x01\x12\x14\n\x07part_id\x18\x08 \x01(\x04H\x01\x88\x01\x01\x12\x15\n\x08group_id\x18\t \x01(\x04H\x02\x88\x01\x01\x12\x1e\n\tfees_msat\x18\n \x01(\x0b\x32\x0b.cln.Amount\"\x96\x01\n&ListchannelmovesChannelmovesPrimaryTag\x12\x0b\n\x07INVOICE\x10\x00\x12\n\n\x06ROUTED\x10\x01\x12\n\n\x06PUSHED\x10\x02\x12\r\n\tLEASE_FEE\x10\x03\x12\x14\n\x10\x43HANNEL_PROPOSED\x10\x04\x12\x0f\n\x0bPENALTY_ADJ\x10\x05\x12\x11\n\rJOURNAL_ENTRY\x10\x06\x42\x0f\n\r_payment_hashB\n\n\x08_part_idB\x0b\n\t_group_id\"\xc5\x01\n\x15ListchainmovesRequest\x12\x42\n\x05index\x18\x01 \x01(\x0e\x32..cln.ListchainmovesRequest.ListchainmovesIndexH\x00\x88\x01\x01\x12\x12\n\x05start\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x02\x88\x01\x01\"\"\n\x13ListchainmovesIndex\x12\x0b\n\x07\x43REATED\x10\x00\x42\x08\n\x06_indexB\x08\n\x06_startB\x08\n\x06_limit\"K\n\x16ListchainmovesResponse\x12\x31\n\nchainmoves\x18\x01 \x03(\x0b\x32\x1d.cln.ListchainmovesChainmoves\"\xd4\x06\n\x18ListchainmovesChainmoves\x12\x15\n\rcreated_index\x18\x01 \x01(\x04\x12\x12\n\naccount_id\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\x11\n\ttimestamp\x18\x05 \x01(\x04\x12U\n\x0bprimary_tag\x18\x06 \x01(\x0e\x32@.cln.ListchainmovesChainmoves.ListchainmovesChainmovesPrimaryTag\x12\x14\n\x07peer_id\x18\x08 \x01(\x0cH\x00\x88\x01\x01\x12 \n\x13originating_account\x18\t \x01(\tH\x01\x88\x01\x01\x12\x1a\n\rspending_txid\x18\n \x01(\x0cH\x02\x88\x01\x01\x12\x1b\n\x04utxo\x18\x0b \x01(\x0b\x32\r.cln.Outpoint\x12\x19\n\x0cpayment_hash\x18\x0c \x01(\x0cH\x03\x88\x01\x01\x12 \n\x0boutput_msat\x18\r \x01(\x0b\x32\x0b.cln.Amount\x12\x19\n\x0coutput_count\x18\x0e \x01(\rH\x04\x88\x01\x01\x12\x13\n\x0b\x62lockheight\x18\x0f \x01(\r\x12\x12\n\nextra_tags\x18\x10 \x03(\t\"\x95\x02\n\"ListchainmovesChainmovesPrimaryTag\x12\x0b\n\x07\x44\x45POSIT\x10\x00\x12\x0e\n\nWITHDRAWAL\x10\x01\x12\x0b\n\x07PENALTY\x10\x02\x12\x10\n\x0c\x43HANNEL_OPEN\x10\x03\x12\x11\n\rCHANNEL_CLOSE\x10\x04\x12\x11\n\rDELAYED_TO_US\x10\x05\x12\x0b\n\x07HTLC_TX\x10\x06\x12\x10\n\x0cHTLC_TIMEOUT\x10\x07\x12\x10\n\x0cHTLC_FULFILL\x10\x08\x12\r\n\tTO_WALLET\x10\t\x12\n\n\x06\x41NCHOR\x10\n\x12\x0b\n\x07TO_THEM\x10\x0b\x12\r\n\tPENALIZED\x10\x0c\x12\n\n\x06STOLEN\x10\r\x12\x0b\n\x07IGNORED\x10\x0e\x12\x0c\n\x08TO_MINER\x10\x0f\x42\n\n\x08_peer_idB\x16\n\x14_originating_accountB\x10\n\x0e_spending_txidB\x0f\n\r_payment_hashB\x0f\n\r_output_count\"\xe9\x01\n\x18ListnetworkeventsRequest\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12H\n\x05index\x18\x02 \x01(\x0e\x32\x34.cln.ListnetworkeventsRequest.ListnetworkeventsIndexH\x01\x88\x01\x01\x12\x12\n\x05start\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12\x12\n\x05limit\x18\x04 \x01(\rH\x03\x88\x01\x01\"%\n\x16ListnetworkeventsIndex\x12\x0b\n\x07\x43REATED\x10\x00\x42\x05\n\x03_idB\x08\n\x06_indexB\x08\n\x06_startB\x08\n\x06_limit\"W\n\x19ListnetworkeventsResponse\x12:\n\rnetworkevents\x18\x01 \x03(\x0b\x32#.cln.ListnetworkeventsNetworkevents\"\xf2\x01\n\x1eListnetworkeventsNetworkevents\x12\x15\n\rcreated_index\x18\x01 \x01(\x04\x12\x11\n\ttimestamp\x18\x02 \x01(\x04\x12\x0f\n\x07peer_id\x18\x03 \x01(\x0c\x12\x11\n\titem_type\x18\x04 \x01(\t\x12\x13\n\x06reason\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rduration_nsec\x18\x06 \x01(\x04H\x01\x88\x01\x01\x12\x1e\n\x11\x63onnect_attempted\x18\x07 \x01(\x08H\x02\x88\x01\x01\x42\t\n\x07_reasonB\x10\n\x0e_duration_nsecB\x14\n\x12_connect_attempted\"/\n\x16\x44\x65lnetworkeventRequest\x12\x15\n\rcreated_index\x18\x01 \x01(\x04\"\x19\n\x17\x44\x65lnetworkeventResponse\"\xf6\x01\n\x1a\x43lnrestregisterpathRequest\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x12\n\nrpc_method\x18\x02 \x01(\t\x12H\n\x11rune_restrictions\x18\x03 \x01(\x0b\x32(.cln.ClnrestregisterpathRuneRestrictionsH\x00\x88\x01\x01\x12\x1a\n\rrune_required\x18\x04 \x01(\x08H\x01\x88\x01\x01\x12\x18\n\x0bhttp_method\x18\x05 \x01(\tH\x02\x88\x01\x01\x42\x14\n\x12_rune_restrictionsB\x10\n\x0e_rune_requiredB\x0e\n\x0c_http_method\"\x1d\n\x1b\x43lnrestregisterpathResponse\"\xda\x01\n#ClnrestregisterpathRuneRestrictions\x12\x13\n\x06nodeid\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06method\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x44\n\x06params\x18\x03 \x03(\x0b\x32\x34.cln.ClnrestregisterpathRuneRestrictions.ParamsEntry\x1a-\n\x0bParamsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_nodeidB\t\n\x07_method\"\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\"\x9a\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\"c\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\x12\r\n\tWEBSOCKET\x10\x05\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\"\"\n StreamChannelStateChangedRequest\"\xc1\x03\n\x1f\x43hannelStateChangedNotification\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\x11\n\ttimestamp\x18\x04 \x01(\t\x12)\n\told_state\x18\x05 \x01(\x0e\x32\x11.cln.ChannelStateH\x01\x88\x01\x01\x12$\n\tnew_state\x18\x06 \x01(\x0e\x32\x11.cln.ChannelState\x12L\n\x05\x63\x61use\x18\x07 \x01(\x0e\x32=.cln.ChannelStateChangedNotification.ChannelStateChangedCause\x12\x14\n\x07message\x18\x08 \x01(\tH\x02\x88\x01\x01\"c\n\x18\x43hannelStateChangedCause\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\x13\n\x11_short_channel_idB\x0c\n\n_old_stateB\n\n\x08_message2\x82U\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\x66\n\x17GetEmergencyRecoverData\x12#.cln.GetemergencyrecoverdataRequest\x1a$.cln.GetemergencyrecoverdataResponse\"\x00\x12\x45\n\x0c\x45xposeSecret\x12\x18.cln.ExposesecretRequest\x1a\x19.cln.ExposesecretResponse\"\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\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\x42\n\x0b\x45nableOffer\x12\x17.cln.EnableofferRequest\x1a\x18.cln.EnableofferResponse\"\x00\x12?\n\nDisconnect\x12\x16.cln.DisconnectRequest\x1a\x17.cln.DisconnectResponse\"\x00\x12\x39\n\x08\x46\x65\x65rates\x12\x14.cln.FeeratesRequest\x1a\x15.cln.FeeratesResponse\"\x00\x12\x42\n\x0b\x46\x65tchBip353\x12\x17.cln.Fetchbip353Request\x1a\x18.cln.Fetchbip353Response\"\x00\x12\x45\n\x0c\x46\x65tchInvoice\x12\x18.cln.FetchinvoiceRequest\x1a\x19.cln.FetchinvoiceResponse\"\x00\x12\x63\n\x16\x43\x61ncelRecurringInvoice\x12\".cln.CancelrecurringinvoiceRequest\x1a#.cln.CancelrecurringinvoiceResponse\"\x00\x12T\n\x11\x46undChannelCancel\x12\x1d.cln.FundchannelCancelRequest\x1a\x1e.cln.FundchannelCancelResponse\"\x00\x12Z\n\x13\x46undChannelComplete\x12\x1f.cln.FundchannelCompleteRequest\x1a .cln.FundchannelCompleteResponse\"\x00\x12\x42\n\x0b\x46undChannel\x12\x17.cln.FundchannelRequest\x1a\x18.cln.FundchannelResponse\"\x00\x12Q\n\x10\x46undChannelStart\x12\x1c.cln.FundchannelStartRequest\x1a\x1d.cln.FundchannelStartResponse\"\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\x12H\n\rListAddresses\x12\x19.cln.ListaddressesRequest\x1a\x1a.cln.ListaddressesResponse\"\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\x12Q\n\x10OpenChannelAbort\x12\x1c.cln.OpenchannelAbortRequest\x1a\x1d.cln.OpenchannelAbortResponse\"\x00\x12N\n\x0fOpenChannelBump\x12\x1b.cln.OpenchannelBumpRequest\x1a\x1c.cln.OpenchannelBumpResponse\"\x00\x12N\n\x0fOpenChannelInit\x12\x1b.cln.OpenchannelInitRequest\x1a\x1c.cln.OpenchannelInitResponse\"\x00\x12T\n\x11OpenChannelSigned\x12\x1d.cln.OpenchannelSignedRequest\x1a\x1e.cln.OpenchannelSignedResponse\"\x00\x12T\n\x11OpenChannelUpdate\x12\x1d.cln.OpenchannelUpdateRequest\x1a\x1e.cln.OpenchannelUpdateResponse\"\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?\n\nSpliceInit\x12\x16.cln.SpliceInitRequest\x1a\x17.cln.SpliceInitResponse\"\x00\x12\x45\n\x0cSpliceSigned\x12\x18.cln.SpliceSignedRequest\x1a\x19.cln.SpliceSignedResponse\"\x00\x12\x45\n\x0cSpliceUpdate\x12\x18.cln.SpliceUpdateRequest\x1a\x19.cln.SpliceUpdateResponse\"\x00\x12<\n\tDevSplice\x12\x15.cln.DevspliceRequest\x1a\x16.cln.DevspliceResponse\"\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\x12{\n\x1e\x42kprEditDescriptionByPaymentId\x12*.cln.BkpreditdescriptionbypaymentidRequest\x1a+.cln.BkpreditdescriptionbypaymentidResponse\"\x00\x12x\n\x1d\x42kprEditDescriptionByOutpoint\x12).cln.BkpreditdescriptionbyoutpointRequest\x1a*.cln.BkpreditdescriptionbyoutpointResponse\"\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\x12Q\n\x10\x41skReneUnreserve\x12\x1c.cln.AskreneunreserveRequest\x1a\x1d.cln.AskreneunreserveResponse\"\x00\x12T\n\x11\x41skReneListLayers\x12\x1d.cln.AskrenelistlayersRequest\x1a\x1e.cln.AskrenelistlayersResponse\"\x00\x12W\n\x12\x41skReneCreateLayer\x12\x1e.cln.AskrenecreatelayerRequest\x1a\x1f.cln.AskrenecreatelayerResponse\"\x00\x12W\n\x12\x41skReneRemoveLayer\x12\x1e.cln.AskreneremovelayerRequest\x1a\x1f.cln.AskreneremovelayerResponse\"\x00\x12K\n\x0e\x41skReneReserve\x12\x1a.cln.AskrenereserveRequest\x1a\x1b.cln.AskrenereserveResponse\"\x00\x12?\n\nAskReneAge\x12\x16.cln.AskreneageRequest\x1a\x17.cln.AskreneageResponse\"\x00\x12<\n\tGetRoutes\x12\x15.cln.GetroutesRequest\x1a\x16.cln.GetroutesResponse\"\x00\x12W\n\x12\x41skReneDisableNode\x12\x1e.cln.AskrenedisablenodeRequest\x1a\x1f.cln.AskrenedisablenodeResponse\"\x00\x12]\n\x14\x41skReneInformChannel\x12 .cln.AskreneinformchannelRequest\x1a!.cln.AskreneinformchannelResponse\"\x00\x12]\n\x14\x41skReneCreateChannel\x12 .cln.AskrenecreatechannelRequest\x1a!.cln.AskrenecreatechannelResponse\"\x00\x12]\n\x14\x41skReneUpdateChannel\x12 .cln.AskreneupdatechannelRequest\x1a!.cln.AskreneupdatechannelResponse\"\x00\x12W\n\x12\x41skReneBiasChannel\x12\x1e.cln.AskrenebiaschannelRequest\x1a\x1f.cln.AskrenebiaschannelResponse\"\x00\x12N\n\x0f\x41skreneBiasNode\x12\x1b.cln.AskrenebiasnodeRequest\x1a\x1c.cln.AskrenebiasnodeResponse\"\x00\x12\x66\n\x17\x41skReneListReservations\x12#.cln.AskrenelistreservationsRequest\x1a$.cln.AskrenelistreservationsResponse\"\x00\x12W\n\x12InjectPaymentOnion\x12\x1e.cln.InjectpaymentonionRequest\x1a\x1f.cln.InjectpaymentonionResponse\"\x00\x12W\n\x12InjectOnionMessage\x12\x1e.cln.InjectonionmessageRequest\x1a\x1f.cln.InjectonionmessageResponse\"\x00\x12-\n\x04Xpay\x12\x10.cln.XpayRequest\x1a\x11.cln.XpayResponse\"\x00\x12W\n\x12SignMessageWithKey\x12\x1e.cln.SignmessagewithkeyRequest\x1a\x1f.cln.SignmessagewithkeyResponse\"\x00\x12Q\n\x10ListChannelMoves\x12\x1c.cln.ListchannelmovesRequest\x1a\x1d.cln.ListchannelmovesResponse\"\x00\x12K\n\x0eListChainMoves\x12\x1a.cln.ListchainmovesRequest\x1a\x1b.cln.ListchainmovesResponse\"\x00\x12T\n\x11ListNetworkEvents\x12\x1d.cln.ListnetworkeventsRequest\x1a\x1e.cln.ListnetworkeventsResponse\"\x00\x12N\n\x0f\x44\x65lNetworkEvent\x12\x1b.cln.DelnetworkeventRequest\x1a\x1c.cln.DelnetworkeventResponse\"\x00\x12Z\n\x13\x43lnrestRegisterPath\x12\x1f.cln.ClnrestregisterpathRequest\x1a .cln.ClnrestregisterpathResponse\"\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\x12o\n\x1cSubscribeChannelStateChanged\x12%.cln.StreamChannelStateChangedRequest\x1a$.cln.ChannelStateChangedNotification\"\x00\x30\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -471,753 +471,753 @@ _globals['_FEERATESRESPONSE']._serialized_start=42377 _globals['_FEERATESRESPONSE']._serialized_end=42659 _globals['_FEERATESPERKB']._serialized_start=42662 - _globals['_FEERATESPERKB']._serialized_end=43129 - _globals['_FEERATESPERKBESTIMATES']._serialized_start=43131 - _globals['_FEERATESPERKBESTIMATES']._serialized_end=43218 - _globals['_FEERATESPERKW']._serialized_start=43221 - _globals['_FEERATESPERKW']._serialized_end=43688 - _globals['_FEERATESPERKWESTIMATES']._serialized_start=43690 - _globals['_FEERATESPERKWESTIMATES']._serialized_end=43777 - _globals['_FEERATESONCHAINFEEESTIMATES']._serialized_start=43780 - _globals['_FEERATESONCHAINFEEESTIMATES']._serialized_end=44061 - _globals['_FETCHBIP353REQUEST']._serialized_start=44063 - _globals['_FETCHBIP353REQUEST']._serialized_end=44100 - _globals['_FETCHBIP353RESPONSE']._serialized_start=44102 - _globals['_FETCHBIP353RESPONSE']._serialized_end=44190 - _globals['_FETCHBIP353INSTRUCTIONS']._serialized_start=44193 - _globals['_FETCHBIP353INSTRUCTIONS']._serialized_end=44440 - _globals['_FETCHINVOICEREQUEST']._serialized_start=44443 - _globals['_FETCHINVOICEREQUEST']._serialized_end=44884 - _globals['_FETCHINVOICERESPONSE']._serialized_start=44887 - _globals['_FETCHINVOICERESPONSE']._serialized_end=45040 - _globals['_FETCHINVOICECHANGES']._serialized_start=45043 - _globals['_FETCHINVOICECHANGES']._serialized_end=45301 - _globals['_FETCHINVOICENEXTPERIOD']._serialized_start=45303 - _globals['_FETCHINVOICENEXTPERIOD']._serialized_end=45428 - _globals['_CANCELRECURRINGINVOICEREQUEST']._serialized_start=45431 - _globals['_CANCELRECURRINGINVOICEREQUEST']._serialized_end=45655 - _globals['_CANCELRECURRINGINVOICERESPONSE']._serialized_start=45657 - _globals['_CANCELRECURRINGINVOICERESPONSE']._serialized_end=45705 - _globals['_FUNDCHANNELCANCELREQUEST']._serialized_start=45707 - _globals['_FUNDCHANNELCANCELREQUEST']._serialized_end=45745 - _globals['_FUNDCHANNELCANCELRESPONSE']._serialized_start=45747 - _globals['_FUNDCHANNELCANCELRESPONSE']._serialized_end=45793 - _globals['_FUNDCHANNELCOMPLETEREQUEST']._serialized_start=45795 - _globals['_FUNDCHANNELCOMPLETEREQUEST']._serialized_end=45885 - _globals['_FUNDCHANNELCOMPLETERESPONSE']._serialized_start=45887 - _globals['_FUNDCHANNELCOMPLETERESPONSE']._serialized_end=45965 - _globals['_FUNDCHANNELREQUEST']._serialized_start=45968 - _globals['_FUNDCHANNELREQUEST']._serialized_end=46475 - _globals['_FUNDCHANNELRESPONSE']._serialized_start=46478 - _globals['_FUNDCHANNELRESPONSE']._serialized_end=46706 - _globals['_FUNDCHANNELCHANNELTYPE']._serialized_start=46708 - _globals['_FUNDCHANNELCHANNELTYPE']._serialized_end=46783 - _globals['_FUNDCHANNELSTARTREQUEST']._serialized_start=46786 - _globals['_FUNDCHANNELSTARTREQUEST']._serialized_end=47128 - _globals['_FUNDCHANNELSTARTRESPONSE']._serialized_start=47131 - _globals['_FUNDCHANNELSTARTRESPONSE']._serialized_end=47377 - _globals['_FUNDCHANNELSTARTCHANNELTYPE']._serialized_start=47379 - _globals['_FUNDCHANNELSTARTCHANNELTYPE']._serialized_end=47459 - _globals['_GETLOGREQUEST']._serialized_start=47462 - _globals['_GETLOGREQUEST']._serialized_end=47619 - _globals['_GETLOGREQUEST_GETLOGLEVEL']._serialized_start=47531 - _globals['_GETLOGREQUEST_GETLOGLEVEL']._serialized_end=47609 - _globals['_GETLOGRESPONSE']._serialized_start=47621 - _globals['_GETLOGRESPONSE']._serialized_end=47725 - _globals['_GETLOGLOG']._serialized_start=47728 - _globals['_GETLOGLOG']._serialized_end=48088 - _globals['_GETLOGLOG_GETLOGLOGTYPE']._serialized_start=47915 - _globals['_GETLOGLOG_GETLOGLOGTYPE']._serialized_end=48023 - _globals['_FUNDERUPDATEREQUEST']._serialized_start=48091 - _globals['_FUNDERUPDATEREQUEST']._serialized_end=49204 - _globals['_FUNDERUPDATEREQUEST_FUNDERUPDATEPOLICY']._serialized_start=48785 - _globals['_FUNDERUPDATEREQUEST_FUNDERUPDATEPOLICY']._serialized_end=48842 - _globals['_FUNDERUPDATERESPONSE']._serialized_start=49207 - _globals['_FUNDERUPDATERESPONSE']._serialized_end=50070 - _globals['_FUNDERUPDATERESPONSE_FUNDERUPDATEPOLICY']._serialized_start=48785 - _globals['_FUNDERUPDATERESPONSE_FUNDERUPDATEPOLICY']._serialized_end=48842 - _globals['_GETROUTEREQUEST']._serialized_start=50073 - _globals['_GETROUTEREQUEST']._serialized_end=50309 - _globals['_GETROUTERESPONSE']._serialized_start=50311 - _globals['_GETROUTERESPONSE']._serialized_end=50364 - _globals['_GETROUTEROUTE']._serialized_start=50367 - _globals['_GETROUTEROUTE']._serialized_end=50564 - _globals['_GETROUTEROUTE_GETROUTEROUTESTYLE']._serialized_start=50535 - _globals['_GETROUTEROUTE_GETROUTEROUTESTYLE']._serialized_end=50564 - _globals['_LISTADDRESSESREQUEST']._serialized_start=50566 - _globals['_LISTADDRESSESREQUEST']._serialized_end=50682 - _globals['_LISTADDRESSESRESPONSE']._serialized_start=50684 - _globals['_LISTADDRESSESRESPONSE']._serialized_end=50755 - _globals['_LISTADDRESSESADDRESSES']._serialized_start=50757 - _globals['_LISTADDRESSESADDRESSES']._serialized_end=50857 - _globals['_LISTFORWARDSREQUEST']._serialized_start=50860 - _globals['_LISTFORWARDSREQUEST']._serialized_end=51299 - _globals['_LISTFORWARDSREQUEST_LISTFORWARDSSTATUS']._serialized_start=51104 - _globals['_LISTFORWARDSREQUEST_LISTFORWARDSSTATUS']._serialized_end=51180 - _globals['_LISTFORWARDSREQUEST_LISTFORWARDSINDEX']._serialized_start=51182 - _globals['_LISTFORWARDSREQUEST_LISTFORWARDSINDEX']._serialized_end=51227 - _globals['_LISTFORWARDSRESPONSE']._serialized_start=51301 - _globals['_LISTFORWARDSRESPONSE']._serialized_end=51368 - _globals['_LISTFORWARDSFORWARDS']._serialized_start=51371 - _globals['_LISTFORWARDSFORWARDS']._serialized_end=52191 - _globals['_LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTATUS']._serialized_start=51892 - _globals['_LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTATUS']._serialized_end=51976 - _globals['_LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTYLE']._serialized_start=51978 - _globals['_LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTYLE']._serialized_end=52026 - _globals['_LISTOFFERSREQUEST']._serialized_start=52193 - _globals['_LISTOFFERSREQUEST']._serialized_end=52290 - _globals['_LISTOFFERSRESPONSE']._serialized_start=52292 - _globals['_LISTOFFERSRESPONSE']._serialized_end=52351 - _globals['_LISTOFFERSOFFERS']._serialized_start=52354 - _globals['_LISTOFFERSOFFERS']._serialized_end=52528 - _globals['_LISTPAYSREQUEST']._serialized_start=52531 - _globals['_LISTPAYSREQUEST']._serialized_end=52919 - _globals['_LISTPAYSREQUEST_LISTPAYSSTATUS']._serialized_start=52752 - _globals['_LISTPAYSREQUEST_LISTPAYSSTATUS']._serialized_end=52807 - _globals['_LISTPAYSREQUEST_LISTPAYSINDEX']._serialized_start=52809 - _globals['_LISTPAYSREQUEST_LISTPAYSINDEX']._serialized_end=52850 - _globals['_LISTPAYSRESPONSE']._serialized_start=52921 - _globals['_LISTPAYSRESPONSE']._serialized_end=52972 - _globals['_LISTPAYSPAYS']._serialized_start=52975 - _globals['_LISTPAYSPAYS']._serialized_end=53706 - _globals['_LISTPAYSPAYS_LISTPAYSPAYSSTATUS']._serialized_start=53445 - _globals['_LISTPAYSPAYS_LISTPAYSPAYSSTATUS']._serialized_end=53504 - _globals['_LISTHTLCSREQUEST']._serialized_start=53709 - _globals['_LISTHTLCSREQUEST']._serialized_end=53923 - _globals['_LISTHTLCSREQUEST_LISTHTLCSINDEX']._serialized_start=53844 - _globals['_LISTHTLCSREQUEST_LISTHTLCSINDEX']._serialized_end=53886 - _globals['_LISTHTLCSRESPONSE']._serialized_start=53925 - _globals['_LISTHTLCSRESPONSE']._serialized_end=53980 - _globals['_LISTHTLCSHTLCS']._serialized_start=53983 - _globals['_LISTHTLCSHTLCS']._serialized_end=54340 - _globals['_LISTHTLCSHTLCS_LISTHTLCSHTLCSDIRECTION']._serialized_start=54262 - _globals['_LISTHTLCSHTLCS_LISTHTLCSHTLCSDIRECTION']._serialized_end=54304 - _globals['_MULTIFUNDCHANNELREQUEST']._serialized_start=54343 - _globals['_MULTIFUNDCHANNELREQUEST']._serialized_end=54649 - _globals['_MULTIFUNDCHANNELRESPONSE']._serialized_start=54652 - _globals['_MULTIFUNDCHANNELRESPONSE']._serialized_end=54803 - _globals['_MULTIFUNDCHANNELDESTINATIONS']._serialized_start=54806 - _globals['_MULTIFUNDCHANNELDESTINATIONS']._serialized_end=55189 - _globals['_MULTIFUNDCHANNELCHANNELIDS']._serialized_start=55192 - _globals['_MULTIFUNDCHANNELCHANNELIDS']._serialized_end=55392 - _globals['_MULTIFUNDCHANNELCHANNELIDSCHANNELTYPE']._serialized_start=55394 - _globals['_MULTIFUNDCHANNELCHANNELIDSCHANNELTYPE']._serialized_end=55484 - _globals['_MULTIFUNDCHANNELFAILED']._serialized_start=55487 - _globals['_MULTIFUNDCHANNELFAILED']._serialized_end=55762 - _globals['_MULTIFUNDCHANNELFAILED_MULTIFUNDCHANNELFAILEDMETHOD']._serialized_start=55648 - _globals['_MULTIFUNDCHANNELFAILED_MULTIFUNDCHANNELFAILEDMETHOD']._serialized_end=55762 - _globals['_MULTIFUNDCHANNELFAILEDERROR']._serialized_start=55764 - _globals['_MULTIFUNDCHANNELFAILEDERROR']._serialized_end=55824 - _globals['_MULTIWITHDRAWREQUEST']._serialized_start=55827 - _globals['_MULTIWITHDRAWREQUEST']._serialized_end=55995 - _globals['_MULTIWITHDRAWRESPONSE']._serialized_start=55997 - _globals['_MULTIWITHDRAWRESPONSE']._serialized_end=56046 - _globals['_OFFERREQUEST']._serialized_start=56049 - _globals['_OFFERREQUEST']._serialized_end=56635 - _globals['_OFFERRESPONSE']._serialized_start=56638 - _globals['_OFFERRESPONSE']._serialized_end=56784 - _globals['_OPENCHANNELABORTREQUEST']._serialized_start=56786 - _globals['_OPENCHANNELABORTREQUEST']._serialized_end=56831 - _globals['_OPENCHANNELABORTRESPONSE']._serialized_start=56833 - _globals['_OPENCHANNELABORTRESPONSE']._serialized_end=56921 - _globals['_OPENCHANNELBUMPREQUEST']._serialized_start=56924 - _globals['_OPENCHANNELBUMPREQUEST']._serialized_end=57082 - _globals['_OPENCHANNELBUMPRESPONSE']._serialized_start=57085 - _globals['_OPENCHANNELBUMPRESPONSE']._serialized_end=57344 - _globals['_OPENCHANNELBUMPCHANNELTYPE']._serialized_start=57346 - _globals['_OPENCHANNELBUMPCHANNELTYPE']._serialized_end=57425 - _globals['_OPENCHANNELINITREQUEST']._serialized_start=57428 - _globals['_OPENCHANNELINITREQUEST']._serialized_end=57843 - _globals['_OPENCHANNELINITRESPONSE']._serialized_start=57846 - _globals['_OPENCHANNELINITRESPONSE']._serialized_end=58105 - _globals['_OPENCHANNELINITCHANNELTYPE']._serialized_start=58107 - _globals['_OPENCHANNELINITCHANNELTYPE']._serialized_end=58186 - _globals['_OPENCHANNELSIGNEDREQUEST']._serialized_start=58188 - _globals['_OPENCHANNELSIGNEDREQUEST']._serialized_end=58255 - _globals['_OPENCHANNELSIGNEDRESPONSE']._serialized_start=58257 - _globals['_OPENCHANNELSIGNEDRESPONSE']._serialized_end=58330 - _globals['_OPENCHANNELUPDATEREQUEST']._serialized_start=58332 - _globals['_OPENCHANNELUPDATEREQUEST']._serialized_end=58392 - _globals['_OPENCHANNELUPDATERESPONSE']._serialized_start=58395 - _globals['_OPENCHANNELUPDATERESPONSE']._serialized_end=58694 - _globals['_OPENCHANNELUPDATECHANNELTYPE']._serialized_start=58696 - _globals['_OPENCHANNELUPDATECHANNELTYPE']._serialized_end=58777 - _globals['_PINGREQUEST']._serialized_start=58779 - _globals['_PINGREQUEST']._serialized_end=58868 - _globals['_PINGRESPONSE']._serialized_start=58870 - _globals['_PINGRESPONSE']._serialized_end=58900 - _globals['_PLUGINREQUEST']._serialized_start=58903 - _globals['_PLUGINREQUEST']._serialized_end=59048 - _globals['_PLUGINRESPONSE']._serialized_start=59050 - _globals['_PLUGINRESPONSE']._serialized_end=59175 - _globals['_PLUGINPLUGINS']._serialized_start=59177 - _globals['_PLUGINPLUGINS']._serialized_end=59239 - _globals['_RENEPAYSTATUSREQUEST']._serialized_start=59241 - _globals['_RENEPAYSTATUSREQUEST']._serialized_end=59301 - _globals['_RENEPAYSTATUSRESPONSE']._serialized_start=59303 - _globals['_RENEPAYSTATUSRESPONSE']._serialized_end=59374 - _globals['_RENEPAYSTATUSPAYSTATUS']._serialized_start=59377 - _globals['_RENEPAYSTATUSPAYSTATUS']._serialized_end=59859 - _globals['_RENEPAYSTATUSPAYSTATUS_RENEPAYSTATUSPAYSTATUSSTATUS']._serialized_start=59722 - _globals['_RENEPAYSTATUSPAYSTATUS_RENEPAYSTATUSPAYSTATUSSTATUS']._serialized_end=59791 - _globals['_RENEPAYREQUEST']._serialized_start=59862 - _globals['_RENEPAYREQUEST']._serialized_end=60208 - _globals['_RENEPAYRESPONSE']._serialized_start=60211 - _globals['_RENEPAYRESPONSE']._serialized_end=60632 - _globals['_RENEPAYRESPONSE_RENEPAYSTATUS']._serialized_start=60528 - _globals['_RENEPAYRESPONSE_RENEPAYSTATUS']._serialized_end=60582 - _globals['_RESERVEINPUTSREQUEST']._serialized_start=60634 - _globals['_RESERVEINPUTSREQUEST']._serialized_end=60742 - _globals['_RESERVEINPUTSRESPONSE']._serialized_start=60744 - _globals['_RESERVEINPUTSRESPONSE']._serialized_end=60821 - _globals['_RESERVEINPUTSRESERVATIONS']._serialized_start=60823 - _globals['_RESERVEINPUTSRESERVATIONS']._serialized_end=60945 - _globals['_SENDCUSTOMMSGREQUEST']._serialized_start=60947 - _globals['_SENDCUSTOMMSGREQUEST']._serialized_end=60999 - _globals['_SENDCUSTOMMSGRESPONSE']._serialized_start=61001 - _globals['_SENDCUSTOMMSGRESPONSE']._serialized_end=61040 - _globals['_SENDINVOICEREQUEST']._serialized_start=61043 - _globals['_SENDINVOICEREQUEST']._serialized_end=61219 - _globals['_SENDINVOICERESPONSE']._serialized_start=61222 - _globals['_SENDINVOICERESPONSE']._serialized_end=61813 - _globals['_SENDINVOICERESPONSE_SENDINVOICESTATUS']._serialized_start=61624 - _globals['_SENDINVOICERESPONSE_SENDINVOICESTATUS']._serialized_end=61678 - _globals['_SETCHANNELREQUEST']._serialized_start=61816 - _globals['_SETCHANNELREQUEST']._serialized_end=62114 - _globals['_SETCHANNELRESPONSE']._serialized_start=62116 - _globals['_SETCHANNELRESPONSE']._serialized_end=62179 - _globals['_SETCHANNELCHANNELS']._serialized_start=62182 - _globals['_SETCHANNELCHANNELS']._serialized_end=62640 - _globals['_SETCONFIGREQUEST']._serialized_start=62642 - _globals['_SETCONFIGREQUEST']._serialized_end=62740 - _globals['_SETCONFIGRESPONSE']._serialized_start=62742 - _globals['_SETCONFIGRESPONSE']._serialized_end=62799 - _globals['_SETCONFIGCONFIG']._serialized_start=62802 - _globals['_SETCONFIGCONFIG']._serialized_end=63095 - _globals['_SETPSBTVERSIONREQUEST']._serialized_start=63097 - _globals['_SETPSBTVERSIONREQUEST']._serialized_end=63151 - _globals['_SETPSBTVERSIONRESPONSE']._serialized_start=63153 - _globals['_SETPSBTVERSIONRESPONSE']._serialized_end=63191 - _globals['_SIGNINVOICEREQUEST']._serialized_start=63193 - _globals['_SIGNINVOICEREQUEST']._serialized_end=63232 - _globals['_SIGNINVOICERESPONSE']._serialized_start=63234 - _globals['_SIGNINVOICERESPONSE']._serialized_end=63271 - _globals['_SIGNMESSAGEREQUEST']._serialized_start=63273 - _globals['_SIGNMESSAGEREQUEST']._serialized_end=63310 - _globals['_SIGNMESSAGERESPONSE']._serialized_start=63312 - _globals['_SIGNMESSAGERESPONSE']._serialized_end=63382 - _globals['_SPLICEINITREQUEST']._serialized_start=63385 - _globals['_SPLICEINITREQUEST']._serialized_end=63585 - _globals['_SPLICEINITRESPONSE']._serialized_start=63587 - _globals['_SPLICEINITRESPONSE']._serialized_end=63621 - _globals['_SPLICESIGNEDREQUEST']._serialized_start=63623 - _globals['_SPLICESIGNEDREQUEST']._serialized_end=63718 - _globals['_SPLICESIGNEDRESPONSE']._serialized_start=63720 - _globals['_SPLICESIGNEDRESPONSE']._serialized_end=63814 - _globals['_SPLICEUPDATEREQUEST']._serialized_start=63816 - _globals['_SPLICEUPDATEREQUEST']._serialized_end=63871 - _globals['_SPLICEUPDATERESPONSE']._serialized_start=63873 - _globals['_SPLICEUPDATERESPONSE']._serialized_end=63994 - _globals['_DEVSPLICEREQUEST']._serialized_start=63997 - _globals['_DEVSPLICEREQUEST']._serialized_end=64195 - _globals['_DEVSPLICERESPONSE']._serialized_start=64198 - _globals['_DEVSPLICERESPONSE']._serialized_end=64326 - _globals['_UNRESERVEINPUTSREQUEST']._serialized_start=64328 - _globals['_UNRESERVEINPUTSREQUEST']._serialized_end=64400 - _globals['_UNRESERVEINPUTSRESPONSE']._serialized_start=64402 - _globals['_UNRESERVEINPUTSRESPONSE']._serialized_end=64483 - _globals['_UNRESERVEINPUTSRESERVATIONS']._serialized_start=64486 - _globals['_UNRESERVEINPUTSRESERVATIONS']._serialized_end=64637 - _globals['_UPGRADEWALLETREQUEST']._serialized_start=64639 - _globals['_UPGRADEWALLETREQUEST']._serialized_end=64749 - _globals['_UPGRADEWALLETRESPONSE']._serialized_start=64752 - _globals['_UPGRADEWALLETRESPONSE']._serialized_end=64901 - _globals['_WAITBLOCKHEIGHTREQUEST']._serialized_start=64903 - _globals['_WAITBLOCKHEIGHTREQUEST']._serialized_end=64982 - _globals['_WAITBLOCKHEIGHTRESPONSE']._serialized_start=64984 - _globals['_WAITBLOCKHEIGHTRESPONSE']._serialized_end=65030 - _globals['_WAITREQUEST']._serialized_start=65033 - _globals['_WAITREQUEST']._serialized_end=65346 - _globals['_WAITREQUEST_WAITSUBSYSTEM']._serialized_start=65169 - _globals['_WAITREQUEST_WAITSUBSYSTEM']._serialized_end=65290 - _globals['_WAITREQUEST_WAITINDEXNAME']._serialized_start=65292 - _globals['_WAITREQUEST_WAITINDEXNAME']._serialized_end=65346 - _globals['_WAITRESPONSE']._serialized_start=65349 - _globals['_WAITRESPONSE']._serialized_end=66101 - _globals['_WAITRESPONSE_WAITSUBSYSTEM']._serialized_start=65169 - _globals['_WAITRESPONSE_WAITSUBSYSTEM']._serialized_end=65290 - _globals['_WAITFORWARDS']._serialized_start=66104 - _globals['_WAITFORWARDS']._serialized_end=66435 - _globals['_WAITFORWARDS_WAITFORWARDSSTATUS']._serialized_start=66290 - _globals['_WAITFORWARDS_WAITFORWARDSSTATUS']._serialized_end=66366 - _globals['_WAITINVOICES']._serialized_start=66438 - _globals['_WAITINVOICES']._serialized_end=66715 - _globals['_WAITINVOICES_WAITINVOICESSTATUS']._serialized_start=66601 - _globals['_WAITINVOICES_WAITINVOICESSTATUS']._serialized_end=66656 - _globals['_WAITSENDPAYS']._serialized_start=66718 - _globals['_WAITSENDPAYS']._serialized_end=66973 - _globals['_WAITSENDPAYS_WAITSENDPAYSSTATUS']._serialized_start=66863 - _globals['_WAITSENDPAYS_WAITSENDPAYSSTATUS']._serialized_end=66922 - _globals['_WAITHTLCS']._serialized_start=66976 - _globals['_WAITHTLCS']._serialized_end=67372 - _globals['_WAITHTLCS_WAITHTLCSDIRECTION']._serialized_start=67229 - _globals['_WAITHTLCS_WAITHTLCSDIRECTION']._serialized_end=67266 - _globals['_WAITCHAINMOVES']._serialized_start=67374 - _globals['_WAITCHAINMOVES']._serialized_end=67474 - _globals['_WAITCHANNELMOVES']._serialized_start=67476 - _globals['_WAITCHANNELMOVES']._serialized_end=67578 - _globals['_WAITNETWORKEVENTS']._serialized_start=67581 - _globals['_WAITNETWORKEVENTS']._serialized_end=67846 - _globals['_WAITNETWORKEVENTS_WAITNETWORKEVENTSTYPE']._serialized_start=67722 - _globals['_WAITNETWORKEVENTS_WAITNETWORKEVENTSTYPE']._serialized_end=67802 - _globals['_WAITDETAILS']._serialized_start=67849 - _globals['_WAITDETAILS']._serialized_end=68485 - _globals['_WAITDETAILS_WAITDETAILSSTATUS']._serialized_start=68191 - _globals['_WAITDETAILS_WAITDETAILSSTATUS']._serialized_end=68328 - _globals['_LISTCONFIGSREQUEST']._serialized_start=68487 - _globals['_LISTCONFIGSREQUEST']._serialized_end=68539 - _globals['_LISTCONFIGSRESPONSE']._serialized_start=68541 - _globals['_LISTCONFIGSRESPONSE']._serialized_end=68621 - _globals['_LISTCONFIGSCONFIGS']._serialized_start=68624 - _globals['_LISTCONFIGSCONFIGS']._serialized_end=74617 - _globals['_LISTCONFIGSCONFIGSCONF']._serialized_start=74620 - _globals['_LISTCONFIGSCONFIGSCONF']._serialized_end=74782 - _globals['_LISTCONFIGSCONFIGSCONF_LISTCONFIGSCONFIGSCONFSOURCE']._serialized_start=74739 - _globals['_LISTCONFIGSCONFIGSCONF_LISTCONFIGSCONFIGSCONFSOURCE']._serialized_end=74782 - _globals['_LISTCONFIGSCONFIGSDEVELOPER']._serialized_start=74784 - _globals['_LISTCONFIGSCONFIGSDEVELOPER']._serialized_end=74842 - _globals['_LISTCONFIGSCONFIGSCLEARPLUGINS']._serialized_start=74844 - _globals['_LISTCONFIGSCONFIGSCLEARPLUGINS']._serialized_end=74905 - _globals['_LISTCONFIGSCONFIGSDISABLEMPP']._serialized_start=74907 - _globals['_LISTCONFIGSCONFIGSDISABLEMPP']._serialized_end=74998 - _globals['_LISTCONFIGSCONFIGSMAINNET']._serialized_start=75000 - _globals['_LISTCONFIGSCONFIGSMAINNET']._serialized_end=75056 - _globals['_LISTCONFIGSCONFIGSREGTEST']._serialized_start=75058 - _globals['_LISTCONFIGSCONFIGSREGTEST']._serialized_end=75114 - _globals['_LISTCONFIGSCONFIGSSIGNET']._serialized_start=75116 - _globals['_LISTCONFIGSCONFIGSSIGNET']._serialized_end=75171 - _globals['_LISTCONFIGSCONFIGSTESTNET']._serialized_start=75173 - _globals['_LISTCONFIGSCONFIGSTESTNET']._serialized_end=75229 - _globals['_LISTCONFIGSCONFIGSIMPORTANTPLUGIN']._serialized_start=75231 - _globals['_LISTCONFIGSCONFIGSIMPORTANTPLUGIN']._serialized_end=75303 - _globals['_LISTCONFIGSCONFIGSPLUGIN']._serialized_start=75305 - _globals['_LISTCONFIGSCONFIGSPLUGIN']._serialized_end=75368 - _globals['_LISTCONFIGSCONFIGSPLUGINDIR']._serialized_start=75370 - _globals['_LISTCONFIGSCONFIGSPLUGINDIR']._serialized_end=75436 - _globals['_LISTCONFIGSCONFIGSLIGHTNINGDIR']._serialized_start=75438 - _globals['_LISTCONFIGSCONFIGSLIGHTNINGDIR']._serialized_end=75505 - _globals['_LISTCONFIGSCONFIGSNETWORK']._serialized_start=75507 - _globals['_LISTCONFIGSCONFIGSNETWORK']._serialized_end=75569 - _globals['_LISTCONFIGSCONFIGSALLOWDEPRECATEDAPIS']._serialized_start=75571 - _globals['_LISTCONFIGSCONFIGSALLOWDEPRECATEDAPIS']._serialized_end=75646 - _globals['_LISTCONFIGSCONFIGSRPCFILE']._serialized_start=75648 - _globals['_LISTCONFIGSCONFIGSRPCFILE']._serialized_end=75710 - _globals['_LISTCONFIGSCONFIGSDISABLEPLUGIN']._serialized_start=75712 - _globals['_LISTCONFIGSCONFIGSDISABLEPLUGIN']._serialized_end=75782 - _globals['_LISTCONFIGSCONFIGSALWAYSUSEPROXY']._serialized_start=75784 - _globals['_LISTCONFIGSCONFIGSALWAYSUSEPROXY']._serialized_end=75854 - _globals['_LISTCONFIGSCONFIGSDAEMON']._serialized_start=75856 - _globals['_LISTCONFIGSCONFIGSDAEMON']._serialized_end=75911 - _globals['_LISTCONFIGSCONFIGSWALLET']._serialized_start=75913 - _globals['_LISTCONFIGSCONFIGSWALLET']._serialized_end=75974 - _globals['_LISTCONFIGSCONFIGSLARGECHANNELS']._serialized_start=75976 - _globals['_LISTCONFIGSCONFIGSLARGECHANNELS']._serialized_end=76038 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALDUALFUND']._serialized_start=76040 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALDUALFUND']._serialized_end=76109 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALSPLICING']._serialized_start=76111 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALSPLICING']._serialized_end=76180 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALONIONMESSAGES']._serialized_start=76182 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALONIONMESSAGES']._serialized_end=76256 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALOFFERS']._serialized_start=76258 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALOFFERS']._serialized_end=76325 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALSHUTDOWNWRONGFUNDING']._serialized_start=76327 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALSHUTDOWNWRONGFUNDING']._serialized_end=76408 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALPEERSTORAGE']._serialized_start=76410 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALPEERSTORAGE']._serialized_end=76482 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALANCHORS']._serialized_start=76484 - _globals['_LISTCONFIGSCONFIGSEXPERIMENTALANCHORS']._serialized_end=76552 - _globals['_LISTCONFIGSCONFIGSDATABASEUPGRADE']._serialized_start=76554 - _globals['_LISTCONFIGSCONFIGSDATABASEUPGRADE']._serialized_end=76625 - _globals['_LISTCONFIGSCONFIGSRGB']._serialized_start=76627 - _globals['_LISTCONFIGSCONFIGSRGB']._serialized_end=76685 - _globals['_LISTCONFIGSCONFIGSALIAS']._serialized_start=76687 - _globals['_LISTCONFIGSCONFIGSALIAS']._serialized_end=76747 - _globals['_LISTCONFIGSCONFIGSPIDFILE']._serialized_start=76749 - _globals['_LISTCONFIGSCONFIGSPIDFILE']._serialized_end=76811 - _globals['_LISTCONFIGSCONFIGSIGNOREFEELIMITS']._serialized_start=76813 - _globals['_LISTCONFIGSCONFIGSIGNOREFEELIMITS']._serialized_end=76884 - _globals['_LISTCONFIGSCONFIGSWATCHTIMEBLOCKS']._serialized_start=76886 - _globals['_LISTCONFIGSCONFIGSWATCHTIMEBLOCKS']._serialized_end=76956 - _globals['_LISTCONFIGSCONFIGSMAXLOCKTIMEBLOCKS']._serialized_start=76958 - _globals['_LISTCONFIGSCONFIGSMAXLOCKTIMEBLOCKS']._serialized_end=77030 - _globals['_LISTCONFIGSCONFIGSFUNDINGCONFIRMS']._serialized_start=77032 - _globals['_LISTCONFIGSCONFIGSFUNDINGCONFIRMS']._serialized_end=77102 - _globals['_LISTCONFIGSCONFIGSCLTVDELTA']._serialized_start=77104 - _globals['_LISTCONFIGSCONFIGSCLTVDELTA']._serialized_end=77168 - _globals['_LISTCONFIGSCONFIGSCLTVFINAL']._serialized_start=77170 - _globals['_LISTCONFIGSCONFIGSCLTVFINAL']._serialized_end=77234 - _globals['_LISTCONFIGSCONFIGSCOMMITTIME']._serialized_start=77236 - _globals['_LISTCONFIGSCONFIGSCOMMITTIME']._serialized_end=77301 - _globals['_LISTCONFIGSCONFIGSFEEBASE']._serialized_start=77303 - _globals['_LISTCONFIGSCONFIGSFEEBASE']._serialized_end=77365 - _globals['_LISTCONFIGSCONFIGSRESCAN']._serialized_start=77367 - _globals['_LISTCONFIGSCONFIGSRESCAN']._serialized_end=77428 - _globals['_LISTCONFIGSCONFIGSFEEPERSATOSHI']._serialized_start=77430 - _globals['_LISTCONFIGSCONFIGSFEEPERSATOSHI']._serialized_end=77498 - _globals['_LISTCONFIGSCONFIGSMAXCONCURRENTHTLCS']._serialized_start=77500 - _globals['_LISTCONFIGSCONFIGSMAXCONCURRENTHTLCS']._serialized_end=77573 - _globals['_LISTCONFIGSCONFIGSHTLCMINIMUMMSAT']._serialized_start=77575 - _globals['_LISTCONFIGSCONFIGSHTLCMINIMUMMSAT']._serialized_end=77659 - _globals['_LISTCONFIGSCONFIGSHTLCMAXIMUMMSAT']._serialized_start=77661 - _globals['_LISTCONFIGSCONFIGSHTLCMAXIMUMMSAT']._serialized_end=77745 - _globals['_LISTCONFIGSCONFIGSMAXDUSTHTLCEXPOSUREMSAT']._serialized_start=77747 - _globals['_LISTCONFIGSCONFIGSMAXDUSTHTLCEXPOSUREMSAT']._serialized_end=77839 - _globals['_LISTCONFIGSCONFIGSMINCAPACITYSAT']._serialized_start=77841 - _globals['_LISTCONFIGSCONFIGSMINCAPACITYSAT']._serialized_end=77944 - _globals['_LISTCONFIGSCONFIGSADDR']._serialized_start=77946 - _globals['_LISTCONFIGSCONFIGSADDR']._serialized_end=78007 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDR']._serialized_start=78009 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDR']._serialized_end=78078 - _globals['_LISTCONFIGSCONFIGSBINDADDR']._serialized_start=78080 - _globals['_LISTCONFIGSCONFIGSBINDADDR']._serialized_end=78145 - _globals['_LISTCONFIGSCONFIGSOFFLINE']._serialized_start=78147 - _globals['_LISTCONFIGSCONFIGSOFFLINE']._serialized_end=78203 - _globals['_LISTCONFIGSCONFIGSAUTOLISTEN']._serialized_start=78205 - _globals['_LISTCONFIGSCONFIGSAUTOLISTEN']._serialized_end=78271 - _globals['_LISTCONFIGSCONFIGSPROXY']._serialized_start=78273 - _globals['_LISTCONFIGSCONFIGSPROXY']._serialized_end=78333 - _globals['_LISTCONFIGSCONFIGSDISABLEDNS']._serialized_start=78335 - _globals['_LISTCONFIGSCONFIGSDISABLEDNS']._serialized_end=78394 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVERED']._serialized_start=78397 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVERED']._serialized_end=78653 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVERED_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVEREDVALUESTR']._serialized_start=78572 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVERED_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVEREDVALUESTR']._serialized_end=78653 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVEREDPORT']._serialized_start=78655 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVEREDPORT']._serialized_end=78736 - _globals['_LISTCONFIGSCONFIGSENCRYPTEDHSM']._serialized_start=78738 - _globals['_LISTCONFIGSCONFIGSENCRYPTEDHSM']._serialized_end=78799 - _globals['_LISTCONFIGSCONFIGSRPCFILEMODE']._serialized_start=78801 - _globals['_LISTCONFIGSCONFIGSRPCFILEMODE']._serialized_end=78867 - _globals['_LISTCONFIGSCONFIGSLOGLEVEL']._serialized_start=78869 - _globals['_LISTCONFIGSCONFIGSLOGLEVEL']._serialized_end=78932 - _globals['_LISTCONFIGSCONFIGSLOGPREFIX']._serialized_start=78934 - _globals['_LISTCONFIGSCONFIGSLOGPREFIX']._serialized_end=78998 - _globals['_LISTCONFIGSCONFIGSLOGFILE']._serialized_start=79000 - _globals['_LISTCONFIGSCONFIGSLOGFILE']._serialized_end=79064 - _globals['_LISTCONFIGSCONFIGSLOGTIMESTAMPS']._serialized_start=79066 - _globals['_LISTCONFIGSCONFIGSLOGTIMESTAMPS']._serialized_end=79135 - _globals['_LISTCONFIGSCONFIGSFORCEFEERATES']._serialized_start=79137 - _globals['_LISTCONFIGSCONFIGSFORCEFEERATES']._serialized_end=79205 - _globals['_LISTCONFIGSCONFIGSSUBDAEMON']._serialized_start=79207 - _globals['_LISTCONFIGSCONFIGSSUBDAEMON']._serialized_end=79273 - _globals['_LISTCONFIGSCONFIGSFETCHINVOICENOCONNECT']._serialized_start=79275 - _globals['_LISTCONFIGSCONFIGSFETCHINVOICENOCONNECT']._serialized_end=79377 - _globals['_LISTCONFIGSCONFIGSTORSERVICEPASSWORD']._serialized_start=79379 - _globals['_LISTCONFIGSCONFIGSTORSERVICEPASSWORD']._serialized_end=79452 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDNS']._serialized_start=79454 - _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDNS']._serialized_end=79525 - _globals['_LISTCONFIGSCONFIGSREQUIRECONFIRMEDINPUTS']._serialized_start=79527 - _globals['_LISTCONFIGSCONFIGSREQUIRECONFIRMEDINPUTS']._serialized_end=79605 - _globals['_LISTCONFIGSCONFIGSCOMMITFEE']._serialized_start=79607 - _globals['_LISTCONFIGSCONFIGSCOMMITFEE']._serialized_end=79671 - _globals['_LISTCONFIGSCONFIGSCOMMITFEERATEOFFSET']._serialized_start=79673 - _globals['_LISTCONFIGSCONFIGSCOMMITFEERATEOFFSET']._serialized_end=79747 - _globals['_LISTCONFIGSCONFIGSAUTOCONNECTSEEKERPEERS']._serialized_start=79749 - _globals['_LISTCONFIGSCONFIGSAUTOCONNECTSEEKERPEERS']._serialized_end=79826 - _globals['_STOPREQUEST']._serialized_start=79828 - _globals['_STOPREQUEST']._serialized_end=79841 - _globals['_STOPRESPONSE']._serialized_start=79843 - _globals['_STOPRESPONSE']._serialized_end=79956 - _globals['_STOPRESPONSE_STOPRESULT']._serialized_start=79910 - _globals['_STOPRESPONSE_STOPRESULT']._serialized_end=79945 - _globals['_HELPREQUEST']._serialized_start=79958 - _globals['_HELPREQUEST']._serialized_end=80005 - _globals['_HELPRESPONSE']._serialized_start=80008 - _globals['_HELPRESPONSE']._serialized_end=80157 - _globals['_HELPRESPONSE_HELPFORMATHINT']._serialized_start=80113 - _globals['_HELPRESPONSE_HELPFORMATHINT']._serialized_end=80141 - _globals['_HELPHELP']._serialized_start=80159 - _globals['_HELPHELP']._serialized_end=80186 - _globals['_PREAPPROVEKEYSENDREQUEST']._serialized_start=80188 - _globals['_PREAPPROVEKEYSENDREQUEST']._serialized_end=80291 - _globals['_PREAPPROVEKEYSENDRESPONSE']._serialized_start=80293 - _globals['_PREAPPROVEKEYSENDRESPONSE']._serialized_end=80320 - _globals['_PREAPPROVEINVOICEREQUEST']._serialized_start=80322 - _globals['_PREAPPROVEINVOICEREQUEST']._serialized_end=80364 - _globals['_PREAPPROVEINVOICERESPONSE']._serialized_start=80366 - _globals['_PREAPPROVEINVOICERESPONSE']._serialized_end=80393 - _globals['_STATICBACKUPREQUEST']._serialized_start=80395 - _globals['_STATICBACKUPREQUEST']._serialized_end=80416 - _globals['_STATICBACKUPRESPONSE']._serialized_start=80418 - _globals['_STATICBACKUPRESPONSE']._serialized_end=80453 - _globals['_BKPRCHANNELSAPYREQUEST']._serialized_start=80455 - _globals['_BKPRCHANNELSAPYREQUEST']._serialized_end=80555 - _globals['_BKPRCHANNELSAPYRESPONSE']._serialized_start=80557 - _globals['_BKPRCHANNELSAPYRESPONSE']._serialized_end=80637 - _globals['_BKPRCHANNELSAPYCHANNELSAPY']._serialized_start=80640 - _globals['_BKPRCHANNELSAPYCHANNELSAPY']._serialized_end=81529 - _globals['_BKPRDUMPINCOMECSVREQUEST']._serialized_start=81532 - _globals['_BKPRDUMPINCOMECSVREQUEST']._serialized_end=81742 - _globals['_BKPRDUMPINCOMECSVRESPONSE']._serialized_start=81745 - _globals['_BKPRDUMPINCOMECSVRESPONSE']._serialized_end=81957 - _globals['_BKPRDUMPINCOMECSVRESPONSE_BKPRDUMPINCOMECSVCSVFORMAT']._serialized_start=81871 - _globals['_BKPRDUMPINCOMECSVRESPONSE_BKPRDUMPINCOMECSVCSVFORMAT']._serialized_end=81957 - _globals['_BKPRINSPECTREQUEST']._serialized_start=81959 - _globals['_BKPRINSPECTREQUEST']._serialized_end=81996 - _globals['_BKPRINSPECTRESPONSE']._serialized_start=81998 - _globals['_BKPRINSPECTRESPONSE']._serialized_end=82053 - _globals['_BKPRINSPECTTXS']._serialized_start=82056 - _globals['_BKPRINSPECTTXS']._serialized_end=82210 - _globals['_BKPRINSPECTTXSOUTPUTS']._serialized_start=82213 - _globals['_BKPRINSPECTTXSOUTPUTS']._serialized_end=82657 - _globals['_BKPRLISTACCOUNTEVENTSREQUEST']._serialized_start=82659 - _globals['_BKPRLISTACCOUNTEVENTSREQUEST']._serialized_end=82763 - _globals['_BKPRLISTACCOUNTEVENTSRESPONSE']._serialized_start=82765 - _globals['_BKPRLISTACCOUNTEVENTSRESPONSE']._serialized_end=82846 - _globals['_BKPRLISTACCOUNTEVENTSEVENTS']._serialized_start=82849 - _globals['_BKPRLISTACCOUNTEVENTSEVENTS']._serialized_end=83522 - _globals['_BKPRLISTACCOUNTEVENTSEVENTS_BKPRLISTACCOUNTEVENTSEVENTSTYPE']._serialized_start=83325 - _globals['_BKPRLISTACCOUNTEVENTSEVENTS_BKPRLISTACCOUNTEVENTSEVENTSTYPE']._serialized_end=83399 - _globals['_BKPRLISTBALANCESREQUEST']._serialized_start=83524 - _globals['_BKPRLISTBALANCESREQUEST']._serialized_end=83549 - _globals['_BKPRLISTBALANCESRESPONSE']._serialized_start=83551 - _globals['_BKPRLISTBALANCESRESPONSE']._serialized_end=83626 - _globals['_BKPRLISTBALANCESACCOUNTS']._serialized_start=83629 - _globals['_BKPRLISTBALANCESACCOUNTS']._serialized_end=83955 - _globals['_BKPRLISTBALANCESACCOUNTSBALANCES']._serialized_start=83957 - _globals['_BKPRLISTBALANCESACCOUNTSBALANCES']._serialized_end=84045 - _globals['_BKPRLISTINCOMEREQUEST']._serialized_start=84048 - _globals['_BKPRLISTINCOMEREQUEST']._serialized_end=84199 - _globals['_BKPRLISTINCOMERESPONSE']._serialized_start=84201 - _globals['_BKPRLISTINCOMERESPONSE']._serialized_end=84281 - _globals['_BKPRLISTINCOMEINCOMEEVENTS']._serialized_start=84284 - _globals['_BKPRLISTINCOMEINCOMEEVENTS']._serialized_end=84592 - _globals['_BKPREDITDESCRIPTIONBYPAYMENTIDREQUEST']._serialized_start=84594 - _globals['_BKPREDITDESCRIPTIONBYPAYMENTIDREQUEST']._serialized_end=84674 - _globals['_BKPREDITDESCRIPTIONBYPAYMENTIDRESPONSE']._serialized_start=84676 - _globals['_BKPREDITDESCRIPTIONBYPAYMENTIDRESPONSE']._serialized_end=84777 - _globals['_BKPREDITDESCRIPTIONBYPAYMENTIDUPDATED']._serialized_start=84780 - _globals['_BKPREDITDESCRIPTIONBYPAYMENTIDUPDATED']._serialized_end=85455 - _globals['_BKPREDITDESCRIPTIONBYPAYMENTIDUPDATED_BKPREDITDESCRIPTIONBYPAYMENTIDUPDATEDTYPE']._serialized_start=85281 - _globals['_BKPREDITDESCRIPTIONBYPAYMENTIDUPDATED_BKPREDITDESCRIPTIONBYPAYMENTIDUPDATEDTYPE']._serialized_end=85348 - _globals['_BKPREDITDESCRIPTIONBYOUTPOINTREQUEST']._serialized_start=85457 - _globals['_BKPREDITDESCRIPTIONBYOUTPOINTREQUEST']._serialized_end=85534 - _globals['_BKPREDITDESCRIPTIONBYOUTPOINTRESPONSE']._serialized_start=85536 - _globals['_BKPREDITDESCRIPTIONBYOUTPOINTRESPONSE']._serialized_end=85635 - _globals['_BKPREDITDESCRIPTIONBYOUTPOINTUPDATED']._serialized_start=85638 - _globals['_BKPREDITDESCRIPTIONBYOUTPOINTUPDATED']._serialized_end=86309 - _globals['_BKPREDITDESCRIPTIONBYOUTPOINTUPDATED_BKPREDITDESCRIPTIONBYOUTPOINTUPDATEDTYPE']._serialized_start=86136 - _globals['_BKPREDITDESCRIPTIONBYOUTPOINTUPDATED_BKPREDITDESCRIPTIONBYOUTPOINTUPDATEDTYPE']._serialized_end=86202 - _globals['_BLACKLISTRUNEREQUEST']._serialized_start=86311 - _globals['_BLACKLISTRUNEREQUEST']._serialized_end=86421 - _globals['_BLACKLISTRUNERESPONSE']._serialized_start=86423 - _globals['_BLACKLISTRUNERESPONSE']._serialized_end=86494 - _globals['_BLACKLISTRUNEBLACKLIST']._serialized_start=86496 - _globals['_BLACKLISTRUNEBLACKLIST']._serialized_end=86548 - _globals['_CHECKRUNEREQUEST']._serialized_start=86550 - _globals['_CHECKRUNEREQUEST']._serialized_end=86662 - _globals['_CHECKRUNERESPONSE']._serialized_start=86664 - _globals['_CHECKRUNERESPONSE']._serialized_end=86698 - _globals['_CREATERUNEREQUEST']._serialized_start=86700 - _globals['_CREATERUNEREQUEST']._serialized_end=86769 - _globals['_CREATERUNERESPONSE']._serialized_start=86771 - _globals['_CREATERUNERESPONSE']._serialized_end=86894 - _globals['_SHOWRUNESREQUEST']._serialized_start=86896 - _globals['_SHOWRUNESREQUEST']._serialized_end=86942 - _globals['_SHOWRUNESRESPONSE']._serialized_start=86944 - _globals['_SHOWRUNESRESPONSE']._serialized_end=86999 - _globals['_SHOWRUNESRUNES']._serialized_start=87002 - _globals['_SHOWRUNESRUNES']._serialized_end=87287 - _globals['_SHOWRUNESRUNESRESTRICTIONS']._serialized_start=87289 - _globals['_SHOWRUNESRUNESRESTRICTIONS']._serialized_end=87401 - _globals['_SHOWRUNESRUNESRESTRICTIONSALTERNATIVES']._serialized_start=87403 - _globals['_SHOWRUNESRUNESRESTRICTIONSALTERNATIVES']._serialized_end=87513 - _globals['_ASKRENEUNRESERVEREQUEST']._serialized_start=87515 - _globals['_ASKRENEUNRESERVEREQUEST']._serialized_end=87581 - _globals['_ASKRENEUNRESERVERESPONSE']._serialized_start=87583 - _globals['_ASKRENEUNRESERVERESPONSE']._serialized_end=87609 - _globals['_ASKRENEUNRESERVEPATH']._serialized_start=87612 - _globals['_ASKRENEUNRESERVEPATH']._serialized_end=87758 - _globals['_ASKRENELISTLAYERSREQUEST']._serialized_start=87760 - _globals['_ASKRENELISTLAYERSREQUEST']._serialized_end=87816 - _globals['_ASKRENELISTLAYERSRESPONSE']._serialized_start=87818 - _globals['_ASKRENELISTLAYERSRESPONSE']._serialized_end=87891 - _globals['_ASKRENELISTLAYERSLAYERS']._serialized_start=87894 - _globals['_ASKRENELISTLAYERSLAYERS']._serialized_end=88340 - _globals['_ASKRENELISTLAYERSLAYERSCREATEDCHANNELS']._serialized_start=88343 - _globals['_ASKRENELISTLAYERSLAYERSCREATEDCHANNELS']._serialized_end=88482 - _globals['_ASKRENELISTLAYERSLAYERSCHANNELUPDATES']._serialized_start=88485 - _globals['_ASKRENELISTLAYERSLAYERSCHANNELUPDATES']._serialized_end=88909 - _globals['_ASKRENELISTLAYERSLAYERSCONSTRAINTS']._serialized_start=88912 - _globals['_ASKRENELISTLAYERSLAYERSCONSTRAINTS']._serialized_end=89160 - _globals['_ASKRENELISTLAYERSLAYERSBIASES']._serialized_start=89163 - _globals['_ASKRENELISTLAYERSLAYERSBIASES']._serialized_end=89318 - _globals['_ASKRENELISTLAYERSLAYERSNODEBIASES']._serialized_start=89321 - _globals['_ASKRENELISTLAYERSLAYERSNODEBIASES']._serialized_end=89466 - _globals['_ASKRENECREATELAYERREQUEST']._serialized_start=89468 - _globals['_ASKRENECREATELAYERREQUEST']._serialized_end=89550 - _globals['_ASKRENECREATELAYERRESPONSE']._serialized_start=89552 - _globals['_ASKRENECREATELAYERRESPONSE']._serialized_end=89627 - _globals['_ASKRENECREATELAYERLAYERS']._serialized_start=89630 - _globals['_ASKRENECREATELAYERLAYERS']._serialized_end=90062 - _globals['_ASKRENECREATELAYERLAYERSCREATEDCHANNELS']._serialized_start=90065 - _globals['_ASKRENECREATELAYERLAYERSCREATEDCHANNELS']._serialized_end=90205 - _globals['_ASKRENECREATELAYERLAYERSCHANNELUPDATES']._serialized_start=90208 - _globals['_ASKRENECREATELAYERLAYERSCHANNELUPDATES']._serialized_end=90545 - _globals['_ASKRENECREATELAYERLAYERSCONSTRAINTS']._serialized_start=90548 - _globals['_ASKRENECREATELAYERLAYERSCONSTRAINTS']._serialized_end=90744 - _globals['_ASKRENECREATELAYERLAYERSBIASES']._serialized_start=90747 - _globals['_ASKRENECREATELAYERLAYERSBIASES']._serialized_end=90903 - _globals['_ASKRENECREATELAYERLAYERSNODEBIASES']._serialized_start=90906 - _globals['_ASKRENECREATELAYERLAYERSNODEBIASES']._serialized_end=91052 - _globals['_ASKRENEREMOVELAYERREQUEST']._serialized_start=91054 - _globals['_ASKRENEREMOVELAYERREQUEST']._serialized_end=91096 - _globals['_ASKRENEREMOVELAYERRESPONSE']._serialized_start=91098 - _globals['_ASKRENEREMOVELAYERRESPONSE']._serialized_end=91126 - _globals['_ASKRENERESERVEREQUEST']._serialized_start=91128 - _globals['_ASKRENERESERVEREQUEST']._serialized_end=91190 - _globals['_ASKRENERESERVERESPONSE']._serialized_start=91192 - _globals['_ASKRENERESERVERESPONSE']._serialized_end=91216 - _globals['_ASKRENERESERVEPATH']._serialized_start=91219 - _globals['_ASKRENERESERVEPATH']._serialized_end=91363 - _globals['_ASKRENEAGEREQUEST']._serialized_start=91365 - _globals['_ASKRENEAGEREQUEST']._serialized_end=91415 - _globals['_ASKRENEAGERESPONSE']._serialized_start=91417 - _globals['_ASKRENEAGERESPONSE']._serialized_end=91473 - _globals['_GETROUTESREQUEST']._serialized_start=91476 - _globals['_GETROUTESREQUEST']._serialized_end=91727 - _globals['_GETROUTESRESPONSE']._serialized_start=91729 - _globals['_GETROUTESRESPONSE']._serialized_end=91811 - _globals['_GETROUTESROUTES']._serialized_start=91814 - _globals['_GETROUTESROUTES']._serialized_end=91970 - _globals['_GETROUTESROUTESPATH']._serialized_start=91973 - _globals['_GETROUTESROUTESPATH']._serialized_end=92125 - _globals['_ASKRENEDISABLENODEREQUEST']._serialized_start=92127 - _globals['_ASKRENEDISABLENODEREQUEST']._serialized_end=92183 - _globals['_ASKRENEDISABLENODERESPONSE']._serialized_start=92185 - _globals['_ASKRENEDISABLENODERESPONSE']._serialized_end=92213 - _globals['_ASKRENEINFORMCHANNELREQUEST']._serialized_start=92216 - _globals['_ASKRENEINFORMCHANNELREQUEST']._serialized_end=92549 - _globals['_ASKRENEINFORMCHANNELREQUEST_ASKRENEINFORMCHANNELINFORM']._serialized_start=92418 - _globals['_ASKRENEINFORMCHANNELREQUEST_ASKRENEINFORMCHANNELINFORM']._serialized_end=92497 - _globals['_ASKRENEINFORMCHANNELRESPONSE']._serialized_start=92551 - _globals['_ASKRENEINFORMCHANNELRESPONSE']._serialized_end=92640 - _globals['_ASKRENEINFORMCHANNELCONSTRAINTS']._serialized_start=92643 - _globals['_ASKRENEINFORMCHANNELCONSTRAINTS']._serialized_end=92854 - _globals['_ASKRENECREATECHANNELREQUEST']._serialized_start=92857 - _globals['_ASKRENECREATECHANNELREQUEST']._serialized_end=93000 - _globals['_ASKRENECREATECHANNELRESPONSE']._serialized_start=93002 - _globals['_ASKRENECREATECHANNELRESPONSE']._serialized_end=93032 - _globals['_ASKRENEUPDATECHANNELREQUEST']._serialized_start=93035 - _globals['_ASKRENEUPDATECHANNELREQUEST']._serialized_end=93464 - _globals['_ASKRENEUPDATECHANNELRESPONSE']._serialized_start=93466 - _globals['_ASKRENEUPDATECHANNELRESPONSE']._serialized_end=93496 - _globals['_ASKRENEBIASCHANNELREQUEST']._serialized_start=93499 - _globals['_ASKRENEBIASCHANNELREQUEST']._serialized_end=93663 - _globals['_ASKRENEBIASCHANNELRESPONSE']._serialized_start=93665 - _globals['_ASKRENEBIASCHANNELRESPONSE']._serialized_end=93740 - _globals['_ASKRENEBIASCHANNELBIASES']._serialized_start=93743 - _globals['_ASKRENEBIASCHANNELBIASES']._serialized_end=93908 - _globals['_ASKRENEBIASNODEREQUEST']._serialized_start=93911 - _globals['_ASKRENEBIASNODEREQUEST']._serialized_end=94075 - _globals['_ASKRENEBIASNODERESPONSE']._serialized_start=94077 - _globals['_ASKRENEBIASNODERESPONSE']._serialized_end=94155 - _globals['_ASKRENEBIASNODENODEBIASES']._serialized_start=94158 - _globals['_ASKRENEBIASNODENODEBIASES']._serialized_end=94310 - _globals['_ASKRENELISTRESERVATIONSREQUEST']._serialized_start=94312 - _globals['_ASKRENELISTRESERVATIONSREQUEST']._serialized_end=94344 - _globals['_ASKRENELISTRESERVATIONSRESPONSE']._serialized_start=94346 - _globals['_ASKRENELISTRESERVATIONSRESPONSE']._serialized_end=94443 - _globals['_ASKRENELISTRESERVATIONSRESERVATIONS']._serialized_start=94446 - _globals['_ASKRENELISTRESERVATIONSRESERVATIONS']._serialized_end=94591 - _globals['_INJECTPAYMENTONIONREQUEST']._serialized_start=94594 - _globals['_INJECTPAYMENTONIONREQUEST']._serialized_end=94925 - _globals['_INJECTPAYMENTONIONRESPONSE']._serialized_start=94927 - _globals['_INJECTPAYMENTONIONRESPONSE']._serialized_end=95046 - _globals['_INJECTONIONMESSAGEREQUEST']._serialized_start=95048 - _globals['_INJECTONIONMESSAGEREQUEST']._serialized_end=95110 - _globals['_INJECTONIONMESSAGERESPONSE']._serialized_start=95112 - _globals['_INJECTONIONMESSAGERESPONSE']._serialized_end=95140 - _globals['_XPAYREQUEST']._serialized_start=95143 - _globals['_XPAYREQUEST']._serialized_end=95462 - _globals['_XPAYRESPONSE']._serialized_start=95465 - _globals['_XPAYRESPONSE']._serialized_end=95626 - _globals['_SIGNMESSAGEWITHKEYREQUEST']._serialized_start=95628 - _globals['_SIGNMESSAGEWITHKEYREQUEST']._serialized_end=95689 - _globals['_SIGNMESSAGEWITHKEYRESPONSE']._serialized_start=95691 - _globals['_SIGNMESSAGEWITHKEYRESPONSE']._serialized_end=95787 - _globals['_LISTCHANNELMOVESREQUEST']._serialized_start=95790 - _globals['_LISTCHANNELMOVESREQUEST']._serialized_end=95995 - _globals['_LISTCHANNELMOVESREQUEST_LISTCHANNELMOVESINDEX']._serialized_start=95929 - _globals['_LISTCHANNELMOVESREQUEST_LISTCHANNELMOVESINDEX']._serialized_end=95965 - _globals['_LISTCHANNELMOVESRESPONSE']._serialized_start=95997 - _globals['_LISTCHANNELMOVESRESPONSE']._serialized_end=96080 - _globals['_LISTCHANNELMOVESCHANNELMOVES']._serialized_start=96083 - _globals['_LISTCHANNELMOVESCHANNELMOVES']._serialized_end=96636 - _globals['_LISTCHANNELMOVESCHANNELMOVES_LISTCHANNELMOVESCHANNELMOVESPRIMARYTAG']._serialized_start=96444 - _globals['_LISTCHANNELMOVESCHANNELMOVES_LISTCHANNELMOVESCHANNELMOVESPRIMARYTAG']._serialized_end=96594 - _globals['_LISTCHAINMOVESREQUEST']._serialized_start=96639 - _globals['_LISTCHAINMOVESREQUEST']._serialized_end=96836 - _globals['_LISTCHAINMOVESREQUEST_LISTCHAINMOVESINDEX']._serialized_start=96772 - _globals['_LISTCHAINMOVESREQUEST_LISTCHAINMOVESINDEX']._serialized_end=96806 - _globals['_LISTCHAINMOVESRESPONSE']._serialized_start=96838 - _globals['_LISTCHAINMOVESRESPONSE']._serialized_end=96913 - _globals['_LISTCHAINMOVESCHAINMOVES']._serialized_start=96916 - _globals['_LISTCHAINMOVESCHAINMOVES']._serialized_end=97768 - _globals['_LISTCHAINMOVESCHAINMOVES_LISTCHAINMOVESCHAINMOVESPRIMARYTAG']._serialized_start=97403 - _globals['_LISTCHAINMOVESCHAINMOVES_LISTCHAINMOVESCHAINMOVESPRIMARYTAG']._serialized_end=97680 - _globals['_LISTNETWORKEVENTSREQUEST']._serialized_start=97771 - _globals['_LISTNETWORKEVENTSREQUEST']._serialized_end=98004 - _globals['_LISTNETWORKEVENTSREQUEST_LISTNETWORKEVENTSINDEX']._serialized_start=97930 - _globals['_LISTNETWORKEVENTSREQUEST_LISTNETWORKEVENTSINDEX']._serialized_end=97967 - _globals['_LISTNETWORKEVENTSRESPONSE']._serialized_start=98006 - _globals['_LISTNETWORKEVENTSRESPONSE']._serialized_end=98093 - _globals['_LISTNETWORKEVENTSNETWORKEVENTS']._serialized_start=98096 - _globals['_LISTNETWORKEVENTSNETWORKEVENTS']._serialized_end=98338 - _globals['_DELNETWORKEVENTREQUEST']._serialized_start=98340 - _globals['_DELNETWORKEVENTREQUEST']._serialized_end=98387 - _globals['_DELNETWORKEVENTRESPONSE']._serialized_start=98389 - _globals['_DELNETWORKEVENTRESPONSE']._serialized_end=98414 - _globals['_CLNRESTREGISTERPATHREQUEST']._serialized_start=98417 - _globals['_CLNRESTREGISTERPATHREQUEST']._serialized_end=98663 - _globals['_CLNRESTREGISTERPATHRESPONSE']._serialized_start=98665 - _globals['_CLNRESTREGISTERPATHRESPONSE']._serialized_end=98694 - _globals['_CLNRESTREGISTERPATHRUNERESTRICTIONS']._serialized_start=98697 - _globals['_CLNRESTREGISTERPATHRUNERESTRICTIONS']._serialized_end=98915 - _globals['_CLNRESTREGISTERPATHRUNERESTRICTIONS_PARAMSENTRY']._serialized_start=98848 - _globals['_CLNRESTREGISTERPATHRUNERESTRICTIONS_PARAMSENTRY']._serialized_end=98893 - _globals['_STREAMBLOCKADDEDREQUEST']._serialized_start=98917 - _globals['_STREAMBLOCKADDEDREQUEST']._serialized_end=98942 - _globals['_BLOCKADDEDNOTIFICATION']._serialized_start=98944 - _globals['_BLOCKADDEDNOTIFICATION']._serialized_end=98998 - _globals['_STREAMCHANNELOPENFAILEDREQUEST']._serialized_start=99000 - _globals['_STREAMCHANNELOPENFAILEDREQUEST']._serialized_end=99032 - _globals['_CHANNELOPENFAILEDNOTIFICATION']._serialized_start=99034 - _globals['_CHANNELOPENFAILEDNOTIFICATION']._serialized_end=99085 - _globals['_STREAMCHANNELOPENEDREQUEST']._serialized_start=99087 - _globals['_STREAMCHANNELOPENEDREQUEST']._serialized_end=99115 - _globals['_CHANNELOPENEDNOTIFICATION']._serialized_start=99117 - _globals['_CHANNELOPENEDNOTIFICATION']._serialized_end=99236 - _globals['_STREAMCONNECTREQUEST']._serialized_start=99238 - _globals['_STREAMCONNECTREQUEST']._serialized_end=99260 - _globals['_PEERCONNECTNOTIFICATION']._serialized_start=99263 - _globals['_PEERCONNECTNOTIFICATION']._serialized_end=99453 - _globals['_PEERCONNECTNOTIFICATION_PEERCONNECTDIRECTION']._serialized_start=99414 - _globals['_PEERCONNECTNOTIFICATION_PEERCONNECTDIRECTION']._serialized_end=99453 - _globals['_PEERCONNECTADDRESS']._serialized_start=99456 - _globals['_PEERCONNECTADDRESS']._serialized_end=99738 - _globals['_PEERCONNECTADDRESS_PEERCONNECTADDRESSTYPE']._serialized_start=99607 - _globals['_PEERCONNECTADDRESS_PEERCONNECTADDRESSTYPE']._serialized_end=99706 - _globals['_STREAMCUSTOMMSGREQUEST']._serialized_start=99740 - _globals['_STREAMCUSTOMMSGREQUEST']._serialized_end=99764 - _globals['_CUSTOMMSGNOTIFICATION']._serialized_start=99766 - _globals['_CUSTOMMSGNOTIFICATION']._serialized_end=99823 - _globals['_STREAMCHANNELSTATECHANGEDREQUEST']._serialized_start=99825 - _globals['_STREAMCHANNELSTATECHANGEDREQUEST']._serialized_end=99859 - _globals['_CHANNELSTATECHANGEDNOTIFICATION']._serialized_start=99862 - _globals['_CHANNELSTATECHANGEDNOTIFICATION']._serialized_end=100311 - _globals['_CHANNELSTATECHANGEDNOTIFICATION_CHANNELSTATECHANGEDCAUSE']._serialized_start=100165 - _globals['_CHANNELSTATECHANGEDNOTIFICATION_CHANNELSTATECHANGEDCAUSE']._serialized_end=100264 - _globals['_NODE']._serialized_start=100314 - _globals['_NODE']._serialized_end=111196 + _globals['_FEERATESPERKB']._serialized_end=43161 + _globals['_FEERATESPERKBESTIMATES']._serialized_start=43163 + _globals['_FEERATESPERKBESTIMATES']._serialized_end=43250 + _globals['_FEERATESPERKW']._serialized_start=43253 + _globals['_FEERATESPERKW']._serialized_end=43752 + _globals['_FEERATESPERKWESTIMATES']._serialized_start=43754 + _globals['_FEERATESPERKWESTIMATES']._serialized_end=43841 + _globals['_FEERATESONCHAINFEEESTIMATES']._serialized_start=43844 + _globals['_FEERATESONCHAINFEEESTIMATES']._serialized_end=44125 + _globals['_FETCHBIP353REQUEST']._serialized_start=44127 + _globals['_FETCHBIP353REQUEST']._serialized_end=44164 + _globals['_FETCHBIP353RESPONSE']._serialized_start=44166 + _globals['_FETCHBIP353RESPONSE']._serialized_end=44254 + _globals['_FETCHBIP353INSTRUCTIONS']._serialized_start=44257 + _globals['_FETCHBIP353INSTRUCTIONS']._serialized_end=44504 + _globals['_FETCHINVOICEREQUEST']._serialized_start=44507 + _globals['_FETCHINVOICEREQUEST']._serialized_end=44948 + _globals['_FETCHINVOICERESPONSE']._serialized_start=44951 + _globals['_FETCHINVOICERESPONSE']._serialized_end=45104 + _globals['_FETCHINVOICECHANGES']._serialized_start=45107 + _globals['_FETCHINVOICECHANGES']._serialized_end=45365 + _globals['_FETCHINVOICENEXTPERIOD']._serialized_start=45367 + _globals['_FETCHINVOICENEXTPERIOD']._serialized_end=45492 + _globals['_CANCELRECURRINGINVOICEREQUEST']._serialized_start=45495 + _globals['_CANCELRECURRINGINVOICEREQUEST']._serialized_end=45719 + _globals['_CANCELRECURRINGINVOICERESPONSE']._serialized_start=45721 + _globals['_CANCELRECURRINGINVOICERESPONSE']._serialized_end=45769 + _globals['_FUNDCHANNELCANCELREQUEST']._serialized_start=45771 + _globals['_FUNDCHANNELCANCELREQUEST']._serialized_end=45809 + _globals['_FUNDCHANNELCANCELRESPONSE']._serialized_start=45811 + _globals['_FUNDCHANNELCANCELRESPONSE']._serialized_end=45857 + _globals['_FUNDCHANNELCOMPLETEREQUEST']._serialized_start=45859 + _globals['_FUNDCHANNELCOMPLETEREQUEST']._serialized_end=45949 + _globals['_FUNDCHANNELCOMPLETERESPONSE']._serialized_start=45951 + _globals['_FUNDCHANNELCOMPLETERESPONSE']._serialized_end=46029 + _globals['_FUNDCHANNELREQUEST']._serialized_start=46032 + _globals['_FUNDCHANNELREQUEST']._serialized_end=46539 + _globals['_FUNDCHANNELRESPONSE']._serialized_start=46542 + _globals['_FUNDCHANNELRESPONSE']._serialized_end=46770 + _globals['_FUNDCHANNELCHANNELTYPE']._serialized_start=46772 + _globals['_FUNDCHANNELCHANNELTYPE']._serialized_end=46847 + _globals['_FUNDCHANNELSTARTREQUEST']._serialized_start=46850 + _globals['_FUNDCHANNELSTARTREQUEST']._serialized_end=47192 + _globals['_FUNDCHANNELSTARTRESPONSE']._serialized_start=47195 + _globals['_FUNDCHANNELSTARTRESPONSE']._serialized_end=47441 + _globals['_FUNDCHANNELSTARTCHANNELTYPE']._serialized_start=47443 + _globals['_FUNDCHANNELSTARTCHANNELTYPE']._serialized_end=47523 + _globals['_GETLOGREQUEST']._serialized_start=47526 + _globals['_GETLOGREQUEST']._serialized_end=47683 + _globals['_GETLOGREQUEST_GETLOGLEVEL']._serialized_start=47595 + _globals['_GETLOGREQUEST_GETLOGLEVEL']._serialized_end=47673 + _globals['_GETLOGRESPONSE']._serialized_start=47685 + _globals['_GETLOGRESPONSE']._serialized_end=47789 + _globals['_GETLOGLOG']._serialized_start=47792 + _globals['_GETLOGLOG']._serialized_end=48152 + _globals['_GETLOGLOG_GETLOGLOGTYPE']._serialized_start=47979 + _globals['_GETLOGLOG_GETLOGLOGTYPE']._serialized_end=48087 + _globals['_FUNDERUPDATEREQUEST']._serialized_start=48155 + _globals['_FUNDERUPDATEREQUEST']._serialized_end=49268 + _globals['_FUNDERUPDATEREQUEST_FUNDERUPDATEPOLICY']._serialized_start=48849 + _globals['_FUNDERUPDATEREQUEST_FUNDERUPDATEPOLICY']._serialized_end=48906 + _globals['_FUNDERUPDATERESPONSE']._serialized_start=49271 + _globals['_FUNDERUPDATERESPONSE']._serialized_end=50134 + _globals['_FUNDERUPDATERESPONSE_FUNDERUPDATEPOLICY']._serialized_start=48849 + _globals['_FUNDERUPDATERESPONSE_FUNDERUPDATEPOLICY']._serialized_end=48906 + _globals['_GETROUTEREQUEST']._serialized_start=50137 + _globals['_GETROUTEREQUEST']._serialized_end=50373 + _globals['_GETROUTERESPONSE']._serialized_start=50375 + _globals['_GETROUTERESPONSE']._serialized_end=50428 + _globals['_GETROUTEROUTE']._serialized_start=50431 + _globals['_GETROUTEROUTE']._serialized_end=50628 + _globals['_GETROUTEROUTE_GETROUTEROUTESTYLE']._serialized_start=50599 + _globals['_GETROUTEROUTE_GETROUTEROUTESTYLE']._serialized_end=50628 + _globals['_LISTADDRESSESREQUEST']._serialized_start=50630 + _globals['_LISTADDRESSESREQUEST']._serialized_end=50746 + _globals['_LISTADDRESSESRESPONSE']._serialized_start=50748 + _globals['_LISTADDRESSESRESPONSE']._serialized_end=50819 + _globals['_LISTADDRESSESADDRESSES']._serialized_start=50821 + _globals['_LISTADDRESSESADDRESSES']._serialized_end=50921 + _globals['_LISTFORWARDSREQUEST']._serialized_start=50924 + _globals['_LISTFORWARDSREQUEST']._serialized_end=51363 + _globals['_LISTFORWARDSREQUEST_LISTFORWARDSSTATUS']._serialized_start=51168 + _globals['_LISTFORWARDSREQUEST_LISTFORWARDSSTATUS']._serialized_end=51244 + _globals['_LISTFORWARDSREQUEST_LISTFORWARDSINDEX']._serialized_start=51246 + _globals['_LISTFORWARDSREQUEST_LISTFORWARDSINDEX']._serialized_end=51291 + _globals['_LISTFORWARDSRESPONSE']._serialized_start=51365 + _globals['_LISTFORWARDSRESPONSE']._serialized_end=51432 + _globals['_LISTFORWARDSFORWARDS']._serialized_start=51435 + _globals['_LISTFORWARDSFORWARDS']._serialized_end=52255 + _globals['_LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTATUS']._serialized_start=51956 + _globals['_LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTATUS']._serialized_end=52040 + _globals['_LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTYLE']._serialized_start=52042 + _globals['_LISTFORWARDSFORWARDS_LISTFORWARDSFORWARDSSTYLE']._serialized_end=52090 + _globals['_LISTOFFERSREQUEST']._serialized_start=52257 + _globals['_LISTOFFERSREQUEST']._serialized_end=52354 + _globals['_LISTOFFERSRESPONSE']._serialized_start=52356 + _globals['_LISTOFFERSRESPONSE']._serialized_end=52415 + _globals['_LISTOFFERSOFFERS']._serialized_start=52418 + _globals['_LISTOFFERSOFFERS']._serialized_end=52592 + _globals['_LISTPAYSREQUEST']._serialized_start=52595 + _globals['_LISTPAYSREQUEST']._serialized_end=52983 + _globals['_LISTPAYSREQUEST_LISTPAYSSTATUS']._serialized_start=52816 + _globals['_LISTPAYSREQUEST_LISTPAYSSTATUS']._serialized_end=52871 + _globals['_LISTPAYSREQUEST_LISTPAYSINDEX']._serialized_start=52873 + _globals['_LISTPAYSREQUEST_LISTPAYSINDEX']._serialized_end=52914 + _globals['_LISTPAYSRESPONSE']._serialized_start=52985 + _globals['_LISTPAYSRESPONSE']._serialized_end=53036 + _globals['_LISTPAYSPAYS']._serialized_start=53039 + _globals['_LISTPAYSPAYS']._serialized_end=53770 + _globals['_LISTPAYSPAYS_LISTPAYSPAYSSTATUS']._serialized_start=53509 + _globals['_LISTPAYSPAYS_LISTPAYSPAYSSTATUS']._serialized_end=53568 + _globals['_LISTHTLCSREQUEST']._serialized_start=53773 + _globals['_LISTHTLCSREQUEST']._serialized_end=53987 + _globals['_LISTHTLCSREQUEST_LISTHTLCSINDEX']._serialized_start=53908 + _globals['_LISTHTLCSREQUEST_LISTHTLCSINDEX']._serialized_end=53950 + _globals['_LISTHTLCSRESPONSE']._serialized_start=53989 + _globals['_LISTHTLCSRESPONSE']._serialized_end=54044 + _globals['_LISTHTLCSHTLCS']._serialized_start=54047 + _globals['_LISTHTLCSHTLCS']._serialized_end=54404 + _globals['_LISTHTLCSHTLCS_LISTHTLCSHTLCSDIRECTION']._serialized_start=54326 + _globals['_LISTHTLCSHTLCS_LISTHTLCSHTLCSDIRECTION']._serialized_end=54368 + _globals['_MULTIFUNDCHANNELREQUEST']._serialized_start=54407 + _globals['_MULTIFUNDCHANNELREQUEST']._serialized_end=54713 + _globals['_MULTIFUNDCHANNELRESPONSE']._serialized_start=54716 + _globals['_MULTIFUNDCHANNELRESPONSE']._serialized_end=54867 + _globals['_MULTIFUNDCHANNELDESTINATIONS']._serialized_start=54870 + _globals['_MULTIFUNDCHANNELDESTINATIONS']._serialized_end=55253 + _globals['_MULTIFUNDCHANNELCHANNELIDS']._serialized_start=55256 + _globals['_MULTIFUNDCHANNELCHANNELIDS']._serialized_end=55456 + _globals['_MULTIFUNDCHANNELCHANNELIDSCHANNELTYPE']._serialized_start=55458 + _globals['_MULTIFUNDCHANNELCHANNELIDSCHANNELTYPE']._serialized_end=55548 + _globals['_MULTIFUNDCHANNELFAILED']._serialized_start=55551 + _globals['_MULTIFUNDCHANNELFAILED']._serialized_end=55826 + _globals['_MULTIFUNDCHANNELFAILED_MULTIFUNDCHANNELFAILEDMETHOD']._serialized_start=55712 + _globals['_MULTIFUNDCHANNELFAILED_MULTIFUNDCHANNELFAILEDMETHOD']._serialized_end=55826 + _globals['_MULTIFUNDCHANNELFAILEDERROR']._serialized_start=55828 + _globals['_MULTIFUNDCHANNELFAILEDERROR']._serialized_end=55888 + _globals['_MULTIWITHDRAWREQUEST']._serialized_start=55891 + _globals['_MULTIWITHDRAWREQUEST']._serialized_end=56059 + _globals['_MULTIWITHDRAWRESPONSE']._serialized_start=56061 + _globals['_MULTIWITHDRAWRESPONSE']._serialized_end=56110 + _globals['_OFFERREQUEST']._serialized_start=56113 + _globals['_OFFERREQUEST']._serialized_end=56699 + _globals['_OFFERRESPONSE']._serialized_start=56702 + _globals['_OFFERRESPONSE']._serialized_end=56848 + _globals['_OPENCHANNELABORTREQUEST']._serialized_start=56850 + _globals['_OPENCHANNELABORTREQUEST']._serialized_end=56895 + _globals['_OPENCHANNELABORTRESPONSE']._serialized_start=56897 + _globals['_OPENCHANNELABORTRESPONSE']._serialized_end=56985 + _globals['_OPENCHANNELBUMPREQUEST']._serialized_start=56988 + _globals['_OPENCHANNELBUMPREQUEST']._serialized_end=57146 + _globals['_OPENCHANNELBUMPRESPONSE']._serialized_start=57149 + _globals['_OPENCHANNELBUMPRESPONSE']._serialized_end=57408 + _globals['_OPENCHANNELBUMPCHANNELTYPE']._serialized_start=57410 + _globals['_OPENCHANNELBUMPCHANNELTYPE']._serialized_end=57489 + _globals['_OPENCHANNELINITREQUEST']._serialized_start=57492 + _globals['_OPENCHANNELINITREQUEST']._serialized_end=57907 + _globals['_OPENCHANNELINITRESPONSE']._serialized_start=57910 + _globals['_OPENCHANNELINITRESPONSE']._serialized_end=58169 + _globals['_OPENCHANNELINITCHANNELTYPE']._serialized_start=58171 + _globals['_OPENCHANNELINITCHANNELTYPE']._serialized_end=58250 + _globals['_OPENCHANNELSIGNEDREQUEST']._serialized_start=58252 + _globals['_OPENCHANNELSIGNEDREQUEST']._serialized_end=58319 + _globals['_OPENCHANNELSIGNEDRESPONSE']._serialized_start=58321 + _globals['_OPENCHANNELSIGNEDRESPONSE']._serialized_end=58394 + _globals['_OPENCHANNELUPDATEREQUEST']._serialized_start=58396 + _globals['_OPENCHANNELUPDATEREQUEST']._serialized_end=58456 + _globals['_OPENCHANNELUPDATERESPONSE']._serialized_start=58459 + _globals['_OPENCHANNELUPDATERESPONSE']._serialized_end=58758 + _globals['_OPENCHANNELUPDATECHANNELTYPE']._serialized_start=58760 + _globals['_OPENCHANNELUPDATECHANNELTYPE']._serialized_end=58841 + _globals['_PINGREQUEST']._serialized_start=58843 + _globals['_PINGREQUEST']._serialized_end=58932 + _globals['_PINGRESPONSE']._serialized_start=58934 + _globals['_PINGRESPONSE']._serialized_end=58964 + _globals['_PLUGINREQUEST']._serialized_start=58967 + _globals['_PLUGINREQUEST']._serialized_end=59112 + _globals['_PLUGINRESPONSE']._serialized_start=59114 + _globals['_PLUGINRESPONSE']._serialized_end=59239 + _globals['_PLUGINPLUGINS']._serialized_start=59241 + _globals['_PLUGINPLUGINS']._serialized_end=59303 + _globals['_RENEPAYSTATUSREQUEST']._serialized_start=59305 + _globals['_RENEPAYSTATUSREQUEST']._serialized_end=59365 + _globals['_RENEPAYSTATUSRESPONSE']._serialized_start=59367 + _globals['_RENEPAYSTATUSRESPONSE']._serialized_end=59438 + _globals['_RENEPAYSTATUSPAYSTATUS']._serialized_start=59441 + _globals['_RENEPAYSTATUSPAYSTATUS']._serialized_end=59923 + _globals['_RENEPAYSTATUSPAYSTATUS_RENEPAYSTATUSPAYSTATUSSTATUS']._serialized_start=59786 + _globals['_RENEPAYSTATUSPAYSTATUS_RENEPAYSTATUSPAYSTATUSSTATUS']._serialized_end=59855 + _globals['_RENEPAYREQUEST']._serialized_start=59926 + _globals['_RENEPAYREQUEST']._serialized_end=60272 + _globals['_RENEPAYRESPONSE']._serialized_start=60275 + _globals['_RENEPAYRESPONSE']._serialized_end=60696 + _globals['_RENEPAYRESPONSE_RENEPAYSTATUS']._serialized_start=60592 + _globals['_RENEPAYRESPONSE_RENEPAYSTATUS']._serialized_end=60646 + _globals['_RESERVEINPUTSREQUEST']._serialized_start=60698 + _globals['_RESERVEINPUTSREQUEST']._serialized_end=60806 + _globals['_RESERVEINPUTSRESPONSE']._serialized_start=60808 + _globals['_RESERVEINPUTSRESPONSE']._serialized_end=60885 + _globals['_RESERVEINPUTSRESERVATIONS']._serialized_start=60887 + _globals['_RESERVEINPUTSRESERVATIONS']._serialized_end=61009 + _globals['_SENDCUSTOMMSGREQUEST']._serialized_start=61011 + _globals['_SENDCUSTOMMSGREQUEST']._serialized_end=61063 + _globals['_SENDCUSTOMMSGRESPONSE']._serialized_start=61065 + _globals['_SENDCUSTOMMSGRESPONSE']._serialized_end=61104 + _globals['_SENDINVOICEREQUEST']._serialized_start=61107 + _globals['_SENDINVOICEREQUEST']._serialized_end=61283 + _globals['_SENDINVOICERESPONSE']._serialized_start=61286 + _globals['_SENDINVOICERESPONSE']._serialized_end=61877 + _globals['_SENDINVOICERESPONSE_SENDINVOICESTATUS']._serialized_start=61688 + _globals['_SENDINVOICERESPONSE_SENDINVOICESTATUS']._serialized_end=61742 + _globals['_SETCHANNELREQUEST']._serialized_start=61880 + _globals['_SETCHANNELREQUEST']._serialized_end=62178 + _globals['_SETCHANNELRESPONSE']._serialized_start=62180 + _globals['_SETCHANNELRESPONSE']._serialized_end=62243 + _globals['_SETCHANNELCHANNELS']._serialized_start=62246 + _globals['_SETCHANNELCHANNELS']._serialized_end=62704 + _globals['_SETCONFIGREQUEST']._serialized_start=62706 + _globals['_SETCONFIGREQUEST']._serialized_end=62804 + _globals['_SETCONFIGRESPONSE']._serialized_start=62806 + _globals['_SETCONFIGRESPONSE']._serialized_end=62863 + _globals['_SETCONFIGCONFIG']._serialized_start=62866 + _globals['_SETCONFIGCONFIG']._serialized_end=63159 + _globals['_SETPSBTVERSIONREQUEST']._serialized_start=63161 + _globals['_SETPSBTVERSIONREQUEST']._serialized_end=63215 + _globals['_SETPSBTVERSIONRESPONSE']._serialized_start=63217 + _globals['_SETPSBTVERSIONRESPONSE']._serialized_end=63255 + _globals['_SIGNINVOICEREQUEST']._serialized_start=63257 + _globals['_SIGNINVOICEREQUEST']._serialized_end=63296 + _globals['_SIGNINVOICERESPONSE']._serialized_start=63298 + _globals['_SIGNINVOICERESPONSE']._serialized_end=63335 + _globals['_SIGNMESSAGEREQUEST']._serialized_start=63337 + _globals['_SIGNMESSAGEREQUEST']._serialized_end=63374 + _globals['_SIGNMESSAGERESPONSE']._serialized_start=63376 + _globals['_SIGNMESSAGERESPONSE']._serialized_end=63446 + _globals['_SPLICEINITREQUEST']._serialized_start=63449 + _globals['_SPLICEINITREQUEST']._serialized_end=63649 + _globals['_SPLICEINITRESPONSE']._serialized_start=63651 + _globals['_SPLICEINITRESPONSE']._serialized_end=63685 + _globals['_SPLICESIGNEDREQUEST']._serialized_start=63687 + _globals['_SPLICESIGNEDREQUEST']._serialized_end=63782 + _globals['_SPLICESIGNEDRESPONSE']._serialized_start=63784 + _globals['_SPLICESIGNEDRESPONSE']._serialized_end=63878 + _globals['_SPLICEUPDATEREQUEST']._serialized_start=63880 + _globals['_SPLICEUPDATEREQUEST']._serialized_end=63935 + _globals['_SPLICEUPDATERESPONSE']._serialized_start=63937 + _globals['_SPLICEUPDATERESPONSE']._serialized_end=64058 + _globals['_DEVSPLICEREQUEST']._serialized_start=64061 + _globals['_DEVSPLICEREQUEST']._serialized_end=64259 + _globals['_DEVSPLICERESPONSE']._serialized_start=64262 + _globals['_DEVSPLICERESPONSE']._serialized_end=64390 + _globals['_UNRESERVEINPUTSREQUEST']._serialized_start=64392 + _globals['_UNRESERVEINPUTSREQUEST']._serialized_end=64464 + _globals['_UNRESERVEINPUTSRESPONSE']._serialized_start=64466 + _globals['_UNRESERVEINPUTSRESPONSE']._serialized_end=64547 + _globals['_UNRESERVEINPUTSRESERVATIONS']._serialized_start=64550 + _globals['_UNRESERVEINPUTSRESERVATIONS']._serialized_end=64701 + _globals['_UPGRADEWALLETREQUEST']._serialized_start=64703 + _globals['_UPGRADEWALLETREQUEST']._serialized_end=64813 + _globals['_UPGRADEWALLETRESPONSE']._serialized_start=64816 + _globals['_UPGRADEWALLETRESPONSE']._serialized_end=64965 + _globals['_WAITBLOCKHEIGHTREQUEST']._serialized_start=64967 + _globals['_WAITBLOCKHEIGHTREQUEST']._serialized_end=65046 + _globals['_WAITBLOCKHEIGHTRESPONSE']._serialized_start=65048 + _globals['_WAITBLOCKHEIGHTRESPONSE']._serialized_end=65094 + _globals['_WAITREQUEST']._serialized_start=65097 + _globals['_WAITREQUEST']._serialized_end=65410 + _globals['_WAITREQUEST_WAITSUBSYSTEM']._serialized_start=65233 + _globals['_WAITREQUEST_WAITSUBSYSTEM']._serialized_end=65354 + _globals['_WAITREQUEST_WAITINDEXNAME']._serialized_start=65356 + _globals['_WAITREQUEST_WAITINDEXNAME']._serialized_end=65410 + _globals['_WAITRESPONSE']._serialized_start=65413 + _globals['_WAITRESPONSE']._serialized_end=66165 + _globals['_WAITRESPONSE_WAITSUBSYSTEM']._serialized_start=65233 + _globals['_WAITRESPONSE_WAITSUBSYSTEM']._serialized_end=65354 + _globals['_WAITFORWARDS']._serialized_start=66168 + _globals['_WAITFORWARDS']._serialized_end=66499 + _globals['_WAITFORWARDS_WAITFORWARDSSTATUS']._serialized_start=66354 + _globals['_WAITFORWARDS_WAITFORWARDSSTATUS']._serialized_end=66430 + _globals['_WAITINVOICES']._serialized_start=66502 + _globals['_WAITINVOICES']._serialized_end=66779 + _globals['_WAITINVOICES_WAITINVOICESSTATUS']._serialized_start=66665 + _globals['_WAITINVOICES_WAITINVOICESSTATUS']._serialized_end=66720 + _globals['_WAITSENDPAYS']._serialized_start=66782 + _globals['_WAITSENDPAYS']._serialized_end=67037 + _globals['_WAITSENDPAYS_WAITSENDPAYSSTATUS']._serialized_start=66927 + _globals['_WAITSENDPAYS_WAITSENDPAYSSTATUS']._serialized_end=66986 + _globals['_WAITHTLCS']._serialized_start=67040 + _globals['_WAITHTLCS']._serialized_end=67436 + _globals['_WAITHTLCS_WAITHTLCSDIRECTION']._serialized_start=67293 + _globals['_WAITHTLCS_WAITHTLCSDIRECTION']._serialized_end=67330 + _globals['_WAITCHAINMOVES']._serialized_start=67438 + _globals['_WAITCHAINMOVES']._serialized_end=67538 + _globals['_WAITCHANNELMOVES']._serialized_start=67540 + _globals['_WAITCHANNELMOVES']._serialized_end=67642 + _globals['_WAITNETWORKEVENTS']._serialized_start=67645 + _globals['_WAITNETWORKEVENTS']._serialized_end=67910 + _globals['_WAITNETWORKEVENTS_WAITNETWORKEVENTSTYPE']._serialized_start=67786 + _globals['_WAITNETWORKEVENTS_WAITNETWORKEVENTSTYPE']._serialized_end=67866 + _globals['_WAITDETAILS']._serialized_start=67913 + _globals['_WAITDETAILS']._serialized_end=68549 + _globals['_WAITDETAILS_WAITDETAILSSTATUS']._serialized_start=68255 + _globals['_WAITDETAILS_WAITDETAILSSTATUS']._serialized_end=68392 + _globals['_LISTCONFIGSREQUEST']._serialized_start=68551 + _globals['_LISTCONFIGSREQUEST']._serialized_end=68603 + _globals['_LISTCONFIGSRESPONSE']._serialized_start=68605 + _globals['_LISTCONFIGSRESPONSE']._serialized_end=68685 + _globals['_LISTCONFIGSCONFIGS']._serialized_start=68688 + _globals['_LISTCONFIGSCONFIGS']._serialized_end=74681 + _globals['_LISTCONFIGSCONFIGSCONF']._serialized_start=74684 + _globals['_LISTCONFIGSCONFIGSCONF']._serialized_end=74846 + _globals['_LISTCONFIGSCONFIGSCONF_LISTCONFIGSCONFIGSCONFSOURCE']._serialized_start=74803 + _globals['_LISTCONFIGSCONFIGSCONF_LISTCONFIGSCONFIGSCONFSOURCE']._serialized_end=74846 + _globals['_LISTCONFIGSCONFIGSDEVELOPER']._serialized_start=74848 + _globals['_LISTCONFIGSCONFIGSDEVELOPER']._serialized_end=74906 + _globals['_LISTCONFIGSCONFIGSCLEARPLUGINS']._serialized_start=74908 + _globals['_LISTCONFIGSCONFIGSCLEARPLUGINS']._serialized_end=74969 + _globals['_LISTCONFIGSCONFIGSDISABLEMPP']._serialized_start=74971 + _globals['_LISTCONFIGSCONFIGSDISABLEMPP']._serialized_end=75062 + _globals['_LISTCONFIGSCONFIGSMAINNET']._serialized_start=75064 + _globals['_LISTCONFIGSCONFIGSMAINNET']._serialized_end=75120 + _globals['_LISTCONFIGSCONFIGSREGTEST']._serialized_start=75122 + _globals['_LISTCONFIGSCONFIGSREGTEST']._serialized_end=75178 + _globals['_LISTCONFIGSCONFIGSSIGNET']._serialized_start=75180 + _globals['_LISTCONFIGSCONFIGSSIGNET']._serialized_end=75235 + _globals['_LISTCONFIGSCONFIGSTESTNET']._serialized_start=75237 + _globals['_LISTCONFIGSCONFIGSTESTNET']._serialized_end=75293 + _globals['_LISTCONFIGSCONFIGSIMPORTANTPLUGIN']._serialized_start=75295 + _globals['_LISTCONFIGSCONFIGSIMPORTANTPLUGIN']._serialized_end=75367 + _globals['_LISTCONFIGSCONFIGSPLUGIN']._serialized_start=75369 + _globals['_LISTCONFIGSCONFIGSPLUGIN']._serialized_end=75432 + _globals['_LISTCONFIGSCONFIGSPLUGINDIR']._serialized_start=75434 + _globals['_LISTCONFIGSCONFIGSPLUGINDIR']._serialized_end=75500 + _globals['_LISTCONFIGSCONFIGSLIGHTNINGDIR']._serialized_start=75502 + _globals['_LISTCONFIGSCONFIGSLIGHTNINGDIR']._serialized_end=75569 + _globals['_LISTCONFIGSCONFIGSNETWORK']._serialized_start=75571 + _globals['_LISTCONFIGSCONFIGSNETWORK']._serialized_end=75633 + _globals['_LISTCONFIGSCONFIGSALLOWDEPRECATEDAPIS']._serialized_start=75635 + _globals['_LISTCONFIGSCONFIGSALLOWDEPRECATEDAPIS']._serialized_end=75710 + _globals['_LISTCONFIGSCONFIGSRPCFILE']._serialized_start=75712 + _globals['_LISTCONFIGSCONFIGSRPCFILE']._serialized_end=75774 + _globals['_LISTCONFIGSCONFIGSDISABLEPLUGIN']._serialized_start=75776 + _globals['_LISTCONFIGSCONFIGSDISABLEPLUGIN']._serialized_end=75846 + _globals['_LISTCONFIGSCONFIGSALWAYSUSEPROXY']._serialized_start=75848 + _globals['_LISTCONFIGSCONFIGSALWAYSUSEPROXY']._serialized_end=75918 + _globals['_LISTCONFIGSCONFIGSDAEMON']._serialized_start=75920 + _globals['_LISTCONFIGSCONFIGSDAEMON']._serialized_end=75975 + _globals['_LISTCONFIGSCONFIGSWALLET']._serialized_start=75977 + _globals['_LISTCONFIGSCONFIGSWALLET']._serialized_end=76038 + _globals['_LISTCONFIGSCONFIGSLARGECHANNELS']._serialized_start=76040 + _globals['_LISTCONFIGSCONFIGSLARGECHANNELS']._serialized_end=76102 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALDUALFUND']._serialized_start=76104 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALDUALFUND']._serialized_end=76173 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALSPLICING']._serialized_start=76175 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALSPLICING']._serialized_end=76244 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALONIONMESSAGES']._serialized_start=76246 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALONIONMESSAGES']._serialized_end=76320 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALOFFERS']._serialized_start=76322 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALOFFERS']._serialized_end=76389 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALSHUTDOWNWRONGFUNDING']._serialized_start=76391 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALSHUTDOWNWRONGFUNDING']._serialized_end=76472 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALPEERSTORAGE']._serialized_start=76474 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALPEERSTORAGE']._serialized_end=76546 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALANCHORS']._serialized_start=76548 + _globals['_LISTCONFIGSCONFIGSEXPERIMENTALANCHORS']._serialized_end=76616 + _globals['_LISTCONFIGSCONFIGSDATABASEUPGRADE']._serialized_start=76618 + _globals['_LISTCONFIGSCONFIGSDATABASEUPGRADE']._serialized_end=76689 + _globals['_LISTCONFIGSCONFIGSRGB']._serialized_start=76691 + _globals['_LISTCONFIGSCONFIGSRGB']._serialized_end=76749 + _globals['_LISTCONFIGSCONFIGSALIAS']._serialized_start=76751 + _globals['_LISTCONFIGSCONFIGSALIAS']._serialized_end=76811 + _globals['_LISTCONFIGSCONFIGSPIDFILE']._serialized_start=76813 + _globals['_LISTCONFIGSCONFIGSPIDFILE']._serialized_end=76875 + _globals['_LISTCONFIGSCONFIGSIGNOREFEELIMITS']._serialized_start=76877 + _globals['_LISTCONFIGSCONFIGSIGNOREFEELIMITS']._serialized_end=76948 + _globals['_LISTCONFIGSCONFIGSWATCHTIMEBLOCKS']._serialized_start=76950 + _globals['_LISTCONFIGSCONFIGSWATCHTIMEBLOCKS']._serialized_end=77020 + _globals['_LISTCONFIGSCONFIGSMAXLOCKTIMEBLOCKS']._serialized_start=77022 + _globals['_LISTCONFIGSCONFIGSMAXLOCKTIMEBLOCKS']._serialized_end=77094 + _globals['_LISTCONFIGSCONFIGSFUNDINGCONFIRMS']._serialized_start=77096 + _globals['_LISTCONFIGSCONFIGSFUNDINGCONFIRMS']._serialized_end=77166 + _globals['_LISTCONFIGSCONFIGSCLTVDELTA']._serialized_start=77168 + _globals['_LISTCONFIGSCONFIGSCLTVDELTA']._serialized_end=77232 + _globals['_LISTCONFIGSCONFIGSCLTVFINAL']._serialized_start=77234 + _globals['_LISTCONFIGSCONFIGSCLTVFINAL']._serialized_end=77298 + _globals['_LISTCONFIGSCONFIGSCOMMITTIME']._serialized_start=77300 + _globals['_LISTCONFIGSCONFIGSCOMMITTIME']._serialized_end=77365 + _globals['_LISTCONFIGSCONFIGSFEEBASE']._serialized_start=77367 + _globals['_LISTCONFIGSCONFIGSFEEBASE']._serialized_end=77429 + _globals['_LISTCONFIGSCONFIGSRESCAN']._serialized_start=77431 + _globals['_LISTCONFIGSCONFIGSRESCAN']._serialized_end=77492 + _globals['_LISTCONFIGSCONFIGSFEEPERSATOSHI']._serialized_start=77494 + _globals['_LISTCONFIGSCONFIGSFEEPERSATOSHI']._serialized_end=77562 + _globals['_LISTCONFIGSCONFIGSMAXCONCURRENTHTLCS']._serialized_start=77564 + _globals['_LISTCONFIGSCONFIGSMAXCONCURRENTHTLCS']._serialized_end=77637 + _globals['_LISTCONFIGSCONFIGSHTLCMINIMUMMSAT']._serialized_start=77639 + _globals['_LISTCONFIGSCONFIGSHTLCMINIMUMMSAT']._serialized_end=77723 + _globals['_LISTCONFIGSCONFIGSHTLCMAXIMUMMSAT']._serialized_start=77725 + _globals['_LISTCONFIGSCONFIGSHTLCMAXIMUMMSAT']._serialized_end=77809 + _globals['_LISTCONFIGSCONFIGSMAXDUSTHTLCEXPOSUREMSAT']._serialized_start=77811 + _globals['_LISTCONFIGSCONFIGSMAXDUSTHTLCEXPOSUREMSAT']._serialized_end=77903 + _globals['_LISTCONFIGSCONFIGSMINCAPACITYSAT']._serialized_start=77905 + _globals['_LISTCONFIGSCONFIGSMINCAPACITYSAT']._serialized_end=78008 + _globals['_LISTCONFIGSCONFIGSADDR']._serialized_start=78010 + _globals['_LISTCONFIGSCONFIGSADDR']._serialized_end=78071 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDR']._serialized_start=78073 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDR']._serialized_end=78142 + _globals['_LISTCONFIGSCONFIGSBINDADDR']._serialized_start=78144 + _globals['_LISTCONFIGSCONFIGSBINDADDR']._serialized_end=78209 + _globals['_LISTCONFIGSCONFIGSOFFLINE']._serialized_start=78211 + _globals['_LISTCONFIGSCONFIGSOFFLINE']._serialized_end=78267 + _globals['_LISTCONFIGSCONFIGSAUTOLISTEN']._serialized_start=78269 + _globals['_LISTCONFIGSCONFIGSAUTOLISTEN']._serialized_end=78335 + _globals['_LISTCONFIGSCONFIGSPROXY']._serialized_start=78337 + _globals['_LISTCONFIGSCONFIGSPROXY']._serialized_end=78397 + _globals['_LISTCONFIGSCONFIGSDISABLEDNS']._serialized_start=78399 + _globals['_LISTCONFIGSCONFIGSDISABLEDNS']._serialized_end=78458 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVERED']._serialized_start=78461 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVERED']._serialized_end=78717 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVERED_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVEREDVALUESTR']._serialized_start=78636 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVERED_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVEREDVALUESTR']._serialized_end=78717 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVEREDPORT']._serialized_start=78719 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDISCOVEREDPORT']._serialized_end=78800 + _globals['_LISTCONFIGSCONFIGSENCRYPTEDHSM']._serialized_start=78802 + _globals['_LISTCONFIGSCONFIGSENCRYPTEDHSM']._serialized_end=78863 + _globals['_LISTCONFIGSCONFIGSRPCFILEMODE']._serialized_start=78865 + _globals['_LISTCONFIGSCONFIGSRPCFILEMODE']._serialized_end=78931 + _globals['_LISTCONFIGSCONFIGSLOGLEVEL']._serialized_start=78933 + _globals['_LISTCONFIGSCONFIGSLOGLEVEL']._serialized_end=78996 + _globals['_LISTCONFIGSCONFIGSLOGPREFIX']._serialized_start=78998 + _globals['_LISTCONFIGSCONFIGSLOGPREFIX']._serialized_end=79062 + _globals['_LISTCONFIGSCONFIGSLOGFILE']._serialized_start=79064 + _globals['_LISTCONFIGSCONFIGSLOGFILE']._serialized_end=79128 + _globals['_LISTCONFIGSCONFIGSLOGTIMESTAMPS']._serialized_start=79130 + _globals['_LISTCONFIGSCONFIGSLOGTIMESTAMPS']._serialized_end=79199 + _globals['_LISTCONFIGSCONFIGSFORCEFEERATES']._serialized_start=79201 + _globals['_LISTCONFIGSCONFIGSFORCEFEERATES']._serialized_end=79269 + _globals['_LISTCONFIGSCONFIGSSUBDAEMON']._serialized_start=79271 + _globals['_LISTCONFIGSCONFIGSSUBDAEMON']._serialized_end=79337 + _globals['_LISTCONFIGSCONFIGSFETCHINVOICENOCONNECT']._serialized_start=79339 + _globals['_LISTCONFIGSCONFIGSFETCHINVOICENOCONNECT']._serialized_end=79441 + _globals['_LISTCONFIGSCONFIGSTORSERVICEPASSWORD']._serialized_start=79443 + _globals['_LISTCONFIGSCONFIGSTORSERVICEPASSWORD']._serialized_end=79516 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDNS']._serialized_start=79518 + _globals['_LISTCONFIGSCONFIGSANNOUNCEADDRDNS']._serialized_end=79589 + _globals['_LISTCONFIGSCONFIGSREQUIRECONFIRMEDINPUTS']._serialized_start=79591 + _globals['_LISTCONFIGSCONFIGSREQUIRECONFIRMEDINPUTS']._serialized_end=79669 + _globals['_LISTCONFIGSCONFIGSCOMMITFEE']._serialized_start=79671 + _globals['_LISTCONFIGSCONFIGSCOMMITFEE']._serialized_end=79735 + _globals['_LISTCONFIGSCONFIGSCOMMITFEERATEOFFSET']._serialized_start=79737 + _globals['_LISTCONFIGSCONFIGSCOMMITFEERATEOFFSET']._serialized_end=79811 + _globals['_LISTCONFIGSCONFIGSAUTOCONNECTSEEKERPEERS']._serialized_start=79813 + _globals['_LISTCONFIGSCONFIGSAUTOCONNECTSEEKERPEERS']._serialized_end=79890 + _globals['_STOPREQUEST']._serialized_start=79892 + _globals['_STOPREQUEST']._serialized_end=79905 + _globals['_STOPRESPONSE']._serialized_start=79907 + _globals['_STOPRESPONSE']._serialized_end=80020 + _globals['_STOPRESPONSE_STOPRESULT']._serialized_start=79974 + _globals['_STOPRESPONSE_STOPRESULT']._serialized_end=80009 + _globals['_HELPREQUEST']._serialized_start=80022 + _globals['_HELPREQUEST']._serialized_end=80069 + _globals['_HELPRESPONSE']._serialized_start=80072 + _globals['_HELPRESPONSE']._serialized_end=80221 + _globals['_HELPRESPONSE_HELPFORMATHINT']._serialized_start=80177 + _globals['_HELPRESPONSE_HELPFORMATHINT']._serialized_end=80205 + _globals['_HELPHELP']._serialized_start=80223 + _globals['_HELPHELP']._serialized_end=80250 + _globals['_PREAPPROVEKEYSENDREQUEST']._serialized_start=80252 + _globals['_PREAPPROVEKEYSENDREQUEST']._serialized_end=80355 + _globals['_PREAPPROVEKEYSENDRESPONSE']._serialized_start=80357 + _globals['_PREAPPROVEKEYSENDRESPONSE']._serialized_end=80384 + _globals['_PREAPPROVEINVOICEREQUEST']._serialized_start=80386 + _globals['_PREAPPROVEINVOICEREQUEST']._serialized_end=80428 + _globals['_PREAPPROVEINVOICERESPONSE']._serialized_start=80430 + _globals['_PREAPPROVEINVOICERESPONSE']._serialized_end=80457 + _globals['_STATICBACKUPREQUEST']._serialized_start=80459 + _globals['_STATICBACKUPREQUEST']._serialized_end=80480 + _globals['_STATICBACKUPRESPONSE']._serialized_start=80482 + _globals['_STATICBACKUPRESPONSE']._serialized_end=80517 + _globals['_BKPRCHANNELSAPYREQUEST']._serialized_start=80519 + _globals['_BKPRCHANNELSAPYREQUEST']._serialized_end=80619 + _globals['_BKPRCHANNELSAPYRESPONSE']._serialized_start=80621 + _globals['_BKPRCHANNELSAPYRESPONSE']._serialized_end=80701 + _globals['_BKPRCHANNELSAPYCHANNELSAPY']._serialized_start=80704 + _globals['_BKPRCHANNELSAPYCHANNELSAPY']._serialized_end=81593 + _globals['_BKPRDUMPINCOMECSVREQUEST']._serialized_start=81596 + _globals['_BKPRDUMPINCOMECSVREQUEST']._serialized_end=81806 + _globals['_BKPRDUMPINCOMECSVRESPONSE']._serialized_start=81809 + _globals['_BKPRDUMPINCOMECSVRESPONSE']._serialized_end=82021 + _globals['_BKPRDUMPINCOMECSVRESPONSE_BKPRDUMPINCOMECSVCSVFORMAT']._serialized_start=81935 + _globals['_BKPRDUMPINCOMECSVRESPONSE_BKPRDUMPINCOMECSVCSVFORMAT']._serialized_end=82021 + _globals['_BKPRINSPECTREQUEST']._serialized_start=82023 + _globals['_BKPRINSPECTREQUEST']._serialized_end=82060 + _globals['_BKPRINSPECTRESPONSE']._serialized_start=82062 + _globals['_BKPRINSPECTRESPONSE']._serialized_end=82117 + _globals['_BKPRINSPECTTXS']._serialized_start=82120 + _globals['_BKPRINSPECTTXS']._serialized_end=82274 + _globals['_BKPRINSPECTTXSOUTPUTS']._serialized_start=82277 + _globals['_BKPRINSPECTTXSOUTPUTS']._serialized_end=82721 + _globals['_BKPRLISTACCOUNTEVENTSREQUEST']._serialized_start=82723 + _globals['_BKPRLISTACCOUNTEVENTSREQUEST']._serialized_end=82827 + _globals['_BKPRLISTACCOUNTEVENTSRESPONSE']._serialized_start=82829 + _globals['_BKPRLISTACCOUNTEVENTSRESPONSE']._serialized_end=82910 + _globals['_BKPRLISTACCOUNTEVENTSEVENTS']._serialized_start=82913 + _globals['_BKPRLISTACCOUNTEVENTSEVENTS']._serialized_end=83586 + _globals['_BKPRLISTACCOUNTEVENTSEVENTS_BKPRLISTACCOUNTEVENTSEVENTSTYPE']._serialized_start=83389 + _globals['_BKPRLISTACCOUNTEVENTSEVENTS_BKPRLISTACCOUNTEVENTSEVENTSTYPE']._serialized_end=83463 + _globals['_BKPRLISTBALANCESREQUEST']._serialized_start=83588 + _globals['_BKPRLISTBALANCESREQUEST']._serialized_end=83613 + _globals['_BKPRLISTBALANCESRESPONSE']._serialized_start=83615 + _globals['_BKPRLISTBALANCESRESPONSE']._serialized_end=83690 + _globals['_BKPRLISTBALANCESACCOUNTS']._serialized_start=83693 + _globals['_BKPRLISTBALANCESACCOUNTS']._serialized_end=84019 + _globals['_BKPRLISTBALANCESACCOUNTSBALANCES']._serialized_start=84021 + _globals['_BKPRLISTBALANCESACCOUNTSBALANCES']._serialized_end=84109 + _globals['_BKPRLISTINCOMEREQUEST']._serialized_start=84112 + _globals['_BKPRLISTINCOMEREQUEST']._serialized_end=84263 + _globals['_BKPRLISTINCOMERESPONSE']._serialized_start=84265 + _globals['_BKPRLISTINCOMERESPONSE']._serialized_end=84345 + _globals['_BKPRLISTINCOMEINCOMEEVENTS']._serialized_start=84348 + _globals['_BKPRLISTINCOMEINCOMEEVENTS']._serialized_end=84656 + _globals['_BKPREDITDESCRIPTIONBYPAYMENTIDREQUEST']._serialized_start=84658 + _globals['_BKPREDITDESCRIPTIONBYPAYMENTIDREQUEST']._serialized_end=84738 + _globals['_BKPREDITDESCRIPTIONBYPAYMENTIDRESPONSE']._serialized_start=84740 + _globals['_BKPREDITDESCRIPTIONBYPAYMENTIDRESPONSE']._serialized_end=84841 + _globals['_BKPREDITDESCRIPTIONBYPAYMENTIDUPDATED']._serialized_start=84844 + _globals['_BKPREDITDESCRIPTIONBYPAYMENTIDUPDATED']._serialized_end=85519 + _globals['_BKPREDITDESCRIPTIONBYPAYMENTIDUPDATED_BKPREDITDESCRIPTIONBYPAYMENTIDUPDATEDTYPE']._serialized_start=85345 + _globals['_BKPREDITDESCRIPTIONBYPAYMENTIDUPDATED_BKPREDITDESCRIPTIONBYPAYMENTIDUPDATEDTYPE']._serialized_end=85412 + _globals['_BKPREDITDESCRIPTIONBYOUTPOINTREQUEST']._serialized_start=85521 + _globals['_BKPREDITDESCRIPTIONBYOUTPOINTREQUEST']._serialized_end=85598 + _globals['_BKPREDITDESCRIPTIONBYOUTPOINTRESPONSE']._serialized_start=85600 + _globals['_BKPREDITDESCRIPTIONBYOUTPOINTRESPONSE']._serialized_end=85699 + _globals['_BKPREDITDESCRIPTIONBYOUTPOINTUPDATED']._serialized_start=85702 + _globals['_BKPREDITDESCRIPTIONBYOUTPOINTUPDATED']._serialized_end=86373 + _globals['_BKPREDITDESCRIPTIONBYOUTPOINTUPDATED_BKPREDITDESCRIPTIONBYOUTPOINTUPDATEDTYPE']._serialized_start=86200 + _globals['_BKPREDITDESCRIPTIONBYOUTPOINTUPDATED_BKPREDITDESCRIPTIONBYOUTPOINTUPDATEDTYPE']._serialized_end=86266 + _globals['_BLACKLISTRUNEREQUEST']._serialized_start=86375 + _globals['_BLACKLISTRUNEREQUEST']._serialized_end=86485 + _globals['_BLACKLISTRUNERESPONSE']._serialized_start=86487 + _globals['_BLACKLISTRUNERESPONSE']._serialized_end=86558 + _globals['_BLACKLISTRUNEBLACKLIST']._serialized_start=86560 + _globals['_BLACKLISTRUNEBLACKLIST']._serialized_end=86612 + _globals['_CHECKRUNEREQUEST']._serialized_start=86614 + _globals['_CHECKRUNEREQUEST']._serialized_end=86726 + _globals['_CHECKRUNERESPONSE']._serialized_start=86728 + _globals['_CHECKRUNERESPONSE']._serialized_end=86762 + _globals['_CREATERUNEREQUEST']._serialized_start=86764 + _globals['_CREATERUNEREQUEST']._serialized_end=86833 + _globals['_CREATERUNERESPONSE']._serialized_start=86835 + _globals['_CREATERUNERESPONSE']._serialized_end=86958 + _globals['_SHOWRUNESREQUEST']._serialized_start=86960 + _globals['_SHOWRUNESREQUEST']._serialized_end=87006 + _globals['_SHOWRUNESRESPONSE']._serialized_start=87008 + _globals['_SHOWRUNESRESPONSE']._serialized_end=87063 + _globals['_SHOWRUNESRUNES']._serialized_start=87066 + _globals['_SHOWRUNESRUNES']._serialized_end=87351 + _globals['_SHOWRUNESRUNESRESTRICTIONS']._serialized_start=87353 + _globals['_SHOWRUNESRUNESRESTRICTIONS']._serialized_end=87465 + _globals['_SHOWRUNESRUNESRESTRICTIONSALTERNATIVES']._serialized_start=87467 + _globals['_SHOWRUNESRUNESRESTRICTIONSALTERNATIVES']._serialized_end=87577 + _globals['_ASKRENEUNRESERVEREQUEST']._serialized_start=87579 + _globals['_ASKRENEUNRESERVEREQUEST']._serialized_end=87645 + _globals['_ASKRENEUNRESERVERESPONSE']._serialized_start=87647 + _globals['_ASKRENEUNRESERVERESPONSE']._serialized_end=87673 + _globals['_ASKRENEUNRESERVEPATH']._serialized_start=87676 + _globals['_ASKRENEUNRESERVEPATH']._serialized_end=87822 + _globals['_ASKRENELISTLAYERSREQUEST']._serialized_start=87824 + _globals['_ASKRENELISTLAYERSREQUEST']._serialized_end=87880 + _globals['_ASKRENELISTLAYERSRESPONSE']._serialized_start=87882 + _globals['_ASKRENELISTLAYERSRESPONSE']._serialized_end=87955 + _globals['_ASKRENELISTLAYERSLAYERS']._serialized_start=87958 + _globals['_ASKRENELISTLAYERSLAYERS']._serialized_end=88404 + _globals['_ASKRENELISTLAYERSLAYERSCREATEDCHANNELS']._serialized_start=88407 + _globals['_ASKRENELISTLAYERSLAYERSCREATEDCHANNELS']._serialized_end=88546 + _globals['_ASKRENELISTLAYERSLAYERSCHANNELUPDATES']._serialized_start=88549 + _globals['_ASKRENELISTLAYERSLAYERSCHANNELUPDATES']._serialized_end=88973 + _globals['_ASKRENELISTLAYERSLAYERSCONSTRAINTS']._serialized_start=88976 + _globals['_ASKRENELISTLAYERSLAYERSCONSTRAINTS']._serialized_end=89224 + _globals['_ASKRENELISTLAYERSLAYERSBIASES']._serialized_start=89227 + _globals['_ASKRENELISTLAYERSLAYERSBIASES']._serialized_end=89382 + _globals['_ASKRENELISTLAYERSLAYERSNODEBIASES']._serialized_start=89385 + _globals['_ASKRENELISTLAYERSLAYERSNODEBIASES']._serialized_end=89530 + _globals['_ASKRENECREATELAYERREQUEST']._serialized_start=89532 + _globals['_ASKRENECREATELAYERREQUEST']._serialized_end=89614 + _globals['_ASKRENECREATELAYERRESPONSE']._serialized_start=89616 + _globals['_ASKRENECREATELAYERRESPONSE']._serialized_end=89691 + _globals['_ASKRENECREATELAYERLAYERS']._serialized_start=89694 + _globals['_ASKRENECREATELAYERLAYERS']._serialized_end=90126 + _globals['_ASKRENECREATELAYERLAYERSCREATEDCHANNELS']._serialized_start=90129 + _globals['_ASKRENECREATELAYERLAYERSCREATEDCHANNELS']._serialized_end=90269 + _globals['_ASKRENECREATELAYERLAYERSCHANNELUPDATES']._serialized_start=90272 + _globals['_ASKRENECREATELAYERLAYERSCHANNELUPDATES']._serialized_end=90609 + _globals['_ASKRENECREATELAYERLAYERSCONSTRAINTS']._serialized_start=90612 + _globals['_ASKRENECREATELAYERLAYERSCONSTRAINTS']._serialized_end=90808 + _globals['_ASKRENECREATELAYERLAYERSBIASES']._serialized_start=90811 + _globals['_ASKRENECREATELAYERLAYERSBIASES']._serialized_end=90967 + _globals['_ASKRENECREATELAYERLAYERSNODEBIASES']._serialized_start=90970 + _globals['_ASKRENECREATELAYERLAYERSNODEBIASES']._serialized_end=91116 + _globals['_ASKRENEREMOVELAYERREQUEST']._serialized_start=91118 + _globals['_ASKRENEREMOVELAYERREQUEST']._serialized_end=91160 + _globals['_ASKRENEREMOVELAYERRESPONSE']._serialized_start=91162 + _globals['_ASKRENEREMOVELAYERRESPONSE']._serialized_end=91190 + _globals['_ASKRENERESERVEREQUEST']._serialized_start=91192 + _globals['_ASKRENERESERVEREQUEST']._serialized_end=91254 + _globals['_ASKRENERESERVERESPONSE']._serialized_start=91256 + _globals['_ASKRENERESERVERESPONSE']._serialized_end=91280 + _globals['_ASKRENERESERVEPATH']._serialized_start=91283 + _globals['_ASKRENERESERVEPATH']._serialized_end=91427 + _globals['_ASKRENEAGEREQUEST']._serialized_start=91429 + _globals['_ASKRENEAGEREQUEST']._serialized_end=91479 + _globals['_ASKRENEAGERESPONSE']._serialized_start=91481 + _globals['_ASKRENEAGERESPONSE']._serialized_end=91537 + _globals['_GETROUTESREQUEST']._serialized_start=91540 + _globals['_GETROUTESREQUEST']._serialized_end=91791 + _globals['_GETROUTESRESPONSE']._serialized_start=91793 + _globals['_GETROUTESRESPONSE']._serialized_end=91875 + _globals['_GETROUTESROUTES']._serialized_start=91878 + _globals['_GETROUTESROUTES']._serialized_end=92034 + _globals['_GETROUTESROUTESPATH']._serialized_start=92037 + _globals['_GETROUTESROUTESPATH']._serialized_end=92189 + _globals['_ASKRENEDISABLENODEREQUEST']._serialized_start=92191 + _globals['_ASKRENEDISABLENODEREQUEST']._serialized_end=92247 + _globals['_ASKRENEDISABLENODERESPONSE']._serialized_start=92249 + _globals['_ASKRENEDISABLENODERESPONSE']._serialized_end=92277 + _globals['_ASKRENEINFORMCHANNELREQUEST']._serialized_start=92280 + _globals['_ASKRENEINFORMCHANNELREQUEST']._serialized_end=92613 + _globals['_ASKRENEINFORMCHANNELREQUEST_ASKRENEINFORMCHANNELINFORM']._serialized_start=92482 + _globals['_ASKRENEINFORMCHANNELREQUEST_ASKRENEINFORMCHANNELINFORM']._serialized_end=92561 + _globals['_ASKRENEINFORMCHANNELRESPONSE']._serialized_start=92615 + _globals['_ASKRENEINFORMCHANNELRESPONSE']._serialized_end=92704 + _globals['_ASKRENEINFORMCHANNELCONSTRAINTS']._serialized_start=92707 + _globals['_ASKRENEINFORMCHANNELCONSTRAINTS']._serialized_end=92918 + _globals['_ASKRENECREATECHANNELREQUEST']._serialized_start=92921 + _globals['_ASKRENECREATECHANNELREQUEST']._serialized_end=93064 + _globals['_ASKRENECREATECHANNELRESPONSE']._serialized_start=93066 + _globals['_ASKRENECREATECHANNELRESPONSE']._serialized_end=93096 + _globals['_ASKRENEUPDATECHANNELREQUEST']._serialized_start=93099 + _globals['_ASKRENEUPDATECHANNELREQUEST']._serialized_end=93528 + _globals['_ASKRENEUPDATECHANNELRESPONSE']._serialized_start=93530 + _globals['_ASKRENEUPDATECHANNELRESPONSE']._serialized_end=93560 + _globals['_ASKRENEBIASCHANNELREQUEST']._serialized_start=93563 + _globals['_ASKRENEBIASCHANNELREQUEST']._serialized_end=93727 + _globals['_ASKRENEBIASCHANNELRESPONSE']._serialized_start=93729 + _globals['_ASKRENEBIASCHANNELRESPONSE']._serialized_end=93804 + _globals['_ASKRENEBIASCHANNELBIASES']._serialized_start=93807 + _globals['_ASKRENEBIASCHANNELBIASES']._serialized_end=93972 + _globals['_ASKRENEBIASNODEREQUEST']._serialized_start=93975 + _globals['_ASKRENEBIASNODEREQUEST']._serialized_end=94139 + _globals['_ASKRENEBIASNODERESPONSE']._serialized_start=94141 + _globals['_ASKRENEBIASNODERESPONSE']._serialized_end=94219 + _globals['_ASKRENEBIASNODENODEBIASES']._serialized_start=94222 + _globals['_ASKRENEBIASNODENODEBIASES']._serialized_end=94374 + _globals['_ASKRENELISTRESERVATIONSREQUEST']._serialized_start=94376 + _globals['_ASKRENELISTRESERVATIONSREQUEST']._serialized_end=94408 + _globals['_ASKRENELISTRESERVATIONSRESPONSE']._serialized_start=94410 + _globals['_ASKRENELISTRESERVATIONSRESPONSE']._serialized_end=94507 + _globals['_ASKRENELISTRESERVATIONSRESERVATIONS']._serialized_start=94510 + _globals['_ASKRENELISTRESERVATIONSRESERVATIONS']._serialized_end=94655 + _globals['_INJECTPAYMENTONIONREQUEST']._serialized_start=94658 + _globals['_INJECTPAYMENTONIONREQUEST']._serialized_end=94989 + _globals['_INJECTPAYMENTONIONRESPONSE']._serialized_start=94991 + _globals['_INJECTPAYMENTONIONRESPONSE']._serialized_end=95110 + _globals['_INJECTONIONMESSAGEREQUEST']._serialized_start=95112 + _globals['_INJECTONIONMESSAGEREQUEST']._serialized_end=95174 + _globals['_INJECTONIONMESSAGERESPONSE']._serialized_start=95176 + _globals['_INJECTONIONMESSAGERESPONSE']._serialized_end=95204 + _globals['_XPAYREQUEST']._serialized_start=95207 + _globals['_XPAYREQUEST']._serialized_end=95526 + _globals['_XPAYRESPONSE']._serialized_start=95529 + _globals['_XPAYRESPONSE']._serialized_end=95690 + _globals['_SIGNMESSAGEWITHKEYREQUEST']._serialized_start=95692 + _globals['_SIGNMESSAGEWITHKEYREQUEST']._serialized_end=95753 + _globals['_SIGNMESSAGEWITHKEYRESPONSE']._serialized_start=95755 + _globals['_SIGNMESSAGEWITHKEYRESPONSE']._serialized_end=95851 + _globals['_LISTCHANNELMOVESREQUEST']._serialized_start=95854 + _globals['_LISTCHANNELMOVESREQUEST']._serialized_end=96059 + _globals['_LISTCHANNELMOVESREQUEST_LISTCHANNELMOVESINDEX']._serialized_start=95993 + _globals['_LISTCHANNELMOVESREQUEST_LISTCHANNELMOVESINDEX']._serialized_end=96029 + _globals['_LISTCHANNELMOVESRESPONSE']._serialized_start=96061 + _globals['_LISTCHANNELMOVESRESPONSE']._serialized_end=96144 + _globals['_LISTCHANNELMOVESCHANNELMOVES']._serialized_start=96147 + _globals['_LISTCHANNELMOVESCHANNELMOVES']._serialized_end=96700 + _globals['_LISTCHANNELMOVESCHANNELMOVES_LISTCHANNELMOVESCHANNELMOVESPRIMARYTAG']._serialized_start=96508 + _globals['_LISTCHANNELMOVESCHANNELMOVES_LISTCHANNELMOVESCHANNELMOVESPRIMARYTAG']._serialized_end=96658 + _globals['_LISTCHAINMOVESREQUEST']._serialized_start=96703 + _globals['_LISTCHAINMOVESREQUEST']._serialized_end=96900 + _globals['_LISTCHAINMOVESREQUEST_LISTCHAINMOVESINDEX']._serialized_start=96836 + _globals['_LISTCHAINMOVESREQUEST_LISTCHAINMOVESINDEX']._serialized_end=96870 + _globals['_LISTCHAINMOVESRESPONSE']._serialized_start=96902 + _globals['_LISTCHAINMOVESRESPONSE']._serialized_end=96977 + _globals['_LISTCHAINMOVESCHAINMOVES']._serialized_start=96980 + _globals['_LISTCHAINMOVESCHAINMOVES']._serialized_end=97832 + _globals['_LISTCHAINMOVESCHAINMOVES_LISTCHAINMOVESCHAINMOVESPRIMARYTAG']._serialized_start=97467 + _globals['_LISTCHAINMOVESCHAINMOVES_LISTCHAINMOVESCHAINMOVESPRIMARYTAG']._serialized_end=97744 + _globals['_LISTNETWORKEVENTSREQUEST']._serialized_start=97835 + _globals['_LISTNETWORKEVENTSREQUEST']._serialized_end=98068 + _globals['_LISTNETWORKEVENTSREQUEST_LISTNETWORKEVENTSINDEX']._serialized_start=97994 + _globals['_LISTNETWORKEVENTSREQUEST_LISTNETWORKEVENTSINDEX']._serialized_end=98031 + _globals['_LISTNETWORKEVENTSRESPONSE']._serialized_start=98070 + _globals['_LISTNETWORKEVENTSRESPONSE']._serialized_end=98157 + _globals['_LISTNETWORKEVENTSNETWORKEVENTS']._serialized_start=98160 + _globals['_LISTNETWORKEVENTSNETWORKEVENTS']._serialized_end=98402 + _globals['_DELNETWORKEVENTREQUEST']._serialized_start=98404 + _globals['_DELNETWORKEVENTREQUEST']._serialized_end=98451 + _globals['_DELNETWORKEVENTRESPONSE']._serialized_start=98453 + _globals['_DELNETWORKEVENTRESPONSE']._serialized_end=98478 + _globals['_CLNRESTREGISTERPATHREQUEST']._serialized_start=98481 + _globals['_CLNRESTREGISTERPATHREQUEST']._serialized_end=98727 + _globals['_CLNRESTREGISTERPATHRESPONSE']._serialized_start=98729 + _globals['_CLNRESTREGISTERPATHRESPONSE']._serialized_end=98758 + _globals['_CLNRESTREGISTERPATHRUNERESTRICTIONS']._serialized_start=98761 + _globals['_CLNRESTREGISTERPATHRUNERESTRICTIONS']._serialized_end=98979 + _globals['_CLNRESTREGISTERPATHRUNERESTRICTIONS_PARAMSENTRY']._serialized_start=98912 + _globals['_CLNRESTREGISTERPATHRUNERESTRICTIONS_PARAMSENTRY']._serialized_end=98957 + _globals['_STREAMBLOCKADDEDREQUEST']._serialized_start=98981 + _globals['_STREAMBLOCKADDEDREQUEST']._serialized_end=99006 + _globals['_BLOCKADDEDNOTIFICATION']._serialized_start=99008 + _globals['_BLOCKADDEDNOTIFICATION']._serialized_end=99062 + _globals['_STREAMCHANNELOPENFAILEDREQUEST']._serialized_start=99064 + _globals['_STREAMCHANNELOPENFAILEDREQUEST']._serialized_end=99096 + _globals['_CHANNELOPENFAILEDNOTIFICATION']._serialized_start=99098 + _globals['_CHANNELOPENFAILEDNOTIFICATION']._serialized_end=99149 + _globals['_STREAMCHANNELOPENEDREQUEST']._serialized_start=99151 + _globals['_STREAMCHANNELOPENEDREQUEST']._serialized_end=99179 + _globals['_CHANNELOPENEDNOTIFICATION']._serialized_start=99181 + _globals['_CHANNELOPENEDNOTIFICATION']._serialized_end=99300 + _globals['_STREAMCONNECTREQUEST']._serialized_start=99302 + _globals['_STREAMCONNECTREQUEST']._serialized_end=99324 + _globals['_PEERCONNECTNOTIFICATION']._serialized_start=99327 + _globals['_PEERCONNECTNOTIFICATION']._serialized_end=99517 + _globals['_PEERCONNECTNOTIFICATION_PEERCONNECTDIRECTION']._serialized_start=99478 + _globals['_PEERCONNECTNOTIFICATION_PEERCONNECTDIRECTION']._serialized_end=99517 + _globals['_PEERCONNECTADDRESS']._serialized_start=99520 + _globals['_PEERCONNECTADDRESS']._serialized_end=99802 + _globals['_PEERCONNECTADDRESS_PEERCONNECTADDRESSTYPE']._serialized_start=99671 + _globals['_PEERCONNECTADDRESS_PEERCONNECTADDRESSTYPE']._serialized_end=99770 + _globals['_STREAMCUSTOMMSGREQUEST']._serialized_start=99804 + _globals['_STREAMCUSTOMMSGREQUEST']._serialized_end=99828 + _globals['_CUSTOMMSGNOTIFICATION']._serialized_start=99830 + _globals['_CUSTOMMSGNOTIFICATION']._serialized_end=99887 + _globals['_STREAMCHANNELSTATECHANGEDREQUEST']._serialized_start=99889 + _globals['_STREAMCHANNELSTATECHANGEDREQUEST']._serialized_end=99923 + _globals['_CHANNELSTATECHANGEDNOTIFICATION']._serialized_start=99926 + _globals['_CHANNELSTATECHANGEDNOTIFICATION']._serialized_end=100375 + _globals['_CHANNELSTATECHANGEDNOTIFICATION_CHANNELSTATECHANGEDCAUSE']._serialized_start=100229 + _globals['_CHANNELSTATECHANGEDNOTIFICATION_CHANNELSTATECHANGEDCAUSE']._serialized_end=100328 + _globals['_NODE']._serialized_start=100378 + _globals['_NODE']._serialized_end=111260 # @@protoc_insertion_point(module_scope) diff --git a/contrib/pyln-testing/pyln/testing/grpc2py.py b/contrib/pyln-testing/pyln/testing/grpc2py.py index d3f62a588dc7..23189e1fba62 100644 --- a/contrib/pyln-testing/pyln/testing/grpc2py.py +++ b/contrib/pyln-testing/pyln/testing/grpc2py.py @@ -1440,6 +1440,7 @@ def feerates_perkb2py(m): "mutual_close": m.mutual_close, # PrimitiveField in generate_composite "opening": m.opening, # PrimitiveField in generate_composite "penalty": m.penalty, # PrimitiveField in generate_composite + "splice": m.splice, # PrimitiveField in generate_composite "unilateral_anchor_close": m.unilateral_anchor_close, # PrimitiveField in generate_composite "unilateral_close": m.unilateral_close, # PrimitiveField in generate_composite }) @@ -1464,6 +1465,7 @@ def feerates_perkw2py(m): "mutual_close": m.mutual_close, # PrimitiveField in generate_composite "opening": m.opening, # PrimitiveField in generate_composite "penalty": m.penalty, # PrimitiveField in generate_composite + "splice": m.splice, # PrimitiveField in generate_composite "unilateral_anchor_close": m.unilateral_anchor_close, # PrimitiveField in generate_composite "unilateral_close": m.unilateral_close, # PrimitiveField in generate_composite }) diff --git a/doc/schemas/feerates.json b/doc/schemas/feerates.json index 8c213b5d6087..9be0f075214e 100644 --- a/doc/schemas/feerates.json +++ b/doc/schemas/feerates.json @@ -169,6 +169,13 @@ "description": [ "Feerate to use when creating penalty tx for watchtowers." ] + }, + "splice": { + "type": "u32", + "added": "v26.04", + "description": [ + "Feerate to use when performing a splice." + ] } } }, @@ -293,6 +300,13 @@ "description": [ "Feerate to use when creating penalty tx for watchtowers." ] + }, + "splice": { + "type": "u32", + "added": "v26.04", + "description": [ + "Feerate to use when performing a splice." + ] } } }, @@ -399,6 +413,7 @@ "unilateral_close": 11000, "unilateral_anchor_close": 3750, "penalty": 7500, + "splice": 7505, "min_acceptable": 1875, "max_acceptable": 150000, "floor": 253, @@ -450,6 +465,7 @@ "unilateral_close": 44000, "unilateral_anchor_close": 15000, "penalty": 30000, + "splice": 30005, "min_acceptable": 7500, "max_acceptable": 600000, "floor": 1012, diff --git a/gossipd/gossmap_manage.c b/gossipd/gossmap_manage.c index 556104c703d2..561eec04925d 100644 --- a/gossipd/gossmap_manage.c +++ b/gossipd/gossmap_manage.c @@ -708,7 +708,14 @@ void gossmap_manage_handle_get_txout_reply(struct gossmap_manage *gm, const u8 * * UTXOs. */ static struct timemono prev; if (time_greater(timemono_since(prev), time_from_sec(1))) { - peer_warning(gm, pca->source_peer, + /* Splices that happen soon after a channel open can result in + * the receiving of stale channel announcement (Splice spends + * the txout of the original channel). + * + * We used to treat this as a warning and reset the peer + * connection but the spec simply says "ignore the message". So + * Now we just ignore these stale channel announcements. */ + status_peer_trace(pca->source_peer, "channel_announcement: no unspent txout %s", fmt_short_channel_id(tmpctx, scid)); prev = time_mono(); diff --git a/lightningd/chaintopology.c b/lightningd/chaintopology.c index 6ab4c659706b..25544f906e27 100644 --- a/lightningd/chaintopology.c +++ b/lightningd/chaintopology.c @@ -712,6 +712,14 @@ static struct command_result *json_feerates(struct command *cmd, if (rate) json_add_num(response, "penalty", feerate_to_style(rate, *style)); + rate = unilateral_feerate(topo, true); + if (rate) { + rate += cmd->ld->config.feerate_offset; + if (rate > feerate_max(cmd->ld, NULL)) + rate = feerate_max(cmd->ld, NULL); + json_add_num(response, "splice", + feerate_to_style(rate, *style)); + } json_add_u64(response, "min_acceptable", feerate_to_style(feerate_min(cmd->ld, NULL), *style)); diff --git a/lightningd/channel_control.c b/lightningd/channel_control.c index 627e43604cbc..3d7fc837e629 100644 --- a/lightningd/channel_control.c +++ b/lightningd/channel_control.c @@ -30,6 +30,13 @@ struct stfu_result struct amount_msat available_funds; }; +struct stfu_req_info { + /* The channel on which this stfu request was made */ + struct channel_id **channel_ids; + /* For multi-channel stfu command: the pending result */ + struct stfu_result **results; +}; + struct splice_command { /* Inside struct lightningd splice_commands. */ struct list_node list; @@ -37,21 +44,44 @@ struct splice_command { struct command *cmd; /* Channel being spliced. */ struct channel *channel; - /* For multi-channel commands: remaining channels awaiting response. - * Allocated on ld -- free when finished. */ - struct channel_id **channel_ids; - /* For multi-channel stfu command: the pending result */ - struct stfu_result **results; /* The user provided PSBT's version */ u32 user_psbt_ver; + /* For multi-channel commands: remaining channels awaiting response. + * Allocated on ld -- free when finished. */ + struct stfu_req_info *stfu_req_info; }; +static u32 default_feerate(struct lightningd *ld, const struct channel *channel, + bool add_offset) +{ + u32 max_feerate; + bool anchors = channel_type_has_anchors(channel->type); + u32 feerate = unilateral_feerate(ld->topology, anchors); + + /* Nothing to do if we don't know feerate. */ + if (!feerate) + return 0; + + max_feerate = feerate_max(ld, NULL); + + /* The channel opener should use a slightly higher than minimal feerate + * in order to avoid excessive feerate disagreements */ + if (channel->opener == LOCAL) { + feerate += ld->config.feerate_offset; + if (feerate > max_feerate) + feerate = max_feerate; + } + + return feerate; +} + void channel_update_feerates(struct lightningd *ld, const struct channel *channel) { u8 *msg; u32 min_feerate, max_feerate; bool anchors = channel_type_has_anchors(channel->type); - u32 feerate = unilateral_feerate(ld->topology, anchors); + u32 feerate = default_feerate(ld, channel, (channel->opener == LOCAL)); + u32 feerate_splice = default_feerate(ld, channel, true); /* Nothing to do if we don't know feerate. */ if (!feerate) @@ -63,13 +93,6 @@ void channel_update_feerates(struct lightningd *ld, const struct channel *channe else min_feerate = feerate_min(ld, NULL); max_feerate = feerate_max(ld, NULL); - /* The channel opener should use a slightly higher than minimal feerate - * in order to avoid excessive feerate disagreements */ - if (channel->opener == LOCAL) { - feerate += ld->config.feerate_offset; - if (feerate > max_feerate) - feerate = max_feerate; - } if (channel->ignore_fee_limits || ld->config.ignore_fee_limits) { min_feerate = 1; @@ -77,16 +100,21 @@ void channel_update_feerates(struct lightningd *ld, const struct channel *channe } log_debug(ld->log, - "update_feerates: feerate = %u, min=%u, max=%u, penalty=%u", + "update_feerates: feerate = %u, min=%u, max=%u, penalty=%u," + " opening=%u, splicing: %u", feerate, min_feerate, feerate_max(ld, NULL), - penalty_feerate(ld->topology)); + penalty_feerate(ld->topology), + opening_feerate(ld->topology), + feerate_splice); msg = towire_channeld_feerates(NULL, feerate, min_feerate, max_feerate, - penalty_feerate(ld->topology)); + penalty_feerate(ld->topology), + opening_feerate(ld->topology), + feerate_splice); subd_send_msg(channel->owner, take(msg)); } @@ -587,9 +615,10 @@ static void send_splice_tx(struct channel *channel, u8* tx_bytes = linearize_tx(tmpctx, tx); log_debug(channel->log, - "Broadcasting splice tx %s for channel %s.", + "Broadcasting splice tx %s for channel %s. Final weight %lu", tal_hex(tmpctx, tx_bytes), - fmt_channel_id(tmpctx, &channel->cid)); + fmt_channel_id(tmpctx, &channel->cid), + bitcoin_tx_weight(tx)); struct send_splice_info *info = tal(NULL, struct send_splice_info); @@ -1488,17 +1517,16 @@ static void handle_confirmed_stfu(struct lightningd *ld, return; } - log_info(channel->log, "lightningd got confirmed stfu from channeld," - " channel_id count: %zu", tal_count(cc->channel_ids)); - - for (size_t i = 0; i < tal_count(cc->channel_ids); i++) { - if (channel_id_eq(cc->channel_ids[i], &channel->cid)) { - stfu_result = tal(cc->results, struct stfu_result); + for (size_t i = 0; i < tal_count(cc->stfu_req_info->channel_ids); i++) { + if (channel_id_eq(cc->stfu_req_info->channel_ids[i], + &channel->cid)) { + stfu_result = tal(cc->stfu_req_info->results, struct stfu_result); stfu_result->channel_id = channel->cid; stfu_result->available_funds = available_funds; - tal_arr_expand(&cc->results, stfu_result); - tal_arr_remove(&cc->channel_ids, i); + tal_arr_expand(&cc->stfu_req_info->results, + stfu_result); + tal_arr_remove(&cc->stfu_req_info->channel_ids, i); log_info(channel->log, "lightningd found channel_id in command and removed it"); break; @@ -1506,29 +1534,27 @@ static void handle_confirmed_stfu(struct lightningd *ld, } log_info(channel->log, "Finished processing confirmed stfu," - " channel_id count: %zu", tal_count(cc->channel_ids)); + " channel_id count: %zu, results count: %zu", + tal_count(cc->stfu_req_info->channel_ids), + tal_count(cc->stfu_req_info->results)); /* Once we run out of pending stfu requests we return to user */ - if (tal_count(cc->channel_ids)) + if (tal_count(cc->stfu_req_info->channel_ids)) return; struct json_stream *response = json_stream_success(cc->cmd); json_array_start(response, "channels"); - for (size_t i = 0; i < tal_count(cc->results); i++) { + for (size_t i = 0; i < tal_count(cc->stfu_req_info->results); i++) { json_object_start(response, NULL); json_add_channel_id(response, "channel_id", - &cc->results[i]->channel_id); + &cc->stfu_req_info->results[i]->channel_id); json_add_amount_msat(response, "available_msat", - cc->results[i]->available_funds); + cc->stfu_req_info->results[i]->available_funds); json_object_end(response); } json_array_end(response); - /* channel_ids and results are free'd when the last stfu is finished */ - tal_free(cc->channel_ids); - tal_free(cc->results); - was_pending(command_success(cc->cmd, response)); } @@ -1685,7 +1711,7 @@ bool peer_start_channeld(struct channel *channel, const struct config *cfg = &ld->config; struct secret last_remote_per_commit_secret; struct penalty_base *pbases; - u32 min_feerate, max_feerate, curr_blockheight; + u32 feerate_splice, min_feerate, max_feerate, curr_blockheight; struct channel_inflight *inflight; struct inflight **inflights; struct bitcoin_txid txid; @@ -1845,6 +1871,8 @@ bool peer_start_channeld(struct channel *channel, tal_arr_expand(&inflights, infcopy); } + feerate_splice = default_feerate(ld, channel, true); + initmsg = towire_channeld_init(tmpctx, chainparams, ld->our_features, @@ -1860,9 +1888,11 @@ bool peer_start_channeld(struct channel *channel, &channel->our_config, &channel->channel_info.their_config, channel->fee_states, + feerate_splice, min_feerate, max_feerate, penalty_feerate(ld->topology), + opening_feerate(ld->topology), &channel->last_sig, &channel->channel_info.remote_fundingkey, &channel->channel_info.theirbase, @@ -2288,7 +2318,7 @@ static struct command_result *json_splice_init(struct command *cmd, if (!feerate_per_kw) { feerate_per_kw = tal(cmd, u32); - *feerate_per_kw = opening_feerate(cmd->ld->topology); + *feerate_per_kw = default_feerate(cmd->ld, channel, true); } if (!initialpsbt) @@ -2298,8 +2328,10 @@ static struct command_result *json_splice_init(struct command *cmd, SPLICE_INPUT_ERROR, "PSBT failed to validate."); - log_debug(cmd->ld->log, "splice_init input PSBT version %d", - initialpsbt->version); + log_debug(cmd->ld->log, "splice_init input PSBT version %d," + " feerate: %u", + initialpsbt->version, + *feerate_per_kw); cc = tal(cmd, struct splice_command); @@ -2308,8 +2340,7 @@ static struct command_result *json_splice_init(struct command *cmd, cc->cmd = cmd; cc->channel = channel; - cc->channel_ids = NULL; - cc->results = NULL; + cc->stfu_req_info = NULL; cc->user_psbt_ver = initialpsbt->version; if (initialpsbt->version != 2 && !psbt_set_version(initialpsbt, 2)) @@ -2360,8 +2391,7 @@ static struct command_result *json_splice_update(struct command *cmd, cc->cmd = cmd; cc->channel = channel; - cc->channel_ids = NULL; - cc->results = NULL; + cc->stfu_req_info = NULL; cc->user_psbt_ver = psbt->version; if (psbt->version != 2 && !psbt_set_version(psbt, 2)) @@ -2396,8 +2426,7 @@ static struct command_result *single_splice_signed(struct command *cmd, cc->cmd = cmd; cc->channel = channel; - cc->channel_ids = NULL; - cc->results = NULL; + cc->stfu_req_info = NULL; cc->user_psbt_ver = psbt->version; if (psbt->version != 2 && !psbt_set_version(psbt, 2)) @@ -2490,11 +2519,10 @@ static struct command_result *json_stfu_channels(struct command *cmd, const jsmntok_t *params) { struct channel *channel, **channels; - struct channel_id **channel_ids; const jsmntok_t *channel_ids_tok, *channel_id_tok; struct command_result *result; struct splice_command *cc; - struct stfu_result **stfu_result; + struct stfu_req_info *req; size_t i; if (!param_check(cmd, buffer, params, @@ -2525,16 +2553,19 @@ static struct command_result *json_stfu_channels(struct command *cmd, if (command_check_only(cmd)) return command_check_done(cmd); + req = tal(cmd, struct stfu_req_info); + /* Next we split into multiple `stfu` commands. The final command to - * return will handle free'ing `stfu_result` and `channel_ids` */ - stfu_result = tal_arr(NULL, struct stfu_result*, 0); - channel_ids = tal_arr(NULL, struct channel_id*, tal_count(channels)); + * return finish the cmd response */ + req->results = tal_arr(cmd, struct stfu_result*, 0); + req->channel_ids = tal_arr(cmd, struct channel_id*, + tal_count(channels)); for (i = 0; i < tal_count(channels); i++) { channel = channels[i]; - channel_ids[i] = tal(channel_ids, struct channel_id); - *channel_ids[i] = channel->cid; + req->channel_ids[i] = tal(req->channel_ids, struct channel_id); + *req->channel_ids[i] = channel->cid; cc = tal(cmd, struct splice_command); @@ -2543,8 +2574,7 @@ static struct command_result *json_stfu_channels(struct command *cmd, cc->cmd = cmd; cc->channel = channel; - cc->channel_ids = channel_ids; - cc->results = stfu_result; + cc->stfu_req_info = req; subd_send_msg(channel->owner, take(towire_channeld_stfu(NULL))); } @@ -2659,7 +2689,9 @@ static struct command_result *json_dev_feerate(struct command *cmd, msg = towire_channeld_feerates(NULL, *feerate, feerate_min(cmd->ld, NULL), feerate_max(cmd->ld, NULL), - penalty_feerate(cmd->ld->topology)); + penalty_feerate(cmd->ld->topology), + opening_feerate(cmd->ld->topology), + default_feerate(cmd->ld, channel, true)); subd_send_msg(channel->owner, take(msg)); response = json_stream_success(cmd); diff --git a/openingd/dualopend.c b/openingd/dualopend.c index f03f1b927b1d..43fd65fa372c 100644 --- a/openingd/dualopend.c +++ b/openingd/dualopend.c @@ -818,14 +818,14 @@ static char *check_balances(const tal_t *ctx, assert(ok); initiator_weight += - psbt_input_get_weight(psbt, i); + psbt_input_get_weight(psbt, i, PSBT_GUESS_ZERO); } else { ok = amount_sat_add(&accepter_inputs, accepter_inputs, amt); assert(ok); accepter_weight += - psbt_input_get_weight(psbt, i); + psbt_input_get_weight(psbt, i, PSBT_GUESS_ZERO); } } tot_output_amt = AMOUNT_SAT(0); diff --git a/plugins/spender/splice.c b/plugins/spender/splice.c index 35098c0c7f31..ac66bfc71b5a 100644 --- a/plugins/spender/splice.c +++ b/plugins/spender/splice.c @@ -20,6 +20,65 @@ struct abort_pkg { char *str; }; +static const char *cmd_state_string(enum splice_cmd_state state) +{ + switch (state) { + case SPLICE_CMD_NONE: + return " "; + case SPLICE_CMD_PENDING: + return " PENDING "; + case SPLICE_CMD_INIT: + return " INIT "; + case SPLICE_CMD_UPDATE: + return " UPDATE "; + case SPLICE_CMD_UPDATE_NEEDS_CHANGES: + return "UPDATE_NEEDS_CHANGES"; + case SPLICE_CMD_UPDATE_DONE: + return " UPDATE_DONE "; + case SPLICE_CMD_RECVED_SIGS: + return " RECVED_SIGS "; + case SPLICE_CMD_DONE: + return " DONE "; + } + return NULL; +} + +static void add_to_debug_log(struct splice_cmd *scmd, const char *phase) +{ + char **log = &scmd->debug_log; + if (!*log) + return; + + tal_append_fmt(log, "#%d: (%s)\n", ++scmd->debug_counter, phase); + + for (size_t i = 0; i < tal_count(scmd->actions); i++) { + struct splice_script_result *action = scmd->actions[i]; + struct splice_cmd_action_state *state = scmd->states[i]; + bool simulate_wallet_amount = false; + bool hide_fee = false; + + if (action->onchain_wallet && action->pays_fee) { + if (amount_sat_is_zero(action->out_sat)) { + simulate_wallet_amount = true; + action->out_sat = scmd->needed_funds; + } else { + hide_fee = true; + action->pays_fee = false; + } + } + + tal_append_fmt(log, "[%s] %s\n", + cmd_state_string(state->state), + splice_to_string(tmpctx, action)); + + if (simulate_wallet_amount) + action->out_sat = AMOUNT_SAT(0); + + if (hide_fee) + action->pays_fee = true; + } +} + static void debug_log_to_json(struct json_stream *response, const char *debug_log) { @@ -75,9 +134,11 @@ static struct command_result *unreserve_get_result(struct command *cmd, &splice_cmd->final_txid); } - json_array_start(response, "log"); - debug_log_to_json(response, splice_cmd->debug_log); - json_array_end(response); + if (splice_cmd->debug_log) { + json_array_start(response, "log"); + debug_log_to_json(response, splice_cmd->debug_log); + json_array_end(response); + } tal_free(abort_pkg); return command_finished(cmd, response); @@ -123,8 +184,8 @@ static struct command_result *do_fail(struct command *cmd, splice_cmd->wetrun = false; plugin_log(cmd->plugin, LOG_DBG, - "splice_error(psbt:%p, splice_cmd_stat:%p)", - splice_cmd->psbt, splice_cmd); + "splice_error(psbt:%p, splice_cmd:%p, str: %s)", + splice_cmd->psbt, splice_cmd, str ?: ""); abort_pkg = tal(cmd->plugin, struct abort_pkg); abort_pkg->splice_cmd = tal_steal(abort_pkg, splice_cmd); @@ -180,66 +241,294 @@ static struct command_result *splice_error_pkg(struct command *cmd, const jsmntok_t *error, struct splice_index_pkg *pkg) { - return splice_error(cmd, methodname, buf, error, pkg->splice_cmd); + struct command_result *res = splice_error(cmd, methodname, buf, error, pkg->splice_cmd); + + tal_free(pkg); + + return res; +} + +static struct splice_script_result *input_wallet(struct splice_cmd *splice_cmd, + size_t *index) +{ + for (size_t i = 0; i < tal_count(splice_cmd->actions); i++) { + struct splice_script_result *action = splice_cmd->actions[i]; + if (action->onchain_wallet + && !action->in_ppm + && amount_sat_is_zero(action->in_sat)) { + if (index) + *index = i; + return action; + } + } + return NULL; +} + +static struct splice_script_result *output_wallet(struct splice_cmd *splice_cmd) +{ + for (size_t i = 0; i < tal_count(splice_cmd->actions); i++) { + struct splice_script_result *action = splice_cmd->actions[i]; + if (!action->onchain_wallet) + continue; + if (action->in_ppm || !amount_sat_is_zero(action->in_sat)) + return action; + } + return NULL; +} + +static struct splice_script_result *fee_action(struct splice_cmd *splice_cmd) +{ + for (size_t i = 0; i < tal_count(splice_cmd->actions); i++) { + struct splice_script_result *action = splice_cmd->actions[i]; + if (action->pays_fee) + return action; + } + return NULL; +} + +static struct command_result *notice_missing_funds(struct command *cmd, + struct splice_cmd *splice_cmd, + struct amount_sat *missing_funds, + struct amount_sat funds_needed, + struct amount_sat *funds_available) +{ + if (!amount_sat_add(missing_funds, *missing_funds, funds_needed)) + return do_fail(cmd, splice_cmd, JSONRPC2_INVALID_PARAMS, + "Unable to add for missing_funds"); + if (!amount_sat_sub(missing_funds, *missing_funds, *funds_available)) + return do_fail(cmd, splice_cmd, JSONRPC2_INVALID_PARAMS, + "Unable to sub for missing_funds"); + *funds_available = AMOUNT_SAT(0); + plugin_log(cmd->plugin, LOG_DBG, " missing_funds detected, now %s", + fmt_amount_sat(tmpctx, *missing_funds)); + return NULL; } +#define NOTICE_MISSING(missing_funds, funds_needed, funds_available) \ + { \ + struct command_result *result; \ + result = notice_missing_funds(cmd, splice_cmd, missing_funds, \ + funds_needed, funds_available); \ + if (result) \ + return result; \ + } + + /* Because wallets increase the fee paying for the fee (due to inputs + * increasing transaction size), this process must be inherently recursive. + * + * Adding to the complication is that wallets may take a percentage of total + * funds in the splice before accomodating the fee. + * + * Finally, any percentage based receiver or contributor of funds may also be + * responsible for the fee. + * + * Supporting all this means we need to build a solver that can be executed + * repeatidly, solving what can be solved on each pass. Some answers inherently + * require answers from prior passes. + * + * This method can be called repeatidly and it will solve more of the splice + * each time. It must be called once at the end with `final_pass` set to true + * to resolve ambigious percentages and place fees in some cases. + * + * After calling with `final_pass` you are free to call it again and in this + * mode it works as an error checker, filling the `extra_funds`, + * `missing_funds`, and `non_wallet_demand` values for verification. + */ static struct command_result *calc_in_ppm_and_fee(struct command *cmd, struct splice_cmd *splice_cmd, - struct amount_sat onchain_fee) + struct amount_sat onchain_fee, + bool final_pass, + struct amount_sat *extra_funds, + struct amount_sat *missing_funds, + struct amount_sat *non_wallet_demand) { - struct splice_script_result *action; - struct amount_sat out_sats = splice_cmd->initial_funds; - bool is_any_paying_fee = false; + struct splice_script_result *action, *last_ppm_action; + struct amount_sat out_sats; + bool sub_fee_from_general; + struct needed_sats; + int ppm_actions; + struct splice_script_result *in_wallet, *out_wallet; + + + add_to_debug_log(splice_cmd, "calc_in_ppm_and_fee"); + + plugin_log(cmd->plugin, LOG_DBG, "calc_in_ppm_and_fee starting" + " calculations%s", final_pass ? " FINALIZING PASS" : ""); + + out_sats = splice_cmd->initial_funds; + sub_fee_from_general = true; + + in_wallet = input_wallet(splice_cmd, NULL); + out_wallet = output_wallet(splice_cmd); /* First add all sats going into general fund */ for (size_t i = 0; i < tal_count(splice_cmd->actions); i++) { action = splice_cmd->actions[i]; - if (action->pays_fee) - is_any_paying_fee = true; + if (action->pays_fee) { + sub_fee_from_general = false; + /* Has the onchain fee been finalized? */ + if (action->onchain_wallet) { + if (!amount_sat_is_zero(action->out_sat) + || !amount_sat_is_zero(action->in_sat)) + sub_fee_from_general = true; + } + /* If we're the input wallet -- the fee may be finalized + * on the output wallet instead. Check there. */ + if (action == in_wallet && out_wallet) { + if (!amount_sat_is_zero(out_wallet->out_sat) + || !amount_sat_is_zero(out_wallet->in_sat)) { + sub_fee_from_general = true; + } + + } + } + plugin_log(cmd->plugin, LOG_DBG, " plus %s (pays_fee %s, " + "out_ppm %u, out_sat %s, in_ppm %u, in_sat %s)", + fmt_amount_sat(tmpctx, action->out_sat), + action->pays_fee ? "yes" : "no", + action->out_ppm, + fmt_amount_sat(tmpctx, action->out_sat), + action->in_ppm, + fmt_amount_sat(tmpctx, action->in_sat)); if (!amount_sat_add(&out_sats, out_sats, action->out_sat)) return do_fail(cmd, splice_cmd, JSONRPC2_INVALID_PARAMS, "Unable to add out_sats"); - if (action->out_ppm) + if (action->out_ppm && !action->onchain_wallet) return do_fail(cmd, splice_cmd, JSONRPC2_INVALID_PARAMS, "Unable to resolve out_ppm"); } + *non_wallet_demand = AMOUNT_SAT(0); + *missing_funds = AMOUNT_SAT(0); + /* Now take away all sats being spent by general fund */ for (size_t i = 0; i < tal_count(splice_cmd->actions); i++) { action = splice_cmd->actions[i]; + plugin_log(cmd->plugin, LOG_DBG, " minus %s", + fmt_amount_sat(tmpctx, action->in_sat)); + /* Subtract used funds from out_sats */ if (!amount_sat_sub(&out_sats, out_sats, action->in_sat)) + NOTICE_MISSING(missing_funds, action->in_sat, + &out_sats); + if (action->onchain_wallet) + continue; + /* Add up non_wallet_demand (needed for wallet out_ppm) */ + if (!amount_sat_add(non_wallet_demand, *non_wallet_demand, + action->in_sat)) return do_fail(cmd, splice_cmd, JSONRPC2_INVALID_PARAMS, - "Unable to sub out_sats"); + "Unable to add to non_wallet_demand"); + } + + /* Reduce non_wallet_demand by sats added from channels */ + for (size_t i = 0; i < tal_count(splice_cmd->actions); i++) { + action = splice_cmd->actions[i]; + if (!action->channel_id) + continue; + if (!amount_sat_sub(non_wallet_demand, *non_wallet_demand, + action->out_sat)) + *non_wallet_demand = AMOUNT_SAT(0); } /* If no one voulenteers to pay the fee, we take it out of the general * fund. */ - if (!is_any_paying_fee) { + if (sub_fee_from_general) { + + plugin_log(cmd->plugin, LOG_DBG, " remove %s fee from general" + " fund %s", + fmt_amount_sat(tmpctx, onchain_fee), + fmt_amount_sat(tmpctx, out_sats)); + if (!amount_sat_sub(&out_sats, out_sats, onchain_fee)) + NOTICE_MISSING(missing_funds, onchain_fee, &out_sats); + + if (!amount_sat_add(non_wallet_demand, *non_wallet_demand, + onchain_fee)) return do_fail(cmd, splice_cmd, JSONRPC2_INVALID_PARAMS, - tal_fmt(tmpctx, - "Unable to take onchain fee %s" - " fromm general funds of %s", - fmt_amount_sat(tmpctx, onchain_fee), - fmt_amount_sat(tmpctx, out_sats))); + "Unable to add to non_wallet_demand"); } + *extra_funds = out_sats; + + plugin_log(cmd->plugin, LOG_DBG, " general fund is %s", + fmt_amount_sat(tmpctx, out_sats)); + + ppm_actions = 0; + for (size_t i = 0; i < tal_count(splice_cmd->actions); i++) { + struct amount_sat sat; action = splice_cmd->actions[i]; if (action->in_ppm) { /* ppm percentage calculation: * action->in_sat = out_sats * in_ppm / 1000000 */ - assert(amount_sat_is_zero(action->in_sat)); - if (!amount_sat_mul(&action->in_sat, out_sats, action->in_ppm)) - return do_fail(cmd, splice_cmd, JSONRPC2_INVALID_PARAMS, - "Unable to mul sats & in_ppm"); - action->in_sat = amount_sat_div(action->in_sat, 1000000); - action->in_ppm = 0; + if (!amount_sat_mul(&sat, out_sats, action->in_ppm)) + return do_fail(cmd, splice_cmd, + JSONRPC2_INVALID_PARAMS, + "Unable to mul sats & in_ppm"); + + sat = amount_sat_div(sat, 1000000); + + if (!amount_sat_add(&action->in_sat, action->in_sat, sat)) + return do_fail(cmd, splice_cmd, + JSONRPC2_INVALID_PARAMS, + "Unable to add sats & in_sat"); + if (!amount_sat_is_zero(sat) || final_pass) { + plugin_log(cmd->plugin, LOG_DBG, + " resolving percentage, in_ppm calc" + " %u of %s = %s", + action->in_ppm, + fmt_amount_sat(tmpctx, out_sats), + fmt_amount_sat(tmpctx, sat)); + action->in_ppm = 0; + } + + /* Remove used sats from extra_funds */ + if (!amount_sat_sub(extra_funds, *extra_funds, sat)) { + /* If we can't do that then add to missing */ + NOTICE_MISSING(missing_funds, sat, + extra_funds); + } + + ppm_actions++; + last_ppm_action = action; + } + + if (final_pass && action->pays_fee + && !amount_sat_is_zero(action->in_sat)) { + plugin_log(cmd->plugin, LOG_DBG, + " subtracting fee of %s from %s", + fmt_amount_sat(tmpctx, onchain_fee), + fmt_amount_sat(tmpctx, action->in_sat)); + if (!amount_sat_sub(&action->in_sat, action->in_sat, + onchain_fee)) + NOTICE_MISSING(missing_funds, onchain_fee, + &action->in_sat); + action->pays_fee = false; + } + + if (action->pays_fee && !sub_fee_from_general) { + plugin_log(cmd->plugin, LOG_DBG, + " action pays fee, so removing fee %s from" + " extra_funds %s", + fmt_amount_sat(tmpctx, onchain_fee), + fmt_amount_sat(tmpctx, *extra_funds)); + if (!amount_sat_sub(extra_funds, *extra_funds, + onchain_fee)) + NOTICE_MISSING(missing_funds, onchain_fee, + extra_funds); } + /* Onchain wallet fees are handled seperately */ + if (action->onchain_wallet) + continue; + + if (!final_pass) + continue; + /* If this item pays the fee, subtract it from either their * in_sats or add it to out_sats. */ if (action->pays_fee && !amount_sat_is_zero(action->in_sat)) { + plugin_log(cmd->plugin, LOG_DBG, " sub fee %s", + fmt_amount_sat(tmpctx, onchain_fee)); if (!amount_sat_sub(&action->in_sat, action->in_sat, onchain_fee)) return do_fail(cmd, splice_cmd, @@ -248,6 +537,8 @@ static struct command_result *calc_in_ppm_and_fee(struct command *cmd, " item in_sat"); } if (action->pays_fee && !amount_sat_is_zero(action->out_sat)) { + plugin_log(cmd->plugin, LOG_DBG, "add fee %s", + fmt_amount_sat(tmpctx, onchain_fee)); if (!amount_sat_add(&action->out_sat, action->out_sat, onchain_fee)) return do_fail(cmd, splice_cmd, @@ -257,6 +548,30 @@ static struct command_result *calc_in_ppm_and_fee(struct command *cmd, } } + /* Because of percentage based rounding, we can lose ~1 sat per + * percentage amount receiver. If extra sats is at or below 1 per + * receiver, we simply dump it in the last ppm receiver. */ + if (ppm_actions && !amount_sat_is_zero(*extra_funds) + && amount_sat_less_eq(*extra_funds, amount_sat(ppm_actions))) { + plugin_log(cmd->plugin, LOG_DBG, + " placing %s lost during rounding", + fmt_amount_sat(tmpctx, *extra_funds)); + if (!amount_sat_add(&last_ppm_action->in_sat, + last_ppm_action->in_sat, + *extra_funds)) + return do_fail(cmd, splice_cmd, JSONRPC2_INVALID_PARAMS, + "Failed to add extra sats"); + *extra_funds = AMOUNT_SAT(0); + } + + plugin_log(cmd->plugin, LOG_DBG, "calc_in_ppm_and_fee finished." + " out_sats: %s, extra_funds: %s, missing_funds: %s," + " non_wallet_demand: %s", + fmt_amount_sat(tmpctx, out_sats), + fmt_amount_sat(tmpctx, *extra_funds), + fmt_amount_sat(tmpctx, *missing_funds), + fmt_amount_sat(tmpctx, *non_wallet_demand)); + /* validate result */ for (size_t i = 0; i < tal_count(splice_cmd->actions); i++) { action = splice_cmd->actions[i]; @@ -289,16 +604,21 @@ static bool json_to_msat_to_sat(const char *buffer, const jsmntok_t *tok, return amount_msat_to_sat(sat, msat); } -static struct splice_script_result *output_wallet(struct splice_cmd *splice_cmd) +static struct splice_script_result *make_wallet(struct splice_cmd *splice_cmd) { - for (size_t i = 0; i < tal_count(splice_cmd->actions); i++) { - struct splice_script_result *action = splice_cmd->actions[i]; - if (!action->onchain_wallet) - continue; - if (action->in_ppm || !amount_sat_is_zero(action->in_sat)) - return action; - } - return NULL; + struct splice_script_result *action; + struct splice_cmd_action_state *state; + + action = talz(splice_cmd->actions, struct splice_script_result); + state = talz(splice_cmd->states, struct splice_cmd_action_state); + + action->onchain_wallet = true; + state->state = SPLICE_CMD_NONE; + + tal_arr_expand(&splice_cmd->actions, action); + tal_arr_expand(&splice_cmd->states, state); + + return action; } static struct command_result *addpsbt_get_result(struct command *cmd, @@ -334,10 +654,28 @@ static struct command_result *addpsbt_get_result(struct command *cmd, JSONRPC2_INVALID_PARAMS, "Unable to add excess sats"); + plugin_log(cmd->plugin, LOG_DBG, + "Received input(s) with %s", + fmt_amount_sat(tmpctx, action->out_sat)); + out_wallet = output_wallet(splice_cmd); + plugin_log(cmd->plugin, LOG_DBG, + "Adding excess sats back into out wallet %s" + " which already has %s", + fmt_amount_sat(tmpctx, excess_sat), + out_wallet + ? fmt_amount_sat(tmpctx, + out_wallet->in_sat) + : "(NO WALLET)"); + + if (!out_wallet) { + plugin_log(cmd->plugin, LOG_DBG, "Generating" + " output wallet."); + out_wallet = make_wallet(splice_cmd); + } + if (out_wallet) { - if (!out_wallet->in_ppm - && !amount_sat_add(&out_wallet->in_sat, + if (!amount_sat_add(&out_wallet->in_sat, out_wallet->in_sat, excess_sat)) return do_fail(cmd, splice_cmd, @@ -372,12 +710,14 @@ static struct command_result *addpsbt_get_result(struct command *cmd, static struct command_result *onchain_wallet_fund(struct command *cmd, struct splice_cmd *splice_cmd, - size_t index) + size_t index, + struct amount_sat already_funded) { struct splice_script_result *action = splice_cmd->actions[index]; struct splice_cmd_action_state *state = splice_cmd->states[index]; struct out_req *req; struct splice_index_pkg *pkg; + struct amount_sat sats; const char *command; bool addinginputs = !amount_sat_is_zero(action->out_sat); @@ -389,21 +729,34 @@ static struct command_result *onchain_wallet_fund(struct command *cmd, if (addinginputs) { command = "addpsbtinput"; splice_cmd->wallet_inputs_to_signed++; - /* DTODO track which specific inputs are added and only sign - * those */ } req = jsonrpc_request_start(cmd, command, addpsbt_get_result, splice_error_pkg, pkg); - if (!amount_sat_is_zero(action->out_sat)) { - json_add_sats(req->js, "satoshi", action->out_sat); + if (addinginputs) { + sats = action->out_sat; + if (!amount_sat_sub(&sats, sats, already_funded)) + return do_fail(cmd, splice_cmd, JSONRPC2_INVALID_PARAMS, + tal_fmt(tmpctx, + "Internal error; unable to sub" + " already_funded %s sats from out_stats" + " %s onchain_wallet_fund", + fmt_amount_sat(tmpctx, already_funded), + fmt_amount_sat(tmpctx, sats))); + json_add_sats(req->js, "satoshi", sats); assert(splice_cmd->feerate_per_kw); json_add_u32(req->js, "min_feerate", splice_cmd->feerate_per_kw); + + plugin_log(cmd->plugin, LOG_DBG, "Adding input of at least %s", + fmt_amount_sat(tmpctx, sats)); } else { json_add_sats(req->js, "satoshi", action->in_sat); + + plugin_log(cmd->plugin, LOG_DBG, "Adding output of %s", + fmt_amount_sat(tmpctx, action->in_sat)); } json_add_psbt(req->js, "initialpsbt", splice_cmd->psbt); @@ -411,7 +764,14 @@ static struct command_result *onchain_wallet_fund(struct command *cmd, if (addinginputs) json_add_bool(req->js, "mark_our_inputs", true); - state->state = SPLICE_CMD_DONE; + if (state->state == SPLICE_CMD_PENDING) { + plugin_log(cmd->plugin, LOG_DBG, "Not marking index %d done" + " because it is pending", (int)index); + } else { + plugin_log(cmd->plugin, LOG_DBG, "Marking index %d done", + (int)index); + state->state = SPLICE_CMD_DONE; + } return send_outreq(req); } @@ -423,7 +783,7 @@ static struct command_result *feerate_get_result(struct command *cmd, struct splice_cmd *splice_cmd) { const jsmntok_t *tok = json_get_member(buf, result, "perkw"); - tok = json_get_member(buf, tok, "opening"); + tok = json_get_member(buf, tok, "splice"); if (!json_to_u32(buf, tok, &splice_cmd->feerate_per_kw)) return command_fail_badparam(cmd, "opening", buf, @@ -454,45 +814,123 @@ static struct command_result *load_feerate(struct command *cmd, return send_outreq(req); } +static struct amount_sat wallet_funding_amnt(struct splice_cmd *splice_cmd) +{ + struct amount_sat wallet_funding = AMOUNT_SAT(0); + + /* Being unable to wallet inputs shouldn't happen, so we log UNUSUAL */ + for (size_t i = 0; i < tal_count(splice_cmd->actions); i++) { + if (splice_cmd->actions[i]->onchain_wallet) { + if (!amount_sat_add(&wallet_funding, wallet_funding, + splice_cmd->actions[i]->out_sat)) + plugin_log(splice_cmd->cmd->plugin, LOG_UNUSUAL, + "Failed to add out_sat %s to" + " wallet_funding %s", + fmt_amount_sat(tmpctx, splice_cmd->actions[i]->out_sat), + fmt_amount_sat(tmpctx, wallet_funding)); + } + } + + for (size_t i = 0; i < tal_count(splice_cmd->actions); i++) { + if (splice_cmd->actions[i]->onchain_wallet) { + if (!amount_sat_sub(&wallet_funding, wallet_funding, + splice_cmd->actions[i]->in_sat)) + wallet_funding = AMOUNT_SAT(0); + } + } + + return wallet_funding; +} + +static bool unresolved_wallet_inputs(struct splice_cmd *splice_cmd) +{ + struct amount_sat wallet_funding = wallet_funding_amnt(splice_cmd); + + return amount_sat_less(wallet_funding, splice_cmd->needed_funds); +} + static size_t calc_weight(struct splice_cmd *splice_cmd, bool simulate_wallet_outputs) { struct splice_script_result *action; + struct plugin *plugin = splice_cmd->cmd->plugin; struct wally_psbt *psbt = splice_cmd->psbt; - size_t weight = 0; + size_t lweight = 0, weight = 0; size_t extra_inputs = 0; size_t extra_outputs = 0; + bool add_wallet_output = output_wallet(splice_cmd) ? true : false; + + plugin_log(plugin, LOG_DBG, "Counting potenetial tx weight;"); /* BOLT #2: * The rest of the transaction bytes' fees are the responsibility of * the peer who contributed that input or output via `tx_add_input` or * `tx_add_output`, at the agreed upon `feerate`. */ - for (size_t i = 0; i < psbt->num_inputs; i++) - weight += psbt_input_get_weight(psbt, i); + for (size_t i = 0; i < psbt->num_inputs; i++) { + weight += psbt_input_get_weight(psbt, i, PSBT_GUESS_2OF2); + plugin_log(plugin, LOG_DBG, " Counting input; weight: %lu", + weight - lweight); + lweight = weight; + } - for (size_t i = 0; i < psbt->num_outputs; i++) - weight += psbt_output_get_weight(psbt, i); + if (unresolved_wallet_inputs(splice_cmd)) { + add_wallet_output = true; + weight += bitcoin_tx_input_weight(false, + bitcoin_tx_input_witness_weight(UTXO_P2TR) - 1); + plugin_log(plugin, LOG_DBG, " Simulating input (wallet);" + " weight: %lu", weight - lweight); + lweight = weight; + } - /* Count the splice input & outputs manually */ + /* Count the splice input manually */ for (size_t i = 0; i < tal_count(splice_cmd->actions); i++) { action = splice_cmd->actions[i]; - if (simulate_wallet_outputs && action->onchain_wallet) { - if (!amount_sat_is_zero(action->in_sat) || action->in_ppm) { - weight += bitcoin_tx_output_weight(BITCOIN_SCRIPTPUBKEY_P2TR_LEN); - extra_outputs++; - } + if (action->channel_id) { + weight += bitcoin_tx_input_weight(false, + bitcoin_tx_2of2_input_witness_weight() - 1); + plugin_log(plugin, LOG_DBG, " Simulating input" + " (channel); weight:" + " %lu", weight - lweight); + lweight = weight; + extra_inputs++; + } + } - } else if (splice_cmd->actions[i]->channel_id) { + /* Count the splice outputs manually */ + for (size_t i = 0; i < tal_count(splice_cmd->actions); i++) { + action = splice_cmd->actions[i]; + if (action->onchain_wallet) { + if (!amount_sat_is_zero(action->in_sat) || action->in_ppm) + add_wallet_output = true; + assert(!splice_cmd->actions[i]->channel_id); + } + if (splice_cmd->actions[i]->channel_id) { weight += bitcoin_tx_output_weight(BITCOIN_SCRIPTPUBKEY_P2WSH_LEN); - weight += bitcoin_tx_input_weight(true, - bitcoin_tx_2of2_input_witness_weight()); - extra_inputs++; + plugin_log(plugin, LOG_DBG, " Simulating output" + " (channel); weight:" + " %lu", weight - lweight); + lweight = weight; + extra_outputs++; } } - /* DTODO make a test to confirm weight calculation is correct */ + if (simulate_wallet_outputs && add_wallet_output) { + weight += bitcoin_tx_output_weight(BITCOIN_SCRIPTPUBKEY_P2TR_LEN); + extra_outputs++; + plugin_log(plugin, LOG_DBG, " Simulating output" + " (wallet); weight:" + " %lu", weight - lweight); + lweight = weight; + } + + for (size_t i = 0; i < psbt->num_outputs; i++) { + weight += psbt_output_get_weight(psbt, i); + plugin_log(plugin, LOG_DBG, " Adding output; weight: %lu", + weight - lweight); + lweight = weight; + } /* BOLT #2: * The *initiator* is responsible for paying the fees for the following fields, @@ -506,7 +944,11 @@ static size_t calc_weight(struct splice_cmd *splice_cmd, */ weight += bitcoin_tx_core_weight(psbt->num_inputs + extra_inputs, psbt->num_outputs + extra_outputs); + plugin_log(plugin, LOG_DBG, " Adding bitcoin_tx_core_weight;" + " weight: %lu", weight - lweight); + lweight = weight; + plugin_log(plugin, LOG_DBG, "Total weight: %lu", weight); return weight; } @@ -748,6 +1190,8 @@ static struct command_result *splice_signed_error_pkg(struct command *cmd, error->end - error->start); abort_pkg->code = -1; + tal_free(pkg); + return make_error(cmd, abort_pkg, "splice_signed_error"); } @@ -805,45 +1249,6 @@ static struct command_result *check_emergency_sat(struct command *cmd, return NULL; } -static const char *cmd_state_string(enum splice_cmd_state state) -{ - switch (state) { - case SPLICE_CMD_NONE: - return " "; - case SPLICE_CMD_INIT: - return " INIT "; - case SPLICE_CMD_UPDATE: - return " UPDATE "; - case SPLICE_CMD_UPDATE_NEEDS_CHANGES: - return "UPDATE_NEEDS_CHANGES"; - case SPLICE_CMD_UPDATE_DONE: - return " UPDATE_DONE "; - case SPLICE_CMD_RECVED_SIGS: - return " RECVED_SIGS "; - case SPLICE_CMD_DONE: - return " DONE "; - } - return NULL; -} - -static void add_to_debug_log(struct splice_cmd *scmd, const char *phase) -{ - char **log = &scmd->debug_log; - if (!*log) - return; - - tal_append_fmt(log, "#%d: (%s)\n", ++scmd->debug_counter, phase); - - for (size_t i = 0; i < tal_count(scmd->actions); i++) { - struct splice_script_result *action = scmd->actions[i]; - struct splice_cmd_action_state *state = scmd->states[i]; - - tal_append_fmt(log, "[%s] %s\n", - cmd_state_string(state->state), - splice_to_string(tmpctx, action)); - } -} - static struct command_result *handle_wetrun(struct command *cmd, struct splice_cmd *splice_cmd) { @@ -875,6 +1280,324 @@ static struct command_result *handle_wetrun(struct command *cmd, return send_outreq(req); } +static struct command_result *handle_wallet_fund(struct command *cmd, + struct splice_cmd *splice_cmd, + struct amount_sat onchain_fee) +{ + size_t index; + struct splice_script_result *input, *output; + struct amount_sat already_funded, wallet_funding, missing_funds; + + wallet_funding = wallet_funding_amnt(splice_cmd); + + if (!amount_sat_sub(&missing_funds, splice_cmd->needed_funds, + wallet_funding)) + return do_fail(cmd, splice_cmd, + JSONRPC2_INVALID_PARAMS, + "Failed to calculate missing funds"); + + plugin_log(cmd->plugin, LOG_INFORM, "handle_wallet_fund needed_funds" + " %s, current_funds %s, missing_funds %s", + fmt_amount_sat(tmpctx, splice_cmd->needed_funds), + fmt_amount_sat(tmpctx, wallet_funding), + fmt_amount_sat(tmpctx, missing_funds)); + + input = input_wallet(splice_cmd, &index); + output = output_wallet(splice_cmd); + + if (!input) + return do_fail(cmd, splice_cmd, + JSONRPC2_INVALID_PARAMS, + "Can't fund wallet with no input wallet"); + + /* Can we fund the input by just subtracting from the output? */ + if (output && amount_sat_greater(output->in_sat, missing_funds)) { + + plugin_log(cmd->plugin, LOG_INFORM, "Taking %s" + " from output wallet %s to cover fee", + fmt_amount_sat(tmpctx, missing_funds), + fmt_amount_sat(tmpctx, output->in_sat)); + + if (!amount_sat_sub(&output->in_sat, output->in_sat, + missing_funds)) + return do_fail(cmd, splice_cmd, + JSONRPC2_INVALID_PARAMS, + tal_fmt(tmpctx, + "Failed to subtract fee amount %s" + " from output %s", + fmt_amount_sat(tmpctx, missing_funds), + fmt_amount_sat(tmpctx, output->in_sat))); + + return NULL; + } + + already_funded = input->out_sat; + + if (!amount_sat_add(&input->out_sat, input->out_sat, missing_funds)) + return do_fail(cmd, splice_cmd, + JSONRPC2_INVALID_PARAMS, + "Unable to add missing funds to wallet input"); + + if (!amount_sat_sub(&splice_cmd->needed_funds, + splice_cmd->needed_funds, + onchain_fee)) + return do_fail(cmd, splice_cmd, + JSONRPC2_INVALID_PARAMS, + "Internal error; unable" + " to subtract fee from" + " needed_funds"); + + plugin_log(cmd->plugin, LOG_INFORM, "Requesting funding" + " amount + %s fee wallet inputs for %s" + " with %s already_funded", + fmt_amount_sat(tmpctx, onchain_fee), + fmt_amount_sat(tmpctx, input->out_sat), + fmt_amount_sat(tmpctx, already_funded)); + + return onchain_wallet_fund(cmd, splice_cmd, + index, + already_funded); +} + +static struct command_result *handle_fee_and_ppm(struct command *cmd, + struct splice_cmd *splice_cmd) +{ + struct command_result *result; + struct amount_sat onchain_fee; + size_t weight; + struct amount_sat extra_funds, missing_funds, non_wallet_demand, sat; + struct splice_script_result *funding_wallet_action = NULL; + size_t funding_wallet_index; + + funding_wallet_action = input_wallet(splice_cmd, &funding_wallet_index); + + /* We calculate the weight with simulated wallet */ + weight = calc_weight(splice_cmd, true); + onchain_fee = amount_tx_fee(splice_cmd->feerate_per_kw, weight); + + plugin_log(cmd->plugin, LOG_INFORM, + "Splice fee is %s at %"PRIu32" perkw (%.02f sat/vB) " + "on tx where our weight units are %lu", + fmt_amount_sat(tmpctx, onchain_fee), + splice_cmd->feerate_per_kw, + 4 * splice_cmd->feerate_per_kw / 1000.0f, + weight); + + /* If the wallet pays the fee, we need to add input(s) to cover + * it. This can potentially need to be done mulitple times since + * adding an input increases the needed fee. */ + if (funding_wallet_action && funding_wallet_action->pays_fee + && !funding_wallet_action->out_ppm + && splice_cmd->states[funding_wallet_index]->state != SPLICE_CMD_PENDING) { + + result = calc_in_ppm_and_fee(cmd, splice_cmd, + onchain_fee, + false, + &extra_funds, + &missing_funds, + &non_wallet_demand); + if (result) + return result; + + if (!amount_sat_add(&splice_cmd->needed_funds, + splice_cmd->needed_funds, + onchain_fee)) + return do_fail(cmd, splice_cmd, + JSONRPC2_INVALID_PARAMS, + "Internal error; unable to add" + " fee to needed_funds"); + + /* We need to add wallet funds (again?) */ + if (unresolved_wallet_inputs(splice_cmd)) { + result = handle_wallet_fund(cmd, splice_cmd, + onchain_fee); + if (result) + return result; + } + } + + /* Now we're ready to calculate wallet funding in_ppm. This is + * a special case where we take a percentage of the + * non_wallet_demand. */ + if (funding_wallet_action && funding_wallet_action->out_ppm) { + + result = calc_in_ppm_and_fee(cmd, splice_cmd, + onchain_fee, + false, + &extra_funds, + &missing_funds, + &non_wallet_demand); + if (result) + return result; + + if (!amount_sat_mul(&sat, non_wallet_demand, + funding_wallet_action->out_ppm)) + return do_fail(cmd, splice_cmd, + JSONRPC2_INVALID_PARAMS, + "Unable to mul sats & out_ppm"); + sat = amount_sat_div(sat, 1000000); + + plugin_log(cmd->plugin, LOG_DBG, + "Processing wallet percentage," + " non_wallet_demand %s * %uppm = %s", + fmt_amount_sat(tmpctx, non_wallet_demand), + funding_wallet_action->out_ppm, + fmt_amount_sat(tmpctx, sat)); + + if (funding_wallet_action->pays_fee) { + if (!amount_sat_add(&sat, sat, onchain_fee)) + return do_fail(cmd, splice_cmd, + JSONRPC2_INVALID_PARAMS, + "Failed to add onchain fee to" + " ppm funding wallet"); + + plugin_log(cmd->plugin, LOG_DBG, + "Adding onchain_fee %s = %s", + fmt_amount_sat(tmpctx, onchain_fee), + fmt_amount_sat(tmpctx, sat)); + } + + /* Do we need to remove funds and put in the wallet? */ + if (!amount_sat_is_zero(extra_funds)) { + plugin_log(cmd->plugin, LOG_DBG, + "Extra funds %s", + fmt_amount_sat(tmpctx, extra_funds)); + } + + /* Do we need to add funds to the wallet? */ + if (!amount_sat_is_zero(sat)) { + splice_cmd->states[funding_wallet_index]->state = SPLICE_CMD_PENDING; + funding_wallet_action->out_ppm = 0; + + if (!amount_sat_add(&splice_cmd->needed_funds, + splice_cmd->needed_funds, + sat)) + return do_fail(cmd, splice_cmd, + JSONRPC2_INVALID_PARAMS, + "Internal error; unable" + " to add fee to" + " needed_funds (wallet" + " ppm)"); + + plugin_log(cmd->plugin, LOG_DBG, + "Wallet funding pass for sats" + " %s, total %s", + fmt_amount_sat(tmpctx, sat), + fmt_amount_sat(tmpctx, splice_cmd->needed_funds)); + + result = handle_wallet_fund(cmd, splice_cmd, + AMOUNT_SAT(0)); + if (result) + return result; + } + } + + /* If adding funds required more funds to pay for fees, we must repeat + * the funding operation */ + if (funding_wallet_action + && splice_cmd->states[funding_wallet_index]->state == SPLICE_CMD_PENDING) { + + result = calc_in_ppm_and_fee(cmd, splice_cmd, + onchain_fee, + false, + &extra_funds, + &missing_funds, + &non_wallet_demand); + if (result) + return result; + + /* Are we done? */ + if (amount_sat_is_zero(missing_funds)) { + plugin_log(cmd->plugin, LOG_DBG, + "Wallet percentage processing done because" + " we have no missing funds"); + splice_cmd->states[funding_wallet_index]->state = SPLICE_CMD_NONE; + } else if (funding_wallet_action->pays_fee + || !fee_action(splice_cmd)) { + /* We only do extra rounds if our wallet pays the fee + * or if no one is paying fee (ie fee is paied from) + * general funds */ + + if (amount_sat_greater(missing_funds, onchain_fee)) + return do_fail(cmd, splice_cmd, + JSONRPC2_INVALID_PARAMS, + tal_fmt(tmpctx, + "Internal error; should never" + " need an extra pass on ppm" + " wallet funding that is larger" + " than onchain_fee." + " missing_funds %s," + " onchain_fee %s", + fmt_amount_sat(tmpctx, missing_funds), + fmt_amount_sat(tmpctx, onchain_fee))); + + if (!amount_sat_add(&splice_cmd->needed_funds, + splice_cmd->needed_funds, + missing_funds)) + return do_fail(cmd, splice_cmd, + JSONRPC2_INVALID_PARAMS, + "Internal error; unable" + " to add fee to" + " needed_funds (wallet" + " ppm)"); + + plugin_log(cmd->plugin, LOG_DBG, + "Extra wallet funding pass for missing sats" + " %s, total %s", + fmt_amount_sat(tmpctx, missing_funds), + fmt_amount_sat(tmpctx, splice_cmd->needed_funds)); + + result = handle_wallet_fund(cmd, splice_cmd, + AMOUNT_SAT(0)); + if (result) + return result; + else + splice_cmd->states[funding_wallet_index]->state = SPLICE_CMD_NONE; + } else { + splice_cmd->states[funding_wallet_index]->state = SPLICE_CMD_NONE; + } + } + + /* Success! */ + plugin_log(cmd->plugin, LOG_INFORM, "Wallet funding done"); + + /* Do a final pass to update values */ + result = calc_in_ppm_and_fee(cmd, splice_cmd, + onchain_fee, + true, + &extra_funds, + &missing_funds, + &non_wallet_demand); + if (result) + return result; + + /* One more pass to check for missing or extra funds */ + result = calc_in_ppm_and_fee(cmd, splice_cmd, + onchain_fee, + false, + &extra_funds, + &missing_funds, + &non_wallet_demand); + if (result) + return result; + + if (!amount_sat_is_zero(extra_funds)) + return do_fail(cmd, splice_cmd, JSONRPC2_INVALID_PARAMS, + tal_fmt(tmpctx, + "Script calculation ended with" + " unclaimed extra funds %s", + fmt_amount_sat(tmpctx, + extra_funds))); + if (!amount_sat_is_zero(missing_funds)) + return do_fail(cmd, splice_cmd, JSONRPC2_INVALID_PARAMS, + tal_fmt(tmpctx, + "Script is missing %s funds", + fmt_amount_sat(tmpctx, + missing_funds))); + + return NULL; +} + static struct command_result *continue_splice(struct command *cmd, struct splice_cmd *splice_cmd) { @@ -882,46 +1605,38 @@ static struct command_result *continue_splice(struct command *cmd, struct splice_cmd_action_state *state; struct command_result *result; size_t index; - size_t weight; - struct amount_sat onchain_fee; bool multiple_require_sigs; + struct splice_script_result *funding_wallet_action = NULL; + size_t funding_wallet_index; add_to_debug_log(splice_cmd, "continue_splice"); if (!splice_cmd->feerate_per_kw) return load_feerate(cmd, splice_cmd); - /* On first pass we add wallet actions that contribute funds */ - for (size_t i = 0; i < tal_count(splice_cmd->actions); i++) { - action = splice_cmd->actions[i]; - state = splice_cmd->states[i]; - if (state->state != SPLICE_CMD_NONE) - continue; - if (splice_cmd->actions[i]->onchain_wallet - && !amount_sat_is_zero(splice_cmd->actions[i]->out_sat)) { - state->state = SPLICE_CMD_DONE; - return onchain_wallet_fund(cmd, splice_cmd, i); - } - } + funding_wallet_action = input_wallet(splice_cmd, &funding_wallet_index); - if (!splice_cmd->fee_calculated) { - splice_cmd->fee_calculated = true; + /* On first pass we add wallet actions that contribute funds but only + * if it is a static amount */ + if (funding_wallet_action + && splice_cmd->states[funding_wallet_index]->state == SPLICE_CMD_NONE + && !funding_wallet_action->out_ppm && !funding_wallet_action->pays_fee) { - /* We calculate the weight simulator wallet outputs */ - weight = calc_weight(splice_cmd, true); - onchain_fee = amount_tx_fee(splice_cmd->feerate_per_kw, weight); + funding_wallet_action->out_sat = splice_cmd->needed_funds; + plugin_log(cmd->plugin, LOG_INFORM, "funding static" + " wallet inputs for %s", + fmt_amount_sat(tmpctx, funding_wallet_action->out_sat)); + return onchain_wallet_fund(cmd, splice_cmd, + funding_wallet_index, AMOUNT_SAT(0)); + } - plugin_log(cmd->plugin, LOG_INFORM, - "Splice fee is %s at %"PRIu32" perkw (%.02f sat/vB) " - "on tx where our personal vbytes are %.02f", - fmt_amount_sat(tmpctx, onchain_fee), - splice_cmd->feerate_per_kw, - 4 * splice_cmd->feerate_per_kw / 1000.0f, - weight / 4.0f); + if (!splice_cmd->fee_calculated) { - result = calc_in_ppm_and_fee(cmd, splice_cmd, onchain_fee); + result = handle_fee_and_ppm(cmd, splice_cmd); if (result) return result; + + splice_cmd->fee_calculated = true; } /* Only after fee calcualtion can we add wallet actions taking funds */ @@ -930,10 +1645,14 @@ static struct command_result *continue_splice(struct command *cmd, state = splice_cmd->states[i]; if (state->state != SPLICE_CMD_NONE) continue; - if (splice_cmd->actions[i]->onchain_wallet - && !amount_sat_is_zero(splice_cmd->actions[i]->in_sat)) { + if (action->onchain_wallet) { + /* Add output for wallet funds */ + if(!amount_sat_is_zero(action->in_sat)) + return onchain_wallet_fund(cmd, splice_cmd, i, + AMOUNT_SAT(0)); + /* else: funds to wallet is 0 sats, no need to add + * output */ state->state = SPLICE_CMD_DONE; - return onchain_wallet_fund(cmd, splice_cmd, i); } } @@ -1028,9 +1747,10 @@ static struct command_result *execute_splice(struct command *cmd, action = splice_cmd->actions[i]; state = splice_cmd->states[i]; - if (splice_cmd->actions[i]->out_ppm) + if (action->out_ppm && !action->onchain_wallet) return do_fail(cmd, splice_cmd, JSONRPC2_INVALID_PARAMS, - "Should be no out_ppm on final"); + "Should be no out_ppm on final" + " except for the wallet"); if (splice_cmd->actions[i]->pays_fee) { if (pays_fee) return do_fail(cmd, splice_cmd, @@ -1079,6 +1799,11 @@ static struct command_result *execute_splice(struct command *cmd, state = splice_cmd->states[i]; char *bitcoin_address; + /* Today UINT32_MAX just means 100%. In the future it might mean + * something different. */ + if (action->out_ppm == UINT32_MAX) + action->out_ppm = 1000000; + /* Load (only one) feerate if user provided one */ if (action->feerate_per_kw) { if (splice_cmd->feerate_per_kw) @@ -1138,6 +1863,21 @@ static struct command_result *execute_splice(struct command *cmd, } } + /* Set needed funds to the wallet contributions. */ + for (size_t i = 0; i < tal_count(splice_cmd->actions); i++) { + action = splice_cmd->actions[i]; + state = splice_cmd->states[i]; + if (action->onchain_wallet + && !amount_sat_is_zero(action->out_sat)) { + splice_cmd->needed_funds = action->out_sat; + plugin_log(cmd->plugin, LOG_INFORM, "setting" + " needed_funds to %s", + fmt_amount_sat(tmpctx, + splice_cmd->needed_funds)); + action->out_sat = AMOUNT_SAT(0); + } + } + return continue_splice(cmd, splice_cmd); } @@ -1262,29 +2002,8 @@ validate_splice_cmd(struct splice_cmd *splice_cmd) { struct splice_script_result *action; int paying_fee_count = 0; - int channels = 0; for (size_t i = 0; i < tal_count(splice_cmd->actions); i++) { action = splice_cmd->actions[i]; - /* Taking fee from onchain wallet requires recursive looping - * since adding more funds adds more input bytes. We don't - * support it for now. */ - if (action->pays_fee && action->onchain_wallet - && action->out_ppm) - return command_fail(splice_cmd->cmd, - JSONRPC2_INVALID_PARAMS, - "Don't support dynamic fee being" - " added to onchain wallet"); - if (action->onchain_wallet && action->out_ppm) - return command_fail(splice_cmd->cmd, - JSONRPC2_INVALID_PARAMS, - "Don't support dynamic wallet" - " funding amounts for now"); - if (action->pays_fee && action->onchain_wallet - && !amount_sat_is_zero(action->out_sat)) - return command_fail(splice_cmd->cmd, - JSONRPC2_INVALID_PARAMS, - "Don't support wallet funding" - " being used for fee"); if (action->pays_fee) { if (paying_fee_count) return command_fail(splice_cmd->cmd, @@ -1298,14 +2017,6 @@ validate_splice_cmd(struct splice_cmd *splice_cmd) JSONRPC2_INVALID_PARAMS, "Dynamic bitcoin address amounts" " not supported for now"); - if (action->channel_id) { - if (channels) - return command_fail(splice_cmd->cmd, - JSONRPC2_INVALID_PARAMS, - "Multi-channel splice not" - "supported for now"); - channels++; - } if (action->bitcoin_address) return command_fail(splice_cmd->cmd, JSONRPC2_INVALID_PARAMS, @@ -1435,6 +2146,7 @@ json_splice(struct command *cmd, const char *buf, const jsmntok_t *params) splice_cmd->emergency_sat = AMOUNT_SAT(0); splice_cmd->debug_log = *debug_log ? tal_strdup(splice_cmd, "") : NULL; splice_cmd->debug_counter = 0; + splice_cmd->needed_funds = AMOUNT_SAT(0); memset(&splice_cmd->final_txid, 0, sizeof(splice_cmd->final_txid)); /* If script validates as json, parse it as json instead */ diff --git a/plugins/spender/splice.h b/plugins/spender/splice.h index 4f4e1ad2c348..f52777fe915e 100644 --- a/plugins/spender/splice.h +++ b/plugins/spender/splice.h @@ -2,6 +2,7 @@ #define LIGHTNING_PLUGINS_SPENDER_SPLICE_H #include "config.h" +#include #include extern const struct plugin_command splice_commands[]; @@ -14,6 +15,7 @@ enum splice_cmd_state { SPLICE_CMD_UPDATE_NEEDS_CHANGES, SPLICE_CMD_UPDATE_DONE, SPLICE_CMD_RECVED_SIGS, + SPLICE_CMD_PENDING, SPLICE_CMD_DONE, }; @@ -54,6 +56,8 @@ struct splice_cmd { char *debug_log; /* Counter used for more readable debug logs */ int debug_counter; + /* Remaining funds needed from wallet */ + struct amount_sat needed_funds; }; #endif /* LIGHTNING_PLUGINS_SPENDER_SPLICE_H */ diff --git a/tests/plugins/channeld_fakenet.c b/tests/plugins/channeld_fakenet.c index 7714b9d79723..53f27f253675 100644 --- a/tests/plugins/channeld_fakenet.c +++ b/tests/plugins/channeld_fakenet.c @@ -958,10 +958,11 @@ static void handle_offer_htlc(struct info *info, const u8 *inmsg) static void handle_feerates(struct info *info, const u8 *inmsg) { - u32 feerate, min, max, penalty; + u32 feerate, min, max, penalty, opening, splicing; if (!fromwire_channeld_feerates(inmsg, &feerate, - &min, &max, &penalty)) + &min, &max, &penalty, &opening, + &splicing)) master_badmsg(WIRE_CHANNELD_FEERATES, inmsg); /* BOLT #2: @@ -1053,7 +1054,7 @@ static struct channel *handle_init(struct info *info, const u8 *init_msg) struct secret last_remote_per_commit_secret; struct penalty_base *pbases; struct channel_type *channel_type; - u32 feerate_min, feerate_max, feerate_penalty; + u32 feerate_splice, feerate_min, feerate_max, feerate_penalty, feerate_opening; struct pubkey remote_per_commit; struct pubkey old_remote_per_commit; u32 commit_msec; @@ -1093,9 +1094,11 @@ static struct channel *handle_init(struct info *info, const u8 *init_msg) &lease_expiry, &conf[LOCAL], &conf[REMOTE], &info->fee_states, + &feerate_splice, &feerate_min, &feerate_max, &feerate_penalty, + &feerate_opening, &their_commit_sig, &funding_pubkey[REMOTE], &points[REMOTE], diff --git a/tests/test_misc.py b/tests/test_misc.py index 20705782ded3..2340c1d6732f 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -2286,6 +2286,7 @@ def test_bitcoind_feerate_floor(node_factory, bitcoind, anchors): "unilateral_close": 44000, 'unilateral_anchor_close': 15000, "penalty": 30000, + "splice": 15020, "min_acceptable": 7500, "max_acceptable": 600000, "floor": 1012, @@ -2329,6 +2330,7 @@ def test_bitcoind_feerate_floor(node_factory, bitcoind, anchors): # This has increased (rounded up) "unilateral_close": 44000, "penalty": 30000, + "splice": 20024, # This has increased (rounded up) "min_acceptable": 20004, "max_acceptable": 600000, @@ -2374,6 +2376,7 @@ def test_bitcoind_feerate_floor(node_factory, bitcoind, anchors): "unilateral_close": 44000, # This has increased (rounded up!) "penalty": 30004, + "splice": 30024, # This has increased (rounded up) "min_acceptable": 30004, "max_acceptable": 600000, @@ -3868,6 +3871,7 @@ def test_force_feerates(node_factory): "unilateral_close": 1111, "unilateral_anchor_close": 1111, "penalty": 1111, + "splice": 1116, "min_acceptable": 1875, "max_acceptable": 150000, "estimates": estimates, @@ -3884,6 +3888,7 @@ def test_force_feerates(node_factory): "unilateral_close": 2222, "unilateral_anchor_close": 2222, "penalty": 2222, + "splice": 2227, "min_acceptable": 1875, "max_acceptable": 150000, "estimates": estimates, @@ -3900,6 +3905,7 @@ def test_force_feerates(node_factory): "unilateral_close": 3333, "unilateral_anchor_close": 3333, "penalty": 6666, + "splice": 3338, "min_acceptable": 1875, "max_acceptable": 150000, "estimates": estimates, diff --git a/tests/test_splice.py b/tests/test_splice.py index a26c983166ad..09219fe9cdbb 100644 --- a/tests/test_splice.py +++ b/tests/test_splice.py @@ -26,7 +26,7 @@ def test_script_splice_out(node_factory, bitcoind, chainparams): # Splice out 100k from first channel, explicitly putting result less fees into onchain wallet spliceamt = 100000 - l1.rpc.splice(f"*:? -> {spliceamt}; 100%-fee -> wallet", force_feerate=True, debug_log=True) + l1.rpc.splice(f"*:? -> {spliceamt}; 100%-fee -> wallet", debug_log=True) p1 = only_one(l1.rpc.listpeerchannels(peer_id=l2.info['id'])['channels']) p2 = only_one(l2.rpc.listpeerchannels(l1.info['id'])['channels']) @@ -122,7 +122,7 @@ def test_script_splice_in(node_factory, bitcoind, chainparams): withdraw_amt = 200000 starting_wallet_msat = withdraw_amt * 10000 - l1.rpc.splice(f"wallet -> {withdraw_amt}; {spliceamt} -> *:?", force_feerate=True, debug_log=True) + l1.rpc.splice(f"wallet -> {withdraw_amt}; {spliceamt} -> *:?", debug_log=True) p1 = only_one(l1.rpc.listpeerchannels(peer_id=l2.info['id'])['channels']) p2 = only_one(l2.rpc.listpeerchannels(l1.info['id'])['channels']) assert p1['inflight'][0]['splice_amount'] == spliceamt @@ -195,3 +195,316 @@ def test_script_splice_in(node_factory, bitcoind, chainparams): l1.wait_for_channel_onchain(l2.info['id']) account_info = only_one([acct for acct in l1.rpc.bkpr_listbalances()['accounts'] if acct['account'] == account_id]) assert not account_info['account_closed'] + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_in(node_factory, bitcoind): + l1, l2, l3 = node_factory.line_graph(3, fundamount=1000000, wait_for_announce=True, opts={'experimental-splicing': None}) + + chan_id1 = l2.get_channel_id(l1) + chan_id2 = l2.get_channel_id(l3) + + # l2 will splice funds into the channels with l1 and l3 at the same time + result = l2.rpc.splice(f"wallet -> 200000+fee; 100000 -> {chan_id1}; 100000 -> {chan_id2}") + + l3.daemon.wait_for_log(r'CHANNELD_NORMAL to CHANNELD_AWAITING_SPLICE') + l2.daemon.wait_for_log(r'CHANNELD_NORMAL to CHANNELD_AWAITING_SPLICE') + l1.daemon.wait_for_log(r'CHANNELD_NORMAL to CHANNELD_AWAITING_SPLICE') + + wait_for(lambda: len(list(bitcoind.rpc.getrawmempool(True).keys())) == 1) + assert result['txid'] in list(bitcoind.rpc.getrawmempool(True).keys()) + + bitcoind.generate_block(6, wait_for_mempool=1) + + l3.daemon.wait_for_log(r'CHANNELD_AWAITING_SPLICE to CHANNELD_NORMAL') + l2.daemon.wait_for_log(r'CHANNELD_AWAITING_SPLICE to CHANNELD_NORMAL') + l1.daemon.wait_for_log(r'CHANNELD_AWAITING_SPLICE to CHANNELD_NORMAL') + + inv = l2.rpc.invoice(10**2, '1', 'no_1') + l1.rpc.pay(inv['bolt11']) + + inv = l3.rpc.invoice(10**2, '2', 'no_2') + l2.rpc.pay(inv['bolt11']) + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_out(node_factory, bitcoind): + l1, l2, l3 = node_factory.line_graph(3, fundamount=1000000, wait_for_announce=True, opts={'experimental-splicing': None}) + + # We need to get funds into l1 -> l2 channel so we can splice it out + inv = l2.rpc.invoice(100000000, '1', 'no_1') + l1.rpc.pay(inv['bolt11']) + + chan_id1 = l2.get_channel_id(l1) + chan_id2 = l2.get_channel_id(l3) + + # l2 will splice funds out of the channels with l1 and l3 at the same time + result = l2.rpc.splice(f"{chan_id1} -> 100000; {chan_id2} -> 100000") + + l3.daemon.wait_for_log(r'CHANNELD_NORMAL to CHANNELD_AWAITING_SPLICE') + l2.daemon.wait_for_log(r'CHANNELD_NORMAL to CHANNELD_AWAITING_SPLICE') + l1.daemon.wait_for_log(r'CHANNELD_NORMAL to CHANNELD_AWAITING_SPLICE') + + wait_for(lambda: len(list(bitcoind.rpc.getrawmempool(True).keys())) == 1) + assert result['txid'] in list(bitcoind.rpc.getrawmempool(True).keys()) + + bitcoind.generate_block(6, wait_for_mempool=1) + + l3.daemon.wait_for_log(r'CHANNELD_AWAITING_SPLICE to CHANNELD_NORMAL') + l2.daemon.wait_for_log(r'CHANNELD_AWAITING_SPLICE to CHANNELD_NORMAL') + l1.daemon.wait_for_log(r'CHANNELD_AWAITING_SPLICE to CHANNELD_NORMAL') + + inv = l2.rpc.invoice(10**2, '2', 'no_2') + l1.rpc.pay(inv['bolt11']) + + inv = l3.rpc.invoice(10**2, '3', 'no_3') + l2.rpc.pay(inv['bolt11']) + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_inout(node_factory, bitcoind): + l1, l2, l3 = node_factory.line_graph(3, fundamount=1000000, wait_for_announce=True, opts={'experimental-splicing': None}) + + chan_id1 = l2.get_channel_id(l1) + chan_id2 = l2.get_channel_id(l3) + + # move sats from chan 2 into chan 1 + result = l2.rpc.splice(f"wallet -> 10000; 100000 -> {chan_id1}; {chan_id2} -> 100000") + + l3.daemon.wait_for_log(r'CHANNELD_NORMAL to CHANNELD_AWAITING_SPLICE') + l2.daemon.wait_for_log(r'CHANNELD_NORMAL to CHANNELD_AWAITING_SPLICE') + l1.daemon.wait_for_log(r'CHANNELD_NORMAL to CHANNELD_AWAITING_SPLICE') + + wait_for(lambda: len(list(bitcoind.rpc.getrawmempool(True).keys())) == 1) + assert result['txid'] in list(bitcoind.rpc.getrawmempool(True).keys()) + + bitcoind.generate_block(6, wait_for_mempool=1) + + l3.daemon.wait_for_log(r'CHANNELD_AWAITING_SPLICE to CHANNELD_NORMAL') + l2.daemon.wait_for_log(r'CHANNELD_AWAITING_SPLICE to CHANNELD_NORMAL') + l1.daemon.wait_for_log(r'CHANNELD_AWAITING_SPLICE to CHANNELD_NORMAL') + + inv = l2.rpc.invoice(10**2, '2', 'no_2') + l1.rpc.pay(inv['bolt11']) + + inv = l3.rpc.invoice(10**2, '3', 'no_3') + l2.rpc.pay(inv['bolt11']) + + +# Makes channels going from node 1 -> 2, 2 -> 3, etc up to 'qty' number channels. +# If balanced is True, than each channel will be balanced -- otherwise the lower +# index channel will have funds in the channel to the higher indexed one. +# +# The channels for the second node are returned in chanids +def make_chans(node_factory, qty=2, fundamount=1000000, balanced=True): + nodes = node_factory.line_graph(qty + 1, fundamount=fundamount, opts={'experimental-splicing': None, 'allow_bad_gossip': True}) + chanids = [] + + for i in range(len(nodes) - 1): + nodes[i].daemon.wait_for_log(' to CHANNELD_NORMAL') + if balanced: + inv = nodes[i + 1].rpc.invoice(1000 * fundamount // 2, 'balance', 'balance') + nodes[i].rpc.pay(inv['bolt11']) + + chanids.insert(0, nodes[1].get_channel_id(nodes[0])) + if qty > 1: + chanids.insert(0, nodes[1].get_channel_id(nodes[2])) + + return [nodes, chanids] + + +def verify_chans(nodes, bitcoind, txid, payment_check_style=1, payamount=1000000): + for node in nodes: + node.daemon.wait_for_log(r'CHANNELD_NORMAL to CHANNELD_AWAITING_SPLICE') + + wait_for(lambda: len(list(bitcoind.rpc.getrawmempool(True).keys())) == 1) + + bitcoind.generate_block(6, wait_for_mempool=1) + + for node in nodes: + node.daemon.wait_for_log(r'CHANNELD_AWAITING_SPLICE to CHANNELD_NORMAL') + + if payment_check_style == 1: + for i in range(len(nodes) - 1): + inv = nodes[i + 1].rpc.invoice(payamount, str(i) + "test", str(i) + "test") + nodes[i].rpc.pay(inv['bolt11']) + + +def execute_script(node_factory, bitcoind, script): + nodes, chanids = make_chans(node_factory, script.count("{}")) + result = nodes[1].rpc.splice(script.format(*chanids), debug_log=True) + verify_chans(nodes, bitcoind, result['txid']) + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_b(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> 10000; {} -> 100000; {} -> 100000") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_c(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> 10000; 100000 -> {}; {} -> 100000") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_d(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> 250000; 100000 -> {}; 100000 -> {}") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_e(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "{} -> 100000; {} -> 100000") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_f(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "{} -> 200000; 100000 -> {}") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_g(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "{} -> 200000; 100000 -> {}; * -> wallet") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_h(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> 200000+fee; 100000 -> {}; 100000 -> {}") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_ii(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "100000 -> {}; {} -> 100000+fee") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_j(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "100000-fee -> {}; {} -> 100000") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_k(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "{} -> 10000; 1000 -> {}") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_l(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> 100000; * -> {}; * -> {}") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_m(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> *+fee; 100000 -> {}; 100000 -> {}") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_n(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> 100%+fee; {} -> 50%; 100000 -> {}") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_oo(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> *+fee; {} -> 50%; 100000 -> {}") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_p(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> *; {} -> 50%+fee; 100000 -> {}") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_q(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> *; {} -> 50000+fee; 100000 -> {}") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_r(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> 0+fee; {} -> 100000; 100000 -> {}") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_s(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> 50000; {} -> 50000+fee; 100000 -> {}") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_t(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> 100%; {} -> 50000+fee; 100000 -> {}") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_u(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> 100%; {} -> 50000; 100000 -> {}") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_v(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> 100%; {} -> 100000; 100000 -> {}") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_x(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "* -> wallet; * -> {}; {} -> 100000") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_y(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> *; 100000 -> {}; 100000 -> {}") + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_script_two_chan_splice_z(node_factory, bitcoind): + execute_script(node_factory, bitcoind, "wallet -> 100000; 70% -> {}; 30% -> {}") diff --git a/tests/test_splicing.py b/tests/test_splicing.py index f563ba172f08..d91886d2efb0 100644 --- a/tests/test_splicing.py +++ b/tests/test_splicing.py @@ -17,7 +17,7 @@ def test_splice(node_factory, bitcoind): chan_id = l1.get_channel_id(l2) # add extra sats to pay fee - funds_result = l1.rpc.fundpsbt("109000sat", "slow", 166, excess_as_change=True) + funds_result = l1.rpc.fundpsbt("105790sat", 0, 0, excess_as_change=True) result = l1.rpc.splice_init(chan_id, 100000, funds_result['psbt']) result = l1.rpc.splice_update(chan_id, result['psbt']) @@ -59,7 +59,7 @@ def test_two_chan_splice_in(node_factory, bitcoind): chan_id2 = l2.get_channel_id(l3) # add extra sats to pay fee - funds_result = l2.rpc.fundpsbt("209000sat", "slow", 166, excess_as_change=True) + funds_result = l2.rpc.fundpsbt("205790sat", 0, 0, excess_as_change=True) # Intiate splices to both channels result = l2.rpc.splice_init(chan_id1, 100000, funds_result['psbt']) @@ -130,7 +130,7 @@ def test_splice_rbf(node_factory, bitcoind): funds_result = l1.rpc.addpsbtoutput(100000) - # Pay with fee by subjtracting 5000 from channel balance + # Pay with fee by subtracting 5000 from channel balance result = l1.rpc.splice_init(chan_id, -105000, funds_result['psbt']) result = l1.rpc.splice_update(chan_id, result['psbt']) assert(result['commitments_secured'] is False) @@ -150,8 +150,8 @@ def test_splice_rbf(node_factory, bitcoind): funds_result = l1.rpc.addpsbtoutput(100000) - # Pay with fee by subjtracting 5000 from channel balance - result = l1.rpc.splice_init(chan_id, -110000, funds_result['psbt']) + # Pay with fee by subtracting 5790 from channel balance + result = l1.rpc.splice_init(chan_id, -105790, funds_result['psbt']) result = l1.rpc.splice_update(chan_id, result['psbt']) assert(result['commitments_secured'] is False) result = l1.rpc.splice_update(chan_id, result['psbt']) @@ -189,7 +189,7 @@ def test_splice_nosign(node_factory, bitcoind): chan_id = l1.get_channel_id(l2) # add extra sats to pay fee - funds_result = l1.rpc.fundpsbt("109000sat", "slow", 166, excess_as_change=True) + funds_result = l1.rpc.fundpsbt("105790sat", 0, 0, excess_as_change=True) result = l1.rpc.splice_init(chan_id, 100000, funds_result['psbt']) result = l1.rpc.splice_update(chan_id, result['psbt']) @@ -214,7 +214,7 @@ def test_splice_gossip(node_factory, bitcoind): pre_splice_scid = first_scid(l1, l2) # add extra sats to pay fee - funds_result = l1.rpc.fundpsbt("109000sat", "slow", 166, excess_as_change=True) + funds_result = l1.rpc.fundpsbt("105790sat", 0, 0, excess_as_change=True) result = l1.rpc.splice_init(chan_id, 100000, funds_result['psbt']) result = l1.rpc.splice_update(chan_id, result['psbt']) @@ -277,7 +277,7 @@ def test_splice_listnodes(node_factory, bitcoind): chan_id = l1.get_channel_id(l2) # add extra sats to pay fee - funds_result = l1.rpc.fundpsbt("109000sat", "slow", 166, excess_as_change=True) + funds_result = l1.rpc.fundpsbt("105790sat", 0, 0, excess_as_change=True) result = l1.rpc.splice_init(chan_id, 100000, funds_result['psbt']) result = l1.rpc.splice_update(chan_id, result['psbt']) @@ -373,7 +373,7 @@ def test_invalid_splice(node_factory, bitcoind): assert l1.db_query("SELECT count(*) as c FROM channel_funding_inflights;")[0]['c'] == 0 # Now we do a real splice to confirm everything works after restart - funds_result = l1.rpc.fundpsbt("109000sat", "slow", 166, excess_as_change=True) + funds_result = l1.rpc.fundpsbt("105790sat", 0, 0, excess_as_change=True) result = l1.rpc.splice_init(chan_id, 100000, funds_result['psbt']) result = l1.rpc.splice_update(chan_id, result['psbt']) @@ -469,7 +469,7 @@ def test_splice_stuck_htlc(node_factory, bitcoind, executor): chan_id = l1.get_channel_id(l2) # add extra sats to pay fee - funds_result = l1.rpc.fundpsbt("109000sat", "slow", 166, excess_as_change=True) + funds_result = l1.rpc.fundpsbt("105790sat", 0, 0, excess_as_change=True) result = l1.rpc.splice_init(chan_id, 100000, funds_result['psbt']) result = l1.rpc.splice_update(chan_id, result['psbt']) @@ -515,7 +515,7 @@ def test_route_by_old_scid(node_factory, bitcoind): route = l1.rpc.getroute(l3.info['id'], 10000000, 1, cltv=16)['route'] # Do a splice - funds_result = l2.rpc.fundpsbt("109000sat", "slow", 166, excess_as_change=True) + funds_result = l2.rpc.fundpsbt("105790sat", 0, 0, excess_as_change=True) chan_id = l2.get_channel_id(l3) result = l2.rpc.splice_init(chan_id, 100000, funds_result['psbt']) result = l2.rpc.splice_update(chan_id, result['psbt']) @@ -535,7 +535,7 @@ def test_route_by_old_scid(node_factory, bitcoind): # Let's splice again, so the original scid is two behind the times. l3.fundwallet(200000) - funds_result = l3.rpc.fundpsbt("109000sat", "slow", 166, excess_as_change=True) + funds_result = l3.rpc.fundpsbt("105790sat", 0, 0, excess_as_change=True) chan_id = l3.get_channel_id(l2) result = l3.rpc.splice_init(chan_id, 100000, funds_result['psbt']) result = l3.rpc.splice_update(chan_id, result['psbt']) @@ -568,7 +568,7 @@ def test_splice_unannounced(node_factory, bitcoind): chan_id = l1.get_channel_id(l2) # add extra sats to pay fee - funds_result = l1.rpc.fundpsbt("109000sat", "slow", 166, excess_as_change=True) + funds_result = l1.rpc.fundpsbt("105790sat", 0, 0, excess_as_change=True) result = l1.rpc.splice_init(chan_id, 100000, funds_result['psbt']) result = l1.rpc.splice_update(chan_id, result['psbt']) assert(result['commitments_secured'] is False) diff --git a/tests/test_splicing_disconnect.py b/tests/test_splicing_disconnect.py index fd3c09fb35dd..faa3f8f4bf5f 100644 --- a/tests/test_splicing_disconnect.py +++ b/tests/test_splicing_disconnect.py @@ -26,7 +26,7 @@ def test_splice_disconnect_sig(node_factory, bitcoind): chan_id = l1.get_channel_id(l2) # add extra sats to pay fee - funds_result = l1.rpc.fundpsbt("109000sat", "slow", 166, excess_as_change=True) + funds_result = l1.rpc.fundpsbt("105790sat", 0, 0, excess_as_change=True) result = l1.rpc.splice_init(chan_id, 100000, funds_result['psbt']) result = l1.rpc.splice_update(chan_id, result['psbt']) @@ -85,7 +85,7 @@ def test_splice_disconnect_commit(node_factory, bitcoind, executor): chan_id = l1.get_channel_id(l2) # add extra sats to pay fee - funds_result = l1.rpc.fundpsbt("109000sat", "slow", 166, excess_as_change=True) + funds_result = l1.rpc.fundpsbt("105790sat", 0, 0, excess_as_change=True) result = l1.rpc.splice_init(chan_id, 100000, funds_result['psbt']) result = l1.rpc.splice_update(chan_id, result['psbt']) diff --git a/tests/test_splicing_insane.py b/tests/test_splicing_insane.py index 4f15e603fe1b..29dc33d19db4 100644 --- a/tests/test_splicing_insane.py +++ b/tests/test_splicing_insane.py @@ -9,7 +9,7 @@ def make_pending_splice(node_factory): chan_id = l1.get_channel_id(l2) - funds_result = l1.rpc.fundpsbt("109000sat", "slow", 166, excess_as_change=True) + funds_result = l1.rpc.fundpsbt("105790sat", 0, 0, excess_as_change=True) result = l1.rpc.splice_init(chan_id, 100000, funds_result['psbt']) result = l1.rpc.splice_update(chan_id, result['psbt']) @@ -50,7 +50,7 @@ def wait_for_restart(l1, l2): @pytest.mark.openchannel('v1') @pytest.mark.openchannel('v2') @unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') -def test_splice_insane(node_factory, bitcoind): +def test_splice_insane_a(node_factory, bitcoind): nodes = [] l1, l2 = make_pending_splice(node_factory) @@ -60,6 +60,15 @@ def test_splice_insane(node_factory, bitcoind): nodes.append(l1) nodes.append(l2) + confirm_funding_not_spent(nodes) + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_splice_insane_b(node_factory, bitcoind): + nodes = [] + l1, l2 = make_pending_splice(node_factory) l1.restart() wait_for_restart(l1, l2) @@ -67,6 +76,15 @@ def test_splice_insane(node_factory, bitcoind): nodes.append(l1) nodes.append(l2) + confirm_funding_not_spent(nodes) + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_splice_insane_c(node_factory, bitcoind): + nodes = [] + l1, l2 = make_pending_splice(node_factory) l1.restart() wait_for_restart(l1, l2) @@ -74,6 +92,15 @@ def test_splice_insane(node_factory, bitcoind): nodes.append(l1) nodes.append(l2) + confirm_funding_not_spent(nodes) + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_splice_insane_d(node_factory, bitcoind): + nodes = [] + l1, l2 = make_pending_splice(node_factory) l2.restart() wait_for_restart(l1, l2) @@ -81,6 +108,15 @@ def test_splice_insane(node_factory, bitcoind): nodes.append(l1) nodes.append(l2) + confirm_funding_not_spent(nodes) + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_splice_insane_e(node_factory, bitcoind): + nodes = [] + l1, l2 = make_pending_splice(node_factory) confirm_and_wait(l1, l2, bitcoind) l1.restart() @@ -88,6 +124,15 @@ def test_splice_insane(node_factory, bitcoind): nodes.append(l1) nodes.append(l2) + confirm_funding_not_spent(nodes) + + +@pytest.mark.openchannel('v1') +@pytest.mark.openchannel('v2') +@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need') +def test_splice_insane_f(node_factory, bitcoind): + nodes = [] + l1, l2 = make_pending_splice(node_factory) confirm_and_wait(l1, l2, bitcoind) l2.restart()