From d3a973fa1853ec3a7ce0527db8c2e695837c5b23 Mon Sep 17 00:00:00 2001 From: fusion44 Date: Sat, 6 May 2023 11:33:30 +0200 Subject: [PATCH 1/4] feat: add push parameter for open-channel api refs #199 --- app/lightning/impl/cln_grpc.py | 14 +++++++--- app/lightning/impl/cln_jrpc.py | 22 +++++++++++++--- app/lightning/impl/ln_base.py | 6 ++++- app/lightning/impl/lnd_grpc.py | 10 +++++-- .../impl/specializations/cln_grpc_blitz.py | 14 ++++++++-- app/lightning/router.py | 26 +++++++++++++++++-- app/lightning/service.py | 6 +++-- 7 files changed, 82 insertions(+), 16 deletions(-) diff --git a/app/lightning/impl/cln_grpc.py b/app/lightning/impl/cln_grpc.py index 86a0dca..175ea03 100644 --- a/app/lightning/impl/cln_grpc.py +++ b/app/lightning/impl/cln_grpc.py @@ -901,12 +901,17 @@ async def peer_resolve_alias(self, node_pub: bytes) -> str: @logger.catch(exclude=(HTTPException,)) async def channel_open( - self, local_funding_amount: int, node_URI: str, target_confs: int + self, + local_funding_amount: int, + node_URI: str, + target_confs: int, + push_amount_sat: int, ) -> str: logger.trace( ( f"channel_open(local_funding_amount={local_funding_amount}, " - f"node_URI={node_URI}, target_confs={target_confs})" + f"node_URI={node_URI}, target_confs={target_confs}, " + f"push_amount_sat={push_amount_sat})" ) ) @@ -924,8 +929,11 @@ async def channel_open( h = bytes.fromhex(node_URI.split("@")[0]) req = ln.FundchannelRequest( id=h, - amount=lnp.AmountOrAll(amount=lnp.Amount(msat=local_funding_amount)), + amount=lnp.AmountOrAll( + amount=lnp.Amount(msat=local_funding_amount * 1000) + ), feerate=fee_rate, + push_msat=lnp.Amount(msat=push_amount_sat * 1000), ) except TypeError as e: logger.error(f"channel_open() failed at ln.FundchannelRequest(): {e}") diff --git a/app/lightning/impl/cln_jrpc.py b/app/lightning/impl/cln_jrpc.py index 23e84ea..2420d71 100644 --- a/app/lightning/impl/cln_jrpc.py +++ b/app/lightning/impl/cln_jrpc.py @@ -712,21 +712,35 @@ async def listen_forward_events(self) -> ForwardSuccessEvent: @logger.catch(exclude=(HTTPException,)) async def channel_open( - self, local_funding_amount: int, node_URI: str, target_confs: int + self, + local_funding_amount: int, + node_URI: str, + target_confs: int, + push_amount_sat: int, ) -> str: logger.trace( ( - f"channel_open(local_funding_amount={local_funding_amount}, " - f"node_URI={node_URI}, target_confs={target_confs})" + f"logger.channel_open(local_funding_amount={local_funding_amount}, " + f"node_URI={node_URI}, target_confs={target_confs}, " + f"push_amount_sat={push_amount_sat})" ) ) + # https://lightning.readthedocs.io/lightning-fundchannel.7.html # fundchannel id amount [feerate] [announce] [minconf] [utxos] [push_msat] # [close_to] [request_amt] [compact_lease] [reserve] await self.connect_peer(node_URI) fee_rate = calc_fee_rate_str(None, target_confs) pub = node_URI.split("@")[0] - params = {"id": pub, "amount": local_funding_amount, "feerate": fee_rate} + params = { + "id": pub, + "amount": local_funding_amount, + "feerate": fee_rate, + } + + if push_amount_sat is not None and push_amount_sat > 0: + params["push_msat"] = push_amount_sat * 1000 + res = await self._send_request("fundchannel", params) if "error" in res: diff --git a/app/lightning/impl/ln_base.py b/app/lightning/impl/ln_base.py index 7380494..862fe7b 100644 --- a/app/lightning/impl/ln_base.py +++ b/app/lightning/impl/ln_base.py @@ -116,7 +116,11 @@ async def listen_forward_events(self) -> ForwardSuccessEvent: @abstractmethod async def channel_open( - self, local_funding_amount: int, node_URI: str, target_confs: int + self, + local_funding_amount: int, + node_URI: str, + target_confs: int, + push_amount_sat: int, ) -> str: raise NotImplementedError() diff --git a/app/lightning/impl/lnd_grpc.py b/app/lightning/impl/lnd_grpc.py index c33497e..7ebe0af 100644 --- a/app/lightning/impl/lnd_grpc.py +++ b/app/lightning/impl/lnd_grpc.py @@ -810,12 +810,17 @@ async def listen_forward_events(self) -> ForwardSuccessEvent: @logger.catch(exclude=(HTTPException,)) async def channel_open( - self, local_funding_amount: int, node_URI: str, target_confs: int + self, + local_funding_amount: int, + node_URI: str, + target_confs: int, + push_amount_sat: int, ) -> str: logger.trace( ( f"logger.channel_open(local_funding_amount={local_funding_amount}, " - f"node_URI={node_URI}, target_confs={target_confs})" + f"node_URI={node_URI}, target_confs={target_confs}, " + f"push_amount_sat={push_amount_sat})" ) ) @@ -845,6 +850,7 @@ async def channel_open( node_pubkey=bytes.fromhex(pubkey), local_funding_amount=local_funding_amount, target_conf=target_confs, + push_sat=push_amount_sat, ) async for response in self._lnd_stub.OpenChannel(r): return str(response.chan_pending.txid.hex()) diff --git a/app/lightning/impl/specializations/cln_grpc_blitz.py b/app/lightning/impl/specializations/cln_grpc_blitz.py index 0c4189f..f0bb53d 100644 --- a/app/lightning/impl/specializations/cln_grpc_blitz.py +++ b/app/lightning/impl/specializations/cln_grpc_blitz.py @@ -179,10 +179,20 @@ async def listen_forward_events(self) -> ForwardSuccessEvent: yield i async def channel_open( - self, local_funding_amount: int, node_URI: str, target_confs: int + self, + local_funding_amount: int, + node_URI: str, + target_confs: int, + push_amount_sat: int, ) -> str: self._check_if_locked() - return await super().channel_open(local_funding_amount, node_URI, target_confs) + + return await super().channel_open( + local_funding_amount, + node_URI, + target_confs, + push_amount_sat, + ) async def peer_resolve_alias(self, node_pub: str) -> str: self._check_if_locked() diff --git a/app/lightning/router.py b/app/lightning/router.py index b00c8fa..95f7281 100644 --- a/app/lightning/router.py +++ b/app/lightning/router.py @@ -360,10 +360,32 @@ async def send_coins_path(input: SendCoinsInput): }, ) async def open_channel_path( - local_funding_amount: int, node_URI: str, target_confs: int = 3 + local_funding_amount: int = Query( + ..., description="The amount of satoshis to commit to the channel." + ), + node_URI: str = Query( + ..., + description=( + "The URI of the peer to open a channel with. " + "Format: @:" + ), + ), + target_confs: int = Query( + 3, description="The block target for the funding transaction." + ), + push_amount_sat: int = Query( + # Note: LND only supports satoshis as push amount, so we do the same. + None, + description="The amount of sats to push to the peer.", + ), ): try: - return await channel_open(local_funding_amount, node_URI, target_confs) + return await channel_open( + local_funding_amount, + node_URI, + target_confs, + push_amount_sat, + ) except HTTPException: raise except NotImplementedError as r: diff --git a/app/lightning/service.py b/app/lightning/service.py index 17849f4..4d063f6 100644 --- a/app/lightning/service.py +++ b/app/lightning/service.py @@ -143,7 +143,7 @@ async def send_payment( async def channel_open( - local_funding_amount: int, node_URI: str, target_confs: int + local_funding_amount: int, node_URI: str, target_confs: int, push_amount_sat: int ) -> str: if local_funding_amount < 1: raise ValueError("funding amount needs to be positive") @@ -157,7 +157,9 @@ async def channel_open( if "@" not in node_URI: raise ValueError("node_URI must contain @ with node physical address") - res = await ln.channel_open(local_funding_amount, node_URI, target_confs) + res = await ln.channel_open( + local_funding_amount, node_URI, target_confs, push_amount_sat + ) return res From 1203a2adafef8aae9747f7c680107d2ca569a8b5 Mon Sep 17 00:00:00 2001 From: fusion44 Date: Sun, 7 May 2023 13:23:57 +0200 Subject: [PATCH 2/4] chore: update LND gRPC files --- .../impl/protos/lnd/gen_protos_python.sh | 2 + .../impl/protos/lnd/lightning_pb2.py | 952 +++++++++--------- .../impl/protos/lnd/lightning_pb2_grpc.py | 53 + app/lightning/impl/protos/lnd/router_pb2.py | 188 ++-- .../impl/protos/lnd/router_pb2_grpc.py | 58 +- app/lightning/impl/protos/lnd/signer_pb2.py | 58 +- .../impl/protos/lnd/walletunlocker_pb2.py | 36 +- 7 files changed, 749 insertions(+), 598 deletions(-) diff --git a/app/lightning/impl/protos/lnd/gen_protos_python.sh b/app/lightning/impl/protos/lnd/gen_protos_python.sh index e322068..11bf720 100644 --- a/app/lightning/impl/protos/lnd/gen_protos_python.sh +++ b/app/lightning/impl/protos/lnd/gen_protos_python.sh @@ -3,6 +3,8 @@ # clone lnd repo # cd into lnd/lnrpc # git clone https://github.com/googleapis/googleapis.git +# poetry shell +# bash gen_protos_python.sh set -e diff --git a/app/lightning/impl/protos/lnd/lightning_pb2.py b/app/lightning/impl/protos/lnd/lightning_pb2.py index 57c1a5b..930cff5 100644 --- a/app/lightning/impl/protos/lnd/lightning_pb2.py +++ b/app/lightning/impl/protos/lnd/lightning_pb2.py @@ -13,7 +13,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x0flightning.proto\x12\x05lnrpc" \n\x1eSubscribeCustomMessagesRequest"9\n\rCustomMessage\x12\x0c\n\x04peer\x18\x01 \x01(\x0c\x12\x0c\n\x04type\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c"D\n\x18SendCustomMessageRequest\x12\x0c\n\x04peer\x18\x01 \x01(\x0c\x12\x0c\n\x04type\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c"\x1b\n\x19SendCustomMessageResponse"\xa2\x01\n\x04Utxo\x12(\n\x0c\x61\x64\x64ress_type\x18\x01 \x01(\x0e\x32\x12.lnrpc.AddressType\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x12\x12\n\namount_sat\x18\x03 \x01(\x03\x12\x11\n\tpk_script\x18\x04 \x01(\t\x12!\n\x08outpoint\x18\x05 \x01(\x0b\x32\x0f.lnrpc.OutPoint\x12\x15\n\rconfirmations\x18\x06 \x01(\x03"\x9e\x01\n\x0cOutputDetail\x12,\n\x0boutput_type\x18\x01 \x01(\x0e\x32\x17.lnrpc.OutputScriptType\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x12\x11\n\tpk_script\x18\x03 \x01(\t\x12\x14\n\x0coutput_index\x18\x04 \x01(\x03\x12\x0e\n\x06\x61mount\x18\x05 \x01(\x03\x12\x16\n\x0eis_our_address\x18\x06 \x01(\x08"\xbc\x02\n\x0bTransaction\x12\x0f\n\x07tx_hash\x18\x01 \x01(\t\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x12\x19\n\x11num_confirmations\x18\x03 \x01(\x05\x12\x12\n\nblock_hash\x18\x04 \x01(\t\x12\x14\n\x0c\x62lock_height\x18\x05 \x01(\x05\x12\x12\n\ntime_stamp\x18\x06 \x01(\x03\x12\x12\n\ntotal_fees\x18\x07 \x01(\x03\x12\x1a\n\x0e\x64\x65st_addresses\x18\x08 \x03(\tB\x02\x18\x01\x12+\n\x0eoutput_details\x18\x0b \x03(\x0b\x32\x13.lnrpc.OutputDetail\x12\x12\n\nraw_tx_hex\x18\t \x01(\t\x12\r\n\x05label\x18\n \x01(\t\x12\x33\n\x12previous_outpoints\x18\x0c \x03(\x0b\x32\x17.lnrpc.PreviousOutPoint"S\n\x16GetTransactionsRequest\x12\x14\n\x0cstart_height\x18\x01 \x01(\x05\x12\x12\n\nend_height\x18\x02 \x01(\x05\x12\x0f\n\x07\x61\x63\x63ount\x18\x03 \x01(\t">\n\x12TransactionDetails\x12(\n\x0ctransactions\x18\x01 \x03(\x0b\x32\x12.lnrpc.Transaction"M\n\x08\x46\x65\x65Limit\x12\x0f\n\x05\x66ixed\x18\x01 \x01(\x03H\x00\x12\x14\n\nfixed_msat\x18\x03 \x01(\x03H\x00\x12\x11\n\x07percent\x18\x02 \x01(\x03H\x00\x42\x07\n\x05limit"\x8a\x04\n\x0bSendRequest\x12\x0c\n\x04\x64\x65st\x18\x01 \x01(\x0c\x12\x17\n\x0b\x64\x65st_string\x18\x02 \x01(\tB\x02\x18\x01\x12\x0b\n\x03\x61mt\x18\x03 \x01(\x03\x12\x10\n\x08\x61mt_msat\x18\x0c \x01(\x03\x12\x14\n\x0cpayment_hash\x18\x04 \x01(\x0c\x12\x1f\n\x13payment_hash_string\x18\x05 \x01(\tB\x02\x18\x01\x12\x17\n\x0fpayment_request\x18\x06 \x01(\t\x12\x18\n\x10\x66inal_cltv_delta\x18\x07 \x01(\x05\x12"\n\tfee_limit\x18\x08 \x01(\x0b\x32\x0f.lnrpc.FeeLimit\x12\x1c\n\x10outgoing_chan_id\x18\t \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0flast_hop_pubkey\x18\r \x01(\x0c\x12\x12\n\ncltv_limit\x18\n \x01(\r\x12\x46\n\x13\x64\x65st_custom_records\x18\x0b \x03(\x0b\x32).lnrpc.SendRequest.DestCustomRecordsEntry\x12\x1a\n\x12\x61llow_self_payment\x18\x0e \x01(\x08\x12(\n\rdest_features\x18\x0f \x03(\x0e\x32\x11.lnrpc.FeatureBit\x12\x14\n\x0cpayment_addr\x18\x10 \x01(\x0c\x1a\x38\n\x16\x44\x65stCustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"z\n\x0cSendResponse\x12\x15\n\rpayment_error\x18\x01 \x01(\t\x12\x18\n\x10payment_preimage\x18\x02 \x01(\x0c\x12#\n\rpayment_route\x18\x03 \x01(\x0b\x32\x0c.lnrpc.Route\x12\x14\n\x0cpayment_hash\x18\x04 \x01(\x0c"n\n\x12SendToRouteRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x1f\n\x13payment_hash_string\x18\x02 \x01(\tB\x02\x18\x01\x12\x1b\n\x05route\x18\x04 \x01(\x0b\x32\x0c.lnrpc.RouteJ\x04\x08\x03\x10\x04"\x98\x03\n\x14\x43hannelAcceptRequest\x12\x13\n\x0bnode_pubkey\x18\x01 \x01(\x0c\x12\x12\n\nchain_hash\x18\x02 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x03 \x01(\x0c\x12\x13\n\x0b\x66unding_amt\x18\x04 \x01(\x04\x12\x10\n\x08push_amt\x18\x05 \x01(\x04\x12\x12\n\ndust_limit\x18\x06 \x01(\x04\x12\x1b\n\x13max_value_in_flight\x18\x07 \x01(\x04\x12\x17\n\x0f\x63hannel_reserve\x18\x08 \x01(\x04\x12\x10\n\x08min_htlc\x18\t \x01(\x04\x12\x12\n\nfee_per_kw\x18\n \x01(\x04\x12\x11\n\tcsv_delay\x18\x0b \x01(\r\x12\x1a\n\x12max_accepted_htlcs\x18\x0c \x01(\r\x12\x15\n\rchannel_flags\x18\r \x01(\r\x12.\n\x0f\x63ommitment_type\x18\x0e \x01(\x0e\x32\x15.lnrpc.CommitmentType\x12\x17\n\x0fwants_zero_conf\x18\x0f \x01(\x08\x12\x18\n\x10wants_scid_alias\x18\x10 \x01(\x08"\x87\x02\n\x15\x43hannelAcceptResponse\x12\x0e\n\x06\x61\x63\x63\x65pt\x18\x01 \x01(\x08\x12\x17\n\x0fpending_chan_id\x18\x02 \x01(\x0c\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12\x18\n\x10upfront_shutdown\x18\x04 \x01(\t\x12\x11\n\tcsv_delay\x18\x05 \x01(\r\x12\x13\n\x0breserve_sat\x18\x06 \x01(\x04\x12\x1a\n\x12in_flight_max_msat\x18\x07 \x01(\x04\x12\x16\n\x0emax_htlc_count\x18\x08 \x01(\r\x12\x13\n\x0bmin_htlc_in\x18\t \x01(\x04\x12\x18\n\x10min_accept_depth\x18\n \x01(\r\x12\x11\n\tzero_conf\x18\x0b \x01(\x08"n\n\x0c\x43hannelPoint\x12\x1c\n\x12\x66unding_txid_bytes\x18\x01 \x01(\x0cH\x00\x12\x1a\n\x10\x66unding_txid_str\x18\x02 \x01(\tH\x00\x12\x14\n\x0coutput_index\x18\x03 \x01(\rB\x0e\n\x0c\x66unding_txid"F\n\x08OutPoint\x12\x12\n\ntxid_bytes\x18\x01 \x01(\x0c\x12\x10\n\x08txid_str\x18\x02 \x01(\t\x12\x14\n\x0coutput_index\x18\x03 \x01(\r";\n\x10PreviousOutPoint\x12\x10\n\x08outpoint\x18\x01 \x01(\t\x12\x15\n\ris_our_output\x18\x02 \x01(\x08"0\n\x10LightningAddress\x12\x0e\n\x06pubkey\x18\x01 \x01(\t\x12\x0c\n\x04host\x18\x02 \x01(\t"\xcf\x01\n\x12\x45stimateFeeRequest\x12\x41\n\x0c\x41\x64\x64rToAmount\x18\x01 \x03(\x0b\x32+.lnrpc.EstimateFeeRequest.AddrToAmountEntry\x12\x13\n\x0btarget_conf\x18\x02 \x01(\x05\x12\x11\n\tmin_confs\x18\x03 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x04 \x01(\x08\x1a\x33\n\x11\x41\x64\x64rToAmountEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01"_\n\x13\x45stimateFeeResponse\x12\x0f\n\x07\x66\x65\x65_sat\x18\x01 \x01(\x03\x12 \n\x14\x66\x65\x65rate_sat_per_byte\x18\x02 \x01(\x03\x42\x02\x18\x01\x12\x15\n\rsat_per_vbyte\x18\x03 \x01(\x04"\x89\x02\n\x0fSendManyRequest\x12>\n\x0c\x41\x64\x64rToAmount\x18\x01 \x03(\x0b\x32(.lnrpc.SendManyRequest.AddrToAmountEntry\x12\x13\n\x0btarget_conf\x18\x03 \x01(\x05\x12\x15\n\rsat_per_vbyte\x18\x04 \x01(\x04\x12\x18\n\x0csat_per_byte\x18\x05 \x01(\x03\x42\x02\x18\x01\x12\r\n\x05label\x18\x06 \x01(\t\x12\x11\n\tmin_confs\x18\x07 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x08 \x01(\x08\x1a\x33\n\x11\x41\x64\x64rToAmountEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01" \n\x10SendManyResponse\x12\x0c\n\x04txid\x18\x01 \x01(\t"\xc5\x01\n\x10SendCoinsRequest\x12\x0c\n\x04\x61\x64\x64r\x18\x01 \x01(\t\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x12\x13\n\x0btarget_conf\x18\x03 \x01(\x05\x12\x15\n\rsat_per_vbyte\x18\x04 \x01(\x04\x12\x18\n\x0csat_per_byte\x18\x05 \x01(\x03\x42\x02\x18\x01\x12\x10\n\x08send_all\x18\x06 \x01(\x08\x12\r\n\x05label\x18\x07 \x01(\t\x12\x11\n\tmin_confs\x18\x08 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\t \x01(\x08"!\n\x11SendCoinsResponse\x12\x0c\n\x04txid\x18\x01 \x01(\t"K\n\x12ListUnspentRequest\x12\x11\n\tmin_confs\x18\x01 \x01(\x05\x12\x11\n\tmax_confs\x18\x02 \x01(\x05\x12\x0f\n\x07\x61\x63\x63ount\x18\x03 \x01(\t"1\n\x13ListUnspentResponse\x12\x1a\n\x05utxos\x18\x01 \x03(\x0b\x32\x0b.lnrpc.Utxo"F\n\x11NewAddressRequest\x12 \n\x04type\x18\x01 \x01(\x0e\x32\x12.lnrpc.AddressType\x12\x0f\n\x07\x61\x63\x63ount\x18\x02 \x01(\t"%\n\x12NewAddressResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t"6\n\x12SignMessageRequest\x12\x0b\n\x03msg\x18\x01 \x01(\x0c\x12\x13\n\x0bsingle_hash\x18\x02 \x01(\x08"(\n\x13SignMessageResponse\x12\x11\n\tsignature\x18\x01 \x01(\t"6\n\x14VerifyMessageRequest\x12\x0b\n\x03msg\x18\x01 \x01(\x0c\x12\x11\n\tsignature\x18\x02 \x01(\t"6\n\x15VerifyMessageResponse\x12\r\n\x05valid\x18\x01 \x01(\x08\x12\x0e\n\x06pubkey\x18\x02 \x01(\t"Z\n\x12\x43onnectPeerRequest\x12%\n\x04\x61\x64\x64r\x18\x01 \x01(\x0b\x32\x17.lnrpc.LightningAddress\x12\x0c\n\x04perm\x18\x02 \x01(\x08\x12\x0f\n\x07timeout\x18\x03 \x01(\x04"\x15\n\x13\x43onnectPeerResponse"(\n\x15\x44isconnectPeerRequest\x12\x0f\n\x07pub_key\x18\x01 \x01(\t"\x18\n\x16\x44isconnectPeerResponse"\xa5\x01\n\x04HTLC\x12\x10\n\x08incoming\x18\x01 \x01(\x08\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x12\x11\n\thash_lock\x18\x03 \x01(\x0c\x12\x19\n\x11\x65xpiration_height\x18\x04 \x01(\r\x12\x12\n\nhtlc_index\x18\x05 \x01(\x04\x12\x1a\n\x12\x66orwarding_channel\x18\x06 \x01(\x04\x12\x1d\n\x15\x66orwarding_htlc_index\x18\x07 \x01(\x04"\xaa\x01\n\x12\x43hannelConstraints\x12\x11\n\tcsv_delay\x18\x01 \x01(\r\x12\x18\n\x10\x63han_reserve_sat\x18\x02 \x01(\x04\x12\x16\n\x0e\x64ust_limit_sat\x18\x03 \x01(\x04\x12\x1c\n\x14max_pending_amt_msat\x18\x04 \x01(\x04\x12\x15\n\rmin_htlc_msat\x18\x05 \x01(\x04\x12\x1a\n\x12max_accepted_htlcs\x18\x06 \x01(\r"\xfa\x06\n\x07\x43hannel\x12\x0e\n\x06\x61\x63tive\x18\x01 \x01(\x08\x12\x15\n\rremote_pubkey\x18\x02 \x01(\t\x12\x15\n\rchannel_point\x18\x03 \x01(\t\x12\x13\n\x07\x63han_id\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x10\n\x08\x63\x61pacity\x18\x05 \x01(\x03\x12\x15\n\rlocal_balance\x18\x06 \x01(\x03\x12\x16\n\x0eremote_balance\x18\x07 \x01(\x03\x12\x12\n\ncommit_fee\x18\x08 \x01(\x03\x12\x15\n\rcommit_weight\x18\t \x01(\x03\x12\x12\n\nfee_per_kw\x18\n \x01(\x03\x12\x19\n\x11unsettled_balance\x18\x0b \x01(\x03\x12\x1b\n\x13total_satoshis_sent\x18\x0c \x01(\x03\x12\x1f\n\x17total_satoshis_received\x18\r \x01(\x03\x12\x13\n\x0bnum_updates\x18\x0e \x01(\x04\x12"\n\rpending_htlcs\x18\x0f \x03(\x0b\x32\x0b.lnrpc.HTLC\x12\x15\n\tcsv_delay\x18\x10 \x01(\rB\x02\x18\x01\x12\x0f\n\x07private\x18\x11 \x01(\x08\x12\x11\n\tinitiator\x18\x12 \x01(\x08\x12\x19\n\x11\x63han_status_flags\x18\x13 \x01(\t\x12"\n\x16local_chan_reserve_sat\x18\x14 \x01(\x03\x42\x02\x18\x01\x12#\n\x17remote_chan_reserve_sat\x18\x15 \x01(\x03\x42\x02\x18\x01\x12\x1d\n\x11static_remote_key\x18\x16 \x01(\x08\x42\x02\x18\x01\x12.\n\x0f\x63ommitment_type\x18\x1a \x01(\x0e\x32\x15.lnrpc.CommitmentType\x12\x10\n\x08lifetime\x18\x17 \x01(\x03\x12\x0e\n\x06uptime\x18\x18 \x01(\x03\x12\x15\n\rclose_address\x18\x19 \x01(\t\x12\x17\n\x0fpush_amount_sat\x18\x1b \x01(\x04\x12\x13\n\x0bthaw_height\x18\x1c \x01(\r\x12\x34\n\x11local_constraints\x18\x1d \x01(\x0b\x32\x19.lnrpc.ChannelConstraints\x12\x35\n\x12remote_constraints\x18\x1e \x01(\x0b\x32\x19.lnrpc.ChannelConstraints\x12\x13\n\x0b\x61lias_scids\x18\x1f \x03(\x04\x12\x11\n\tzero_conf\x18 \x01(\x08\x12 \n\x18zero_conf_confirmed_scid\x18! \x01(\x04"z\n\x13ListChannelsRequest\x12\x13\n\x0b\x61\x63tive_only\x18\x01 \x01(\x08\x12\x15\n\rinactive_only\x18\x02 \x01(\x08\x12\x13\n\x0bpublic_only\x18\x03 \x01(\x08\x12\x14\n\x0cprivate_only\x18\x04 \x01(\x08\x12\x0c\n\x04peer\x18\x05 \x01(\x0c"8\n\x14ListChannelsResponse\x12 \n\x08\x63hannels\x18\x0b \x03(\x0b\x32\x0e.lnrpc.Channel".\n\x08\x41liasMap\x12\x11\n\tbase_scid\x18\x01 \x01(\x04\x12\x0f\n\x07\x61liases\x18\x02 \x03(\x04"\x14\n\x12ListAliasesRequest":\n\x13ListAliasesResponse\x12#\n\nalias_maps\x18\x01 \x03(\x0b\x32\x0f.lnrpc.AliasMap"\xe4\x04\n\x13\x43hannelCloseSummary\x12\x15\n\rchannel_point\x18\x01 \x01(\t\x12\x13\n\x07\x63han_id\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x12\n\nchain_hash\x18\x03 \x01(\t\x12\x17\n\x0f\x63losing_tx_hash\x18\x04 \x01(\t\x12\x15\n\rremote_pubkey\x18\x05 \x01(\t\x12\x10\n\x08\x63\x61pacity\x18\x06 \x01(\x03\x12\x14\n\x0c\x63lose_height\x18\x07 \x01(\r\x12\x17\n\x0fsettled_balance\x18\x08 \x01(\x03\x12\x1b\n\x13time_locked_balance\x18\t \x01(\x03\x12:\n\nclose_type\x18\n \x01(\x0e\x32&.lnrpc.ChannelCloseSummary.ClosureType\x12(\n\x0eopen_initiator\x18\x0b \x01(\x0e\x32\x10.lnrpc.Initiator\x12)\n\x0f\x63lose_initiator\x18\x0c \x01(\x0e\x32\x10.lnrpc.Initiator\x12&\n\x0bresolutions\x18\r \x03(\x0b\x32\x11.lnrpc.Resolution\x12\x13\n\x0b\x61lias_scids\x18\x0e \x03(\x04\x12$\n\x18zero_conf_confirmed_scid\x18\x0f \x01(\x04\x42\x02\x30\x01"\x8a\x01\n\x0b\x43losureType\x12\x15\n\x11\x43OOPERATIVE_CLOSE\x10\x00\x12\x15\n\x11LOCAL_FORCE_CLOSE\x10\x01\x12\x16\n\x12REMOTE_FORCE_CLOSE\x10\x02\x12\x10\n\x0c\x42REACH_CLOSE\x10\x03\x12\x14\n\x10\x46UNDING_CANCELED\x10\x04\x12\r\n\tABANDONED\x10\x05"\xb2\x01\n\nResolution\x12.\n\x0fresolution_type\x18\x01 \x01(\x0e\x32\x15.lnrpc.ResolutionType\x12)\n\x07outcome\x18\x02 \x01(\x0e\x32\x18.lnrpc.ResolutionOutcome\x12!\n\x08outpoint\x18\x03 \x01(\x0b\x32\x0f.lnrpc.OutPoint\x12\x12\n\namount_sat\x18\x04 \x01(\x04\x12\x12\n\nsweep_txid\x18\x05 \x01(\t"\x94\x01\n\x15\x43losedChannelsRequest\x12\x13\n\x0b\x63ooperative\x18\x01 \x01(\x08\x12\x13\n\x0blocal_force\x18\x02 \x01(\x08\x12\x14\n\x0cremote_force\x18\x03 \x01(\x08\x12\x0e\n\x06\x62reach\x18\x04 \x01(\x08\x12\x18\n\x10\x66unding_canceled\x18\x05 \x01(\x08\x12\x11\n\tabandoned\x18\x06 \x01(\x08"F\n\x16\x43losedChannelsResponse\x12,\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x1a.lnrpc.ChannelCloseSummary"\xef\x03\n\x04Peer\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\x03 \x01(\t\x12\x12\n\nbytes_sent\x18\x04 \x01(\x04\x12\x12\n\nbytes_recv\x18\x05 \x01(\x04\x12\x10\n\x08sat_sent\x18\x06 \x01(\x03\x12\x10\n\x08sat_recv\x18\x07 \x01(\x03\x12\x0f\n\x07inbound\x18\x08 \x01(\x08\x12\x11\n\tping_time\x18\t \x01(\x03\x12\'\n\tsync_type\x18\n \x01(\x0e\x32\x14.lnrpc.Peer.SyncType\x12+\n\x08\x66\x65\x61tures\x18\x0b \x03(\x0b\x32\x19.lnrpc.Peer.FeaturesEntry\x12\'\n\x06\x65rrors\x18\x0c \x03(\x0b\x32\x17.lnrpc.TimestampedError\x12\x12\n\nflap_count\x18\r \x01(\x05\x12\x14\n\x0clast_flap_ns\x18\x0e \x01(\x03\x12\x19\n\x11last_ping_payload\x18\x0f \x01(\x0c\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01"P\n\x08SyncType\x12\x10\n\x0cUNKNOWN_SYNC\x10\x00\x12\x0f\n\x0b\x41\x43TIVE_SYNC\x10\x01\x12\x10\n\x0cPASSIVE_SYNC\x10\x02\x12\x0f\n\x0bPINNED_SYNC\x10\x03"4\n\x10TimestampedError\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t"(\n\x10ListPeersRequest\x12\x14\n\x0clatest_error\x18\x01 \x01(\x08"/\n\x11ListPeersResponse\x12\x1a\n\x05peers\x18\x01 \x03(\x0b\x32\x0b.lnrpc.Peer"\x17\n\x15PeerEventSubscription"v\n\tPeerEvent\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\x12(\n\x04type\x18\x02 \x01(\x0e\x32\x1a.lnrpc.PeerEvent.EventType".\n\tEventType\x12\x0f\n\x0bPEER_ONLINE\x10\x00\x12\x10\n\x0cPEER_OFFLINE\x10\x01"\x10\n\x0eGetInfoRequest"\xb8\x04\n\x0fGetInfoResponse\x12\x0f\n\x07version\x18\x0e \x01(\t\x12\x13\n\x0b\x63ommit_hash\x18\x14 \x01(\t\x12\x17\n\x0fidentity_pubkey\x18\x01 \x01(\t\x12\r\n\x05\x61lias\x18\x02 \x01(\t\x12\r\n\x05\x63olor\x18\x11 \x01(\t\x12\x1c\n\x14num_pending_channels\x18\x03 \x01(\r\x12\x1b\n\x13num_active_channels\x18\x04 \x01(\r\x12\x1d\n\x15num_inactive_channels\x18\x0f \x01(\r\x12\x11\n\tnum_peers\x18\x05 \x01(\r\x12\x14\n\x0c\x62lock_height\x18\x06 \x01(\r\x12\x12\n\nblock_hash\x18\x08 \x01(\t\x12\x1d\n\x15\x62\x65st_header_timestamp\x18\r \x01(\x03\x12\x17\n\x0fsynced_to_chain\x18\t \x01(\x08\x12\x17\n\x0fsynced_to_graph\x18\x12 \x01(\x08\x12\x13\n\x07testnet\x18\n \x01(\x08\x42\x02\x18\x01\x12\x1c\n\x06\x63hains\x18\x10 \x03(\x0b\x32\x0c.lnrpc.Chain\x12\x0c\n\x04uris\x18\x0c \x03(\t\x12\x36\n\x08\x66\x65\x61tures\x18\x13 \x03(\x0b\x32$.lnrpc.GetInfoResponse.FeaturesEntry\x12 \n\x18require_htlc_interceptor\x18\x15 \x01(\x08\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01J\x04\x08\x0b\x10\x0c"\x18\n\x16GetRecoveryInfoRequest"]\n\x17GetRecoveryInfoResponse\x12\x15\n\rrecovery_mode\x18\x01 \x01(\x08\x12\x19\n\x11recovery_finished\x18\x02 \x01(\x08\x12\x10\n\x08progress\x18\x03 \x01(\x01"\'\n\x05\x43hain\x12\r\n\x05\x63hain\x18\x01 \x01(\t\x12\x0f\n\x07network\x18\x02 \x01(\t"U\n\x12\x43onfirmationUpdate\x12\x11\n\tblock_sha\x18\x01 \x01(\x0c\x12\x14\n\x0c\x62lock_height\x18\x02 \x01(\x05\x12\x16\n\x0enum_confs_left\x18\x03 \x01(\r"?\n\x11\x43hannelOpenUpdate\x12*\n\rchannel_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint";\n\x12\x43hannelCloseUpdate\x12\x14\n\x0c\x63losing_txid\x18\x01 \x01(\x0c\x12\x0f\n\x07success\x18\x02 \x01(\x08"\xcb\x01\n\x13\x43loseChannelRequest\x12*\n\rchannel_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12\r\n\x05\x66orce\x18\x02 \x01(\x08\x12\x13\n\x0btarget_conf\x18\x03 \x01(\x05\x12\x18\n\x0csat_per_byte\x18\x04 \x01(\x03\x42\x02\x18\x01\x12\x18\n\x10\x64\x65livery_address\x18\x05 \x01(\t\x12\x15\n\rsat_per_vbyte\x18\x06 \x01(\x04\x12\x19\n\x11max_fee_per_vbyte\x18\x07 \x01(\x04"}\n\x11\x43loseStatusUpdate\x12-\n\rclose_pending\x18\x01 \x01(\x0b\x32\x14.lnrpc.PendingUpdateH\x00\x12/\n\nchan_close\x18\x03 \x01(\x0b\x32\x19.lnrpc.ChannelCloseUpdateH\x00\x42\x08\n\x06update"3\n\rPendingUpdate\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x14\n\x0coutput_index\x18\x02 \x01(\r"T\n\x13ReadyForPsbtFunding\x12\x17\n\x0f\x66unding_address\x18\x01 \x01(\t\x12\x16\n\x0e\x66unding_amount\x18\x02 \x01(\x03\x12\x0c\n\x04psbt\x18\x03 \x01(\x0c"\xad\x01\n\x17\x42\x61tchOpenChannelRequest\x12)\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x17.lnrpc.BatchOpenChannel\x12\x13\n\x0btarget_conf\x18\x02 \x01(\x05\x12\x15\n\rsat_per_vbyte\x18\x03 \x01(\x03\x12\x11\n\tmin_confs\x18\x04 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x05 \x01(\x08\x12\r\n\x05label\x18\x06 \x01(\t"\xf9\x01\n\x10\x42\x61tchOpenChannel\x12\x13\n\x0bnode_pubkey\x18\x01 \x01(\x0c\x12\x1c\n\x14local_funding_amount\x18\x02 \x01(\x03\x12\x10\n\x08push_sat\x18\x03 \x01(\x03\x12\x0f\n\x07private\x18\x04 \x01(\x08\x12\x15\n\rmin_htlc_msat\x18\x05 \x01(\x03\x12\x18\n\x10remote_csv_delay\x18\x06 \x01(\r\x12\x15\n\rclose_address\x18\x07 \x01(\t\x12\x17\n\x0fpending_chan_id\x18\x08 \x01(\x0c\x12.\n\x0f\x63ommitment_type\x18\t \x01(\x0e\x32\x15.lnrpc.CommitmentType"J\n\x18\x42\x61tchOpenChannelResponse\x12.\n\x10pending_channels\x18\x01 \x03(\x0b\x32\x14.lnrpc.PendingUpdate"\xa1\x04\n\x12OpenChannelRequest\x12\x15\n\rsat_per_vbyte\x18\x01 \x01(\x04\x12\x13\n\x0bnode_pubkey\x18\x02 \x01(\x0c\x12\x1e\n\x12node_pubkey_string\x18\x03 \x01(\tB\x02\x18\x01\x12\x1c\n\x14local_funding_amount\x18\x04 \x01(\x03\x12\x10\n\x08push_sat\x18\x05 \x01(\x03\x12\x13\n\x0btarget_conf\x18\x06 \x01(\x05\x12\x18\n\x0csat_per_byte\x18\x07 \x01(\x03\x42\x02\x18\x01\x12\x0f\n\x07private\x18\x08 \x01(\x08\x12\x15\n\rmin_htlc_msat\x18\t \x01(\x03\x12\x18\n\x10remote_csv_delay\x18\n \x01(\r\x12\x11\n\tmin_confs\x18\x0b \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x0c \x01(\x08\x12\x15\n\rclose_address\x18\r \x01(\t\x12(\n\x0c\x66unding_shim\x18\x0e \x01(\x0b\x32\x12.lnrpc.FundingShim\x12\'\n\x1fremote_max_value_in_flight_msat\x18\x0f \x01(\x04\x12\x18\n\x10remote_max_htlcs\x18\x10 \x01(\r\x12\x15\n\rmax_local_csv\x18\x11 \x01(\r\x12.\n\x0f\x63ommitment_type\x18\x12 \x01(\x0e\x32\x15.lnrpc.CommitmentType\x12\x11\n\tzero_conf\x18\x13 \x01(\x08\x12\x12\n\nscid_alias\x18\x14 \x01(\x08"\xc3\x01\n\x10OpenStatusUpdate\x12,\n\x0c\x63han_pending\x18\x01 \x01(\x0b\x32\x14.lnrpc.PendingUpdateH\x00\x12-\n\tchan_open\x18\x03 \x01(\x0b\x32\x18.lnrpc.ChannelOpenUpdateH\x00\x12/\n\tpsbt_fund\x18\x05 \x01(\x0b\x32\x1a.lnrpc.ReadyForPsbtFundingH\x00\x12\x17\n\x0fpending_chan_id\x18\x04 \x01(\x0c\x42\x08\n\x06update"3\n\nKeyLocator\x12\x12\n\nkey_family\x18\x01 \x01(\x05\x12\x11\n\tkey_index\x18\x02 \x01(\x05"J\n\rKeyDescriptor\x12\x15\n\rraw_key_bytes\x18\x01 \x01(\x0c\x12"\n\x07key_loc\x18\x02 \x01(\x0b\x32\x11.lnrpc.KeyLocator"\xb0\x01\n\rChanPointShim\x12\x0b\n\x03\x61mt\x18\x01 \x01(\x03\x12\'\n\nchan_point\x18\x02 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12\'\n\tlocal_key\x18\x03 \x01(\x0b\x32\x14.lnrpc.KeyDescriptor\x12\x12\n\nremote_key\x18\x04 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x05 \x01(\x0c\x12\x13\n\x0bthaw_height\x18\x06 \x01(\r"J\n\x08PsbtShim\x12\x17\n\x0fpending_chan_id\x18\x01 \x01(\x0c\x12\x11\n\tbase_psbt\x18\x02 \x01(\x0c\x12\x12\n\nno_publish\x18\x03 \x01(\x08"l\n\x0b\x46undingShim\x12/\n\x0f\x63han_point_shim\x18\x01 \x01(\x0b\x32\x14.lnrpc.ChanPointShimH\x00\x12$\n\tpsbt_shim\x18\x02 \x01(\x0b\x32\x0f.lnrpc.PsbtShimH\x00\x42\x06\n\x04shim",\n\x11\x46undingShimCancel\x12\x17\n\x0fpending_chan_id\x18\x01 \x01(\x0c"X\n\x11\x46undingPsbtVerify\x12\x13\n\x0b\x66unded_psbt\x18\x01 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x02 \x01(\x0c\x12\x15\n\rskip_finalize\x18\x03 \x01(\x08"Y\n\x13\x46undingPsbtFinalize\x12\x13\n\x0bsigned_psbt\x18\x01 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x02 \x01(\x0c\x12\x14\n\x0c\x66inal_raw_tx\x18\x03 \x01(\x0c"\xe5\x01\n\x14\x46undingTransitionMsg\x12+\n\rshim_register\x18\x01 \x01(\x0b\x32\x12.lnrpc.FundingShimH\x00\x12/\n\x0bshim_cancel\x18\x02 \x01(\x0b\x32\x18.lnrpc.FundingShimCancelH\x00\x12/\n\x0bpsbt_verify\x18\x03 \x01(\x0b\x32\x18.lnrpc.FundingPsbtVerifyH\x00\x12\x33\n\rpsbt_finalize\x18\x04 \x01(\x0b\x32\x1a.lnrpc.FundingPsbtFinalizeH\x00\x42\t\n\x07trigger"\x16\n\x14\x46undingStateStepResp"\x86\x01\n\x0bPendingHTLC\x12\x10\n\x08incoming\x18\x01 \x01(\x08\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x12\x10\n\x08outpoint\x18\x03 \x01(\t\x12\x17\n\x0fmaturity_height\x18\x04 \x01(\r\x12\x1b\n\x13\x62locks_til_maturity\x18\x05 \x01(\x05\x12\r\n\x05stage\x18\x06 \x01(\r"\x18\n\x16PendingChannelsRequest"\xf7\r\n\x17PendingChannelsResponse\x12\x1b\n\x13total_limbo_balance\x18\x01 \x01(\x03\x12P\n\x15pending_open_channels\x18\x02 \x03(\x0b\x32\x31.lnrpc.PendingChannelsResponse.PendingOpenChannel\x12R\n\x18pending_closing_channels\x18\x03 \x03(\x0b\x32,.lnrpc.PendingChannelsResponse.ClosedChannelB\x02\x18\x01\x12Y\n\x1epending_force_closing_channels\x18\x04 \x03(\x0b\x32\x31.lnrpc.PendingChannelsResponse.ForceClosedChannel\x12R\n\x16waiting_close_channels\x18\x05 \x03(\x0b\x32\x32.lnrpc.PendingChannelsResponse.WaitingCloseChannel\x1a\xe4\x02\n\x0ePendingChannel\x12\x17\n\x0fremote_node_pub\x18\x01 \x01(\t\x12\x15\n\rchannel_point\x18\x02 \x01(\t\x12\x10\n\x08\x63\x61pacity\x18\x03 \x01(\x03\x12\x15\n\rlocal_balance\x18\x04 \x01(\x03\x12\x16\n\x0eremote_balance\x18\x05 \x01(\x03\x12\x1e\n\x16local_chan_reserve_sat\x18\x06 \x01(\x03\x12\x1f\n\x17remote_chan_reserve_sat\x18\x07 \x01(\x03\x12#\n\tinitiator\x18\x08 \x01(\x0e\x32\x10.lnrpc.Initiator\x12.\n\x0f\x63ommitment_type\x18\t \x01(\x0e\x32\x15.lnrpc.CommitmentType\x12\x1f\n\x17num_forwarding_packages\x18\n \x01(\x03\x12\x19\n\x11\x63han_status_flags\x18\x0b \x01(\t\x12\x0f\n\x07private\x18\x0c \x01(\x08\x1a\x99\x01\n\x12PendingOpenChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x12\n\ncommit_fee\x18\x04 \x01(\x03\x12\x15\n\rcommit_weight\x18\x05 \x01(\x03\x12\x12\n\nfee_per_kw\x18\x06 \x01(\x03J\x04\x08\x02\x10\x03\x1a\xc3\x01\n\x13WaitingCloseChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x15\n\rlimbo_balance\x18\x02 \x01(\x03\x12?\n\x0b\x63ommitments\x18\x03 \x01(\x0b\x32*.lnrpc.PendingChannelsResponse.Commitments\x12\x14\n\x0c\x63losing_txid\x18\x04 \x01(\t\x1a\xb7\x01\n\x0b\x43ommitments\x12\x12\n\nlocal_txid\x18\x01 \x01(\t\x12\x13\n\x0bremote_txid\x18\x02 \x01(\t\x12\x1b\n\x13remote_pending_txid\x18\x03 \x01(\t\x12\x1c\n\x14local_commit_fee_sat\x18\x04 \x01(\x04\x12\x1d\n\x15remote_commit_fee_sat\x18\x05 \x01(\x04\x12%\n\x1dremote_pending_commit_fee_sat\x18\x06 \x01(\x04\x1a\x65\n\rClosedChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x14\n\x0c\x63losing_txid\x18\x02 \x01(\t\x1a\xff\x02\n\x12\x46orceClosedChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x14\n\x0c\x63losing_txid\x18\x02 \x01(\t\x12\x15\n\rlimbo_balance\x18\x03 \x01(\x03\x12\x17\n\x0fmaturity_height\x18\x04 \x01(\r\x12\x1b\n\x13\x62locks_til_maturity\x18\x05 \x01(\x05\x12\x19\n\x11recovered_balance\x18\x06 \x01(\x03\x12)\n\rpending_htlcs\x18\x08 \x03(\x0b\x32\x12.lnrpc.PendingHTLC\x12M\n\x06\x61nchor\x18\t \x01(\x0e\x32=.lnrpc.PendingChannelsResponse.ForceClosedChannel.AnchorState"1\n\x0b\x41nchorState\x12\t\n\x05LIMBO\x10\x00\x12\r\n\tRECOVERED\x10\x01\x12\x08\n\x04LOST\x10\x02"\x1a\n\x18\x43hannelEventSubscription"\x93\x04\n\x12\x43hannelEventUpdate\x12&\n\x0copen_channel\x18\x01 \x01(\x0b\x32\x0e.lnrpc.ChannelH\x00\x12\x34\n\x0e\x63losed_channel\x18\x02 \x01(\x0b\x32\x1a.lnrpc.ChannelCloseSummaryH\x00\x12-\n\x0e\x61\x63tive_channel\x18\x03 \x01(\x0b\x32\x13.lnrpc.ChannelPointH\x00\x12/\n\x10inactive_channel\x18\x04 \x01(\x0b\x32\x13.lnrpc.ChannelPointH\x00\x12\x34\n\x14pending_open_channel\x18\x06 \x01(\x0b\x32\x14.lnrpc.PendingUpdateH\x00\x12\x35\n\x16\x66ully_resolved_channel\x18\x07 \x01(\x0b\x32\x13.lnrpc.ChannelPointH\x00\x12\x32\n\x04type\x18\x05 \x01(\x0e\x32$.lnrpc.ChannelEventUpdate.UpdateType"\x92\x01\n\nUpdateType\x12\x10\n\x0cOPEN_CHANNEL\x10\x00\x12\x12\n\x0e\x43LOSED_CHANNEL\x10\x01\x12\x12\n\x0e\x41\x43TIVE_CHANNEL\x10\x02\x12\x14\n\x10INACTIVE_CHANNEL\x10\x03\x12\x18\n\x14PENDING_OPEN_CHANNEL\x10\x04\x12\x1a\n\x16\x46ULLY_RESOLVED_CHANNEL\x10\x05\x42\t\n\x07\x63hannel"N\n\x14WalletAccountBalance\x12\x19\n\x11\x63onfirmed_balance\x18\x01 \x01(\x03\x12\x1b\n\x13unconfirmed_balance\x18\x02 \x01(\x03"\x16\n\x14WalletBalanceRequest"\xc3\x02\n\x15WalletBalanceResponse\x12\x15\n\rtotal_balance\x18\x01 \x01(\x03\x12\x19\n\x11\x63onfirmed_balance\x18\x02 \x01(\x03\x12\x1b\n\x13unconfirmed_balance\x18\x03 \x01(\x03\x12\x16\n\x0elocked_balance\x18\x05 \x01(\x03\x12$\n\x1creserved_balance_anchor_chan\x18\x06 \x01(\x03\x12I\n\x0f\x61\x63\x63ount_balance\x18\x04 \x03(\x0b\x32\x30.lnrpc.WalletBalanceResponse.AccountBalanceEntry\x1aR\n\x13\x41\x63\x63ountBalanceEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12*\n\x05value\x18\x02 \x01(\x0b\x32\x1b.lnrpc.WalletAccountBalance:\x02\x38\x01"#\n\x06\x41mount\x12\x0b\n\x03sat\x18\x01 \x01(\x04\x12\x0c\n\x04msat\x18\x02 \x01(\x04"\x17\n\x15\x43hannelBalanceRequest"\xe4\x02\n\x16\x43hannelBalanceResponse\x12\x13\n\x07\x62\x61lance\x18\x01 \x01(\x03\x42\x02\x18\x01\x12 \n\x14pending_open_balance\x18\x02 \x01(\x03\x42\x02\x18\x01\x12$\n\rlocal_balance\x18\x03 \x01(\x0b\x32\r.lnrpc.Amount\x12%\n\x0eremote_balance\x18\x04 \x01(\x0b\x32\r.lnrpc.Amount\x12.\n\x17unsettled_local_balance\x18\x05 \x01(\x0b\x32\r.lnrpc.Amount\x12/\n\x18unsettled_remote_balance\x18\x06 \x01(\x0b\x32\r.lnrpc.Amount\x12\x31\n\x1apending_open_local_balance\x18\x07 \x01(\x0b\x32\r.lnrpc.Amount\x12\x32\n\x1bpending_open_remote_balance\x18\x08 \x01(\x0b\x32\r.lnrpc.Amount"\xe3\x04\n\x12QueryRoutesRequest\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\x12\x0b\n\x03\x61mt\x18\x02 \x01(\x03\x12\x10\n\x08\x61mt_msat\x18\x0c \x01(\x03\x12\x18\n\x10\x66inal_cltv_delta\x18\x04 \x01(\x05\x12"\n\tfee_limit\x18\x05 \x01(\x0b\x32\x0f.lnrpc.FeeLimit\x12\x15\n\rignored_nodes\x18\x06 \x03(\x0c\x12-\n\rignored_edges\x18\x07 \x03(\x0b\x32\x12.lnrpc.EdgeLocatorB\x02\x18\x01\x12\x16\n\x0esource_pub_key\x18\x08 \x01(\t\x12\x1b\n\x13use_mission_control\x18\t \x01(\x08\x12&\n\rignored_pairs\x18\n \x03(\x0b\x32\x0f.lnrpc.NodePair\x12\x12\n\ncltv_limit\x18\x0b \x01(\r\x12M\n\x13\x64\x65st_custom_records\x18\r \x03(\x0b\x32\x30.lnrpc.QueryRoutesRequest.DestCustomRecordsEntry\x12\x1c\n\x10outgoing_chan_id\x18\x0e \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0flast_hop_pubkey\x18\x0f \x01(\x0c\x12%\n\x0broute_hints\x18\x10 \x03(\x0b\x32\x10.lnrpc.RouteHint\x12(\n\rdest_features\x18\x11 \x03(\x0e\x32\x11.lnrpc.FeatureBit\x12\x11\n\ttime_pref\x18\x12 \x01(\x01\x1a\x38\n\x16\x44\x65stCustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01J\x04\x08\x03\x10\x04"$\n\x08NodePair\x12\x0c\n\x04\x66rom\x18\x01 \x01(\x0c\x12\n\n\x02to\x18\x02 \x01(\x0c"@\n\x0b\x45\x64geLocator\x12\x16\n\nchannel_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x64irection_reverse\x18\x02 \x01(\x08"I\n\x13QueryRoutesResponse\x12\x1c\n\x06routes\x18\x01 \x03(\x0b\x32\x0c.lnrpc.Route\x12\x14\n\x0csuccess_prob\x18\x02 \x01(\x01"\x96\x03\n\x03Hop\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\rchan_capacity\x18\x02 \x01(\x03\x42\x02\x18\x01\x12\x1a\n\x0e\x61mt_to_forward\x18\x03 \x01(\x03\x42\x02\x18\x01\x12\x0f\n\x03\x66\x65\x65\x18\x04 \x01(\x03\x42\x02\x18\x01\x12\x0e\n\x06\x65xpiry\x18\x05 \x01(\r\x12\x1b\n\x13\x61mt_to_forward_msat\x18\x06 \x01(\x03\x12\x10\n\x08\x66\x65\x65_msat\x18\x07 \x01(\x03\x12\x0f\n\x07pub_key\x18\x08 \x01(\t\x12\x17\n\x0btlv_payload\x18\t \x01(\x08\x42\x02\x18\x01\x12$\n\nmpp_record\x18\n \x01(\x0b\x32\x10.lnrpc.MPPRecord\x12$\n\namp_record\x18\x0c \x01(\x0b\x32\x10.lnrpc.AMPRecord\x12\x35\n\x0e\x63ustom_records\x18\x0b \x03(\x0b\x32\x1d.lnrpc.Hop.CustomRecordsEntry\x12\x10\n\x08metadata\x18\r \x01(\x0c\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"9\n\tMPPRecord\x12\x14\n\x0cpayment_addr\x18\x0b \x01(\x0c\x12\x16\n\x0etotal_amt_msat\x18\n \x01(\x03"D\n\tAMPRecord\x12\x12\n\nroot_share\x18\x01 \x01(\x0c\x12\x0e\n\x06set_id\x18\x02 \x01(\x0c\x12\x13\n\x0b\x63hild_index\x18\x03 \x01(\r"\x9a\x01\n\x05Route\x12\x17\n\x0ftotal_time_lock\x18\x01 \x01(\r\x12\x16\n\ntotal_fees\x18\x02 \x01(\x03\x42\x02\x18\x01\x12\x15\n\ttotal_amt\x18\x03 \x01(\x03\x42\x02\x18\x01\x12\x18\n\x04hops\x18\x04 \x03(\x0b\x32\n.lnrpc.Hop\x12\x17\n\x0ftotal_fees_msat\x18\x05 \x01(\x03\x12\x16\n\x0etotal_amt_msat\x18\x06 \x01(\x03"<\n\x0fNodeInfoRequest\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\x12\x18\n\x10include_channels\x18\x02 \x01(\x08"\x82\x01\n\x08NodeInfo\x12"\n\x04node\x18\x01 \x01(\x0b\x32\x14.lnrpc.LightningNode\x12\x14\n\x0cnum_channels\x18\x02 \x01(\r\x12\x16\n\x0etotal_capacity\x18\x03 \x01(\x03\x12$\n\x08\x63hannels\x18\x04 \x03(\x0b\x32\x12.lnrpc.ChannelEdge"\xf1\x01\n\rLightningNode\x12\x13\n\x0blast_update\x18\x01 \x01(\r\x12\x0f\n\x07pub_key\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\x12%\n\taddresses\x18\x04 \x03(\x0b\x32\x12.lnrpc.NodeAddress\x12\r\n\x05\x63olor\x18\x05 \x01(\t\x12\x34\n\x08\x66\x65\x61tures\x18\x06 \x03(\x0b\x32".lnrpc.LightningNode.FeaturesEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01",\n\x0bNodeAddress\x12\x0f\n\x07network\x18\x01 \x01(\t\x12\x0c\n\x04\x61\x64\x64r\x18\x02 \x01(\t"\xac\x01\n\rRoutingPolicy\x12\x17\n\x0ftime_lock_delta\x18\x01 \x01(\r\x12\x10\n\x08min_htlc\x18\x02 \x01(\x03\x12\x15\n\rfee_base_msat\x18\x03 \x01(\x03\x12\x1b\n\x13\x66\x65\x65_rate_milli_msat\x18\x04 \x01(\x03\x12\x10\n\x08\x64isabled\x18\x05 \x01(\x08\x12\x15\n\rmax_htlc_msat\x18\x06 \x01(\x04\x12\x13\n\x0blast_update\x18\x07 \x01(\r"\xe2\x01\n\x0b\x43hannelEdge\x12\x16\n\nchannel_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x12\n\nchan_point\x18\x02 \x01(\t\x12\x17\n\x0blast_update\x18\x03 \x01(\rB\x02\x18\x01\x12\x11\n\tnode1_pub\x18\x04 \x01(\t\x12\x11\n\tnode2_pub\x18\x05 \x01(\t\x12\x10\n\x08\x63\x61pacity\x18\x06 \x01(\x03\x12*\n\x0cnode1_policy\x18\x07 \x01(\x0b\x32\x14.lnrpc.RoutingPolicy\x12*\n\x0cnode2_policy\x18\x08 \x01(\x0b\x32\x14.lnrpc.RoutingPolicy"2\n\x13\x43hannelGraphRequest\x12\x1b\n\x13include_unannounced\x18\x01 \x01(\x08"V\n\x0c\x43hannelGraph\x12#\n\x05nodes\x18\x01 \x03(\x0b\x32\x14.lnrpc.LightningNode\x12!\n\x05\x65\x64ges\x18\x02 \x03(\x0b\x32\x12.lnrpc.ChannelEdge":\n\x12NodeMetricsRequest\x12$\n\x05types\x18\x01 \x03(\x0e\x32\x15.lnrpc.NodeMetricType"\xbe\x01\n\x13NodeMetricsResponse\x12U\n\x16\x62\x65tweenness_centrality\x18\x01 \x03(\x0b\x32\x35.lnrpc.NodeMetricsResponse.BetweennessCentralityEntry\x1aP\n\x1a\x42\x65tweennessCentralityEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.lnrpc.FloatMetric:\x02\x38\x01"6\n\x0b\x46loatMetric\x12\r\n\x05value\x18\x01 \x01(\x01\x12\x18\n\x10normalized_value\x18\x02 \x01(\x01"&\n\x0f\x43hanInfoRequest\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01"\x14\n\x12NetworkInfoRequest"\xa7\x02\n\x0bNetworkInfo\x12\x16\n\x0egraph_diameter\x18\x01 \x01(\r\x12\x16\n\x0e\x61vg_out_degree\x18\x02 \x01(\x01\x12\x16\n\x0emax_out_degree\x18\x03 \x01(\r\x12\x11\n\tnum_nodes\x18\x04 \x01(\r\x12\x14\n\x0cnum_channels\x18\x05 \x01(\r\x12\x1e\n\x16total_network_capacity\x18\x06 \x01(\x03\x12\x18\n\x10\x61vg_channel_size\x18\x07 \x01(\x01\x12\x18\n\x10min_channel_size\x18\x08 \x01(\x03\x12\x18\n\x10max_channel_size\x18\t \x01(\x03\x12\x1f\n\x17median_channel_size_sat\x18\n \x01(\x03\x12\x18\n\x10num_zombie_chans\x18\x0b \x01(\x04"\r\n\x0bStopRequest"\x0e\n\x0cStopResponse"\x1b\n\x19GraphTopologySubscription"\xa3\x01\n\x13GraphTopologyUpdate\x12\'\n\x0cnode_updates\x18\x01 \x03(\x0b\x32\x11.lnrpc.NodeUpdate\x12\x31\n\x0f\x63hannel_updates\x18\x02 \x03(\x0b\x32\x18.lnrpc.ChannelEdgeUpdate\x12\x30\n\x0c\x63losed_chans\x18\x03 \x03(\x0b\x32\x1a.lnrpc.ClosedChannelUpdate"\x94\x02\n\nNodeUpdate\x12\x15\n\taddresses\x18\x01 \x03(\tB\x02\x18\x01\x12\x14\n\x0cidentity_key\x18\x02 \x01(\t\x12\x1b\n\x0fglobal_features\x18\x03 \x01(\x0c\x42\x02\x18\x01\x12\r\n\x05\x61lias\x18\x04 \x01(\t\x12\r\n\x05\x63olor\x18\x05 \x01(\t\x12*\n\x0enode_addresses\x18\x07 \x03(\x0b\x32\x12.lnrpc.NodeAddress\x12\x31\n\x08\x66\x65\x61tures\x18\x06 \x03(\x0b\x32\x1f.lnrpc.NodeUpdate.FeaturesEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01"\xc4\x01\n\x11\x43hannelEdgeUpdate\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\'\n\nchan_point\x18\x02 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12\x10\n\x08\x63\x61pacity\x18\x03 \x01(\x03\x12,\n\x0erouting_policy\x18\x04 \x01(\x0b\x32\x14.lnrpc.RoutingPolicy\x12\x18\n\x10\x61\x64vertising_node\x18\x05 \x01(\t\x12\x17\n\x0f\x63onnecting_node\x18\x06 \x01(\t"|\n\x13\x43losedChannelUpdate\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x10\n\x08\x63\x61pacity\x18\x02 \x01(\x03\x12\x15\n\rclosed_height\x18\x03 \x01(\r\x12\'\n\nchan_point\x18\x04 \x01(\x0b\x32\x13.lnrpc.ChannelPoint"\x86\x01\n\x07HopHint\x12\x0f\n\x07node_id\x18\x01 \x01(\t\x12\x13\n\x07\x63han_id\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rfee_base_msat\x18\x03 \x01(\r\x12#\n\x1b\x66\x65\x65_proportional_millionths\x18\x04 \x01(\r\x12\x19\n\x11\x63ltv_expiry_delta\x18\x05 \x01(\r"\x17\n\x05SetID\x12\x0e\n\x06set_id\x18\x01 \x01(\x0c".\n\tRouteHint\x12!\n\thop_hints\x18\x01 \x03(\x0b\x32\x0e.lnrpc.HopHint"{\n\x0f\x41MPInvoiceState\x12&\n\x05state\x18\x01 \x01(\x0e\x32\x17.lnrpc.InvoiceHTLCState\x12\x14\n\x0csettle_index\x18\x02 \x01(\x04\x12\x13\n\x0bsettle_time\x18\x03 \x01(\x03\x12\x15\n\ramt_paid_msat\x18\x05 \x01(\x03"\x85\x07\n\x07Invoice\x12\x0c\n\x04memo\x18\x01 \x01(\t\x12\x12\n\nr_preimage\x18\x03 \x01(\x0c\x12\x0e\n\x06r_hash\x18\x04 \x01(\x0c\x12\r\n\x05value\x18\x05 \x01(\x03\x12\x12\n\nvalue_msat\x18\x17 \x01(\x03\x12\x13\n\x07settled\x18\x06 \x01(\x08\x42\x02\x18\x01\x12\x15\n\rcreation_date\x18\x07 \x01(\x03\x12\x13\n\x0bsettle_date\x18\x08 \x01(\x03\x12\x17\n\x0fpayment_request\x18\t \x01(\t\x12\x18\n\x10\x64\x65scription_hash\x18\n \x01(\x0c\x12\x0e\n\x06\x65xpiry\x18\x0b \x01(\x03\x12\x15\n\rfallback_addr\x18\x0c \x01(\t\x12\x13\n\x0b\x63ltv_expiry\x18\r \x01(\x04\x12%\n\x0broute_hints\x18\x0e \x03(\x0b\x32\x10.lnrpc.RouteHint\x12\x0f\n\x07private\x18\x0f \x01(\x08\x12\x11\n\tadd_index\x18\x10 \x01(\x04\x12\x14\n\x0csettle_index\x18\x11 \x01(\x04\x12\x14\n\x08\x61mt_paid\x18\x12 \x01(\x03\x42\x02\x18\x01\x12\x14\n\x0c\x61mt_paid_sat\x18\x13 \x01(\x03\x12\x15\n\ramt_paid_msat\x18\x14 \x01(\x03\x12*\n\x05state\x18\x15 \x01(\x0e\x32\x1b.lnrpc.Invoice.InvoiceState\x12!\n\x05htlcs\x18\x16 \x03(\x0b\x32\x12.lnrpc.InvoiceHTLC\x12.\n\x08\x66\x65\x61tures\x18\x18 \x03(\x0b\x32\x1c.lnrpc.Invoice.FeaturesEntry\x12\x12\n\nis_keysend\x18\x19 \x01(\x08\x12\x14\n\x0cpayment_addr\x18\x1a \x01(\x0c\x12\x0e\n\x06is_amp\x18\x1b \x01(\x08\x12>\n\x11\x61mp_invoice_state\x18\x1c \x03(\x0b\x32#.lnrpc.Invoice.AmpInvoiceStateEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01\x1aN\n\x14\x41mpInvoiceStateEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.lnrpc.AMPInvoiceState:\x02\x38\x01"A\n\x0cInvoiceState\x12\x08\n\x04OPEN\x10\x00\x12\x0b\n\x07SETTLED\x10\x01\x12\x0c\n\x08\x43\x41NCELED\x10\x02\x12\x0c\n\x08\x41\x43\x43\x45PTED\x10\x03J\x04\x08\x02\x10\x03"\xf3\x02\n\x0bInvoiceHTLC\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x12\n\nhtlc_index\x18\x02 \x01(\x04\x12\x10\n\x08\x61mt_msat\x18\x03 \x01(\x04\x12\x15\n\raccept_height\x18\x04 \x01(\x05\x12\x13\n\x0b\x61\x63\x63\x65pt_time\x18\x05 \x01(\x03\x12\x14\n\x0cresolve_time\x18\x06 \x01(\x03\x12\x15\n\rexpiry_height\x18\x07 \x01(\x05\x12&\n\x05state\x18\x08 \x01(\x0e\x32\x17.lnrpc.InvoiceHTLCState\x12=\n\x0e\x63ustom_records\x18\t \x03(\x0b\x32%.lnrpc.InvoiceHTLC.CustomRecordsEntry\x12\x1a\n\x12mpp_total_amt_msat\x18\n \x01(\x04\x12\x17\n\x03\x61mp\x18\x0b \x01(\x0b\x32\n.lnrpc.AMP\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"^\n\x03\x41MP\x12\x12\n\nroot_share\x18\x01 \x01(\x0c\x12\x0e\n\x06set_id\x18\x02 \x01(\x0c\x12\x13\n\x0b\x63hild_index\x18\x03 \x01(\r\x12\x0c\n\x04hash\x18\x04 \x01(\x0c\x12\x10\n\x08preimage\x18\x05 \x01(\x0c"f\n\x12\x41\x64\x64InvoiceResponse\x12\x0e\n\x06r_hash\x18\x01 \x01(\x0c\x12\x17\n\x0fpayment_request\x18\x02 \x01(\t\x12\x11\n\tadd_index\x18\x10 \x01(\x04\x12\x14\n\x0cpayment_addr\x18\x11 \x01(\x0c"5\n\x0bPaymentHash\x12\x16\n\nr_hash_str\x18\x01 \x01(\tB\x02\x18\x01\x12\x0e\n\x06r_hash\x18\x02 \x01(\x0c"l\n\x12ListInvoiceRequest\x12\x14\n\x0cpending_only\x18\x01 \x01(\x08\x12\x14\n\x0cindex_offset\x18\x04 \x01(\x04\x12\x18\n\x10num_max_invoices\x18\x05 \x01(\x04\x12\x10\n\x08reversed\x18\x06 \x01(\x08"n\n\x13ListInvoiceResponse\x12 \n\x08invoices\x18\x01 \x03(\x0b\x32\x0e.lnrpc.Invoice\x12\x19\n\x11last_index_offset\x18\x02 \x01(\x04\x12\x1a\n\x12\x66irst_index_offset\x18\x03 \x01(\x04">\n\x13InvoiceSubscription\x12\x11\n\tadd_index\x18\x01 \x01(\x04\x12\x14\n\x0csettle_index\x18\x02 \x01(\x04"\xe0\x03\n\x07Payment\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\t\x12\x11\n\x05value\x18\x02 \x01(\x03\x42\x02\x18\x01\x12\x19\n\rcreation_date\x18\x03 \x01(\x03\x42\x02\x18\x01\x12\x0f\n\x03\x66\x65\x65\x18\x05 \x01(\x03\x42\x02\x18\x01\x12\x18\n\x10payment_preimage\x18\x06 \x01(\t\x12\x11\n\tvalue_sat\x18\x07 \x01(\x03\x12\x12\n\nvalue_msat\x18\x08 \x01(\x03\x12\x17\n\x0fpayment_request\x18\t \x01(\t\x12,\n\x06status\x18\n \x01(\x0e\x32\x1c.lnrpc.Payment.PaymentStatus\x12\x0f\n\x07\x66\x65\x65_sat\x18\x0b \x01(\x03\x12\x10\n\x08\x66\x65\x65_msat\x18\x0c \x01(\x03\x12\x18\n\x10\x63reation_time_ns\x18\r \x01(\x03\x12!\n\x05htlcs\x18\x0e \x03(\x0b\x32\x12.lnrpc.HTLCAttempt\x12\x15\n\rpayment_index\x18\x0f \x01(\x04\x12\x33\n\x0e\x66\x61ilure_reason\x18\x10 \x01(\x0e\x32\x1b.lnrpc.PaymentFailureReason"F\n\rPaymentStatus\x12\x0b\n\x07UNKNOWN\x10\x00\x12\r\n\tIN_FLIGHT\x10\x01\x12\r\n\tSUCCEEDED\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03J\x04\x08\x04\x10\x05"\x8a\x02\n\x0bHTLCAttempt\x12\x12\n\nattempt_id\x18\x07 \x01(\x04\x12-\n\x06status\x18\x01 \x01(\x0e\x32\x1d.lnrpc.HTLCAttempt.HTLCStatus\x12\x1b\n\x05route\x18\x02 \x01(\x0b\x32\x0c.lnrpc.Route\x12\x17\n\x0f\x61ttempt_time_ns\x18\x03 \x01(\x03\x12\x17\n\x0fresolve_time_ns\x18\x04 \x01(\x03\x12\x1f\n\x07\x66\x61ilure\x18\x05 \x01(\x0b\x32\x0e.lnrpc.Failure\x12\x10\n\x08preimage\x18\x06 \x01(\x0c"6\n\nHTLCStatus\x12\r\n\tIN_FLIGHT\x10\x00\x12\r\n\tSUCCEEDED\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02"\x8d\x01\n\x13ListPaymentsRequest\x12\x1a\n\x12include_incomplete\x18\x01 \x01(\x08\x12\x14\n\x0cindex_offset\x18\x02 \x01(\x04\x12\x14\n\x0cmax_payments\x18\x03 \x01(\x04\x12\x10\n\x08reversed\x18\x04 \x01(\x08\x12\x1c\n\x14\x63ount_total_payments\x18\x05 \x01(\x08"\x8b\x01\n\x14ListPaymentsResponse\x12 \n\x08payments\x18\x01 \x03(\x0b\x32\x0e.lnrpc.Payment\x12\x1a\n\x12\x66irst_index_offset\x18\x02 \x01(\x04\x12\x19\n\x11last_index_offset\x18\x03 \x01(\x04\x12\x1a\n\x12total_num_payments\x18\x04 \x01(\x04"G\n\x14\x44\x65letePaymentRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x19\n\x11\x66\x61iled_htlcs_only\x18\x02 \x01(\x08"S\n\x18\x44\x65leteAllPaymentsRequest\x12\x1c\n\x14\x66\x61iled_payments_only\x18\x01 \x01(\x08\x12\x19\n\x11\x66\x61iled_htlcs_only\x18\x02 \x01(\x08"\x17\n\x15\x44\x65letePaymentResponse"\x1b\n\x19\x44\x65leteAllPaymentsResponse"\x86\x01\n\x15\x41\x62\x61ndonChannelRequest\x12*\n\rchannel_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12!\n\x19pending_funding_shim_only\x18\x02 \x01(\x08\x12\x1e\n\x16i_know_what_i_am_doing\x18\x03 \x01(\x08"\x18\n\x16\x41\x62\x61ndonChannelResponse"5\n\x11\x44\x65\x62ugLevelRequest\x12\x0c\n\x04show\x18\x01 \x01(\x08\x12\x12\n\nlevel_spec\x18\x02 \x01(\t")\n\x12\x44\x65\x62ugLevelResponse\x12\x13\n\x0bsub_systems\x18\x01 \x01(\t"\x1f\n\x0cPayReqString\x12\x0f\n\x07pay_req\x18\x01 \x01(\t"\x86\x03\n\x06PayReq\x12\x13\n\x0b\x64\x65stination\x18\x01 \x01(\t\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\t\x12\x14\n\x0cnum_satoshis\x18\x03 \x01(\x03\x12\x11\n\ttimestamp\x18\x04 \x01(\x03\x12\x0e\n\x06\x65xpiry\x18\x05 \x01(\x03\x12\x13\n\x0b\x64\x65scription\x18\x06 \x01(\t\x12\x18\n\x10\x64\x65scription_hash\x18\x07 \x01(\t\x12\x15\n\rfallback_addr\x18\x08 \x01(\t\x12\x13\n\x0b\x63ltv_expiry\x18\t \x01(\x03\x12%\n\x0broute_hints\x18\n \x03(\x0b\x32\x10.lnrpc.RouteHint\x12\x14\n\x0cpayment_addr\x18\x0b \x01(\x0c\x12\x10\n\x08num_msat\x18\x0c \x01(\x03\x12-\n\x08\x66\x65\x61tures\x18\r \x03(\x0b\x32\x1b.lnrpc.PayReq.FeaturesEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01">\n\x07\x46\x65\x61ture\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0bis_required\x18\x03 \x01(\x08\x12\x10\n\x08is_known\x18\x04 \x01(\x08"\x12\n\x10\x46\x65\x65ReportRequest"|\n\x10\x43hannelFeeReport\x12\x13\n\x07\x63han_id\x18\x05 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rchannel_point\x18\x01 \x01(\t\x12\x15\n\rbase_fee_msat\x18\x02 \x01(\x03\x12\x13\n\x0b\x66\x65\x65_per_mil\x18\x03 \x01(\x03\x12\x10\n\x08\x66\x65\x65_rate\x18\x04 \x01(\x01"\x84\x01\n\x11\x46\x65\x65ReportResponse\x12-\n\x0c\x63hannel_fees\x18\x01 \x03(\x0b\x32\x17.lnrpc.ChannelFeeReport\x12\x13\n\x0b\x64\x61y_fee_sum\x18\x02 \x01(\x04\x12\x14\n\x0cweek_fee_sum\x18\x03 \x01(\x04\x12\x15\n\rmonth_fee_sum\x18\x04 \x01(\x04"\x82\x02\n\x13PolicyUpdateRequest\x12\x10\n\x06global\x18\x01 \x01(\x08H\x00\x12)\n\nchan_point\x18\x02 \x01(\x0b\x32\x13.lnrpc.ChannelPointH\x00\x12\x15\n\rbase_fee_msat\x18\x03 \x01(\x03\x12\x10\n\x08\x66\x65\x65_rate\x18\x04 \x01(\x01\x12\x14\n\x0c\x66\x65\x65_rate_ppm\x18\t \x01(\r\x12\x17\n\x0ftime_lock_delta\x18\x05 \x01(\r\x12\x15\n\rmax_htlc_msat\x18\x06 \x01(\x04\x12\x15\n\rmin_htlc_msat\x18\x07 \x01(\x04\x12\x1f\n\x17min_htlc_msat_specified\x18\x08 \x01(\x08\x42\x07\n\x05scope"m\n\x0c\x46\x61iledUpdate\x12!\n\x08outpoint\x18\x01 \x01(\x0b\x32\x0f.lnrpc.OutPoint\x12$\n\x06reason\x18\x02 \x01(\x0e\x32\x14.lnrpc.UpdateFailure\x12\x14\n\x0cupdate_error\x18\x03 \x01(\t"C\n\x14PolicyUpdateResponse\x12+\n\x0e\x66\x61iled_updates\x18\x01 \x03(\x0b\x32\x13.lnrpc.FailedUpdate"n\n\x18\x46orwardingHistoryRequest\x12\x12\n\nstart_time\x18\x01 \x01(\x04\x12\x10\n\x08\x65nd_time\x18\x02 \x01(\x04\x12\x14\n\x0cindex_offset\x18\x03 \x01(\r\x12\x16\n\x0enum_max_events\x18\x04 \x01(\r"\xda\x01\n\x0f\x46orwardingEvent\x12\x15\n\ttimestamp\x18\x01 \x01(\x04\x42\x02\x18\x01\x12\x16\n\nchan_id_in\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0b\x63han_id_out\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x0e\n\x06\x61mt_in\x18\x05 \x01(\x04\x12\x0f\n\x07\x61mt_out\x18\x06 \x01(\x04\x12\x0b\n\x03\x66\x65\x65\x18\x07 \x01(\x04\x12\x10\n\x08\x66\x65\x65_msat\x18\x08 \x01(\x04\x12\x13\n\x0b\x61mt_in_msat\x18\t \x01(\x04\x12\x14\n\x0c\x61mt_out_msat\x18\n \x01(\x04\x12\x14\n\x0ctimestamp_ns\x18\x0b \x01(\x04"i\n\x19\x46orwardingHistoryResponse\x12\x31\n\x11\x66orwarding_events\x18\x01 \x03(\x0b\x32\x16.lnrpc.ForwardingEvent\x12\x19\n\x11last_offset_index\x18\x02 \x01(\r"E\n\x1a\x45xportChannelBackupRequest\x12\'\n\nchan_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint"M\n\rChannelBackup\x12\'\n\nchan_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12\x13\n\x0b\x63han_backup\x18\x02 \x01(\x0c"V\n\x0fMultiChanBackup\x12(\n\x0b\x63han_points\x18\x01 \x03(\x0b\x32\x13.lnrpc.ChannelPoint\x12\x19\n\x11multi_chan_backup\x18\x02 \x01(\x0c"\x19\n\x17\x43hanBackupExportRequest"{\n\x12\x43hanBackupSnapshot\x12\x32\n\x13single_chan_backups\x18\x01 \x01(\x0b\x32\x15.lnrpc.ChannelBackups\x12\x31\n\x11multi_chan_backup\x18\x02 \x01(\x0b\x32\x16.lnrpc.MultiChanBackup"<\n\x0e\x43hannelBackups\x12*\n\x0c\x63han_backups\x18\x01 \x03(\x0b\x32\x14.lnrpc.ChannelBackup"p\n\x18RestoreChanBackupRequest\x12-\n\x0c\x63han_backups\x18\x01 \x01(\x0b\x32\x15.lnrpc.ChannelBackupsH\x00\x12\x1b\n\x11multi_chan_backup\x18\x02 \x01(\x0cH\x00\x42\x08\n\x06\x62\x61\x63kup"\x17\n\x15RestoreBackupResponse"\x1b\n\x19\x43hannelBackupSubscription"\x1a\n\x18VerifyChanBackupResponse"4\n\x12MacaroonPermission\x12\x0e\n\x06\x65ntity\x18\x01 \x01(\t\x12\x0e\n\x06\x61\x63tion\x18\x02 \x01(\t"~\n\x13\x42\x61keMacaroonRequest\x12.\n\x0bpermissions\x18\x01 \x03(\x0b\x32\x19.lnrpc.MacaroonPermission\x12\x13\n\x0broot_key_id\x18\x02 \x01(\x04\x12"\n\x1a\x61llow_external_permissions\x18\x03 \x01(\x08"(\n\x14\x42\x61keMacaroonResponse\x12\x10\n\x08macaroon\x18\x01 \x01(\t"\x18\n\x16ListMacaroonIDsRequest"/\n\x17ListMacaroonIDsResponse\x12\x14\n\x0croot_key_ids\x18\x01 \x03(\x04".\n\x17\x44\x65leteMacaroonIDRequest\x12\x13\n\x0broot_key_id\x18\x01 \x01(\x04"+\n\x18\x44\x65leteMacaroonIDResponse\x12\x0f\n\x07\x64\x65leted\x18\x01 \x01(\x08"H\n\x16MacaroonPermissionList\x12.\n\x0bpermissions\x18\x01 \x03(\x0b\x32\x19.lnrpc.MacaroonPermission"\x18\n\x16ListPermissionsRequest"\xc5\x01\n\x17ListPermissionsResponse\x12Q\n\x12method_permissions\x18\x01 \x03(\x0b\x32\x35.lnrpc.ListPermissionsResponse.MethodPermissionsEntry\x1aW\n\x16MethodPermissionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.lnrpc.MacaroonPermissionList:\x02\x38\x01"\xd5\x07\n\x07\x46\x61ilure\x12(\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x1a.lnrpc.Failure.FailureCode\x12,\n\x0e\x63hannel_update\x18\x03 \x01(\x0b\x32\x14.lnrpc.ChannelUpdate\x12\x11\n\thtlc_msat\x18\x04 \x01(\x04\x12\x15\n\ronion_sha_256\x18\x05 \x01(\x0c\x12\x13\n\x0b\x63ltv_expiry\x18\x06 \x01(\r\x12\r\n\x05\x66lags\x18\x07 \x01(\r\x12\x1c\n\x14\x66\x61ilure_source_index\x18\x08 \x01(\r\x12\x0e\n\x06height\x18\t \x01(\r"\xef\x05\n\x0b\x46\x61ilureCode\x12\x0c\n\x08RESERVED\x10\x00\x12(\n$INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS\x10\x01\x12\x1c\n\x18INCORRECT_PAYMENT_AMOUNT\x10\x02\x12\x1f\n\x1b\x46INAL_INCORRECT_CLTV_EXPIRY\x10\x03\x12\x1f\n\x1b\x46INAL_INCORRECT_HTLC_AMOUNT\x10\x04\x12\x19\n\x15\x46INAL_EXPIRY_TOO_SOON\x10\x05\x12\x11\n\rINVALID_REALM\x10\x06\x12\x13\n\x0f\x45XPIRY_TOO_SOON\x10\x07\x12\x19\n\x15INVALID_ONION_VERSION\x10\x08\x12\x16\n\x12INVALID_ONION_HMAC\x10\t\x12\x15\n\x11INVALID_ONION_KEY\x10\n\x12\x18\n\x14\x41MOUNT_BELOW_MINIMUM\x10\x0b\x12\x14\n\x10\x46\x45\x45_INSUFFICIENT\x10\x0c\x12\x19\n\x15INCORRECT_CLTV_EXPIRY\x10\r\x12\x14\n\x10\x43HANNEL_DISABLED\x10\x0e\x12\x1d\n\x19TEMPORARY_CHANNEL_FAILURE\x10\x0f\x12!\n\x1dREQUIRED_NODE_FEATURE_MISSING\x10\x10\x12$\n REQUIRED_CHANNEL_FEATURE_MISSING\x10\x11\x12\x15\n\x11UNKNOWN_NEXT_PEER\x10\x12\x12\x1a\n\x16TEMPORARY_NODE_FAILURE\x10\x13\x12\x1a\n\x16PERMANENT_NODE_FAILURE\x10\x14\x12\x1d\n\x19PERMANENT_CHANNEL_FAILURE\x10\x15\x12\x12\n\x0e\x45XPIRY_TOO_FAR\x10\x16\x12\x0f\n\x0bMPP_TIMEOUT\x10\x17\x12\x19\n\x15INVALID_ONION_PAYLOAD\x10\x18\x12\x15\n\x10INTERNAL_FAILURE\x10\xe5\x07\x12\x14\n\x0fUNKNOWN_FAILURE\x10\xe6\x07\x12\x17\n\x12UNREADABLE_FAILURE\x10\xe7\x07J\x04\x08\x02\x10\x03"\x9a\x02\n\rChannelUpdate\x12\x11\n\tsignature\x18\x01 \x01(\x0c\x12\x12\n\nchain_hash\x18\x02 \x01(\x0c\x12\x13\n\x07\x63han_id\x18\x03 \x01(\x04\x42\x02\x30\x01\x12\x11\n\ttimestamp\x18\x04 \x01(\r\x12\x15\n\rmessage_flags\x18\n \x01(\r\x12\x15\n\rchannel_flags\x18\x05 \x01(\r\x12\x17\n\x0ftime_lock_delta\x18\x06 \x01(\r\x12\x19\n\x11htlc_minimum_msat\x18\x07 \x01(\x04\x12\x10\n\x08\x62\x61se_fee\x18\x08 \x01(\r\x12\x10\n\x08\x66\x65\x65_rate\x18\t \x01(\r\x12\x19\n\x11htlc_maximum_msat\x18\x0b \x01(\x04\x12\x19\n\x11\x65xtra_opaque_data\x18\x0c \x01(\x0c"F\n\nMacaroonId\x12\r\n\x05nonce\x18\x01 \x01(\x0c\x12\x11\n\tstorageId\x18\x02 \x01(\x0c\x12\x16\n\x03ops\x18\x03 \x03(\x0b\x32\t.lnrpc.Op"%\n\x02Op\x12\x0e\n\x06\x65ntity\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x63tions\x18\x02 \x03(\t"k\n\x13\x43heckMacPermRequest\x12\x10\n\x08macaroon\x18\x01 \x01(\x0c\x12.\n\x0bpermissions\x18\x02 \x03(\x0b\x32\x19.lnrpc.MacaroonPermission\x12\x12\n\nfullMethod\x18\x03 \x01(\t"%\n\x14\x43heckMacPermResponse\x12\r\n\x05valid\x18\x01 \x01(\x08"\x92\x02\n\x14RPCMiddlewareRequest\x12\x12\n\nrequest_id\x18\x01 \x01(\x04\x12\x14\n\x0craw_macaroon\x18\x02 \x01(\x0c\x12\x1f\n\x17\x63ustom_caveat_condition\x18\x03 \x01(\t\x12(\n\x0bstream_auth\x18\x04 \x01(\x0b\x32\x11.lnrpc.StreamAuthH\x00\x12$\n\x07request\x18\x05 \x01(\x0b\x32\x11.lnrpc.RPCMessageH\x00\x12%\n\x08response\x18\x06 \x01(\x0b\x32\x11.lnrpc.RPCMessageH\x00\x12\x16\n\x0creg_complete\x18\x08 \x01(\x08H\x00\x12\x0e\n\x06msg_id\x18\x07 \x01(\x04\x42\x10\n\x0eintercept_type"%\n\nStreamAuth\x12\x17\n\x0fmethod_full_uri\x18\x01 \x01(\t"r\n\nRPCMessage\x12\x17\n\x0fmethod_full_uri\x18\x01 \x01(\t\x12\x12\n\nstream_rpc\x18\x02 \x01(\x08\x12\x11\n\ttype_name\x18\x03 \x01(\t\x12\x12\n\nserialized\x18\x04 \x01(\x0c\x12\x10\n\x08is_error\x18\x05 \x01(\x08"\xa2\x01\n\x15RPCMiddlewareResponse\x12\x12\n\nref_msg_id\x18\x01 \x01(\x04\x12\x31\n\x08register\x18\x02 \x01(\x0b\x32\x1d.lnrpc.MiddlewareRegistrationH\x00\x12,\n\x08\x66\x65\x65\x64\x62\x61\x63k\x18\x03 \x01(\x0b\x32\x18.lnrpc.InterceptFeedbackH\x00\x42\x14\n\x12middleware_message"n\n\x16MiddlewareRegistration\x12\x17\n\x0fmiddleware_name\x18\x01 \x01(\t\x12#\n\x1b\x63ustom_macaroon_caveat_name\x18\x02 \x01(\t\x12\x16\n\x0eread_only_mode\x18\x03 \x01(\x08"\\\n\x11InterceptFeedback\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\x18\n\x10replace_response\x18\x02 \x01(\x08\x12\x1e\n\x16replacement_serialized\x18\x03 \x01(\x0c*\xa7\x02\n\x10OutputScriptType\x12\x1b\n\x17SCRIPT_TYPE_PUBKEY_HASH\x10\x00\x12\x1b\n\x17SCRIPT_TYPE_SCRIPT_HASH\x10\x01\x12&\n"SCRIPT_TYPE_WITNESS_V0_PUBKEY_HASH\x10\x02\x12&\n"SCRIPT_TYPE_WITNESS_V0_SCRIPT_HASH\x10\x03\x12\x16\n\x12SCRIPT_TYPE_PUBKEY\x10\x04\x12\x18\n\x14SCRIPT_TYPE_MULTISIG\x10\x05\x12\x18\n\x14SCRIPT_TYPE_NULLDATA\x10\x06\x12\x1c\n\x18SCRIPT_TYPE_NON_STANDARD\x10\x07\x12\x1f\n\x1bSCRIPT_TYPE_WITNESS_UNKNOWN\x10\x08*\xac\x01\n\x0b\x41\x64\x64ressType\x12\x17\n\x13WITNESS_PUBKEY_HASH\x10\x00\x12\x16\n\x12NESTED_PUBKEY_HASH\x10\x01\x12\x1e\n\x1aUNUSED_WITNESS_PUBKEY_HASH\x10\x02\x12\x1d\n\x19UNUSED_NESTED_PUBKEY_HASH\x10\x03\x12\x12\n\x0eTAPROOT_PUBKEY\x10\x04\x12\x19\n\x15UNUSED_TAPROOT_PUBKEY\x10\x05*x\n\x0e\x43ommitmentType\x12\x1b\n\x17UNKNOWN_COMMITMENT_TYPE\x10\x00\x12\n\n\x06LEGACY\x10\x01\x12\x15\n\x11STATIC_REMOTE_KEY\x10\x02\x12\x0b\n\x07\x41NCHORS\x10\x03\x12\x19\n\x15SCRIPT_ENFORCED_LEASE\x10\x04*a\n\tInitiator\x12\x15\n\x11INITIATOR_UNKNOWN\x10\x00\x12\x13\n\x0fINITIATOR_LOCAL\x10\x01\x12\x14\n\x10INITIATOR_REMOTE\x10\x02\x12\x12\n\x0eINITIATOR_BOTH\x10\x03*`\n\x0eResolutionType\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\n\n\x06\x41NCHOR\x10\x01\x12\x11\n\rINCOMING_HTLC\x10\x02\x12\x11\n\rOUTGOING_HTLC\x10\x03\x12\n\n\x06\x43OMMIT\x10\x04*q\n\x11ResolutionOutcome\x12\x13\n\x0fOUTCOME_UNKNOWN\x10\x00\x12\x0b\n\x07\x43LAIMED\x10\x01\x12\r\n\tUNCLAIMED\x10\x02\x12\r\n\tABANDONED\x10\x03\x12\x0f\n\x0b\x46IRST_STAGE\x10\x04\x12\x0b\n\x07TIMEOUT\x10\x05*9\n\x0eNodeMetricType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x1a\n\x16\x42\x45TWEENNESS_CENTRALITY\x10\x01*;\n\x10InvoiceHTLCState\x12\x0c\n\x08\x41\x43\x43\x45PTED\x10\x00\x12\x0b\n\x07SETTLED\x10\x01\x12\x0c\n\x08\x43\x41NCELED\x10\x02*\xd9\x01\n\x14PaymentFailureReason\x12\x17\n\x13\x46\x41ILURE_REASON_NONE\x10\x00\x12\x1a\n\x16\x46\x41ILURE_REASON_TIMEOUT\x10\x01\x12\x1b\n\x17\x46\x41ILURE_REASON_NO_ROUTE\x10\x02\x12\x18\n\x14\x46\x41ILURE_REASON_ERROR\x10\x03\x12,\n(FAILURE_REASON_INCORRECT_PAYMENT_DETAILS\x10\x04\x12\'\n#FAILURE_REASON_INSUFFICIENT_BALANCE\x10\x05*\xcf\x04\n\nFeatureBit\x12\x18\n\x14\x44\x41TALOSS_PROTECT_REQ\x10\x00\x12\x18\n\x14\x44\x41TALOSS_PROTECT_OPT\x10\x01\x12\x17\n\x13INITIAL_ROUING_SYNC\x10\x03\x12\x1f\n\x1bUPFRONT_SHUTDOWN_SCRIPT_REQ\x10\x04\x12\x1f\n\x1bUPFRONT_SHUTDOWN_SCRIPT_OPT\x10\x05\x12\x16\n\x12GOSSIP_QUERIES_REQ\x10\x06\x12\x16\n\x12GOSSIP_QUERIES_OPT\x10\x07\x12\x11\n\rTLV_ONION_REQ\x10\x08\x12\x11\n\rTLV_ONION_OPT\x10\t\x12\x1a\n\x16\x45XT_GOSSIP_QUERIES_REQ\x10\n\x12\x1a\n\x16\x45XT_GOSSIP_QUERIES_OPT\x10\x0b\x12\x19\n\x15STATIC_REMOTE_KEY_REQ\x10\x0c\x12\x19\n\x15STATIC_REMOTE_KEY_OPT\x10\r\x12\x14\n\x10PAYMENT_ADDR_REQ\x10\x0e\x12\x14\n\x10PAYMENT_ADDR_OPT\x10\x0f\x12\x0b\n\x07MPP_REQ\x10\x10\x12\x0b\n\x07MPP_OPT\x10\x11\x12\x16\n\x12WUMBO_CHANNELS_REQ\x10\x12\x12\x16\n\x12WUMBO_CHANNELS_OPT\x10\x13\x12\x0f\n\x0b\x41NCHORS_REQ\x10\x14\x12\x0f\n\x0b\x41NCHORS_OPT\x10\x15\x12\x1d\n\x19\x41NCHORS_ZERO_FEE_HTLC_REQ\x10\x16\x12\x1d\n\x19\x41NCHORS_ZERO_FEE_HTLC_OPT\x10\x17\x12\x0b\n\x07\x41MP_REQ\x10\x1e\x12\x0b\n\x07\x41MP_OPT\x10\x1f*\xac\x01\n\rUpdateFailure\x12\x1a\n\x16UPDATE_FAILURE_UNKNOWN\x10\x00\x12\x1a\n\x16UPDATE_FAILURE_PENDING\x10\x01\x12\x1c\n\x18UPDATE_FAILURE_NOT_FOUND\x10\x02\x12\x1f\n\x1bUPDATE_FAILURE_INTERNAL_ERR\x10\x03\x12$\n UPDATE_FAILURE_INVALID_PARAMETER\x10\x04\x32\x8f&\n\tLightning\x12J\n\rWalletBalance\x12\x1b.lnrpc.WalletBalanceRequest\x1a\x1c.lnrpc.WalletBalanceResponse\x12M\n\x0e\x43hannelBalance\x12\x1c.lnrpc.ChannelBalanceRequest\x1a\x1d.lnrpc.ChannelBalanceResponse\x12K\n\x0fGetTransactions\x12\x1d.lnrpc.GetTransactionsRequest\x1a\x19.lnrpc.TransactionDetails\x12\x44\n\x0b\x45stimateFee\x12\x19.lnrpc.EstimateFeeRequest\x1a\x1a.lnrpc.EstimateFeeResponse\x12>\n\tSendCoins\x12\x17.lnrpc.SendCoinsRequest\x1a\x18.lnrpc.SendCoinsResponse\x12\x44\n\x0bListUnspent\x12\x19.lnrpc.ListUnspentRequest\x1a\x1a.lnrpc.ListUnspentResponse\x12L\n\x15SubscribeTransactions\x12\x1d.lnrpc.GetTransactionsRequest\x1a\x12.lnrpc.Transaction0\x01\x12;\n\x08SendMany\x12\x16.lnrpc.SendManyRequest\x1a\x17.lnrpc.SendManyResponse\x12\x41\n\nNewAddress\x12\x18.lnrpc.NewAddressRequest\x1a\x19.lnrpc.NewAddressResponse\x12\x44\n\x0bSignMessage\x12\x19.lnrpc.SignMessageRequest\x1a\x1a.lnrpc.SignMessageResponse\x12J\n\rVerifyMessage\x12\x1b.lnrpc.VerifyMessageRequest\x1a\x1c.lnrpc.VerifyMessageResponse\x12\x44\n\x0b\x43onnectPeer\x12\x19.lnrpc.ConnectPeerRequest\x1a\x1a.lnrpc.ConnectPeerResponse\x12M\n\x0e\x44isconnectPeer\x12\x1c.lnrpc.DisconnectPeerRequest\x1a\x1d.lnrpc.DisconnectPeerResponse\x12>\n\tListPeers\x12\x17.lnrpc.ListPeersRequest\x1a\x18.lnrpc.ListPeersResponse\x12G\n\x13SubscribePeerEvents\x12\x1c.lnrpc.PeerEventSubscription\x1a\x10.lnrpc.PeerEvent0\x01\x12\x38\n\x07GetInfo\x12\x15.lnrpc.GetInfoRequest\x1a\x16.lnrpc.GetInfoResponse\x12P\n\x0fGetRecoveryInfo\x12\x1d.lnrpc.GetRecoveryInfoRequest\x1a\x1e.lnrpc.GetRecoveryInfoResponse\x12P\n\x0fPendingChannels\x12\x1d.lnrpc.PendingChannelsRequest\x1a\x1e.lnrpc.PendingChannelsResponse\x12G\n\x0cListChannels\x12\x1a.lnrpc.ListChannelsRequest\x1a\x1b.lnrpc.ListChannelsResponse\x12V\n\x16SubscribeChannelEvents\x12\x1f.lnrpc.ChannelEventSubscription\x1a\x19.lnrpc.ChannelEventUpdate0\x01\x12M\n\x0e\x43losedChannels\x12\x1c.lnrpc.ClosedChannelsRequest\x1a\x1d.lnrpc.ClosedChannelsResponse\x12\x41\n\x0fOpenChannelSync\x12\x19.lnrpc.OpenChannelRequest\x1a\x13.lnrpc.ChannelPoint\x12\x43\n\x0bOpenChannel\x12\x19.lnrpc.OpenChannelRequest\x1a\x17.lnrpc.OpenStatusUpdate0\x01\x12S\n\x10\x42\x61tchOpenChannel\x12\x1e.lnrpc.BatchOpenChannelRequest\x1a\x1f.lnrpc.BatchOpenChannelResponse\x12L\n\x10\x46undingStateStep\x12\x1b.lnrpc.FundingTransitionMsg\x1a\x1b.lnrpc.FundingStateStepResp\x12P\n\x0f\x43hannelAcceptor\x12\x1c.lnrpc.ChannelAcceptResponse\x1a\x1b.lnrpc.ChannelAcceptRequest(\x01\x30\x01\x12\x46\n\x0c\x43loseChannel\x12\x1a.lnrpc.CloseChannelRequest\x1a\x18.lnrpc.CloseStatusUpdate0\x01\x12M\n\x0e\x41\x62\x61ndonChannel\x12\x1c.lnrpc.AbandonChannelRequest\x1a\x1d.lnrpc.AbandonChannelResponse\x12?\n\x0bSendPayment\x12\x12.lnrpc.SendRequest\x1a\x13.lnrpc.SendResponse"\x03\x88\x02\x01(\x01\x30\x01\x12:\n\x0fSendPaymentSync\x12\x12.lnrpc.SendRequest\x1a\x13.lnrpc.SendResponse\x12\x46\n\x0bSendToRoute\x12\x19.lnrpc.SendToRouteRequest\x1a\x13.lnrpc.SendResponse"\x03\x88\x02\x01(\x01\x30\x01\x12\x41\n\x0fSendToRouteSync\x12\x19.lnrpc.SendToRouteRequest\x1a\x13.lnrpc.SendResponse\x12\x37\n\nAddInvoice\x12\x0e.lnrpc.Invoice\x1a\x19.lnrpc.AddInvoiceResponse\x12\x45\n\x0cListInvoices\x12\x19.lnrpc.ListInvoiceRequest\x1a\x1a.lnrpc.ListInvoiceResponse\x12\x33\n\rLookupInvoice\x12\x12.lnrpc.PaymentHash\x1a\x0e.lnrpc.Invoice\x12\x41\n\x11SubscribeInvoices\x12\x1a.lnrpc.InvoiceSubscription\x1a\x0e.lnrpc.Invoice0\x01\x12\x32\n\x0c\x44\x65\x63odePayReq\x12\x13.lnrpc.PayReqString\x1a\r.lnrpc.PayReq\x12G\n\x0cListPayments\x12\x1a.lnrpc.ListPaymentsRequest\x1a\x1b.lnrpc.ListPaymentsResponse\x12J\n\rDeletePayment\x12\x1b.lnrpc.DeletePaymentRequest\x1a\x1c.lnrpc.DeletePaymentResponse\x12V\n\x11\x44\x65leteAllPayments\x12\x1f.lnrpc.DeleteAllPaymentsRequest\x1a .lnrpc.DeleteAllPaymentsResponse\x12@\n\rDescribeGraph\x12\x1a.lnrpc.ChannelGraphRequest\x1a\x13.lnrpc.ChannelGraph\x12G\n\x0eGetNodeMetrics\x12\x19.lnrpc.NodeMetricsRequest\x1a\x1a.lnrpc.NodeMetricsResponse\x12\x39\n\x0bGetChanInfo\x12\x16.lnrpc.ChanInfoRequest\x1a\x12.lnrpc.ChannelEdge\x12\x36\n\x0bGetNodeInfo\x12\x16.lnrpc.NodeInfoRequest\x1a\x0f.lnrpc.NodeInfo\x12\x44\n\x0bQueryRoutes\x12\x19.lnrpc.QueryRoutesRequest\x1a\x1a.lnrpc.QueryRoutesResponse\x12?\n\x0eGetNetworkInfo\x12\x19.lnrpc.NetworkInfoRequest\x1a\x12.lnrpc.NetworkInfo\x12\x35\n\nStopDaemon\x12\x12.lnrpc.StopRequest\x1a\x13.lnrpc.StopResponse\x12W\n\x15SubscribeChannelGraph\x12 .lnrpc.GraphTopologySubscription\x1a\x1a.lnrpc.GraphTopologyUpdate0\x01\x12\x41\n\nDebugLevel\x12\x18.lnrpc.DebugLevelRequest\x1a\x19.lnrpc.DebugLevelResponse\x12>\n\tFeeReport\x12\x17.lnrpc.FeeReportRequest\x1a\x18.lnrpc.FeeReportResponse\x12N\n\x13UpdateChannelPolicy\x12\x1a.lnrpc.PolicyUpdateRequest\x1a\x1b.lnrpc.PolicyUpdateResponse\x12V\n\x11\x46orwardingHistory\x12\x1f.lnrpc.ForwardingHistoryRequest\x1a .lnrpc.ForwardingHistoryResponse\x12N\n\x13\x45xportChannelBackup\x12!.lnrpc.ExportChannelBackupRequest\x1a\x14.lnrpc.ChannelBackup\x12T\n\x17\x45xportAllChannelBackups\x12\x1e.lnrpc.ChanBackupExportRequest\x1a\x19.lnrpc.ChanBackupSnapshot\x12N\n\x10VerifyChanBackup\x12\x19.lnrpc.ChanBackupSnapshot\x1a\x1f.lnrpc.VerifyChanBackupResponse\x12V\n\x15RestoreChannelBackups\x12\x1f.lnrpc.RestoreChanBackupRequest\x1a\x1c.lnrpc.RestoreBackupResponse\x12X\n\x17SubscribeChannelBackups\x12 .lnrpc.ChannelBackupSubscription\x1a\x19.lnrpc.ChanBackupSnapshot0\x01\x12G\n\x0c\x42\x61keMacaroon\x12\x1a.lnrpc.BakeMacaroonRequest\x1a\x1b.lnrpc.BakeMacaroonResponse\x12P\n\x0fListMacaroonIDs\x12\x1d.lnrpc.ListMacaroonIDsRequest\x1a\x1e.lnrpc.ListMacaroonIDsResponse\x12S\n\x10\x44\x65leteMacaroonID\x12\x1e.lnrpc.DeleteMacaroonIDRequest\x1a\x1f.lnrpc.DeleteMacaroonIDResponse\x12P\n\x0fListPermissions\x12\x1d.lnrpc.ListPermissionsRequest\x1a\x1e.lnrpc.ListPermissionsResponse\x12S\n\x18\x43heckMacaroonPermissions\x12\x1a.lnrpc.CheckMacPermRequest\x1a\x1b.lnrpc.CheckMacPermResponse\x12V\n\x15RegisterRPCMiddleware\x12\x1c.lnrpc.RPCMiddlewareResponse\x1a\x1b.lnrpc.RPCMiddlewareRequest(\x01\x30\x01\x12V\n\x11SendCustomMessage\x12\x1f.lnrpc.SendCustomMessageRequest\x1a .lnrpc.SendCustomMessageResponse\x12X\n\x17SubscribeCustomMessages\x12%.lnrpc.SubscribeCustomMessagesRequest\x1a\x14.lnrpc.CustomMessage0\x01\x12\x44\n\x0bListAliases\x12\x19.lnrpc.ListAliasesRequest\x1a\x1a.lnrpc.ListAliasesResponseB\'Z%github.com/lightningnetwork/lnd/lnrpcb\x06proto3' + b'\n\x0flightning.proto\x12\x05lnrpc"B\n\x1bLookupHtlcResolutionRequest\x12\x0f\n\x07\x63han_id\x18\x01 \x01(\x04\x12\x12\n\nhtlc_index\x18\x02 \x01(\x04"A\n\x1cLookupHtlcResolutionResponse\x12\x0f\n\x07settled\x18\x01 \x01(\x08\x12\x10\n\x08offchain\x18\x02 \x01(\x08" \n\x1eSubscribeCustomMessagesRequest"9\n\rCustomMessage\x12\x0c\n\x04peer\x18\x01 \x01(\x0c\x12\x0c\n\x04type\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c"D\n\x18SendCustomMessageRequest\x12\x0c\n\x04peer\x18\x01 \x01(\x0c\x12\x0c\n\x04type\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c"\x1b\n\x19SendCustomMessageResponse"\xa2\x01\n\x04Utxo\x12(\n\x0c\x61\x64\x64ress_type\x18\x01 \x01(\x0e\x32\x12.lnrpc.AddressType\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x12\x12\n\namount_sat\x18\x03 \x01(\x03\x12\x11\n\tpk_script\x18\x04 \x01(\t\x12!\n\x08outpoint\x18\x05 \x01(\x0b\x32\x0f.lnrpc.OutPoint\x12\x15\n\rconfirmations\x18\x06 \x01(\x03"\x9e\x01\n\x0cOutputDetail\x12,\n\x0boutput_type\x18\x01 \x01(\x0e\x32\x17.lnrpc.OutputScriptType\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x12\x11\n\tpk_script\x18\x03 \x01(\t\x12\x14\n\x0coutput_index\x18\x04 \x01(\x03\x12\x0e\n\x06\x61mount\x18\x05 \x01(\x03\x12\x16\n\x0eis_our_address\x18\x06 \x01(\x08"\xbc\x02\n\x0bTransaction\x12\x0f\n\x07tx_hash\x18\x01 \x01(\t\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x12\x19\n\x11num_confirmations\x18\x03 \x01(\x05\x12\x12\n\nblock_hash\x18\x04 \x01(\t\x12\x14\n\x0c\x62lock_height\x18\x05 \x01(\x05\x12\x12\n\ntime_stamp\x18\x06 \x01(\x03\x12\x12\n\ntotal_fees\x18\x07 \x01(\x03\x12\x1a\n\x0e\x64\x65st_addresses\x18\x08 \x03(\tB\x02\x18\x01\x12+\n\x0eoutput_details\x18\x0b \x03(\x0b\x32\x13.lnrpc.OutputDetail\x12\x12\n\nraw_tx_hex\x18\t \x01(\t\x12\r\n\x05label\x18\n \x01(\t\x12\x33\n\x12previous_outpoints\x18\x0c \x03(\x0b\x32\x17.lnrpc.PreviousOutPoint"S\n\x16GetTransactionsRequest\x12\x14\n\x0cstart_height\x18\x01 \x01(\x05\x12\x12\n\nend_height\x18\x02 \x01(\x05\x12\x0f\n\x07\x61\x63\x63ount\x18\x03 \x01(\t">\n\x12TransactionDetails\x12(\n\x0ctransactions\x18\x01 \x03(\x0b\x32\x12.lnrpc.Transaction"M\n\x08\x46\x65\x65Limit\x12\x0f\n\x05\x66ixed\x18\x01 \x01(\x03H\x00\x12\x14\n\nfixed_msat\x18\x03 \x01(\x03H\x00\x12\x11\n\x07percent\x18\x02 \x01(\x03H\x00\x42\x07\n\x05limit"\x8a\x04\n\x0bSendRequest\x12\x0c\n\x04\x64\x65st\x18\x01 \x01(\x0c\x12\x17\n\x0b\x64\x65st_string\x18\x02 \x01(\tB\x02\x18\x01\x12\x0b\n\x03\x61mt\x18\x03 \x01(\x03\x12\x10\n\x08\x61mt_msat\x18\x0c \x01(\x03\x12\x14\n\x0cpayment_hash\x18\x04 \x01(\x0c\x12\x1f\n\x13payment_hash_string\x18\x05 \x01(\tB\x02\x18\x01\x12\x17\n\x0fpayment_request\x18\x06 \x01(\t\x12\x18\n\x10\x66inal_cltv_delta\x18\x07 \x01(\x05\x12"\n\tfee_limit\x18\x08 \x01(\x0b\x32\x0f.lnrpc.FeeLimit\x12\x1c\n\x10outgoing_chan_id\x18\t \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0flast_hop_pubkey\x18\r \x01(\x0c\x12\x12\n\ncltv_limit\x18\n \x01(\r\x12\x46\n\x13\x64\x65st_custom_records\x18\x0b \x03(\x0b\x32).lnrpc.SendRequest.DestCustomRecordsEntry\x12\x1a\n\x12\x61llow_self_payment\x18\x0e \x01(\x08\x12(\n\rdest_features\x18\x0f \x03(\x0e\x32\x11.lnrpc.FeatureBit\x12\x14\n\x0cpayment_addr\x18\x10 \x01(\x0c\x1a\x38\n\x16\x44\x65stCustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"z\n\x0cSendResponse\x12\x15\n\rpayment_error\x18\x01 \x01(\t\x12\x18\n\x10payment_preimage\x18\x02 \x01(\x0c\x12#\n\rpayment_route\x18\x03 \x01(\x0b\x32\x0c.lnrpc.Route\x12\x14\n\x0cpayment_hash\x18\x04 \x01(\x0c"n\n\x12SendToRouteRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x1f\n\x13payment_hash_string\x18\x02 \x01(\tB\x02\x18\x01\x12\x1b\n\x05route\x18\x04 \x01(\x0b\x32\x0c.lnrpc.RouteJ\x04\x08\x03\x10\x04"\x98\x03\n\x14\x43hannelAcceptRequest\x12\x13\n\x0bnode_pubkey\x18\x01 \x01(\x0c\x12\x12\n\nchain_hash\x18\x02 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x03 \x01(\x0c\x12\x13\n\x0b\x66unding_amt\x18\x04 \x01(\x04\x12\x10\n\x08push_amt\x18\x05 \x01(\x04\x12\x12\n\ndust_limit\x18\x06 \x01(\x04\x12\x1b\n\x13max_value_in_flight\x18\x07 \x01(\x04\x12\x17\n\x0f\x63hannel_reserve\x18\x08 \x01(\x04\x12\x10\n\x08min_htlc\x18\t \x01(\x04\x12\x12\n\nfee_per_kw\x18\n \x01(\x04\x12\x11\n\tcsv_delay\x18\x0b \x01(\r\x12\x1a\n\x12max_accepted_htlcs\x18\x0c \x01(\r\x12\x15\n\rchannel_flags\x18\r \x01(\r\x12.\n\x0f\x63ommitment_type\x18\x0e \x01(\x0e\x32\x15.lnrpc.CommitmentType\x12\x17\n\x0fwants_zero_conf\x18\x0f \x01(\x08\x12\x18\n\x10wants_scid_alias\x18\x10 \x01(\x08"\x87\x02\n\x15\x43hannelAcceptResponse\x12\x0e\n\x06\x61\x63\x63\x65pt\x18\x01 \x01(\x08\x12\x17\n\x0fpending_chan_id\x18\x02 \x01(\x0c\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12\x18\n\x10upfront_shutdown\x18\x04 \x01(\t\x12\x11\n\tcsv_delay\x18\x05 \x01(\r\x12\x13\n\x0breserve_sat\x18\x06 \x01(\x04\x12\x1a\n\x12in_flight_max_msat\x18\x07 \x01(\x04\x12\x16\n\x0emax_htlc_count\x18\x08 \x01(\r\x12\x13\n\x0bmin_htlc_in\x18\t \x01(\x04\x12\x18\n\x10min_accept_depth\x18\n \x01(\r\x12\x11\n\tzero_conf\x18\x0b \x01(\x08"n\n\x0c\x43hannelPoint\x12\x1c\n\x12\x66unding_txid_bytes\x18\x01 \x01(\x0cH\x00\x12\x1a\n\x10\x66unding_txid_str\x18\x02 \x01(\tH\x00\x12\x14\n\x0coutput_index\x18\x03 \x01(\rB\x0e\n\x0c\x66unding_txid"F\n\x08OutPoint\x12\x12\n\ntxid_bytes\x18\x01 \x01(\x0c\x12\x10\n\x08txid_str\x18\x02 \x01(\t\x12\x14\n\x0coutput_index\x18\x03 \x01(\r";\n\x10PreviousOutPoint\x12\x10\n\x08outpoint\x18\x01 \x01(\t\x12\x15\n\ris_our_output\x18\x02 \x01(\x08"0\n\x10LightningAddress\x12\x0e\n\x06pubkey\x18\x01 \x01(\t\x12\x0c\n\x04host\x18\x02 \x01(\t"\xcf\x01\n\x12\x45stimateFeeRequest\x12\x41\n\x0c\x41\x64\x64rToAmount\x18\x01 \x03(\x0b\x32+.lnrpc.EstimateFeeRequest.AddrToAmountEntry\x12\x13\n\x0btarget_conf\x18\x02 \x01(\x05\x12\x11\n\tmin_confs\x18\x03 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x04 \x01(\x08\x1a\x33\n\x11\x41\x64\x64rToAmountEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01"_\n\x13\x45stimateFeeResponse\x12\x0f\n\x07\x66\x65\x65_sat\x18\x01 \x01(\x03\x12 \n\x14\x66\x65\x65rate_sat_per_byte\x18\x02 \x01(\x03\x42\x02\x18\x01\x12\x15\n\rsat_per_vbyte\x18\x03 \x01(\x04"\x89\x02\n\x0fSendManyRequest\x12>\n\x0c\x41\x64\x64rToAmount\x18\x01 \x03(\x0b\x32(.lnrpc.SendManyRequest.AddrToAmountEntry\x12\x13\n\x0btarget_conf\x18\x03 \x01(\x05\x12\x15\n\rsat_per_vbyte\x18\x04 \x01(\x04\x12\x18\n\x0csat_per_byte\x18\x05 \x01(\x03\x42\x02\x18\x01\x12\r\n\x05label\x18\x06 \x01(\t\x12\x11\n\tmin_confs\x18\x07 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x08 \x01(\x08\x1a\x33\n\x11\x41\x64\x64rToAmountEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01" \n\x10SendManyResponse\x12\x0c\n\x04txid\x18\x01 \x01(\t"\xc5\x01\n\x10SendCoinsRequest\x12\x0c\n\x04\x61\x64\x64r\x18\x01 \x01(\t\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x12\x13\n\x0btarget_conf\x18\x03 \x01(\x05\x12\x15\n\rsat_per_vbyte\x18\x04 \x01(\x04\x12\x18\n\x0csat_per_byte\x18\x05 \x01(\x03\x42\x02\x18\x01\x12\x10\n\x08send_all\x18\x06 \x01(\x08\x12\r\n\x05label\x18\x07 \x01(\t\x12\x11\n\tmin_confs\x18\x08 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\t \x01(\x08"!\n\x11SendCoinsResponse\x12\x0c\n\x04txid\x18\x01 \x01(\t"K\n\x12ListUnspentRequest\x12\x11\n\tmin_confs\x18\x01 \x01(\x05\x12\x11\n\tmax_confs\x18\x02 \x01(\x05\x12\x0f\n\x07\x61\x63\x63ount\x18\x03 \x01(\t"1\n\x13ListUnspentResponse\x12\x1a\n\x05utxos\x18\x01 \x03(\x0b\x32\x0b.lnrpc.Utxo"F\n\x11NewAddressRequest\x12 \n\x04type\x18\x01 \x01(\x0e\x32\x12.lnrpc.AddressType\x12\x0f\n\x07\x61\x63\x63ount\x18\x02 \x01(\t"%\n\x12NewAddressResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t"6\n\x12SignMessageRequest\x12\x0b\n\x03msg\x18\x01 \x01(\x0c\x12\x13\n\x0bsingle_hash\x18\x02 \x01(\x08"(\n\x13SignMessageResponse\x12\x11\n\tsignature\x18\x01 \x01(\t"6\n\x14VerifyMessageRequest\x12\x0b\n\x03msg\x18\x01 \x01(\x0c\x12\x11\n\tsignature\x18\x02 \x01(\t"6\n\x15VerifyMessageResponse\x12\r\n\x05valid\x18\x01 \x01(\x08\x12\x0e\n\x06pubkey\x18\x02 \x01(\t"Z\n\x12\x43onnectPeerRequest\x12%\n\x04\x61\x64\x64r\x18\x01 \x01(\x0b\x32\x17.lnrpc.LightningAddress\x12\x0c\n\x04perm\x18\x02 \x01(\x08\x12\x0f\n\x07timeout\x18\x03 \x01(\x04"\x15\n\x13\x43onnectPeerResponse"(\n\x15\x44isconnectPeerRequest\x12\x0f\n\x07pub_key\x18\x01 \x01(\t"\x18\n\x16\x44isconnectPeerResponse"\xa5\x01\n\x04HTLC\x12\x10\n\x08incoming\x18\x01 \x01(\x08\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x12\x11\n\thash_lock\x18\x03 \x01(\x0c\x12\x19\n\x11\x65xpiration_height\x18\x04 \x01(\r\x12\x12\n\nhtlc_index\x18\x05 \x01(\x04\x12\x1a\n\x12\x66orwarding_channel\x18\x06 \x01(\x04\x12\x1d\n\x15\x66orwarding_htlc_index\x18\x07 \x01(\x04"\xaa\x01\n\x12\x43hannelConstraints\x12\x11\n\tcsv_delay\x18\x01 \x01(\r\x12\x18\n\x10\x63han_reserve_sat\x18\x02 \x01(\x04\x12\x16\n\x0e\x64ust_limit_sat\x18\x03 \x01(\x04\x12\x1c\n\x14max_pending_amt_msat\x18\x04 \x01(\x04\x12\x15\n\rmin_htlc_msat\x18\x05 \x01(\x04\x12\x1a\n\x12max_accepted_htlcs\x18\x06 \x01(\r"\xab\x07\n\x07\x43hannel\x12\x0e\n\x06\x61\x63tive\x18\x01 \x01(\x08\x12\x15\n\rremote_pubkey\x18\x02 \x01(\t\x12\x15\n\rchannel_point\x18\x03 \x01(\t\x12\x13\n\x07\x63han_id\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x10\n\x08\x63\x61pacity\x18\x05 \x01(\x03\x12\x15\n\rlocal_balance\x18\x06 \x01(\x03\x12\x16\n\x0eremote_balance\x18\x07 \x01(\x03\x12\x12\n\ncommit_fee\x18\x08 \x01(\x03\x12\x15\n\rcommit_weight\x18\t \x01(\x03\x12\x12\n\nfee_per_kw\x18\n \x01(\x03\x12\x19\n\x11unsettled_balance\x18\x0b \x01(\x03\x12\x1b\n\x13total_satoshis_sent\x18\x0c \x01(\x03\x12\x1f\n\x17total_satoshis_received\x18\r \x01(\x03\x12\x13\n\x0bnum_updates\x18\x0e \x01(\x04\x12"\n\rpending_htlcs\x18\x0f \x03(\x0b\x32\x0b.lnrpc.HTLC\x12\x15\n\tcsv_delay\x18\x10 \x01(\rB\x02\x18\x01\x12\x0f\n\x07private\x18\x11 \x01(\x08\x12\x11\n\tinitiator\x18\x12 \x01(\x08\x12\x19\n\x11\x63han_status_flags\x18\x13 \x01(\t\x12"\n\x16local_chan_reserve_sat\x18\x14 \x01(\x03\x42\x02\x18\x01\x12#\n\x17remote_chan_reserve_sat\x18\x15 \x01(\x03\x42\x02\x18\x01\x12\x1d\n\x11static_remote_key\x18\x16 \x01(\x08\x42\x02\x18\x01\x12.\n\x0f\x63ommitment_type\x18\x1a \x01(\x0e\x32\x15.lnrpc.CommitmentType\x12\x10\n\x08lifetime\x18\x17 \x01(\x03\x12\x0e\n\x06uptime\x18\x18 \x01(\x03\x12\x15\n\rclose_address\x18\x19 \x01(\t\x12\x17\n\x0fpush_amount_sat\x18\x1b \x01(\x04\x12\x13\n\x0bthaw_height\x18\x1c \x01(\r\x12\x34\n\x11local_constraints\x18\x1d \x01(\x0b\x32\x19.lnrpc.ChannelConstraints\x12\x35\n\x12remote_constraints\x18\x1e \x01(\x0b\x32\x19.lnrpc.ChannelConstraints\x12\x13\n\x0b\x61lias_scids\x18\x1f \x03(\x04\x12\x11\n\tzero_conf\x18 \x01(\x08\x12 \n\x18zero_conf_confirmed_scid\x18! \x01(\x04\x12\x12\n\npeer_alias\x18" \x01(\t\x12\x1b\n\x0fpeer_scid_alias\x18# \x01(\x04\x42\x02\x30\x01"\x95\x01\n\x13ListChannelsRequest\x12\x13\n\x0b\x61\x63tive_only\x18\x01 \x01(\x08\x12\x15\n\rinactive_only\x18\x02 \x01(\x08\x12\x13\n\x0bpublic_only\x18\x03 \x01(\x08\x12\x14\n\x0cprivate_only\x18\x04 \x01(\x08\x12\x0c\n\x04peer\x18\x05 \x01(\x0c\x12\x19\n\x11peer_alias_lookup\x18\x06 \x01(\x08"8\n\x14ListChannelsResponse\x12 \n\x08\x63hannels\x18\x0b \x03(\x0b\x32\x0e.lnrpc.Channel".\n\x08\x41liasMap\x12\x11\n\tbase_scid\x18\x01 \x01(\x04\x12\x0f\n\x07\x61liases\x18\x02 \x03(\x04"\x14\n\x12ListAliasesRequest":\n\x13ListAliasesResponse\x12#\n\nalias_maps\x18\x01 \x03(\x0b\x32\x0f.lnrpc.AliasMap"\xe4\x04\n\x13\x43hannelCloseSummary\x12\x15\n\rchannel_point\x18\x01 \x01(\t\x12\x13\n\x07\x63han_id\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x12\n\nchain_hash\x18\x03 \x01(\t\x12\x17\n\x0f\x63losing_tx_hash\x18\x04 \x01(\t\x12\x15\n\rremote_pubkey\x18\x05 \x01(\t\x12\x10\n\x08\x63\x61pacity\x18\x06 \x01(\x03\x12\x14\n\x0c\x63lose_height\x18\x07 \x01(\r\x12\x17\n\x0fsettled_balance\x18\x08 \x01(\x03\x12\x1b\n\x13time_locked_balance\x18\t \x01(\x03\x12:\n\nclose_type\x18\n \x01(\x0e\x32&.lnrpc.ChannelCloseSummary.ClosureType\x12(\n\x0eopen_initiator\x18\x0b \x01(\x0e\x32\x10.lnrpc.Initiator\x12)\n\x0f\x63lose_initiator\x18\x0c \x01(\x0e\x32\x10.lnrpc.Initiator\x12&\n\x0bresolutions\x18\r \x03(\x0b\x32\x11.lnrpc.Resolution\x12\x13\n\x0b\x61lias_scids\x18\x0e \x03(\x04\x12$\n\x18zero_conf_confirmed_scid\x18\x0f \x01(\x04\x42\x02\x30\x01"\x8a\x01\n\x0b\x43losureType\x12\x15\n\x11\x43OOPERATIVE_CLOSE\x10\x00\x12\x15\n\x11LOCAL_FORCE_CLOSE\x10\x01\x12\x16\n\x12REMOTE_FORCE_CLOSE\x10\x02\x12\x10\n\x0c\x42REACH_CLOSE\x10\x03\x12\x14\n\x10\x46UNDING_CANCELED\x10\x04\x12\r\n\tABANDONED\x10\x05"\xb2\x01\n\nResolution\x12.\n\x0fresolution_type\x18\x01 \x01(\x0e\x32\x15.lnrpc.ResolutionType\x12)\n\x07outcome\x18\x02 \x01(\x0e\x32\x18.lnrpc.ResolutionOutcome\x12!\n\x08outpoint\x18\x03 \x01(\x0b\x32\x0f.lnrpc.OutPoint\x12\x12\n\namount_sat\x18\x04 \x01(\x04\x12\x12\n\nsweep_txid\x18\x05 \x01(\t"\x94\x01\n\x15\x43losedChannelsRequest\x12\x13\n\x0b\x63ooperative\x18\x01 \x01(\x08\x12\x13\n\x0blocal_force\x18\x02 \x01(\x08\x12\x14\n\x0cremote_force\x18\x03 \x01(\x08\x12\x0e\n\x06\x62reach\x18\x04 \x01(\x08\x12\x18\n\x10\x66unding_canceled\x18\x05 \x01(\x08\x12\x11\n\tabandoned\x18\x06 \x01(\x08"F\n\x16\x43losedChannelsResponse\x12,\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x1a.lnrpc.ChannelCloseSummary"\xef\x03\n\x04Peer\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\x03 \x01(\t\x12\x12\n\nbytes_sent\x18\x04 \x01(\x04\x12\x12\n\nbytes_recv\x18\x05 \x01(\x04\x12\x10\n\x08sat_sent\x18\x06 \x01(\x03\x12\x10\n\x08sat_recv\x18\x07 \x01(\x03\x12\x0f\n\x07inbound\x18\x08 \x01(\x08\x12\x11\n\tping_time\x18\t \x01(\x03\x12\'\n\tsync_type\x18\n \x01(\x0e\x32\x14.lnrpc.Peer.SyncType\x12+\n\x08\x66\x65\x61tures\x18\x0b \x03(\x0b\x32\x19.lnrpc.Peer.FeaturesEntry\x12\'\n\x06\x65rrors\x18\x0c \x03(\x0b\x32\x17.lnrpc.TimestampedError\x12\x12\n\nflap_count\x18\r \x01(\x05\x12\x14\n\x0clast_flap_ns\x18\x0e \x01(\x03\x12\x19\n\x11last_ping_payload\x18\x0f \x01(\x0c\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01"P\n\x08SyncType\x12\x10\n\x0cUNKNOWN_SYNC\x10\x00\x12\x0f\n\x0b\x41\x43TIVE_SYNC\x10\x01\x12\x10\n\x0cPASSIVE_SYNC\x10\x02\x12\x0f\n\x0bPINNED_SYNC\x10\x03"4\n\x10TimestampedError\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t"(\n\x10ListPeersRequest\x12\x14\n\x0clatest_error\x18\x01 \x01(\x08"/\n\x11ListPeersResponse\x12\x1a\n\x05peers\x18\x01 \x03(\x0b\x32\x0b.lnrpc.Peer"\x17\n\x15PeerEventSubscription"v\n\tPeerEvent\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\x12(\n\x04type\x18\x02 \x01(\x0e\x32\x1a.lnrpc.PeerEvent.EventType".\n\tEventType\x12\x0f\n\x0bPEER_ONLINE\x10\x00\x12\x10\n\x0cPEER_OFFLINE\x10\x01"\x10\n\x0eGetInfoRequest"\xde\x04\n\x0fGetInfoResponse\x12\x0f\n\x07version\x18\x0e \x01(\t\x12\x13\n\x0b\x63ommit_hash\x18\x14 \x01(\t\x12\x17\n\x0fidentity_pubkey\x18\x01 \x01(\t\x12\r\n\x05\x61lias\x18\x02 \x01(\t\x12\r\n\x05\x63olor\x18\x11 \x01(\t\x12\x1c\n\x14num_pending_channels\x18\x03 \x01(\r\x12\x1b\n\x13num_active_channels\x18\x04 \x01(\r\x12\x1d\n\x15num_inactive_channels\x18\x0f \x01(\r\x12\x11\n\tnum_peers\x18\x05 \x01(\r\x12\x14\n\x0c\x62lock_height\x18\x06 \x01(\r\x12\x12\n\nblock_hash\x18\x08 \x01(\t\x12\x1d\n\x15\x62\x65st_header_timestamp\x18\r \x01(\x03\x12\x17\n\x0fsynced_to_chain\x18\t \x01(\x08\x12\x17\n\x0fsynced_to_graph\x18\x12 \x01(\x08\x12\x13\n\x07testnet\x18\n \x01(\x08\x42\x02\x18\x01\x12\x1c\n\x06\x63hains\x18\x10 \x03(\x0b\x32\x0c.lnrpc.Chain\x12\x0c\n\x04uris\x18\x0c \x03(\t\x12\x36\n\x08\x66\x65\x61tures\x18\x13 \x03(\x0b\x32$.lnrpc.GetInfoResponse.FeaturesEntry\x12 \n\x18require_htlc_interceptor\x18\x15 \x01(\x08\x12$\n\x1cstore_final_htlc_resolutions\x18\x16 \x01(\x08\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01J\x04\x08\x0b\x10\x0c"\x18\n\x16GetRecoveryInfoRequest"]\n\x17GetRecoveryInfoResponse\x12\x15\n\rrecovery_mode\x18\x01 \x01(\x08\x12\x19\n\x11recovery_finished\x18\x02 \x01(\x08\x12\x10\n\x08progress\x18\x03 \x01(\x01"\'\n\x05\x43hain\x12\r\n\x05\x63hain\x18\x01 \x01(\t\x12\x0f\n\x07network\x18\x02 \x01(\t"U\n\x12\x43onfirmationUpdate\x12\x11\n\tblock_sha\x18\x01 \x01(\x0c\x12\x14\n\x0c\x62lock_height\x18\x02 \x01(\x05\x12\x16\n\x0enum_confs_left\x18\x03 \x01(\r"?\n\x11\x43hannelOpenUpdate\x12*\n\rchannel_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint";\n\x12\x43hannelCloseUpdate\x12\x14\n\x0c\x63losing_txid\x18\x01 \x01(\x0c\x12\x0f\n\x07success\x18\x02 \x01(\x08"\xcb\x01\n\x13\x43loseChannelRequest\x12*\n\rchannel_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12\r\n\x05\x66orce\x18\x02 \x01(\x08\x12\x13\n\x0btarget_conf\x18\x03 \x01(\x05\x12\x18\n\x0csat_per_byte\x18\x04 \x01(\x03\x42\x02\x18\x01\x12\x18\n\x10\x64\x65livery_address\x18\x05 \x01(\t\x12\x15\n\rsat_per_vbyte\x18\x06 \x01(\x04\x12\x19\n\x11max_fee_per_vbyte\x18\x07 \x01(\x04"}\n\x11\x43loseStatusUpdate\x12-\n\rclose_pending\x18\x01 \x01(\x0b\x32\x14.lnrpc.PendingUpdateH\x00\x12/\n\nchan_close\x18\x03 \x01(\x0b\x32\x19.lnrpc.ChannelCloseUpdateH\x00\x42\x08\n\x06update"3\n\rPendingUpdate\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x14\n\x0coutput_index\x18\x02 \x01(\r"T\n\x13ReadyForPsbtFunding\x12\x17\n\x0f\x66unding_address\x18\x01 \x01(\t\x12\x16\n\x0e\x66unding_amount\x18\x02 \x01(\x03\x12\x0c\n\x04psbt\x18\x03 \x01(\x0c"\xad\x01\n\x17\x42\x61tchOpenChannelRequest\x12)\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x17.lnrpc.BatchOpenChannel\x12\x13\n\x0btarget_conf\x18\x02 \x01(\x05\x12\x15\n\rsat_per_vbyte\x18\x03 \x01(\x03\x12\x11\n\tmin_confs\x18\x04 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x05 \x01(\x08\x12\r\n\x05label\x18\x06 \x01(\t"\xf9\x01\n\x10\x42\x61tchOpenChannel\x12\x13\n\x0bnode_pubkey\x18\x01 \x01(\x0c\x12\x1c\n\x14local_funding_amount\x18\x02 \x01(\x03\x12\x10\n\x08push_sat\x18\x03 \x01(\x03\x12\x0f\n\x07private\x18\x04 \x01(\x08\x12\x15\n\rmin_htlc_msat\x18\x05 \x01(\x03\x12\x18\n\x10remote_csv_delay\x18\x06 \x01(\r\x12\x15\n\rclose_address\x18\x07 \x01(\t\x12\x17\n\x0fpending_chan_id\x18\x08 \x01(\x0c\x12.\n\x0f\x63ommitment_type\x18\t \x01(\x0e\x32\x15.lnrpc.CommitmentType"J\n\x18\x42\x61tchOpenChannelResponse\x12.\n\x10pending_channels\x18\x01 \x03(\x0b\x32\x14.lnrpc.PendingUpdate"\xa4\x05\n\x12OpenChannelRequest\x12\x15\n\rsat_per_vbyte\x18\x01 \x01(\x04\x12\x13\n\x0bnode_pubkey\x18\x02 \x01(\x0c\x12\x1e\n\x12node_pubkey_string\x18\x03 \x01(\tB\x02\x18\x01\x12\x1c\n\x14local_funding_amount\x18\x04 \x01(\x03\x12\x10\n\x08push_sat\x18\x05 \x01(\x03\x12\x13\n\x0btarget_conf\x18\x06 \x01(\x05\x12\x18\n\x0csat_per_byte\x18\x07 \x01(\x03\x42\x02\x18\x01\x12\x0f\n\x07private\x18\x08 \x01(\x08\x12\x15\n\rmin_htlc_msat\x18\t \x01(\x03\x12\x18\n\x10remote_csv_delay\x18\n \x01(\r\x12\x11\n\tmin_confs\x18\x0b \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x0c \x01(\x08\x12\x15\n\rclose_address\x18\r \x01(\t\x12(\n\x0c\x66unding_shim\x18\x0e \x01(\x0b\x32\x12.lnrpc.FundingShim\x12\'\n\x1fremote_max_value_in_flight_msat\x18\x0f \x01(\x04\x12\x18\n\x10remote_max_htlcs\x18\x10 \x01(\r\x12\x15\n\rmax_local_csv\x18\x11 \x01(\r\x12.\n\x0f\x63ommitment_type\x18\x12 \x01(\x0e\x32\x15.lnrpc.CommitmentType\x12\x11\n\tzero_conf\x18\x13 \x01(\x08\x12\x12\n\nscid_alias\x18\x14 \x01(\x08\x12\x10\n\x08\x62\x61se_fee\x18\x15 \x01(\x04\x12\x10\n\x08\x66\x65\x65_rate\x18\x16 \x01(\x04\x12\x14\n\x0cuse_base_fee\x18\x17 \x01(\x08\x12\x14\n\x0cuse_fee_rate\x18\x18 \x01(\x08\x12\x1f\n\x17remote_chan_reserve_sat\x18\x19 \x01(\x04\x12\x10\n\x08\x66und_max\x18\x1a \x01(\x08"\xc3\x01\n\x10OpenStatusUpdate\x12,\n\x0c\x63han_pending\x18\x01 \x01(\x0b\x32\x14.lnrpc.PendingUpdateH\x00\x12-\n\tchan_open\x18\x03 \x01(\x0b\x32\x18.lnrpc.ChannelOpenUpdateH\x00\x12/\n\tpsbt_fund\x18\x05 \x01(\x0b\x32\x1a.lnrpc.ReadyForPsbtFundingH\x00\x12\x17\n\x0fpending_chan_id\x18\x04 \x01(\x0c\x42\x08\n\x06update"3\n\nKeyLocator\x12\x12\n\nkey_family\x18\x01 \x01(\x05\x12\x11\n\tkey_index\x18\x02 \x01(\x05"J\n\rKeyDescriptor\x12\x15\n\rraw_key_bytes\x18\x01 \x01(\x0c\x12"\n\x07key_loc\x18\x02 \x01(\x0b\x32\x11.lnrpc.KeyLocator"\xb0\x01\n\rChanPointShim\x12\x0b\n\x03\x61mt\x18\x01 \x01(\x03\x12\'\n\nchan_point\x18\x02 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12\'\n\tlocal_key\x18\x03 \x01(\x0b\x32\x14.lnrpc.KeyDescriptor\x12\x12\n\nremote_key\x18\x04 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x05 \x01(\x0c\x12\x13\n\x0bthaw_height\x18\x06 \x01(\r"J\n\x08PsbtShim\x12\x17\n\x0fpending_chan_id\x18\x01 \x01(\x0c\x12\x11\n\tbase_psbt\x18\x02 \x01(\x0c\x12\x12\n\nno_publish\x18\x03 \x01(\x08"l\n\x0b\x46undingShim\x12/\n\x0f\x63han_point_shim\x18\x01 \x01(\x0b\x32\x14.lnrpc.ChanPointShimH\x00\x12$\n\tpsbt_shim\x18\x02 \x01(\x0b\x32\x0f.lnrpc.PsbtShimH\x00\x42\x06\n\x04shim",\n\x11\x46undingShimCancel\x12\x17\n\x0fpending_chan_id\x18\x01 \x01(\x0c"X\n\x11\x46undingPsbtVerify\x12\x13\n\x0b\x66unded_psbt\x18\x01 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x02 \x01(\x0c\x12\x15\n\rskip_finalize\x18\x03 \x01(\x08"Y\n\x13\x46undingPsbtFinalize\x12\x13\n\x0bsigned_psbt\x18\x01 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x02 \x01(\x0c\x12\x14\n\x0c\x66inal_raw_tx\x18\x03 \x01(\x0c"\xe5\x01\n\x14\x46undingTransitionMsg\x12+\n\rshim_register\x18\x01 \x01(\x0b\x32\x12.lnrpc.FundingShimH\x00\x12/\n\x0bshim_cancel\x18\x02 \x01(\x0b\x32\x18.lnrpc.FundingShimCancelH\x00\x12/\n\x0bpsbt_verify\x18\x03 \x01(\x0b\x32\x18.lnrpc.FundingPsbtVerifyH\x00\x12\x33\n\rpsbt_finalize\x18\x04 \x01(\x0b\x32\x1a.lnrpc.FundingPsbtFinalizeH\x00\x42\t\n\x07trigger"\x16\n\x14\x46undingStateStepResp"\x86\x01\n\x0bPendingHTLC\x12\x10\n\x08incoming\x18\x01 \x01(\x08\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x12\x10\n\x08outpoint\x18\x03 \x01(\t\x12\x17\n\x0fmaturity_height\x18\x04 \x01(\r\x12\x1b\n\x13\x62locks_til_maturity\x18\x05 \x01(\x05\x12\r\n\x05stage\x18\x06 \x01(\r"\x18\n\x16PendingChannelsRequest"\xf7\r\n\x17PendingChannelsResponse\x12\x1b\n\x13total_limbo_balance\x18\x01 \x01(\x03\x12P\n\x15pending_open_channels\x18\x02 \x03(\x0b\x32\x31.lnrpc.PendingChannelsResponse.PendingOpenChannel\x12R\n\x18pending_closing_channels\x18\x03 \x03(\x0b\x32,.lnrpc.PendingChannelsResponse.ClosedChannelB\x02\x18\x01\x12Y\n\x1epending_force_closing_channels\x18\x04 \x03(\x0b\x32\x31.lnrpc.PendingChannelsResponse.ForceClosedChannel\x12R\n\x16waiting_close_channels\x18\x05 \x03(\x0b\x32\x32.lnrpc.PendingChannelsResponse.WaitingCloseChannel\x1a\xe4\x02\n\x0ePendingChannel\x12\x17\n\x0fremote_node_pub\x18\x01 \x01(\t\x12\x15\n\rchannel_point\x18\x02 \x01(\t\x12\x10\n\x08\x63\x61pacity\x18\x03 \x01(\x03\x12\x15\n\rlocal_balance\x18\x04 \x01(\x03\x12\x16\n\x0eremote_balance\x18\x05 \x01(\x03\x12\x1e\n\x16local_chan_reserve_sat\x18\x06 \x01(\x03\x12\x1f\n\x17remote_chan_reserve_sat\x18\x07 \x01(\x03\x12#\n\tinitiator\x18\x08 \x01(\x0e\x32\x10.lnrpc.Initiator\x12.\n\x0f\x63ommitment_type\x18\t \x01(\x0e\x32\x15.lnrpc.CommitmentType\x12\x1f\n\x17num_forwarding_packages\x18\n \x01(\x03\x12\x19\n\x11\x63han_status_flags\x18\x0b \x01(\t\x12\x0f\n\x07private\x18\x0c \x01(\x08\x1a\x99\x01\n\x12PendingOpenChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x12\n\ncommit_fee\x18\x04 \x01(\x03\x12\x15\n\rcommit_weight\x18\x05 \x01(\x03\x12\x12\n\nfee_per_kw\x18\x06 \x01(\x03J\x04\x08\x02\x10\x03\x1a\xc3\x01\n\x13WaitingCloseChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x15\n\rlimbo_balance\x18\x02 \x01(\x03\x12?\n\x0b\x63ommitments\x18\x03 \x01(\x0b\x32*.lnrpc.PendingChannelsResponse.Commitments\x12\x14\n\x0c\x63losing_txid\x18\x04 \x01(\t\x1a\xb7\x01\n\x0b\x43ommitments\x12\x12\n\nlocal_txid\x18\x01 \x01(\t\x12\x13\n\x0bremote_txid\x18\x02 \x01(\t\x12\x1b\n\x13remote_pending_txid\x18\x03 \x01(\t\x12\x1c\n\x14local_commit_fee_sat\x18\x04 \x01(\x04\x12\x1d\n\x15remote_commit_fee_sat\x18\x05 \x01(\x04\x12%\n\x1dremote_pending_commit_fee_sat\x18\x06 \x01(\x04\x1a\x65\n\rClosedChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x14\n\x0c\x63losing_txid\x18\x02 \x01(\t\x1a\xff\x02\n\x12\x46orceClosedChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x14\n\x0c\x63losing_txid\x18\x02 \x01(\t\x12\x15\n\rlimbo_balance\x18\x03 \x01(\x03\x12\x17\n\x0fmaturity_height\x18\x04 \x01(\r\x12\x1b\n\x13\x62locks_til_maturity\x18\x05 \x01(\x05\x12\x19\n\x11recovered_balance\x18\x06 \x01(\x03\x12)\n\rpending_htlcs\x18\x08 \x03(\x0b\x32\x12.lnrpc.PendingHTLC\x12M\n\x06\x61nchor\x18\t \x01(\x0e\x32=.lnrpc.PendingChannelsResponse.ForceClosedChannel.AnchorState"1\n\x0b\x41nchorState\x12\t\n\x05LIMBO\x10\x00\x12\r\n\tRECOVERED\x10\x01\x12\x08\n\x04LOST\x10\x02"\x1a\n\x18\x43hannelEventSubscription"\x93\x04\n\x12\x43hannelEventUpdate\x12&\n\x0copen_channel\x18\x01 \x01(\x0b\x32\x0e.lnrpc.ChannelH\x00\x12\x34\n\x0e\x63losed_channel\x18\x02 \x01(\x0b\x32\x1a.lnrpc.ChannelCloseSummaryH\x00\x12-\n\x0e\x61\x63tive_channel\x18\x03 \x01(\x0b\x32\x13.lnrpc.ChannelPointH\x00\x12/\n\x10inactive_channel\x18\x04 \x01(\x0b\x32\x13.lnrpc.ChannelPointH\x00\x12\x34\n\x14pending_open_channel\x18\x06 \x01(\x0b\x32\x14.lnrpc.PendingUpdateH\x00\x12\x35\n\x16\x66ully_resolved_channel\x18\x07 \x01(\x0b\x32\x13.lnrpc.ChannelPointH\x00\x12\x32\n\x04type\x18\x05 \x01(\x0e\x32$.lnrpc.ChannelEventUpdate.UpdateType"\x92\x01\n\nUpdateType\x12\x10\n\x0cOPEN_CHANNEL\x10\x00\x12\x12\n\x0e\x43LOSED_CHANNEL\x10\x01\x12\x12\n\x0e\x41\x43TIVE_CHANNEL\x10\x02\x12\x14\n\x10INACTIVE_CHANNEL\x10\x03\x12\x18\n\x14PENDING_OPEN_CHANNEL\x10\x04\x12\x1a\n\x16\x46ULLY_RESOLVED_CHANNEL\x10\x05\x42\t\n\x07\x63hannel"N\n\x14WalletAccountBalance\x12\x19\n\x11\x63onfirmed_balance\x18\x01 \x01(\x03\x12\x1b\n\x13unconfirmed_balance\x18\x02 \x01(\x03"\x16\n\x14WalletBalanceRequest"\xc3\x02\n\x15WalletBalanceResponse\x12\x15\n\rtotal_balance\x18\x01 \x01(\x03\x12\x19\n\x11\x63onfirmed_balance\x18\x02 \x01(\x03\x12\x1b\n\x13unconfirmed_balance\x18\x03 \x01(\x03\x12\x16\n\x0elocked_balance\x18\x05 \x01(\x03\x12$\n\x1creserved_balance_anchor_chan\x18\x06 \x01(\x03\x12I\n\x0f\x61\x63\x63ount_balance\x18\x04 \x03(\x0b\x32\x30.lnrpc.WalletBalanceResponse.AccountBalanceEntry\x1aR\n\x13\x41\x63\x63ountBalanceEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12*\n\x05value\x18\x02 \x01(\x0b\x32\x1b.lnrpc.WalletAccountBalance:\x02\x38\x01"#\n\x06\x41mount\x12\x0b\n\x03sat\x18\x01 \x01(\x04\x12\x0c\n\x04msat\x18\x02 \x01(\x04"\x17\n\x15\x43hannelBalanceRequest"\xe4\x02\n\x16\x43hannelBalanceResponse\x12\x13\n\x07\x62\x61lance\x18\x01 \x01(\x03\x42\x02\x18\x01\x12 \n\x14pending_open_balance\x18\x02 \x01(\x03\x42\x02\x18\x01\x12$\n\rlocal_balance\x18\x03 \x01(\x0b\x32\r.lnrpc.Amount\x12%\n\x0eremote_balance\x18\x04 \x01(\x0b\x32\r.lnrpc.Amount\x12.\n\x17unsettled_local_balance\x18\x05 \x01(\x0b\x32\r.lnrpc.Amount\x12/\n\x18unsettled_remote_balance\x18\x06 \x01(\x0b\x32\r.lnrpc.Amount\x12\x31\n\x1apending_open_local_balance\x18\x07 \x01(\x0b\x32\r.lnrpc.Amount\x12\x32\n\x1bpending_open_remote_balance\x18\x08 \x01(\x0b\x32\r.lnrpc.Amount"\xe3\x04\n\x12QueryRoutesRequest\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\x12\x0b\n\x03\x61mt\x18\x02 \x01(\x03\x12\x10\n\x08\x61mt_msat\x18\x0c \x01(\x03\x12\x18\n\x10\x66inal_cltv_delta\x18\x04 \x01(\x05\x12"\n\tfee_limit\x18\x05 \x01(\x0b\x32\x0f.lnrpc.FeeLimit\x12\x15\n\rignored_nodes\x18\x06 \x03(\x0c\x12-\n\rignored_edges\x18\x07 \x03(\x0b\x32\x12.lnrpc.EdgeLocatorB\x02\x18\x01\x12\x16\n\x0esource_pub_key\x18\x08 \x01(\t\x12\x1b\n\x13use_mission_control\x18\t \x01(\x08\x12&\n\rignored_pairs\x18\n \x03(\x0b\x32\x0f.lnrpc.NodePair\x12\x12\n\ncltv_limit\x18\x0b \x01(\r\x12M\n\x13\x64\x65st_custom_records\x18\r \x03(\x0b\x32\x30.lnrpc.QueryRoutesRequest.DestCustomRecordsEntry\x12\x1c\n\x10outgoing_chan_id\x18\x0e \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0flast_hop_pubkey\x18\x0f \x01(\x0c\x12%\n\x0broute_hints\x18\x10 \x03(\x0b\x32\x10.lnrpc.RouteHint\x12(\n\rdest_features\x18\x11 \x03(\x0e\x32\x11.lnrpc.FeatureBit\x12\x11\n\ttime_pref\x18\x12 \x01(\x01\x1a\x38\n\x16\x44\x65stCustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01J\x04\x08\x03\x10\x04"$\n\x08NodePair\x12\x0c\n\x04\x66rom\x18\x01 \x01(\x0c\x12\n\n\x02to\x18\x02 \x01(\x0c"@\n\x0b\x45\x64geLocator\x12\x16\n\nchannel_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x64irection_reverse\x18\x02 \x01(\x08"I\n\x13QueryRoutesResponse\x12\x1c\n\x06routes\x18\x01 \x03(\x0b\x32\x0c.lnrpc.Route\x12\x14\n\x0csuccess_prob\x18\x02 \x01(\x01"\x96\x03\n\x03Hop\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\rchan_capacity\x18\x02 \x01(\x03\x42\x02\x18\x01\x12\x1a\n\x0e\x61mt_to_forward\x18\x03 \x01(\x03\x42\x02\x18\x01\x12\x0f\n\x03\x66\x65\x65\x18\x04 \x01(\x03\x42\x02\x18\x01\x12\x0e\n\x06\x65xpiry\x18\x05 \x01(\r\x12\x1b\n\x13\x61mt_to_forward_msat\x18\x06 \x01(\x03\x12\x10\n\x08\x66\x65\x65_msat\x18\x07 \x01(\x03\x12\x0f\n\x07pub_key\x18\x08 \x01(\t\x12\x17\n\x0btlv_payload\x18\t \x01(\x08\x42\x02\x18\x01\x12$\n\nmpp_record\x18\n \x01(\x0b\x32\x10.lnrpc.MPPRecord\x12$\n\namp_record\x18\x0c \x01(\x0b\x32\x10.lnrpc.AMPRecord\x12\x35\n\x0e\x63ustom_records\x18\x0b \x03(\x0b\x32\x1d.lnrpc.Hop.CustomRecordsEntry\x12\x10\n\x08metadata\x18\r \x01(\x0c\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"9\n\tMPPRecord\x12\x14\n\x0cpayment_addr\x18\x0b \x01(\x0c\x12\x16\n\x0etotal_amt_msat\x18\n \x01(\x03"D\n\tAMPRecord\x12\x12\n\nroot_share\x18\x01 \x01(\x0c\x12\x0e\n\x06set_id\x18\x02 \x01(\x0c\x12\x13\n\x0b\x63hild_index\x18\x03 \x01(\r"\x9a\x01\n\x05Route\x12\x17\n\x0ftotal_time_lock\x18\x01 \x01(\r\x12\x16\n\ntotal_fees\x18\x02 \x01(\x03\x42\x02\x18\x01\x12\x15\n\ttotal_amt\x18\x03 \x01(\x03\x42\x02\x18\x01\x12\x18\n\x04hops\x18\x04 \x03(\x0b\x32\n.lnrpc.Hop\x12\x17\n\x0ftotal_fees_msat\x18\x05 \x01(\x03\x12\x16\n\x0etotal_amt_msat\x18\x06 \x01(\x03"<\n\x0fNodeInfoRequest\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\x12\x18\n\x10include_channels\x18\x02 \x01(\x08"\x82\x01\n\x08NodeInfo\x12"\n\x04node\x18\x01 \x01(\x0b\x32\x14.lnrpc.LightningNode\x12\x14\n\x0cnum_channels\x18\x02 \x01(\r\x12\x16\n\x0etotal_capacity\x18\x03 \x01(\x03\x12$\n\x08\x63hannels\x18\x04 \x03(\x0b\x32\x12.lnrpc.ChannelEdge"\xe8\x02\n\rLightningNode\x12\x13\n\x0blast_update\x18\x01 \x01(\r\x12\x0f\n\x07pub_key\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\x12%\n\taddresses\x18\x04 \x03(\x0b\x32\x12.lnrpc.NodeAddress\x12\r\n\x05\x63olor\x18\x05 \x01(\t\x12\x34\n\x08\x66\x65\x61tures\x18\x06 \x03(\x0b\x32".lnrpc.LightningNode.FeaturesEntry\x12?\n\x0e\x63ustom_records\x18\x07 \x03(\x0b\x32\'.lnrpc.LightningNode.CustomRecordsEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01",\n\x0bNodeAddress\x12\x0f\n\x07network\x18\x01 \x01(\t\x12\x0c\n\x04\x61\x64\x64r\x18\x02 \x01(\t"\xa3\x02\n\rRoutingPolicy\x12\x17\n\x0ftime_lock_delta\x18\x01 \x01(\r\x12\x10\n\x08min_htlc\x18\x02 \x01(\x03\x12\x15\n\rfee_base_msat\x18\x03 \x01(\x03\x12\x1b\n\x13\x66\x65\x65_rate_milli_msat\x18\x04 \x01(\x03\x12\x10\n\x08\x64isabled\x18\x05 \x01(\x08\x12\x15\n\rmax_htlc_msat\x18\x06 \x01(\x04\x12\x13\n\x0blast_update\x18\x07 \x01(\r\x12?\n\x0e\x63ustom_records\x18\x08 \x03(\x0b\x32\'.lnrpc.RoutingPolicy.CustomRecordsEntry\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"\xd7\x02\n\x0b\x43hannelEdge\x12\x16\n\nchannel_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x12\n\nchan_point\x18\x02 \x01(\t\x12\x17\n\x0blast_update\x18\x03 \x01(\rB\x02\x18\x01\x12\x11\n\tnode1_pub\x18\x04 \x01(\t\x12\x11\n\tnode2_pub\x18\x05 \x01(\t\x12\x10\n\x08\x63\x61pacity\x18\x06 \x01(\x03\x12*\n\x0cnode1_policy\x18\x07 \x01(\x0b\x32\x14.lnrpc.RoutingPolicy\x12*\n\x0cnode2_policy\x18\x08 \x01(\x0b\x32\x14.lnrpc.RoutingPolicy\x12=\n\x0e\x63ustom_records\x18\t \x03(\x0b\x32%.lnrpc.ChannelEdge.CustomRecordsEntry\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"2\n\x13\x43hannelGraphRequest\x12\x1b\n\x13include_unannounced\x18\x01 \x01(\x08"V\n\x0c\x43hannelGraph\x12#\n\x05nodes\x18\x01 \x03(\x0b\x32\x14.lnrpc.LightningNode\x12!\n\x05\x65\x64ges\x18\x02 \x03(\x0b\x32\x12.lnrpc.ChannelEdge":\n\x12NodeMetricsRequest\x12$\n\x05types\x18\x01 \x03(\x0e\x32\x15.lnrpc.NodeMetricType"\xbe\x01\n\x13NodeMetricsResponse\x12U\n\x16\x62\x65tweenness_centrality\x18\x01 \x03(\x0b\x32\x35.lnrpc.NodeMetricsResponse.BetweennessCentralityEntry\x1aP\n\x1a\x42\x65tweennessCentralityEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.lnrpc.FloatMetric:\x02\x38\x01"6\n\x0b\x46loatMetric\x12\r\n\x05value\x18\x01 \x01(\x01\x12\x18\n\x10normalized_value\x18\x02 \x01(\x01"&\n\x0f\x43hanInfoRequest\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01"\x14\n\x12NetworkInfoRequest"\xa7\x02\n\x0bNetworkInfo\x12\x16\n\x0egraph_diameter\x18\x01 \x01(\r\x12\x16\n\x0e\x61vg_out_degree\x18\x02 \x01(\x01\x12\x16\n\x0emax_out_degree\x18\x03 \x01(\r\x12\x11\n\tnum_nodes\x18\x04 \x01(\r\x12\x14\n\x0cnum_channels\x18\x05 \x01(\r\x12\x1e\n\x16total_network_capacity\x18\x06 \x01(\x03\x12\x18\n\x10\x61vg_channel_size\x18\x07 \x01(\x01\x12\x18\n\x10min_channel_size\x18\x08 \x01(\x03\x12\x18\n\x10max_channel_size\x18\t \x01(\x03\x12\x1f\n\x17median_channel_size_sat\x18\n \x01(\x03\x12\x18\n\x10num_zombie_chans\x18\x0b \x01(\x04"\r\n\x0bStopRequest"\x0e\n\x0cStopResponse"\x1b\n\x19GraphTopologySubscription"\xa3\x01\n\x13GraphTopologyUpdate\x12\'\n\x0cnode_updates\x18\x01 \x03(\x0b\x32\x11.lnrpc.NodeUpdate\x12\x31\n\x0f\x63hannel_updates\x18\x02 \x03(\x0b\x32\x18.lnrpc.ChannelEdgeUpdate\x12\x30\n\x0c\x63losed_chans\x18\x03 \x03(\x0b\x32\x1a.lnrpc.ClosedChannelUpdate"\x94\x02\n\nNodeUpdate\x12\x15\n\taddresses\x18\x01 \x03(\tB\x02\x18\x01\x12\x14\n\x0cidentity_key\x18\x02 \x01(\t\x12\x1b\n\x0fglobal_features\x18\x03 \x01(\x0c\x42\x02\x18\x01\x12\r\n\x05\x61lias\x18\x04 \x01(\t\x12\r\n\x05\x63olor\x18\x05 \x01(\t\x12*\n\x0enode_addresses\x18\x07 \x03(\x0b\x32\x12.lnrpc.NodeAddress\x12\x31\n\x08\x66\x65\x61tures\x18\x06 \x03(\x0b\x32\x1f.lnrpc.NodeUpdate.FeaturesEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01"\xc4\x01\n\x11\x43hannelEdgeUpdate\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\'\n\nchan_point\x18\x02 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12\x10\n\x08\x63\x61pacity\x18\x03 \x01(\x03\x12,\n\x0erouting_policy\x18\x04 \x01(\x0b\x32\x14.lnrpc.RoutingPolicy\x12\x18\n\x10\x61\x64vertising_node\x18\x05 \x01(\t\x12\x17\n\x0f\x63onnecting_node\x18\x06 \x01(\t"|\n\x13\x43losedChannelUpdate\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x10\n\x08\x63\x61pacity\x18\x02 \x01(\x03\x12\x15\n\rclosed_height\x18\x03 \x01(\r\x12\'\n\nchan_point\x18\x04 \x01(\x0b\x32\x13.lnrpc.ChannelPoint"\x86\x01\n\x07HopHint\x12\x0f\n\x07node_id\x18\x01 \x01(\t\x12\x13\n\x07\x63han_id\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rfee_base_msat\x18\x03 \x01(\r\x12#\n\x1b\x66\x65\x65_proportional_millionths\x18\x04 \x01(\r\x12\x19\n\x11\x63ltv_expiry_delta\x18\x05 \x01(\r"\x17\n\x05SetID\x12\x0e\n\x06set_id\x18\x01 \x01(\x0c".\n\tRouteHint\x12!\n\thop_hints\x18\x01 \x03(\x0b\x32\x0e.lnrpc.HopHint"{\n\x0f\x41MPInvoiceState\x12&\n\x05state\x18\x01 \x01(\x0e\x32\x17.lnrpc.InvoiceHTLCState\x12\x14\n\x0csettle_index\x18\x02 \x01(\x04\x12\x13\n\x0bsettle_time\x18\x03 \x01(\x03\x12\x15\n\ramt_paid_msat\x18\x05 \x01(\x03"\x85\x07\n\x07Invoice\x12\x0c\n\x04memo\x18\x01 \x01(\t\x12\x12\n\nr_preimage\x18\x03 \x01(\x0c\x12\x0e\n\x06r_hash\x18\x04 \x01(\x0c\x12\r\n\x05value\x18\x05 \x01(\x03\x12\x12\n\nvalue_msat\x18\x17 \x01(\x03\x12\x13\n\x07settled\x18\x06 \x01(\x08\x42\x02\x18\x01\x12\x15\n\rcreation_date\x18\x07 \x01(\x03\x12\x13\n\x0bsettle_date\x18\x08 \x01(\x03\x12\x17\n\x0fpayment_request\x18\t \x01(\t\x12\x18\n\x10\x64\x65scription_hash\x18\n \x01(\x0c\x12\x0e\n\x06\x65xpiry\x18\x0b \x01(\x03\x12\x15\n\rfallback_addr\x18\x0c \x01(\t\x12\x13\n\x0b\x63ltv_expiry\x18\r \x01(\x04\x12%\n\x0broute_hints\x18\x0e \x03(\x0b\x32\x10.lnrpc.RouteHint\x12\x0f\n\x07private\x18\x0f \x01(\x08\x12\x11\n\tadd_index\x18\x10 \x01(\x04\x12\x14\n\x0csettle_index\x18\x11 \x01(\x04\x12\x14\n\x08\x61mt_paid\x18\x12 \x01(\x03\x42\x02\x18\x01\x12\x14\n\x0c\x61mt_paid_sat\x18\x13 \x01(\x03\x12\x15\n\ramt_paid_msat\x18\x14 \x01(\x03\x12*\n\x05state\x18\x15 \x01(\x0e\x32\x1b.lnrpc.Invoice.InvoiceState\x12!\n\x05htlcs\x18\x16 \x03(\x0b\x32\x12.lnrpc.InvoiceHTLC\x12.\n\x08\x66\x65\x61tures\x18\x18 \x03(\x0b\x32\x1c.lnrpc.Invoice.FeaturesEntry\x12\x12\n\nis_keysend\x18\x19 \x01(\x08\x12\x14\n\x0cpayment_addr\x18\x1a \x01(\x0c\x12\x0e\n\x06is_amp\x18\x1b \x01(\x08\x12>\n\x11\x61mp_invoice_state\x18\x1c \x03(\x0b\x32#.lnrpc.Invoice.AmpInvoiceStateEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01\x1aN\n\x14\x41mpInvoiceStateEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.lnrpc.AMPInvoiceState:\x02\x38\x01"A\n\x0cInvoiceState\x12\x08\n\x04OPEN\x10\x00\x12\x0b\n\x07SETTLED\x10\x01\x12\x0c\n\x08\x43\x41NCELED\x10\x02\x12\x0c\n\x08\x41\x43\x43\x45PTED\x10\x03J\x04\x08\x02\x10\x03"\xf3\x02\n\x0bInvoiceHTLC\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x12\n\nhtlc_index\x18\x02 \x01(\x04\x12\x10\n\x08\x61mt_msat\x18\x03 \x01(\x04\x12\x15\n\raccept_height\x18\x04 \x01(\x05\x12\x13\n\x0b\x61\x63\x63\x65pt_time\x18\x05 \x01(\x03\x12\x14\n\x0cresolve_time\x18\x06 \x01(\x03\x12\x15\n\rexpiry_height\x18\x07 \x01(\x05\x12&\n\x05state\x18\x08 \x01(\x0e\x32\x17.lnrpc.InvoiceHTLCState\x12=\n\x0e\x63ustom_records\x18\t \x03(\x0b\x32%.lnrpc.InvoiceHTLC.CustomRecordsEntry\x12\x1a\n\x12mpp_total_amt_msat\x18\n \x01(\x04\x12\x17\n\x03\x61mp\x18\x0b \x01(\x0b\x32\n.lnrpc.AMP\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"^\n\x03\x41MP\x12\x12\n\nroot_share\x18\x01 \x01(\x0c\x12\x0e\n\x06set_id\x18\x02 \x01(\x0c\x12\x13\n\x0b\x63hild_index\x18\x03 \x01(\r\x12\x0c\n\x04hash\x18\x04 \x01(\x0c\x12\x10\n\x08preimage\x18\x05 \x01(\x0c"f\n\x12\x41\x64\x64InvoiceResponse\x12\x0e\n\x06r_hash\x18\x01 \x01(\x0c\x12\x17\n\x0fpayment_request\x18\x02 \x01(\t\x12\x11\n\tadd_index\x18\x10 \x01(\x04\x12\x14\n\x0cpayment_addr\x18\x11 \x01(\x0c"5\n\x0bPaymentHash\x12\x16\n\nr_hash_str\x18\x01 \x01(\tB\x02\x18\x01\x12\x0e\n\x06r_hash\x18\x02 \x01(\x0c"\xa4\x01\n\x12ListInvoiceRequest\x12\x14\n\x0cpending_only\x18\x01 \x01(\x08\x12\x14\n\x0cindex_offset\x18\x04 \x01(\x04\x12\x18\n\x10num_max_invoices\x18\x05 \x01(\x04\x12\x10\n\x08reversed\x18\x06 \x01(\x08\x12\x1b\n\x13\x63reation_date_start\x18\x07 \x01(\x04\x12\x19\n\x11\x63reation_date_end\x18\x08 \x01(\x04"n\n\x13ListInvoiceResponse\x12 \n\x08invoices\x18\x01 \x03(\x0b\x32\x0e.lnrpc.Invoice\x12\x19\n\x11last_index_offset\x18\x02 \x01(\x04\x12\x1a\n\x12\x66irst_index_offset\x18\x03 \x01(\x04">\n\x13InvoiceSubscription\x12\x11\n\tadd_index\x18\x01 \x01(\x04\x12\x14\n\x0csettle_index\x18\x02 \x01(\x04"\xe0\x03\n\x07Payment\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\t\x12\x11\n\x05value\x18\x02 \x01(\x03\x42\x02\x18\x01\x12\x19\n\rcreation_date\x18\x03 \x01(\x03\x42\x02\x18\x01\x12\x0f\n\x03\x66\x65\x65\x18\x05 \x01(\x03\x42\x02\x18\x01\x12\x18\n\x10payment_preimage\x18\x06 \x01(\t\x12\x11\n\tvalue_sat\x18\x07 \x01(\x03\x12\x12\n\nvalue_msat\x18\x08 \x01(\x03\x12\x17\n\x0fpayment_request\x18\t \x01(\t\x12,\n\x06status\x18\n \x01(\x0e\x32\x1c.lnrpc.Payment.PaymentStatus\x12\x0f\n\x07\x66\x65\x65_sat\x18\x0b \x01(\x03\x12\x10\n\x08\x66\x65\x65_msat\x18\x0c \x01(\x03\x12\x18\n\x10\x63reation_time_ns\x18\r \x01(\x03\x12!\n\x05htlcs\x18\x0e \x03(\x0b\x32\x12.lnrpc.HTLCAttempt\x12\x15\n\rpayment_index\x18\x0f \x01(\x04\x12\x33\n\x0e\x66\x61ilure_reason\x18\x10 \x01(\x0e\x32\x1b.lnrpc.PaymentFailureReason"F\n\rPaymentStatus\x12\x0b\n\x07UNKNOWN\x10\x00\x12\r\n\tIN_FLIGHT\x10\x01\x12\r\n\tSUCCEEDED\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03J\x04\x08\x04\x10\x05"\x8a\x02\n\x0bHTLCAttempt\x12\x12\n\nattempt_id\x18\x07 \x01(\x04\x12-\n\x06status\x18\x01 \x01(\x0e\x32\x1d.lnrpc.HTLCAttempt.HTLCStatus\x12\x1b\n\x05route\x18\x02 \x01(\x0b\x32\x0c.lnrpc.Route\x12\x17\n\x0f\x61ttempt_time_ns\x18\x03 \x01(\x03\x12\x17\n\x0fresolve_time_ns\x18\x04 \x01(\x03\x12\x1f\n\x07\x66\x61ilure\x18\x05 \x01(\x0b\x32\x0e.lnrpc.Failure\x12\x10\n\x08preimage\x18\x06 \x01(\x0c"6\n\nHTLCStatus\x12\r\n\tIN_FLIGHT\x10\x00\x12\r\n\tSUCCEEDED\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02"\xc5\x01\n\x13ListPaymentsRequest\x12\x1a\n\x12include_incomplete\x18\x01 \x01(\x08\x12\x14\n\x0cindex_offset\x18\x02 \x01(\x04\x12\x14\n\x0cmax_payments\x18\x03 \x01(\x04\x12\x10\n\x08reversed\x18\x04 \x01(\x08\x12\x1c\n\x14\x63ount_total_payments\x18\x05 \x01(\x08\x12\x1b\n\x13\x63reation_date_start\x18\x06 \x01(\x04\x12\x19\n\x11\x63reation_date_end\x18\x07 \x01(\x04"\x8b\x01\n\x14ListPaymentsResponse\x12 \n\x08payments\x18\x01 \x03(\x0b\x32\x0e.lnrpc.Payment\x12\x1a\n\x12\x66irst_index_offset\x18\x02 \x01(\x04\x12\x19\n\x11last_index_offset\x18\x03 \x01(\x04\x12\x1a\n\x12total_num_payments\x18\x04 \x01(\x04"G\n\x14\x44\x65letePaymentRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x19\n\x11\x66\x61iled_htlcs_only\x18\x02 \x01(\x08"S\n\x18\x44\x65leteAllPaymentsRequest\x12\x1c\n\x14\x66\x61iled_payments_only\x18\x01 \x01(\x08\x12\x19\n\x11\x66\x61iled_htlcs_only\x18\x02 \x01(\x08"\x17\n\x15\x44\x65letePaymentResponse"\x1b\n\x19\x44\x65leteAllPaymentsResponse"\x86\x01\n\x15\x41\x62\x61ndonChannelRequest\x12*\n\rchannel_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12!\n\x19pending_funding_shim_only\x18\x02 \x01(\x08\x12\x1e\n\x16i_know_what_i_am_doing\x18\x03 \x01(\x08"\x18\n\x16\x41\x62\x61ndonChannelResponse"5\n\x11\x44\x65\x62ugLevelRequest\x12\x0c\n\x04show\x18\x01 \x01(\x08\x12\x12\n\nlevel_spec\x18\x02 \x01(\t")\n\x12\x44\x65\x62ugLevelResponse\x12\x13\n\x0bsub_systems\x18\x01 \x01(\t"\x1f\n\x0cPayReqString\x12\x0f\n\x07pay_req\x18\x01 \x01(\t"\x86\x03\n\x06PayReq\x12\x13\n\x0b\x64\x65stination\x18\x01 \x01(\t\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\t\x12\x14\n\x0cnum_satoshis\x18\x03 \x01(\x03\x12\x11\n\ttimestamp\x18\x04 \x01(\x03\x12\x0e\n\x06\x65xpiry\x18\x05 \x01(\x03\x12\x13\n\x0b\x64\x65scription\x18\x06 \x01(\t\x12\x18\n\x10\x64\x65scription_hash\x18\x07 \x01(\t\x12\x15\n\rfallback_addr\x18\x08 \x01(\t\x12\x13\n\x0b\x63ltv_expiry\x18\t \x01(\x03\x12%\n\x0broute_hints\x18\n \x03(\x0b\x32\x10.lnrpc.RouteHint\x12\x14\n\x0cpayment_addr\x18\x0b \x01(\x0c\x12\x10\n\x08num_msat\x18\x0c \x01(\x03\x12-\n\x08\x66\x65\x61tures\x18\r \x03(\x0b\x32\x1b.lnrpc.PayReq.FeaturesEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01">\n\x07\x46\x65\x61ture\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0bis_required\x18\x03 \x01(\x08\x12\x10\n\x08is_known\x18\x04 \x01(\x08"\x12\n\x10\x46\x65\x65ReportRequest"|\n\x10\x43hannelFeeReport\x12\x13\n\x07\x63han_id\x18\x05 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rchannel_point\x18\x01 \x01(\t\x12\x15\n\rbase_fee_msat\x18\x02 \x01(\x03\x12\x13\n\x0b\x66\x65\x65_per_mil\x18\x03 \x01(\x03\x12\x10\n\x08\x66\x65\x65_rate\x18\x04 \x01(\x01"\x84\x01\n\x11\x46\x65\x65ReportResponse\x12-\n\x0c\x63hannel_fees\x18\x01 \x03(\x0b\x32\x17.lnrpc.ChannelFeeReport\x12\x13\n\x0b\x64\x61y_fee_sum\x18\x02 \x01(\x04\x12\x14\n\x0cweek_fee_sum\x18\x03 \x01(\x04\x12\x15\n\rmonth_fee_sum\x18\x04 \x01(\x04"\x82\x02\n\x13PolicyUpdateRequest\x12\x10\n\x06global\x18\x01 \x01(\x08H\x00\x12)\n\nchan_point\x18\x02 \x01(\x0b\x32\x13.lnrpc.ChannelPointH\x00\x12\x15\n\rbase_fee_msat\x18\x03 \x01(\x03\x12\x10\n\x08\x66\x65\x65_rate\x18\x04 \x01(\x01\x12\x14\n\x0c\x66\x65\x65_rate_ppm\x18\t \x01(\r\x12\x17\n\x0ftime_lock_delta\x18\x05 \x01(\r\x12\x15\n\rmax_htlc_msat\x18\x06 \x01(\x04\x12\x15\n\rmin_htlc_msat\x18\x07 \x01(\x04\x12\x1f\n\x17min_htlc_msat_specified\x18\x08 \x01(\x08\x42\x07\n\x05scope"m\n\x0c\x46\x61iledUpdate\x12!\n\x08outpoint\x18\x01 \x01(\x0b\x32\x0f.lnrpc.OutPoint\x12$\n\x06reason\x18\x02 \x01(\x0e\x32\x14.lnrpc.UpdateFailure\x12\x14\n\x0cupdate_error\x18\x03 \x01(\t"C\n\x14PolicyUpdateResponse\x12+\n\x0e\x66\x61iled_updates\x18\x01 \x03(\x0b\x32\x13.lnrpc.FailedUpdate"\x89\x01\n\x18\x46orwardingHistoryRequest\x12\x12\n\nstart_time\x18\x01 \x01(\x04\x12\x10\n\x08\x65nd_time\x18\x02 \x01(\x04\x12\x14\n\x0cindex_offset\x18\x03 \x01(\r\x12\x16\n\x0enum_max_events\x18\x04 \x01(\r\x12\x19\n\x11peer_alias_lookup\x18\x05 \x01(\x08"\x89\x02\n\x0f\x46orwardingEvent\x12\x15\n\ttimestamp\x18\x01 \x01(\x04\x42\x02\x18\x01\x12\x16\n\nchan_id_in\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0b\x63han_id_out\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x0e\n\x06\x61mt_in\x18\x05 \x01(\x04\x12\x0f\n\x07\x61mt_out\x18\x06 \x01(\x04\x12\x0b\n\x03\x66\x65\x65\x18\x07 \x01(\x04\x12\x10\n\x08\x66\x65\x65_msat\x18\x08 \x01(\x04\x12\x13\n\x0b\x61mt_in_msat\x18\t \x01(\x04\x12\x14\n\x0c\x61mt_out_msat\x18\n \x01(\x04\x12\x14\n\x0ctimestamp_ns\x18\x0b \x01(\x04\x12\x15\n\rpeer_alias_in\x18\x0c \x01(\t\x12\x16\n\x0epeer_alias_out\x18\r \x01(\t"i\n\x19\x46orwardingHistoryResponse\x12\x31\n\x11\x66orwarding_events\x18\x01 \x03(\x0b\x32\x16.lnrpc.ForwardingEvent\x12\x19\n\x11last_offset_index\x18\x02 \x01(\r"E\n\x1a\x45xportChannelBackupRequest\x12\'\n\nchan_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint"M\n\rChannelBackup\x12\'\n\nchan_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12\x13\n\x0b\x63han_backup\x18\x02 \x01(\x0c"V\n\x0fMultiChanBackup\x12(\n\x0b\x63han_points\x18\x01 \x03(\x0b\x32\x13.lnrpc.ChannelPoint\x12\x19\n\x11multi_chan_backup\x18\x02 \x01(\x0c"\x19\n\x17\x43hanBackupExportRequest"{\n\x12\x43hanBackupSnapshot\x12\x32\n\x13single_chan_backups\x18\x01 \x01(\x0b\x32\x15.lnrpc.ChannelBackups\x12\x31\n\x11multi_chan_backup\x18\x02 \x01(\x0b\x32\x16.lnrpc.MultiChanBackup"<\n\x0e\x43hannelBackups\x12*\n\x0c\x63han_backups\x18\x01 \x03(\x0b\x32\x14.lnrpc.ChannelBackup"p\n\x18RestoreChanBackupRequest\x12-\n\x0c\x63han_backups\x18\x01 \x01(\x0b\x32\x15.lnrpc.ChannelBackupsH\x00\x12\x1b\n\x11multi_chan_backup\x18\x02 \x01(\x0cH\x00\x42\x08\n\x06\x62\x61\x63kup"\x17\n\x15RestoreBackupResponse"\x1b\n\x19\x43hannelBackupSubscription"\x1a\n\x18VerifyChanBackupResponse"4\n\x12MacaroonPermission\x12\x0e\n\x06\x65ntity\x18\x01 \x01(\t\x12\x0e\n\x06\x61\x63tion\x18\x02 \x01(\t"~\n\x13\x42\x61keMacaroonRequest\x12.\n\x0bpermissions\x18\x01 \x03(\x0b\x32\x19.lnrpc.MacaroonPermission\x12\x13\n\x0broot_key_id\x18\x02 \x01(\x04\x12"\n\x1a\x61llow_external_permissions\x18\x03 \x01(\x08"(\n\x14\x42\x61keMacaroonResponse\x12\x10\n\x08macaroon\x18\x01 \x01(\t"\x18\n\x16ListMacaroonIDsRequest"/\n\x17ListMacaroonIDsResponse\x12\x14\n\x0croot_key_ids\x18\x01 \x03(\x04".\n\x17\x44\x65leteMacaroonIDRequest\x12\x13\n\x0broot_key_id\x18\x01 \x01(\x04"+\n\x18\x44\x65leteMacaroonIDResponse\x12\x0f\n\x07\x64\x65leted\x18\x01 \x01(\x08"H\n\x16MacaroonPermissionList\x12.\n\x0bpermissions\x18\x01 \x03(\x0b\x32\x19.lnrpc.MacaroonPermission"\x18\n\x16ListPermissionsRequest"\xc5\x01\n\x17ListPermissionsResponse\x12Q\n\x12method_permissions\x18\x01 \x03(\x0b\x32\x35.lnrpc.ListPermissionsResponse.MethodPermissionsEntry\x1aW\n\x16MethodPermissionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.lnrpc.MacaroonPermissionList:\x02\x38\x01"\xd5\x07\n\x07\x46\x61ilure\x12(\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x1a.lnrpc.Failure.FailureCode\x12,\n\x0e\x63hannel_update\x18\x03 \x01(\x0b\x32\x14.lnrpc.ChannelUpdate\x12\x11\n\thtlc_msat\x18\x04 \x01(\x04\x12\x15\n\ronion_sha_256\x18\x05 \x01(\x0c\x12\x13\n\x0b\x63ltv_expiry\x18\x06 \x01(\r\x12\r\n\x05\x66lags\x18\x07 \x01(\r\x12\x1c\n\x14\x66\x61ilure_source_index\x18\x08 \x01(\r\x12\x0e\n\x06height\x18\t \x01(\r"\xef\x05\n\x0b\x46\x61ilureCode\x12\x0c\n\x08RESERVED\x10\x00\x12(\n$INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS\x10\x01\x12\x1c\n\x18INCORRECT_PAYMENT_AMOUNT\x10\x02\x12\x1f\n\x1b\x46INAL_INCORRECT_CLTV_EXPIRY\x10\x03\x12\x1f\n\x1b\x46INAL_INCORRECT_HTLC_AMOUNT\x10\x04\x12\x19\n\x15\x46INAL_EXPIRY_TOO_SOON\x10\x05\x12\x11\n\rINVALID_REALM\x10\x06\x12\x13\n\x0f\x45XPIRY_TOO_SOON\x10\x07\x12\x19\n\x15INVALID_ONION_VERSION\x10\x08\x12\x16\n\x12INVALID_ONION_HMAC\x10\t\x12\x15\n\x11INVALID_ONION_KEY\x10\n\x12\x18\n\x14\x41MOUNT_BELOW_MINIMUM\x10\x0b\x12\x14\n\x10\x46\x45\x45_INSUFFICIENT\x10\x0c\x12\x19\n\x15INCORRECT_CLTV_EXPIRY\x10\r\x12\x14\n\x10\x43HANNEL_DISABLED\x10\x0e\x12\x1d\n\x19TEMPORARY_CHANNEL_FAILURE\x10\x0f\x12!\n\x1dREQUIRED_NODE_FEATURE_MISSING\x10\x10\x12$\n REQUIRED_CHANNEL_FEATURE_MISSING\x10\x11\x12\x15\n\x11UNKNOWN_NEXT_PEER\x10\x12\x12\x1a\n\x16TEMPORARY_NODE_FAILURE\x10\x13\x12\x1a\n\x16PERMANENT_NODE_FAILURE\x10\x14\x12\x1d\n\x19PERMANENT_CHANNEL_FAILURE\x10\x15\x12\x12\n\x0e\x45XPIRY_TOO_FAR\x10\x16\x12\x0f\n\x0bMPP_TIMEOUT\x10\x17\x12\x19\n\x15INVALID_ONION_PAYLOAD\x10\x18\x12\x15\n\x10INTERNAL_FAILURE\x10\xe5\x07\x12\x14\n\x0fUNKNOWN_FAILURE\x10\xe6\x07\x12\x17\n\x12UNREADABLE_FAILURE\x10\xe7\x07J\x04\x08\x02\x10\x03"\x9a\x02\n\rChannelUpdate\x12\x11\n\tsignature\x18\x01 \x01(\x0c\x12\x12\n\nchain_hash\x18\x02 \x01(\x0c\x12\x13\n\x07\x63han_id\x18\x03 \x01(\x04\x42\x02\x30\x01\x12\x11\n\ttimestamp\x18\x04 \x01(\r\x12\x15\n\rmessage_flags\x18\n \x01(\r\x12\x15\n\rchannel_flags\x18\x05 \x01(\r\x12\x17\n\x0ftime_lock_delta\x18\x06 \x01(\r\x12\x19\n\x11htlc_minimum_msat\x18\x07 \x01(\x04\x12\x10\n\x08\x62\x61se_fee\x18\x08 \x01(\r\x12\x10\n\x08\x66\x65\x65_rate\x18\t \x01(\r\x12\x19\n\x11htlc_maximum_msat\x18\x0b \x01(\x04\x12\x19\n\x11\x65xtra_opaque_data\x18\x0c \x01(\x0c"F\n\nMacaroonId\x12\r\n\x05nonce\x18\x01 \x01(\x0c\x12\x11\n\tstorageId\x18\x02 \x01(\x0c\x12\x16\n\x03ops\x18\x03 \x03(\x0b\x32\t.lnrpc.Op"%\n\x02Op\x12\x0e\n\x06\x65ntity\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x63tions\x18\x02 \x03(\t"k\n\x13\x43heckMacPermRequest\x12\x10\n\x08macaroon\x18\x01 \x01(\x0c\x12.\n\x0bpermissions\x18\x02 \x03(\x0b\x32\x19.lnrpc.MacaroonPermission\x12\x12\n\nfullMethod\x18\x03 \x01(\t"%\n\x14\x43heckMacPermResponse\x12\r\n\x05valid\x18\x01 \x01(\x08"\x92\x02\n\x14RPCMiddlewareRequest\x12\x12\n\nrequest_id\x18\x01 \x01(\x04\x12\x14\n\x0craw_macaroon\x18\x02 \x01(\x0c\x12\x1f\n\x17\x63ustom_caveat_condition\x18\x03 \x01(\t\x12(\n\x0bstream_auth\x18\x04 \x01(\x0b\x32\x11.lnrpc.StreamAuthH\x00\x12$\n\x07request\x18\x05 \x01(\x0b\x32\x11.lnrpc.RPCMessageH\x00\x12%\n\x08response\x18\x06 \x01(\x0b\x32\x11.lnrpc.RPCMessageH\x00\x12\x16\n\x0creg_complete\x18\x08 \x01(\x08H\x00\x12\x0e\n\x06msg_id\x18\x07 \x01(\x04\x42\x10\n\x0eintercept_type"%\n\nStreamAuth\x12\x17\n\x0fmethod_full_uri\x18\x01 \x01(\t"r\n\nRPCMessage\x12\x17\n\x0fmethod_full_uri\x18\x01 \x01(\t\x12\x12\n\nstream_rpc\x18\x02 \x01(\x08\x12\x11\n\ttype_name\x18\x03 \x01(\t\x12\x12\n\nserialized\x18\x04 \x01(\x0c\x12\x10\n\x08is_error\x18\x05 \x01(\x08"\xa2\x01\n\x15RPCMiddlewareResponse\x12\x12\n\nref_msg_id\x18\x01 \x01(\x04\x12\x31\n\x08register\x18\x02 \x01(\x0b\x32\x1d.lnrpc.MiddlewareRegistrationH\x00\x12,\n\x08\x66\x65\x65\x64\x62\x61\x63k\x18\x03 \x01(\x0b\x32\x18.lnrpc.InterceptFeedbackH\x00\x42\x14\n\x12middleware_message"n\n\x16MiddlewareRegistration\x12\x17\n\x0fmiddleware_name\x18\x01 \x01(\t\x12#\n\x1b\x63ustom_macaroon_caveat_name\x18\x02 \x01(\t\x12\x16\n\x0eread_only_mode\x18\x03 \x01(\x08"\\\n\x11InterceptFeedback\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\x18\n\x10replace_response\x18\x02 \x01(\x08\x12\x1e\n\x16replacement_serialized\x18\x03 \x01(\x0c*\xcb\x02\n\x10OutputScriptType\x12\x1b\n\x17SCRIPT_TYPE_PUBKEY_HASH\x10\x00\x12\x1b\n\x17SCRIPT_TYPE_SCRIPT_HASH\x10\x01\x12&\n"SCRIPT_TYPE_WITNESS_V0_PUBKEY_HASH\x10\x02\x12&\n"SCRIPT_TYPE_WITNESS_V0_SCRIPT_HASH\x10\x03\x12\x16\n\x12SCRIPT_TYPE_PUBKEY\x10\x04\x12\x18\n\x14SCRIPT_TYPE_MULTISIG\x10\x05\x12\x18\n\x14SCRIPT_TYPE_NULLDATA\x10\x06\x12\x1c\n\x18SCRIPT_TYPE_NON_STANDARD\x10\x07\x12\x1f\n\x1bSCRIPT_TYPE_WITNESS_UNKNOWN\x10\x08\x12"\n\x1eSCRIPT_TYPE_WITNESS_V1_TAPROOT\x10\t*\xac\x01\n\x0b\x41\x64\x64ressType\x12\x17\n\x13WITNESS_PUBKEY_HASH\x10\x00\x12\x16\n\x12NESTED_PUBKEY_HASH\x10\x01\x12\x1e\n\x1aUNUSED_WITNESS_PUBKEY_HASH\x10\x02\x12\x1d\n\x19UNUSED_NESTED_PUBKEY_HASH\x10\x03\x12\x12\n\x0eTAPROOT_PUBKEY\x10\x04\x12\x19\n\x15UNUSED_TAPROOT_PUBKEY\x10\x05*x\n\x0e\x43ommitmentType\x12\x1b\n\x17UNKNOWN_COMMITMENT_TYPE\x10\x00\x12\n\n\x06LEGACY\x10\x01\x12\x15\n\x11STATIC_REMOTE_KEY\x10\x02\x12\x0b\n\x07\x41NCHORS\x10\x03\x12\x19\n\x15SCRIPT_ENFORCED_LEASE\x10\x04*a\n\tInitiator\x12\x15\n\x11INITIATOR_UNKNOWN\x10\x00\x12\x13\n\x0fINITIATOR_LOCAL\x10\x01\x12\x14\n\x10INITIATOR_REMOTE\x10\x02\x12\x12\n\x0eINITIATOR_BOTH\x10\x03*`\n\x0eResolutionType\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\n\n\x06\x41NCHOR\x10\x01\x12\x11\n\rINCOMING_HTLC\x10\x02\x12\x11\n\rOUTGOING_HTLC\x10\x03\x12\n\n\x06\x43OMMIT\x10\x04*q\n\x11ResolutionOutcome\x12\x13\n\x0fOUTCOME_UNKNOWN\x10\x00\x12\x0b\n\x07\x43LAIMED\x10\x01\x12\r\n\tUNCLAIMED\x10\x02\x12\r\n\tABANDONED\x10\x03\x12\x0f\n\x0b\x46IRST_STAGE\x10\x04\x12\x0b\n\x07TIMEOUT\x10\x05*9\n\x0eNodeMetricType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x1a\n\x16\x42\x45TWEENNESS_CENTRALITY\x10\x01*;\n\x10InvoiceHTLCState\x12\x0c\n\x08\x41\x43\x43\x45PTED\x10\x00\x12\x0b\n\x07SETTLED\x10\x01\x12\x0c\n\x08\x43\x41NCELED\x10\x02*\xd9\x01\n\x14PaymentFailureReason\x12\x17\n\x13\x46\x41ILURE_REASON_NONE\x10\x00\x12\x1a\n\x16\x46\x41ILURE_REASON_TIMEOUT\x10\x01\x12\x1b\n\x17\x46\x41ILURE_REASON_NO_ROUTE\x10\x02\x12\x18\n\x14\x46\x41ILURE_REASON_ERROR\x10\x03\x12,\n(FAILURE_REASON_INCORRECT_PAYMENT_DETAILS\x10\x04\x12\'\n#FAILURE_REASON_INSUFFICIENT_BALANCE\x10\x05*\xcf\x04\n\nFeatureBit\x12\x18\n\x14\x44\x41TALOSS_PROTECT_REQ\x10\x00\x12\x18\n\x14\x44\x41TALOSS_PROTECT_OPT\x10\x01\x12\x17\n\x13INITIAL_ROUING_SYNC\x10\x03\x12\x1f\n\x1bUPFRONT_SHUTDOWN_SCRIPT_REQ\x10\x04\x12\x1f\n\x1bUPFRONT_SHUTDOWN_SCRIPT_OPT\x10\x05\x12\x16\n\x12GOSSIP_QUERIES_REQ\x10\x06\x12\x16\n\x12GOSSIP_QUERIES_OPT\x10\x07\x12\x11\n\rTLV_ONION_REQ\x10\x08\x12\x11\n\rTLV_ONION_OPT\x10\t\x12\x1a\n\x16\x45XT_GOSSIP_QUERIES_REQ\x10\n\x12\x1a\n\x16\x45XT_GOSSIP_QUERIES_OPT\x10\x0b\x12\x19\n\x15STATIC_REMOTE_KEY_REQ\x10\x0c\x12\x19\n\x15STATIC_REMOTE_KEY_OPT\x10\r\x12\x14\n\x10PAYMENT_ADDR_REQ\x10\x0e\x12\x14\n\x10PAYMENT_ADDR_OPT\x10\x0f\x12\x0b\n\x07MPP_REQ\x10\x10\x12\x0b\n\x07MPP_OPT\x10\x11\x12\x16\n\x12WUMBO_CHANNELS_REQ\x10\x12\x12\x16\n\x12WUMBO_CHANNELS_OPT\x10\x13\x12\x0f\n\x0b\x41NCHORS_REQ\x10\x14\x12\x0f\n\x0b\x41NCHORS_OPT\x10\x15\x12\x1d\n\x19\x41NCHORS_ZERO_FEE_HTLC_REQ\x10\x16\x12\x1d\n\x19\x41NCHORS_ZERO_FEE_HTLC_OPT\x10\x17\x12\x0b\n\x07\x41MP_REQ\x10\x1e\x12\x0b\n\x07\x41MP_OPT\x10\x1f*\xac\x01\n\rUpdateFailure\x12\x1a\n\x16UPDATE_FAILURE_UNKNOWN\x10\x00\x12\x1a\n\x16UPDATE_FAILURE_PENDING\x10\x01\x12\x1c\n\x18UPDATE_FAILURE_NOT_FOUND\x10\x02\x12\x1f\n\x1bUPDATE_FAILURE_INTERNAL_ERR\x10\x03\x12$\n UPDATE_FAILURE_INVALID_PARAMETER\x10\x04\x32\xf0&\n\tLightning\x12J\n\rWalletBalance\x12\x1b.lnrpc.WalletBalanceRequest\x1a\x1c.lnrpc.WalletBalanceResponse\x12M\n\x0e\x43hannelBalance\x12\x1c.lnrpc.ChannelBalanceRequest\x1a\x1d.lnrpc.ChannelBalanceResponse\x12K\n\x0fGetTransactions\x12\x1d.lnrpc.GetTransactionsRequest\x1a\x19.lnrpc.TransactionDetails\x12\x44\n\x0b\x45stimateFee\x12\x19.lnrpc.EstimateFeeRequest\x1a\x1a.lnrpc.EstimateFeeResponse\x12>\n\tSendCoins\x12\x17.lnrpc.SendCoinsRequest\x1a\x18.lnrpc.SendCoinsResponse\x12\x44\n\x0bListUnspent\x12\x19.lnrpc.ListUnspentRequest\x1a\x1a.lnrpc.ListUnspentResponse\x12L\n\x15SubscribeTransactions\x12\x1d.lnrpc.GetTransactionsRequest\x1a\x12.lnrpc.Transaction0\x01\x12;\n\x08SendMany\x12\x16.lnrpc.SendManyRequest\x1a\x17.lnrpc.SendManyResponse\x12\x41\n\nNewAddress\x12\x18.lnrpc.NewAddressRequest\x1a\x19.lnrpc.NewAddressResponse\x12\x44\n\x0bSignMessage\x12\x19.lnrpc.SignMessageRequest\x1a\x1a.lnrpc.SignMessageResponse\x12J\n\rVerifyMessage\x12\x1b.lnrpc.VerifyMessageRequest\x1a\x1c.lnrpc.VerifyMessageResponse\x12\x44\n\x0b\x43onnectPeer\x12\x19.lnrpc.ConnectPeerRequest\x1a\x1a.lnrpc.ConnectPeerResponse\x12M\n\x0e\x44isconnectPeer\x12\x1c.lnrpc.DisconnectPeerRequest\x1a\x1d.lnrpc.DisconnectPeerResponse\x12>\n\tListPeers\x12\x17.lnrpc.ListPeersRequest\x1a\x18.lnrpc.ListPeersResponse\x12G\n\x13SubscribePeerEvents\x12\x1c.lnrpc.PeerEventSubscription\x1a\x10.lnrpc.PeerEvent0\x01\x12\x38\n\x07GetInfo\x12\x15.lnrpc.GetInfoRequest\x1a\x16.lnrpc.GetInfoResponse\x12P\n\x0fGetRecoveryInfo\x12\x1d.lnrpc.GetRecoveryInfoRequest\x1a\x1e.lnrpc.GetRecoveryInfoResponse\x12P\n\x0fPendingChannels\x12\x1d.lnrpc.PendingChannelsRequest\x1a\x1e.lnrpc.PendingChannelsResponse\x12G\n\x0cListChannels\x12\x1a.lnrpc.ListChannelsRequest\x1a\x1b.lnrpc.ListChannelsResponse\x12V\n\x16SubscribeChannelEvents\x12\x1f.lnrpc.ChannelEventSubscription\x1a\x19.lnrpc.ChannelEventUpdate0\x01\x12M\n\x0e\x43losedChannels\x12\x1c.lnrpc.ClosedChannelsRequest\x1a\x1d.lnrpc.ClosedChannelsResponse\x12\x41\n\x0fOpenChannelSync\x12\x19.lnrpc.OpenChannelRequest\x1a\x13.lnrpc.ChannelPoint\x12\x43\n\x0bOpenChannel\x12\x19.lnrpc.OpenChannelRequest\x1a\x17.lnrpc.OpenStatusUpdate0\x01\x12S\n\x10\x42\x61tchOpenChannel\x12\x1e.lnrpc.BatchOpenChannelRequest\x1a\x1f.lnrpc.BatchOpenChannelResponse\x12L\n\x10\x46undingStateStep\x12\x1b.lnrpc.FundingTransitionMsg\x1a\x1b.lnrpc.FundingStateStepResp\x12P\n\x0f\x43hannelAcceptor\x12\x1c.lnrpc.ChannelAcceptResponse\x1a\x1b.lnrpc.ChannelAcceptRequest(\x01\x30\x01\x12\x46\n\x0c\x43loseChannel\x12\x1a.lnrpc.CloseChannelRequest\x1a\x18.lnrpc.CloseStatusUpdate0\x01\x12M\n\x0e\x41\x62\x61ndonChannel\x12\x1c.lnrpc.AbandonChannelRequest\x1a\x1d.lnrpc.AbandonChannelResponse\x12?\n\x0bSendPayment\x12\x12.lnrpc.SendRequest\x1a\x13.lnrpc.SendResponse"\x03\x88\x02\x01(\x01\x30\x01\x12:\n\x0fSendPaymentSync\x12\x12.lnrpc.SendRequest\x1a\x13.lnrpc.SendResponse\x12\x46\n\x0bSendToRoute\x12\x19.lnrpc.SendToRouteRequest\x1a\x13.lnrpc.SendResponse"\x03\x88\x02\x01(\x01\x30\x01\x12\x41\n\x0fSendToRouteSync\x12\x19.lnrpc.SendToRouteRequest\x1a\x13.lnrpc.SendResponse\x12\x37\n\nAddInvoice\x12\x0e.lnrpc.Invoice\x1a\x19.lnrpc.AddInvoiceResponse\x12\x45\n\x0cListInvoices\x12\x19.lnrpc.ListInvoiceRequest\x1a\x1a.lnrpc.ListInvoiceResponse\x12\x33\n\rLookupInvoice\x12\x12.lnrpc.PaymentHash\x1a\x0e.lnrpc.Invoice\x12\x41\n\x11SubscribeInvoices\x12\x1a.lnrpc.InvoiceSubscription\x1a\x0e.lnrpc.Invoice0\x01\x12\x32\n\x0c\x44\x65\x63odePayReq\x12\x13.lnrpc.PayReqString\x1a\r.lnrpc.PayReq\x12G\n\x0cListPayments\x12\x1a.lnrpc.ListPaymentsRequest\x1a\x1b.lnrpc.ListPaymentsResponse\x12J\n\rDeletePayment\x12\x1b.lnrpc.DeletePaymentRequest\x1a\x1c.lnrpc.DeletePaymentResponse\x12V\n\x11\x44\x65leteAllPayments\x12\x1f.lnrpc.DeleteAllPaymentsRequest\x1a .lnrpc.DeleteAllPaymentsResponse\x12@\n\rDescribeGraph\x12\x1a.lnrpc.ChannelGraphRequest\x1a\x13.lnrpc.ChannelGraph\x12G\n\x0eGetNodeMetrics\x12\x19.lnrpc.NodeMetricsRequest\x1a\x1a.lnrpc.NodeMetricsResponse\x12\x39\n\x0bGetChanInfo\x12\x16.lnrpc.ChanInfoRequest\x1a\x12.lnrpc.ChannelEdge\x12\x36\n\x0bGetNodeInfo\x12\x16.lnrpc.NodeInfoRequest\x1a\x0f.lnrpc.NodeInfo\x12\x44\n\x0bQueryRoutes\x12\x19.lnrpc.QueryRoutesRequest\x1a\x1a.lnrpc.QueryRoutesResponse\x12?\n\x0eGetNetworkInfo\x12\x19.lnrpc.NetworkInfoRequest\x1a\x12.lnrpc.NetworkInfo\x12\x35\n\nStopDaemon\x12\x12.lnrpc.StopRequest\x1a\x13.lnrpc.StopResponse\x12W\n\x15SubscribeChannelGraph\x12 .lnrpc.GraphTopologySubscription\x1a\x1a.lnrpc.GraphTopologyUpdate0\x01\x12\x41\n\nDebugLevel\x12\x18.lnrpc.DebugLevelRequest\x1a\x19.lnrpc.DebugLevelResponse\x12>\n\tFeeReport\x12\x17.lnrpc.FeeReportRequest\x1a\x18.lnrpc.FeeReportResponse\x12N\n\x13UpdateChannelPolicy\x12\x1a.lnrpc.PolicyUpdateRequest\x1a\x1b.lnrpc.PolicyUpdateResponse\x12V\n\x11\x46orwardingHistory\x12\x1f.lnrpc.ForwardingHistoryRequest\x1a .lnrpc.ForwardingHistoryResponse\x12N\n\x13\x45xportChannelBackup\x12!.lnrpc.ExportChannelBackupRequest\x1a\x14.lnrpc.ChannelBackup\x12T\n\x17\x45xportAllChannelBackups\x12\x1e.lnrpc.ChanBackupExportRequest\x1a\x19.lnrpc.ChanBackupSnapshot\x12N\n\x10VerifyChanBackup\x12\x19.lnrpc.ChanBackupSnapshot\x1a\x1f.lnrpc.VerifyChanBackupResponse\x12V\n\x15RestoreChannelBackups\x12\x1f.lnrpc.RestoreChanBackupRequest\x1a\x1c.lnrpc.RestoreBackupResponse\x12X\n\x17SubscribeChannelBackups\x12 .lnrpc.ChannelBackupSubscription\x1a\x19.lnrpc.ChanBackupSnapshot0\x01\x12G\n\x0c\x42\x61keMacaroon\x12\x1a.lnrpc.BakeMacaroonRequest\x1a\x1b.lnrpc.BakeMacaroonResponse\x12P\n\x0fListMacaroonIDs\x12\x1d.lnrpc.ListMacaroonIDsRequest\x1a\x1e.lnrpc.ListMacaroonIDsResponse\x12S\n\x10\x44\x65leteMacaroonID\x12\x1e.lnrpc.DeleteMacaroonIDRequest\x1a\x1f.lnrpc.DeleteMacaroonIDResponse\x12P\n\x0fListPermissions\x12\x1d.lnrpc.ListPermissionsRequest\x1a\x1e.lnrpc.ListPermissionsResponse\x12S\n\x18\x43heckMacaroonPermissions\x12\x1a.lnrpc.CheckMacPermRequest\x1a\x1b.lnrpc.CheckMacPermResponse\x12V\n\x15RegisterRPCMiddleware\x12\x1c.lnrpc.RPCMiddlewareResponse\x1a\x1b.lnrpc.RPCMiddlewareRequest(\x01\x30\x01\x12V\n\x11SendCustomMessage\x12\x1f.lnrpc.SendCustomMessageRequest\x1a .lnrpc.SendCustomMessageResponse\x12X\n\x17SubscribeCustomMessages\x12%.lnrpc.SubscribeCustomMessagesRequest\x1a\x14.lnrpc.CustomMessage0\x01\x12\x44\n\x0bListAliases\x12\x19.lnrpc.ListAliasesRequest\x1a\x1a.lnrpc.ListAliasesResponse\x12_\n\x14LookupHtlcResolution\x12".lnrpc.LookupHtlcResolutionRequest\x1a#.lnrpc.LookupHtlcResolutionResponseB\'Z%github.com/lightningnetwork/lnd/lnrpcb\x06proto3' ) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) @@ -57,6 +57,8 @@ _CHANNEL.fields_by_name["remote_chan_reserve_sat"]._serialized_options = b"\030\001" _CHANNEL.fields_by_name["static_remote_key"]._options = None _CHANNEL.fields_by_name["static_remote_key"]._serialized_options = b"\030\001" + _CHANNEL.fields_by_name["peer_scid_alias"]._options = None + _CHANNEL.fields_by_name["peer_scid_alias"]._serialized_options = b"0\001" _CHANNELCLOSESUMMARY.fields_by_name["chan_id"]._options = None _CHANNELCLOSESUMMARY.fields_by_name["chan_id"]._serialized_options = b"0\001" _CHANNELCLOSESUMMARY.fields_by_name["zero_conf_confirmed_scid"]._options = None @@ -121,6 +123,12 @@ _ROUTE.fields_by_name["total_amt"]._serialized_options = b"\030\001" _LIGHTNINGNODE_FEATURESENTRY._options = None _LIGHTNINGNODE_FEATURESENTRY._serialized_options = b"8\001" + _LIGHTNINGNODE_CUSTOMRECORDSENTRY._options = None + _LIGHTNINGNODE_CUSTOMRECORDSENTRY._serialized_options = b"8\001" + _ROUTINGPOLICY_CUSTOMRECORDSENTRY._options = None + _ROUTINGPOLICY_CUSTOMRECORDSENTRY._serialized_options = b"8\001" + _CHANNELEDGE_CUSTOMRECORDSENTRY._options = None + _CHANNELEDGE_CUSTOMRECORDSENTRY._serialized_options = b"8\001" _CHANNELEDGE.fields_by_name["channel_id"]._options = None _CHANNELEDGE.fields_by_name["channel_id"]._serialized_options = b"0\001" _CHANNELEDGE.fields_by_name["last_update"]._options = None @@ -179,470 +187,480 @@ _LIGHTNING.methods_by_name["SendPayment"]._serialized_options = b"\210\002\001" _LIGHTNING.methods_by_name["SendToRoute"]._options = None _LIGHTNING.methods_by_name["SendToRoute"]._serialized_options = b"\210\002\001" - _OUTPUTSCRIPTTYPE._serialized_start = 27683 - _OUTPUTSCRIPTTYPE._serialized_end = 27978 - _ADDRESSTYPE._serialized_start = 27981 - _ADDRESSTYPE._serialized_end = 28153 - _COMMITMENTTYPE._serialized_start = 28155 - _COMMITMENTTYPE._serialized_end = 28275 - _INITIATOR._serialized_start = 28277 - _INITIATOR._serialized_end = 28374 - _RESOLUTIONTYPE._serialized_start = 28376 - _RESOLUTIONTYPE._serialized_end = 28472 - _RESOLUTIONOUTCOME._serialized_start = 28474 - _RESOLUTIONOUTCOME._serialized_end = 28587 - _NODEMETRICTYPE._serialized_start = 28589 - _NODEMETRICTYPE._serialized_end = 28646 - _INVOICEHTLCSTATE._serialized_start = 28648 - _INVOICEHTLCSTATE._serialized_end = 28707 - _PAYMENTFAILUREREASON._serialized_start = 28710 - _PAYMENTFAILUREREASON._serialized_end = 28927 - _FEATUREBIT._serialized_start = 28930 - _FEATUREBIT._serialized_end = 29521 - _UPDATEFAILURE._serialized_start = 29524 - _UPDATEFAILURE._serialized_end = 29696 - _SUBSCRIBECUSTOMMESSAGESREQUEST._serialized_start = 26 - _SUBSCRIBECUSTOMMESSAGESREQUEST._serialized_end = 58 - _CUSTOMMESSAGE._serialized_start = 60 - _CUSTOMMESSAGE._serialized_end = 117 - _SENDCUSTOMMESSAGEREQUEST._serialized_start = 119 - _SENDCUSTOMMESSAGEREQUEST._serialized_end = 187 - _SENDCUSTOMMESSAGERESPONSE._serialized_start = 189 - _SENDCUSTOMMESSAGERESPONSE._serialized_end = 216 - _UTXO._serialized_start = 219 - _UTXO._serialized_end = 381 - _OUTPUTDETAIL._serialized_start = 384 - _OUTPUTDETAIL._serialized_end = 542 - _TRANSACTION._serialized_start = 545 - _TRANSACTION._serialized_end = 861 - _GETTRANSACTIONSREQUEST._serialized_start = 863 - _GETTRANSACTIONSREQUEST._serialized_end = 946 - _TRANSACTIONDETAILS._serialized_start = 948 - _TRANSACTIONDETAILS._serialized_end = 1010 - _FEELIMIT._serialized_start = 1012 - _FEELIMIT._serialized_end = 1089 - _SENDREQUEST._serialized_start = 1092 - _SENDREQUEST._serialized_end = 1614 - _SENDREQUEST_DESTCUSTOMRECORDSENTRY._serialized_start = 1558 - _SENDREQUEST_DESTCUSTOMRECORDSENTRY._serialized_end = 1614 - _SENDRESPONSE._serialized_start = 1616 - _SENDRESPONSE._serialized_end = 1738 - _SENDTOROUTEREQUEST._serialized_start = 1740 - _SENDTOROUTEREQUEST._serialized_end = 1850 - _CHANNELACCEPTREQUEST._serialized_start = 1853 - _CHANNELACCEPTREQUEST._serialized_end = 2261 - _CHANNELACCEPTRESPONSE._serialized_start = 2264 - _CHANNELACCEPTRESPONSE._serialized_end = 2527 - _CHANNELPOINT._serialized_start = 2529 - _CHANNELPOINT._serialized_end = 2639 - _OUTPOINT._serialized_start = 2641 - _OUTPOINT._serialized_end = 2711 - _PREVIOUSOUTPOINT._serialized_start = 2713 - _PREVIOUSOUTPOINT._serialized_end = 2772 - _LIGHTNINGADDRESS._serialized_start = 2774 - _LIGHTNINGADDRESS._serialized_end = 2822 - _ESTIMATEFEEREQUEST._serialized_start = 2825 - _ESTIMATEFEEREQUEST._serialized_end = 3032 - _ESTIMATEFEEREQUEST_ADDRTOAMOUNTENTRY._serialized_start = 2981 - _ESTIMATEFEEREQUEST_ADDRTOAMOUNTENTRY._serialized_end = 3032 - _ESTIMATEFEERESPONSE._serialized_start = 3034 - _ESTIMATEFEERESPONSE._serialized_end = 3129 - _SENDMANYREQUEST._serialized_start = 3132 - _SENDMANYREQUEST._serialized_end = 3397 - _SENDMANYREQUEST_ADDRTOAMOUNTENTRY._serialized_start = 2981 - _SENDMANYREQUEST_ADDRTOAMOUNTENTRY._serialized_end = 3032 - _SENDMANYRESPONSE._serialized_start = 3399 - _SENDMANYRESPONSE._serialized_end = 3431 - _SENDCOINSREQUEST._serialized_start = 3434 - _SENDCOINSREQUEST._serialized_end = 3631 - _SENDCOINSRESPONSE._serialized_start = 3633 - _SENDCOINSRESPONSE._serialized_end = 3666 - _LISTUNSPENTREQUEST._serialized_start = 3668 - _LISTUNSPENTREQUEST._serialized_end = 3743 - _LISTUNSPENTRESPONSE._serialized_start = 3745 - _LISTUNSPENTRESPONSE._serialized_end = 3794 - _NEWADDRESSREQUEST._serialized_start = 3796 - _NEWADDRESSREQUEST._serialized_end = 3866 - _NEWADDRESSRESPONSE._serialized_start = 3868 - _NEWADDRESSRESPONSE._serialized_end = 3905 - _SIGNMESSAGEREQUEST._serialized_start = 3907 - _SIGNMESSAGEREQUEST._serialized_end = 3961 - _SIGNMESSAGERESPONSE._serialized_start = 3963 - _SIGNMESSAGERESPONSE._serialized_end = 4003 - _VERIFYMESSAGEREQUEST._serialized_start = 4005 - _VERIFYMESSAGEREQUEST._serialized_end = 4059 - _VERIFYMESSAGERESPONSE._serialized_start = 4061 - _VERIFYMESSAGERESPONSE._serialized_end = 4115 - _CONNECTPEERREQUEST._serialized_start = 4117 - _CONNECTPEERREQUEST._serialized_end = 4207 - _CONNECTPEERRESPONSE._serialized_start = 4209 - _CONNECTPEERRESPONSE._serialized_end = 4230 - _DISCONNECTPEERREQUEST._serialized_start = 4232 - _DISCONNECTPEERREQUEST._serialized_end = 4272 - _DISCONNECTPEERRESPONSE._serialized_start = 4274 - _DISCONNECTPEERRESPONSE._serialized_end = 4298 - _HTLC._serialized_start = 4301 - _HTLC._serialized_end = 4466 - _CHANNELCONSTRAINTS._serialized_start = 4469 - _CHANNELCONSTRAINTS._serialized_end = 4639 - _CHANNEL._serialized_start = 4642 - _CHANNEL._serialized_end = 5532 - _LISTCHANNELSREQUEST._serialized_start = 5534 - _LISTCHANNELSREQUEST._serialized_end = 5656 - _LISTCHANNELSRESPONSE._serialized_start = 5658 - _LISTCHANNELSRESPONSE._serialized_end = 5714 - _ALIASMAP._serialized_start = 5716 - _ALIASMAP._serialized_end = 5762 - _LISTALIASESREQUEST._serialized_start = 5764 - _LISTALIASESREQUEST._serialized_end = 5784 - _LISTALIASESRESPONSE._serialized_start = 5786 - _LISTALIASESRESPONSE._serialized_end = 5844 - _CHANNELCLOSESUMMARY._serialized_start = 5847 - _CHANNELCLOSESUMMARY._serialized_end = 6459 - _CHANNELCLOSESUMMARY_CLOSURETYPE._serialized_start = 6321 - _CHANNELCLOSESUMMARY_CLOSURETYPE._serialized_end = 6459 - _RESOLUTION._serialized_start = 6462 - _RESOLUTION._serialized_end = 6640 - _CLOSEDCHANNELSREQUEST._serialized_start = 6643 - _CLOSEDCHANNELSREQUEST._serialized_end = 6791 - _CLOSEDCHANNELSRESPONSE._serialized_start = 6793 - _CLOSEDCHANNELSRESPONSE._serialized_end = 6863 - _PEER._serialized_start = 6866 - _PEER._serialized_end = 7361 - _PEER_FEATURESENTRY._serialized_start = 7216 - _PEER_FEATURESENTRY._serialized_end = 7279 - _PEER_SYNCTYPE._serialized_start = 7281 - _PEER_SYNCTYPE._serialized_end = 7361 - _TIMESTAMPEDERROR._serialized_start = 7363 - _TIMESTAMPEDERROR._serialized_end = 7415 - _LISTPEERSREQUEST._serialized_start = 7417 - _LISTPEERSREQUEST._serialized_end = 7457 - _LISTPEERSRESPONSE._serialized_start = 7459 - _LISTPEERSRESPONSE._serialized_end = 7506 - _PEEREVENTSUBSCRIPTION._serialized_start = 7508 - _PEEREVENTSUBSCRIPTION._serialized_end = 7531 - _PEEREVENT._serialized_start = 7533 - _PEEREVENT._serialized_end = 7651 - _PEEREVENT_EVENTTYPE._serialized_start = 7605 - _PEEREVENT_EVENTTYPE._serialized_end = 7651 - _GETINFOREQUEST._serialized_start = 7653 - _GETINFOREQUEST._serialized_end = 7669 - _GETINFORESPONSE._serialized_start = 7672 - _GETINFORESPONSE._serialized_end = 8240 - _GETINFORESPONSE_FEATURESENTRY._serialized_start = 7216 - _GETINFORESPONSE_FEATURESENTRY._serialized_end = 7279 - _GETRECOVERYINFOREQUEST._serialized_start = 8242 - _GETRECOVERYINFOREQUEST._serialized_end = 8266 - _GETRECOVERYINFORESPONSE._serialized_start = 8268 - _GETRECOVERYINFORESPONSE._serialized_end = 8361 - _CHAIN._serialized_start = 8363 - _CHAIN._serialized_end = 8402 - _CONFIRMATIONUPDATE._serialized_start = 8404 - _CONFIRMATIONUPDATE._serialized_end = 8489 - _CHANNELOPENUPDATE._serialized_start = 8491 - _CHANNELOPENUPDATE._serialized_end = 8554 - _CHANNELCLOSEUPDATE._serialized_start = 8556 - _CHANNELCLOSEUPDATE._serialized_end = 8615 - _CLOSECHANNELREQUEST._serialized_start = 8618 - _CLOSECHANNELREQUEST._serialized_end = 8821 - _CLOSESTATUSUPDATE._serialized_start = 8823 - _CLOSESTATUSUPDATE._serialized_end = 8948 - _PENDINGUPDATE._serialized_start = 8950 - _PENDINGUPDATE._serialized_end = 9001 - _READYFORPSBTFUNDING._serialized_start = 9003 - _READYFORPSBTFUNDING._serialized_end = 9087 - _BATCHOPENCHANNELREQUEST._serialized_start = 9090 - _BATCHOPENCHANNELREQUEST._serialized_end = 9263 - _BATCHOPENCHANNEL._serialized_start = 9266 - _BATCHOPENCHANNEL._serialized_end = 9515 - _BATCHOPENCHANNELRESPONSE._serialized_start = 9517 - _BATCHOPENCHANNELRESPONSE._serialized_end = 9591 - _OPENCHANNELREQUEST._serialized_start = 9594 - _OPENCHANNELREQUEST._serialized_end = 10139 - _OPENSTATUSUPDATE._serialized_start = 10142 - _OPENSTATUSUPDATE._serialized_end = 10337 - _KEYLOCATOR._serialized_start = 10339 - _KEYLOCATOR._serialized_end = 10390 - _KEYDESCRIPTOR._serialized_start = 10392 - _KEYDESCRIPTOR._serialized_end = 10466 - _CHANPOINTSHIM._serialized_start = 10469 - _CHANPOINTSHIM._serialized_end = 10645 - _PSBTSHIM._serialized_start = 10647 - _PSBTSHIM._serialized_end = 10721 - _FUNDINGSHIM._serialized_start = 10723 - _FUNDINGSHIM._serialized_end = 10831 - _FUNDINGSHIMCANCEL._serialized_start = 10833 - _FUNDINGSHIMCANCEL._serialized_end = 10877 - _FUNDINGPSBTVERIFY._serialized_start = 10879 - _FUNDINGPSBTVERIFY._serialized_end = 10967 - _FUNDINGPSBTFINALIZE._serialized_start = 10969 - _FUNDINGPSBTFINALIZE._serialized_end = 11058 - _FUNDINGTRANSITIONMSG._serialized_start = 11061 - _FUNDINGTRANSITIONMSG._serialized_end = 11290 - _FUNDINGSTATESTEPRESP._serialized_start = 11292 - _FUNDINGSTATESTEPRESP._serialized_end = 11314 - _PENDINGHTLC._serialized_start = 11317 - _PENDINGHTLC._serialized_end = 11451 - _PENDINGCHANNELSREQUEST._serialized_start = 11453 - _PENDINGCHANNELSREQUEST._serialized_end = 11477 - _PENDINGCHANNELSRESPONSE._serialized_start = 11480 - _PENDINGCHANNELSRESPONSE._serialized_end = 13263 - _PENDINGCHANNELSRESPONSE_PENDINGCHANNEL._serialized_start = 11878 - _PENDINGCHANNELSRESPONSE_PENDINGCHANNEL._serialized_end = 12234 - _PENDINGCHANNELSRESPONSE_PENDINGOPENCHANNEL._serialized_start = 12237 - _PENDINGCHANNELSRESPONSE_PENDINGOPENCHANNEL._serialized_end = 12390 - _PENDINGCHANNELSRESPONSE_WAITINGCLOSECHANNEL._serialized_start = 12393 - _PENDINGCHANNELSRESPONSE_WAITINGCLOSECHANNEL._serialized_end = 12588 - _PENDINGCHANNELSRESPONSE_COMMITMENTS._serialized_start = 12591 - _PENDINGCHANNELSRESPONSE_COMMITMENTS._serialized_end = 12774 - _PENDINGCHANNELSRESPONSE_CLOSEDCHANNEL._serialized_start = 12776 - _PENDINGCHANNELSRESPONSE_CLOSEDCHANNEL._serialized_end = 12877 - _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL._serialized_start = 12880 - _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL._serialized_end = 13263 - _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL_ANCHORSTATE._serialized_start = 13214 - _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL_ANCHORSTATE._serialized_end = 13263 - _CHANNELEVENTSUBSCRIPTION._serialized_start = 13265 - _CHANNELEVENTSUBSCRIPTION._serialized_end = 13291 - _CHANNELEVENTUPDATE._serialized_start = 13294 - _CHANNELEVENTUPDATE._serialized_end = 13825 - _CHANNELEVENTUPDATE_UPDATETYPE._serialized_start = 13668 - _CHANNELEVENTUPDATE_UPDATETYPE._serialized_end = 13814 - _WALLETACCOUNTBALANCE._serialized_start = 13827 - _WALLETACCOUNTBALANCE._serialized_end = 13905 - _WALLETBALANCEREQUEST._serialized_start = 13907 - _WALLETBALANCEREQUEST._serialized_end = 13929 - _WALLETBALANCERESPONSE._serialized_start = 13932 - _WALLETBALANCERESPONSE._serialized_end = 14255 - _WALLETBALANCERESPONSE_ACCOUNTBALANCEENTRY._serialized_start = 14173 - _WALLETBALANCERESPONSE_ACCOUNTBALANCEENTRY._serialized_end = 14255 - _AMOUNT._serialized_start = 14257 - _AMOUNT._serialized_end = 14292 - _CHANNELBALANCEREQUEST._serialized_start = 14294 - _CHANNELBALANCEREQUEST._serialized_end = 14317 - _CHANNELBALANCERESPONSE._serialized_start = 14320 - _CHANNELBALANCERESPONSE._serialized_end = 14676 - _QUERYROUTESREQUEST._serialized_start = 14679 - _QUERYROUTESREQUEST._serialized_end = 15290 - _QUERYROUTESREQUEST_DESTCUSTOMRECORDSENTRY._serialized_start = 1558 - _QUERYROUTESREQUEST_DESTCUSTOMRECORDSENTRY._serialized_end = 1614 - _NODEPAIR._serialized_start = 15292 - _NODEPAIR._serialized_end = 15328 - _EDGELOCATOR._serialized_start = 15330 - _EDGELOCATOR._serialized_end = 15394 - _QUERYROUTESRESPONSE._serialized_start = 15396 - _QUERYROUTESRESPONSE._serialized_end = 15469 - _HOP._serialized_start = 15472 - _HOP._serialized_end = 15878 - _HOP_CUSTOMRECORDSENTRY._serialized_start = 15826 - _HOP_CUSTOMRECORDSENTRY._serialized_end = 15878 - _MPPRECORD._serialized_start = 15880 - _MPPRECORD._serialized_end = 15937 - _AMPRECORD._serialized_start = 15939 - _AMPRECORD._serialized_end = 16007 - _ROUTE._serialized_start = 16010 - _ROUTE._serialized_end = 16164 - _NODEINFOREQUEST._serialized_start = 16166 - _NODEINFOREQUEST._serialized_end = 16226 - _NODEINFO._serialized_start = 16229 - _NODEINFO._serialized_end = 16359 - _LIGHTNINGNODE._serialized_start = 16362 - _LIGHTNINGNODE._serialized_end = 16603 - _LIGHTNINGNODE_FEATURESENTRY._serialized_start = 7216 - _LIGHTNINGNODE_FEATURESENTRY._serialized_end = 7279 - _NODEADDRESS._serialized_start = 16605 - _NODEADDRESS._serialized_end = 16649 - _ROUTINGPOLICY._serialized_start = 16652 - _ROUTINGPOLICY._serialized_end = 16824 - _CHANNELEDGE._serialized_start = 16827 - _CHANNELEDGE._serialized_end = 17053 - _CHANNELGRAPHREQUEST._serialized_start = 17055 - _CHANNELGRAPHREQUEST._serialized_end = 17105 - _CHANNELGRAPH._serialized_start = 17107 - _CHANNELGRAPH._serialized_end = 17193 - _NODEMETRICSREQUEST._serialized_start = 17195 - _NODEMETRICSREQUEST._serialized_end = 17253 - _NODEMETRICSRESPONSE._serialized_start = 17256 - _NODEMETRICSRESPONSE._serialized_end = 17446 - _NODEMETRICSRESPONSE_BETWEENNESSCENTRALITYENTRY._serialized_start = 17366 - _NODEMETRICSRESPONSE_BETWEENNESSCENTRALITYENTRY._serialized_end = 17446 - _FLOATMETRIC._serialized_start = 17448 - _FLOATMETRIC._serialized_end = 17502 - _CHANINFOREQUEST._serialized_start = 17504 - _CHANINFOREQUEST._serialized_end = 17542 - _NETWORKINFOREQUEST._serialized_start = 17544 - _NETWORKINFOREQUEST._serialized_end = 17564 - _NETWORKINFO._serialized_start = 17567 - _NETWORKINFO._serialized_end = 17862 - _STOPREQUEST._serialized_start = 17864 - _STOPREQUEST._serialized_end = 17877 - _STOPRESPONSE._serialized_start = 17879 - _STOPRESPONSE._serialized_end = 17893 - _GRAPHTOPOLOGYSUBSCRIPTION._serialized_start = 17895 - _GRAPHTOPOLOGYSUBSCRIPTION._serialized_end = 17922 - _GRAPHTOPOLOGYUPDATE._serialized_start = 17925 - _GRAPHTOPOLOGYUPDATE._serialized_end = 18088 - _NODEUPDATE._serialized_start = 18091 - _NODEUPDATE._serialized_end = 18367 - _NODEUPDATE_FEATURESENTRY._serialized_start = 7216 - _NODEUPDATE_FEATURESENTRY._serialized_end = 7279 - _CHANNELEDGEUPDATE._serialized_start = 18370 - _CHANNELEDGEUPDATE._serialized_end = 18566 - _CLOSEDCHANNELUPDATE._serialized_start = 18568 - _CLOSEDCHANNELUPDATE._serialized_end = 18692 - _HOPHINT._serialized_start = 18695 - _HOPHINT._serialized_end = 18829 - _SETID._serialized_start = 18831 - _SETID._serialized_end = 18854 - _ROUTEHINT._serialized_start = 18856 - _ROUTEHINT._serialized_end = 18902 - _AMPINVOICESTATE._serialized_start = 18904 - _AMPINVOICESTATE._serialized_end = 19027 - _INVOICE._serialized_start = 19030 - _INVOICE._serialized_end = 19931 - _INVOICE_FEATURESENTRY._serialized_start = 7216 - _INVOICE_FEATURESENTRY._serialized_end = 7279 - _INVOICE_AMPINVOICESTATEENTRY._serialized_start = 19780 - _INVOICE_AMPINVOICESTATEENTRY._serialized_end = 19858 - _INVOICE_INVOICESTATE._serialized_start = 19860 - _INVOICE_INVOICESTATE._serialized_end = 19925 - _INVOICEHTLC._serialized_start = 19934 - _INVOICEHTLC._serialized_end = 20305 - _INVOICEHTLC_CUSTOMRECORDSENTRY._serialized_start = 15826 - _INVOICEHTLC_CUSTOMRECORDSENTRY._serialized_end = 15878 - _AMP._serialized_start = 20307 - _AMP._serialized_end = 20401 - _ADDINVOICERESPONSE._serialized_start = 20403 - _ADDINVOICERESPONSE._serialized_end = 20505 - _PAYMENTHASH._serialized_start = 20507 - _PAYMENTHASH._serialized_end = 20560 - _LISTINVOICEREQUEST._serialized_start = 20562 - _LISTINVOICEREQUEST._serialized_end = 20670 - _LISTINVOICERESPONSE._serialized_start = 20672 - _LISTINVOICERESPONSE._serialized_end = 20782 - _INVOICESUBSCRIPTION._serialized_start = 20784 - _INVOICESUBSCRIPTION._serialized_end = 20846 - _PAYMENT._serialized_start = 20849 - _PAYMENT._serialized_end = 21329 - _PAYMENT_PAYMENTSTATUS._serialized_start = 21253 - _PAYMENT_PAYMENTSTATUS._serialized_end = 21323 - _HTLCATTEMPT._serialized_start = 21332 - _HTLCATTEMPT._serialized_end = 21598 - _HTLCATTEMPT_HTLCSTATUS._serialized_start = 21544 - _HTLCATTEMPT_HTLCSTATUS._serialized_end = 21598 - _LISTPAYMENTSREQUEST._serialized_start = 21601 - _LISTPAYMENTSREQUEST._serialized_end = 21742 - _LISTPAYMENTSRESPONSE._serialized_start = 21745 - _LISTPAYMENTSRESPONSE._serialized_end = 21884 - _DELETEPAYMENTREQUEST._serialized_start = 21886 - _DELETEPAYMENTREQUEST._serialized_end = 21957 - _DELETEALLPAYMENTSREQUEST._serialized_start = 21959 - _DELETEALLPAYMENTSREQUEST._serialized_end = 22042 - _DELETEPAYMENTRESPONSE._serialized_start = 22044 - _DELETEPAYMENTRESPONSE._serialized_end = 22067 - _DELETEALLPAYMENTSRESPONSE._serialized_start = 22069 - _DELETEALLPAYMENTSRESPONSE._serialized_end = 22096 - _ABANDONCHANNELREQUEST._serialized_start = 22099 - _ABANDONCHANNELREQUEST._serialized_end = 22233 - _ABANDONCHANNELRESPONSE._serialized_start = 22235 - _ABANDONCHANNELRESPONSE._serialized_end = 22259 - _DEBUGLEVELREQUEST._serialized_start = 22261 - _DEBUGLEVELREQUEST._serialized_end = 22314 - _DEBUGLEVELRESPONSE._serialized_start = 22316 - _DEBUGLEVELRESPONSE._serialized_end = 22357 - _PAYREQSTRING._serialized_start = 22359 - _PAYREQSTRING._serialized_end = 22390 - _PAYREQ._serialized_start = 22393 - _PAYREQ._serialized_end = 22783 - _PAYREQ_FEATURESENTRY._serialized_start = 7216 - _PAYREQ_FEATURESENTRY._serialized_end = 7279 - _FEATURE._serialized_start = 22785 - _FEATURE._serialized_end = 22847 - _FEEREPORTREQUEST._serialized_start = 22849 - _FEEREPORTREQUEST._serialized_end = 22867 - _CHANNELFEEREPORT._serialized_start = 22869 - _CHANNELFEEREPORT._serialized_end = 22993 - _FEEREPORTRESPONSE._serialized_start = 22996 - _FEEREPORTRESPONSE._serialized_end = 23128 - _POLICYUPDATEREQUEST._serialized_start = 23131 - _POLICYUPDATEREQUEST._serialized_end = 23389 - _FAILEDUPDATE._serialized_start = 23391 - _FAILEDUPDATE._serialized_end = 23500 - _POLICYUPDATERESPONSE._serialized_start = 23502 - _POLICYUPDATERESPONSE._serialized_end = 23569 - _FORWARDINGHISTORYREQUEST._serialized_start = 23571 - _FORWARDINGHISTORYREQUEST._serialized_end = 23681 - _FORWARDINGEVENT._serialized_start = 23684 - _FORWARDINGEVENT._serialized_end = 23902 - _FORWARDINGHISTORYRESPONSE._serialized_start = 23904 - _FORWARDINGHISTORYRESPONSE._serialized_end = 24009 - _EXPORTCHANNELBACKUPREQUEST._serialized_start = 24011 - _EXPORTCHANNELBACKUPREQUEST._serialized_end = 24080 - _CHANNELBACKUP._serialized_start = 24082 - _CHANNELBACKUP._serialized_end = 24159 - _MULTICHANBACKUP._serialized_start = 24161 - _MULTICHANBACKUP._serialized_end = 24247 - _CHANBACKUPEXPORTREQUEST._serialized_start = 24249 - _CHANBACKUPEXPORTREQUEST._serialized_end = 24274 - _CHANBACKUPSNAPSHOT._serialized_start = 24276 - _CHANBACKUPSNAPSHOT._serialized_end = 24399 - _CHANNELBACKUPS._serialized_start = 24401 - _CHANNELBACKUPS._serialized_end = 24461 - _RESTORECHANBACKUPREQUEST._serialized_start = 24463 - _RESTORECHANBACKUPREQUEST._serialized_end = 24575 - _RESTOREBACKUPRESPONSE._serialized_start = 24577 - _RESTOREBACKUPRESPONSE._serialized_end = 24600 - _CHANNELBACKUPSUBSCRIPTION._serialized_start = 24602 - _CHANNELBACKUPSUBSCRIPTION._serialized_end = 24629 - _VERIFYCHANBACKUPRESPONSE._serialized_start = 24631 - _VERIFYCHANBACKUPRESPONSE._serialized_end = 24657 - _MACAROONPERMISSION._serialized_start = 24659 - _MACAROONPERMISSION._serialized_end = 24711 - _BAKEMACAROONREQUEST._serialized_start = 24713 - _BAKEMACAROONREQUEST._serialized_end = 24839 - _BAKEMACAROONRESPONSE._serialized_start = 24841 - _BAKEMACAROONRESPONSE._serialized_end = 24881 - _LISTMACAROONIDSREQUEST._serialized_start = 24883 - _LISTMACAROONIDSREQUEST._serialized_end = 24907 - _LISTMACAROONIDSRESPONSE._serialized_start = 24909 - _LISTMACAROONIDSRESPONSE._serialized_end = 24956 - _DELETEMACAROONIDREQUEST._serialized_start = 24958 - _DELETEMACAROONIDREQUEST._serialized_end = 25004 - _DELETEMACAROONIDRESPONSE._serialized_start = 25006 - _DELETEMACAROONIDRESPONSE._serialized_end = 25049 - _MACAROONPERMISSIONLIST._serialized_start = 25051 - _MACAROONPERMISSIONLIST._serialized_end = 25123 - _LISTPERMISSIONSREQUEST._serialized_start = 25125 - _LISTPERMISSIONSREQUEST._serialized_end = 25149 - _LISTPERMISSIONSRESPONSE._serialized_start = 25152 - _LISTPERMISSIONSRESPONSE._serialized_end = 25349 - _LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY._serialized_start = 25262 - _LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY._serialized_end = 25349 - _FAILURE._serialized_start = 25352 - _FAILURE._serialized_end = 26333 - _FAILURE_FAILURECODE._serialized_start = 25576 - _FAILURE_FAILURECODE._serialized_end = 26327 - _CHANNELUPDATE._serialized_start = 26336 - _CHANNELUPDATE._serialized_end = 26618 - _MACAROONID._serialized_start = 26620 - _MACAROONID._serialized_end = 26690 - _OP._serialized_start = 26692 - _OP._serialized_end = 26729 - _CHECKMACPERMREQUEST._serialized_start = 26731 - _CHECKMACPERMREQUEST._serialized_end = 26838 - _CHECKMACPERMRESPONSE._serialized_start = 26840 - _CHECKMACPERMRESPONSE._serialized_end = 26877 - _RPCMIDDLEWAREREQUEST._serialized_start = 26880 - _RPCMIDDLEWAREREQUEST._serialized_end = 27154 - _STREAMAUTH._serialized_start = 27156 - _STREAMAUTH._serialized_end = 27193 - _RPCMESSAGE._serialized_start = 27195 - _RPCMESSAGE._serialized_end = 27309 - _RPCMIDDLEWARERESPONSE._serialized_start = 27312 - _RPCMIDDLEWARERESPONSE._serialized_end = 27474 - _MIDDLEWAREREGISTRATION._serialized_start = 27476 - _MIDDLEWAREREGISTRATION._serialized_end = 27586 - _INTERCEPTFEEDBACK._serialized_start = 27588 - _INTERCEPTFEEDBACK._serialized_end = 27680 - _LIGHTNING._serialized_start = 29699 - _LIGHTNING._serialized_end = 34578 + _OUTPUTSCRIPTTYPE._serialized_start = 28607 + _OUTPUTSCRIPTTYPE._serialized_end = 28938 + _ADDRESSTYPE._serialized_start = 28941 + _ADDRESSTYPE._serialized_end = 29113 + _COMMITMENTTYPE._serialized_start = 29115 + _COMMITMENTTYPE._serialized_end = 29235 + _INITIATOR._serialized_start = 29237 + _INITIATOR._serialized_end = 29334 + _RESOLUTIONTYPE._serialized_start = 29336 + _RESOLUTIONTYPE._serialized_end = 29432 + _RESOLUTIONOUTCOME._serialized_start = 29434 + _RESOLUTIONOUTCOME._serialized_end = 29547 + _NODEMETRICTYPE._serialized_start = 29549 + _NODEMETRICTYPE._serialized_end = 29606 + _INVOICEHTLCSTATE._serialized_start = 29608 + _INVOICEHTLCSTATE._serialized_end = 29667 + _PAYMENTFAILUREREASON._serialized_start = 29670 + _PAYMENTFAILUREREASON._serialized_end = 29887 + _FEATUREBIT._serialized_start = 29890 + _FEATUREBIT._serialized_end = 30481 + _UPDATEFAILURE._serialized_start = 30484 + _UPDATEFAILURE._serialized_end = 30656 + _LOOKUPHTLCRESOLUTIONREQUEST._serialized_start = 26 + _LOOKUPHTLCRESOLUTIONREQUEST._serialized_end = 92 + _LOOKUPHTLCRESOLUTIONRESPONSE._serialized_start = 94 + _LOOKUPHTLCRESOLUTIONRESPONSE._serialized_end = 159 + _SUBSCRIBECUSTOMMESSAGESREQUEST._serialized_start = 161 + _SUBSCRIBECUSTOMMESSAGESREQUEST._serialized_end = 193 + _CUSTOMMESSAGE._serialized_start = 195 + _CUSTOMMESSAGE._serialized_end = 252 + _SENDCUSTOMMESSAGEREQUEST._serialized_start = 254 + _SENDCUSTOMMESSAGEREQUEST._serialized_end = 322 + _SENDCUSTOMMESSAGERESPONSE._serialized_start = 324 + _SENDCUSTOMMESSAGERESPONSE._serialized_end = 351 + _UTXO._serialized_start = 354 + _UTXO._serialized_end = 516 + _OUTPUTDETAIL._serialized_start = 519 + _OUTPUTDETAIL._serialized_end = 677 + _TRANSACTION._serialized_start = 680 + _TRANSACTION._serialized_end = 996 + _GETTRANSACTIONSREQUEST._serialized_start = 998 + _GETTRANSACTIONSREQUEST._serialized_end = 1081 + _TRANSACTIONDETAILS._serialized_start = 1083 + _TRANSACTIONDETAILS._serialized_end = 1145 + _FEELIMIT._serialized_start = 1147 + _FEELIMIT._serialized_end = 1224 + _SENDREQUEST._serialized_start = 1227 + _SENDREQUEST._serialized_end = 1749 + _SENDREQUEST_DESTCUSTOMRECORDSENTRY._serialized_start = 1693 + _SENDREQUEST_DESTCUSTOMRECORDSENTRY._serialized_end = 1749 + _SENDRESPONSE._serialized_start = 1751 + _SENDRESPONSE._serialized_end = 1873 + _SENDTOROUTEREQUEST._serialized_start = 1875 + _SENDTOROUTEREQUEST._serialized_end = 1985 + _CHANNELACCEPTREQUEST._serialized_start = 1988 + _CHANNELACCEPTREQUEST._serialized_end = 2396 + _CHANNELACCEPTRESPONSE._serialized_start = 2399 + _CHANNELACCEPTRESPONSE._serialized_end = 2662 + _CHANNELPOINT._serialized_start = 2664 + _CHANNELPOINT._serialized_end = 2774 + _OUTPOINT._serialized_start = 2776 + _OUTPOINT._serialized_end = 2846 + _PREVIOUSOUTPOINT._serialized_start = 2848 + _PREVIOUSOUTPOINT._serialized_end = 2907 + _LIGHTNINGADDRESS._serialized_start = 2909 + _LIGHTNINGADDRESS._serialized_end = 2957 + _ESTIMATEFEEREQUEST._serialized_start = 2960 + _ESTIMATEFEEREQUEST._serialized_end = 3167 + _ESTIMATEFEEREQUEST_ADDRTOAMOUNTENTRY._serialized_start = 3116 + _ESTIMATEFEEREQUEST_ADDRTOAMOUNTENTRY._serialized_end = 3167 + _ESTIMATEFEERESPONSE._serialized_start = 3169 + _ESTIMATEFEERESPONSE._serialized_end = 3264 + _SENDMANYREQUEST._serialized_start = 3267 + _SENDMANYREQUEST._serialized_end = 3532 + _SENDMANYREQUEST_ADDRTOAMOUNTENTRY._serialized_start = 3116 + _SENDMANYREQUEST_ADDRTOAMOUNTENTRY._serialized_end = 3167 + _SENDMANYRESPONSE._serialized_start = 3534 + _SENDMANYRESPONSE._serialized_end = 3566 + _SENDCOINSREQUEST._serialized_start = 3569 + _SENDCOINSREQUEST._serialized_end = 3766 + _SENDCOINSRESPONSE._serialized_start = 3768 + _SENDCOINSRESPONSE._serialized_end = 3801 + _LISTUNSPENTREQUEST._serialized_start = 3803 + _LISTUNSPENTREQUEST._serialized_end = 3878 + _LISTUNSPENTRESPONSE._serialized_start = 3880 + _LISTUNSPENTRESPONSE._serialized_end = 3929 + _NEWADDRESSREQUEST._serialized_start = 3931 + _NEWADDRESSREQUEST._serialized_end = 4001 + _NEWADDRESSRESPONSE._serialized_start = 4003 + _NEWADDRESSRESPONSE._serialized_end = 4040 + _SIGNMESSAGEREQUEST._serialized_start = 4042 + _SIGNMESSAGEREQUEST._serialized_end = 4096 + _SIGNMESSAGERESPONSE._serialized_start = 4098 + _SIGNMESSAGERESPONSE._serialized_end = 4138 + _VERIFYMESSAGEREQUEST._serialized_start = 4140 + _VERIFYMESSAGEREQUEST._serialized_end = 4194 + _VERIFYMESSAGERESPONSE._serialized_start = 4196 + _VERIFYMESSAGERESPONSE._serialized_end = 4250 + _CONNECTPEERREQUEST._serialized_start = 4252 + _CONNECTPEERREQUEST._serialized_end = 4342 + _CONNECTPEERRESPONSE._serialized_start = 4344 + _CONNECTPEERRESPONSE._serialized_end = 4365 + _DISCONNECTPEERREQUEST._serialized_start = 4367 + _DISCONNECTPEERREQUEST._serialized_end = 4407 + _DISCONNECTPEERRESPONSE._serialized_start = 4409 + _DISCONNECTPEERRESPONSE._serialized_end = 4433 + _HTLC._serialized_start = 4436 + _HTLC._serialized_end = 4601 + _CHANNELCONSTRAINTS._serialized_start = 4604 + _CHANNELCONSTRAINTS._serialized_end = 4774 + _CHANNEL._serialized_start = 4777 + _CHANNEL._serialized_end = 5716 + _LISTCHANNELSREQUEST._serialized_start = 5719 + _LISTCHANNELSREQUEST._serialized_end = 5868 + _LISTCHANNELSRESPONSE._serialized_start = 5870 + _LISTCHANNELSRESPONSE._serialized_end = 5926 + _ALIASMAP._serialized_start = 5928 + _ALIASMAP._serialized_end = 5974 + _LISTALIASESREQUEST._serialized_start = 5976 + _LISTALIASESREQUEST._serialized_end = 5996 + _LISTALIASESRESPONSE._serialized_start = 5998 + _LISTALIASESRESPONSE._serialized_end = 6056 + _CHANNELCLOSESUMMARY._serialized_start = 6059 + _CHANNELCLOSESUMMARY._serialized_end = 6671 + _CHANNELCLOSESUMMARY_CLOSURETYPE._serialized_start = 6533 + _CHANNELCLOSESUMMARY_CLOSURETYPE._serialized_end = 6671 + _RESOLUTION._serialized_start = 6674 + _RESOLUTION._serialized_end = 6852 + _CLOSEDCHANNELSREQUEST._serialized_start = 6855 + _CLOSEDCHANNELSREQUEST._serialized_end = 7003 + _CLOSEDCHANNELSRESPONSE._serialized_start = 7005 + _CLOSEDCHANNELSRESPONSE._serialized_end = 7075 + _PEER._serialized_start = 7078 + _PEER._serialized_end = 7573 + _PEER_FEATURESENTRY._serialized_start = 7428 + _PEER_FEATURESENTRY._serialized_end = 7491 + _PEER_SYNCTYPE._serialized_start = 7493 + _PEER_SYNCTYPE._serialized_end = 7573 + _TIMESTAMPEDERROR._serialized_start = 7575 + _TIMESTAMPEDERROR._serialized_end = 7627 + _LISTPEERSREQUEST._serialized_start = 7629 + _LISTPEERSREQUEST._serialized_end = 7669 + _LISTPEERSRESPONSE._serialized_start = 7671 + _LISTPEERSRESPONSE._serialized_end = 7718 + _PEEREVENTSUBSCRIPTION._serialized_start = 7720 + _PEEREVENTSUBSCRIPTION._serialized_end = 7743 + _PEEREVENT._serialized_start = 7745 + _PEEREVENT._serialized_end = 7863 + _PEEREVENT_EVENTTYPE._serialized_start = 7817 + _PEEREVENT_EVENTTYPE._serialized_end = 7863 + _GETINFOREQUEST._serialized_start = 7865 + _GETINFOREQUEST._serialized_end = 7881 + _GETINFORESPONSE._serialized_start = 7884 + _GETINFORESPONSE._serialized_end = 8490 + _GETINFORESPONSE_FEATURESENTRY._serialized_start = 7428 + _GETINFORESPONSE_FEATURESENTRY._serialized_end = 7491 + _GETRECOVERYINFOREQUEST._serialized_start = 8492 + _GETRECOVERYINFOREQUEST._serialized_end = 8516 + _GETRECOVERYINFORESPONSE._serialized_start = 8518 + _GETRECOVERYINFORESPONSE._serialized_end = 8611 + _CHAIN._serialized_start = 8613 + _CHAIN._serialized_end = 8652 + _CONFIRMATIONUPDATE._serialized_start = 8654 + _CONFIRMATIONUPDATE._serialized_end = 8739 + _CHANNELOPENUPDATE._serialized_start = 8741 + _CHANNELOPENUPDATE._serialized_end = 8804 + _CHANNELCLOSEUPDATE._serialized_start = 8806 + _CHANNELCLOSEUPDATE._serialized_end = 8865 + _CLOSECHANNELREQUEST._serialized_start = 8868 + _CLOSECHANNELREQUEST._serialized_end = 9071 + _CLOSESTATUSUPDATE._serialized_start = 9073 + _CLOSESTATUSUPDATE._serialized_end = 9198 + _PENDINGUPDATE._serialized_start = 9200 + _PENDINGUPDATE._serialized_end = 9251 + _READYFORPSBTFUNDING._serialized_start = 9253 + _READYFORPSBTFUNDING._serialized_end = 9337 + _BATCHOPENCHANNELREQUEST._serialized_start = 9340 + _BATCHOPENCHANNELREQUEST._serialized_end = 9513 + _BATCHOPENCHANNEL._serialized_start = 9516 + _BATCHOPENCHANNEL._serialized_end = 9765 + _BATCHOPENCHANNELRESPONSE._serialized_start = 9767 + _BATCHOPENCHANNELRESPONSE._serialized_end = 9841 + _OPENCHANNELREQUEST._serialized_start = 9844 + _OPENCHANNELREQUEST._serialized_end = 10520 + _OPENSTATUSUPDATE._serialized_start = 10523 + _OPENSTATUSUPDATE._serialized_end = 10718 + _KEYLOCATOR._serialized_start = 10720 + _KEYLOCATOR._serialized_end = 10771 + _KEYDESCRIPTOR._serialized_start = 10773 + _KEYDESCRIPTOR._serialized_end = 10847 + _CHANPOINTSHIM._serialized_start = 10850 + _CHANPOINTSHIM._serialized_end = 11026 + _PSBTSHIM._serialized_start = 11028 + _PSBTSHIM._serialized_end = 11102 + _FUNDINGSHIM._serialized_start = 11104 + _FUNDINGSHIM._serialized_end = 11212 + _FUNDINGSHIMCANCEL._serialized_start = 11214 + _FUNDINGSHIMCANCEL._serialized_end = 11258 + _FUNDINGPSBTVERIFY._serialized_start = 11260 + _FUNDINGPSBTVERIFY._serialized_end = 11348 + _FUNDINGPSBTFINALIZE._serialized_start = 11350 + _FUNDINGPSBTFINALIZE._serialized_end = 11439 + _FUNDINGTRANSITIONMSG._serialized_start = 11442 + _FUNDINGTRANSITIONMSG._serialized_end = 11671 + _FUNDINGSTATESTEPRESP._serialized_start = 11673 + _FUNDINGSTATESTEPRESP._serialized_end = 11695 + _PENDINGHTLC._serialized_start = 11698 + _PENDINGHTLC._serialized_end = 11832 + _PENDINGCHANNELSREQUEST._serialized_start = 11834 + _PENDINGCHANNELSREQUEST._serialized_end = 11858 + _PENDINGCHANNELSRESPONSE._serialized_start = 11861 + _PENDINGCHANNELSRESPONSE._serialized_end = 13644 + _PENDINGCHANNELSRESPONSE_PENDINGCHANNEL._serialized_start = 12259 + _PENDINGCHANNELSRESPONSE_PENDINGCHANNEL._serialized_end = 12615 + _PENDINGCHANNELSRESPONSE_PENDINGOPENCHANNEL._serialized_start = 12618 + _PENDINGCHANNELSRESPONSE_PENDINGOPENCHANNEL._serialized_end = 12771 + _PENDINGCHANNELSRESPONSE_WAITINGCLOSECHANNEL._serialized_start = 12774 + _PENDINGCHANNELSRESPONSE_WAITINGCLOSECHANNEL._serialized_end = 12969 + _PENDINGCHANNELSRESPONSE_COMMITMENTS._serialized_start = 12972 + _PENDINGCHANNELSRESPONSE_COMMITMENTS._serialized_end = 13155 + _PENDINGCHANNELSRESPONSE_CLOSEDCHANNEL._serialized_start = 13157 + _PENDINGCHANNELSRESPONSE_CLOSEDCHANNEL._serialized_end = 13258 + _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL._serialized_start = 13261 + _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL._serialized_end = 13644 + _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL_ANCHORSTATE._serialized_start = 13595 + _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL_ANCHORSTATE._serialized_end = 13644 + _CHANNELEVENTSUBSCRIPTION._serialized_start = 13646 + _CHANNELEVENTSUBSCRIPTION._serialized_end = 13672 + _CHANNELEVENTUPDATE._serialized_start = 13675 + _CHANNELEVENTUPDATE._serialized_end = 14206 + _CHANNELEVENTUPDATE_UPDATETYPE._serialized_start = 14049 + _CHANNELEVENTUPDATE_UPDATETYPE._serialized_end = 14195 + _WALLETACCOUNTBALANCE._serialized_start = 14208 + _WALLETACCOUNTBALANCE._serialized_end = 14286 + _WALLETBALANCEREQUEST._serialized_start = 14288 + _WALLETBALANCEREQUEST._serialized_end = 14310 + _WALLETBALANCERESPONSE._serialized_start = 14313 + _WALLETBALANCERESPONSE._serialized_end = 14636 + _WALLETBALANCERESPONSE_ACCOUNTBALANCEENTRY._serialized_start = 14554 + _WALLETBALANCERESPONSE_ACCOUNTBALANCEENTRY._serialized_end = 14636 + _AMOUNT._serialized_start = 14638 + _AMOUNT._serialized_end = 14673 + _CHANNELBALANCEREQUEST._serialized_start = 14675 + _CHANNELBALANCEREQUEST._serialized_end = 14698 + _CHANNELBALANCERESPONSE._serialized_start = 14701 + _CHANNELBALANCERESPONSE._serialized_end = 15057 + _QUERYROUTESREQUEST._serialized_start = 15060 + _QUERYROUTESREQUEST._serialized_end = 15671 + _QUERYROUTESREQUEST_DESTCUSTOMRECORDSENTRY._serialized_start = 1693 + _QUERYROUTESREQUEST_DESTCUSTOMRECORDSENTRY._serialized_end = 1749 + _NODEPAIR._serialized_start = 15673 + _NODEPAIR._serialized_end = 15709 + _EDGELOCATOR._serialized_start = 15711 + _EDGELOCATOR._serialized_end = 15775 + _QUERYROUTESRESPONSE._serialized_start = 15777 + _QUERYROUTESRESPONSE._serialized_end = 15850 + _HOP._serialized_start = 15853 + _HOP._serialized_end = 16259 + _HOP_CUSTOMRECORDSENTRY._serialized_start = 16207 + _HOP_CUSTOMRECORDSENTRY._serialized_end = 16259 + _MPPRECORD._serialized_start = 16261 + _MPPRECORD._serialized_end = 16318 + _AMPRECORD._serialized_start = 16320 + _AMPRECORD._serialized_end = 16388 + _ROUTE._serialized_start = 16391 + _ROUTE._serialized_end = 16545 + _NODEINFOREQUEST._serialized_start = 16547 + _NODEINFOREQUEST._serialized_end = 16607 + _NODEINFO._serialized_start = 16610 + _NODEINFO._serialized_end = 16740 + _LIGHTNINGNODE._serialized_start = 16743 + _LIGHTNINGNODE._serialized_end = 17103 + _LIGHTNINGNODE_FEATURESENTRY._serialized_start = 7428 + _LIGHTNINGNODE_FEATURESENTRY._serialized_end = 7491 + _LIGHTNINGNODE_CUSTOMRECORDSENTRY._serialized_start = 16207 + _LIGHTNINGNODE_CUSTOMRECORDSENTRY._serialized_end = 16259 + _NODEADDRESS._serialized_start = 17105 + _NODEADDRESS._serialized_end = 17149 + _ROUTINGPOLICY._serialized_start = 17152 + _ROUTINGPOLICY._serialized_end = 17443 + _ROUTINGPOLICY_CUSTOMRECORDSENTRY._serialized_start = 16207 + _ROUTINGPOLICY_CUSTOMRECORDSENTRY._serialized_end = 16259 + _CHANNELEDGE._serialized_start = 17446 + _CHANNELEDGE._serialized_end = 17789 + _CHANNELEDGE_CUSTOMRECORDSENTRY._serialized_start = 16207 + _CHANNELEDGE_CUSTOMRECORDSENTRY._serialized_end = 16259 + _CHANNELGRAPHREQUEST._serialized_start = 17791 + _CHANNELGRAPHREQUEST._serialized_end = 17841 + _CHANNELGRAPH._serialized_start = 17843 + _CHANNELGRAPH._serialized_end = 17929 + _NODEMETRICSREQUEST._serialized_start = 17931 + _NODEMETRICSREQUEST._serialized_end = 17989 + _NODEMETRICSRESPONSE._serialized_start = 17992 + _NODEMETRICSRESPONSE._serialized_end = 18182 + _NODEMETRICSRESPONSE_BETWEENNESSCENTRALITYENTRY._serialized_start = 18102 + _NODEMETRICSRESPONSE_BETWEENNESSCENTRALITYENTRY._serialized_end = 18182 + _FLOATMETRIC._serialized_start = 18184 + _FLOATMETRIC._serialized_end = 18238 + _CHANINFOREQUEST._serialized_start = 18240 + _CHANINFOREQUEST._serialized_end = 18278 + _NETWORKINFOREQUEST._serialized_start = 18280 + _NETWORKINFOREQUEST._serialized_end = 18300 + _NETWORKINFO._serialized_start = 18303 + _NETWORKINFO._serialized_end = 18598 + _STOPREQUEST._serialized_start = 18600 + _STOPREQUEST._serialized_end = 18613 + _STOPRESPONSE._serialized_start = 18615 + _STOPRESPONSE._serialized_end = 18629 + _GRAPHTOPOLOGYSUBSCRIPTION._serialized_start = 18631 + _GRAPHTOPOLOGYSUBSCRIPTION._serialized_end = 18658 + _GRAPHTOPOLOGYUPDATE._serialized_start = 18661 + _GRAPHTOPOLOGYUPDATE._serialized_end = 18824 + _NODEUPDATE._serialized_start = 18827 + _NODEUPDATE._serialized_end = 19103 + _NODEUPDATE_FEATURESENTRY._serialized_start = 7428 + _NODEUPDATE_FEATURESENTRY._serialized_end = 7491 + _CHANNELEDGEUPDATE._serialized_start = 19106 + _CHANNELEDGEUPDATE._serialized_end = 19302 + _CLOSEDCHANNELUPDATE._serialized_start = 19304 + _CLOSEDCHANNELUPDATE._serialized_end = 19428 + _HOPHINT._serialized_start = 19431 + _HOPHINT._serialized_end = 19565 + _SETID._serialized_start = 19567 + _SETID._serialized_end = 19590 + _ROUTEHINT._serialized_start = 19592 + _ROUTEHINT._serialized_end = 19638 + _AMPINVOICESTATE._serialized_start = 19640 + _AMPINVOICESTATE._serialized_end = 19763 + _INVOICE._serialized_start = 19766 + _INVOICE._serialized_end = 20667 + _INVOICE_FEATURESENTRY._serialized_start = 7428 + _INVOICE_FEATURESENTRY._serialized_end = 7491 + _INVOICE_AMPINVOICESTATEENTRY._serialized_start = 20516 + _INVOICE_AMPINVOICESTATEENTRY._serialized_end = 20594 + _INVOICE_INVOICESTATE._serialized_start = 20596 + _INVOICE_INVOICESTATE._serialized_end = 20661 + _INVOICEHTLC._serialized_start = 20670 + _INVOICEHTLC._serialized_end = 21041 + _INVOICEHTLC_CUSTOMRECORDSENTRY._serialized_start = 16207 + _INVOICEHTLC_CUSTOMRECORDSENTRY._serialized_end = 16259 + _AMP._serialized_start = 21043 + _AMP._serialized_end = 21137 + _ADDINVOICERESPONSE._serialized_start = 21139 + _ADDINVOICERESPONSE._serialized_end = 21241 + _PAYMENTHASH._serialized_start = 21243 + _PAYMENTHASH._serialized_end = 21296 + _LISTINVOICEREQUEST._serialized_start = 21299 + _LISTINVOICEREQUEST._serialized_end = 21463 + _LISTINVOICERESPONSE._serialized_start = 21465 + _LISTINVOICERESPONSE._serialized_end = 21575 + _INVOICESUBSCRIPTION._serialized_start = 21577 + _INVOICESUBSCRIPTION._serialized_end = 21639 + _PAYMENT._serialized_start = 21642 + _PAYMENT._serialized_end = 22122 + _PAYMENT_PAYMENTSTATUS._serialized_start = 22046 + _PAYMENT_PAYMENTSTATUS._serialized_end = 22116 + _HTLCATTEMPT._serialized_start = 22125 + _HTLCATTEMPT._serialized_end = 22391 + _HTLCATTEMPT_HTLCSTATUS._serialized_start = 22337 + _HTLCATTEMPT_HTLCSTATUS._serialized_end = 22391 + _LISTPAYMENTSREQUEST._serialized_start = 22394 + _LISTPAYMENTSREQUEST._serialized_end = 22591 + _LISTPAYMENTSRESPONSE._serialized_start = 22594 + _LISTPAYMENTSRESPONSE._serialized_end = 22733 + _DELETEPAYMENTREQUEST._serialized_start = 22735 + _DELETEPAYMENTREQUEST._serialized_end = 22806 + _DELETEALLPAYMENTSREQUEST._serialized_start = 22808 + _DELETEALLPAYMENTSREQUEST._serialized_end = 22891 + _DELETEPAYMENTRESPONSE._serialized_start = 22893 + _DELETEPAYMENTRESPONSE._serialized_end = 22916 + _DELETEALLPAYMENTSRESPONSE._serialized_start = 22918 + _DELETEALLPAYMENTSRESPONSE._serialized_end = 22945 + _ABANDONCHANNELREQUEST._serialized_start = 22948 + _ABANDONCHANNELREQUEST._serialized_end = 23082 + _ABANDONCHANNELRESPONSE._serialized_start = 23084 + _ABANDONCHANNELRESPONSE._serialized_end = 23108 + _DEBUGLEVELREQUEST._serialized_start = 23110 + _DEBUGLEVELREQUEST._serialized_end = 23163 + _DEBUGLEVELRESPONSE._serialized_start = 23165 + _DEBUGLEVELRESPONSE._serialized_end = 23206 + _PAYREQSTRING._serialized_start = 23208 + _PAYREQSTRING._serialized_end = 23239 + _PAYREQ._serialized_start = 23242 + _PAYREQ._serialized_end = 23632 + _PAYREQ_FEATURESENTRY._serialized_start = 7428 + _PAYREQ_FEATURESENTRY._serialized_end = 7491 + _FEATURE._serialized_start = 23634 + _FEATURE._serialized_end = 23696 + _FEEREPORTREQUEST._serialized_start = 23698 + _FEEREPORTREQUEST._serialized_end = 23716 + _CHANNELFEEREPORT._serialized_start = 23718 + _CHANNELFEEREPORT._serialized_end = 23842 + _FEEREPORTRESPONSE._serialized_start = 23845 + _FEEREPORTRESPONSE._serialized_end = 23977 + _POLICYUPDATEREQUEST._serialized_start = 23980 + _POLICYUPDATEREQUEST._serialized_end = 24238 + _FAILEDUPDATE._serialized_start = 24240 + _FAILEDUPDATE._serialized_end = 24349 + _POLICYUPDATERESPONSE._serialized_start = 24351 + _POLICYUPDATERESPONSE._serialized_end = 24418 + _FORWARDINGHISTORYREQUEST._serialized_start = 24421 + _FORWARDINGHISTORYREQUEST._serialized_end = 24558 + _FORWARDINGEVENT._serialized_start = 24561 + _FORWARDINGEVENT._serialized_end = 24826 + _FORWARDINGHISTORYRESPONSE._serialized_start = 24828 + _FORWARDINGHISTORYRESPONSE._serialized_end = 24933 + _EXPORTCHANNELBACKUPREQUEST._serialized_start = 24935 + _EXPORTCHANNELBACKUPREQUEST._serialized_end = 25004 + _CHANNELBACKUP._serialized_start = 25006 + _CHANNELBACKUP._serialized_end = 25083 + _MULTICHANBACKUP._serialized_start = 25085 + _MULTICHANBACKUP._serialized_end = 25171 + _CHANBACKUPEXPORTREQUEST._serialized_start = 25173 + _CHANBACKUPEXPORTREQUEST._serialized_end = 25198 + _CHANBACKUPSNAPSHOT._serialized_start = 25200 + _CHANBACKUPSNAPSHOT._serialized_end = 25323 + _CHANNELBACKUPS._serialized_start = 25325 + _CHANNELBACKUPS._serialized_end = 25385 + _RESTORECHANBACKUPREQUEST._serialized_start = 25387 + _RESTORECHANBACKUPREQUEST._serialized_end = 25499 + _RESTOREBACKUPRESPONSE._serialized_start = 25501 + _RESTOREBACKUPRESPONSE._serialized_end = 25524 + _CHANNELBACKUPSUBSCRIPTION._serialized_start = 25526 + _CHANNELBACKUPSUBSCRIPTION._serialized_end = 25553 + _VERIFYCHANBACKUPRESPONSE._serialized_start = 25555 + _VERIFYCHANBACKUPRESPONSE._serialized_end = 25581 + _MACAROONPERMISSION._serialized_start = 25583 + _MACAROONPERMISSION._serialized_end = 25635 + _BAKEMACAROONREQUEST._serialized_start = 25637 + _BAKEMACAROONREQUEST._serialized_end = 25763 + _BAKEMACAROONRESPONSE._serialized_start = 25765 + _BAKEMACAROONRESPONSE._serialized_end = 25805 + _LISTMACAROONIDSREQUEST._serialized_start = 25807 + _LISTMACAROONIDSREQUEST._serialized_end = 25831 + _LISTMACAROONIDSRESPONSE._serialized_start = 25833 + _LISTMACAROONIDSRESPONSE._serialized_end = 25880 + _DELETEMACAROONIDREQUEST._serialized_start = 25882 + _DELETEMACAROONIDREQUEST._serialized_end = 25928 + _DELETEMACAROONIDRESPONSE._serialized_start = 25930 + _DELETEMACAROONIDRESPONSE._serialized_end = 25973 + _MACAROONPERMISSIONLIST._serialized_start = 25975 + _MACAROONPERMISSIONLIST._serialized_end = 26047 + _LISTPERMISSIONSREQUEST._serialized_start = 26049 + _LISTPERMISSIONSREQUEST._serialized_end = 26073 + _LISTPERMISSIONSRESPONSE._serialized_start = 26076 + _LISTPERMISSIONSRESPONSE._serialized_end = 26273 + _LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY._serialized_start = 26186 + _LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY._serialized_end = 26273 + _FAILURE._serialized_start = 26276 + _FAILURE._serialized_end = 27257 + _FAILURE_FAILURECODE._serialized_start = 26500 + _FAILURE_FAILURECODE._serialized_end = 27251 + _CHANNELUPDATE._serialized_start = 27260 + _CHANNELUPDATE._serialized_end = 27542 + _MACAROONID._serialized_start = 27544 + _MACAROONID._serialized_end = 27614 + _OP._serialized_start = 27616 + _OP._serialized_end = 27653 + _CHECKMACPERMREQUEST._serialized_start = 27655 + _CHECKMACPERMREQUEST._serialized_end = 27762 + _CHECKMACPERMRESPONSE._serialized_start = 27764 + _CHECKMACPERMRESPONSE._serialized_end = 27801 + _RPCMIDDLEWAREREQUEST._serialized_start = 27804 + _RPCMIDDLEWAREREQUEST._serialized_end = 28078 + _STREAMAUTH._serialized_start = 28080 + _STREAMAUTH._serialized_end = 28117 + _RPCMESSAGE._serialized_start = 28119 + _RPCMESSAGE._serialized_end = 28233 + _RPCMIDDLEWARERESPONSE._serialized_start = 28236 + _RPCMIDDLEWARERESPONSE._serialized_end = 28398 + _MIDDLEWAREREGISTRATION._serialized_start = 28400 + _MIDDLEWAREREGISTRATION._serialized_end = 28510 + _INTERCEPTFEEDBACK._serialized_start = 28512 + _INTERCEPTFEEDBACK._serialized_end = 28604 + _LIGHTNING._serialized_start = 30659 + _LIGHTNING._serialized_end = 35635 # @@protoc_insertion_point(module_scope) diff --git a/app/lightning/impl/protos/lnd/lightning_pb2_grpc.py b/app/lightning/impl/protos/lnd/lightning_pb2_grpc.py index 1b5cbcc..010ae30 100644 --- a/app/lightning/impl/protos/lnd/lightning_pb2_grpc.py +++ b/app/lightning/impl/protos/lnd/lightning_pb2_grpc.py @@ -362,6 +362,11 @@ def __init__(self, channel): request_serializer=lightning__pb2.ListAliasesRequest.SerializeToString, response_deserializer=lightning__pb2.ListAliasesResponse.FromString, ) + self.LookupHtlcResolution = channel.unary_unary( + "/lnrpc.Lightning/LookupHtlcResolution", + request_serializer=lightning__pb2.LookupHtlcResolutionRequest.SerializeToString, + response_deserializer=lightning__pb2.LookupHtlcResolutionResponse.FromString, + ) class LightningServicer(object): @@ -1097,6 +1102,10 @@ def SubscribeCustomMessages(self, request, context): """lncli: `subscribecustom` SubscribeCustomMessages subscribes to a stream of incoming custom peer messages. + + To include messages with type outside of the custom range (>= 32768) lnd + needs to be compiled with the `dev` build tag, and the message type to + override should be specified in lnd's experimental protocol configuration. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details("Method not implemented!") @@ -1112,6 +1121,16 @@ def ListAliases(self, request, context): context.set_details("Method not implemented!") raise NotImplementedError("Method not implemented!") + def LookupHtlcResolution(self, request, context): + """ + LookupHtlcResolution retrieves a final htlc resolution from the database. + If the htlc has no final resolution yet, a NotFound grpc status code is + returned. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + def add_LightningServicer_to_server(servicer, server): rpc_method_handlers = { @@ -1445,6 +1464,11 @@ def add_LightningServicer_to_server(servicer, server): request_deserializer=lightning__pb2.ListAliasesRequest.FromString, response_serializer=lightning__pb2.ListAliasesResponse.SerializeToString, ), + "LookupHtlcResolution": grpc.unary_unary_rpc_method_handler( + servicer.LookupHtlcResolution, + request_deserializer=lightning__pb2.LookupHtlcResolutionRequest.FromString, + response_serializer=lightning__pb2.LookupHtlcResolutionResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( "lnrpc.Lightning", rpc_method_handlers @@ -3387,3 +3411,32 @@ def ListAliases( timeout, metadata, ) + + @staticmethod + def LookupHtlcResolution( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/lnrpc.Lightning/LookupHtlcResolution", + lightning__pb2.LookupHtlcResolutionRequest.SerializeToString, + lightning__pb2.LookupHtlcResolutionResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) diff --git a/app/lightning/impl/protos/lnd/router_pb2.py b/app/lightning/impl/protos/lnd/router_pb2.py index dd6f754..6b5da5a 100644 --- a/app/lightning/impl/protos/lnd/router_pb2.py +++ b/app/lightning/impl/protos/lnd/router_pb2.py @@ -15,7 +15,7 @@ import app.lightning.impl.protos.lnd.lightning_pb2 as lightning__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x16routerrpc/router.proto\x12\trouterrpc\x1a\x0flightning.proto"\xb7\x05\n\x12SendPaymentRequest\x12\x0c\n\x04\x64\x65st\x18\x01 \x01(\x0c\x12\x0b\n\x03\x61mt\x18\x02 \x01(\x03\x12\x10\n\x08\x61mt_msat\x18\x0c \x01(\x03\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x18\n\x10\x66inal_cltv_delta\x18\x04 \x01(\x05\x12\x14\n\x0cpayment_addr\x18\x14 \x01(\x0c\x12\x17\n\x0fpayment_request\x18\x05 \x01(\t\x12\x17\n\x0ftimeout_seconds\x18\x06 \x01(\x05\x12\x15\n\rfee_limit_sat\x18\x07 \x01(\x03\x12\x16\n\x0e\x66\x65\x65_limit_msat\x18\r \x01(\x03\x12\x1e\n\x10outgoing_chan_id\x18\x08 \x01(\x04\x42\x04\x18\x01\x30\x01\x12\x19\n\x11outgoing_chan_ids\x18\x13 \x03(\x04\x12\x17\n\x0flast_hop_pubkey\x18\x0e \x01(\x0c\x12\x12\n\ncltv_limit\x18\t \x01(\x05\x12%\n\x0broute_hints\x18\n \x03(\x0b\x32\x10.lnrpc.RouteHint\x12Q\n\x13\x64\x65st_custom_records\x18\x0b \x03(\x0b\x32\x34.routerrpc.SendPaymentRequest.DestCustomRecordsEntry\x12\x1a\n\x12\x61llow_self_payment\x18\x0f \x01(\x08\x12(\n\rdest_features\x18\x10 \x03(\x0e\x32\x11.lnrpc.FeatureBit\x12\x11\n\tmax_parts\x18\x11 \x01(\r\x12\x1b\n\x13no_inflight_updates\x18\x12 \x01(\x08\x12\x1b\n\x13max_shard_size_msat\x18\x15 \x01(\x04\x12\x0b\n\x03\x61mp\x18\x16 \x01(\x08\x12\x11\n\ttime_pref\x18\x17 \x01(\x01\x1a\x38\n\x16\x44\x65stCustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"H\n\x13TrackPaymentRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x1b\n\x13no_inflight_updates\x18\x02 \x01(\x08"0\n\x0fRouteFeeRequest\x12\x0c\n\x04\x64\x65st\x18\x01 \x01(\x0c\x12\x0f\n\x07\x61mt_sat\x18\x02 \x01(\x03"E\n\x10RouteFeeResponse\x12\x18\n\x10routing_fee_msat\x18\x01 \x01(\x03\x12\x17\n\x0ftime_lock_delay\x18\x02 \x01(\x03"^\n\x12SendToRouteRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x1b\n\x05route\x18\x02 \x01(\x0b\x32\x0c.lnrpc.Route\x12\x15\n\rskip_temp_err\x18\x03 \x01(\x08"H\n\x13SendToRouteResponse\x12\x10\n\x08preimage\x18\x01 \x01(\x0c\x12\x1f\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Failure"\x1c\n\x1aResetMissionControlRequest"\x1d\n\x1bResetMissionControlResponse"\x1c\n\x1aQueryMissionControlRequest"J\n\x1bQueryMissionControlResponse\x12%\n\x05pairs\x18\x02 \x03(\x0b\x32\x16.routerrpc.PairHistoryJ\x04\x08\x01\x10\x02"T\n\x1cXImportMissionControlRequest\x12%\n\x05pairs\x18\x01 \x03(\x0b\x32\x16.routerrpc.PairHistory\x12\r\n\x05\x66orce\x18\x02 \x01(\x08"\x1f\n\x1dXImportMissionControlResponse"o\n\x0bPairHistory\x12\x11\n\tnode_from\x18\x01 \x01(\x0c\x12\x0f\n\x07node_to\x18\x02 \x01(\x0c\x12$\n\x07history\x18\x07 \x01(\x0b\x32\x13.routerrpc.PairDataJ\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07"\x99\x01\n\x08PairData\x12\x11\n\tfail_time\x18\x01 \x01(\x03\x12\x14\n\x0c\x66\x61il_amt_sat\x18\x02 \x01(\x03\x12\x15\n\rfail_amt_msat\x18\x04 \x01(\x03\x12\x14\n\x0csuccess_time\x18\x05 \x01(\x03\x12\x17\n\x0fsuccess_amt_sat\x18\x06 \x01(\x03\x12\x18\n\x10success_amt_msat\x18\x07 \x01(\x03J\x04\x08\x03\x10\x04" \n\x1eGetMissionControlConfigRequest"R\n\x1fGetMissionControlConfigResponse\x12/\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x1f.routerrpc.MissionControlConfig"Q\n\x1eSetMissionControlConfigRequest\x12/\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x1f.routerrpc.MissionControlConfig"!\n\x1fSetMissionControlConfigResponse"\xa3\x01\n\x14MissionControlConfig\x12\x19\n\x11half_life_seconds\x18\x01 \x01(\x04\x12\x17\n\x0fhop_probability\x18\x02 \x01(\x02\x12\x0e\n\x06weight\x18\x03 \x01(\x02\x12\x1f\n\x17maximum_payment_results\x18\x04 \x01(\r\x12&\n\x1eminimum_failure_relax_interval\x18\x05 \x01(\x04"O\n\x17QueryProbabilityRequest\x12\x11\n\tfrom_node\x18\x01 \x01(\x0c\x12\x0f\n\x07to_node\x18\x02 \x01(\x0c\x12\x10\n\x08\x61mt_msat\x18\x03 \x01(\x03"U\n\x18QueryProbabilityResponse\x12\x13\n\x0bprobability\x18\x01 \x01(\x01\x12$\n\x07history\x18\x02 \x01(\x0b\x32\x13.routerrpc.PairData"\x88\x01\n\x11\x42uildRouteRequest\x12\x10\n\x08\x61mt_msat\x18\x01 \x01(\x03\x12\x18\n\x10\x66inal_cltv_delta\x18\x02 \x01(\x05\x12\x1c\n\x10outgoing_chan_id\x18\x03 \x01(\x04\x42\x02\x30\x01\x12\x13\n\x0bhop_pubkeys\x18\x04 \x03(\x0c\x12\x14\n\x0cpayment_addr\x18\x05 \x01(\x0c"1\n\x12\x42uildRouteResponse\x12\x1b\n\x05route\x18\x01 \x01(\x0b\x32\x0c.lnrpc.Route"\x1c\n\x1aSubscribeHtlcEventsRequest"\xdc\x03\n\tHtlcEvent\x12\x1b\n\x13incoming_channel_id\x18\x01 \x01(\x04\x12\x1b\n\x13outgoing_channel_id\x18\x02 \x01(\x04\x12\x18\n\x10incoming_htlc_id\x18\x03 \x01(\x04\x12\x18\n\x10outgoing_htlc_id\x18\x04 \x01(\x04\x12\x14\n\x0ctimestamp_ns\x18\x05 \x01(\x04\x12\x32\n\nevent_type\x18\x06 \x01(\x0e\x32\x1e.routerrpc.HtlcEvent.EventType\x12\x30\n\rforward_event\x18\x07 \x01(\x0b\x32\x17.routerrpc.ForwardEventH\x00\x12\x39\n\x12\x66orward_fail_event\x18\x08 \x01(\x0b\x32\x1b.routerrpc.ForwardFailEventH\x00\x12.\n\x0csettle_event\x18\t \x01(\x0b\x32\x16.routerrpc.SettleEventH\x00\x12\x33\n\x0flink_fail_event\x18\n \x01(\x0b\x32\x18.routerrpc.LinkFailEventH\x00"<\n\tEventType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04SEND\x10\x01\x12\x0b\n\x07RECEIVE\x10\x02\x12\x0b\n\x07\x46ORWARD\x10\x03\x42\x07\n\x05\x65vent"v\n\x08HtlcInfo\x12\x19\n\x11incoming_timelock\x18\x01 \x01(\r\x12\x19\n\x11outgoing_timelock\x18\x02 \x01(\r\x12\x19\n\x11incoming_amt_msat\x18\x03 \x01(\x04\x12\x19\n\x11outgoing_amt_msat\x18\x04 \x01(\x04"1\n\x0c\x46orwardEvent\x12!\n\x04info\x18\x01 \x01(\x0b\x32\x13.routerrpc.HtlcInfo"\x12\n\x10\x46orwardFailEvent"\x1f\n\x0bSettleEvent\x12\x10\n\x08preimage\x18\x01 \x01(\x0c"\xae\x01\n\rLinkFailEvent\x12!\n\x04info\x18\x01 \x01(\x0b\x32\x13.routerrpc.HtlcInfo\x12\x30\n\x0cwire_failure\x18\x02 \x01(\x0e\x32\x1a.lnrpc.Failure.FailureCode\x12\x30\n\x0e\x66\x61ilure_detail\x18\x03 \x01(\x0e\x32\x18.routerrpc.FailureDetail\x12\x16\n\x0e\x66\x61ilure_string\x18\x04 \x01(\t"r\n\rPaymentStatus\x12&\n\x05state\x18\x01 \x01(\x0e\x32\x17.routerrpc.PaymentState\x12\x10\n\x08preimage\x18\x02 \x01(\x0c\x12!\n\x05htlcs\x18\x04 \x03(\x0b\x32\x12.lnrpc.HTLCAttemptJ\x04\x08\x03\x10\x04".\n\nCircuitKey\x12\x0f\n\x07\x63han_id\x18\x01 \x01(\x04\x12\x0f\n\x07htlc_id\x18\x02 \x01(\x04"\x97\x03\n\x1b\x46orwardHtlcInterceptRequest\x12\x33\n\x14incoming_circuit_key\x18\x01 \x01(\x0b\x32\x15.routerrpc.CircuitKey\x12\x1c\n\x14incoming_amount_msat\x18\x05 \x01(\x04\x12\x17\n\x0fincoming_expiry\x18\x06 \x01(\r\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\x0c\x12"\n\x1aoutgoing_requested_chan_id\x18\x07 \x01(\x04\x12\x1c\n\x14outgoing_amount_msat\x18\x03 \x01(\x04\x12\x17\n\x0foutgoing_expiry\x18\x04 \x01(\r\x12Q\n\x0e\x63ustom_records\x18\x08 \x03(\x0b\x32\x39.routerrpc.ForwardHtlcInterceptRequest.CustomRecordsEntry\x12\x12\n\nonion_blob\x18\t \x01(\x0c\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"\xe5\x01\n\x1c\x46orwardHtlcInterceptResponse\x12\x33\n\x14incoming_circuit_key\x18\x01 \x01(\x0b\x32\x15.routerrpc.CircuitKey\x12\x33\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32#.routerrpc.ResolveHoldForwardAction\x12\x10\n\x08preimage\x18\x03 \x01(\x0c\x12\x17\n\x0f\x66\x61ilure_message\x18\x04 \x01(\x0c\x12\x30\n\x0c\x66\x61ilure_code\x18\x05 \x01(\x0e\x32\x1a.lnrpc.Failure.FailureCode"o\n\x17UpdateChanStatusRequest\x12\'\n\nchan_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12+\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32\x1b.routerrpc.ChanStatusAction"\x1a\n\x18UpdateChanStatusResponse*\x81\x04\n\rFailureDetail\x12\x0b\n\x07UNKNOWN\x10\x00\x12\r\n\tNO_DETAIL\x10\x01\x12\x10\n\x0cONION_DECODE\x10\x02\x12\x15\n\x11LINK_NOT_ELIGIBLE\x10\x03\x12\x14\n\x10ON_CHAIN_TIMEOUT\x10\x04\x12\x14\n\x10HTLC_EXCEEDS_MAX\x10\x05\x12\x18\n\x14INSUFFICIENT_BALANCE\x10\x06\x12\x16\n\x12INCOMPLETE_FORWARD\x10\x07\x12\x13\n\x0fHTLC_ADD_FAILED\x10\x08\x12\x15\n\x11\x46ORWARDS_DISABLED\x10\t\x12\x14\n\x10INVOICE_CANCELED\x10\n\x12\x15\n\x11INVOICE_UNDERPAID\x10\x0b\x12\x1b\n\x17INVOICE_EXPIRY_TOO_SOON\x10\x0c\x12\x14\n\x10INVOICE_NOT_OPEN\x10\r\x12\x17\n\x13MPP_INVOICE_TIMEOUT\x10\x0e\x12\x14\n\x10\x41\x44\x44RESS_MISMATCH\x10\x0f\x12\x16\n\x12SET_TOTAL_MISMATCH\x10\x10\x12\x15\n\x11SET_TOTAL_TOO_LOW\x10\x11\x12\x10\n\x0cSET_OVERPAID\x10\x12\x12\x13\n\x0fUNKNOWN_INVOICE\x10\x13\x12\x13\n\x0fINVALID_KEYSEND\x10\x14\x12\x13\n\x0fMPP_IN_PROGRESS\x10\x15\x12\x12\n\x0e\x43IRCULAR_ROUTE\x10\x16*\xae\x01\n\x0cPaymentState\x12\r\n\tIN_FLIGHT\x10\x00\x12\r\n\tSUCCEEDED\x10\x01\x12\x12\n\x0e\x46\x41ILED_TIMEOUT\x10\x02\x12\x13\n\x0f\x46\x41ILED_NO_ROUTE\x10\x03\x12\x10\n\x0c\x46\x41ILED_ERROR\x10\x04\x12$\n FAILED_INCORRECT_PAYMENT_DETAILS\x10\x05\x12\x1f\n\x1b\x46\x41ILED_INSUFFICIENT_BALANCE\x10\x06*<\n\x18ResolveHoldForwardAction\x12\n\n\x06SETTLE\x10\x00\x12\x08\n\x04\x46\x41IL\x10\x01\x12\n\n\x06RESUME\x10\x02*5\n\x10\x43hanStatusAction\x12\n\n\x06\x45NABLE\x10\x00\x12\x0b\n\x07\x44ISABLE\x10\x01\x12\x08\n\x04\x41UTO\x10\x02\x32\xf1\x0b\n\x06Router\x12@\n\rSendPaymentV2\x12\x1d.routerrpc.SendPaymentRequest\x1a\x0e.lnrpc.Payment0\x01\x12\x42\n\x0eTrackPaymentV2\x12\x1e.routerrpc.TrackPaymentRequest\x1a\x0e.lnrpc.Payment0\x01\x12K\n\x10\x45stimateRouteFee\x12\x1a.routerrpc.RouteFeeRequest\x1a\x1b.routerrpc.RouteFeeResponse\x12Q\n\x0bSendToRoute\x12\x1d.routerrpc.SendToRouteRequest\x1a\x1e.routerrpc.SendToRouteResponse"\x03\x88\x02\x01\x12\x42\n\rSendToRouteV2\x12\x1d.routerrpc.SendToRouteRequest\x1a\x12.lnrpc.HTLCAttempt\x12\x64\n\x13ResetMissionControl\x12%.routerrpc.ResetMissionControlRequest\x1a&.routerrpc.ResetMissionControlResponse\x12\x64\n\x13QueryMissionControl\x12%.routerrpc.QueryMissionControlRequest\x1a&.routerrpc.QueryMissionControlResponse\x12j\n\x15XImportMissionControl\x12\'.routerrpc.XImportMissionControlRequest\x1a(.routerrpc.XImportMissionControlResponse\x12p\n\x17GetMissionControlConfig\x12).routerrpc.GetMissionControlConfigRequest\x1a*.routerrpc.GetMissionControlConfigResponse\x12p\n\x17SetMissionControlConfig\x12).routerrpc.SetMissionControlConfigRequest\x1a*.routerrpc.SetMissionControlConfigResponse\x12[\n\x10QueryProbability\x12".routerrpc.QueryProbabilityRequest\x1a#.routerrpc.QueryProbabilityResponse\x12I\n\nBuildRoute\x12\x1c.routerrpc.BuildRouteRequest\x1a\x1d.routerrpc.BuildRouteResponse\x12T\n\x13SubscribeHtlcEvents\x12%.routerrpc.SubscribeHtlcEventsRequest\x1a\x14.routerrpc.HtlcEvent0\x01\x12M\n\x0bSendPayment\x12\x1d.routerrpc.SendPaymentRequest\x1a\x18.routerrpc.PaymentStatus"\x03\x88\x02\x01\x30\x01\x12O\n\x0cTrackPayment\x12\x1e.routerrpc.TrackPaymentRequest\x1a\x18.routerrpc.PaymentStatus"\x03\x88\x02\x01\x30\x01\x12\x66\n\x0fHtlcInterceptor\x12\'.routerrpc.ForwardHtlcInterceptResponse\x1a&.routerrpc.ForwardHtlcInterceptRequest(\x01\x30\x01\x12[\n\x10UpdateChanStatus\x12".routerrpc.UpdateChanStatusRequest\x1a#.routerrpc.UpdateChanStatusResponseB1Z/github.com/lightningnetwork/lnd/lnrpc/routerrpcb\x06proto3' + b'\n\x16routerrpc/router.proto\x12\trouterrpc\x1a\x0flightning.proto"\xb7\x05\n\x12SendPaymentRequest\x12\x0c\n\x04\x64\x65st\x18\x01 \x01(\x0c\x12\x0b\n\x03\x61mt\x18\x02 \x01(\x03\x12\x10\n\x08\x61mt_msat\x18\x0c \x01(\x03\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x18\n\x10\x66inal_cltv_delta\x18\x04 \x01(\x05\x12\x14\n\x0cpayment_addr\x18\x14 \x01(\x0c\x12\x17\n\x0fpayment_request\x18\x05 \x01(\t\x12\x17\n\x0ftimeout_seconds\x18\x06 \x01(\x05\x12\x15\n\rfee_limit_sat\x18\x07 \x01(\x03\x12\x16\n\x0e\x66\x65\x65_limit_msat\x18\r \x01(\x03\x12\x1e\n\x10outgoing_chan_id\x18\x08 \x01(\x04\x42\x04\x18\x01\x30\x01\x12\x19\n\x11outgoing_chan_ids\x18\x13 \x03(\x04\x12\x17\n\x0flast_hop_pubkey\x18\x0e \x01(\x0c\x12\x12\n\ncltv_limit\x18\t \x01(\x05\x12%\n\x0broute_hints\x18\n \x03(\x0b\x32\x10.lnrpc.RouteHint\x12Q\n\x13\x64\x65st_custom_records\x18\x0b \x03(\x0b\x32\x34.routerrpc.SendPaymentRequest.DestCustomRecordsEntry\x12\x1a\n\x12\x61llow_self_payment\x18\x0f \x01(\x08\x12(\n\rdest_features\x18\x10 \x03(\x0e\x32\x11.lnrpc.FeatureBit\x12\x11\n\tmax_parts\x18\x11 \x01(\r\x12\x1b\n\x13no_inflight_updates\x18\x12 \x01(\x08\x12\x1b\n\x13max_shard_size_msat\x18\x15 \x01(\x04\x12\x0b\n\x03\x61mp\x18\x16 \x01(\x08\x12\x11\n\ttime_pref\x18\x17 \x01(\x01\x1a\x38\n\x16\x44\x65stCustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"H\n\x13TrackPaymentRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x1b\n\x13no_inflight_updates\x18\x02 \x01(\x08"3\n\x14TrackPaymentsRequest\x12\x1b\n\x13no_inflight_updates\x18\x01 \x01(\x08"0\n\x0fRouteFeeRequest\x12\x0c\n\x04\x64\x65st\x18\x01 \x01(\x0c\x12\x0f\n\x07\x61mt_sat\x18\x02 \x01(\x03"E\n\x10RouteFeeResponse\x12\x18\n\x10routing_fee_msat\x18\x01 \x01(\x03\x12\x17\n\x0ftime_lock_delay\x18\x02 \x01(\x03"^\n\x12SendToRouteRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x1b\n\x05route\x18\x02 \x01(\x0b\x32\x0c.lnrpc.Route\x12\x15\n\rskip_temp_err\x18\x03 \x01(\x08"H\n\x13SendToRouteResponse\x12\x10\n\x08preimage\x18\x01 \x01(\x0c\x12\x1f\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Failure"\x1c\n\x1aResetMissionControlRequest"\x1d\n\x1bResetMissionControlResponse"\x1c\n\x1aQueryMissionControlRequest"J\n\x1bQueryMissionControlResponse\x12%\n\x05pairs\x18\x02 \x03(\x0b\x32\x16.routerrpc.PairHistoryJ\x04\x08\x01\x10\x02"T\n\x1cXImportMissionControlRequest\x12%\n\x05pairs\x18\x01 \x03(\x0b\x32\x16.routerrpc.PairHistory\x12\r\n\x05\x66orce\x18\x02 \x01(\x08"\x1f\n\x1dXImportMissionControlResponse"o\n\x0bPairHistory\x12\x11\n\tnode_from\x18\x01 \x01(\x0c\x12\x0f\n\x07node_to\x18\x02 \x01(\x0c\x12$\n\x07history\x18\x07 \x01(\x0b\x32\x13.routerrpc.PairDataJ\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07"\x99\x01\n\x08PairData\x12\x11\n\tfail_time\x18\x01 \x01(\x03\x12\x14\n\x0c\x66\x61il_amt_sat\x18\x02 \x01(\x03\x12\x15\n\rfail_amt_msat\x18\x04 \x01(\x03\x12\x14\n\x0csuccess_time\x18\x05 \x01(\x03\x12\x17\n\x0fsuccess_amt_sat\x18\x06 \x01(\x03\x12\x18\n\x10success_amt_msat\x18\x07 \x01(\x03J\x04\x08\x03\x10\x04" \n\x1eGetMissionControlConfigRequest"R\n\x1fGetMissionControlConfigResponse\x12/\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x1f.routerrpc.MissionControlConfig"Q\n\x1eSetMissionControlConfigRequest\x12/\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x1f.routerrpc.MissionControlConfig"!\n\x1fSetMissionControlConfigResponse"\x93\x03\n\x14MissionControlConfig\x12\x1d\n\x11half_life_seconds\x18\x01 \x01(\x04\x42\x02\x18\x01\x12\x1b\n\x0fhop_probability\x18\x02 \x01(\x02\x42\x02\x18\x01\x12\x12\n\x06weight\x18\x03 \x01(\x02\x42\x02\x18\x01\x12\x1f\n\x17maximum_payment_results\x18\x04 \x01(\r\x12&\n\x1eminimum_failure_relax_interval\x18\x05 \x01(\x04\x12?\n\x05model\x18\x06 \x01(\x0e\x32\x30.routerrpc.MissionControlConfig.ProbabilityModel\x12/\n\x07\x61priori\x18\x07 \x01(\x0b\x32\x1c.routerrpc.AprioriParametersH\x00\x12/\n\x07\x62imodal\x18\x08 \x01(\x0b\x32\x1c.routerrpc.BimodalParametersH\x00",\n\x10ProbabilityModel\x12\x0b\n\x07\x41PRIORI\x10\x00\x12\x0b\n\x07\x42IMODAL\x10\x01\x42\x11\n\x0f\x45stimatorConfig"P\n\x11\x42imodalParameters\x12\x13\n\x0bnode_weight\x18\x01 \x01(\x01\x12\x12\n\nscale_msat\x18\x02 \x01(\x04\x12\x12\n\ndecay_time\x18\x03 \x01(\x04"r\n\x11\x41prioriParameters\x12\x19\n\x11half_life_seconds\x18\x01 \x01(\x04\x12\x17\n\x0fhop_probability\x18\x02 \x01(\x01\x12\x0e\n\x06weight\x18\x03 \x01(\x01\x12\x19\n\x11\x63\x61pacity_fraction\x18\x04 \x01(\x01"O\n\x17QueryProbabilityRequest\x12\x11\n\tfrom_node\x18\x01 \x01(\x0c\x12\x0f\n\x07to_node\x18\x02 \x01(\x0c\x12\x10\n\x08\x61mt_msat\x18\x03 \x01(\x03"U\n\x18QueryProbabilityResponse\x12\x13\n\x0bprobability\x18\x01 \x01(\x01\x12$\n\x07history\x18\x02 \x01(\x0b\x32\x13.routerrpc.PairData"\x88\x01\n\x11\x42uildRouteRequest\x12\x10\n\x08\x61mt_msat\x18\x01 \x01(\x03\x12\x18\n\x10\x66inal_cltv_delta\x18\x02 \x01(\x05\x12\x1c\n\x10outgoing_chan_id\x18\x03 \x01(\x04\x42\x02\x30\x01\x12\x13\n\x0bhop_pubkeys\x18\x04 \x03(\x0c\x12\x14\n\x0cpayment_addr\x18\x05 \x01(\x0c"1\n\x12\x42uildRouteResponse\x12\x1b\n\x05route\x18\x01 \x01(\x0b\x32\x0c.lnrpc.Route"\x1c\n\x1aSubscribeHtlcEventsRequest"\xcb\x04\n\tHtlcEvent\x12\x1b\n\x13incoming_channel_id\x18\x01 \x01(\x04\x12\x1b\n\x13outgoing_channel_id\x18\x02 \x01(\x04\x12\x18\n\x10incoming_htlc_id\x18\x03 \x01(\x04\x12\x18\n\x10outgoing_htlc_id\x18\x04 \x01(\x04\x12\x14\n\x0ctimestamp_ns\x18\x05 \x01(\x04\x12\x32\n\nevent_type\x18\x06 \x01(\x0e\x32\x1e.routerrpc.HtlcEvent.EventType\x12\x30\n\rforward_event\x18\x07 \x01(\x0b\x32\x17.routerrpc.ForwardEventH\x00\x12\x39\n\x12\x66orward_fail_event\x18\x08 \x01(\x0b\x32\x1b.routerrpc.ForwardFailEventH\x00\x12.\n\x0csettle_event\x18\t \x01(\x0b\x32\x16.routerrpc.SettleEventH\x00\x12\x33\n\x0flink_fail_event\x18\n \x01(\x0b\x32\x18.routerrpc.LinkFailEventH\x00\x12\x36\n\x10subscribed_event\x18\x0b \x01(\x0b\x32\x1a.routerrpc.SubscribedEventH\x00\x12\x35\n\x10\x66inal_htlc_event\x18\x0c \x01(\x0b\x32\x19.routerrpc.FinalHtlcEventH\x00"<\n\tEventType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04SEND\x10\x01\x12\x0b\n\x07RECEIVE\x10\x02\x12\x0b\n\x07\x46ORWARD\x10\x03\x42\x07\n\x05\x65vent"v\n\x08HtlcInfo\x12\x19\n\x11incoming_timelock\x18\x01 \x01(\r\x12\x19\n\x11outgoing_timelock\x18\x02 \x01(\r\x12\x19\n\x11incoming_amt_msat\x18\x03 \x01(\x04\x12\x19\n\x11outgoing_amt_msat\x18\x04 \x01(\x04"1\n\x0c\x46orwardEvent\x12!\n\x04info\x18\x01 \x01(\x0b\x32\x13.routerrpc.HtlcInfo"\x12\n\x10\x46orwardFailEvent"\x1f\n\x0bSettleEvent\x12\x10\n\x08preimage\x18\x01 \x01(\x0c"3\n\x0e\x46inalHtlcEvent\x12\x0f\n\x07settled\x18\x01 \x01(\x08\x12\x10\n\x08offchain\x18\x02 \x01(\x08"\x11\n\x0fSubscribedEvent"\xae\x01\n\rLinkFailEvent\x12!\n\x04info\x18\x01 \x01(\x0b\x32\x13.routerrpc.HtlcInfo\x12\x30\n\x0cwire_failure\x18\x02 \x01(\x0e\x32\x1a.lnrpc.Failure.FailureCode\x12\x30\n\x0e\x66\x61ilure_detail\x18\x03 \x01(\x0e\x32\x18.routerrpc.FailureDetail\x12\x16\n\x0e\x66\x61ilure_string\x18\x04 \x01(\t"r\n\rPaymentStatus\x12&\n\x05state\x18\x01 \x01(\x0e\x32\x17.routerrpc.PaymentState\x12\x10\n\x08preimage\x18\x02 \x01(\x0c\x12!\n\x05htlcs\x18\x04 \x03(\x0b\x32\x12.lnrpc.HTLCAttemptJ\x04\x08\x03\x10\x04".\n\nCircuitKey\x12\x0f\n\x07\x63han_id\x18\x01 \x01(\x04\x12\x0f\n\x07htlc_id\x18\x02 \x01(\x04"\xb1\x03\n\x1b\x46orwardHtlcInterceptRequest\x12\x33\n\x14incoming_circuit_key\x18\x01 \x01(\x0b\x32\x15.routerrpc.CircuitKey\x12\x1c\n\x14incoming_amount_msat\x18\x05 \x01(\x04\x12\x17\n\x0fincoming_expiry\x18\x06 \x01(\r\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\x0c\x12"\n\x1aoutgoing_requested_chan_id\x18\x07 \x01(\x04\x12\x1c\n\x14outgoing_amount_msat\x18\x03 \x01(\x04\x12\x17\n\x0foutgoing_expiry\x18\x04 \x01(\r\x12Q\n\x0e\x63ustom_records\x18\x08 \x03(\x0b\x32\x39.routerrpc.ForwardHtlcInterceptRequest.CustomRecordsEntry\x12\x12\n\nonion_blob\x18\t \x01(\x0c\x12\x18\n\x10\x61uto_fail_height\x18\n \x01(\x05\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"\xe5\x01\n\x1c\x46orwardHtlcInterceptResponse\x12\x33\n\x14incoming_circuit_key\x18\x01 \x01(\x0b\x32\x15.routerrpc.CircuitKey\x12\x33\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32#.routerrpc.ResolveHoldForwardAction\x12\x10\n\x08preimage\x18\x03 \x01(\x0c\x12\x17\n\x0f\x66\x61ilure_message\x18\x04 \x01(\x0c\x12\x30\n\x0c\x66\x61ilure_code\x18\x05 \x01(\x0e\x32\x1a.lnrpc.Failure.FailureCode"o\n\x17UpdateChanStatusRequest\x12\'\n\nchan_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12+\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32\x1b.routerrpc.ChanStatusAction"\x1a\n\x18UpdateChanStatusResponse*\x81\x04\n\rFailureDetail\x12\x0b\n\x07UNKNOWN\x10\x00\x12\r\n\tNO_DETAIL\x10\x01\x12\x10\n\x0cONION_DECODE\x10\x02\x12\x15\n\x11LINK_NOT_ELIGIBLE\x10\x03\x12\x14\n\x10ON_CHAIN_TIMEOUT\x10\x04\x12\x14\n\x10HTLC_EXCEEDS_MAX\x10\x05\x12\x18\n\x14INSUFFICIENT_BALANCE\x10\x06\x12\x16\n\x12INCOMPLETE_FORWARD\x10\x07\x12\x13\n\x0fHTLC_ADD_FAILED\x10\x08\x12\x15\n\x11\x46ORWARDS_DISABLED\x10\t\x12\x14\n\x10INVOICE_CANCELED\x10\n\x12\x15\n\x11INVOICE_UNDERPAID\x10\x0b\x12\x1b\n\x17INVOICE_EXPIRY_TOO_SOON\x10\x0c\x12\x14\n\x10INVOICE_NOT_OPEN\x10\r\x12\x17\n\x13MPP_INVOICE_TIMEOUT\x10\x0e\x12\x14\n\x10\x41\x44\x44RESS_MISMATCH\x10\x0f\x12\x16\n\x12SET_TOTAL_MISMATCH\x10\x10\x12\x15\n\x11SET_TOTAL_TOO_LOW\x10\x11\x12\x10\n\x0cSET_OVERPAID\x10\x12\x12\x13\n\x0fUNKNOWN_INVOICE\x10\x13\x12\x13\n\x0fINVALID_KEYSEND\x10\x14\x12\x13\n\x0fMPP_IN_PROGRESS\x10\x15\x12\x12\n\x0e\x43IRCULAR_ROUTE\x10\x16*\xae\x01\n\x0cPaymentState\x12\r\n\tIN_FLIGHT\x10\x00\x12\r\n\tSUCCEEDED\x10\x01\x12\x12\n\x0e\x46\x41ILED_TIMEOUT\x10\x02\x12\x13\n\x0f\x46\x41ILED_NO_ROUTE\x10\x03\x12\x10\n\x0c\x46\x41ILED_ERROR\x10\x04\x12$\n FAILED_INCORRECT_PAYMENT_DETAILS\x10\x05\x12\x1f\n\x1b\x46\x41ILED_INSUFFICIENT_BALANCE\x10\x06*<\n\x18ResolveHoldForwardAction\x12\n\n\x06SETTLE\x10\x00\x12\x08\n\x04\x46\x41IL\x10\x01\x12\n\n\x06RESUME\x10\x02*5\n\x10\x43hanStatusAction\x12\n\n\x06\x45NABLE\x10\x00\x12\x0b\n\x07\x44ISABLE\x10\x01\x12\x08\n\x04\x41UTO\x10\x02\x32\xb5\x0c\n\x06Router\x12@\n\rSendPaymentV2\x12\x1d.routerrpc.SendPaymentRequest\x1a\x0e.lnrpc.Payment0\x01\x12\x42\n\x0eTrackPaymentV2\x12\x1e.routerrpc.TrackPaymentRequest\x1a\x0e.lnrpc.Payment0\x01\x12\x42\n\rTrackPayments\x12\x1f.routerrpc.TrackPaymentsRequest\x1a\x0e.lnrpc.Payment0\x01\x12K\n\x10\x45stimateRouteFee\x12\x1a.routerrpc.RouteFeeRequest\x1a\x1b.routerrpc.RouteFeeResponse\x12Q\n\x0bSendToRoute\x12\x1d.routerrpc.SendToRouteRequest\x1a\x1e.routerrpc.SendToRouteResponse"\x03\x88\x02\x01\x12\x42\n\rSendToRouteV2\x12\x1d.routerrpc.SendToRouteRequest\x1a\x12.lnrpc.HTLCAttempt\x12\x64\n\x13ResetMissionControl\x12%.routerrpc.ResetMissionControlRequest\x1a&.routerrpc.ResetMissionControlResponse\x12\x64\n\x13QueryMissionControl\x12%.routerrpc.QueryMissionControlRequest\x1a&.routerrpc.QueryMissionControlResponse\x12j\n\x15XImportMissionControl\x12\'.routerrpc.XImportMissionControlRequest\x1a(.routerrpc.XImportMissionControlResponse\x12p\n\x17GetMissionControlConfig\x12).routerrpc.GetMissionControlConfigRequest\x1a*.routerrpc.GetMissionControlConfigResponse\x12p\n\x17SetMissionControlConfig\x12).routerrpc.SetMissionControlConfigRequest\x1a*.routerrpc.SetMissionControlConfigResponse\x12[\n\x10QueryProbability\x12".routerrpc.QueryProbabilityRequest\x1a#.routerrpc.QueryProbabilityResponse\x12I\n\nBuildRoute\x12\x1c.routerrpc.BuildRouteRequest\x1a\x1d.routerrpc.BuildRouteResponse\x12T\n\x13SubscribeHtlcEvents\x12%.routerrpc.SubscribeHtlcEventsRequest\x1a\x14.routerrpc.HtlcEvent0\x01\x12M\n\x0bSendPayment\x12\x1d.routerrpc.SendPaymentRequest\x1a\x18.routerrpc.PaymentStatus"\x03\x88\x02\x01\x30\x01\x12O\n\x0cTrackPayment\x12\x1e.routerrpc.TrackPaymentRequest\x1a\x18.routerrpc.PaymentStatus"\x03\x88\x02\x01\x30\x01\x12\x66\n\x0fHtlcInterceptor\x12\'.routerrpc.ForwardHtlcInterceptResponse\x1a&.routerrpc.ForwardHtlcInterceptRequest(\x01\x30\x01\x12[\n\x10UpdateChanStatus\x12".routerrpc.UpdateChanStatusRequest\x1a#.routerrpc.UpdateChanStatusResponseB1Z/github.com/lightningnetwork/lnd/lnrpc/routerrpcb\x06proto3' ) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) @@ -31,6 +31,16 @@ _SENDPAYMENTREQUEST.fields_by_name[ "outgoing_chan_id" ]._serialized_options = b"\030\0010\001" + _MISSIONCONTROLCONFIG.fields_by_name["half_life_seconds"]._options = None + _MISSIONCONTROLCONFIG.fields_by_name[ + "half_life_seconds" + ]._serialized_options = b"\030\001" + _MISSIONCONTROLCONFIG.fields_by_name["hop_probability"]._options = None + _MISSIONCONTROLCONFIG.fields_by_name[ + "hop_probability" + ]._serialized_options = b"\030\001" + _MISSIONCONTROLCONFIG.fields_by_name["weight"]._options = None + _MISSIONCONTROLCONFIG.fields_by_name["weight"]._serialized_options = b"\030\001" _BUILDROUTEREQUEST.fields_by_name["outgoing_chan_id"]._options = None _BUILDROUTEREQUEST.fields_by_name["outgoing_chan_id"]._serialized_options = b"0\001" _FORWARDHTLCINTERCEPTREQUEST_CUSTOMRECORDSENTRY._options = None @@ -41,92 +51,104 @@ _ROUTER.methods_by_name["SendPayment"]._serialized_options = b"\210\002\001" _ROUTER.methods_by_name["TrackPayment"]._options = None _ROUTER.methods_by_name["TrackPayment"]._serialized_options = b"\210\002\001" - _FAILUREDETAIL._serialized_start = 4290 - _FAILUREDETAIL._serialized_end = 4803 - _PAYMENTSTATE._serialized_start = 4806 - _PAYMENTSTATE._serialized_end = 4980 - _RESOLVEHOLDFORWARDACTION._serialized_start = 4982 - _RESOLVEHOLDFORWARDACTION._serialized_end = 5042 - _CHANSTATUSACTION._serialized_start = 5044 - _CHANSTATUSACTION._serialized_end = 5097 + _FAILUREDETAIL._serialized_start = 4990 + _FAILUREDETAIL._serialized_end = 5503 + _PAYMENTSTATE._serialized_start = 5506 + _PAYMENTSTATE._serialized_end = 5680 + _RESOLVEHOLDFORWARDACTION._serialized_start = 5682 + _RESOLVEHOLDFORWARDACTION._serialized_end = 5742 + _CHANSTATUSACTION._serialized_start = 5744 + _CHANSTATUSACTION._serialized_end = 5797 _SENDPAYMENTREQUEST._serialized_start = 55 _SENDPAYMENTREQUEST._serialized_end = 750 _SENDPAYMENTREQUEST_DESTCUSTOMRECORDSENTRY._serialized_start = 694 _SENDPAYMENTREQUEST_DESTCUSTOMRECORDSENTRY._serialized_end = 750 _TRACKPAYMENTREQUEST._serialized_start = 752 _TRACKPAYMENTREQUEST._serialized_end = 824 - _ROUTEFEEREQUEST._serialized_start = 826 - _ROUTEFEEREQUEST._serialized_end = 874 - _ROUTEFEERESPONSE._serialized_start = 876 - _ROUTEFEERESPONSE._serialized_end = 945 - _SENDTOROUTEREQUEST._serialized_start = 947 - _SENDTOROUTEREQUEST._serialized_end = 1041 - _SENDTOROUTERESPONSE._serialized_start = 1043 - _SENDTOROUTERESPONSE._serialized_end = 1115 - _RESETMISSIONCONTROLREQUEST._serialized_start = 1117 - _RESETMISSIONCONTROLREQUEST._serialized_end = 1145 - _RESETMISSIONCONTROLRESPONSE._serialized_start = 1147 - _RESETMISSIONCONTROLRESPONSE._serialized_end = 1176 - _QUERYMISSIONCONTROLREQUEST._serialized_start = 1178 - _QUERYMISSIONCONTROLREQUEST._serialized_end = 1206 - _QUERYMISSIONCONTROLRESPONSE._serialized_start = 1208 - _QUERYMISSIONCONTROLRESPONSE._serialized_end = 1282 - _XIMPORTMISSIONCONTROLREQUEST._serialized_start = 1284 - _XIMPORTMISSIONCONTROLREQUEST._serialized_end = 1368 - _XIMPORTMISSIONCONTROLRESPONSE._serialized_start = 1370 - _XIMPORTMISSIONCONTROLRESPONSE._serialized_end = 1401 - _PAIRHISTORY._serialized_start = 1403 - _PAIRHISTORY._serialized_end = 1514 - _PAIRDATA._serialized_start = 1517 - _PAIRDATA._serialized_end = 1670 - _GETMISSIONCONTROLCONFIGREQUEST._serialized_start = 1672 - _GETMISSIONCONTROLCONFIGREQUEST._serialized_end = 1704 - _GETMISSIONCONTROLCONFIGRESPONSE._serialized_start = 1706 - _GETMISSIONCONTROLCONFIGRESPONSE._serialized_end = 1788 - _SETMISSIONCONTROLCONFIGREQUEST._serialized_start = 1790 - _SETMISSIONCONTROLCONFIGREQUEST._serialized_end = 1871 - _SETMISSIONCONTROLCONFIGRESPONSE._serialized_start = 1873 - _SETMISSIONCONTROLCONFIGRESPONSE._serialized_end = 1906 - _MISSIONCONTROLCONFIG._serialized_start = 1909 - _MISSIONCONTROLCONFIG._serialized_end = 2072 - _QUERYPROBABILITYREQUEST._serialized_start = 2074 - _QUERYPROBABILITYREQUEST._serialized_end = 2153 - _QUERYPROBABILITYRESPONSE._serialized_start = 2155 - _QUERYPROBABILITYRESPONSE._serialized_end = 2240 - _BUILDROUTEREQUEST._serialized_start = 2243 - _BUILDROUTEREQUEST._serialized_end = 2379 - _BUILDROUTERESPONSE._serialized_start = 2381 - _BUILDROUTERESPONSE._serialized_end = 2430 - _SUBSCRIBEHTLCEVENTSREQUEST._serialized_start = 2432 - _SUBSCRIBEHTLCEVENTSREQUEST._serialized_end = 2460 - _HTLCEVENT._serialized_start = 2463 - _HTLCEVENT._serialized_end = 2939 - _HTLCEVENT_EVENTTYPE._serialized_start = 2870 - _HTLCEVENT_EVENTTYPE._serialized_end = 2930 - _HTLCINFO._serialized_start = 2941 - _HTLCINFO._serialized_end = 3059 - _FORWARDEVENT._serialized_start = 3061 - _FORWARDEVENT._serialized_end = 3110 - _FORWARDFAILEVENT._serialized_start = 3112 - _FORWARDFAILEVENT._serialized_end = 3130 - _SETTLEEVENT._serialized_start = 3132 - _SETTLEEVENT._serialized_end = 3163 - _LINKFAILEVENT._serialized_start = 3166 - _LINKFAILEVENT._serialized_end = 3340 - _PAYMENTSTATUS._serialized_start = 3342 - _PAYMENTSTATUS._serialized_end = 3456 - _CIRCUITKEY._serialized_start = 3458 - _CIRCUITKEY._serialized_end = 3504 - _FORWARDHTLCINTERCEPTREQUEST._serialized_start = 3507 - _FORWARDHTLCINTERCEPTREQUEST._serialized_end = 3914 - _FORWARDHTLCINTERCEPTREQUEST_CUSTOMRECORDSENTRY._serialized_start = 3862 - _FORWARDHTLCINTERCEPTREQUEST_CUSTOMRECORDSENTRY._serialized_end = 3914 - _FORWARDHTLCINTERCEPTRESPONSE._serialized_start = 3917 - _FORWARDHTLCINTERCEPTRESPONSE._serialized_end = 4146 - _UPDATECHANSTATUSREQUEST._serialized_start = 4148 - _UPDATECHANSTATUSREQUEST._serialized_end = 4259 - _UPDATECHANSTATUSRESPONSE._serialized_start = 4261 - _UPDATECHANSTATUSRESPONSE._serialized_end = 4287 - _ROUTER._serialized_start = 5100 - _ROUTER._serialized_end = 6621 + _TRACKPAYMENTSREQUEST._serialized_start = 826 + _TRACKPAYMENTSREQUEST._serialized_end = 877 + _ROUTEFEEREQUEST._serialized_start = 879 + _ROUTEFEEREQUEST._serialized_end = 927 + _ROUTEFEERESPONSE._serialized_start = 929 + _ROUTEFEERESPONSE._serialized_end = 998 + _SENDTOROUTEREQUEST._serialized_start = 1000 + _SENDTOROUTEREQUEST._serialized_end = 1094 + _SENDTOROUTERESPONSE._serialized_start = 1096 + _SENDTOROUTERESPONSE._serialized_end = 1168 + _RESETMISSIONCONTROLREQUEST._serialized_start = 1170 + _RESETMISSIONCONTROLREQUEST._serialized_end = 1198 + _RESETMISSIONCONTROLRESPONSE._serialized_start = 1200 + _RESETMISSIONCONTROLRESPONSE._serialized_end = 1229 + _QUERYMISSIONCONTROLREQUEST._serialized_start = 1231 + _QUERYMISSIONCONTROLREQUEST._serialized_end = 1259 + _QUERYMISSIONCONTROLRESPONSE._serialized_start = 1261 + _QUERYMISSIONCONTROLRESPONSE._serialized_end = 1335 + _XIMPORTMISSIONCONTROLREQUEST._serialized_start = 1337 + _XIMPORTMISSIONCONTROLREQUEST._serialized_end = 1421 + _XIMPORTMISSIONCONTROLRESPONSE._serialized_start = 1423 + _XIMPORTMISSIONCONTROLRESPONSE._serialized_end = 1454 + _PAIRHISTORY._serialized_start = 1456 + _PAIRHISTORY._serialized_end = 1567 + _PAIRDATA._serialized_start = 1570 + _PAIRDATA._serialized_end = 1723 + _GETMISSIONCONTROLCONFIGREQUEST._serialized_start = 1725 + _GETMISSIONCONTROLCONFIGREQUEST._serialized_end = 1757 + _GETMISSIONCONTROLCONFIGRESPONSE._serialized_start = 1759 + _GETMISSIONCONTROLCONFIGRESPONSE._serialized_end = 1841 + _SETMISSIONCONTROLCONFIGREQUEST._serialized_start = 1843 + _SETMISSIONCONTROLCONFIGREQUEST._serialized_end = 1924 + _SETMISSIONCONTROLCONFIGRESPONSE._serialized_start = 1926 + _SETMISSIONCONTROLCONFIGRESPONSE._serialized_end = 1959 + _MISSIONCONTROLCONFIG._serialized_start = 1962 + _MISSIONCONTROLCONFIG._serialized_end = 2365 + _MISSIONCONTROLCONFIG_PROBABILITYMODEL._serialized_start = 2302 + _MISSIONCONTROLCONFIG_PROBABILITYMODEL._serialized_end = 2346 + _BIMODALPARAMETERS._serialized_start = 2367 + _BIMODALPARAMETERS._serialized_end = 2447 + _APRIORIPARAMETERS._serialized_start = 2449 + _APRIORIPARAMETERS._serialized_end = 2563 + _QUERYPROBABILITYREQUEST._serialized_start = 2565 + _QUERYPROBABILITYREQUEST._serialized_end = 2644 + _QUERYPROBABILITYRESPONSE._serialized_start = 2646 + _QUERYPROBABILITYRESPONSE._serialized_end = 2731 + _BUILDROUTEREQUEST._serialized_start = 2734 + _BUILDROUTEREQUEST._serialized_end = 2870 + _BUILDROUTERESPONSE._serialized_start = 2872 + _BUILDROUTERESPONSE._serialized_end = 2921 + _SUBSCRIBEHTLCEVENTSREQUEST._serialized_start = 2923 + _SUBSCRIBEHTLCEVENTSREQUEST._serialized_end = 2951 + _HTLCEVENT._serialized_start = 2954 + _HTLCEVENT._serialized_end = 3541 + _HTLCEVENT_EVENTTYPE._serialized_start = 3472 + _HTLCEVENT_EVENTTYPE._serialized_end = 3532 + _HTLCINFO._serialized_start = 3543 + _HTLCINFO._serialized_end = 3661 + _FORWARDEVENT._serialized_start = 3663 + _FORWARDEVENT._serialized_end = 3712 + _FORWARDFAILEVENT._serialized_start = 3714 + _FORWARDFAILEVENT._serialized_end = 3732 + _SETTLEEVENT._serialized_start = 3734 + _SETTLEEVENT._serialized_end = 3765 + _FINALHTLCEVENT._serialized_start = 3767 + _FINALHTLCEVENT._serialized_end = 3818 + _SUBSCRIBEDEVENT._serialized_start = 3820 + _SUBSCRIBEDEVENT._serialized_end = 3837 + _LINKFAILEVENT._serialized_start = 3840 + _LINKFAILEVENT._serialized_end = 4014 + _PAYMENTSTATUS._serialized_start = 4016 + _PAYMENTSTATUS._serialized_end = 4130 + _CIRCUITKEY._serialized_start = 4132 + _CIRCUITKEY._serialized_end = 4178 + _FORWARDHTLCINTERCEPTREQUEST._serialized_start = 4181 + _FORWARDHTLCINTERCEPTREQUEST._serialized_end = 4614 + _FORWARDHTLCINTERCEPTREQUEST_CUSTOMRECORDSENTRY._serialized_start = 4562 + _FORWARDHTLCINTERCEPTREQUEST_CUSTOMRECORDSENTRY._serialized_end = 4614 + _FORWARDHTLCINTERCEPTRESPONSE._serialized_start = 4617 + _FORWARDHTLCINTERCEPTRESPONSE._serialized_end = 4846 + _UPDATECHANSTATUSREQUEST._serialized_start = 4848 + _UPDATECHANSTATUSREQUEST._serialized_end = 4959 + _UPDATECHANSTATUSRESPONSE._serialized_start = 4961 + _UPDATECHANSTATUSRESPONSE._serialized_end = 4987 + _ROUTER._serialized_start = 5800 + _ROUTER._serialized_end = 7389 # @@protoc_insertion_point(module_scope) diff --git a/app/lightning/impl/protos/lnd/router_pb2_grpc.py b/app/lightning/impl/protos/lnd/router_pb2_grpc.py index 4ad744b..31e1067 100644 --- a/app/lightning/impl/protos/lnd/router_pb2_grpc.py +++ b/app/lightning/impl/protos/lnd/router_pb2_grpc.py @@ -27,6 +27,11 @@ def __init__(self, channel): request_serializer=routerrpc_dot_router__pb2.TrackPaymentRequest.SerializeToString, response_deserializer=lightning__pb2.Payment.FromString, ) + self.TrackPayments = channel.unary_stream( + "/routerrpc.Router/TrackPayments", + request_serializer=routerrpc_dot_router__pb2.TrackPaymentsRequest.SerializeToString, + response_deserializer=lightning__pb2.Payment.FromString, + ) self.EstimateRouteFee = channel.unary_unary( "/routerrpc.Router/EstimateRouteFee", request_serializer=routerrpc_dot_router__pb2.RouteFeeRequest.SerializeToString, @@ -128,6 +133,19 @@ def TrackPaymentV2(self, request, context): context.set_details("Method not implemented!") raise NotImplementedError("Method not implemented!") + def TrackPayments(self, request, context): + """ + TrackPayments returns an update stream for every payment that is not in a + terminal state. Note that if payments are in-flight while starting a new + subscription, the start of the payment stream could produce out-of-order + and/or duplicate events. In order to get updates for every in-flight + payment attempt make sure to subscribe to this method before initiating any + payments. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + def EstimateRouteFee(self, request, context): """ EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it @@ -208,8 +226,10 @@ def SetMissionControlConfig(self, request, context): def QueryProbability(self, request, context): """ - QueryProbability returns the current success probability estimate for a - given node pair and amount. + Deprecated. QueryProbability returns the current success probability + estimate for a given node pair and amount. The call returns a zero success + probability if no channel is available or if the amount violates min/max + HTLC constraints. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details("Method not implemented!") @@ -289,6 +309,11 @@ def add_RouterServicer_to_server(servicer, server): request_deserializer=routerrpc_dot_router__pb2.TrackPaymentRequest.FromString, response_serializer=lightning__pb2.Payment.SerializeToString, ), + "TrackPayments": grpc.unary_stream_rpc_method_handler( + servicer.TrackPayments, + request_deserializer=routerrpc_dot_router__pb2.TrackPaymentsRequest.FromString, + response_serializer=lightning__pb2.Payment.SerializeToString, + ), "EstimateRouteFee": grpc.unary_unary_rpc_method_handler( servicer.EstimateRouteFee, request_deserializer=routerrpc_dot_router__pb2.RouteFeeRequest.FromString, @@ -435,6 +460,35 @@ def TrackPaymentV2( metadata, ) + @staticmethod + def TrackPayments( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/routerrpc.Router/TrackPayments", + routerrpc_dot_router__pb2.TrackPaymentsRequest.SerializeToString, + lightning__pb2.Payment.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + @staticmethod def EstimateRouteFee( request, diff --git a/app/lightning/impl/protos/lnd/signer_pb2.py b/app/lightning/impl/protos/lnd/signer_pb2.py index 0597a03..48b5684 100644 --- a/app/lightning/impl/protos/lnd/signer_pb2.py +++ b/app/lightning/impl/protos/lnd/signer_pb2.py @@ -13,7 +13,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x14signrpc/signer.proto\x12\x07signrpc"3\n\nKeyLocator\x12\x12\n\nkey_family\x18\x01 \x01(\x05\x12\x11\n\tkey_index\x18\x02 \x01(\x05"L\n\rKeyDescriptor\x12\x15\n\rraw_key_bytes\x18\x01 \x01(\x0c\x12$\n\x07key_loc\x18\x02 \x01(\x0b\x32\x13.signrpc.KeyLocator")\n\x05TxOut\x12\r\n\x05value\x18\x01 \x01(\x03\x12\x11\n\tpk_script\x18\x02 \x01(\x0c"\x81\x02\n\x0eSignDescriptor\x12(\n\x08key_desc\x18\x01 \x01(\x0b\x32\x16.signrpc.KeyDescriptor\x12\x14\n\x0csingle_tweak\x18\x02 \x01(\x0c\x12\x14\n\x0c\x64ouble_tweak\x18\x03 \x01(\x0c\x12\x11\n\ttap_tweak\x18\n \x01(\x0c\x12\x16\n\x0ewitness_script\x18\x04 \x01(\x0c\x12\x1e\n\x06output\x18\x05 \x01(\x0b\x32\x0e.signrpc.TxOut\x12\x0f\n\x07sighash\x18\x07 \x01(\r\x12\x13\n\x0binput_index\x18\x08 \x01(\x05\x12(\n\x0bsign_method\x18\t \x01(\x0e\x32\x13.signrpc.SignMethod"r\n\x07SignReq\x12\x14\n\x0craw_tx_bytes\x18\x01 \x01(\x0c\x12+\n\nsign_descs\x18\x02 \x03(\x0b\x32\x17.signrpc.SignDescriptor\x12$\n\x0cprev_outputs\x18\x03 \x03(\x0b\x32\x0e.signrpc.TxOut"\x1c\n\x08SignResp\x12\x10\n\x08raw_sigs\x18\x01 \x03(\x0c"2\n\x0bInputScript\x12\x0f\n\x07witness\x18\x01 \x03(\x0c\x12\x12\n\nsig_script\x18\x02 \x01(\x0c">\n\x0fInputScriptResp\x12+\n\rinput_scripts\x18\x01 \x03(\x0b\x32\x14.signrpc.InputScript"\xa1\x01\n\x0eSignMessageReq\x12\x0b\n\x03msg\x18\x01 \x01(\x0c\x12$\n\x07key_loc\x18\x02 \x01(\x0b\x32\x13.signrpc.KeyLocator\x12\x13\n\x0b\x64ouble_hash\x18\x03 \x01(\x08\x12\x13\n\x0b\x63ompact_sig\x18\x04 \x01(\x08\x12\x13\n\x0bschnorr_sig\x18\x05 \x01(\x08\x12\x1d\n\x15schnorr_sig_tap_tweak\x18\x06 \x01(\x0c"$\n\x0fSignMessageResp\x12\x11\n\tsignature\x18\x01 \x01(\x0c"Z\n\x10VerifyMessageReq\x12\x0b\n\x03msg\x18\x01 \x01(\x0c\x12\x11\n\tsignature\x18\x02 \x01(\x0c\x12\x0e\n\x06pubkey\x18\x03 \x01(\x0c\x12\x16\n\x0eis_schnorr_sig\x18\x04 \x01(\x08""\n\x11VerifyMessageResp\x12\r\n\x05valid\x18\x01 \x01(\x08"\x80\x01\n\x10SharedKeyRequest\x12\x18\n\x10\x65phemeral_pubkey\x18\x01 \x01(\x0c\x12(\n\x07key_loc\x18\x02 \x01(\x0b\x32\x13.signrpc.KeyLocatorB\x02\x18\x01\x12(\n\x08key_desc\x18\x03 \x01(\x0b\x32\x16.signrpc.KeyDescriptor"\'\n\x11SharedKeyResponse\x12\x12\n\nshared_key\x18\x01 \x01(\x0c"-\n\tTweakDesc\x12\r\n\x05tweak\x18\x01 \x01(\x0c\x12\x11\n\tis_x_only\x18\x02 \x01(\x08"?\n\x10TaprootTweakDesc\x12\x13\n\x0bscript_root\x18\x01 \x01(\x0c\x12\x16\n\x0ekey_spend_only\x18\x02 \x01(\x08"\x8c\x01\n\x18MuSig2CombineKeysRequest\x12\x1a\n\x12\x61ll_signer_pubkeys\x18\x01 \x03(\x0c\x12"\n\x06tweaks\x18\x02 \x03(\x0b\x32\x12.signrpc.TweakDesc\x12\x30\n\rtaproot_tweak\x18\x03 \x01(\x0b\x32\x19.signrpc.TaprootTweakDesc"O\n\x19MuSig2CombineKeysResponse\x12\x14\n\x0c\x63ombined_key\x18\x01 \x01(\x0c\x12\x1c\n\x14taproot_internal_key\x18\x02 \x01(\x0c"\xd2\x01\n\x14MuSig2SessionRequest\x12$\n\x07key_loc\x18\x01 \x01(\x0b\x32\x13.signrpc.KeyLocator\x12\x1a\n\x12\x61ll_signer_pubkeys\x18\x02 \x03(\x0c\x12"\n\x1aother_signer_public_nonces\x18\x03 \x03(\x0c\x12"\n\x06tweaks\x18\x04 \x03(\x0b\x32\x12.signrpc.TweakDesc\x12\x30\n\rtaproot_tweak\x18\x05 \x01(\x0b\x32\x19.signrpc.TaprootTweakDesc"\x95\x01\n\x15MuSig2SessionResponse\x12\x12\n\nsession_id\x18\x01 \x01(\x0c\x12\x14\n\x0c\x63ombined_key\x18\x02 \x01(\x0c\x12\x1c\n\x14taproot_internal_key\x18\x03 \x01(\x0c\x12\x1b\n\x13local_public_nonces\x18\x04 \x01(\x0c\x12\x17\n\x0fhave_all_nonces\x18\x05 \x01(\x08"U\n\x1bMuSig2RegisterNoncesRequest\x12\x12\n\nsession_id\x18\x01 \x01(\x0c\x12"\n\x1aother_signer_public_nonces\x18\x03 \x03(\x0c"7\n\x1cMuSig2RegisterNoncesResponse\x12\x17\n\x0fhave_all_nonces\x18\x01 \x01(\x08"P\n\x11MuSig2SignRequest\x12\x12\n\nsession_id\x18\x01 \x01(\x0c\x12\x16\n\x0emessage_digest\x18\x02 \x01(\x0c\x12\x0f\n\x07\x63leanup\x18\x03 \x01(\x08"5\n\x12MuSig2SignResponse\x12\x1f\n\x17local_partial_signature\x18\x01 \x01(\x0c"O\n\x17MuSig2CombineSigRequest\x12\x12\n\nsession_id\x18\x01 \x01(\x0c\x12 \n\x18other_partial_signatures\x18\x02 \x03(\x0c"P\n\x18MuSig2CombineSigResponse\x12\x1b\n\x13have_all_signatures\x18\x01 \x01(\x08\x12\x17\n\x0f\x66inal_signature\x18\x02 \x01(\x0c"*\n\x14MuSig2CleanupRequest\x12\x12\n\nsession_id\x18\x01 \x01(\x0c"\x17\n\x15MuSig2CleanupResponse*\x9c\x01\n\nSignMethod\x12\x1a\n\x16SIGN_METHOD_WITNESS_V0\x10\x00\x12)\n%SIGN_METHOD_TAPROOT_KEY_SPEND_BIP0086\x10\x01\x12!\n\x1dSIGN_METHOD_TAPROOT_KEY_SPEND\x10\x02\x12$\n SIGN_METHOD_TAPROOT_SCRIPT_SPEND\x10\x03\x32\xdb\x06\n\x06Signer\x12\x34\n\rSignOutputRaw\x12\x10.signrpc.SignReq\x1a\x11.signrpc.SignResp\x12@\n\x12\x43omputeInputScript\x12\x10.signrpc.SignReq\x1a\x18.signrpc.InputScriptResp\x12@\n\x0bSignMessage\x12\x17.signrpc.SignMessageReq\x1a\x18.signrpc.SignMessageResp\x12\x46\n\rVerifyMessage\x12\x19.signrpc.VerifyMessageReq\x1a\x1a.signrpc.VerifyMessageResp\x12H\n\x0f\x44\x65riveSharedKey\x12\x19.signrpc.SharedKeyRequest\x1a\x1a.signrpc.SharedKeyResponse\x12Z\n\x11MuSig2CombineKeys\x12!.signrpc.MuSig2CombineKeysRequest\x1a".signrpc.MuSig2CombineKeysResponse\x12T\n\x13MuSig2CreateSession\x12\x1d.signrpc.MuSig2SessionRequest\x1a\x1e.signrpc.MuSig2SessionResponse\x12\x63\n\x14MuSig2RegisterNonces\x12$.signrpc.MuSig2RegisterNoncesRequest\x1a%.signrpc.MuSig2RegisterNoncesResponse\x12\x45\n\nMuSig2Sign\x12\x1a.signrpc.MuSig2SignRequest\x1a\x1b.signrpc.MuSig2SignResponse\x12W\n\x10MuSig2CombineSig\x12 .signrpc.MuSig2CombineSigRequest\x1a!.signrpc.MuSig2CombineSigResponse\x12N\n\rMuSig2Cleanup\x12\x1d.signrpc.MuSig2CleanupRequest\x1a\x1e.signrpc.MuSig2CleanupResponseB/Z-github.com/lightningnetwork/lnd/lnrpc/signrpcb\x06proto3' + b'\n\x14signrpc/signer.proto\x12\x07signrpc"3\n\nKeyLocator\x12\x12\n\nkey_family\x18\x01 \x01(\x05\x12\x11\n\tkey_index\x18\x02 \x01(\x05"L\n\rKeyDescriptor\x12\x15\n\rraw_key_bytes\x18\x01 \x01(\x0c\x12$\n\x07key_loc\x18\x02 \x01(\x0b\x32\x13.signrpc.KeyLocator")\n\x05TxOut\x12\r\n\x05value\x18\x01 \x01(\x03\x12\x11\n\tpk_script\x18\x02 \x01(\x0c"\x81\x02\n\x0eSignDescriptor\x12(\n\x08key_desc\x18\x01 \x01(\x0b\x32\x16.signrpc.KeyDescriptor\x12\x14\n\x0csingle_tweak\x18\x02 \x01(\x0c\x12\x14\n\x0c\x64ouble_tweak\x18\x03 \x01(\x0c\x12\x11\n\ttap_tweak\x18\n \x01(\x0c\x12\x16\n\x0ewitness_script\x18\x04 \x01(\x0c\x12\x1e\n\x06output\x18\x05 \x01(\x0b\x32\x0e.signrpc.TxOut\x12\x0f\n\x07sighash\x18\x07 \x01(\r\x12\x13\n\x0binput_index\x18\x08 \x01(\x05\x12(\n\x0bsign_method\x18\t \x01(\x0e\x32\x13.signrpc.SignMethod"r\n\x07SignReq\x12\x14\n\x0craw_tx_bytes\x18\x01 \x01(\x0c\x12+\n\nsign_descs\x18\x02 \x03(\x0b\x32\x17.signrpc.SignDescriptor\x12$\n\x0cprev_outputs\x18\x03 \x03(\x0b\x32\x0e.signrpc.TxOut"\x1c\n\x08SignResp\x12\x10\n\x08raw_sigs\x18\x01 \x03(\x0c"2\n\x0bInputScript\x12\x0f\n\x07witness\x18\x01 \x03(\x0c\x12\x12\n\nsig_script\x18\x02 \x01(\x0c">\n\x0fInputScriptResp\x12+\n\rinput_scripts\x18\x01 \x03(\x0b\x32\x14.signrpc.InputScript"\xa1\x01\n\x0eSignMessageReq\x12\x0b\n\x03msg\x18\x01 \x01(\x0c\x12$\n\x07key_loc\x18\x02 \x01(\x0b\x32\x13.signrpc.KeyLocator\x12\x13\n\x0b\x64ouble_hash\x18\x03 \x01(\x08\x12\x13\n\x0b\x63ompact_sig\x18\x04 \x01(\x08\x12\x13\n\x0bschnorr_sig\x18\x05 \x01(\x08\x12\x1d\n\x15schnorr_sig_tap_tweak\x18\x06 \x01(\x0c"$\n\x0fSignMessageResp\x12\x11\n\tsignature\x18\x01 \x01(\x0c"Z\n\x10VerifyMessageReq\x12\x0b\n\x03msg\x18\x01 \x01(\x0c\x12\x11\n\tsignature\x18\x02 \x01(\x0c\x12\x0e\n\x06pubkey\x18\x03 \x01(\x0c\x12\x16\n\x0eis_schnorr_sig\x18\x04 \x01(\x08""\n\x11VerifyMessageResp\x12\r\n\x05valid\x18\x01 \x01(\x08"\x80\x01\n\x10SharedKeyRequest\x12\x18\n\x10\x65phemeral_pubkey\x18\x01 \x01(\x0c\x12(\n\x07key_loc\x18\x02 \x01(\x0b\x32\x13.signrpc.KeyLocatorB\x02\x18\x01\x12(\n\x08key_desc\x18\x03 \x01(\x0b\x32\x16.signrpc.KeyDescriptor"\'\n\x11SharedKeyResponse\x12\x12\n\nshared_key\x18\x01 \x01(\x0c"-\n\tTweakDesc\x12\r\n\x05tweak\x18\x01 \x01(\x0c\x12\x11\n\tis_x_only\x18\x02 \x01(\x08"?\n\x10TaprootTweakDesc\x12\x13\n\x0bscript_root\x18\x01 \x01(\x0c\x12\x16\n\x0ekey_spend_only\x18\x02 \x01(\x08"\xb5\x01\n\x18MuSig2CombineKeysRequest\x12\x1a\n\x12\x61ll_signer_pubkeys\x18\x01 \x03(\x0c\x12"\n\x06tweaks\x18\x02 \x03(\x0b\x32\x12.signrpc.TweakDesc\x12\x30\n\rtaproot_tweak\x18\x03 \x01(\x0b\x32\x19.signrpc.TaprootTweakDesc\x12\'\n\x07version\x18\x04 \x01(\x0e\x32\x16.signrpc.MuSig2Version"x\n\x19MuSig2CombineKeysResponse\x12\x14\n\x0c\x63ombined_key\x18\x01 \x01(\x0c\x12\x1c\n\x14taproot_internal_key\x18\x02 \x01(\x0c\x12\'\n\x07version\x18\x04 \x01(\x0e\x32\x16.signrpc.MuSig2Version"\xfb\x01\n\x14MuSig2SessionRequest\x12$\n\x07key_loc\x18\x01 \x01(\x0b\x32\x13.signrpc.KeyLocator\x12\x1a\n\x12\x61ll_signer_pubkeys\x18\x02 \x03(\x0c\x12"\n\x1aother_signer_public_nonces\x18\x03 \x03(\x0c\x12"\n\x06tweaks\x18\x04 \x03(\x0b\x32\x12.signrpc.TweakDesc\x12\x30\n\rtaproot_tweak\x18\x05 \x01(\x0b\x32\x19.signrpc.TaprootTweakDesc\x12\'\n\x07version\x18\x06 \x01(\x0e\x32\x16.signrpc.MuSig2Version"\xbe\x01\n\x15MuSig2SessionResponse\x12\x12\n\nsession_id\x18\x01 \x01(\x0c\x12\x14\n\x0c\x63ombined_key\x18\x02 \x01(\x0c\x12\x1c\n\x14taproot_internal_key\x18\x03 \x01(\x0c\x12\x1b\n\x13local_public_nonces\x18\x04 \x01(\x0c\x12\x17\n\x0fhave_all_nonces\x18\x05 \x01(\x08\x12\'\n\x07version\x18\x06 \x01(\x0e\x32\x16.signrpc.MuSig2Version"U\n\x1bMuSig2RegisterNoncesRequest\x12\x12\n\nsession_id\x18\x01 \x01(\x0c\x12"\n\x1aother_signer_public_nonces\x18\x03 \x03(\x0c"7\n\x1cMuSig2RegisterNoncesResponse\x12\x17\n\x0fhave_all_nonces\x18\x01 \x01(\x08"P\n\x11MuSig2SignRequest\x12\x12\n\nsession_id\x18\x01 \x01(\x0c\x12\x16\n\x0emessage_digest\x18\x02 \x01(\x0c\x12\x0f\n\x07\x63leanup\x18\x03 \x01(\x08"5\n\x12MuSig2SignResponse\x12\x1f\n\x17local_partial_signature\x18\x01 \x01(\x0c"O\n\x17MuSig2CombineSigRequest\x12\x12\n\nsession_id\x18\x01 \x01(\x0c\x12 \n\x18other_partial_signatures\x18\x02 \x03(\x0c"P\n\x18MuSig2CombineSigResponse\x12\x1b\n\x13have_all_signatures\x18\x01 \x01(\x08\x12\x17\n\x0f\x66inal_signature\x18\x02 \x01(\x0c"*\n\x14MuSig2CleanupRequest\x12\x12\n\nsession_id\x18\x01 \x01(\x0c"\x17\n\x15MuSig2CleanupResponse*\x9c\x01\n\nSignMethod\x12\x1a\n\x16SIGN_METHOD_WITNESS_V0\x10\x00\x12)\n%SIGN_METHOD_TAPROOT_KEY_SPEND_BIP0086\x10\x01\x12!\n\x1dSIGN_METHOD_TAPROOT_KEY_SPEND\x10\x02\x12$\n SIGN_METHOD_TAPROOT_SCRIPT_SPEND\x10\x03*b\n\rMuSig2Version\x12\x1c\n\x18MUSIG2_VERSION_UNDEFINED\x10\x00\x12\x17\n\x13MUSIG2_VERSION_V040\x10\x01\x12\x1a\n\x16MUSIG2_VERSION_V100RC2\x10\x02\x32\xdb\x06\n\x06Signer\x12\x34\n\rSignOutputRaw\x12\x10.signrpc.SignReq\x1a\x11.signrpc.SignResp\x12@\n\x12\x43omputeInputScript\x12\x10.signrpc.SignReq\x1a\x18.signrpc.InputScriptResp\x12@\n\x0bSignMessage\x12\x17.signrpc.SignMessageReq\x1a\x18.signrpc.SignMessageResp\x12\x46\n\rVerifyMessage\x12\x19.signrpc.VerifyMessageReq\x1a\x1a.signrpc.VerifyMessageResp\x12H\n\x0f\x44\x65riveSharedKey\x12\x19.signrpc.SharedKeyRequest\x1a\x1a.signrpc.SharedKeyResponse\x12Z\n\x11MuSig2CombineKeys\x12!.signrpc.MuSig2CombineKeysRequest\x1a".signrpc.MuSig2CombineKeysResponse\x12T\n\x13MuSig2CreateSession\x12\x1d.signrpc.MuSig2SessionRequest\x1a\x1e.signrpc.MuSig2SessionResponse\x12\x63\n\x14MuSig2RegisterNonces\x12$.signrpc.MuSig2RegisterNoncesRequest\x1a%.signrpc.MuSig2RegisterNoncesResponse\x12\x45\n\nMuSig2Sign\x12\x1a.signrpc.MuSig2SignRequest\x1a\x1b.signrpc.MuSig2SignResponse\x12W\n\x10MuSig2CombineSig\x12 .signrpc.MuSig2CombineSigRequest\x1a!.signrpc.MuSig2CombineSigResponse\x12N\n\rMuSig2Cleanup\x12\x1d.signrpc.MuSig2CleanupRequest\x1a\x1e.signrpc.MuSig2CleanupResponseB/Z-github.com/lightningnetwork/lnd/lnrpc/signrpcb\x06proto3' ) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) @@ -23,8 +23,10 @@ DESCRIPTOR._serialized_options = b"Z-github.com/lightningnetwork/lnd/lnrpc/signrpc" _SHAREDKEYREQUEST.fields_by_name["key_loc"]._options = None _SHAREDKEYREQUEST.fields_by_name["key_loc"]._serialized_options = b"\030\001" - _SIGNMETHOD._serialized_start = 2446 - _SIGNMETHOD._serialized_end = 2602 + _SIGNMETHOD._serialized_start = 2610 + _SIGNMETHOD._serialized_end = 2766 + _MUSIG2VERSION._serialized_start = 2768 + _MUSIG2VERSION._serialized_end = 2866 _KEYLOCATOR._serialized_start = 33 _KEYLOCATOR._serialized_end = 84 _KEYDESCRIPTOR._serialized_start = 86 @@ -58,29 +60,29 @@ _TAPROOTTWEAKDESC._serialized_start = 1278 _TAPROOTTWEAKDESC._serialized_end = 1341 _MUSIG2COMBINEKEYSREQUEST._serialized_start = 1344 - _MUSIG2COMBINEKEYSREQUEST._serialized_end = 1484 - _MUSIG2COMBINEKEYSRESPONSE._serialized_start = 1486 - _MUSIG2COMBINEKEYSRESPONSE._serialized_end = 1565 - _MUSIG2SESSIONREQUEST._serialized_start = 1568 - _MUSIG2SESSIONREQUEST._serialized_end = 1778 - _MUSIG2SESSIONRESPONSE._serialized_start = 1781 - _MUSIG2SESSIONRESPONSE._serialized_end = 1930 - _MUSIG2REGISTERNONCESREQUEST._serialized_start = 1932 - _MUSIG2REGISTERNONCESREQUEST._serialized_end = 2017 - _MUSIG2REGISTERNONCESRESPONSE._serialized_start = 2019 - _MUSIG2REGISTERNONCESRESPONSE._serialized_end = 2074 - _MUSIG2SIGNREQUEST._serialized_start = 2076 - _MUSIG2SIGNREQUEST._serialized_end = 2156 - _MUSIG2SIGNRESPONSE._serialized_start = 2158 - _MUSIG2SIGNRESPONSE._serialized_end = 2211 - _MUSIG2COMBINESIGREQUEST._serialized_start = 2213 - _MUSIG2COMBINESIGREQUEST._serialized_end = 2292 - _MUSIG2COMBINESIGRESPONSE._serialized_start = 2294 - _MUSIG2COMBINESIGRESPONSE._serialized_end = 2374 - _MUSIG2CLEANUPREQUEST._serialized_start = 2376 - _MUSIG2CLEANUPREQUEST._serialized_end = 2418 - _MUSIG2CLEANUPRESPONSE._serialized_start = 2420 - _MUSIG2CLEANUPRESPONSE._serialized_end = 2443 - _SIGNER._serialized_start = 2605 - _SIGNER._serialized_end = 3464 + _MUSIG2COMBINEKEYSREQUEST._serialized_end = 1525 + _MUSIG2COMBINEKEYSRESPONSE._serialized_start = 1527 + _MUSIG2COMBINEKEYSRESPONSE._serialized_end = 1647 + _MUSIG2SESSIONREQUEST._serialized_start = 1650 + _MUSIG2SESSIONREQUEST._serialized_end = 1901 + _MUSIG2SESSIONRESPONSE._serialized_start = 1904 + _MUSIG2SESSIONRESPONSE._serialized_end = 2094 + _MUSIG2REGISTERNONCESREQUEST._serialized_start = 2096 + _MUSIG2REGISTERNONCESREQUEST._serialized_end = 2181 + _MUSIG2REGISTERNONCESRESPONSE._serialized_start = 2183 + _MUSIG2REGISTERNONCESRESPONSE._serialized_end = 2238 + _MUSIG2SIGNREQUEST._serialized_start = 2240 + _MUSIG2SIGNREQUEST._serialized_end = 2320 + _MUSIG2SIGNRESPONSE._serialized_start = 2322 + _MUSIG2SIGNRESPONSE._serialized_end = 2375 + _MUSIG2COMBINESIGREQUEST._serialized_start = 2377 + _MUSIG2COMBINESIGREQUEST._serialized_end = 2456 + _MUSIG2COMBINESIGRESPONSE._serialized_start = 2458 + _MUSIG2COMBINESIGRESPONSE._serialized_end = 2538 + _MUSIG2CLEANUPREQUEST._serialized_start = 2540 + _MUSIG2CLEANUPREQUEST._serialized_end = 2582 + _MUSIG2CLEANUPRESPONSE._serialized_start = 2584 + _MUSIG2CLEANUPRESPONSE._serialized_end = 2607 + _SIGNER._serialized_start = 2869 + _SIGNER._serialized_end = 3728 # @@protoc_insertion_point(module_scope) diff --git a/app/lightning/impl/protos/lnd/walletunlocker_pb2.py b/app/lightning/impl/protos/lnd/walletunlocker_pb2.py index 38dcfaf..9bc623e 100644 --- a/app/lightning/impl/protos/lnd/walletunlocker_pb2.py +++ b/app/lightning/impl/protos/lnd/walletunlocker_pb2.py @@ -15,7 +15,7 @@ import app.lightning.impl.protos.lnd.lightning_pb2 as lightning__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x14walletunlocker.proto\x12\x05lnrpc\x1a\x0flightning.proto"A\n\x0eGenSeedRequest\x12\x19\n\x11\x61\x65zeed_passphrase\x18\x01 \x01(\x0c\x12\x14\n\x0cseed_entropy\x18\x02 \x01(\x0c"H\n\x0fGenSeedResponse\x12\x1c\n\x14\x63ipher_seed_mnemonic\x18\x01 \x03(\t\x12\x17\n\x0f\x65nciphered_seed\x18\x02 \x01(\x0c"\xbd\x02\n\x11InitWalletRequest\x12\x17\n\x0fwallet_password\x18\x01 \x01(\x0c\x12\x1c\n\x14\x63ipher_seed_mnemonic\x18\x02 \x03(\t\x12\x19\n\x11\x61\x65zeed_passphrase\x18\x03 \x01(\x0c\x12\x17\n\x0frecovery_window\x18\x04 \x01(\x05\x12\x32\n\x0f\x63hannel_backups\x18\x05 \x01(\x0b\x32\x19.lnrpc.ChanBackupSnapshot\x12\x16\n\x0estateless_init\x18\x06 \x01(\x08\x12\x1b\n\x13\x65xtended_master_key\x18\x07 \x01(\t\x12.\n&extended_master_key_birthday_timestamp\x18\x08 \x01(\x04\x12$\n\nwatch_only\x18\t \x01(\x0b\x32\x10.lnrpc.WatchOnly",\n\x12InitWalletResponse\x12\x16\n\x0e\x61\x64min_macaroon\x18\x01 \x01(\x0c"}\n\tWatchOnly\x12%\n\x1dmaster_key_birthday_timestamp\x18\x01 \x01(\x04\x12\x1e\n\x16master_key_fingerprint\x18\x02 \x01(\x0c\x12)\n\x08\x61\x63\x63ounts\x18\x03 \x03(\x0b\x32\x17.lnrpc.WatchOnlyAccount"U\n\x10WatchOnlyAccount\x12\x0f\n\x07purpose\x18\x01 \x01(\r\x12\x11\n\tcoin_type\x18\x02 \x01(\r\x12\x0f\n\x07\x61\x63\x63ount\x18\x03 \x01(\r\x12\x0c\n\x04xpub\x18\x04 \x01(\t"\x93\x01\n\x13UnlockWalletRequest\x12\x17\n\x0fwallet_password\x18\x01 \x01(\x0c\x12\x17\n\x0frecovery_window\x18\x02 \x01(\x05\x12\x32\n\x0f\x63hannel_backups\x18\x03 \x01(\x0b\x32\x19.lnrpc.ChanBackupSnapshot\x12\x16\n\x0estateless_init\x18\x04 \x01(\x08"\x16\n\x14UnlockWalletResponse"~\n\x15\x43hangePasswordRequest\x12\x18\n\x10\x63urrent_password\x18\x01 \x01(\x0c\x12\x14\n\x0cnew_password\x18\x02 \x01(\x0c\x12\x16\n\x0estateless_init\x18\x03 \x01(\x08\x12\x1d\n\x15new_macaroon_root_key\x18\x04 \x01(\x08"0\n\x16\x43hangePasswordResponse\x12\x16\n\x0e\x61\x64min_macaroon\x18\x01 \x01(\x0c\x32\xa5\x02\n\x0eWalletUnlocker\x12\x38\n\x07GenSeed\x12\x15.lnrpc.GenSeedRequest\x1a\x16.lnrpc.GenSeedResponse\x12\x41\n\nInitWallet\x12\x18.lnrpc.InitWalletRequest\x1a\x19.lnrpc.InitWalletResponse\x12G\n\x0cUnlockWallet\x12\x1a.lnrpc.UnlockWalletRequest\x1a\x1b.lnrpc.UnlockWalletResponse\x12M\n\x0e\x43hangePassword\x12\x1c.lnrpc.ChangePasswordRequest\x1a\x1d.lnrpc.ChangePasswordResponseB\'Z%github.com/lightningnetwork/lnd/lnrpcb\x06proto3' + b'\n\x14walletunlocker.proto\x12\x05lnrpc\x1a\x0flightning.proto"A\n\x0eGenSeedRequest\x12\x19\n\x11\x61\x65zeed_passphrase\x18\x01 \x01(\x0c\x12\x14\n\x0cseed_entropy\x18\x02 \x01(\x0c"H\n\x0fGenSeedResponse\x12\x1c\n\x14\x63ipher_seed_mnemonic\x18\x01 \x03(\t\x12\x17\n\x0f\x65nciphered_seed\x18\x02 \x01(\x0c"\xd8\x02\n\x11InitWalletRequest\x12\x17\n\x0fwallet_password\x18\x01 \x01(\x0c\x12\x1c\n\x14\x63ipher_seed_mnemonic\x18\x02 \x03(\t\x12\x19\n\x11\x61\x65zeed_passphrase\x18\x03 \x01(\x0c\x12\x17\n\x0frecovery_window\x18\x04 \x01(\x05\x12\x32\n\x0f\x63hannel_backups\x18\x05 \x01(\x0b\x32\x19.lnrpc.ChanBackupSnapshot\x12\x16\n\x0estateless_init\x18\x06 \x01(\x08\x12\x1b\n\x13\x65xtended_master_key\x18\x07 \x01(\t\x12.\n&extended_master_key_birthday_timestamp\x18\x08 \x01(\x04\x12$\n\nwatch_only\x18\t \x01(\x0b\x32\x10.lnrpc.WatchOnly\x12\x19\n\x11macaroon_root_key\x18\n \x01(\x0c",\n\x12InitWalletResponse\x12\x16\n\x0e\x61\x64min_macaroon\x18\x01 \x01(\x0c"}\n\tWatchOnly\x12%\n\x1dmaster_key_birthday_timestamp\x18\x01 \x01(\x04\x12\x1e\n\x16master_key_fingerprint\x18\x02 \x01(\x0c\x12)\n\x08\x61\x63\x63ounts\x18\x03 \x03(\x0b\x32\x17.lnrpc.WatchOnlyAccount"U\n\x10WatchOnlyAccount\x12\x0f\n\x07purpose\x18\x01 \x01(\r\x12\x11\n\tcoin_type\x18\x02 \x01(\r\x12\x0f\n\x07\x61\x63\x63ount\x18\x03 \x01(\r\x12\x0c\n\x04xpub\x18\x04 \x01(\t"\x93\x01\n\x13UnlockWalletRequest\x12\x17\n\x0fwallet_password\x18\x01 \x01(\x0c\x12\x17\n\x0frecovery_window\x18\x02 \x01(\x05\x12\x32\n\x0f\x63hannel_backups\x18\x03 \x01(\x0b\x32\x19.lnrpc.ChanBackupSnapshot\x12\x16\n\x0estateless_init\x18\x04 \x01(\x08"\x16\n\x14UnlockWalletResponse"~\n\x15\x43hangePasswordRequest\x12\x18\n\x10\x63urrent_password\x18\x01 \x01(\x0c\x12\x14\n\x0cnew_password\x18\x02 \x01(\x0c\x12\x16\n\x0estateless_init\x18\x03 \x01(\x08\x12\x1d\n\x15new_macaroon_root_key\x18\x04 \x01(\x08"0\n\x16\x43hangePasswordResponse\x12\x16\n\x0e\x61\x64min_macaroon\x18\x01 \x01(\x0c\x32\xa5\x02\n\x0eWalletUnlocker\x12\x38\n\x07GenSeed\x12\x15.lnrpc.GenSeedRequest\x1a\x16.lnrpc.GenSeedResponse\x12\x41\n\nInitWallet\x12\x18.lnrpc.InitWalletRequest\x1a\x19.lnrpc.InitWalletResponse\x12G\n\x0cUnlockWallet\x12\x1a.lnrpc.UnlockWalletRequest\x1a\x1b.lnrpc.UnlockWalletResponse\x12M\n\x0e\x43hangePassword\x12\x1c.lnrpc.ChangePasswordRequest\x1a\x1d.lnrpc.ChangePasswordResponseB\'Z%github.com/lightningnetwork/lnd/lnrpcb\x06proto3' ) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) @@ -28,21 +28,21 @@ _GENSEEDRESPONSE._serialized_start = 115 _GENSEEDRESPONSE._serialized_end = 187 _INITWALLETREQUEST._serialized_start = 190 - _INITWALLETREQUEST._serialized_end = 507 - _INITWALLETRESPONSE._serialized_start = 509 - _INITWALLETRESPONSE._serialized_end = 553 - _WATCHONLY._serialized_start = 555 - _WATCHONLY._serialized_end = 680 - _WATCHONLYACCOUNT._serialized_start = 682 - _WATCHONLYACCOUNT._serialized_end = 767 - _UNLOCKWALLETREQUEST._serialized_start = 770 - _UNLOCKWALLETREQUEST._serialized_end = 917 - _UNLOCKWALLETRESPONSE._serialized_start = 919 - _UNLOCKWALLETRESPONSE._serialized_end = 941 - _CHANGEPASSWORDREQUEST._serialized_start = 943 - _CHANGEPASSWORDREQUEST._serialized_end = 1069 - _CHANGEPASSWORDRESPONSE._serialized_start = 1071 - _CHANGEPASSWORDRESPONSE._serialized_end = 1119 - _WALLETUNLOCKER._serialized_start = 1122 - _WALLETUNLOCKER._serialized_end = 1415 + _INITWALLETREQUEST._serialized_end = 534 + _INITWALLETRESPONSE._serialized_start = 536 + _INITWALLETRESPONSE._serialized_end = 580 + _WATCHONLY._serialized_start = 582 + _WATCHONLY._serialized_end = 707 + _WATCHONLYACCOUNT._serialized_start = 709 + _WATCHONLYACCOUNT._serialized_end = 794 + _UNLOCKWALLETREQUEST._serialized_start = 797 + _UNLOCKWALLETREQUEST._serialized_end = 944 + _UNLOCKWALLETRESPONSE._serialized_start = 946 + _UNLOCKWALLETRESPONSE._serialized_end = 968 + _CHANGEPASSWORDREQUEST._serialized_start = 970 + _CHANGEPASSWORDREQUEST._serialized_end = 1096 + _CHANGEPASSWORDRESPONSE._serialized_start = 1098 + _CHANGEPASSWORDRESPONSE._serialized_end = 1146 + _WALLETUNLOCKER._serialized_start = 1149 + _WALLETUNLOCKER._serialized_end = 1442 # @@protoc_insertion_point(module_scope) From 6b67681fd346113cf4d5a0d9b50dc9b2f28d5f7d Mon Sep 17 00:00:00 2001 From: fusion44 Date: Sun, 7 May 2023 20:01:53 +0200 Subject: [PATCH 3/4] feat: improve list-channels endpoint * new parameters (include_closed, peer_alias_lookup) * returns the channel state, initiator and the closer if applicable * CLN gRPC remains TODO refs #199 --- app/lightning/exceptions.py | 11 ++ app/lightning/impl/cln_grpc.py | 9 +- app/lightning/impl/cln_jrpc.py | 22 ++-- app/lightning/impl/ln_base.py | 6 +- app/lightning/impl/lnd_grpc.py | 189 +++++++++++++++++++++++++++----- app/lightning/models.py | 191 +++++++++++++++++++++++++-------- app/lightning/router.py | 25 ++++- app/lightning/service.py | 7 +- 8 files changed, 375 insertions(+), 85 deletions(-) diff --git a/app/lightning/exceptions.py b/app/lightning/exceptions.py index 39e71b6..b738527 100644 --- a/app/lightning/exceptions.py +++ b/app/lightning/exceptions.py @@ -1,6 +1,17 @@ from fastapi import HTTPException, status +class OpenChannelPushAmountError(HTTPException): + """Raised when a the push amount is lower than the channel size.""" + + def __init__(self, local_funding, push_amt): + self.status_code = status.HTTP_400_BAD_REQUEST + self.detail = ( + f"Push amount {push_amt} must be lower than " + f"local funding amount {local_funding}" + ) + + class NodeNotFoundError(HTTPException): """Raised when a node is not found in the graph.""" diff --git a/app/lightning/impl/cln_grpc.py b/app/lightning/impl/cln_grpc.py index 175ea03..ce2647d 100644 --- a/app/lightning/impl/cln_grpc.py +++ b/app/lightning/impl/cln_grpc.py @@ -987,10 +987,15 @@ async def channel_open( raise HTTPException(status.HTTP_500_INTERNAL_SERVER_ERROR, detail=details) @logger.catch(exclude=(HTTPException,)) - async def channel_list(self) -> List[Channel]: - logger.trace("channel_list()") + async def channel_list( + self, + include_closed: bool, + peer_alias_lookup: bool, + ) -> List[Channel]: + logger.trace(f"channel_list({include_closed}, {peer_alias_lookup})") try: + # TODO: switch to ListPeerChannels res = await self._cln_stub.ListFunds(ln.ListfundsRequest()) peer_ids = [c.peer_id for c in res.channels] peer_res = await asyncio.gather( diff --git a/app/lightning/impl/cln_jrpc.py b/app/lightning/impl/cln_jrpc.py index 2420d71..bee76a2 100644 --- a/app/lightning/impl/cln_jrpc.py +++ b/app/lightning/impl/cln_jrpc.py @@ -815,20 +815,26 @@ async def peer_resolve_alias(self, node_pub: str) -> str: return str(nodes[0]["alias"]) @logger.catch(exclude=(HTTPException,)) - async def channel_list(self) -> List[Channel]: - logger.trace("channel_list()") + async def channel_list( + self, + include_closed: bool, + peer_alias_lookup: bool, + ) -> List[Channel]: + logger.trace(f"channel_list({include_closed}, {peer_alias_lookup})") - res = await self._send_request("listfunds") + res = await self._send_request("listpeerchannels") if "error" in res: self._raise_internal_server_error("listing channels", res) res = res["result"] - peer_ids = [c["peer_id"] for c in res["channels"]] - peers = await asyncio.gather( - *[alias_or_empty(self.peer_resolve_alias, p) for p in peer_ids], - return_exceptions=True, - ) + peers = [""] * len(res["channels"]) + if peer_alias_lookup: + peer_ids = [c["peer_id"] for c in res["channels"]] + peers = await asyncio.gather( + *[alias_or_empty(self.peer_resolve_alias, p) for p in peer_ids], + return_exceptions=True, + ) channels = [] for c, p in zip(res["channels"], peers): diff --git a/app/lightning/impl/ln_base.py b/app/lightning/impl/ln_base.py index 862fe7b..b7560f9 100644 --- a/app/lightning/impl/ln_base.py +++ b/app/lightning/impl/ln_base.py @@ -129,7 +129,11 @@ async def peer_resolve_alias(self, node_pub: str) -> str: raise NotImplementedError() @abstractmethod - async def channel_list(self) -> List[Channel]: + async def channel_list( + self, + include_closed: bool, + peer_alias_lookup: bool, + ) -> List[Channel]: raise NotImplementedError() @abstractmethod diff --git a/app/lightning/impl/lnd_grpc.py b/app/lightning/impl/lnd_grpc.py index 7ebe0af..4f9dcd6 100644 --- a/app/lightning/impl/lnd_grpc.py +++ b/app/lightning/impl/lnd_grpc.py @@ -16,10 +16,12 @@ import app.lightning.impl.protos.lnd.walletunlocker_pb2 as unlocker import app.lightning.impl.protos.lnd.walletunlocker_pb2_grpc as unlockerrpc from app.api.utils import SSE, broadcast_sse_msg, config_get_hex_str -from app.lightning.exceptions import NodeNotFoundError +from app.lightning.exceptions import NodeNotFoundError, OpenChannelPushAmountError from app.lightning.impl.ln_base import LightningNodeBase from app.lightning.models import ( Channel, + ChannelInitiator, + ChannelState, FeeRevenue, ForwardSuccessEvent, GenericTx, @@ -856,9 +858,22 @@ async def channel_open( return str(response.chan_pending.txid.hex()) except grpc.aio._call.AioRpcError as error: - raise HTTPException( - status.HTTP_500_INTERNAL_SERVER_ERROR, detail=error.details() - ) + details = error.details() + if ( + "amount pushed to remote peer for initial state must " + "be below the local funding amount" + ) in details: + raise OpenChannelPushAmountError(local_funding_amount, push_amount_sat) + if "EOF" in details: + raise HTTPException( + status.HTTP_500_INTERNAL_SERVER_ERROR, + detail=( + 'Got "EOF" from LND. Is the peer reachable ' + "and the pubkey correct?" + ), + ) + + raise HTTPException(status.HTTP_500_INTERNAL_SERVER_ERROR, detail=details) @logger.catch(exclude=(HTTPException, NodeNotFoundError)) async def peer_resolve_alias(self, node_pub: str) -> str: @@ -880,29 +895,150 @@ async def peer_resolve_alias(self, node_pub: str) -> str: raise HTTPException(status.HTTP_500_INTERNAL_SERVER_ERROR, detail=details) @logger.catch(exclude=(HTTPException,)) - async def channel_list(self) -> List[Channel]: - logger.trace("logger.channel_list()") + async def channel_list( + self, + include_closed: bool, + peer_alias_lookup: bool, + ) -> List[Channel]: + logger.trace(f"channel_list({include_closed}, {peer_alias_lookup})") try: - request = ln.ListChannelsRequest() - response = await self._lnd_stub.ListChannels(request) + res = await asyncio.gather( + *[ + self._lnd_stub.PendingChannels(ln.PendingChannelsRequest()), + self._lnd_stub.ListChannels( + ln.ListChannelsRequest(peer_alias_lookup=peer_alias_lookup) + ), + self._lnd_stub.ClosedChannels(ln.ListChannelsRequest()) + if include_closed + else None, + ] + ) + + async def _chan_data(c, state: ChannelState): + _channel: Channel = None + if state == ChannelState.NORMAL: + _channel = Channel( + active=c.active, + state=state, + # use channel point as id because thats + # needed for closing the channel with lnd + channel_id=c.channel_point, + peer_publickey=c.remote_pubkey, + balance_local=c.local_balance, + balance_remote=c.remote_balance, + balance_capacity=c.capacity, + initiator=ChannelInitiator.from_lnd_grpc(c.initiator), + ) + elif state == ChannelState.OPENING: + _channel = Channel( + active=False, + state=state, + # use channel point as id because thats + # needed for closing the channel with lnd + channel_id=c.channel.channel_point, + peer_publickey=c.channel.remote_node_pub, + balance_local=c.channel.local_balance, + balance_remote=c.channel.remote_balance, + balance_capacity=c.channel.capacity, + initiator=ChannelInitiator.from_lnd_grpc(c.channel.initiator), + ) + elif state == ChannelState.CLOSING: + closer = ChannelInitiator.UNKNOWN + if "ChanStatusLocalCloseInitiator" in c.channel.chan_status_flags: + closer = ChannelInitiator.LOCAL + elif ( + "ChanStatusRemoteCloseInitiator" in c.channel.chan_status_flags + ): + closer = ChannelInitiator.REMOTE + + _channel = Channel( + active=False, + state=state, + # use channel point as id because thats + # needed for closing the channel with lnd + channel_id=c.channel.channel_point, + peer_publickey=c.channel.remote_node_pub, + balance_local=c.channel.local_balance, + balance_remote=c.channel.remote_balance, + balance_capacity=c.channel.capacity, + initiator=ChannelInitiator.from_lnd_grpc(c.channel.initiator), + closer=closer, + ) + elif state == ChannelState.FORCE_CLOSING: + closer = ChannelInitiator.UNKNOWN + if "ChanStatusLocalCloseInitiator" in c.channel.chan_status_flags: + closer = ChannelInitiator.LOCAL + elif ( + "ChanStatusRemoteCloseInitiator" in c.channel.chan_status_flags + ): + closer = ChannelInitiator.REMOTE + + _channel = Channel( + active=False, + state=state, + # use channel point as id because thats + # needed for closing the channel with lnd + channel_id=c.channel.channel_point, + peer_publickey=c.channel.remote_node_pub, + balance_local=c.recovered_balance, + balance_remote=c.channel.remote_balance, + balance_capacity=c.channel.capacity, + initiator=ChannelInitiator.from_lnd_grpc(c.channel.initiator), + closer=closer, + ) + elif state == ChannelState.CLOSED: + _channel = Channel( + active=False, + state=state, + # use channel point as id because thats + # needed for closing the channel with lnd + channel_id=c.channel_point, + peer_publickey=c.remote_pubkey, + balance_local=c.settled_balance, + balance_remote=c.capacity - c.settled_balance, + balance_capacity=c.capacity, + initiator=ChannelInitiator.from_lnd_grpc(c.open_initiator), + closer=ChannelInitiator.from_lnd_grpc(c.close_initiator), + ) + + if _channel is None: + logger.error("Unhandled channel state {state}") + return None + + # LND returns "unable to lookup peer alias: alias for node + # not found" when peer_alias_lookup is True and node_pub is + # not found. We ignore this and just return an empty string + if ( + peer_alias_lookup + and hasattr(c, "peer_alias") + and "unable to lookup peer alias: alias for node not found" + not in c.peer_alias + ): + _channel.peer_alias = c.peer_alias + elif peer_alias_lookup and not hasattr(c, "peer_alias"): + _channel.peer_alias = await alias_or_empty( + self.peer_resolve_alias, _channel.peer_publickey + ) + + return _channel channels = [] - for channel_grpc in response.channels: - channel = Channel.from_lnd_grpc(channel_grpc) - channel.peer_alias = await alias_or_empty( - self.peer_resolve_alias, channel.peer_publickey - ) - channels.append(channel) - - request = ln.PendingChannelsRequest() - response = await self._lnd_stub.PendingChannels(request) - for channel_grpc in response.pending_open_channels: - channel = Channel.from_lnd_grpc_pending(channel_grpc.channel) - channel.peer_alias = await alias_or_empty( - self.peer_resolve_alias, channel.peer_publickey - ) - channels.append(channel) + for c in res[0].pending_open_channels: + channels.append(await _chan_data(c, ChannelState.OPENING)) + for c in res[0].pending_force_closing_channels: + channels.append(await _chan_data(c, ChannelState.FORCE_CLOSING)) + for c in res[0].waiting_close_channels: + channels.append(await _chan_data(c, ChannelState.CLOSING)) + + for c in res[1].channels: # open + channels.append(await _chan_data(c, ChannelState.NORMAL)) + + if not include_closed: + return channels + + for c in res[2].channels: + channels.append(await _chan_data(c, ChannelState.CLOSED)) return channels @@ -918,7 +1054,10 @@ async def channel_close(self, channel_id: int, force_close: bool) -> str: ) if ":" not in channel_id: - raise ValueError("channel_id must contain : for lnd") + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail="channel_id must contain : for lnd", + ) try: funding_txid = channel_id.split(":")[0] @@ -929,7 +1068,7 @@ async def channel_close(self, channel_id: int, force_close: bool) -> str: funding_txid_str=funding_txid, output_index=int(output_index) ), force=force_close, - target_conf=6, + target_conf=None if force_close else 6, ) async for response in self._lnd_stub.CloseChannel(request): return str(response.close_pending.txid.hex()) diff --git a/app/lightning/models.py b/app/lightning/models.py index d4730fb..160cf64 100644 --- a/app/lightning/models.py +++ b/app/lightning/models.py @@ -421,52 +421,152 @@ def from_cln_json(cls, h) -> "RouteHint": return cls(hop_hints=hop_hints) +class ChannelInitiator(str, Enum): + UNKNOWN = "unknown" + LOCAL = "local" + REMOTE = "remote" + BOTH = "both" + + @classmethod + def from_cln(cls, i: str) -> "ChannelInitiator": + if i == "local": + return cls.LOCAL + if i == "remote": + return cls.REMOTE + + raise NotImplementedError(f"Unknown CLN channel initiator id: {i}") + + @classmethod + def from_lnd_grpc(cls, i: Union[int, bool]) -> "ChannelInitiator": + # LND only returns whether we are initiator + # or not for NORMAL state channels + if i is True: + return cls.LOCAL + if i is False: + return cls.REMOTE + + # LND differentiates further with pending channels + if i == 1: + return cls.LOCAL + if i == 2: + return cls.REMOTE + if i == 3: + return cls.BOTH + + if i > 3: + # leave a notice in the logs + # that we don't know this case yet + logger.warning(f"Unknown channel initiator id: {i}") + + return cls.UNKNOWN + + +class ChannelState(str, Enum): + OPENING = "opening" + NORMAL = "normal" + CLOSING = "closing" + FORCE_CLOSING = "force_closing" + CLOSED = "closed" + ABANDONED = "abandoned" + UNKNOWN = "unknown" + + @classmethod + def from_cln_json(cls, s) -> "ChannelState": + openings = [ + "OPENINGD", + "CHANNELD_AWAITING_LOCKIN", + "DUALOPEND_OPEN_INIT", + "DUALOPEND_AWAITING_LOCKIN", + ] + closings = [ + "CHANNELD_SHUTTING_DOWN", + "CLOSINGD_SIGEXCHANGE", + "CLOSINGD_COMPLETE", + "FUNDING_SPEND_SEEN", + ] + + if s in openings: + return cls.OPENING + if s == "CHANNELD_NORMAL": + return cls.NORMAL + if s in closings: + return cls.CLOSING + if s == "AWAITING_UNILATERAL": + return cls.FORCE_CLOSING + if s == "ONCHAIN": + return cls.CLOSED + + return cls.UNKNOWN + + class Channel(BaseModel): - channel_id: Optional[str] - active: Optional[bool] + channel_id: str = Query( + "", + description="The unique identifier of the channel", + ) - peer_publickey: Optional[str] - peer_alias: Optional[str] + state: ChannelState = Query(..., description="The state of the channel") - balance_local: Optional[int] - balance_remote: Optional[int] - balance_capacity: Optional[int] + active: bool = Query( + ..., + description=( + "Whether the channel is active or not. " + "True if the channel is not closing and the peer is online." + ), + ) - @classmethod - def from_lnd_grpc(cls, c) -> "Channel": - return cls( - active=c.active, - # use channel point as id because thats needed - # for closing the channel with lnd - channel_id=c.channel_point, - peer_publickey=c.remote_pubkey, - peer_alias="n/a", - balance_local=c.local_balance, - balance_remote=c.remote_balance, - balance_capacity=c.capacity, - ) + peer_publickey: str = Query( + ..., + description="The public key of the peer", + ) - @classmethod - def from_lnd_grpc_pending(cls, c) -> "Channel": - return cls( - active=False, - # use channel point as id because thats needed - # for closing the channel with lnd - channel_id=c.channel_point, - peer_publickey=c.remote_node_pub, - peer_alias="n/a", - balance_local=-1, - balance_remote=-1, - balance_capacity=c.capacity, - ) + peer_alias: str = Query( + "", + description="The alias of the peer if available", + ) + + balance_local: int = Query( + 0, + description="This node's current balance in this channel", + ) + + balance_remote: int = Query( + 0, + description="The counterparty's current balance in this channel", + ) + + balance_capacity: int = Query( + 0, + description="The total capacity of the channel", + ) + + dual_funded: Optional[bool] = Query( + None, + description="Whether the channel was dual funded or not", + ) + + initiator: ChannelInitiator = Query( + ChannelInitiator.UNKNOWN, + description="Whether the channel was initiated by us, our peer or both", + ) + + closer: Union[ChannelInitiator, None] = Query( + None, + description=( + "If state is closing, this shows who initiated the close. " + "None, if not in a closing state." + ), + ) @classmethod def from_cln_grpc(cls, c, peer_alias="n/a") -> "Channel": # TODO: get alias and balance of the channel return cls( active=c.connected, + state=ChannelState.UNKNOWN, + # state=ChannelState.from_cln_jrpc(c.state), # use channel point as id because thats needed - # for closing the channel with lnd + # for closing the channel with lnd channel_id=c.short_channel_id, peer_publickey=c.peer_id.hex(), peer_alias=peer_alias, @@ -476,17 +576,24 @@ def from_cln_grpc(cls, c, peer_alias="n/a") -> "Channel": ) @classmethod - def from_cln_jrpc(cls, c, peer_alias="n/a") -> "Channel": - # TODO: get alias and balance of the channel + def from_cln_jrpc(cls, c, peer_alias="") -> "Channel": + state = ChannelState.from_cln_json(c["state"]) return cls( - active=c["connected"], - channel_id=c["short_channel_id"] if "short_channel_id" in c else None, + active=c["peer_connected"], + state=state, + channel_id=c["short_channel_id"] if "short_channel_id" in c else "", peer_publickey=c["peer_id"], peer_alias=peer_alias, - balance_local=parse_cln_msat(c["our_amount_msat"]), - balance_remote=parse_cln_msat(c["amount_msat"]) - - parse_cln_msat(c["our_amount_msat"]), - balance_capacity=parse_cln_msat(c["amount_msat"]), + balance_local=parse_cln_msat(c["to_us_msat"]) if "to_us_msat" in c else 0, + balance_remote=parse_cln_msat(c["total_msat"]) + - parse_cln_msat(c["to_us_msat"]) + if "total_msat" in c + else 0, + balance_capacity=parse_cln_msat(c["total_msat"]) + if "total_msat" in c + else 0, + initiator=ChannelInitiator.from_cln(c["opener"]), + closer=ChannelInitiator.from_cln(c["closer"]) if "closer" in c else None, ) diff --git a/app/lightning/router.py b/app/lightning/router.py index 95f7281..5200862 100644 --- a/app/lightning/router.py +++ b/app/lightning/router.py @@ -397,15 +397,27 @@ async def open_channel_path( @router.get( "/list-channels", name=f"{_PREFIX}.list-channels", - summary="Returns a list of open channels", + summary="Returns a list of all channels", response_model=List[Channel], - response_description="A list of all open channels.", + response_description="A list of all channels.", dependencies=[Depends(JWTBearer())], responses=responses, ) -async def list_channels_path(): +async def list_channels_path( + include_closed: bool = Query( + True, description="If true, then include closed channels." + ), + peer_alias_lookup: bool = Query( + False, + description=( + "If true, then include the peer alias of the channel. " + "⚠️ Enabling this flag does come with a performance cost " + "in the form of another roundtrip to the node." + ), + ), +) -> List[Channel]: try: - return await channel_list() + return await channel_list(include_closed, peer_alias_lookup) except HTTPException: raise except NotImplementedError as r: @@ -418,7 +430,10 @@ async def list_channels_path(): "/close-channel", name=f"{_PREFIX}.close-channel", summary="close a channel", - description="For additional information see [LND docs](https://api.lightning.community/#closechannel)", + description=( + "For additional information see " + "[LND docs](https://api.lightning.community/#closechannel)" + ), dependencies=[Depends(JWTBearer())], response_model=str, responses=responses, diff --git a/app/lightning/service.py b/app/lightning/service.py index 4d063f6..ec7534b 100644 --- a/app/lightning/service.py +++ b/app/lightning/service.py @@ -163,8 +163,11 @@ async def channel_open( return res -async def channel_list() -> List[Channel]: - res = await ln.channel_list() +async def channel_list( + include_closed: bool, + peer_alias_lookup: bool, +) -> List[Channel]: + res = await ln.channel_list(include_closed, peer_alias_lookup) return res From a87a5581eb14847d5e9b627b1352372ca5e81d14 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 10 Mar 2024 17:50:32 +0000 Subject: [PATCH 4/4] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- app/lightning/impl/lnd_grpc.py | 8 +++++--- app/lightning/models.py | 15 ++++++++------- app/system/router.py | 2 +- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/app/lightning/impl/lnd_grpc.py b/app/lightning/impl/lnd_grpc.py index bce587b..23a48cc 100644 --- a/app/lightning/impl/lnd_grpc.py +++ b/app/lightning/impl/lnd_grpc.py @@ -909,9 +909,11 @@ async def channel_list( self._lnd_stub.ListChannels( ln.ListChannelsRequest(peer_alias_lookup=peer_alias_lookup) ), - self._lnd_stub.ClosedChannels(ln.ListChannelsRequest()) - if include_closed - else None, + ( + self._lnd_stub.ClosedChannels(ln.ListChannelsRequest()) + if include_closed + else None + ), ] ) diff --git a/app/lightning/models.py b/app/lightning/models.py index 18468d8..3c49cce 100644 --- a/app/lightning/models.py +++ b/app/lightning/models.py @@ -586,13 +586,14 @@ def from_cln_jrpc(cls, c, peer_alias="") -> "Channel": peer_publickey=c["peer_id"], peer_alias=peer_alias, balance_local=parse_cln_msat(c["to_us_msat"]) if "to_us_msat" in c else 0, - balance_remote=parse_cln_msat(c["total_msat"]) - - parse_cln_msat(c["to_us_msat"]) - if "total_msat" in c - else 0, - balance_capacity=parse_cln_msat(c["total_msat"]) - if "total_msat" in c - else 0, + balance_remote=( + parse_cln_msat(c["total_msat"]) - parse_cln_msat(c["to_us_msat"]) + if "total_msat" in c + else 0 + ), + balance_capacity=( + parse_cln_msat(c["total_msat"]) if "total_msat" in c else 0 + ), initiator=ChannelInitiator.from_cln(c["opener"]), closer=ChannelInitiator.from_cln(c["closer"]) if "closer" in c else None, ) diff --git a/app/system/router.py b/app/system/router.py index 6e349b7..6c0943c 100644 --- a/app/system/router.py +++ b/app/system/router.py @@ -17,8 +17,8 @@ ConnectionInfo, LoginInput, RawDebugLogData, - SystemInfo, SystemHealthInfo, + SystemInfo, ) from app.system.service import ( HW_INFO_YIELD_TIME,