diff --git a/README.md b/README.md index 41c1c44..e8b5bbc 100644 --- a/README.md +++ b/README.md @@ -339,16 +339,17 @@ If you are running an older version of lnd checkout the according [tag](https://github.com/bitromortac/lndmanage/releases). ### Requirements -Installation of lndmange requires `>=python3.6`, `lnd v0.11.0-beta`, `python3-venv` +Installation of lndmange requires `>=python3.6`, `lnd v0.12.1-beta`, `python3-venv` #### Optional Requirements Depending on if you want to install from source dependency packages you may need `gcc`, `g++`, `python3-dev(el)`. -#### LND Requirements +#### LND Build Requirements Some commands will only work correctly if lnd is built with the `routerrpc`. -This can be done when compiling with `make install tags="routerrpc"`. If you -use precompiled binaries, you can ignore this. +This can be done when compiling with minimal build tags of `make && make install +tags="routerrpc signrpc walletrpc"`. If you use precompiled binaries, you can +ignore this. #### Admin Macaroon and TLS cert needed If you run this tool from a different host than the lnd host, @@ -462,9 +463,14 @@ $ git clone https://github.com/googleapis/googleapis.git $ curl -o rpc.proto -s https://raw.githubusercontent.com/lightningnetwork/lnd/master/lnrpc/rpc.proto $ curl -o router.proto -s https://raw.githubusercontent.com/lightningnetwork/lnd/master/lnrpc/routerrpc/router.proto +$ curl -o signer.proto https://raw.githubusercontent.com/lightningnetwork/lnd/master/lnrpc/signrpc/signer.proto +$ curl -o walletkit.proto https://raw.githubusercontent.com/lightningnetwork/lnd/master/lnrpc/walletrpc/walletkit.proto $ python -m grpc_tools.protoc --proto_path=googleapis:. --python_out=. --grpc_python_out=. rpc.proto -$ python -m grpc_tools.protoc --proto_path=googleapis:. --python_out=. --grpc_python_out=. routerrpc.proto +$ python -m grpc_tools.protoc --proto_path=googleapis:. --python_out=. --grpc_python_out=. router.proto +$ python -m grpc_tools.protoc --proto_path=googleapis:. --python_out=. --grpc_python_out=. signer.proto +# adjust signer.proto location in walletkit.proto +$ python -m grpc_tools.protoc --proto_path=googleapis:. --python_out=. --grpc_python_out=. walletkit.proto ``` Then correct to absolute import paths, for instance change `import rpc_pb2 as rpc__pb2` to `from lndmanage.grpc_compiled import rpc_pb2 as rpc__pb2`. \ No newline at end of file diff --git a/lndmanage/grpc_compiled/router.proto b/lndmanage/grpc_compiled/router.proto index 30ab825..6cb8659 100644 --- a/lndmanage/grpc_compiled/router.proto +++ b/lndmanage/grpc_compiled/router.proto @@ -137,6 +137,9 @@ message SendPaymentRequest { */ int32 final_cltv_delta = 4; + // An optional payment addr to be included within the last hop of the route. + bytes payment_addr = 20; + /* A bare-bones invoice for a payment within the Lightning Network. With the details of the invoice, the sender has all the data necessary to send a @@ -237,6 +240,14 @@ message SendPaymentRequest { that show which htlcs are still in flight are suppressed. */ bool no_inflight_updates = 18; + + /* + The largest payment split that should be attempted when making a payment if + splitting is necessary. Setting this value will effectively cause lnd to + split more aggressively, vs only when it thinks it needs to. Note that this + value is in milli-satoshis. + */ + uint64 max_shard_size_msat = 21; } message TrackPaymentRequest { @@ -394,6 +405,9 @@ message BuildRouteRequest { pubkey. */ repeated bytes hop_pubkeys = 4; + + // An optional payment addr to be included within the last hop of the route. + bytes payment_addr = 5; } message BuildRouteResponse { @@ -631,6 +645,9 @@ message ForwardHtlcInterceptRequest { // Any custom records that were present in the payload. map custom_records = 8; + + // The onion blob for the next hop + bytes onion_blob = 9; } /** diff --git a/lndmanage/grpc_compiled/router_pb2.py b/lndmanage/grpc_compiled/router_pb2.py index 85581e4..004aa4d 100644 --- a/lndmanage/grpc_compiled/router_pb2.py +++ b/lndmanage/grpc_compiled/router_pb2.py @@ -12,7 +12,7 @@ _sym_db = _symbol_database.Default() -from lndmanage.grpc_compiled import rpc_pb2 as rpc__pb2 +import lndmanage.grpc_compiled.rpc_pb2 as rpc__pb2 DESCRIPTOR = _descriptor.FileDescriptor( @@ -21,7 +21,7 @@ syntax='proto3', serialized_options=b'Z/github.com/lightningnetwork/lnd/lnrpc/routerrpc', create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x0crouter.proto\x12\trouterrpc\x1a\trpc.proto\"\xe4\x04\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\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\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\"G\n\x12SendToRouteRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x1b\n\x05route\x18\x02 \x01(\x0b\x32\x0c.lnrpc.Route\"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\"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\"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\"r\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\"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\"\r\n\x0bSettleEvent\"\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\"\x83\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\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"\x9a\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*\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\x32\xc4\x08\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\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\x42\x31Z/github.com/lightningnetwork/lnd/lnrpc/routerrpcb\x06proto3' + serialized_pb=b'\n\x0crouter.proto\x12\trouterrpc\x1a\trpc.proto\"\x97\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\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\"G\n\x12SendToRouteRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x1b\n\x05route\x18\x02 \x01(\x0b\x32\x0c.lnrpc.Route\"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\"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\"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\"\r\n\x0bSettleEvent\"\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\"\x9a\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*\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\x32\xc4\x08\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\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\x42\x31Z/github.com/lightningnetwork/lnd/lnrpc/routerrpcb\x06proto3' , dependencies=[rpc__pb2.DESCRIPTOR,]) @@ -150,8 +150,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=3370, - serialized_end=3883, + serialized_start=3464, + serialized_end=3977, ) _sym_db.RegisterEnumDescriptor(_FAILUREDETAIL) @@ -201,8 +201,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=3886, - serialized_end=4060, + serialized_start=3980, + serialized_end=4154, ) _sym_db.RegisterEnumDescriptor(_PAYMENTSTATE) @@ -232,8 +232,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=4062, - serialized_end=4122, + serialized_start=4156, + serialized_end=4216, ) _sym_db.RegisterEnumDescriptor(_RESOLVEHOLDFORWARDACTION) @@ -303,8 +303,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=2204, - serialized_end=2264, + serialized_start=2278, + serialized_end=2338, ) _sym_db.RegisterEnumDescriptor(_HTLCEVENT_EVENTTYPE) @@ -343,8 +343,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=595, - serialized_end=651, + serialized_start=646, + serialized_end=702, ) _SENDPAYMENTREQUEST = _descriptor.Descriptor( @@ -391,103 +391,117 @@ is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='payment_request', full_name='routerrpc.SendPaymentRequest.payment_request', index=5, + name='payment_addr', full_name='routerrpc.SendPaymentRequest.payment_addr', index=5, + number=20, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='payment_request', full_name='routerrpc.SendPaymentRequest.payment_request', index=6, number=5, type=9, cpp_type=9, label=1, has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='timeout_seconds', full_name='routerrpc.SendPaymentRequest.timeout_seconds', index=6, + name='timeout_seconds', full_name='routerrpc.SendPaymentRequest.timeout_seconds', index=7, number=6, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='fee_limit_sat', full_name='routerrpc.SendPaymentRequest.fee_limit_sat', index=7, + name='fee_limit_sat', full_name='routerrpc.SendPaymentRequest.fee_limit_sat', index=8, number=7, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='fee_limit_msat', full_name='routerrpc.SendPaymentRequest.fee_limit_msat', index=8, + name='fee_limit_msat', full_name='routerrpc.SendPaymentRequest.fee_limit_msat', index=9, number=13, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='outgoing_chan_id', full_name='routerrpc.SendPaymentRequest.outgoing_chan_id', index=9, + name='outgoing_chan_id', full_name='routerrpc.SendPaymentRequest.outgoing_chan_id', index=10, number=8, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=b'\030\0010\001', file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='outgoing_chan_ids', full_name='routerrpc.SendPaymentRequest.outgoing_chan_ids', index=10, + name='outgoing_chan_ids', full_name='routerrpc.SendPaymentRequest.outgoing_chan_ids', index=11, number=19, type=4, cpp_type=4, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='last_hop_pubkey', full_name='routerrpc.SendPaymentRequest.last_hop_pubkey', index=11, + name='last_hop_pubkey', full_name='routerrpc.SendPaymentRequest.last_hop_pubkey', index=12, number=14, type=12, cpp_type=9, label=1, has_default_value=False, default_value=b"", message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='cltv_limit', full_name='routerrpc.SendPaymentRequest.cltv_limit', index=12, + name='cltv_limit', full_name='routerrpc.SendPaymentRequest.cltv_limit', index=13, number=9, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='route_hints', full_name='routerrpc.SendPaymentRequest.route_hints', index=13, + name='route_hints', full_name='routerrpc.SendPaymentRequest.route_hints', index=14, number=10, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='dest_custom_records', full_name='routerrpc.SendPaymentRequest.dest_custom_records', index=14, + name='dest_custom_records', full_name='routerrpc.SendPaymentRequest.dest_custom_records', index=15, number=11, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='allow_self_payment', full_name='routerrpc.SendPaymentRequest.allow_self_payment', index=15, + name='allow_self_payment', full_name='routerrpc.SendPaymentRequest.allow_self_payment', index=16, number=15, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='dest_features', full_name='routerrpc.SendPaymentRequest.dest_features', index=16, + name='dest_features', full_name='routerrpc.SendPaymentRequest.dest_features', index=17, number=16, type=14, cpp_type=8, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='max_parts', full_name='routerrpc.SendPaymentRequest.max_parts', index=17, + name='max_parts', full_name='routerrpc.SendPaymentRequest.max_parts', index=18, number=17, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='no_inflight_updates', full_name='routerrpc.SendPaymentRequest.no_inflight_updates', index=18, + name='no_inflight_updates', full_name='routerrpc.SendPaymentRequest.no_inflight_updates', index=19, number=18, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='max_shard_size_msat', full_name='routerrpc.SendPaymentRequest.max_shard_size_msat', index=20, + number=21, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -501,7 +515,7 @@ oneofs=[ ], serialized_start=39, - serialized_end=651, + serialized_end=702, ) @@ -539,8 +553,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=653, - serialized_end=725, + serialized_start=704, + serialized_end=776, ) @@ -578,8 +592,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=727, - serialized_end=775, + serialized_start=778, + serialized_end=826, ) @@ -617,8 +631,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=777, - serialized_end=846, + serialized_start=828, + serialized_end=897, ) @@ -656,8 +670,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=848, - serialized_end=919, + serialized_start=899, + serialized_end=970, ) @@ -695,8 +709,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=921, - serialized_end=993, + serialized_start=972, + serialized_end=1044, ) @@ -720,8 +734,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=995, - serialized_end=1023, + serialized_start=1046, + serialized_end=1074, ) @@ -745,8 +759,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1025, - serialized_end=1054, + serialized_start=1076, + serialized_end=1105, ) @@ -770,8 +784,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1056, - serialized_end=1084, + serialized_start=1107, + serialized_end=1135, ) @@ -802,8 +816,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1086, - serialized_end=1160, + serialized_start=1137, + serialized_end=1211, ) @@ -848,8 +862,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1162, - serialized_end=1273, + serialized_start=1213, + serialized_end=1324, ) @@ -915,8 +929,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1276, - serialized_end=1429, + serialized_start=1327, + serialized_end=1480, ) @@ -961,8 +975,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1431, - serialized_end=1510, + serialized_start=1482, + serialized_end=1561, ) @@ -1000,8 +1014,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1512, - serialized_end=1597, + serialized_start=1563, + serialized_end=1648, ) @@ -1041,6 +1055,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='payment_addr', full_name='routerrpc.BuildRouteRequest.payment_addr', index=4, + number=5, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -1053,8 +1074,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1599, - serialized_end=1713, + serialized_start=1651, + serialized_end=1787, ) @@ -1085,8 +1106,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1715, - serialized_end=1764, + serialized_start=1789, + serialized_end=1838, ) @@ -1110,8 +1131,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1766, - serialized_end=1794, + serialized_start=1840, + serialized_end=1868, ) @@ -1211,8 +1232,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=1797, - serialized_end=2273, + serialized_start=1871, + serialized_end=2347, ) @@ -1264,8 +1285,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2275, - serialized_end=2393, + serialized_start=2349, + serialized_end=2467, ) @@ -1296,8 +1317,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2395, - serialized_end=2444, + serialized_start=2469, + serialized_end=2518, ) @@ -1321,8 +1342,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2446, - serialized_end=2464, + serialized_start=2520, + serialized_end=2538, ) @@ -1346,8 +1367,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2466, - serialized_end=2479, + serialized_start=2540, + serialized_end=2553, ) @@ -1399,8 +1420,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2482, - serialized_end=2656, + serialized_start=2556, + serialized_end=2730, ) @@ -1445,8 +1466,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2658, - serialized_end=2772, + serialized_start=2732, + serialized_end=2846, ) @@ -1484,8 +1505,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2774, - serialized_end=2820, + serialized_start=2848, + serialized_end=2894, ) @@ -1523,8 +1544,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3158, - serialized_end=3210, + serialized_start=3252, + serialized_end=3304, ) _FORWARDHTLCINTERCEPTREQUEST = _descriptor.Descriptor( @@ -1591,6 +1612,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='onion_blob', full_name='routerrpc.ForwardHtlcInterceptRequest.onion_blob', index=8, + number=9, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -1603,8 +1631,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2823, - serialized_end=3210, + serialized_start=2897, + serialized_end=3304, ) @@ -1649,8 +1677,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3213, - serialized_end=3367, + serialized_start=3307, + serialized_end=3461, ) _SENDPAYMENTREQUEST_DESTCUSTOMRECORDSENTRY.containing_type = _SENDPAYMENTREQUEST @@ -1943,8 +1971,8 @@ index=0, serialized_options=None, create_key=_descriptor._internal_create_key, - serialized_start=4125, - serialized_end=5217, + serialized_start=4219, + serialized_end=5311, methods=[ _descriptor.MethodDescriptor( name='SendPaymentV2', diff --git a/lndmanage/grpc_compiled/router_pb2_grpc.py b/lndmanage/grpc_compiled/router_pb2_grpc.py index b78bb71..b28a884 100644 --- a/lndmanage/grpc_compiled/router_pb2_grpc.py +++ b/lndmanage/grpc_compiled/router_pb2_grpc.py @@ -2,8 +2,8 @@ """Client and server classes corresponding to protobuf-defined services.""" import grpc -from lndmanage.grpc_compiled import router_pb2 as router__pb2 -from lndmanage.grpc_compiled import rpc_pb2 as rpc__pb2 +import lndmanage.grpc_compiled.router_pb2 as router__pb2 +import lndmanage.grpc_compiled.rpc_pb2 as rpc__pb2 class RouterStub(object): diff --git a/lndmanage/grpc_compiled/rpc.proto b/lndmanage/grpc_compiled/rpc.proto index ee5504d..b33e2f1 100644 --- a/lndmanage/grpc_compiled/rpc.proto +++ b/lndmanage/grpc_compiled/rpc.proto @@ -32,8 +32,9 @@ service Lightning { rpc WalletBalance (WalletBalanceRequest) returns (WalletBalanceResponse); /* lncli: `channelbalance` - ChannelBalance returns the total funds available across all open channels - in satoshis. + ChannelBalance returns a report on the total funds across all open channels, + categorized in local/remote, pending local/remote and unsettled local/remote + balances. */ rpc ChannelBalance (ChannelBalanceRequest) returns (ChannelBalanceResponse); @@ -235,8 +236,10 @@ service Lightning { /* lncli: `abandonchannel` AbandonChannel removes all channel state from the database except for a close summary. This method can be used to get rid of permanently unusable - channels due to bugs fixed in newer versions of lnd. Only available - when in debug builds of lnd. + channels due to bugs fixed in newer versions of lnd. This method can also be + used to remove externally funded channels where the funding transaction was + never broadcast. Only available for non-externally funded channels in dev + build. */ rpc AbandonChannel (AbandonChannelRequest) returns (AbandonChannelResponse); @@ -491,6 +494,26 @@ service Lightning { offline. */ rpc BakeMacaroon (BakeMacaroonRequest) returns (BakeMacaroonResponse); + + /* lncli: `listmacaroonids` + ListMacaroonIDs returns all root key IDs that are in use. + */ + rpc ListMacaroonIDs (ListMacaroonIDsRequest) + returns (ListMacaroonIDsResponse); + + /* lncli: `deletemacaroonid` + DeleteMacaroonID deletes the specified macaroon ID and invalidates all + macaroons derived from that ID. + */ + rpc DeleteMacaroonID (DeleteMacaroonIDRequest) + returns (DeleteMacaroonIDResponse); + + /* lncli: `listpermissions` + ListPermissions lists all RPC method URIs and their required macaroon + permissions to access them. + */ + rpc ListPermissions (ListPermissionsRequest) + returns (ListPermissionsResponse); } message Utxo { @@ -768,6 +791,58 @@ message ChannelAcceptResponse { // The pending channel id to which this response applies. bytes pending_chan_id = 2; + + /* + An optional error to send the initiating party to indicate why the channel + was rejected. This field *should not* contain sensitive information, it will + be sent to the initiating party. This field should only be set if accept is + false, the channel will be rejected if an error is set with accept=true + because the meaning of this response is ambiguous. Limited to 500 + characters. + */ + string error = 3; + + /* + The upfront shutdown address to use if the initiating peer supports option + upfront shutdown script (see ListPeers for the features supported). Note + that the channel open will fail if this value is set for a peer that does + not support this feature bit. + */ + string upfront_shutdown = 4; + + /* + The csv delay (in blocks) that we require for the remote party. + */ + uint32 csv_delay = 5; + + /* + The reserve amount in satoshis that we require the remote peer to adhere to. + We require that the remote peer always have some reserve amount allocated to + them so that there is always a disincentive to broadcast old state (if they + hold 0 sats on their side of the channel, there is nothing to lose). + */ + uint64 reserve_sat = 6; + + /* + The maximum amount of funds in millisatoshis that we allow the remote peer + to have in outstanding htlcs. + */ + uint64 in_flight_max_msat = 7; + + /* + The maximum number of htlcs that the remote peer can offer us. + */ + uint32 max_htlc_count = 8; + + /* + The minimum value in millisatoshis for incoming htlcs on the channel. + */ + uint64 min_htlc_in = 9; + + /* + The number of confirmations we require before we consider the channel open. + */ + uint32 min_accept_depth = 10; } message ChannelPoint { @@ -840,6 +915,13 @@ message SendManyRequest { // An optional label for the transaction, limited to 500 characters. string label = 6; + + // The minimum number of confirmations each one of your outputs used for + // the transaction must satisfy. + int32 min_confs = 7; + + // Whether unconfirmed outputs should be used as inputs for the transaction. + bool spend_unconfirmed = 8; } message SendManyResponse { // The id of the transaction @@ -870,6 +952,13 @@ message SendCoinsRequest { // An optional label for the transaction, limited to 500 characters. string label = 7; + + // The minimum number of confirmations each one of your outputs used for + // the transaction must satisfy. + int32 min_confs = 8; + + // Whether unconfirmed outputs should be used as inputs for the transaction. + bool spend_unconfirmed = 9; } message SendCoinsResponse { // The transaction ID of the transaction @@ -947,6 +1036,12 @@ message ConnectPeerRequest { /* If set, the daemon will attempt to persistently connect to the target * peer. Otherwise, the call will be synchronous. */ bool perm = 2; + + /* + The connection timeout value (in seconds) for this request. It won't affect + other requests. + */ + uint64 timeout = 3; } message ConnectPeerResponse { } @@ -963,6 +1058,21 @@ message HTLC { int64 amount = 2; bytes hash_lock = 3; uint32 expiration_height = 4; + + // Index identifying the htlc on the channel. + uint64 htlc_index = 5; + + // If this HTLC is involved in a forwarding operation, this field indicates + // the forwarding channel. For an outgoing htlc, it is the incoming channel. + // For an incoming htlc, it is the outgoing channel. When the htlc + // originates from this node or this node is the final destination, + // forwarding_channel will be zero. The forwarding channel will also be zero + // for htlcs that need to be forwarded but don't have a forwarding decision + // persisted yet. + uint64 forwarding_channel = 6; + + // Index identifying the htlc on the forwarding channel. + uint64 forwarding_htlc_index = 7; } enum CommitmentType { @@ -1377,6 +1487,11 @@ message Peer { Denotes that we are not receiving new graph updates from the peer. */ PASSIVE_SYNC = 2; + + /* + Denotes that this peer is pinned into an active sync. + */ + PINNED_SYNC = 3; } // The type of sync we are currently performing with this peer. @@ -1393,6 +1508,20 @@ message Peer { spamming us with errors at no cost. */ repeated TimestampedError errors = 12; + + /* + The number of times we have recorded this peer going offline or coming + online, recorded across restarts. Note that this value is decreased over + time if the peer has not recently flapped, so that we can forgive peers + with historically high flap counts. + */ + int32 flap_count = 13; + + /* + The timestamp of the last flap we observed for this peer. If this value is + zero, we have not observed any flaps for this peer. + */ + int64 last_flap_ns = 14; } message TimestampedError { @@ -1672,6 +1801,18 @@ message OpenChannelRequest { the channel. It only applies to the remote party. */ uint64 remote_max_value_in_flight_msat = 15; + + /* + The maximum number of concurrent HTLCs we will allow the remote party to add + to the commitment transaction. + */ + uint32 remote_max_htlcs = 16; + + /* + Max local csv is the maximum csv delay we will allow for our own commitment + transaction. + */ + uint32 max_local_csv = 17; } message OpenStatusUpdate { oneof update { @@ -1817,12 +1958,19 @@ message FundingPsbtFinalize { /* The funded PSBT that contains all witness data to send the exact channel capacity amount to the PK script returned in the open channel message in a - previous step. + previous step. Cannot be set at the same time as final_raw_tx. */ bytes signed_psbt = 1; // The pending channel ID of the channel to get the PSBT for. bytes pending_chan_id = 2; + + /* + As an alternative to the signed PSBT with all witness data, the final raw + wire format transaction can also be specified directly. Cannot be set at the + same time as signed_psbt. + */ + bytes final_raw_tx = 3; } message FundingTransitionMsg { @@ -2078,14 +2226,40 @@ message WalletBalanceResponse { int64 unconfirmed_balance = 3; } +message Amount { + // Value denominated in satoshis. + uint64 sat = 1; + + // Value denominated in milli-satoshis. + uint64 msat = 2; +} + message ChannelBalanceRequest { } message ChannelBalanceResponse { - // Sum of channels balances denominated in satoshis - int64 balance = 1; + // Deprecated. Sum of channels balances denominated in satoshis + int64 balance = 1 [deprecated = true]; - // Sum of channels pending balances denominated in satoshis - int64 pending_open_balance = 2; + // Deprecated. Sum of channels pending balances denominated in satoshis + int64 pending_open_balance = 2 [deprecated = true]; + + // Sum of channels local balances. + Amount local_balance = 3; + + // Sum of channels remote balances. + Amount remote_balance = 4; + + // Sum of channels local unsettled balances. + Amount unsettled_local_balance = 5; + + // Sum of channels remote unsettled balances. + Amount unsettled_remote_balance = 6; + + // Sum of channels pending local balances. + Amount pending_open_local_balance = 7; + + // Sum of channels pending remote balances. + Amount pending_open_remote_balance = 8; } message QueryRoutesRequest { @@ -2525,9 +2699,15 @@ message GraphTopologyUpdate { message NodeUpdate { repeated string addresses = 1; string identity_key = 2; - bytes global_features = 3; + bytes global_features = 3 [deprecated = true]; string alias = 4; string color = 5; + + /* + Features that the node has advertised in the init message, node + announcements and invoices. + */ + map features = 6; } message ChannelEdgeUpdate { /* @@ -2728,6 +2908,13 @@ message Invoice { [EXPERIMENTAL]. */ bool is_keysend = 25; + + /* + The payment address of this invoice. This value will be used in MPP + payments, and also for newer invoies that always require the MPP paylaod + for added end-to-end security. + */ + bytes payment_addr = 26; } enum InvoiceHTLCState { @@ -2786,6 +2973,13 @@ message AddInvoiceResponse { invoices with an add_index greater than this one. */ uint64 add_index = 16; + + /* + The payment address of the generated invoice. This value should be used + in all payments for this invoice as we require it for end to end + security. + */ + bytes payment_addr = 17; } message PaymentHash { /* @@ -2957,6 +3151,9 @@ message Payment { } message HTLCAttempt { + // The unique ID that is used for this attempt. + uint64 attempt_id = 7; + enum HTLCStatus { IN_FLIGHT = 0; SUCCEEDED = 1; @@ -3039,6 +3236,8 @@ message DeleteAllPaymentsResponse { message AbandonChannelRequest { ChannelPoint channel_point = 1; + + bool pending_funding_shim_only = 2; } message AbandonChannelResponse { @@ -3090,6 +3289,12 @@ enum FeatureBit { PAYMENT_ADDR_OPT = 15; MPP_REQ = 16; MPP_OPT = 17; + WUMBO_CHANNELS_REQ = 18; + WUMBO_CHANNELS_OPT = 19; + ANCHORS_REQ = 20; + ANCHORS_OPT = 21; + ANCHORS_ZERO_FEE_HTLC_REQ = 22; + ANCHORS_ZERO_FEE_HTLC_OPT = 23; } message Feature { @@ -3327,12 +3532,46 @@ message MacaroonPermission { message BakeMacaroonRequest { // The list of permissions the new macaroon should grant. repeated MacaroonPermission permissions = 1; + + // The root key ID used to create the macaroon, must be a positive integer. + uint64 root_key_id = 2; } message BakeMacaroonResponse { // The hex encoded macaroon, serialized in binary format. string macaroon = 1; } +message ListMacaroonIDsRequest { +} +message ListMacaroonIDsResponse { + // The list of root key IDs that are in use. + repeated uint64 root_key_ids = 1; +} + +message DeleteMacaroonIDRequest { + // The root key ID to be removed. + uint64 root_key_id = 1; +} +message DeleteMacaroonIDResponse { + // A boolean indicates that the deletion is successful. + bool deleted = 1; +} + +message MacaroonPermissionList { + // A list of macaroon permissions. + repeated MacaroonPermission permissions = 1; +} + +message ListPermissionsRequest { +} +message ListPermissionsResponse { + /* + A map between all RPC method URIs and their required macaroon permissions to + access them. + */ + map method_permissions = 1; +} + message Failure { enum FailureCode { /* @@ -3495,3 +3734,14 @@ message ChannelUpdate { */ bytes extra_opaque_data = 12; } + +message MacaroonId { + bytes nonce = 1; + bytes storageId = 2; + repeated Op ops = 3; +} + +message Op { + string entity = 1; + repeated string actions = 2; +} diff --git a/lndmanage/grpc_compiled/rpc_pb2.py b/lndmanage/grpc_compiled/rpc_pb2.py index 6a147bf..b03278a 100644 --- a/lndmanage/grpc_compiled/rpc_pb2.py +++ b/lndmanage/grpc_compiled/rpc_pb2.py @@ -20,7 +20,7 @@ syntax='proto3', serialized_options=b'Z%github.com/lightningnetwork/lnd/lnrpc', create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\trpc.proto\x12\x05lnrpc\"\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\"\xd6\x01\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\x16\n\x0e\x64\x65st_addresses\x18\x08 \x03(\t\x12\x12\n\nraw_tx_hex\x18\t \x01(\t\x12\r\n\x05label\x18\n \x01(\t\"B\n\x16GetTransactionsRequest\x12\x14\n\x0cstart_height\x18\x01 \x01(\x05\x12\x12\n\nend_height\x18\x02 \x01(\x05\">\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\"\xf4\x03\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\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\"\xb5\x02\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\"@\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\"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\"0\n\x10LightningAddress\x12\x0e\n\x06pubkey\x18\x01 \x01(\t\x12\x0c\n\x04host\x18\x02 \x01(\t\"\xa1\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\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\"D\n\x13\x45stimateFeeResponse\x12\x0f\n\x07\x66\x65\x65_sat\x18\x01 \x01(\x03\x12\x1c\n\x14\x66\x65\x65rate_sat_per_byte\x18\x02 \x01(\x03\"\xc0\x01\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\x14\n\x0csat_per_byte\x18\x05 \x01(\x03\x12\r\n\x05label\x18\x06 \x01(\t\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\"|\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\x14\n\x0csat_per_byte\x18\x05 \x01(\x03\x12\x10\n\x08send_all\x18\x06 \x01(\x08\x12\r\n\x05label\x18\x07 \x01(\t\"!\n\x11SendCoinsResponse\x12\x0c\n\x04txid\x18\x01 \x01(\t\":\n\x12ListUnspentRequest\x12\x11\n\tmin_confs\x18\x01 \x01(\x05\x12\x11\n\tmax_confs\x18\x02 \x01(\x05\"1\n\x13ListUnspentResponse\x12\x1a\n\x05utxos\x18\x01 \x03(\x0b\x32\x0b.lnrpc.Utxo\"5\n\x11NewAddressRequest\x12 \n\x04type\x18\x01 \x01(\x0e\x32\x12.lnrpc.AddressType\"%\n\x12NewAddressResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\"!\n\x12SignMessageRequest\x12\x0b\n\x03msg\x18\x01 \x01(\x0c\"(\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\"I\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\"\x15\n\x13\x43onnectPeerResponse\"(\n\x15\x44isconnectPeerRequest\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\"\x18\n\x16\x44isconnectPeerResponse\"V\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\"\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\"\xb0\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\"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\"\xa9\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\"\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\"\x99\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\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\x08SyncType\x12\x10\n\x0cUNKNOWN_SYNC\x10\x00\x12\x0f\n\x0b\x41\x43TIVE_SYNC\x10\x01\x12\x10\n\x0cPASSIVE_SYNC\x10\x02\"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\"\x96\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\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\"\x95\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\x14\n\x0csat_per_byte\x18\x04 \x01(\x03\x12\x18\n\x10\x64\x65livery_address\x18\x05 \x01(\t\"}\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\"\xfe\x02\n\x12OpenChannelRequest\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\x14\n\x0csat_per_byte\x18\x07 \x01(\x03\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\"\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\"A\n\x11\x46undingPsbtVerify\x12\x13\n\x0b\x66unded_psbt\x18\x01 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x02 \x01(\x0c\"C\n\x13\x46undingPsbtFinalize\x12\x13\n\x0bsigned_psbt\x18\x01 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x02 \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\"\xab\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\x97\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\x1a\xb0\x01\n\x12PendingOpenChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x1b\n\x13\x63onfirmation_height\x18\x02 \x01(\r\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(\x03\x1a\xad\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\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\"\xbf\x03\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\x32\n\x04type\x18\x05 \x01(\x0e\x32$.lnrpc.ChannelEventUpdate.UpdateType\"v\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\x42\t\n\x07\x63hannel\"\x16\n\x14WalletBalanceRequest\"f\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\"\x17\n\x15\x43hannelBalanceRequest\"G\n\x16\x43hannelBalanceResponse\x12\x0f\n\x07\x62\x61lance\x18\x01 \x01(\x03\x12\x1c\n\x14pending_open_balance\x18\x02 \x01(\x03\"\xd0\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\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\"\xd6\x02\n\x03Hop\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rchan_capacity\x18\x02 \x01(\x03\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\x13\n\x0btlv_payload\x18\t \x01(\x08\x12$\n\nmpp_record\x18\n \x01(\x0b\x32\x10.lnrpc.MPPRecord\x12\x35\n\x0e\x63ustom_records\x18\x0b \x03(\x0b\x32\x1d.lnrpc.Hop.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\"9\n\tMPPRecord\x12\x14\n\x0cpayment_addr\x18\x0b \x01(\x0c\x12\x16\n\x0etotal_amt_msat\x18\n \x01(\x03\"\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\"l\n\nNodeUpdate\x12\x11\n\taddresses\x18\x01 \x03(\t\x12\x14\n\x0cidentity_key\x18\x02 \x01(\t\x12\x17\n\x0fglobal_features\x18\x03 \x01(\x0c\x12\r\n\x05\x61lias\x18\x04 \x01(\t\x12\r\n\x05\x63olor\x18\x05 \x01(\t\"\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\".\n\tRouteHint\x12!\n\thop_hints\x18\x01 \x03(\x0b\x32\x0e.lnrpc.HopHint\"\xcf\x05\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\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\"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\"\xda\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\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"P\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\"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\"\xf6\x01\n\x0bHTLCAttempt\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\"o\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\"o\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\"\x1a\n\x18\x44\x65leteAllPaymentsRequest\"\x1b\n\x19\x44\x65leteAllPaymentsResponse\"C\n\x15\x41\x62\x61ndonChannelRequest\x12*\n\rchannel_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\"\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\"\xec\x01\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\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\"\x16\n\x14PolicyUpdateResponse\"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\"\xc0\x01\n\x0f\x46orwardingEvent\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\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\"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\"E\n\x13\x42\x61keMacaroonRequest\x12.\n\x0bpermissions\x18\x01 \x03(\x0b\x32\x19.lnrpc.MacaroonPermission\"(\n\x14\x42\x61keMacaroonResponse\x12\x10\n\x08macaroon\x18\x01 \x01(\t\"\xba\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\"\xd4\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\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*}\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*^\n\x0e\x43ommitmentType\x12\n\n\x06LEGACY\x10\x00\x12\x15\n\x11STATIC_REMOTE_KEY\x10\x01\x12\x0b\n\x07\x41NCHORS\x10\x02\x12\x1c\n\x17UNKNOWN_COMMITMENT_TYPE\x10\xe7\x07*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*\xa5\x03\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\x32\xd0\x1f\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\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\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.BakeMacaroonResponseB\'Z%github.com/lightningnetwork/lnd/lnrpcb\x06proto3' + serialized_pb=b'\n\trpc.proto\x12\x05lnrpc\"\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\"\xd6\x01\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\x16\n\x0e\x64\x65st_addresses\x18\x08 \x03(\t\x12\x12\n\nraw_tx_hex\x18\t \x01(\t\x12\r\n\x05label\x18\n \x01(\t\"B\n\x16GetTransactionsRequest\x12\x14\n\x0cstart_height\x18\x01 \x01(\x05\x12\x12\n\nend_height\x18\x02 \x01(\x05\">\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\"\xf4\x03\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\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\"\xb5\x02\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\"\xf4\x01\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\"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\"0\n\x10LightningAddress\x12\x0e\n\x06pubkey\x18\x01 \x01(\t\x12\x0c\n\x04host\x18\x02 \x01(\t\"\xa1\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\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\"D\n\x13\x45stimateFeeResponse\x12\x0f\n\x07\x66\x65\x65_sat\x18\x01 \x01(\x03\x12\x1c\n\x14\x66\x65\x65rate_sat_per_byte\x18\x02 \x01(\x03\"\xee\x01\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\x14\n\x0csat_per_byte\x18\x05 \x01(\x03\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\"\xaa\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\x14\n\x0csat_per_byte\x18\x05 \x01(\x03\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\":\n\x12ListUnspentRequest\x12\x11\n\tmin_confs\x18\x01 \x01(\x05\x12\x11\n\tmax_confs\x18\x02 \x01(\x05\"1\n\x13ListUnspentResponse\x12\x1a\n\x05utxos\x18\x01 \x03(\x0b\x32\x0b.lnrpc.Utxo\"5\n\x11NewAddressRequest\x12 \n\x04type\x18\x01 \x01(\x0e\x32\x12.lnrpc.AddressType\"%\n\x12NewAddressResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\"!\n\x12SignMessageRequest\x12\x0b\n\x03msg\x18\x01 \x01(\x0c\"(\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\"\xb0\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\"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\"\xa9\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\"\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\"\xd4\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\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\"\x96\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\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\"\x95\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\x14\n\x0csat_per_byte\x18\x04 \x01(\x03\x12\x18\n\x10\x64\x65livery_address\x18\x05 \x01(\t\"}\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\"\xaf\x03\n\x12OpenChannelRequest\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\x14\n\x0csat_per_byte\x18\x07 \x01(\x03\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\"\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\"A\n\x11\x46undingPsbtVerify\x12\x13\n\x0b\x66unded_psbt\x18\x01 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x02 \x01(\x0c\"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\"\xab\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\x97\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\x1a\xb0\x01\n\x12PendingOpenChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x1b\n\x13\x63onfirmation_height\x18\x02 \x01(\r\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(\x03\x1a\xad\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\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\"\xbf\x03\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\x32\n\x04type\x18\x05 \x01(\x0e\x32$.lnrpc.ChannelEventUpdate.UpdateType\"v\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\x42\t\n\x07\x63hannel\"\x16\n\x14WalletBalanceRequest\"f\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\"#\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\"\xd0\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\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\"\xd6\x02\n\x03Hop\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rchan_capacity\x18\x02 \x01(\x03\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\x13\n\x0btlv_payload\x18\t \x01(\x08\x12$\n\nmpp_record\x18\n \x01(\x0b\x32\x10.lnrpc.MPPRecord\x12\x35\n\x0e\x63ustom_records\x18\x0b \x03(\x0b\x32\x1d.lnrpc.Hop.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\"9\n\tMPPRecord\x12\x14\n\x0cpayment_addr\x18\x0b \x01(\x0c\x12\x16\n\x0etotal_amt_msat\x18\n \x01(\x03\"\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\"\xe4\x01\n\nNodeUpdate\x12\x11\n\taddresses\x18\x01 \x03(\t\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\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\".\n\tRouteHint\x12!\n\thop_hints\x18\x01 \x03(\x0b\x32\x0e.lnrpc.HopHint\"\xe5\x05\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\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\"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\"\xda\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\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"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\"o\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\"o\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\"\x1a\n\x18\x44\x65leteAllPaymentsRequest\"\x1b\n\x19\x44\x65leteAllPaymentsResponse\"f\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\"\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\"\xec\x01\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\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\"\x16\n\x14PolicyUpdateResponse\"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\"\xc0\x01\n\x0f\x46orwardingEvent\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\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\"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\"Z\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\"(\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\"\xba\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\"\xd4\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\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*}\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*^\n\x0e\x43ommitmentType\x12\n\n\x06LEGACY\x10\x00\x12\x15\n\x11STATIC_REMOTE_KEY\x10\x01\x12\x0b\n\x07\x41NCHORS\x10\x02\x12\x1c\n\x17UNKNOWN_COMMITMENT_TYPE\x10\xe7\x07*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*\xb5\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\x32\xc9!\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\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\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.ListPermissionsResponseB\'Z%github.com/lightningnetwork/lnd/lnrpcb\x06proto3' ) _ADDRESSTYPE = _descriptor.EnumDescriptor( @@ -53,8 +53,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=21598, - serialized_end=21723, + serialized_start=23242, + serialized_end=23367, ) _sym_db.RegisterEnumDescriptor(_ADDRESSTYPE) @@ -89,8 +89,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=21725, - serialized_end=21819, + serialized_start=23369, + serialized_end=23463, ) _sym_db.RegisterEnumDescriptor(_COMMITMENTTYPE) @@ -125,8 +125,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=21821, - serialized_end=21918, + serialized_start=23465, + serialized_end=23562, ) _sym_db.RegisterEnumDescriptor(_INITIATOR) @@ -166,8 +166,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=21920, - serialized_end=22016, + serialized_start=23564, + serialized_end=23660, ) _sym_db.RegisterEnumDescriptor(_RESOLUTIONTYPE) @@ -212,8 +212,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=22018, - serialized_end=22131, + serialized_start=23662, + serialized_end=23775, ) _sym_db.RegisterEnumDescriptor(_RESOLUTIONOUTCOME) @@ -238,8 +238,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=22133, - serialized_end=22190, + serialized_start=23777, + serialized_end=23834, ) _sym_db.RegisterEnumDescriptor(_NODEMETRICTYPE) @@ -269,8 +269,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=22192, - serialized_end=22251, + serialized_start=23836, + serialized_end=23895, ) _sym_db.RegisterEnumDescriptor(_INVOICEHTLCSTATE) @@ -315,8 +315,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=22254, - serialized_end=22471, + serialized_start=23898, + serialized_end=24115, ) _sym_db.RegisterEnumDescriptor(_PAYMENTFAILUREREASON) @@ -413,11 +413,41 @@ serialized_options=None, type=None, create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='WUMBO_CHANNELS_REQ', index=17, number=18, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='WUMBO_CHANNELS_OPT', index=18, number=19, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ANCHORS_REQ', index=19, number=20, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ANCHORS_OPT', index=20, number=21, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ANCHORS_ZERO_FEE_HTLC_REQ', index=21, number=22, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ANCHORS_ZERO_FEE_HTLC_OPT', index=22, number=23, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), ], containing_type=None, serialized_options=None, - serialized_start=22474, - serialized_end=22895, + serialized_start=24118, + serialized_end=24683, ) _sym_db.RegisterEnumDescriptor(_FEATUREBIT) @@ -473,6 +503,12 @@ PAYMENT_ADDR_OPT = 15 MPP_REQ = 16 MPP_OPT = 17 +WUMBO_CHANNELS_REQ = 18 +WUMBO_CHANNELS_OPT = 19 +ANCHORS_REQ = 20 +ANCHORS_OPT = 21 +ANCHORS_ZERO_FEE_HTLC_REQ = 22 +ANCHORS_ZERO_FEE_HTLC_OPT = 23 _CHANNELCLOSESUMMARY_CLOSURETYPE = _descriptor.EnumDescriptor( @@ -515,8 +551,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=4826, - serialized_end=4964, + serialized_start=5197, + serialized_end=5335, ) _sym_db.RegisterEnumDescriptor(_CHANNELCLOSESUMMARY_CLOSURETYPE) @@ -542,11 +578,16 @@ serialized_options=None, type=None, create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='PINNED_SYNC', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), ], containing_type=None, serialized_options=None, - serialized_start=5717, - serialized_end=5780, + serialized_start=6130, + serialized_end=6210, ) _sym_db.RegisterEnumDescriptor(_PEER_SYNCTYPE) @@ -570,8 +611,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=6024, - serialized_end=6070, + serialized_start=6454, + serialized_end=6500, ) _sym_db.RegisterEnumDescriptor(_PEEREVENT_EVENTTYPE) @@ -600,8 +641,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=10757, - serialized_end=10806, + serialized_start=11258, + serialized_end=11307, ) _sym_db.RegisterEnumDescriptor(_PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL_ANCHORSTATE) @@ -640,8 +681,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=11155, - serialized_end=11273, + serialized_start=11656, + serialized_end=11774, ) _sym_db.RegisterEnumDescriptor(_CHANNELEVENTUPDATE_UPDATETYPE) @@ -675,8 +716,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=16040, - serialized_end=16105, + serialized_start=17007, + serialized_end=17072, ) _sym_db.RegisterEnumDescriptor(_INVOICE_INVOICESTATE) @@ -710,8 +751,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=17290, - serialized_end=17360, + serialized_start=18279, + serialized_end=18349, ) _sym_db.RegisterEnumDescriptor(_PAYMENT_PAYMENTSTATUS) @@ -740,8 +781,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=17561, - serialized_end=17615, + serialized_start=18570, + serialized_end=18624, ) _sym_db.RegisterEnumDescriptor(_HTLCATTEMPT_HTLCSTATUS) @@ -890,8 +931,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=20581, - serialized_end=21305, + serialized_start=22114, + serialized_end=22838, ) _sym_db.RegisterEnumDescriptor(_FAILURE_FAILURECODE) @@ -1585,6 +1626,62 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='error', full_name='lnrpc.ChannelAcceptResponse.error', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='upfront_shutdown', full_name='lnrpc.ChannelAcceptResponse.upfront_shutdown', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='csv_delay', full_name='lnrpc.ChannelAcceptResponse.csv_delay', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='reserve_sat', full_name='lnrpc.ChannelAcceptResponse.reserve_sat', index=5, + number=6, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='in_flight_max_msat', full_name='lnrpc.ChannelAcceptResponse.in_flight_max_msat', index=6, + number=7, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='max_htlc_count', full_name='lnrpc.ChannelAcceptResponse.max_htlc_count', index=7, + number=8, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='min_htlc_in', full_name='lnrpc.ChannelAcceptResponse.min_htlc_in', index=8, + number=9, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='min_accept_depth', full_name='lnrpc.ChannelAcceptResponse.min_accept_depth', index=9, + number=10, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -1597,8 +1694,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1664, - serialized_end=1728, + serialized_start=1665, + serialized_end=1909, ) @@ -1648,8 +1745,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=1730, - serialized_end=1840, + serialized_start=1911, + serialized_end=2021, ) @@ -1694,8 +1791,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1842, - serialized_end=1912, + serialized_start=2023, + serialized_end=2093, ) @@ -1733,8 +1830,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1914, - serialized_end=1962, + serialized_start=2095, + serialized_end=2143, ) @@ -1772,8 +1869,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2075, - serialized_end=2126, + serialized_start=2256, + serialized_end=2307, ) _ESTIMATEFEEREQUEST = _descriptor.Descriptor( @@ -1810,8 +1907,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1965, - serialized_end=2126, + serialized_start=2146, + serialized_end=2307, ) @@ -1849,8 +1946,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2128, - serialized_end=2196, + serialized_start=2309, + serialized_end=2377, ) @@ -1888,8 +1985,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2075, - serialized_end=2126, + serialized_start=2256, + serialized_end=2307, ) _SENDMANYREQUEST = _descriptor.Descriptor( @@ -1928,6 +2025,20 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='min_confs', full_name='lnrpc.SendManyRequest.min_confs', index=4, + number=7, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='spend_unconfirmed', full_name='lnrpc.SendManyRequest.spend_unconfirmed', index=5, + number=8, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -1940,8 +2051,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2199, - serialized_end=2391, + serialized_start=2380, + serialized_end=2618, ) @@ -1972,8 +2083,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2393, - serialized_end=2425, + serialized_start=2620, + serialized_end=2652, ) @@ -2027,6 +2138,20 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='min_confs', full_name='lnrpc.SendCoinsRequest.min_confs', index=6, + number=8, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='spend_unconfirmed', full_name='lnrpc.SendCoinsRequest.spend_unconfirmed', index=7, + number=9, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -2039,8 +2164,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2427, - serialized_end=2551, + serialized_start=2655, + serialized_end=2825, ) @@ -2071,8 +2196,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2553, - serialized_end=2586, + serialized_start=2827, + serialized_end=2860, ) @@ -2110,8 +2235,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2588, - serialized_end=2646, + serialized_start=2862, + serialized_end=2920, ) @@ -2142,8 +2267,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2648, - serialized_end=2697, + serialized_start=2922, + serialized_end=2971, ) @@ -2174,8 +2299,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2699, - serialized_end=2752, + serialized_start=2973, + serialized_end=3026, ) @@ -2206,8 +2331,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2754, - serialized_end=2791, + serialized_start=3028, + serialized_end=3065, ) @@ -2238,8 +2363,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2793, - serialized_end=2826, + serialized_start=3067, + serialized_end=3100, ) @@ -2270,8 +2395,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2828, - serialized_end=2868, + serialized_start=3102, + serialized_end=3142, ) @@ -2309,8 +2434,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2870, - serialized_end=2924, + serialized_start=3144, + serialized_end=3198, ) @@ -2348,8 +2473,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2926, - serialized_end=2980, + serialized_start=3200, + serialized_end=3254, ) @@ -2375,6 +2500,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='timeout', full_name='lnrpc.ConnectPeerRequest.timeout', index=2, + number=3, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -2387,8 +2519,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2982, - serialized_end=3055, + serialized_start=3256, + serialized_end=3346, ) @@ -2412,8 +2544,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3057, - serialized_end=3078, + serialized_start=3348, + serialized_end=3369, ) @@ -2444,8 +2576,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3080, - serialized_end=3120, + serialized_start=3371, + serialized_end=3411, ) @@ -2469,8 +2601,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3122, - serialized_end=3146, + serialized_start=3413, + serialized_end=3437, ) @@ -2510,6 +2642,27 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='htlc_index', full_name='lnrpc.HTLC.htlc_index', index=4, + number=5, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='forwarding_channel', full_name='lnrpc.HTLC.forwarding_channel', index=5, + number=6, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='forwarding_htlc_index', full_name='lnrpc.HTLC.forwarding_htlc_index', index=6, + number=7, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -2522,8 +2675,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3148, - serialized_end=3234, + serialized_start=3440, + serialized_end=3605, ) @@ -2589,8 +2742,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3237, - serialized_end=3407, + serialized_start=3608, + serialized_end=3778, ) @@ -2824,8 +2977,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3410, - serialized_end=4226, + serialized_start=3781, + serialized_end=4597, ) @@ -2884,8 +3037,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4228, - serialized_end=4350, + serialized_start=4599, + serialized_end=4721, ) @@ -2916,8 +3069,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4352, - serialized_end=4408, + serialized_start=4723, + serialized_end=4779, ) @@ -3033,8 +3186,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4411, - serialized_end=4964, + serialized_start=4782, + serialized_end=5335, ) @@ -3093,8 +3246,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4967, - serialized_end=5145, + serialized_start=5338, + serialized_end=5516, ) @@ -3160,8 +3313,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5148, - serialized_end=5296, + serialized_start=5519, + serialized_end=5667, ) @@ -3192,8 +3345,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5298, - serialized_end=5368, + serialized_start=5669, + serialized_end=5739, ) @@ -3231,8 +3384,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5652, - serialized_end=5715, + serialized_start=6065, + serialized_end=6128, ) _PEER = _descriptor.Descriptor( @@ -3320,6 +3473,20 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='flap_count', full_name='lnrpc.Peer.flap_count', index=11, + number=13, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='last_flap_ns', full_name='lnrpc.Peer.last_flap_ns', index=12, + number=14, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -3333,8 +3500,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5371, - serialized_end=5780, + serialized_start=5742, + serialized_end=6210, ) @@ -3372,8 +3539,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5782, - serialized_end=5834, + serialized_start=6212, + serialized_end=6264, ) @@ -3404,8 +3571,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5836, - serialized_end=5876, + serialized_start=6266, + serialized_end=6306, ) @@ -3436,8 +3603,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5878, - serialized_end=5925, + serialized_start=6308, + serialized_end=6355, ) @@ -3461,8 +3628,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5927, - serialized_end=5950, + serialized_start=6357, + serialized_end=6380, ) @@ -3501,8 +3668,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5952, - serialized_end=6070, + serialized_start=6382, + serialized_end=6500, ) @@ -3526,8 +3693,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6072, - serialized_end=6088, + serialized_start=6502, + serialized_end=6518, ) @@ -3565,8 +3732,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5652, - serialized_end=5715, + serialized_start=6065, + serialized_end=6128, ) _GETINFORESPONSE = _descriptor.Descriptor( @@ -3715,8 +3882,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6091, - serialized_end=6625, + serialized_start=6521, + serialized_end=7055, ) @@ -3740,8 +3907,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6627, - serialized_end=6651, + serialized_start=7057, + serialized_end=7081, ) @@ -3786,8 +3953,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6653, - serialized_end=6746, + serialized_start=7083, + serialized_end=7176, ) @@ -3825,8 +3992,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6748, - serialized_end=6787, + serialized_start=7178, + serialized_end=7217, ) @@ -3871,8 +4038,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6789, - serialized_end=6874, + serialized_start=7219, + serialized_end=7304, ) @@ -3903,8 +4070,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6876, - serialized_end=6939, + serialized_start=7306, + serialized_end=7369, ) @@ -3942,8 +4109,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6941, - serialized_end=7000, + serialized_start=7371, + serialized_end=7430, ) @@ -4002,8 +4169,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7003, - serialized_end=7152, + serialized_start=7433, + serialized_end=7582, ) @@ -4046,8 +4213,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=7154, - serialized_end=7279, + serialized_start=7584, + serialized_end=7709, ) @@ -4085,8 +4252,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7281, - serialized_end=7332, + serialized_start=7711, + serialized_end=7762, ) @@ -4131,8 +4298,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7334, - serialized_end=7418, + serialized_start=7764, + serialized_end=7848, ) @@ -4242,6 +4409,20 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='remote_max_htlcs', full_name='lnrpc.OpenChannelRequest.remote_max_htlcs', index=14, + number=16, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='max_local_csv', full_name='lnrpc.OpenChannelRequest.max_local_csv', index=15, + number=17, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -4254,8 +4435,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7421, - serialized_end=7803, + serialized_start=7851, + serialized_end=8282, ) @@ -4312,8 +4493,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=7806, - serialized_end=8001, + serialized_start=8285, + serialized_end=8480, ) @@ -4351,8 +4532,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8003, - serialized_end=8054, + serialized_start=8482, + serialized_end=8533, ) @@ -4390,8 +4571,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8056, - serialized_end=8130, + serialized_start=8535, + serialized_end=8609, ) @@ -4457,8 +4638,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8133, - serialized_end=8309, + serialized_start=8612, + serialized_end=8788, ) @@ -4503,8 +4684,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8311, - serialized_end=8385, + serialized_start=8790, + serialized_end=8864, ) @@ -4547,8 +4728,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=8387, - serialized_end=8495, + serialized_start=8866, + serialized_end=8974, ) @@ -4579,8 +4760,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8497, - serialized_end=8541, + serialized_start=8976, + serialized_end=9020, ) @@ -4618,8 +4799,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8543, - serialized_end=8608, + serialized_start=9022, + serialized_end=9087, ) @@ -4645,6 +4826,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='final_raw_tx', full_name='lnrpc.FundingPsbtFinalize.final_raw_tx', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -4657,8 +4845,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8610, - serialized_end=8677, + serialized_start=9089, + serialized_end=9178, ) @@ -4715,8 +4903,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=8680, - serialized_end=8909, + serialized_start=9181, + serialized_end=9410, ) @@ -4740,8 +4928,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8911, - serialized_end=8933, + serialized_start=9412, + serialized_end=9434, ) @@ -4807,8 +4995,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8936, - serialized_end=9070, + serialized_start=9437, + serialized_end=9571, ) @@ -4832,8 +5020,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=9072, - serialized_end=9096, + serialized_start=9573, + serialized_end=9597, ) @@ -4920,8 +5108,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=9497, - serialized_end=9776, + serialized_start=9998, + serialized_end=10277, ) _PENDINGCHANNELSRESPONSE_PENDINGOPENCHANNEL = _descriptor.Descriptor( @@ -4979,8 +5167,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=9779, - serialized_end=9955, + serialized_start=10280, + serialized_end=10456, ) _PENDINGCHANNELSRESPONSE_WAITINGCLOSECHANNEL = _descriptor.Descriptor( @@ -5024,8 +5212,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=9958, - serialized_end=10131, + serialized_start=10459, + serialized_end=10632, ) _PENDINGCHANNELSRESPONSE_COMMITMENTS = _descriptor.Descriptor( @@ -5090,8 +5278,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10134, - serialized_end=10317, + serialized_start=10635, + serialized_end=10818, ) _PENDINGCHANNELSRESPONSE_CLOSEDCHANNEL = _descriptor.Descriptor( @@ -5128,8 +5316,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10319, - serialized_end=10420, + serialized_start=10820, + serialized_end=10921, ) _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL = _descriptor.Descriptor( @@ -5209,8 +5397,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10423, - serialized_end=10806, + serialized_start=10924, + serialized_end=11307, ) _PENDINGCHANNELSRESPONSE = _descriptor.Descriptor( @@ -5268,8 +5456,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=9099, - serialized_end=10806, + serialized_start=9600, + serialized_end=11307, ) @@ -5293,8 +5481,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10808, - serialized_end=10834, + serialized_start=11309, + serialized_end=11335, ) @@ -5366,8 +5554,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10837, - serialized_end=11284, + serialized_start=11338, + serialized_end=11785, ) @@ -5391,8 +5579,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=11286, - serialized_end=11308, + serialized_start=11787, + serialized_end=11809, ) @@ -5437,8 +5625,47 @@ extension_ranges=[], oneofs=[ ], - serialized_start=11310, - serialized_end=11412, + serialized_start=11811, + serialized_end=11913, +) + + +_AMOUNT = _descriptor.Descriptor( + name='Amount', + full_name='lnrpc.Amount', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='sat', full_name='lnrpc.Amount.sat', index=0, + number=1, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='msat', full_name='lnrpc.Amount.msat', index=1, + number=2, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=11915, + serialized_end=11950, ) @@ -5462,8 +5689,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=11414, - serialized_end=11437, + serialized_start=11952, + serialized_end=11975, ) @@ -5481,13 +5708,55 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + serialized_options=b'\030\001', file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='pending_open_balance', full_name='lnrpc.ChannelBalanceResponse.pending_open_balance', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, + serialized_options=b'\030\001', file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='local_balance', full_name='lnrpc.ChannelBalanceResponse.local_balance', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='remote_balance', full_name='lnrpc.ChannelBalanceResponse.remote_balance', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='unsettled_local_balance', full_name='lnrpc.ChannelBalanceResponse.unsettled_local_balance', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='unsettled_remote_balance', full_name='lnrpc.ChannelBalanceResponse.unsettled_remote_balance', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='pending_open_local_balance', full_name='lnrpc.ChannelBalanceResponse.pending_open_local_balance', index=6, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='pending_open_remote_balance', full_name='lnrpc.ChannelBalanceResponse.pending_open_remote_balance', index=7, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ @@ -5501,8 +5770,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=11439, - serialized_end=11510, + serialized_start=11978, + serialized_end=12334, ) @@ -5676,8 +5945,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=11513, - serialized_end=12105, + serialized_start=12337, + serialized_end=12929, ) @@ -5715,8 +5984,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=12107, - serialized_end=12143, + serialized_start=12931, + serialized_end=12967, ) @@ -5754,8 +6023,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=12145, - serialized_end=12209, + serialized_start=12969, + serialized_end=13033, ) @@ -5793,8 +6062,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=12211, - serialized_end=12284, + serialized_start=13035, + serialized_end=13108, ) @@ -5832,8 +6101,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=12577, - serialized_end=12629, + serialized_start=13401, + serialized_end=13453, ) _HOP = _descriptor.Descriptor( @@ -5933,8 +6202,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=12287, - serialized_end=12629, + serialized_start=13111, + serialized_end=13453, ) @@ -5972,8 +6241,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=12631, - serialized_end=12688, + serialized_start=13455, + serialized_end=13512, ) @@ -6039,8 +6308,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=12691, - serialized_end=12845, + serialized_start=13515, + serialized_end=13669, ) @@ -6078,8 +6347,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=12847, - serialized_end=12907, + serialized_start=13671, + serialized_end=13731, ) @@ -6131,8 +6400,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=12910, - serialized_end=13040, + serialized_start=13734, + serialized_end=13864, ) @@ -6170,8 +6439,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5652, - serialized_end=5715, + serialized_start=6065, + serialized_end=6128, ) _LIGHTNINGNODE = _descriptor.Descriptor( @@ -6236,8 +6505,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=13043, - serialized_end=13284, + serialized_start=13867, + serialized_end=14108, ) @@ -6275,8 +6544,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=13286, - serialized_end=13330, + serialized_start=14110, + serialized_end=14154, ) @@ -6349,8 +6618,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=13333, - serialized_end=13505, + serialized_start=14157, + serialized_end=14329, ) @@ -6430,8 +6699,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=13508, - serialized_end=13734, + serialized_start=14332, + serialized_end=14558, ) @@ -6462,8 +6731,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=13736, - serialized_end=13786, + serialized_start=14560, + serialized_end=14610, ) @@ -6501,8 +6770,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=13788, - serialized_end=13874, + serialized_start=14612, + serialized_end=14698, ) @@ -6533,8 +6802,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=13876, - serialized_end=13934, + serialized_start=14700, + serialized_end=14758, ) @@ -6572,8 +6841,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14047, - serialized_end=14127, + serialized_start=14871, + serialized_end=14951, ) _NODEMETRICSRESPONSE = _descriptor.Descriptor( @@ -6603,8 +6872,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=13937, - serialized_end=14127, + serialized_start=14761, + serialized_end=14951, ) @@ -6642,8 +6911,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14129, - serialized_end=14183, + serialized_start=14953, + serialized_end=15007, ) @@ -6674,8 +6943,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14185, - serialized_end=14223, + serialized_start=15009, + serialized_end=15047, ) @@ -6699,8 +6968,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14225, - serialized_end=14245, + serialized_start=15049, + serialized_end=15069, ) @@ -6801,8 +7070,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14248, - serialized_end=14543, + serialized_start=15072, + serialized_end=15367, ) @@ -6826,8 +7095,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14545, - serialized_end=14558, + serialized_start=15369, + serialized_end=15382, ) @@ -6851,8 +7120,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14560, - serialized_end=14574, + serialized_start=15384, + serialized_end=15398, ) @@ -6876,8 +7145,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14576, - serialized_end=14603, + serialized_start=15400, + serialized_end=15427, ) @@ -6922,11 +7191,49 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14606, - serialized_end=14769, + serialized_start=15430, + serialized_end=15593, ) +_NODEUPDATE_FEATURESENTRY = _descriptor.Descriptor( + name='FeaturesEntry', + full_name='lnrpc.NodeUpdate.FeaturesEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='lnrpc.NodeUpdate.FeaturesEntry.key', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value', full_name='lnrpc.NodeUpdate.FeaturesEntry.value', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=b'8\001', + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6065, + serialized_end=6128, +) + _NODEUPDATE = _descriptor.Descriptor( name='NodeUpdate', full_name='lnrpc.NodeUpdate', @@ -6955,7 +7262,7 @@ has_default_value=False, default_value=b"", message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + serialized_options=b'\030\001', file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='alias', full_name='lnrpc.NodeUpdate.alias', index=3, number=4, type=9, cpp_type=9, label=1, @@ -6970,10 +7277,17 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='features', full_name='lnrpc.NodeUpdate.features', index=5, + number=6, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], - nested_types=[], + nested_types=[_NODEUPDATE_FEATURESENTRY, ], enum_types=[ ], serialized_options=None, @@ -6982,8 +7296,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14771, - serialized_end=14879, + serialized_start=15596, + serialized_end=15824, ) @@ -7049,8 +7363,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14882, - serialized_end=15078, + serialized_start=15827, + serialized_end=16023, ) @@ -7102,8 +7416,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15080, - serialized_end=15204, + serialized_start=16025, + serialized_end=16149, ) @@ -7162,8 +7476,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15207, - serialized_end=15341, + serialized_start=16152, + serialized_end=16286, ) @@ -7194,8 +7508,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15343, - serialized_end=15389, + serialized_start=16288, + serialized_end=16334, ) @@ -7233,8 +7547,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5652, - serialized_end=5715, + serialized_start=6065, + serialized_end=6128, ) _INVOICE = _descriptor.Descriptor( @@ -7413,6 +7727,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='payment_addr', full_name='lnrpc.Invoice.payment_addr', index=24, + number=26, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -7426,8 +7747,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15392, - serialized_end=16111, + serialized_start=16337, + serialized_end=17078, ) @@ -7465,8 +7786,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=12577, - serialized_end=12629, + serialized_start=13401, + serialized_end=13453, ) _INVOICEHTLC = _descriptor.Descriptor( @@ -7559,8 +7880,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16114, - serialized_end=16460, + serialized_start=17081, + serialized_end=17427, ) @@ -7593,6 +7914,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='payment_addr', full_name='lnrpc.AddInvoiceResponse.payment_addr', index=3, + number=17, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -7605,8 +7933,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16462, - serialized_end=16542, + serialized_start=17429, + serialized_end=17531, ) @@ -7644,8 +7972,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16544, - serialized_end=16597, + serialized_start=17533, + serialized_end=17586, ) @@ -7697,8 +8025,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16599, - serialized_end=16707, + serialized_start=17588, + serialized_end=17696, ) @@ -7743,8 +8071,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16709, - serialized_end=16819, + serialized_start=17698, + serialized_end=17808, ) @@ -7782,8 +8110,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16821, - serialized_end=16883, + serialized_start=17810, + serialized_end=17872, ) @@ -7913,8 +8241,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16886, - serialized_end=17366, + serialized_start=17875, + serialized_end=18355, ) @@ -7927,42 +8255,49 @@ create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( - name='status', full_name='lnrpc.HTLCAttempt.status', index=0, + name='attempt_id', full_name='lnrpc.HTLCAttempt.attempt_id', index=0, + number=7, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='status', full_name='lnrpc.HTLCAttempt.status', index=1, number=1, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='route', full_name='lnrpc.HTLCAttempt.route', index=1, + name='route', full_name='lnrpc.HTLCAttempt.route', index=2, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='attempt_time_ns', full_name='lnrpc.HTLCAttempt.attempt_time_ns', index=2, + name='attempt_time_ns', full_name='lnrpc.HTLCAttempt.attempt_time_ns', index=3, number=3, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='resolve_time_ns', full_name='lnrpc.HTLCAttempt.resolve_time_ns', index=3, + name='resolve_time_ns', full_name='lnrpc.HTLCAttempt.resolve_time_ns', index=4, number=4, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='failure', full_name='lnrpc.HTLCAttempt.failure', index=4, + name='failure', full_name='lnrpc.HTLCAttempt.failure', index=5, number=5, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( - name='preimage', full_name='lnrpc.HTLCAttempt.preimage', index=5, + name='preimage', full_name='lnrpc.HTLCAttempt.preimage', index=6, number=6, type=12, cpp_type=9, label=1, has_default_value=False, default_value=b"", message_type=None, enum_type=None, containing_type=None, @@ -7981,8 +8316,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17369, - serialized_end=17615, + serialized_start=18358, + serialized_end=18624, ) @@ -8034,8 +8369,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17617, - serialized_end=17728, + serialized_start=18626, + serialized_end=18737, ) @@ -8080,8 +8415,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17730, - serialized_end=17841, + serialized_start=18739, + serialized_end=18850, ) @@ -8105,8 +8440,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17843, - serialized_end=17869, + serialized_start=18852, + serialized_end=18878, ) @@ -8130,8 +8465,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17871, - serialized_end=17898, + serialized_start=18880, + serialized_end=18907, ) @@ -8150,6 +8485,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='pending_funding_shim_only', full_name='lnrpc.AbandonChannelRequest.pending_funding_shim_only', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -8162,8 +8504,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17900, - serialized_end=17967, + serialized_start=18909, + serialized_end=19011, ) @@ -8187,8 +8529,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17969, - serialized_end=17993, + serialized_start=19013, + serialized_end=19037, ) @@ -8226,8 +8568,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17995, - serialized_end=18048, + serialized_start=19039, + serialized_end=19092, ) @@ -8258,8 +8600,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18050, - serialized_end=18091, + serialized_start=19094, + serialized_end=19135, ) @@ -8290,8 +8632,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18093, - serialized_end=18124, + serialized_start=19137, + serialized_end=19168, ) @@ -8329,8 +8671,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5652, - serialized_end=5715, + serialized_start=6065, + serialized_end=6128, ) _PAYREQ = _descriptor.Descriptor( @@ -8444,8 +8786,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18127, - serialized_end=18517, + serialized_start=19171, + serialized_end=19561, ) @@ -8490,8 +8832,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18519, - serialized_end=18581, + serialized_start=19563, + serialized_end=19625, ) @@ -8515,8 +8857,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18583, - serialized_end=18601, + serialized_start=19627, + serialized_end=19645, ) @@ -8575,8 +8917,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18603, - serialized_end=18727, + serialized_start=19647, + serialized_end=19771, ) @@ -8628,8 +8970,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18730, - serialized_end=18862, + serialized_start=19774, + serialized_end=19906, ) @@ -8714,8 +9056,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=18865, - serialized_end=19101, + serialized_start=19909, + serialized_end=20145, ) @@ -8739,8 +9081,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19103, - serialized_end=19125, + serialized_start=20147, + serialized_end=20169, ) @@ -8792,8 +9134,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19127, - serialized_end=19237, + serialized_start=20171, + serialized_end=20281, ) @@ -8880,8 +9222,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19240, - serialized_end=19432, + serialized_start=20284, + serialized_end=20476, ) @@ -8919,8 +9261,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19434, - serialized_end=19539, + serialized_start=20478, + serialized_end=20583, ) @@ -8951,8 +9293,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19541, - serialized_end=19610, + serialized_start=20585, + serialized_end=20654, ) @@ -8990,8 +9332,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19612, - serialized_end=19689, + serialized_start=20656, + serialized_end=20733, ) @@ -9029,8 +9371,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19691, - serialized_end=19777, + serialized_start=20735, + serialized_end=20821, ) @@ -9054,8 +9396,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19779, - serialized_end=19804, + serialized_start=20823, + serialized_end=20848, ) @@ -9093,8 +9435,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19806, - serialized_end=19929, + serialized_start=20850, + serialized_end=20973, ) @@ -9125,8 +9467,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19931, - serialized_end=19991, + serialized_start=20975, + serialized_end=21035, ) @@ -9169,8 +9511,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=19993, - serialized_end=20105, + serialized_start=21037, + serialized_end=21149, ) @@ -9194,8 +9536,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=20107, - serialized_end=20130, + serialized_start=21151, + serialized_end=21174, ) @@ -9219,8 +9561,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=20132, - serialized_end=20159, + serialized_start=21176, + serialized_end=21203, ) @@ -9244,8 +9586,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=20161, - serialized_end=20187, + serialized_start=21205, + serialized_end=21231, ) @@ -9283,8 +9625,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=20189, - serialized_end=20241, + serialized_start=21233, + serialized_end=21285, ) @@ -9303,6 +9645,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='root_key_id', full_name='lnrpc.BakeMacaroonRequest.root_key_id', index=1, + number=2, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -9315,8 +9664,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=20243, - serialized_end=20312, + serialized_start=21287, + serialized_end=21377, ) @@ -9347,8 +9696,256 @@ extension_ranges=[], oneofs=[ ], - serialized_start=20314, - serialized_end=20354, + serialized_start=21379, + serialized_end=21419, +) + + +_LISTMACAROONIDSREQUEST = _descriptor.Descriptor( + name='ListMacaroonIDsRequest', + full_name='lnrpc.ListMacaroonIDsRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=21421, + serialized_end=21445, +) + + +_LISTMACAROONIDSRESPONSE = _descriptor.Descriptor( + name='ListMacaroonIDsResponse', + full_name='lnrpc.ListMacaroonIDsResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='root_key_ids', full_name='lnrpc.ListMacaroonIDsResponse.root_key_ids', index=0, + number=1, type=4, cpp_type=4, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=21447, + serialized_end=21494, +) + + +_DELETEMACAROONIDREQUEST = _descriptor.Descriptor( + name='DeleteMacaroonIDRequest', + full_name='lnrpc.DeleteMacaroonIDRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='root_key_id', full_name='lnrpc.DeleteMacaroonIDRequest.root_key_id', index=0, + number=1, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=21496, + serialized_end=21542, +) + + +_DELETEMACAROONIDRESPONSE = _descriptor.Descriptor( + name='DeleteMacaroonIDResponse', + full_name='lnrpc.DeleteMacaroonIDResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='deleted', full_name='lnrpc.DeleteMacaroonIDResponse.deleted', index=0, + number=1, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=21544, + serialized_end=21587, +) + + +_MACAROONPERMISSIONLIST = _descriptor.Descriptor( + name='MacaroonPermissionList', + full_name='lnrpc.MacaroonPermissionList', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='permissions', full_name='lnrpc.MacaroonPermissionList.permissions', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=21589, + serialized_end=21661, +) + + +_LISTPERMISSIONSREQUEST = _descriptor.Descriptor( + name='ListPermissionsRequest', + full_name='lnrpc.ListPermissionsRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=21663, + serialized_end=21687, +) + + +_LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY = _descriptor.Descriptor( + name='MethodPermissionsEntry', + full_name='lnrpc.ListPermissionsResponse.MethodPermissionsEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='lnrpc.ListPermissionsResponse.MethodPermissionsEntry.key', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value', full_name='lnrpc.ListPermissionsResponse.MethodPermissionsEntry.value', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=b'8\001', + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=21800, + serialized_end=21887, +) + +_LISTPERMISSIONSRESPONSE = _descriptor.Descriptor( + name='ListPermissionsResponse', + full_name='lnrpc.ListPermissionsResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='method_permissions', full_name='lnrpc.ListPermissionsResponse.method_permissions', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=21690, + serialized_end=21887, ) @@ -9429,8 +10026,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=20357, - serialized_end=21311, + serialized_start=21890, + serialized_end=22844, ) @@ -9538,8 +10135,93 @@ extension_ranges=[], oneofs=[ ], - serialized_start=21314, - serialized_end=21596, + serialized_start=22847, + serialized_end=23129, +) + + +_MACAROONID = _descriptor.Descriptor( + name='MacaroonId', + full_name='lnrpc.MacaroonId', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='nonce', full_name='lnrpc.MacaroonId.nonce', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='storageId', full_name='lnrpc.MacaroonId.storageId', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='ops', full_name='lnrpc.MacaroonId.ops', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=23131, + serialized_end=23201, +) + + +_OP = _descriptor.Descriptor( + name='Op', + full_name='lnrpc.Op', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='entity', full_name='lnrpc.Op.entity', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='actions', full_name='lnrpc.Op.actions', index=1, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=23203, + serialized_end=23240, ) _UTXO.fields_by_name['address_type'].enum_type = _ADDRESSTYPE @@ -9692,6 +10374,12 @@ _CHANNELEVENTUPDATE.oneofs_by_name['channel'].fields.append( _CHANNELEVENTUPDATE.fields_by_name['pending_open_channel']) _CHANNELEVENTUPDATE.fields_by_name['pending_open_channel'].containing_oneof = _CHANNELEVENTUPDATE.oneofs_by_name['channel'] +_CHANNELBALANCERESPONSE.fields_by_name['local_balance'].message_type = _AMOUNT +_CHANNELBALANCERESPONSE.fields_by_name['remote_balance'].message_type = _AMOUNT +_CHANNELBALANCERESPONSE.fields_by_name['unsettled_local_balance'].message_type = _AMOUNT +_CHANNELBALANCERESPONSE.fields_by_name['unsettled_remote_balance'].message_type = _AMOUNT +_CHANNELBALANCERESPONSE.fields_by_name['pending_open_local_balance'].message_type = _AMOUNT +_CHANNELBALANCERESPONSE.fields_by_name['pending_open_remote_balance'].message_type = _AMOUNT _QUERYROUTESREQUEST_DESTCUSTOMRECORDSENTRY.containing_type = _QUERYROUTESREQUEST _QUERYROUTESREQUEST.fields_by_name['fee_limit'].message_type = _FEELIMIT _QUERYROUTESREQUEST.fields_by_name['ignored_edges'].message_type = _EDGELOCATOR @@ -9721,6 +10409,9 @@ _GRAPHTOPOLOGYUPDATE.fields_by_name['node_updates'].message_type = _NODEUPDATE _GRAPHTOPOLOGYUPDATE.fields_by_name['channel_updates'].message_type = _CHANNELEDGEUPDATE _GRAPHTOPOLOGYUPDATE.fields_by_name['closed_chans'].message_type = _CLOSEDCHANNELUPDATE +_NODEUPDATE_FEATURESENTRY.fields_by_name['value'].message_type = _FEATURE +_NODEUPDATE_FEATURESENTRY.containing_type = _NODEUPDATE +_NODEUPDATE.fields_by_name['features'].message_type = _NODEUPDATE_FEATURESENTRY _CHANNELEDGEUPDATE.fields_by_name['chan_point'].message_type = _CHANNELPOINT _CHANNELEDGEUPDATE.fields_by_name['routing_policy'].message_type = _ROUTINGPOLICY _CLOSEDCHANNELUPDATE.fields_by_name['chan_point'].message_type = _CHANNELPOINT @@ -9773,9 +10464,14 @@ _RESTORECHANBACKUPREQUEST.fields_by_name['multi_chan_backup']) _RESTORECHANBACKUPREQUEST.fields_by_name['multi_chan_backup'].containing_oneof = _RESTORECHANBACKUPREQUEST.oneofs_by_name['backup'] _BAKEMACAROONREQUEST.fields_by_name['permissions'].message_type = _MACAROONPERMISSION +_MACAROONPERMISSIONLIST.fields_by_name['permissions'].message_type = _MACAROONPERMISSION +_LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY.fields_by_name['value'].message_type = _MACAROONPERMISSIONLIST +_LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY.containing_type = _LISTPERMISSIONSRESPONSE +_LISTPERMISSIONSRESPONSE.fields_by_name['method_permissions'].message_type = _LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY _FAILURE.fields_by_name['code'].enum_type = _FAILURE_FAILURECODE _FAILURE.fields_by_name['channel_update'].message_type = _CHANNELUPDATE _FAILURE_FAILURECODE.containing_type = _FAILURE +_MACAROONID.fields_by_name['ops'].message_type = _OP DESCRIPTOR.message_types_by_name['Utxo'] = _UTXO DESCRIPTOR.message_types_by_name['Transaction'] = _TRANSACTION DESCRIPTOR.message_types_by_name['GetTransactionsRequest'] = _GETTRANSACTIONSREQUEST @@ -9853,6 +10549,7 @@ DESCRIPTOR.message_types_by_name['ChannelEventUpdate'] = _CHANNELEVENTUPDATE DESCRIPTOR.message_types_by_name['WalletBalanceRequest'] = _WALLETBALANCEREQUEST DESCRIPTOR.message_types_by_name['WalletBalanceResponse'] = _WALLETBALANCERESPONSE +DESCRIPTOR.message_types_by_name['Amount'] = _AMOUNT DESCRIPTOR.message_types_by_name['ChannelBalanceRequest'] = _CHANNELBALANCEREQUEST DESCRIPTOR.message_types_by_name['ChannelBalanceResponse'] = _CHANNELBALANCERESPONSE DESCRIPTOR.message_types_by_name['QueryRoutesRequest'] = _QUERYROUTESREQUEST @@ -9926,8 +10623,17 @@ DESCRIPTOR.message_types_by_name['MacaroonPermission'] = _MACAROONPERMISSION DESCRIPTOR.message_types_by_name['BakeMacaroonRequest'] = _BAKEMACAROONREQUEST DESCRIPTOR.message_types_by_name['BakeMacaroonResponse'] = _BAKEMACAROONRESPONSE +DESCRIPTOR.message_types_by_name['ListMacaroonIDsRequest'] = _LISTMACAROONIDSREQUEST +DESCRIPTOR.message_types_by_name['ListMacaroonIDsResponse'] = _LISTMACAROONIDSRESPONSE +DESCRIPTOR.message_types_by_name['DeleteMacaroonIDRequest'] = _DELETEMACAROONIDREQUEST +DESCRIPTOR.message_types_by_name['DeleteMacaroonIDResponse'] = _DELETEMACAROONIDRESPONSE +DESCRIPTOR.message_types_by_name['MacaroonPermissionList'] = _MACAROONPERMISSIONLIST +DESCRIPTOR.message_types_by_name['ListPermissionsRequest'] = _LISTPERMISSIONSREQUEST +DESCRIPTOR.message_types_by_name['ListPermissionsResponse'] = _LISTPERMISSIONSRESPONSE DESCRIPTOR.message_types_by_name['Failure'] = _FAILURE DESCRIPTOR.message_types_by_name['ChannelUpdate'] = _CHANNELUPDATE +DESCRIPTOR.message_types_by_name['MacaroonId'] = _MACAROONID +DESCRIPTOR.message_types_by_name['Op'] = _OP DESCRIPTOR.enum_types_by_name['AddressType'] = _ADDRESSTYPE DESCRIPTOR.enum_types_by_name['CommitmentType'] = _COMMITMENTTYPE DESCRIPTOR.enum_types_by_name['Initiator'] = _INITIATOR @@ -10566,6 +11272,13 @@ }) _sym_db.RegisterMessage(WalletBalanceResponse) +Amount = _reflection.GeneratedProtocolMessageType('Amount', (_message.Message,), { + 'DESCRIPTOR' : _AMOUNT, + '__module__' : 'rpc_pb2' + # @@protoc_insertion_point(class_scope:lnrpc.Amount) + }) +_sym_db.RegisterMessage(Amount) + ChannelBalanceRequest = _reflection.GeneratedProtocolMessageType('ChannelBalanceRequest', (_message.Message,), { 'DESCRIPTOR' : _CHANNELBALANCEREQUEST, '__module__' : 'rpc_pb2' @@ -10788,11 +11501,19 @@ _sym_db.RegisterMessage(GraphTopologyUpdate) NodeUpdate = _reflection.GeneratedProtocolMessageType('NodeUpdate', (_message.Message,), { + + 'FeaturesEntry' : _reflection.GeneratedProtocolMessageType('FeaturesEntry', (_message.Message,), { + 'DESCRIPTOR' : _NODEUPDATE_FEATURESENTRY, + '__module__' : 'rpc_pb2' + # @@protoc_insertion_point(class_scope:lnrpc.NodeUpdate.FeaturesEntry) + }) + , 'DESCRIPTOR' : _NODEUPDATE, '__module__' : 'rpc_pb2' # @@protoc_insertion_point(class_scope:lnrpc.NodeUpdate) }) _sym_db.RegisterMessage(NodeUpdate) +_sym_db.RegisterMessage(NodeUpdate.FeaturesEntry) ChannelEdgeUpdate = _reflection.GeneratedProtocolMessageType('ChannelEdgeUpdate', (_message.Message,), { 'DESCRIPTOR' : _CHANNELEDGEUPDATE, @@ -11133,6 +11854,63 @@ }) _sym_db.RegisterMessage(BakeMacaroonResponse) +ListMacaroonIDsRequest = _reflection.GeneratedProtocolMessageType('ListMacaroonIDsRequest', (_message.Message,), { + 'DESCRIPTOR' : _LISTMACAROONIDSREQUEST, + '__module__' : 'rpc_pb2' + # @@protoc_insertion_point(class_scope:lnrpc.ListMacaroonIDsRequest) + }) +_sym_db.RegisterMessage(ListMacaroonIDsRequest) + +ListMacaroonIDsResponse = _reflection.GeneratedProtocolMessageType('ListMacaroonIDsResponse', (_message.Message,), { + 'DESCRIPTOR' : _LISTMACAROONIDSRESPONSE, + '__module__' : 'rpc_pb2' + # @@protoc_insertion_point(class_scope:lnrpc.ListMacaroonIDsResponse) + }) +_sym_db.RegisterMessage(ListMacaroonIDsResponse) + +DeleteMacaroonIDRequest = _reflection.GeneratedProtocolMessageType('DeleteMacaroonIDRequest', (_message.Message,), { + 'DESCRIPTOR' : _DELETEMACAROONIDREQUEST, + '__module__' : 'rpc_pb2' + # @@protoc_insertion_point(class_scope:lnrpc.DeleteMacaroonIDRequest) + }) +_sym_db.RegisterMessage(DeleteMacaroonIDRequest) + +DeleteMacaroonIDResponse = _reflection.GeneratedProtocolMessageType('DeleteMacaroonIDResponse', (_message.Message,), { + 'DESCRIPTOR' : _DELETEMACAROONIDRESPONSE, + '__module__' : 'rpc_pb2' + # @@protoc_insertion_point(class_scope:lnrpc.DeleteMacaroonIDResponse) + }) +_sym_db.RegisterMessage(DeleteMacaroonIDResponse) + +MacaroonPermissionList = _reflection.GeneratedProtocolMessageType('MacaroonPermissionList', (_message.Message,), { + 'DESCRIPTOR' : _MACAROONPERMISSIONLIST, + '__module__' : 'rpc_pb2' + # @@protoc_insertion_point(class_scope:lnrpc.MacaroonPermissionList) + }) +_sym_db.RegisterMessage(MacaroonPermissionList) + +ListPermissionsRequest = _reflection.GeneratedProtocolMessageType('ListPermissionsRequest', (_message.Message,), { + 'DESCRIPTOR' : _LISTPERMISSIONSREQUEST, + '__module__' : 'rpc_pb2' + # @@protoc_insertion_point(class_scope:lnrpc.ListPermissionsRequest) + }) +_sym_db.RegisterMessage(ListPermissionsRequest) + +ListPermissionsResponse = _reflection.GeneratedProtocolMessageType('ListPermissionsResponse', (_message.Message,), { + + 'MethodPermissionsEntry' : _reflection.GeneratedProtocolMessageType('MethodPermissionsEntry', (_message.Message,), { + 'DESCRIPTOR' : _LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY, + '__module__' : 'rpc_pb2' + # @@protoc_insertion_point(class_scope:lnrpc.ListPermissionsResponse.MethodPermissionsEntry) + }) + , + 'DESCRIPTOR' : _LISTPERMISSIONSRESPONSE, + '__module__' : 'rpc_pb2' + # @@protoc_insertion_point(class_scope:lnrpc.ListPermissionsResponse) + }) +_sym_db.RegisterMessage(ListPermissionsResponse) +_sym_db.RegisterMessage(ListPermissionsResponse.MethodPermissionsEntry) + Failure = _reflection.GeneratedProtocolMessageType('Failure', (_message.Message,), { 'DESCRIPTOR' : _FAILURE, '__module__' : 'rpc_pb2' @@ -11147,6 +11925,20 @@ }) _sym_db.RegisterMessage(ChannelUpdate) +MacaroonId = _reflection.GeneratedProtocolMessageType('MacaroonId', (_message.Message,), { + 'DESCRIPTOR' : _MACAROONID, + '__module__' : 'rpc_pb2' + # @@protoc_insertion_point(class_scope:lnrpc.MacaroonId) + }) +_sym_db.RegisterMessage(MacaroonId) + +Op = _reflection.GeneratedProtocolMessageType('Op', (_message.Message,), { + 'DESCRIPTOR' : _OP, + '__module__' : 'rpc_pb2' + # @@protoc_insertion_point(class_scope:lnrpc.Op) + }) +_sym_db.RegisterMessage(Op) + DESCRIPTOR._options = None _SENDREQUEST_DESTCUSTOMRECORDSENTRY._options = None @@ -11167,6 +11959,8 @@ _GETINFORESPONSE.fields_by_name['testnet']._options = None _OPENCHANNELREQUEST.fields_by_name['node_pubkey_string']._options = None _PENDINGCHANNELSRESPONSE.fields_by_name['pending_closing_channels']._options = None +_CHANNELBALANCERESPONSE.fields_by_name['balance']._options = None +_CHANNELBALANCERESPONSE.fields_by_name['pending_open_balance']._options = None _QUERYROUTESREQUEST_DESTCUSTOMRECORDSENTRY._options = None _QUERYROUTESREQUEST.fields_by_name['ignored_edges']._options = None _QUERYROUTESREQUEST.fields_by_name['outgoing_chan_id']._options = None @@ -11182,6 +11976,8 @@ _CHANNELEDGE.fields_by_name['last_update']._options = None _NODEMETRICSRESPONSE_BETWEENNESSCENTRALITYENTRY._options = None _CHANINFOREQUEST.fields_by_name['chan_id']._options = None +_NODEUPDATE_FEATURESENTRY._options = None +_NODEUPDATE.fields_by_name['global_features']._options = None _CHANNELEDGEUPDATE.fields_by_name['chan_id']._options = None _CLOSEDCHANNELUPDATE.fields_by_name['chan_id']._options = None _HOPHINT.fields_by_name['chan_id']._options = None @@ -11198,6 +11994,7 @@ _CHANNELFEEREPORT.fields_by_name['chan_id']._options = None _FORWARDINGEVENT.fields_by_name['chan_id_in']._options = None _FORWARDINGEVENT.fields_by_name['chan_id_out']._options = None +_LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY._options = None _CHANNELUPDATE.fields_by_name['chan_id']._options = None _LIGHTNING = _descriptor.ServiceDescriptor( @@ -11207,8 +12004,8 @@ index=0, serialized_options=None, create_key=_descriptor._internal_create_key, - serialized_start=22898, - serialized_end=26946, + serialized_start=24686, + serialized_end=28983, methods=[ _descriptor.MethodDescriptor( name='WalletBalance', @@ -11770,6 +12567,36 @@ serialized_options=None, create_key=_descriptor._internal_create_key, ), + _descriptor.MethodDescriptor( + name='ListMacaroonIDs', + full_name='lnrpc.Lightning.ListMacaroonIDs', + index=56, + containing_service=None, + input_type=_LISTMACAROONIDSREQUEST, + output_type=_LISTMACAROONIDSRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='DeleteMacaroonID', + full_name='lnrpc.Lightning.DeleteMacaroonID', + index=57, + containing_service=None, + input_type=_DELETEMACAROONIDREQUEST, + output_type=_DELETEMACAROONIDRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='ListPermissions', + full_name='lnrpc.Lightning.ListPermissions', + index=58, + containing_service=None, + input_type=_LISTPERMISSIONSREQUEST, + output_type=_LISTPERMISSIONSRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), ]) _sym_db.RegisterServiceDescriptor(_LIGHTNING) diff --git a/lndmanage/grpc_compiled/rpc_pb2_grpc.py b/lndmanage/grpc_compiled/rpc_pb2_grpc.py index 44757a4..1417157 100644 --- a/lndmanage/grpc_compiled/rpc_pb2_grpc.py +++ b/lndmanage/grpc_compiled/rpc_pb2_grpc.py @@ -2,7 +2,7 @@ """Client and server classes corresponding to protobuf-defined services.""" import grpc -from lndmanage.grpc_compiled import rpc_pb2 as rpc__pb2 +import lndmanage.grpc_compiled.rpc_pb2 as rpc__pb2 class LightningStub(object): @@ -312,6 +312,21 @@ def __init__(self, channel): request_serializer=rpc__pb2.BakeMacaroonRequest.SerializeToString, response_deserializer=rpc__pb2.BakeMacaroonResponse.FromString, ) + self.ListMacaroonIDs = channel.unary_unary( + '/lnrpc.Lightning/ListMacaroonIDs', + request_serializer=rpc__pb2.ListMacaroonIDsRequest.SerializeToString, + response_deserializer=rpc__pb2.ListMacaroonIDsResponse.FromString, + ) + self.DeleteMacaroonID = channel.unary_unary( + '/lnrpc.Lightning/DeleteMacaroonID', + request_serializer=rpc__pb2.DeleteMacaroonIDRequest.SerializeToString, + response_deserializer=rpc__pb2.DeleteMacaroonIDResponse.FromString, + ) + self.ListPermissions = channel.unary_unary( + '/lnrpc.Lightning/ListPermissions', + request_serializer=rpc__pb2.ListPermissionsRequest.SerializeToString, + response_deserializer=rpc__pb2.ListPermissionsResponse.FromString, + ) class LightningServicer(object): @@ -347,8 +362,9 @@ def WalletBalance(self, request, context): def ChannelBalance(self, request, context): """lncli: `channelbalance` - ChannelBalance returns the total funds available across all open channels - in satoshis. + ChannelBalance returns a report on the total funds across all open channels, + categorized in local/remote, pending local/remote and unsettled local/remote + balances. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') @@ -621,8 +637,10 @@ def AbandonChannel(self, request, context): """lncli: `abandonchannel` AbandonChannel removes all channel state from the database except for a close summary. This method can be used to get rid of permanently unusable - channels due to bugs fixed in newer versions of lnd. Only available - when in debug builds of lnd. + channels due to bugs fixed in newer versions of lnd. This method can also be + used to remove externally funded channels where the funding transaction was + never broadcast. Only available for non-externally funded channels in dev + build. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') @@ -954,6 +972,32 @@ def BakeMacaroon(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def ListMacaroonIDs(self, request, context): + """lncli: `listmacaroonids` + ListMacaroonIDs returns all root key IDs that are in use. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteMacaroonID(self, request, context): + """lncli: `deletemacaroonid` + DeleteMacaroonID deletes the specified macaroon ID and invalidates all + macaroons derived from that ID. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListPermissions(self, request, context): + """lncli: `listpermissions` + ListPermissions lists all RPC method URIs and their required macaroon + permissions to access them. + """ + 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 = { @@ -1237,6 +1281,21 @@ def add_LightningServicer_to_server(servicer, server): request_deserializer=rpc__pb2.BakeMacaroonRequest.FromString, response_serializer=rpc__pb2.BakeMacaroonResponse.SerializeToString, ), + 'ListMacaroonIDs': grpc.unary_unary_rpc_method_handler( + servicer.ListMacaroonIDs, + request_deserializer=rpc__pb2.ListMacaroonIDsRequest.FromString, + response_serializer=rpc__pb2.ListMacaroonIDsResponse.SerializeToString, + ), + 'DeleteMacaroonID': grpc.unary_unary_rpc_method_handler( + servicer.DeleteMacaroonID, + request_deserializer=rpc__pb2.DeleteMacaroonIDRequest.FromString, + response_serializer=rpc__pb2.DeleteMacaroonIDResponse.SerializeToString, + ), + 'ListPermissions': grpc.unary_unary_rpc_method_handler( + servicer.ListPermissions, + request_deserializer=rpc__pb2.ListPermissionsRequest.FromString, + response_serializer=rpc__pb2.ListPermissionsResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'lnrpc.Lightning', rpc_method_handlers) @@ -2216,3 +2275,54 @@ def BakeMacaroon(request, rpc__pb2.BakeMacaroonResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def ListMacaroonIDs(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/ListMacaroonIDs', + rpc__pb2.ListMacaroonIDsRequest.SerializeToString, + rpc__pb2.ListMacaroonIDsResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def DeleteMacaroonID(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/DeleteMacaroonID', + rpc__pb2.DeleteMacaroonIDRequest.SerializeToString, + rpc__pb2.DeleteMacaroonIDResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def ListPermissions(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/ListPermissions', + rpc__pb2.ListPermissionsRequest.SerializeToString, + rpc__pb2.ListPermissionsResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/lndmanage/grpc_compiled/signer.proto b/lndmanage/grpc_compiled/signer.proto new file mode 100644 index 0000000..d0afc33 --- /dev/null +++ b/lndmanage/grpc_compiled/signer.proto @@ -0,0 +1,241 @@ +syntax = "proto3"; + +package signrpc; + +option go_package = "github.com/lightningnetwork/lnd/lnrpc/signrpc"; + +// Signer is a service that gives access to the signing functionality of the +// daemon's wallet. +service Signer { + /* + SignOutputRaw is a method that can be used to generated a signature for a + set of inputs/outputs to a transaction. Each request specifies details + concerning how the outputs should be signed, which keys they should be + signed with, and also any optional tweaks. The return value is a fixed + 64-byte signature (the same format as we use on the wire in Lightning). + + If we are unable to sign using the specified keys, then an error will be + returned. + */ + rpc SignOutputRaw (SignReq) returns (SignResp); + + /* + ComputeInputScript generates a complete InputIndex for the passed + transaction with the signature as defined within the passed SignDescriptor. + This method should be capable of generating the proper input script for + both regular p2wkh output and p2wkh outputs nested within a regular p2sh + output. + + Note that when using this method to sign inputs belonging to the wallet, + the only items of the SignDescriptor that need to be populated are pkScript + in the TxOut field, the value in that same field, and finally the input + index. + */ + rpc ComputeInputScript (SignReq) returns (InputScriptResp); + + /* + SignMessage signs a message with the key specified in the key locator. The + returned signature is fixed-size LN wire format encoded. + + The main difference to SignMessage in the main RPC is that a specific key is + used to sign the message instead of the node identity private key. + */ + rpc SignMessage (SignMessageReq) returns (SignMessageResp); + + /* + VerifyMessage verifies a signature over a message using the public key + provided. The signature must be fixed-size LN wire format encoded. + + The main difference to VerifyMessage in the main RPC is that the public key + used to sign the message does not have to be a node known to the network. + */ + rpc VerifyMessage (VerifyMessageReq) returns (VerifyMessageResp); + + /* + DeriveSharedKey returns a shared secret key by performing Diffie-Hellman key + derivation between the ephemeral public key in the request and the node's + key specified in the key_desc parameter. Either a key locator or a raw + public key is expected in the key_desc, if neither is supplied, defaults to + the node's identity private key: + P_shared = privKeyNode * ephemeralPubkey + The resulting shared public key is serialized in the compressed format and + hashed with sha256, resulting in the final key length of 256bit. + */ + rpc DeriveSharedKey (SharedKeyRequest) returns (SharedKeyResponse); +} + +message KeyLocator { + // The family of key being identified. + int32 key_family = 1; + + // The precise index of the key being identified. + int32 key_index = 2; +} + +message KeyDescriptor { + /* + The raw bytes of the key being identified. Either this or the KeyLocator + must be specified. + */ + bytes raw_key_bytes = 1; + + /* + The key locator that identifies which key to use for signing. Either this + or the raw bytes of the target key must be specified. + */ + KeyLocator key_loc = 2; +} + +message TxOut { + // The value of the output being spent. + int64 value = 1; + + // The script of the output being spent. + bytes pk_script = 2; +} + +message SignDescriptor { + /* + A descriptor that precisely describes *which* key to use for signing. This + may provide the raw public key directly, or require the Signer to re-derive + the key according to the populated derivation path. + + Note that if the key descriptor was obtained through walletrpc.DeriveKey, + then the key locator MUST always be provided, since the derived keys are not + persisted unlike with DeriveNextKey. + */ + KeyDescriptor key_desc = 1; + + /* + A scalar value that will be added to the private key corresponding to the + above public key to obtain the private key to be used to sign this input. + This value is typically derived via the following computation: + + * derivedKey = privkey + sha256(perCommitmentPoint || pubKey) mod N + */ + bytes single_tweak = 2; + + /* + A private key that will be used in combination with its corresponding + private key to derive the private key that is to be used to sign the target + input. Within the Lightning protocol, this value is typically the + commitment secret from a previously revoked commitment transaction. This + value is in combination with two hash values, and the original private key + to derive the private key to be used when signing. + + * k = (privKey*sha256(pubKey || tweakPub) + + tweakPriv*sha256(tweakPub || pubKey)) mod N + */ + bytes double_tweak = 3; + + /* + The full script required to properly redeem the output. This field will + only be populated if a p2wsh or a p2sh output is being signed. + */ + bytes witness_script = 4; + + /* + A description of the output being spent. The value and script MUST be + provided. + */ + TxOut output = 5; + + /* + The target sighash type that should be used when generating the final + sighash, and signature. + */ + uint32 sighash = 7; + + /* + The target input within the transaction that should be signed. + */ + int32 input_index = 8; +} + +message SignReq { + // The raw bytes of the transaction to be signed. + bytes raw_tx_bytes = 1; + + // A set of sign descriptors, for each input to be signed. + repeated SignDescriptor sign_descs = 2; +} + +message SignResp { + /* + A set of signatures realized in a fixed 64-byte format ordered in ascending + input order. + */ + repeated bytes raw_sigs = 1; +} + +message InputScript { + // The serializes witness stack for the specified input. + repeated bytes witness = 1; + + /* + The optional sig script for the specified witness that will only be set if + the input specified is a nested p2sh witness program. + */ + bytes sig_script = 2; +} + +message InputScriptResp { + // The set of fully valid input scripts requested. + repeated InputScript input_scripts = 1; +} + +message SignMessageReq { + // The message to be signed. + bytes msg = 1; + + // The key locator that identifies which key to use for signing. + KeyLocator key_loc = 2; +} +message SignMessageResp { + /* + The signature for the given message in the fixed-size LN wire format. + */ + bytes signature = 1; +} + +message VerifyMessageReq { + // The message over which the signature is to be verified. + bytes msg = 1; + + /* + The fixed-size LN wire encoded signature to be verified over the given + message. + */ + bytes signature = 2; + + // The public key the signature has to be valid for. + bytes pubkey = 3; +} +message VerifyMessageResp { + // Whether the signature was valid over the given message. + bool valid = 1; +} + +message SharedKeyRequest { + // The ephemeral public key to use for the DH key derivation. + bytes ephemeral_pubkey = 1; + + /* + Deprecated. The optional key locator of the local key that should be used. + If this parameter is not set then the node's identity private key will be + used. + */ + KeyLocator key_loc = 2 [deprecated = true]; + + /* + A key descriptor describes the key used for performing ECDH. Either a key + locator or a raw public key is expected, if neither is supplied, defaults to + the node's identity private key. + */ + KeyDescriptor key_desc = 3; +} + +message SharedKeyResponse { + // The shared public key, hashed with sha256. + bytes shared_key = 1; +} diff --git a/lndmanage/grpc_compiled/signer_pb2.py b/lndmanage/grpc_compiled/signer_pb2.py new file mode 100644 index 0000000..2a28075 --- /dev/null +++ b/lndmanage/grpc_compiled/signer_pb2.py @@ -0,0 +1,778 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: signer.proto + +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='signer.proto', + package='signrpc', + syntax='proto3', + serialized_options=b'Z-github.com/lightningnetwork/lnd/lnrpc/signrpc', + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\x0csigner.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\"\xc4\x01\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\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\"L\n\x07SignReq\x12\x14\n\x0craw_tx_bytes\x18\x01 \x01(\x0c\x12+\n\nsign_descs\x18\x02 \x03(\x0b\x32\x17.signrpc.SignDescriptor\"\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\"C\n\x0eSignMessageReq\x12\x0b\n\x03msg\x18\x01 \x01(\x0c\x12$\n\x07key_loc\x18\x02 \x01(\x0b\x32\x13.signrpc.KeyLocator\"$\n\x0fSignMessageResp\x12\x11\n\tsignature\x18\x01 \x01(\x0c\"B\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\"\"\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\x32\xd4\x02\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.SharedKeyResponseB/Z-github.com/lightningnetwork/lnd/lnrpc/signrpcb\x06proto3' +) + + + + +_KEYLOCATOR = _descriptor.Descriptor( + name='KeyLocator', + full_name='signrpc.KeyLocator', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='key_family', full_name='signrpc.KeyLocator.key_family', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='key_index', full_name='signrpc.KeyLocator.key_index', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=25, + serialized_end=76, +) + + +_KEYDESCRIPTOR = _descriptor.Descriptor( + name='KeyDescriptor', + full_name='signrpc.KeyDescriptor', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='raw_key_bytes', full_name='signrpc.KeyDescriptor.raw_key_bytes', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='key_loc', full_name='signrpc.KeyDescriptor.key_loc', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=78, + serialized_end=154, +) + + +_TXOUT = _descriptor.Descriptor( + name='TxOut', + full_name='signrpc.TxOut', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='value', full_name='signrpc.TxOut.value', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='pk_script', full_name='signrpc.TxOut.pk_script', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=156, + serialized_end=197, +) + + +_SIGNDESCRIPTOR = _descriptor.Descriptor( + name='SignDescriptor', + full_name='signrpc.SignDescriptor', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='key_desc', full_name='signrpc.SignDescriptor.key_desc', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='single_tweak', full_name='signrpc.SignDescriptor.single_tweak', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='double_tweak', full_name='signrpc.SignDescriptor.double_tweak', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='witness_script', full_name='signrpc.SignDescriptor.witness_script', index=3, + number=4, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='output', full_name='signrpc.SignDescriptor.output', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='sighash', full_name='signrpc.SignDescriptor.sighash', index=5, + number=7, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='input_index', full_name='signrpc.SignDescriptor.input_index', index=6, + number=8, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=200, + serialized_end=396, +) + + +_SIGNREQ = _descriptor.Descriptor( + name='SignReq', + full_name='signrpc.SignReq', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='raw_tx_bytes', full_name='signrpc.SignReq.raw_tx_bytes', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='sign_descs', full_name='signrpc.SignReq.sign_descs', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=398, + serialized_end=474, +) + + +_SIGNRESP = _descriptor.Descriptor( + name='SignResp', + full_name='signrpc.SignResp', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='raw_sigs', full_name='signrpc.SignResp.raw_sigs', index=0, + number=1, type=12, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=476, + serialized_end=504, +) + + +_INPUTSCRIPT = _descriptor.Descriptor( + name='InputScript', + full_name='signrpc.InputScript', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='witness', full_name='signrpc.InputScript.witness', index=0, + number=1, type=12, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='sig_script', full_name='signrpc.InputScript.sig_script', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=506, + serialized_end=556, +) + + +_INPUTSCRIPTRESP = _descriptor.Descriptor( + name='InputScriptResp', + full_name='signrpc.InputScriptResp', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='input_scripts', full_name='signrpc.InputScriptResp.input_scripts', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=558, + serialized_end=620, +) + + +_SIGNMESSAGEREQ = _descriptor.Descriptor( + name='SignMessageReq', + full_name='signrpc.SignMessageReq', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='msg', full_name='signrpc.SignMessageReq.msg', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='key_loc', full_name='signrpc.SignMessageReq.key_loc', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=622, + serialized_end=689, +) + + +_SIGNMESSAGERESP = _descriptor.Descriptor( + name='SignMessageResp', + full_name='signrpc.SignMessageResp', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='signature', full_name='signrpc.SignMessageResp.signature', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=691, + serialized_end=727, +) + + +_VERIFYMESSAGEREQ = _descriptor.Descriptor( + name='VerifyMessageReq', + full_name='signrpc.VerifyMessageReq', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='msg', full_name='signrpc.VerifyMessageReq.msg', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='signature', full_name='signrpc.VerifyMessageReq.signature', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='pubkey', full_name='signrpc.VerifyMessageReq.pubkey', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=729, + serialized_end=795, +) + + +_VERIFYMESSAGERESP = _descriptor.Descriptor( + name='VerifyMessageResp', + full_name='signrpc.VerifyMessageResp', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='valid', full_name='signrpc.VerifyMessageResp.valid', index=0, + number=1, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=797, + serialized_end=831, +) + + +_SHAREDKEYREQUEST = _descriptor.Descriptor( + name='SharedKeyRequest', + full_name='signrpc.SharedKeyRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='ephemeral_pubkey', full_name='signrpc.SharedKeyRequest.ephemeral_pubkey', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='key_loc', full_name='signrpc.SharedKeyRequest.key_loc', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=b'\030\001', file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='key_desc', full_name='signrpc.SharedKeyRequest.key_desc', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=834, + serialized_end=962, +) + + +_SHAREDKEYRESPONSE = _descriptor.Descriptor( + name='SharedKeyResponse', + full_name='signrpc.SharedKeyResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='shared_key', full_name='signrpc.SharedKeyResponse.shared_key', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=964, + serialized_end=1003, +) + +_KEYDESCRIPTOR.fields_by_name['key_loc'].message_type = _KEYLOCATOR +_SIGNDESCRIPTOR.fields_by_name['key_desc'].message_type = _KEYDESCRIPTOR +_SIGNDESCRIPTOR.fields_by_name['output'].message_type = _TXOUT +_SIGNREQ.fields_by_name['sign_descs'].message_type = _SIGNDESCRIPTOR +_INPUTSCRIPTRESP.fields_by_name['input_scripts'].message_type = _INPUTSCRIPT +_SIGNMESSAGEREQ.fields_by_name['key_loc'].message_type = _KEYLOCATOR +_SHAREDKEYREQUEST.fields_by_name['key_loc'].message_type = _KEYLOCATOR +_SHAREDKEYREQUEST.fields_by_name['key_desc'].message_type = _KEYDESCRIPTOR +DESCRIPTOR.message_types_by_name['KeyLocator'] = _KEYLOCATOR +DESCRIPTOR.message_types_by_name['KeyDescriptor'] = _KEYDESCRIPTOR +DESCRIPTOR.message_types_by_name['TxOut'] = _TXOUT +DESCRIPTOR.message_types_by_name['SignDescriptor'] = _SIGNDESCRIPTOR +DESCRIPTOR.message_types_by_name['SignReq'] = _SIGNREQ +DESCRIPTOR.message_types_by_name['SignResp'] = _SIGNRESP +DESCRIPTOR.message_types_by_name['InputScript'] = _INPUTSCRIPT +DESCRIPTOR.message_types_by_name['InputScriptResp'] = _INPUTSCRIPTRESP +DESCRIPTOR.message_types_by_name['SignMessageReq'] = _SIGNMESSAGEREQ +DESCRIPTOR.message_types_by_name['SignMessageResp'] = _SIGNMESSAGERESP +DESCRIPTOR.message_types_by_name['VerifyMessageReq'] = _VERIFYMESSAGEREQ +DESCRIPTOR.message_types_by_name['VerifyMessageResp'] = _VERIFYMESSAGERESP +DESCRIPTOR.message_types_by_name['SharedKeyRequest'] = _SHAREDKEYREQUEST +DESCRIPTOR.message_types_by_name['SharedKeyResponse'] = _SHAREDKEYRESPONSE +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +KeyLocator = _reflection.GeneratedProtocolMessageType('KeyLocator', (_message.Message,), { + 'DESCRIPTOR' : _KEYLOCATOR, + '__module__' : 'signer_pb2' + # @@protoc_insertion_point(class_scope:signrpc.KeyLocator) + }) +_sym_db.RegisterMessage(KeyLocator) + +KeyDescriptor = _reflection.GeneratedProtocolMessageType('KeyDescriptor', (_message.Message,), { + 'DESCRIPTOR' : _KEYDESCRIPTOR, + '__module__' : 'signer_pb2' + # @@protoc_insertion_point(class_scope:signrpc.KeyDescriptor) + }) +_sym_db.RegisterMessage(KeyDescriptor) + +TxOut = _reflection.GeneratedProtocolMessageType('TxOut', (_message.Message,), { + 'DESCRIPTOR' : _TXOUT, + '__module__' : 'signer_pb2' + # @@protoc_insertion_point(class_scope:signrpc.TxOut) + }) +_sym_db.RegisterMessage(TxOut) + +SignDescriptor = _reflection.GeneratedProtocolMessageType('SignDescriptor', (_message.Message,), { + 'DESCRIPTOR' : _SIGNDESCRIPTOR, + '__module__' : 'signer_pb2' + # @@protoc_insertion_point(class_scope:signrpc.SignDescriptor) + }) +_sym_db.RegisterMessage(SignDescriptor) + +SignReq = _reflection.GeneratedProtocolMessageType('SignReq', (_message.Message,), { + 'DESCRIPTOR' : _SIGNREQ, + '__module__' : 'signer_pb2' + # @@protoc_insertion_point(class_scope:signrpc.SignReq) + }) +_sym_db.RegisterMessage(SignReq) + +SignResp = _reflection.GeneratedProtocolMessageType('SignResp', (_message.Message,), { + 'DESCRIPTOR' : _SIGNRESP, + '__module__' : 'signer_pb2' + # @@protoc_insertion_point(class_scope:signrpc.SignResp) + }) +_sym_db.RegisterMessage(SignResp) + +InputScript = _reflection.GeneratedProtocolMessageType('InputScript', (_message.Message,), { + 'DESCRIPTOR' : _INPUTSCRIPT, + '__module__' : 'signer_pb2' + # @@protoc_insertion_point(class_scope:signrpc.InputScript) + }) +_sym_db.RegisterMessage(InputScript) + +InputScriptResp = _reflection.GeneratedProtocolMessageType('InputScriptResp', (_message.Message,), { + 'DESCRIPTOR' : _INPUTSCRIPTRESP, + '__module__' : 'signer_pb2' + # @@protoc_insertion_point(class_scope:signrpc.InputScriptResp) + }) +_sym_db.RegisterMessage(InputScriptResp) + +SignMessageReq = _reflection.GeneratedProtocolMessageType('SignMessageReq', (_message.Message,), { + 'DESCRIPTOR' : _SIGNMESSAGEREQ, + '__module__' : 'signer_pb2' + # @@protoc_insertion_point(class_scope:signrpc.SignMessageReq) + }) +_sym_db.RegisterMessage(SignMessageReq) + +SignMessageResp = _reflection.GeneratedProtocolMessageType('SignMessageResp', (_message.Message,), { + 'DESCRIPTOR' : _SIGNMESSAGERESP, + '__module__' : 'signer_pb2' + # @@protoc_insertion_point(class_scope:signrpc.SignMessageResp) + }) +_sym_db.RegisterMessage(SignMessageResp) + +VerifyMessageReq = _reflection.GeneratedProtocolMessageType('VerifyMessageReq', (_message.Message,), { + 'DESCRIPTOR' : _VERIFYMESSAGEREQ, + '__module__' : 'signer_pb2' + # @@protoc_insertion_point(class_scope:signrpc.VerifyMessageReq) + }) +_sym_db.RegisterMessage(VerifyMessageReq) + +VerifyMessageResp = _reflection.GeneratedProtocolMessageType('VerifyMessageResp', (_message.Message,), { + 'DESCRIPTOR' : _VERIFYMESSAGERESP, + '__module__' : 'signer_pb2' + # @@protoc_insertion_point(class_scope:signrpc.VerifyMessageResp) + }) +_sym_db.RegisterMessage(VerifyMessageResp) + +SharedKeyRequest = _reflection.GeneratedProtocolMessageType('SharedKeyRequest', (_message.Message,), { + 'DESCRIPTOR' : _SHAREDKEYREQUEST, + '__module__' : 'signer_pb2' + # @@protoc_insertion_point(class_scope:signrpc.SharedKeyRequest) + }) +_sym_db.RegisterMessage(SharedKeyRequest) + +SharedKeyResponse = _reflection.GeneratedProtocolMessageType('SharedKeyResponse', (_message.Message,), { + 'DESCRIPTOR' : _SHAREDKEYRESPONSE, + '__module__' : 'signer_pb2' + # @@protoc_insertion_point(class_scope:signrpc.SharedKeyResponse) + }) +_sym_db.RegisterMessage(SharedKeyResponse) + + +DESCRIPTOR._options = None +_SHAREDKEYREQUEST.fields_by_name['key_loc']._options = None + +_SIGNER = _descriptor.ServiceDescriptor( + name='Signer', + full_name='signrpc.Signer', + file=DESCRIPTOR, + index=0, + serialized_options=None, + create_key=_descriptor._internal_create_key, + serialized_start=1006, + serialized_end=1346, + methods=[ + _descriptor.MethodDescriptor( + name='SignOutputRaw', + full_name='signrpc.Signer.SignOutputRaw', + index=0, + containing_service=None, + input_type=_SIGNREQ, + output_type=_SIGNRESP, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='ComputeInputScript', + full_name='signrpc.Signer.ComputeInputScript', + index=1, + containing_service=None, + input_type=_SIGNREQ, + output_type=_INPUTSCRIPTRESP, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='SignMessage', + full_name='signrpc.Signer.SignMessage', + index=2, + containing_service=None, + input_type=_SIGNMESSAGEREQ, + output_type=_SIGNMESSAGERESP, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='VerifyMessage', + full_name='signrpc.Signer.VerifyMessage', + index=3, + containing_service=None, + input_type=_VERIFYMESSAGEREQ, + output_type=_VERIFYMESSAGERESP, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='DeriveSharedKey', + full_name='signrpc.Signer.DeriveSharedKey', + index=4, + containing_service=None, + input_type=_SHAREDKEYREQUEST, + output_type=_SHAREDKEYRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), +]) +_sym_db.RegisterServiceDescriptor(_SIGNER) + +DESCRIPTOR.services_by_name['Signer'] = _SIGNER + +# @@protoc_insertion_point(module_scope) diff --git a/lndmanage/grpc_compiled/signer_pb2_grpc.py b/lndmanage/grpc_compiled/signer_pb2_grpc.py new file mode 100644 index 0000000..8873b72 --- /dev/null +++ b/lndmanage/grpc_compiled/signer_pb2_grpc.py @@ -0,0 +1,245 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +import lndmanage.grpc_compiled.signer_pb2 as signer__pb2 + + +class SignerStub(object): + """Signer is a service that gives access to the signing functionality of the + daemon's wallet. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.SignOutputRaw = channel.unary_unary( + '/signrpc.Signer/SignOutputRaw', + request_serializer=signer__pb2.SignReq.SerializeToString, + response_deserializer=signer__pb2.SignResp.FromString, + ) + self.ComputeInputScript = channel.unary_unary( + '/signrpc.Signer/ComputeInputScript', + request_serializer=signer__pb2.SignReq.SerializeToString, + response_deserializer=signer__pb2.InputScriptResp.FromString, + ) + self.SignMessage = channel.unary_unary( + '/signrpc.Signer/SignMessage', + request_serializer=signer__pb2.SignMessageReq.SerializeToString, + response_deserializer=signer__pb2.SignMessageResp.FromString, + ) + self.VerifyMessage = channel.unary_unary( + '/signrpc.Signer/VerifyMessage', + request_serializer=signer__pb2.VerifyMessageReq.SerializeToString, + response_deserializer=signer__pb2.VerifyMessageResp.FromString, + ) + self.DeriveSharedKey = channel.unary_unary( + '/signrpc.Signer/DeriveSharedKey', + request_serializer=signer__pb2.SharedKeyRequest.SerializeToString, + response_deserializer=signer__pb2.SharedKeyResponse.FromString, + ) + + +class SignerServicer(object): + """Signer is a service that gives access to the signing functionality of the + daemon's wallet. + """ + + def SignOutputRaw(self, request, context): + """ + SignOutputRaw is a method that can be used to generated a signature for a + set of inputs/outputs to a transaction. Each request specifies details + concerning how the outputs should be signed, which keys they should be + signed with, and also any optional tweaks. The return value is a fixed + 64-byte signature (the same format as we use on the wire in Lightning). + + If we are unable to sign using the specified keys, then an error will be + returned. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ComputeInputScript(self, request, context): + """ + ComputeInputScript generates a complete InputIndex for the passed + transaction with the signature as defined within the passed SignDescriptor. + This method should be capable of generating the proper input script for + both regular p2wkh output and p2wkh outputs nested within a regular p2sh + output. + + Note that when using this method to sign inputs belonging to the wallet, + the only items of the SignDescriptor that need to be populated are pkScript + in the TxOut field, the value in that same field, and finally the input + index. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SignMessage(self, request, context): + """ + SignMessage signs a message with the key specified in the key locator. The + returned signature is fixed-size LN wire format encoded. + + The main difference to SignMessage in the main RPC is that a specific key is + used to sign the message instead of the node identity private key. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def VerifyMessage(self, request, context): + """ + VerifyMessage verifies a signature over a message using the public key + provided. The signature must be fixed-size LN wire format encoded. + + The main difference to VerifyMessage in the main RPC is that the public key + used to sign the message does not have to be a node known to the network. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeriveSharedKey(self, request, context): + """ + DeriveSharedKey returns a shared secret key by performing Diffie-Hellman key + derivation between the ephemeral public key in the request and the node's + key specified in the key_desc parameter. Either a key locator or a raw + public key is expected in the key_desc, if neither is supplied, defaults to + the node's identity private key: + P_shared = privKeyNode * ephemeralPubkey + The resulting shared public key is serialized in the compressed format and + hashed with sha256, resulting in the final key length of 256bit. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_SignerServicer_to_server(servicer, server): + rpc_method_handlers = { + 'SignOutputRaw': grpc.unary_unary_rpc_method_handler( + servicer.SignOutputRaw, + request_deserializer=signer__pb2.SignReq.FromString, + response_serializer=signer__pb2.SignResp.SerializeToString, + ), + 'ComputeInputScript': grpc.unary_unary_rpc_method_handler( + servicer.ComputeInputScript, + request_deserializer=signer__pb2.SignReq.FromString, + response_serializer=signer__pb2.InputScriptResp.SerializeToString, + ), + 'SignMessage': grpc.unary_unary_rpc_method_handler( + servicer.SignMessage, + request_deserializer=signer__pb2.SignMessageReq.FromString, + response_serializer=signer__pb2.SignMessageResp.SerializeToString, + ), + 'VerifyMessage': grpc.unary_unary_rpc_method_handler( + servicer.VerifyMessage, + request_deserializer=signer__pb2.VerifyMessageReq.FromString, + response_serializer=signer__pb2.VerifyMessageResp.SerializeToString, + ), + 'DeriveSharedKey': grpc.unary_unary_rpc_method_handler( + servicer.DeriveSharedKey, + request_deserializer=signer__pb2.SharedKeyRequest.FromString, + response_serializer=signer__pb2.SharedKeyResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'signrpc.Signer', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class Signer(object): + """Signer is a service that gives access to the signing functionality of the + daemon's wallet. + """ + + @staticmethod + def SignOutputRaw(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, '/signrpc.Signer/SignOutputRaw', + signer__pb2.SignReq.SerializeToString, + signer__pb2.SignResp.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def ComputeInputScript(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, '/signrpc.Signer/ComputeInputScript', + signer__pb2.SignReq.SerializeToString, + signer__pb2.InputScriptResp.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def SignMessage(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, '/signrpc.Signer/SignMessage', + signer__pb2.SignMessageReq.SerializeToString, + signer__pb2.SignMessageResp.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def VerifyMessage(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, '/signrpc.Signer/VerifyMessage', + signer__pb2.VerifyMessageReq.SerializeToString, + signer__pb2.VerifyMessageResp.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def DeriveSharedKey(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, '/signrpc.Signer/DeriveSharedKey', + signer__pb2.SharedKeyRequest.SerializeToString, + signer__pb2.SharedKeyResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/lndmanage/grpc_compiled/walletkit.proto b/lndmanage/grpc_compiled/walletkit.proto new file mode 100644 index 0000000..706b269 --- /dev/null +++ b/lndmanage/grpc_compiled/walletkit.proto @@ -0,0 +1,601 @@ +syntax = "proto3"; + +import "rpc.proto"; +import "signer.proto"; + +package walletrpc; + +option go_package = "github.com/lightningnetwork/lnd/lnrpc/walletrpc"; + +// WalletKit is a service that gives access to the core functionalities of the +// daemon's wallet. +service WalletKit { + /* + ListUnspent returns a list of all utxos spendable by the wallet with a + number of confirmations between the specified minimum and maximum. + */ + rpc ListUnspent (ListUnspentRequest) returns (ListUnspentResponse); + + /* + LeaseOutput locks an output to the given ID, preventing it from being + available for any future coin selection attempts. The absolute time of the + lock's expiration is returned. The expiration of the lock can be extended by + successive invocations of this RPC. Outputs can be unlocked before their + expiration through `ReleaseOutput`. + */ + rpc LeaseOutput (LeaseOutputRequest) returns (LeaseOutputResponse); + + /* + ReleaseOutput unlocks an output, allowing it to be available for coin + selection if it remains unspent. The ID should match the one used to + originally lock the output. + */ + rpc ReleaseOutput (ReleaseOutputRequest) returns (ReleaseOutputResponse); + + /* + DeriveNextKey attempts to derive the *next* key within the key family + (account in BIP43) specified. This method should return the next external + child within this branch. + */ + rpc DeriveNextKey (KeyReq) returns (signrpc.KeyDescriptor); + + /* + DeriveKey attempts to derive an arbitrary key specified by the passed + KeyLocator. + */ + rpc DeriveKey (signrpc.KeyLocator) returns (signrpc.KeyDescriptor); + + /* + NextAddr returns the next unused address within the wallet. + */ + rpc NextAddr (AddrRequest) returns (AddrResponse); + + /* + PublishTransaction attempts to publish the passed transaction to the + network. Once this returns without an error, the wallet will continually + attempt to re-broadcast the transaction on start up, until it enters the + chain. + */ + rpc PublishTransaction (Transaction) returns (PublishResponse); + + /* + SendOutputs is similar to the existing sendmany call in Bitcoind, and + allows the caller to create a transaction that sends to several outputs at + once. This is ideal when wanting to batch create a set of transactions. + */ + rpc SendOutputs (SendOutputsRequest) returns (SendOutputsResponse); + + /* + EstimateFee attempts to query the internal fee estimator of the wallet to + determine the fee (in sat/kw) to attach to a transaction in order to + achieve the confirmation target. + */ + rpc EstimateFee (EstimateFeeRequest) returns (EstimateFeeResponse); + + /* + PendingSweeps returns lists of on-chain outputs that lnd is currently + attempting to sweep within its central batching engine. Outputs with similar + fee rates are batched together in order to sweep them within a single + transaction. + + NOTE: Some of the fields within PendingSweepsRequest are not guaranteed to + remain supported. This is an advanced API that depends on the internals of + the UtxoSweeper, so things may change. + */ + rpc PendingSweeps (PendingSweepsRequest) returns (PendingSweepsResponse); + + /* + BumpFee bumps the fee of an arbitrary input within a transaction. This RPC + takes a different approach than bitcoind's bumpfee command. lnd has a + central batching engine in which inputs with similar fee rates are batched + together to save on transaction fees. Due to this, we cannot rely on + bumping the fee on a specific transaction, since transactions can change at + any point with the addition of new inputs. The list of inputs that + currently exist within lnd's central batching engine can be retrieved + through the PendingSweeps RPC. + + When bumping the fee of an input that currently exists within lnd's central + batching engine, a higher fee transaction will be created that replaces the + lower fee transaction through the Replace-By-Fee (RBF) policy. If it + + This RPC also serves useful when wanting to perform a Child-Pays-For-Parent + (CPFP), where the child transaction pays for its parent's fee. This can be + done by specifying an outpoint within the low fee transaction that is under + the control of the wallet. + + The fee preference can be expressed either as a specific fee rate or a delta + of blocks in which the output should be swept on-chain within. If a fee + preference is not explicitly specified, then an error is returned. + + Note that this RPC currently doesn't perform any validation checks on the + fee preference being provided. For now, the responsibility of ensuring that + the new fee preference is sufficient is delegated to the user. + */ + rpc BumpFee (BumpFeeRequest) returns (BumpFeeResponse); + + /* + ListSweeps returns a list of the sweep transactions our node has produced. + Note that these sweeps may not be confirmed yet, as we record sweeps on + broadcast, not confirmation. + */ + rpc ListSweeps (ListSweepsRequest) returns (ListSweepsResponse); + + /* + LabelTransaction adds a label to a transaction. If the transaction already + has a label the call will fail unless the overwrite bool is set. This will + overwrite the exiting transaction label. Labels must not be empty, and + cannot exceed 500 characters. + */ + rpc LabelTransaction (LabelTransactionRequest) + returns (LabelTransactionResponse); + + /* + FundPsbt creates a fully populated PSBT that contains enough inputs to fund + the outputs specified in the template. There are two ways of specifying a + template: Either by passing in a PSBT with at least one output declared or + by passing in a raw TxTemplate message. + + If there are no inputs specified in the template, coin selection is + performed automatically. If the template does contain any inputs, it is + assumed that full coin selection happened externally and no additional + inputs are added. If the specified inputs aren't enough to fund the outputs + with the given fee rate, an error is returned. + + After either selecting or verifying the inputs, all input UTXOs are locked + with an internal app ID. + + NOTE: If this method returns without an error, it is the caller's + responsibility to either spend the locked UTXOs (by finalizing and then + publishing the transaction) or to unlock/release the locked UTXOs in case of + an error on the caller's side. + */ + rpc FundPsbt (FundPsbtRequest) returns (FundPsbtResponse); + + /* + FinalizePsbt expects a partial transaction with all inputs and outputs fully + declared and tries to sign all inputs that belong to the wallet. Lnd must be + the last signer of the transaction. That means, if there are any unsigned + non-witness inputs or inputs without UTXO information attached or inputs + without witness data that do not belong to lnd's wallet, this method will + fail. If no error is returned, the PSBT is ready to be extracted and the + final TX within to be broadcast. + + NOTE: This method does NOT publish the transaction once finalized. It is the + caller's responsibility to either publish the transaction on success or + unlock/release any locked UTXOs in case of an error in this method. + */ + rpc FinalizePsbt (FinalizePsbtRequest) returns (FinalizePsbtResponse); +} + +message ListUnspentRequest { + // The minimum number of confirmations to be included. + int32 min_confs = 1; + + // The maximum number of confirmations to be included. + int32 max_confs = 2; +} + +message ListUnspentResponse { + // A list of utxos satisfying the specified number of confirmations. + repeated lnrpc.Utxo utxos = 1; +} + +message LeaseOutputRequest { + /* + An ID of 32 random bytes that must be unique for each distinct application + using this RPC which will be used to bound the output lease to. + */ + bytes id = 1; + + // The identifying outpoint of the output being leased. + lnrpc.OutPoint outpoint = 2; +} + +message LeaseOutputResponse { + /* + The absolute expiration of the output lease represented as a unix timestamp. + */ + uint64 expiration = 1; +} + +message ReleaseOutputRequest { + // The unique ID that was used to lock the output. + bytes id = 1; + + // The identifying outpoint of the output being released. + lnrpc.OutPoint outpoint = 2; +} + +message ReleaseOutputResponse { +} + +message KeyReq { + /* + Is the key finger print of the root pubkey that this request is targeting. + This allows the WalletKit to possibly serve out keys for multiple HD chains + via public derivation. + */ + int32 key_finger_print = 1; + + /* + The target key family to derive a key from. In other contexts, this is + known as the "account". + */ + int32 key_family = 2; +} + +message AddrRequest { + // No fields, as we always give out a p2wkh address. +} +message AddrResponse { + /* + The address encoded using a bech32 format. + */ + string addr = 1; +} + +message Transaction { + /* + The raw serialized transaction. + */ + bytes tx_hex = 1; + + /* + An optional label to save with the transaction. Limited to 500 characters. + */ + string label = 2; +} +message PublishResponse { + /* + If blank, then no error occurred and the transaction was successfully + published. If not the empty string, then a string representation of the + broadcast error. + + TODO(roasbeef): map to a proper enum type + */ + string publish_error = 1; +} + +message SendOutputsRequest { + /* + The number of satoshis per kilo weight that should be used when crafting + this transaction. + */ + int64 sat_per_kw = 1; + + /* + A slice of the outputs that should be created in the transaction produced. + */ + repeated signrpc.TxOut outputs = 2; + + // An optional label for the transaction, limited to 500 characters. + string label = 3; + + // The minimum number of confirmations each one of your outputs used for + // the transaction must satisfy. + int32 min_confs = 4; + + // Whether unconfirmed outputs should be used as inputs for the transaction. + bool spend_unconfirmed = 5; +} +message SendOutputsResponse { + /* + The serialized transaction sent out on the network. + */ + bytes raw_tx = 1; +} + +message EstimateFeeRequest { + /* + The number of confirmations to shoot for when estimating the fee. + */ + int32 conf_target = 1; +} +message EstimateFeeResponse { + /* + The amount of satoshis per kw that should be used in order to reach the + confirmation target in the request. + */ + int64 sat_per_kw = 1; +} + +enum WitnessType { + UNKNOWN_WITNESS = 0; + + /* + A witness that allows us to spend the output of a commitment transaction + after a relative lock-time lockout. + */ + COMMITMENT_TIME_LOCK = 1; + + /* + A witness that allows us to spend a settled no-delay output immediately on a + counterparty's commitment transaction. + */ + COMMITMENT_NO_DELAY = 2; + + /* + A witness that allows us to sweep the settled output of a malicious + counterparty's who broadcasts a revoked commitment transaction. + */ + COMMITMENT_REVOKE = 3; + + /* + A witness that allows us to sweep an HTLC which we offered to the remote + party in the case that they broadcast a revoked commitment state. + */ + HTLC_OFFERED_REVOKE = 4; + + /* + A witness that allows us to sweep an HTLC output sent to us in the case that + the remote party broadcasts a revoked commitment state. + */ + HTLC_ACCEPTED_REVOKE = 5; + + /* + A witness that allows us to sweep an HTLC output that we extended to a + party, but was never fulfilled. This HTLC output isn't directly on the + commitment transaction, but is the result of a confirmed second-level HTLC + transaction. As a result, we can only spend this after a CSV delay. + */ + HTLC_OFFERED_TIMEOUT_SECOND_LEVEL = 6; + + /* + A witness that allows us to sweep an HTLC output that was offered to us, and + for which we have a payment preimage. This HTLC output isn't directly on our + commitment transaction, but is the result of confirmed second-level HTLC + transaction. As a result, we can only spend this after a CSV delay. + */ + HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL = 7; + + /* + A witness that allows us to sweep an HTLC that we offered to the remote + party which lies in the commitment transaction of the remote party. We can + spend this output after the absolute CLTV timeout of the HTLC as passed. + */ + HTLC_OFFERED_REMOTE_TIMEOUT = 8; + + /* + A witness that allows us to sweep an HTLC that was offered to us by the + remote party. We use this witness in the case that the remote party goes to + chain, and we know the pre-image to the HTLC. We can sweep this without any + additional timeout. + */ + HTLC_ACCEPTED_REMOTE_SUCCESS = 9; + + /* + A witness that allows us to sweep an HTLC from the remote party's commitment + transaction in the case that the broadcast a revoked commitment, but then + also immediately attempt to go to the second level to claim the HTLC. + */ + HTLC_SECOND_LEVEL_REVOKE = 10; + + /* + A witness type that allows us to spend a regular p2wkh output that's sent to + an output which is under complete control of the backing wallet. + */ + WITNESS_KEY_HASH = 11; + + /* + A witness type that allows us to sweep an output that sends to a nested P2SH + script that pays to a key solely under our control. + */ + NESTED_WITNESS_KEY_HASH = 12; + + /* + A witness type that allows us to spend our anchor on the commitment + transaction. + */ + COMMITMENT_ANCHOR = 13; +} + +message PendingSweep { + // The outpoint of the output we're attempting to sweep. + lnrpc.OutPoint outpoint = 1; + + // The witness type of the output we're attempting to sweep. + WitnessType witness_type = 2; + + // The value of the output we're attempting to sweep. + uint32 amount_sat = 3; + + /* + The fee rate we'll use to sweep the output. The fee rate is only determined + once a sweeping transaction for the output is created, so it's possible for + this to be 0 before this. + */ + uint32 sat_per_byte = 4; + + // The number of broadcast attempts we've made to sweep the output. + uint32 broadcast_attempts = 5; + + /* + The next height of the chain at which we'll attempt to broadcast the + sweep transaction of the output. + */ + uint32 next_broadcast_height = 6; + + // The requested confirmation target for this output. + uint32 requested_conf_target = 8; + + // The requested fee rate, expressed in sat/byte, for this output. + uint32 requested_sat_per_byte = 9; + + /* + Whether this input must be force-swept. This means that it is swept even + if it has a negative yield. + */ + bool force = 7; +} + +message PendingSweepsRequest { +} + +message PendingSweepsResponse { + /* + The set of outputs currently being swept by lnd's central batching engine. + */ + repeated PendingSweep pending_sweeps = 1; +} + +message BumpFeeRequest { + // The input we're attempting to bump the fee of. + lnrpc.OutPoint outpoint = 1; + + // The target number of blocks that the input should be spent within. + uint32 target_conf = 2; + + /* + The fee rate, expressed in sat/byte, that should be used to spend the input + with. + */ + uint32 sat_per_byte = 3; + + /* + Whether this input must be force-swept. This means that it is swept even + if it has a negative yield. + */ + bool force = 4; +} + +message BumpFeeResponse { +} + +message ListSweepsRequest { + /* + Retrieve the full sweep transaction details. If false, only the sweep txids + will be returned. Note that some sweeps that LND publishes will have been + replaced-by-fee, so will not be included in this output. + */ + bool verbose = 1; +} + +message ListSweepsResponse { + message TransactionIDs { + /* + Reversed, hex-encoded string representing the transaction ids of the + sweeps that our node has broadcast. Note that these transactions may + not have confirmed yet, we record sweeps on broadcast, not confirmation. + */ + repeated string transaction_ids = 1; + } + + oneof sweeps { + lnrpc.TransactionDetails transaction_details = 1; + TransactionIDs transaction_ids = 2; + } +} + +message LabelTransactionRequest { + // The txid of the transaction to label. + bytes txid = 1; + + // The label to add to the transaction, limited to 500 characters. + string label = 2; + + // Whether to overwrite the existing label, if it is present. + bool overwrite = 3; +} + +message LabelTransactionResponse { +} + +message FundPsbtRequest { + oneof template { + /* + Use an existing PSBT packet as the template for the funded PSBT. + + The packet must contain at least one non-dust output. If one or more + inputs are specified, no coin selection is performed. In that case every + input must be an UTXO known to the wallet that has not been locked + before. The sum of all inputs must be sufficiently greater than the sum + of all outputs to pay a miner fee with the specified fee rate. A change + output is added to the PSBT if necessary. + */ + bytes psbt = 1; + + /* + Use the outputs and optional inputs from this raw template. + */ + TxTemplate raw = 2; + } + + oneof fees { + /* + The target number of blocks that the transaction should be confirmed in. + */ + uint32 target_conf = 3; + + /* + The fee rate, expressed in sat/vbyte, that should be used to spend the + input with. + */ + uint32 sat_per_vbyte = 4; + } +} +message FundPsbtResponse { + /* + The funded but not yet signed PSBT packet. + */ + bytes funded_psbt = 1; + + /* + The index of the added change output or -1 if no change was left over. + */ + int32 change_output_index = 2; + + /* + The list of lock leases that were acquired for the inputs in the funded PSBT + packet. + */ + repeated UtxoLease locked_utxos = 3; +} + +message TxTemplate { + /* + An optional list of inputs to use. Every input must be an UTXO known to the + wallet that has not been locked before. The sum of all inputs must be + sufficiently greater than the sum of all outputs to pay a miner fee with the + fee rate specified in the parent message. + + If no inputs are specified, coin selection will be performed instead and + inputs of sufficient value will be added to the resulting PSBT. + */ + repeated lnrpc.OutPoint inputs = 1; + + /* + A map of all addresses and the amounts to send to in the funded PSBT. + */ + map outputs = 2; +} + +message UtxoLease { + /* + A 32 byte random ID that identifies the lease. + */ + bytes id = 1; + + // The identifying outpoint of the output being leased. + lnrpc.OutPoint outpoint = 2; + + /* + The absolute expiration of the output lease represented as a unix timestamp. + */ + uint64 expiration = 3; +} + +message FinalizePsbtRequest { + /* + A PSBT that should be signed and finalized. The PSBT must contain all + required inputs, outputs, UTXO data and partial signatures of all other + signers. + */ + bytes funded_psbt = 1; +} +message FinalizePsbtResponse { + // The fully signed and finalized transaction in PSBT format. + bytes signed_psbt = 1; + + // The fully signed and finalized transaction in the raw wire format. + bytes raw_final_tx = 2; +} diff --git a/lndmanage/grpc_compiled/walletkit_pb2.py b/lndmanage/grpc_compiled/walletkit_pb2.py new file mode 100644 index 0000000..31d5829 --- /dev/null +++ b/lndmanage/grpc_compiled/walletkit_pb2.py @@ -0,0 +1,1827 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: walletkit.proto + +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +import lndmanage.grpc_compiled.rpc_pb2 as rpc__pb2 +import lndmanage.grpc_compiled.signer_pb2 as signer__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='walletkit.proto', + package='walletrpc', + syntax='proto3', + serialized_options=b'Z/github.com/lightningnetwork/lnd/lnrpc/walletrpc', + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\x0fwalletkit.proto\x12\twalletrpc\x1a\trpc.proto\x1a\x0csigner.proto\":\n\x12ListUnspentRequest\x12\x11\n\tmin_confs\x18\x01 \x01(\x05\x12\x11\n\tmax_confs\x18\x02 \x01(\x05\"1\n\x13ListUnspentResponse\x12\x1a\n\x05utxos\x18\x01 \x03(\x0b\x32\x0b.lnrpc.Utxo\"C\n\x12LeaseOutputRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12!\n\x08outpoint\x18\x02 \x01(\x0b\x32\x0f.lnrpc.OutPoint\")\n\x13LeaseOutputResponse\x12\x12\n\nexpiration\x18\x01 \x01(\x04\"E\n\x14ReleaseOutputRequest\x12\n\n\x02id\x18\x01 \x01(\x0c\x12!\n\x08outpoint\x18\x02 \x01(\x0b\x32\x0f.lnrpc.OutPoint\"\x17\n\x15ReleaseOutputResponse\"6\n\x06KeyReq\x12\x18\n\x10key_finger_print\x18\x01 \x01(\x05\x12\x12\n\nkey_family\x18\x02 \x01(\x05\"\r\n\x0b\x41\x64\x64rRequest\"\x1c\n\x0c\x41\x64\x64rResponse\x12\x0c\n\x04\x61\x64\x64r\x18\x01 \x01(\t\",\n\x0bTransaction\x12\x0e\n\x06tx_hex\x18\x01 \x01(\x0c\x12\r\n\x05label\x18\x02 \x01(\t\"(\n\x0fPublishResponse\x12\x15\n\rpublish_error\x18\x01 \x01(\t\"\x86\x01\n\x12SendOutputsRequest\x12\x12\n\nsat_per_kw\x18\x01 \x01(\x03\x12\x1f\n\x07outputs\x18\x02 \x03(\x0b\x32\x0e.signrpc.TxOut\x12\r\n\x05label\x18\x03 \x01(\t\x12\x11\n\tmin_confs\x18\x04 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x05 \x01(\x08\"%\n\x13SendOutputsResponse\x12\x0e\n\x06raw_tx\x18\x01 \x01(\x0c\")\n\x12\x45stimateFeeRequest\x12\x13\n\x0b\x63onf_target\x18\x01 \x01(\x05\")\n\x13\x45stimateFeeResponse\x12\x12\n\nsat_per_kw\x18\x01 \x01(\x03\"\x92\x02\n\x0cPendingSweep\x12!\n\x08outpoint\x18\x01 \x01(\x0b\x32\x0f.lnrpc.OutPoint\x12,\n\x0cwitness_type\x18\x02 \x01(\x0e\x32\x16.walletrpc.WitnessType\x12\x12\n\namount_sat\x18\x03 \x01(\r\x12\x14\n\x0csat_per_byte\x18\x04 \x01(\r\x12\x1a\n\x12\x62roadcast_attempts\x18\x05 \x01(\r\x12\x1d\n\x15next_broadcast_height\x18\x06 \x01(\r\x12\x1d\n\x15requested_conf_target\x18\x08 \x01(\r\x12\x1e\n\x16requested_sat_per_byte\x18\t \x01(\r\x12\r\n\x05\x66orce\x18\x07 \x01(\x08\"\x16\n\x14PendingSweepsRequest\"H\n\x15PendingSweepsResponse\x12/\n\x0epending_sweeps\x18\x01 \x03(\x0b\x32\x17.walletrpc.PendingSweep\"m\n\x0e\x42umpFeeRequest\x12!\n\x08outpoint\x18\x01 \x01(\x0b\x32\x0f.lnrpc.OutPoint\x12\x13\n\x0btarget_conf\x18\x02 \x01(\r\x12\x14\n\x0csat_per_byte\x18\x03 \x01(\r\x12\r\n\x05\x66orce\x18\x04 \x01(\x08\"\x11\n\x0f\x42umpFeeResponse\"$\n\x11ListSweepsRequest\x12\x0f\n\x07verbose\x18\x01 \x01(\x08\"\xcc\x01\n\x12ListSweepsResponse\x12\x38\n\x13transaction_details\x18\x01 \x01(\x0b\x32\x19.lnrpc.TransactionDetailsH\x00\x12G\n\x0ftransaction_ids\x18\x02 \x01(\x0b\x32,.walletrpc.ListSweepsResponse.TransactionIDsH\x00\x1a)\n\x0eTransactionIDs\x12\x17\n\x0ftransaction_ids\x18\x01 \x03(\tB\x08\n\x06sweeps\"I\n\x17LabelTransactionRequest\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\r\n\x05label\x18\x02 \x01(\t\x12\x11\n\toverwrite\x18\x03 \x01(\x08\"\x1a\n\x18LabelTransactionResponse\"\x8b\x01\n\x0f\x46undPsbtRequest\x12\x0e\n\x04psbt\x18\x01 \x01(\x0cH\x00\x12$\n\x03raw\x18\x02 \x01(\x0b\x32\x15.walletrpc.TxTemplateH\x00\x12\x15\n\x0btarget_conf\x18\x03 \x01(\rH\x01\x12\x17\n\rsat_per_vbyte\x18\x04 \x01(\rH\x01\x42\n\n\x08templateB\x06\n\x04\x66\x65\x65s\"p\n\x10\x46undPsbtResponse\x12\x13\n\x0b\x66unded_psbt\x18\x01 \x01(\x0c\x12\x1b\n\x13\x63hange_output_index\x18\x02 \x01(\x05\x12*\n\x0clocked_utxos\x18\x03 \x03(\x0b\x32\x14.walletrpc.UtxoLease\"\x92\x01\n\nTxTemplate\x12\x1f\n\x06inputs\x18\x01 \x03(\x0b\x32\x0f.lnrpc.OutPoint\x12\x33\n\x07outputs\x18\x02 \x03(\x0b\x32\".walletrpc.TxTemplate.OutputsEntry\x1a.\n\x0cOutputsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\"N\n\tUtxoLease\x12\n\n\x02id\x18\x01 \x01(\x0c\x12!\n\x08outpoint\x18\x02 \x01(\x0b\x32\x0f.lnrpc.OutPoint\x12\x12\n\nexpiration\x18\x03 \x01(\x04\"*\n\x13\x46inalizePsbtRequest\x12\x13\n\x0b\x66unded_psbt\x18\x01 \x01(\x0c\"A\n\x14\x46inalizePsbtResponse\x12\x13\n\x0bsigned_psbt\x18\x01 \x01(\x0c\x12\x14\n\x0craw_final_tx\x18\x02 \x01(\x0c*\x99\x03\n\x0bWitnessType\x12\x13\n\x0fUNKNOWN_WITNESS\x10\x00\x12\x18\n\x14\x43OMMITMENT_TIME_LOCK\x10\x01\x12\x17\n\x13\x43OMMITMENT_NO_DELAY\x10\x02\x12\x15\n\x11\x43OMMITMENT_REVOKE\x10\x03\x12\x17\n\x13HTLC_OFFERED_REVOKE\x10\x04\x12\x18\n\x14HTLC_ACCEPTED_REVOKE\x10\x05\x12%\n!HTLC_OFFERED_TIMEOUT_SECOND_LEVEL\x10\x06\x12&\n\"HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL\x10\x07\x12\x1f\n\x1bHTLC_OFFERED_REMOTE_TIMEOUT\x10\x08\x12 \n\x1cHTLC_ACCEPTED_REMOTE_SUCCESS\x10\t\x12\x1c\n\x18HTLC_SECOND_LEVEL_REVOKE\x10\n\x12\x14\n\x10WITNESS_KEY_HASH\x10\x0b\x12\x1b\n\x17NESTED_WITNESS_KEY_HASH\x10\x0c\x12\x15\n\x11\x43OMMITMENT_ANCHOR\x10\r2\xe8\x08\n\tWalletKit\x12L\n\x0bListUnspent\x12\x1d.walletrpc.ListUnspentRequest\x1a\x1e.walletrpc.ListUnspentResponse\x12L\n\x0bLeaseOutput\x12\x1d.walletrpc.LeaseOutputRequest\x1a\x1e.walletrpc.LeaseOutputResponse\x12R\n\rReleaseOutput\x12\x1f.walletrpc.ReleaseOutputRequest\x1a .walletrpc.ReleaseOutputResponse\x12:\n\rDeriveNextKey\x12\x11.walletrpc.KeyReq\x1a\x16.signrpc.KeyDescriptor\x12\x38\n\tDeriveKey\x12\x13.signrpc.KeyLocator\x1a\x16.signrpc.KeyDescriptor\x12;\n\x08NextAddr\x12\x16.walletrpc.AddrRequest\x1a\x17.walletrpc.AddrResponse\x12H\n\x12PublishTransaction\x12\x16.walletrpc.Transaction\x1a\x1a.walletrpc.PublishResponse\x12L\n\x0bSendOutputs\x12\x1d.walletrpc.SendOutputsRequest\x1a\x1e.walletrpc.SendOutputsResponse\x12L\n\x0b\x45stimateFee\x12\x1d.walletrpc.EstimateFeeRequest\x1a\x1e.walletrpc.EstimateFeeResponse\x12R\n\rPendingSweeps\x12\x1f.walletrpc.PendingSweepsRequest\x1a .walletrpc.PendingSweepsResponse\x12@\n\x07\x42umpFee\x12\x19.walletrpc.BumpFeeRequest\x1a\x1a.walletrpc.BumpFeeResponse\x12I\n\nListSweeps\x12\x1c.walletrpc.ListSweepsRequest\x1a\x1d.walletrpc.ListSweepsResponse\x12[\n\x10LabelTransaction\x12\".walletrpc.LabelTransactionRequest\x1a#.walletrpc.LabelTransactionResponse\x12\x43\n\x08\x46undPsbt\x12\x1a.walletrpc.FundPsbtRequest\x1a\x1b.walletrpc.FundPsbtResponse\x12O\n\x0c\x46inalizePsbt\x12\x1e.walletrpc.FinalizePsbtRequest\x1a\x1f.walletrpc.FinalizePsbtResponseB1Z/github.com/lightningnetwork/lnd/lnrpc/walletrpcb\x06proto3' + , + dependencies=[rpc__pb2.DESCRIPTOR,signer__pb2.DESCRIPTOR,]) + +_WITNESSTYPE = _descriptor.EnumDescriptor( + name='WitnessType', + full_name='walletrpc.WitnessType', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='UNKNOWN_WITNESS', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='COMMITMENT_TIME_LOCK', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='COMMITMENT_NO_DELAY', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='COMMITMENT_REVOKE', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='HTLC_OFFERED_REVOKE', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='HTLC_ACCEPTED_REVOKE', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='HTLC_OFFERED_TIMEOUT_SECOND_LEVEL', index=6, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL', index=7, number=7, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='HTLC_OFFERED_REMOTE_TIMEOUT', index=8, number=8, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='HTLC_ACCEPTED_REMOTE_SUCCESS', index=9, number=9, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='HTLC_SECOND_LEVEL_REVOKE', index=10, number=10, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='WITNESS_KEY_HASH', index=11, number=11, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='NESTED_WITNESS_KEY_HASH', index=12, number=12, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='COMMITMENT_ANCHOR', index=13, number=13, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=2275, + serialized_end=2684, +) +_sym_db.RegisterEnumDescriptor(_WITNESSTYPE) + +WitnessType = enum_type_wrapper.EnumTypeWrapper(_WITNESSTYPE) +UNKNOWN_WITNESS = 0 +COMMITMENT_TIME_LOCK = 1 +COMMITMENT_NO_DELAY = 2 +COMMITMENT_REVOKE = 3 +HTLC_OFFERED_REVOKE = 4 +HTLC_ACCEPTED_REVOKE = 5 +HTLC_OFFERED_TIMEOUT_SECOND_LEVEL = 6 +HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL = 7 +HTLC_OFFERED_REMOTE_TIMEOUT = 8 +HTLC_ACCEPTED_REMOTE_SUCCESS = 9 +HTLC_SECOND_LEVEL_REVOKE = 10 +WITNESS_KEY_HASH = 11 +NESTED_WITNESS_KEY_HASH = 12 +COMMITMENT_ANCHOR = 13 + + + +_LISTUNSPENTREQUEST = _descriptor.Descriptor( + name='ListUnspentRequest', + full_name='walletrpc.ListUnspentRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='min_confs', full_name='walletrpc.ListUnspentRequest.min_confs', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='max_confs', full_name='walletrpc.ListUnspentRequest.max_confs', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=55, + serialized_end=113, +) + + +_LISTUNSPENTRESPONSE = _descriptor.Descriptor( + name='ListUnspentResponse', + full_name='walletrpc.ListUnspentResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='utxos', full_name='walletrpc.ListUnspentResponse.utxos', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=115, + serialized_end=164, +) + + +_LEASEOUTPUTREQUEST = _descriptor.Descriptor( + name='LeaseOutputRequest', + full_name='walletrpc.LeaseOutputRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='walletrpc.LeaseOutputRequest.id', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='outpoint', full_name='walletrpc.LeaseOutputRequest.outpoint', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=166, + serialized_end=233, +) + + +_LEASEOUTPUTRESPONSE = _descriptor.Descriptor( + name='LeaseOutputResponse', + full_name='walletrpc.LeaseOutputResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='expiration', full_name='walletrpc.LeaseOutputResponse.expiration', index=0, + number=1, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=235, + serialized_end=276, +) + + +_RELEASEOUTPUTREQUEST = _descriptor.Descriptor( + name='ReleaseOutputRequest', + full_name='walletrpc.ReleaseOutputRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='walletrpc.ReleaseOutputRequest.id', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='outpoint', full_name='walletrpc.ReleaseOutputRequest.outpoint', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=278, + serialized_end=347, +) + + +_RELEASEOUTPUTRESPONSE = _descriptor.Descriptor( + name='ReleaseOutputResponse', + full_name='walletrpc.ReleaseOutputResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=349, + serialized_end=372, +) + + +_KEYREQ = _descriptor.Descriptor( + name='KeyReq', + full_name='walletrpc.KeyReq', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='key_finger_print', full_name='walletrpc.KeyReq.key_finger_print', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='key_family', full_name='walletrpc.KeyReq.key_family', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=374, + serialized_end=428, +) + + +_ADDRREQUEST = _descriptor.Descriptor( + name='AddrRequest', + full_name='walletrpc.AddrRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=430, + serialized_end=443, +) + + +_ADDRRESPONSE = _descriptor.Descriptor( + name='AddrResponse', + full_name='walletrpc.AddrResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='addr', full_name='walletrpc.AddrResponse.addr', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=445, + serialized_end=473, +) + + +_TRANSACTION = _descriptor.Descriptor( + name='Transaction', + full_name='walletrpc.Transaction', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='tx_hex', full_name='walletrpc.Transaction.tx_hex', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='label', full_name='walletrpc.Transaction.label', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=475, + serialized_end=519, +) + + +_PUBLISHRESPONSE = _descriptor.Descriptor( + name='PublishResponse', + full_name='walletrpc.PublishResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='publish_error', full_name='walletrpc.PublishResponse.publish_error', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=521, + serialized_end=561, +) + + +_SENDOUTPUTSREQUEST = _descriptor.Descriptor( + name='SendOutputsRequest', + full_name='walletrpc.SendOutputsRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='sat_per_kw', full_name='walletrpc.SendOutputsRequest.sat_per_kw', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='outputs', full_name='walletrpc.SendOutputsRequest.outputs', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='label', full_name='walletrpc.SendOutputsRequest.label', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='min_confs', full_name='walletrpc.SendOutputsRequest.min_confs', index=3, + number=4, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='spend_unconfirmed', full_name='walletrpc.SendOutputsRequest.spend_unconfirmed', index=4, + number=5, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=564, + serialized_end=698, +) + + +_SENDOUTPUTSRESPONSE = _descriptor.Descriptor( + name='SendOutputsResponse', + full_name='walletrpc.SendOutputsResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='raw_tx', full_name='walletrpc.SendOutputsResponse.raw_tx', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=700, + serialized_end=737, +) + + +_ESTIMATEFEEREQUEST = _descriptor.Descriptor( + name='EstimateFeeRequest', + full_name='walletrpc.EstimateFeeRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='conf_target', full_name='walletrpc.EstimateFeeRequest.conf_target', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=739, + serialized_end=780, +) + + +_ESTIMATEFEERESPONSE = _descriptor.Descriptor( + name='EstimateFeeResponse', + full_name='walletrpc.EstimateFeeResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='sat_per_kw', full_name='walletrpc.EstimateFeeResponse.sat_per_kw', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=782, + serialized_end=823, +) + + +_PENDINGSWEEP = _descriptor.Descriptor( + name='PendingSweep', + full_name='walletrpc.PendingSweep', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='outpoint', full_name='walletrpc.PendingSweep.outpoint', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='witness_type', full_name='walletrpc.PendingSweep.witness_type', index=1, + number=2, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='amount_sat', full_name='walletrpc.PendingSweep.amount_sat', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='sat_per_byte', full_name='walletrpc.PendingSweep.sat_per_byte', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='broadcast_attempts', full_name='walletrpc.PendingSweep.broadcast_attempts', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='next_broadcast_height', full_name='walletrpc.PendingSweep.next_broadcast_height', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='requested_conf_target', full_name='walletrpc.PendingSweep.requested_conf_target', index=6, + number=8, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='requested_sat_per_byte', full_name='walletrpc.PendingSweep.requested_sat_per_byte', index=7, + number=9, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='force', full_name='walletrpc.PendingSweep.force', index=8, + number=7, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=826, + serialized_end=1100, +) + + +_PENDINGSWEEPSREQUEST = _descriptor.Descriptor( + name='PendingSweepsRequest', + full_name='walletrpc.PendingSweepsRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1102, + serialized_end=1124, +) + + +_PENDINGSWEEPSRESPONSE = _descriptor.Descriptor( + name='PendingSweepsResponse', + full_name='walletrpc.PendingSweepsResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='pending_sweeps', full_name='walletrpc.PendingSweepsResponse.pending_sweeps', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1126, + serialized_end=1198, +) + + +_BUMPFEEREQUEST = _descriptor.Descriptor( + name='BumpFeeRequest', + full_name='walletrpc.BumpFeeRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='outpoint', full_name='walletrpc.BumpFeeRequest.outpoint', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='target_conf', full_name='walletrpc.BumpFeeRequest.target_conf', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='sat_per_byte', full_name='walletrpc.BumpFeeRequest.sat_per_byte', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='force', full_name='walletrpc.BumpFeeRequest.force', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1200, + serialized_end=1309, +) + + +_BUMPFEERESPONSE = _descriptor.Descriptor( + name='BumpFeeResponse', + full_name='walletrpc.BumpFeeResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1311, + serialized_end=1328, +) + + +_LISTSWEEPSREQUEST = _descriptor.Descriptor( + name='ListSweepsRequest', + full_name='walletrpc.ListSweepsRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='verbose', full_name='walletrpc.ListSweepsRequest.verbose', index=0, + number=1, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1330, + serialized_end=1366, +) + + +_LISTSWEEPSRESPONSE_TRANSACTIONIDS = _descriptor.Descriptor( + name='TransactionIDs', + full_name='walletrpc.ListSweepsResponse.TransactionIDs', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='transaction_ids', full_name='walletrpc.ListSweepsResponse.TransactionIDs.transaction_ids', index=0, + number=1, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1522, + serialized_end=1563, +) + +_LISTSWEEPSRESPONSE = _descriptor.Descriptor( + name='ListSweepsResponse', + full_name='walletrpc.ListSweepsResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='transaction_details', full_name='walletrpc.ListSweepsResponse.transaction_details', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='transaction_ids', full_name='walletrpc.ListSweepsResponse.transaction_ids', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_LISTSWEEPSRESPONSE_TRANSACTIONIDS, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='sweeps', full_name='walletrpc.ListSweepsResponse.sweeps', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=1369, + serialized_end=1573, +) + + +_LABELTRANSACTIONREQUEST = _descriptor.Descriptor( + name='LabelTransactionRequest', + full_name='walletrpc.LabelTransactionRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='txid', full_name='walletrpc.LabelTransactionRequest.txid', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='label', full_name='walletrpc.LabelTransactionRequest.label', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='overwrite', full_name='walletrpc.LabelTransactionRequest.overwrite', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1575, + serialized_end=1648, +) + + +_LABELTRANSACTIONRESPONSE = _descriptor.Descriptor( + name='LabelTransactionResponse', + full_name='walletrpc.LabelTransactionResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1650, + serialized_end=1676, +) + + +_FUNDPSBTREQUEST = _descriptor.Descriptor( + name='FundPsbtRequest', + full_name='walletrpc.FundPsbtRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='psbt', full_name='walletrpc.FundPsbtRequest.psbt', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='raw', full_name='walletrpc.FundPsbtRequest.raw', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='target_conf', full_name='walletrpc.FundPsbtRequest.target_conf', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='sat_per_vbyte', full_name='walletrpc.FundPsbtRequest.sat_per_vbyte', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='template', full_name='walletrpc.FundPsbtRequest.template', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + _descriptor.OneofDescriptor( + name='fees', full_name='walletrpc.FundPsbtRequest.fees', + index=1, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=1679, + serialized_end=1818, +) + + +_FUNDPSBTRESPONSE = _descriptor.Descriptor( + name='FundPsbtResponse', + full_name='walletrpc.FundPsbtResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='funded_psbt', full_name='walletrpc.FundPsbtResponse.funded_psbt', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='change_output_index', full_name='walletrpc.FundPsbtResponse.change_output_index', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='locked_utxos', full_name='walletrpc.FundPsbtResponse.locked_utxos', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1820, + serialized_end=1932, +) + + +_TXTEMPLATE_OUTPUTSENTRY = _descriptor.Descriptor( + name='OutputsEntry', + full_name='walletrpc.TxTemplate.OutputsEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='walletrpc.TxTemplate.OutputsEntry.key', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value', full_name='walletrpc.TxTemplate.OutputsEntry.value', index=1, + number=2, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=b'8\001', + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2035, + serialized_end=2081, +) + +_TXTEMPLATE = _descriptor.Descriptor( + name='TxTemplate', + full_name='walletrpc.TxTemplate', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='inputs', full_name='walletrpc.TxTemplate.inputs', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='outputs', full_name='walletrpc.TxTemplate.outputs', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_TXTEMPLATE_OUTPUTSENTRY, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1935, + serialized_end=2081, +) + + +_UTXOLEASE = _descriptor.Descriptor( + name='UtxoLease', + full_name='walletrpc.UtxoLease', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='walletrpc.UtxoLease.id', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='outpoint', full_name='walletrpc.UtxoLease.outpoint', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='expiration', full_name='walletrpc.UtxoLease.expiration', index=2, + number=3, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2083, + serialized_end=2161, +) + + +_FINALIZEPSBTREQUEST = _descriptor.Descriptor( + name='FinalizePsbtRequest', + full_name='walletrpc.FinalizePsbtRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='funded_psbt', full_name='walletrpc.FinalizePsbtRequest.funded_psbt', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2163, + serialized_end=2205, +) + + +_FINALIZEPSBTRESPONSE = _descriptor.Descriptor( + name='FinalizePsbtResponse', + full_name='walletrpc.FinalizePsbtResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='signed_psbt', full_name='walletrpc.FinalizePsbtResponse.signed_psbt', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='raw_final_tx', full_name='walletrpc.FinalizePsbtResponse.raw_final_tx', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2207, + serialized_end=2272, +) + +_LISTUNSPENTRESPONSE.fields_by_name['utxos'].message_type = rpc__pb2._UTXO +_LEASEOUTPUTREQUEST.fields_by_name['outpoint'].message_type = rpc__pb2._OUTPOINT +_RELEASEOUTPUTREQUEST.fields_by_name['outpoint'].message_type = rpc__pb2._OUTPOINT +_SENDOUTPUTSREQUEST.fields_by_name['outputs'].message_type = signer__pb2._TXOUT +_PENDINGSWEEP.fields_by_name['outpoint'].message_type = rpc__pb2._OUTPOINT +_PENDINGSWEEP.fields_by_name['witness_type'].enum_type = _WITNESSTYPE +_PENDINGSWEEPSRESPONSE.fields_by_name['pending_sweeps'].message_type = _PENDINGSWEEP +_BUMPFEEREQUEST.fields_by_name['outpoint'].message_type = rpc__pb2._OUTPOINT +_LISTSWEEPSRESPONSE_TRANSACTIONIDS.containing_type = _LISTSWEEPSRESPONSE +_LISTSWEEPSRESPONSE.fields_by_name['transaction_details'].message_type = rpc__pb2._TRANSACTIONDETAILS +_LISTSWEEPSRESPONSE.fields_by_name['transaction_ids'].message_type = _LISTSWEEPSRESPONSE_TRANSACTIONIDS +_LISTSWEEPSRESPONSE.oneofs_by_name['sweeps'].fields.append( + _LISTSWEEPSRESPONSE.fields_by_name['transaction_details']) +_LISTSWEEPSRESPONSE.fields_by_name['transaction_details'].containing_oneof = _LISTSWEEPSRESPONSE.oneofs_by_name['sweeps'] +_LISTSWEEPSRESPONSE.oneofs_by_name['sweeps'].fields.append( + _LISTSWEEPSRESPONSE.fields_by_name['transaction_ids']) +_LISTSWEEPSRESPONSE.fields_by_name['transaction_ids'].containing_oneof = _LISTSWEEPSRESPONSE.oneofs_by_name['sweeps'] +_FUNDPSBTREQUEST.fields_by_name['raw'].message_type = _TXTEMPLATE +_FUNDPSBTREQUEST.oneofs_by_name['template'].fields.append( + _FUNDPSBTREQUEST.fields_by_name['psbt']) +_FUNDPSBTREQUEST.fields_by_name['psbt'].containing_oneof = _FUNDPSBTREQUEST.oneofs_by_name['template'] +_FUNDPSBTREQUEST.oneofs_by_name['template'].fields.append( + _FUNDPSBTREQUEST.fields_by_name['raw']) +_FUNDPSBTREQUEST.fields_by_name['raw'].containing_oneof = _FUNDPSBTREQUEST.oneofs_by_name['template'] +_FUNDPSBTREQUEST.oneofs_by_name['fees'].fields.append( + _FUNDPSBTREQUEST.fields_by_name['target_conf']) +_FUNDPSBTREQUEST.fields_by_name['target_conf'].containing_oneof = _FUNDPSBTREQUEST.oneofs_by_name['fees'] +_FUNDPSBTREQUEST.oneofs_by_name['fees'].fields.append( + _FUNDPSBTREQUEST.fields_by_name['sat_per_vbyte']) +_FUNDPSBTREQUEST.fields_by_name['sat_per_vbyte'].containing_oneof = _FUNDPSBTREQUEST.oneofs_by_name['fees'] +_FUNDPSBTRESPONSE.fields_by_name['locked_utxos'].message_type = _UTXOLEASE +_TXTEMPLATE_OUTPUTSENTRY.containing_type = _TXTEMPLATE +_TXTEMPLATE.fields_by_name['inputs'].message_type = rpc__pb2._OUTPOINT +_TXTEMPLATE.fields_by_name['outputs'].message_type = _TXTEMPLATE_OUTPUTSENTRY +_UTXOLEASE.fields_by_name['outpoint'].message_type = rpc__pb2._OUTPOINT +DESCRIPTOR.message_types_by_name['ListUnspentRequest'] = _LISTUNSPENTREQUEST +DESCRIPTOR.message_types_by_name['ListUnspentResponse'] = _LISTUNSPENTRESPONSE +DESCRIPTOR.message_types_by_name['LeaseOutputRequest'] = _LEASEOUTPUTREQUEST +DESCRIPTOR.message_types_by_name['LeaseOutputResponse'] = _LEASEOUTPUTRESPONSE +DESCRIPTOR.message_types_by_name['ReleaseOutputRequest'] = _RELEASEOUTPUTREQUEST +DESCRIPTOR.message_types_by_name['ReleaseOutputResponse'] = _RELEASEOUTPUTRESPONSE +DESCRIPTOR.message_types_by_name['KeyReq'] = _KEYREQ +DESCRIPTOR.message_types_by_name['AddrRequest'] = _ADDRREQUEST +DESCRIPTOR.message_types_by_name['AddrResponse'] = _ADDRRESPONSE +DESCRIPTOR.message_types_by_name['Transaction'] = _TRANSACTION +DESCRIPTOR.message_types_by_name['PublishResponse'] = _PUBLISHRESPONSE +DESCRIPTOR.message_types_by_name['SendOutputsRequest'] = _SENDOUTPUTSREQUEST +DESCRIPTOR.message_types_by_name['SendOutputsResponse'] = _SENDOUTPUTSRESPONSE +DESCRIPTOR.message_types_by_name['EstimateFeeRequest'] = _ESTIMATEFEEREQUEST +DESCRIPTOR.message_types_by_name['EstimateFeeResponse'] = _ESTIMATEFEERESPONSE +DESCRIPTOR.message_types_by_name['PendingSweep'] = _PENDINGSWEEP +DESCRIPTOR.message_types_by_name['PendingSweepsRequest'] = _PENDINGSWEEPSREQUEST +DESCRIPTOR.message_types_by_name['PendingSweepsResponse'] = _PENDINGSWEEPSRESPONSE +DESCRIPTOR.message_types_by_name['BumpFeeRequest'] = _BUMPFEEREQUEST +DESCRIPTOR.message_types_by_name['BumpFeeResponse'] = _BUMPFEERESPONSE +DESCRIPTOR.message_types_by_name['ListSweepsRequest'] = _LISTSWEEPSREQUEST +DESCRIPTOR.message_types_by_name['ListSweepsResponse'] = _LISTSWEEPSRESPONSE +DESCRIPTOR.message_types_by_name['LabelTransactionRequest'] = _LABELTRANSACTIONREQUEST +DESCRIPTOR.message_types_by_name['LabelTransactionResponse'] = _LABELTRANSACTIONRESPONSE +DESCRIPTOR.message_types_by_name['FundPsbtRequest'] = _FUNDPSBTREQUEST +DESCRIPTOR.message_types_by_name['FundPsbtResponse'] = _FUNDPSBTRESPONSE +DESCRIPTOR.message_types_by_name['TxTemplate'] = _TXTEMPLATE +DESCRIPTOR.message_types_by_name['UtxoLease'] = _UTXOLEASE +DESCRIPTOR.message_types_by_name['FinalizePsbtRequest'] = _FINALIZEPSBTREQUEST +DESCRIPTOR.message_types_by_name['FinalizePsbtResponse'] = _FINALIZEPSBTRESPONSE +DESCRIPTOR.enum_types_by_name['WitnessType'] = _WITNESSTYPE +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +ListUnspentRequest = _reflection.GeneratedProtocolMessageType('ListUnspentRequest', (_message.Message,), { + 'DESCRIPTOR' : _LISTUNSPENTREQUEST, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.ListUnspentRequest) + }) +_sym_db.RegisterMessage(ListUnspentRequest) + +ListUnspentResponse = _reflection.GeneratedProtocolMessageType('ListUnspentResponse', (_message.Message,), { + 'DESCRIPTOR' : _LISTUNSPENTRESPONSE, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.ListUnspentResponse) + }) +_sym_db.RegisterMessage(ListUnspentResponse) + +LeaseOutputRequest = _reflection.GeneratedProtocolMessageType('LeaseOutputRequest', (_message.Message,), { + 'DESCRIPTOR' : _LEASEOUTPUTREQUEST, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.LeaseOutputRequest) + }) +_sym_db.RegisterMessage(LeaseOutputRequest) + +LeaseOutputResponse = _reflection.GeneratedProtocolMessageType('LeaseOutputResponse', (_message.Message,), { + 'DESCRIPTOR' : _LEASEOUTPUTRESPONSE, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.LeaseOutputResponse) + }) +_sym_db.RegisterMessage(LeaseOutputResponse) + +ReleaseOutputRequest = _reflection.GeneratedProtocolMessageType('ReleaseOutputRequest', (_message.Message,), { + 'DESCRIPTOR' : _RELEASEOUTPUTREQUEST, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.ReleaseOutputRequest) + }) +_sym_db.RegisterMessage(ReleaseOutputRequest) + +ReleaseOutputResponse = _reflection.GeneratedProtocolMessageType('ReleaseOutputResponse', (_message.Message,), { + 'DESCRIPTOR' : _RELEASEOUTPUTRESPONSE, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.ReleaseOutputResponse) + }) +_sym_db.RegisterMessage(ReleaseOutputResponse) + +KeyReq = _reflection.GeneratedProtocolMessageType('KeyReq', (_message.Message,), { + 'DESCRIPTOR' : _KEYREQ, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.KeyReq) + }) +_sym_db.RegisterMessage(KeyReq) + +AddrRequest = _reflection.GeneratedProtocolMessageType('AddrRequest', (_message.Message,), { + 'DESCRIPTOR' : _ADDRREQUEST, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.AddrRequest) + }) +_sym_db.RegisterMessage(AddrRequest) + +AddrResponse = _reflection.GeneratedProtocolMessageType('AddrResponse', (_message.Message,), { + 'DESCRIPTOR' : _ADDRRESPONSE, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.AddrResponse) + }) +_sym_db.RegisterMessage(AddrResponse) + +Transaction = _reflection.GeneratedProtocolMessageType('Transaction', (_message.Message,), { + 'DESCRIPTOR' : _TRANSACTION, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.Transaction) + }) +_sym_db.RegisterMessage(Transaction) + +PublishResponse = _reflection.GeneratedProtocolMessageType('PublishResponse', (_message.Message,), { + 'DESCRIPTOR' : _PUBLISHRESPONSE, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.PublishResponse) + }) +_sym_db.RegisterMessage(PublishResponse) + +SendOutputsRequest = _reflection.GeneratedProtocolMessageType('SendOutputsRequest', (_message.Message,), { + 'DESCRIPTOR' : _SENDOUTPUTSREQUEST, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.SendOutputsRequest) + }) +_sym_db.RegisterMessage(SendOutputsRequest) + +SendOutputsResponse = _reflection.GeneratedProtocolMessageType('SendOutputsResponse', (_message.Message,), { + 'DESCRIPTOR' : _SENDOUTPUTSRESPONSE, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.SendOutputsResponse) + }) +_sym_db.RegisterMessage(SendOutputsResponse) + +EstimateFeeRequest = _reflection.GeneratedProtocolMessageType('EstimateFeeRequest', (_message.Message,), { + 'DESCRIPTOR' : _ESTIMATEFEEREQUEST, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.EstimateFeeRequest) + }) +_sym_db.RegisterMessage(EstimateFeeRequest) + +EstimateFeeResponse = _reflection.GeneratedProtocolMessageType('EstimateFeeResponse', (_message.Message,), { + 'DESCRIPTOR' : _ESTIMATEFEERESPONSE, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.EstimateFeeResponse) + }) +_sym_db.RegisterMessage(EstimateFeeResponse) + +PendingSweep = _reflection.GeneratedProtocolMessageType('PendingSweep', (_message.Message,), { + 'DESCRIPTOR' : _PENDINGSWEEP, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.PendingSweep) + }) +_sym_db.RegisterMessage(PendingSweep) + +PendingSweepsRequest = _reflection.GeneratedProtocolMessageType('PendingSweepsRequest', (_message.Message,), { + 'DESCRIPTOR' : _PENDINGSWEEPSREQUEST, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.PendingSweepsRequest) + }) +_sym_db.RegisterMessage(PendingSweepsRequest) + +PendingSweepsResponse = _reflection.GeneratedProtocolMessageType('PendingSweepsResponse', (_message.Message,), { + 'DESCRIPTOR' : _PENDINGSWEEPSRESPONSE, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.PendingSweepsResponse) + }) +_sym_db.RegisterMessage(PendingSweepsResponse) + +BumpFeeRequest = _reflection.GeneratedProtocolMessageType('BumpFeeRequest', (_message.Message,), { + 'DESCRIPTOR' : _BUMPFEEREQUEST, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.BumpFeeRequest) + }) +_sym_db.RegisterMessage(BumpFeeRequest) + +BumpFeeResponse = _reflection.GeneratedProtocolMessageType('BumpFeeResponse', (_message.Message,), { + 'DESCRIPTOR' : _BUMPFEERESPONSE, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.BumpFeeResponse) + }) +_sym_db.RegisterMessage(BumpFeeResponse) + +ListSweepsRequest = _reflection.GeneratedProtocolMessageType('ListSweepsRequest', (_message.Message,), { + 'DESCRIPTOR' : _LISTSWEEPSREQUEST, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.ListSweepsRequest) + }) +_sym_db.RegisterMessage(ListSweepsRequest) + +ListSweepsResponse = _reflection.GeneratedProtocolMessageType('ListSweepsResponse', (_message.Message,), { + + 'TransactionIDs' : _reflection.GeneratedProtocolMessageType('TransactionIDs', (_message.Message,), { + 'DESCRIPTOR' : _LISTSWEEPSRESPONSE_TRANSACTIONIDS, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.ListSweepsResponse.TransactionIDs) + }) + , + 'DESCRIPTOR' : _LISTSWEEPSRESPONSE, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.ListSweepsResponse) + }) +_sym_db.RegisterMessage(ListSweepsResponse) +_sym_db.RegisterMessage(ListSweepsResponse.TransactionIDs) + +LabelTransactionRequest = _reflection.GeneratedProtocolMessageType('LabelTransactionRequest', (_message.Message,), { + 'DESCRIPTOR' : _LABELTRANSACTIONREQUEST, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.LabelTransactionRequest) + }) +_sym_db.RegisterMessage(LabelTransactionRequest) + +LabelTransactionResponse = _reflection.GeneratedProtocolMessageType('LabelTransactionResponse', (_message.Message,), { + 'DESCRIPTOR' : _LABELTRANSACTIONRESPONSE, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.LabelTransactionResponse) + }) +_sym_db.RegisterMessage(LabelTransactionResponse) + +FundPsbtRequest = _reflection.GeneratedProtocolMessageType('FundPsbtRequest', (_message.Message,), { + 'DESCRIPTOR' : _FUNDPSBTREQUEST, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.FundPsbtRequest) + }) +_sym_db.RegisterMessage(FundPsbtRequest) + +FundPsbtResponse = _reflection.GeneratedProtocolMessageType('FundPsbtResponse', (_message.Message,), { + 'DESCRIPTOR' : _FUNDPSBTRESPONSE, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.FundPsbtResponse) + }) +_sym_db.RegisterMessage(FundPsbtResponse) + +TxTemplate = _reflection.GeneratedProtocolMessageType('TxTemplate', (_message.Message,), { + + 'OutputsEntry' : _reflection.GeneratedProtocolMessageType('OutputsEntry', (_message.Message,), { + 'DESCRIPTOR' : _TXTEMPLATE_OUTPUTSENTRY, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.TxTemplate.OutputsEntry) + }) + , + 'DESCRIPTOR' : _TXTEMPLATE, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.TxTemplate) + }) +_sym_db.RegisterMessage(TxTemplate) +_sym_db.RegisterMessage(TxTemplate.OutputsEntry) + +UtxoLease = _reflection.GeneratedProtocolMessageType('UtxoLease', (_message.Message,), { + 'DESCRIPTOR' : _UTXOLEASE, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.UtxoLease) + }) +_sym_db.RegisterMessage(UtxoLease) + +FinalizePsbtRequest = _reflection.GeneratedProtocolMessageType('FinalizePsbtRequest', (_message.Message,), { + 'DESCRIPTOR' : _FINALIZEPSBTREQUEST, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.FinalizePsbtRequest) + }) +_sym_db.RegisterMessage(FinalizePsbtRequest) + +FinalizePsbtResponse = _reflection.GeneratedProtocolMessageType('FinalizePsbtResponse', (_message.Message,), { + 'DESCRIPTOR' : _FINALIZEPSBTRESPONSE, + '__module__' : 'walletkit_pb2' + # @@protoc_insertion_point(class_scope:walletrpc.FinalizePsbtResponse) + }) +_sym_db.RegisterMessage(FinalizePsbtResponse) + + +DESCRIPTOR._options = None +_TXTEMPLATE_OUTPUTSENTRY._options = None + +_WALLETKIT = _descriptor.ServiceDescriptor( + name='WalletKit', + full_name='walletrpc.WalletKit', + file=DESCRIPTOR, + index=0, + serialized_options=None, + create_key=_descriptor._internal_create_key, + serialized_start=2687, + serialized_end=3815, + methods=[ + _descriptor.MethodDescriptor( + name='ListUnspent', + full_name='walletrpc.WalletKit.ListUnspent', + index=0, + containing_service=None, + input_type=_LISTUNSPENTREQUEST, + output_type=_LISTUNSPENTRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='LeaseOutput', + full_name='walletrpc.WalletKit.LeaseOutput', + index=1, + containing_service=None, + input_type=_LEASEOUTPUTREQUEST, + output_type=_LEASEOUTPUTRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='ReleaseOutput', + full_name='walletrpc.WalletKit.ReleaseOutput', + index=2, + containing_service=None, + input_type=_RELEASEOUTPUTREQUEST, + output_type=_RELEASEOUTPUTRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='DeriveNextKey', + full_name='walletrpc.WalletKit.DeriveNextKey', + index=3, + containing_service=None, + input_type=_KEYREQ, + output_type=signer__pb2._KEYDESCRIPTOR, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='DeriveKey', + full_name='walletrpc.WalletKit.DeriveKey', + index=4, + containing_service=None, + input_type=signer__pb2._KEYLOCATOR, + output_type=signer__pb2._KEYDESCRIPTOR, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='NextAddr', + full_name='walletrpc.WalletKit.NextAddr', + index=5, + containing_service=None, + input_type=_ADDRREQUEST, + output_type=_ADDRRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='PublishTransaction', + full_name='walletrpc.WalletKit.PublishTransaction', + index=6, + containing_service=None, + input_type=_TRANSACTION, + output_type=_PUBLISHRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='SendOutputs', + full_name='walletrpc.WalletKit.SendOutputs', + index=7, + containing_service=None, + input_type=_SENDOUTPUTSREQUEST, + output_type=_SENDOUTPUTSRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='EstimateFee', + full_name='walletrpc.WalletKit.EstimateFee', + index=8, + containing_service=None, + input_type=_ESTIMATEFEEREQUEST, + output_type=_ESTIMATEFEERESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='PendingSweeps', + full_name='walletrpc.WalletKit.PendingSweeps', + index=9, + containing_service=None, + input_type=_PENDINGSWEEPSREQUEST, + output_type=_PENDINGSWEEPSRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='BumpFee', + full_name='walletrpc.WalletKit.BumpFee', + index=10, + containing_service=None, + input_type=_BUMPFEEREQUEST, + output_type=_BUMPFEERESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='ListSweeps', + full_name='walletrpc.WalletKit.ListSweeps', + index=11, + containing_service=None, + input_type=_LISTSWEEPSREQUEST, + output_type=_LISTSWEEPSRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='LabelTransaction', + full_name='walletrpc.WalletKit.LabelTransaction', + index=12, + containing_service=None, + input_type=_LABELTRANSACTIONREQUEST, + output_type=_LABELTRANSACTIONRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='FundPsbt', + full_name='walletrpc.WalletKit.FundPsbt', + index=13, + containing_service=None, + input_type=_FUNDPSBTREQUEST, + output_type=_FUNDPSBTRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='FinalizePsbt', + full_name='walletrpc.WalletKit.FinalizePsbt', + index=14, + containing_service=None, + input_type=_FINALIZEPSBTREQUEST, + output_type=_FINALIZEPSBTRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), +]) +_sym_db.RegisterServiceDescriptor(_WALLETKIT) + +DESCRIPTOR.services_by_name['WalletKit'] = _WALLETKIT + +# @@protoc_insertion_point(module_scope) diff --git a/lndmanage/grpc_compiled/walletkit_pb2_grpc.py b/lndmanage/grpc_compiled/walletkit_pb2_grpc.py new file mode 100644 index 0000000..1853b0e --- /dev/null +++ b/lndmanage/grpc_compiled/walletkit_pb2_grpc.py @@ -0,0 +1,645 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +import lndmanage.grpc_compiled.signer_pb2 as signer__pb2 +import lndmanage.grpc_compiled.walletkit_pb2 as walletkit__pb2 + + +class WalletKitStub(object): + """WalletKit is a service that gives access to the core functionalities of the + daemon's wallet. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.ListUnspent = channel.unary_unary( + '/walletrpc.WalletKit/ListUnspent', + request_serializer=walletkit__pb2.ListUnspentRequest.SerializeToString, + response_deserializer=walletkit__pb2.ListUnspentResponse.FromString, + ) + self.LeaseOutput = channel.unary_unary( + '/walletrpc.WalletKit/LeaseOutput', + request_serializer=walletkit__pb2.LeaseOutputRequest.SerializeToString, + response_deserializer=walletkit__pb2.LeaseOutputResponse.FromString, + ) + self.ReleaseOutput = channel.unary_unary( + '/walletrpc.WalletKit/ReleaseOutput', + request_serializer=walletkit__pb2.ReleaseOutputRequest.SerializeToString, + response_deserializer=walletkit__pb2.ReleaseOutputResponse.FromString, + ) + self.DeriveNextKey = channel.unary_unary( + '/walletrpc.WalletKit/DeriveNextKey', + request_serializer=walletkit__pb2.KeyReq.SerializeToString, + response_deserializer=signer__pb2.KeyDescriptor.FromString, + ) + self.DeriveKey = channel.unary_unary( + '/walletrpc.WalletKit/DeriveKey', + request_serializer=signer__pb2.KeyLocator.SerializeToString, + response_deserializer=signer__pb2.KeyDescriptor.FromString, + ) + self.NextAddr = channel.unary_unary( + '/walletrpc.WalletKit/NextAddr', + request_serializer=walletkit__pb2.AddrRequest.SerializeToString, + response_deserializer=walletkit__pb2.AddrResponse.FromString, + ) + self.PublishTransaction = channel.unary_unary( + '/walletrpc.WalletKit/PublishTransaction', + request_serializer=walletkit__pb2.Transaction.SerializeToString, + response_deserializer=walletkit__pb2.PublishResponse.FromString, + ) + self.SendOutputs = channel.unary_unary( + '/walletrpc.WalletKit/SendOutputs', + request_serializer=walletkit__pb2.SendOutputsRequest.SerializeToString, + response_deserializer=walletkit__pb2.SendOutputsResponse.FromString, + ) + self.EstimateFee = channel.unary_unary( + '/walletrpc.WalletKit/EstimateFee', + request_serializer=walletkit__pb2.EstimateFeeRequest.SerializeToString, + response_deserializer=walletkit__pb2.EstimateFeeResponse.FromString, + ) + self.PendingSweeps = channel.unary_unary( + '/walletrpc.WalletKit/PendingSweeps', + request_serializer=walletkit__pb2.PendingSweepsRequest.SerializeToString, + response_deserializer=walletkit__pb2.PendingSweepsResponse.FromString, + ) + self.BumpFee = channel.unary_unary( + '/walletrpc.WalletKit/BumpFee', + request_serializer=walletkit__pb2.BumpFeeRequest.SerializeToString, + response_deserializer=walletkit__pb2.BumpFeeResponse.FromString, + ) + self.ListSweeps = channel.unary_unary( + '/walletrpc.WalletKit/ListSweeps', + request_serializer=walletkit__pb2.ListSweepsRequest.SerializeToString, + response_deserializer=walletkit__pb2.ListSweepsResponse.FromString, + ) + self.LabelTransaction = channel.unary_unary( + '/walletrpc.WalletKit/LabelTransaction', + request_serializer=walletkit__pb2.LabelTransactionRequest.SerializeToString, + response_deserializer=walletkit__pb2.LabelTransactionResponse.FromString, + ) + self.FundPsbt = channel.unary_unary( + '/walletrpc.WalletKit/FundPsbt', + request_serializer=walletkit__pb2.FundPsbtRequest.SerializeToString, + response_deserializer=walletkit__pb2.FundPsbtResponse.FromString, + ) + self.FinalizePsbt = channel.unary_unary( + '/walletrpc.WalletKit/FinalizePsbt', + request_serializer=walletkit__pb2.FinalizePsbtRequest.SerializeToString, + response_deserializer=walletkit__pb2.FinalizePsbtResponse.FromString, + ) + + +class WalletKitServicer(object): + """WalletKit is a service that gives access to the core functionalities of the + daemon's wallet. + """ + + def ListUnspent(self, request, context): + """ + ListUnspent returns a list of all utxos spendable by the wallet with a + number of confirmations between the specified minimum and maximum. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def LeaseOutput(self, request, context): + """ + LeaseOutput locks an output to the given ID, preventing it from being + available for any future coin selection attempts. The absolute time of the + lock's expiration is returned. The expiration of the lock can be extended by + successive invocations of this RPC. Outputs can be unlocked before their + expiration through `ReleaseOutput`. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ReleaseOutput(self, request, context): + """ + ReleaseOutput unlocks an output, allowing it to be available for coin + selection if it remains unspent. The ID should match the one used to + originally lock the output. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeriveNextKey(self, request, context): + """ + DeriveNextKey attempts to derive the *next* key within the key family + (account in BIP43) specified. This method should return the next external + child within this branch. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeriveKey(self, request, context): + """ + DeriveKey attempts to derive an arbitrary key specified by the passed + KeyLocator. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def NextAddr(self, request, context): + """ + NextAddr returns the next unused address within the wallet. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def PublishTransaction(self, request, context): + """ + PublishTransaction attempts to publish the passed transaction to the + network. Once this returns without an error, the wallet will continually + attempt to re-broadcast the transaction on start up, until it enters the + chain. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SendOutputs(self, request, context): + """ + SendOutputs is similar to the existing sendmany call in Bitcoind, and + allows the caller to create a transaction that sends to several outputs at + once. This is ideal when wanting to batch create a set of transactions. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def EstimateFee(self, request, context): + """ + EstimateFee attempts to query the internal fee estimator of the wallet to + determine the fee (in sat/kw) to attach to a transaction in order to + achieve the confirmation target. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def PendingSweeps(self, request, context): + """ + PendingSweeps returns lists of on-chain outputs that lnd is currently + attempting to sweep within its central batching engine. Outputs with similar + fee rates are batched together in order to sweep them within a single + transaction. + + NOTE: Some of the fields within PendingSweepsRequest are not guaranteed to + remain supported. This is an advanced API that depends on the internals of + the UtxoSweeper, so things may change. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def BumpFee(self, request, context): + """ + BumpFee bumps the fee of an arbitrary input within a transaction. This RPC + takes a different approach than bitcoind's bumpfee command. lnd has a + central batching engine in which inputs with similar fee rates are batched + together to save on transaction fees. Due to this, we cannot rely on + bumping the fee on a specific transaction, since transactions can change at + any point with the addition of new inputs. The list of inputs that + currently exist within lnd's central batching engine can be retrieved + through the PendingSweeps RPC. + + When bumping the fee of an input that currently exists within lnd's central + batching engine, a higher fee transaction will be created that replaces the + lower fee transaction through the Replace-By-Fee (RBF) policy. If it + + This RPC also serves useful when wanting to perform a Child-Pays-For-Parent + (CPFP), where the child transaction pays for its parent's fee. This can be + done by specifying an outpoint within the low fee transaction that is under + the control of the wallet. + + The fee preference can be expressed either as a specific fee rate or a delta + of blocks in which the output should be swept on-chain within. If a fee + preference is not explicitly specified, then an error is returned. + + Note that this RPC currently doesn't perform any validation checks on the + fee preference being provided. For now, the responsibility of ensuring that + the new fee preference is sufficient is delegated to the user. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListSweeps(self, request, context): + """ + ListSweeps returns a list of the sweep transactions our node has produced. + Note that these sweeps may not be confirmed yet, as we record sweeps on + broadcast, not confirmation. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def LabelTransaction(self, request, context): + """ + LabelTransaction adds a label to a transaction. If the transaction already + has a label the call will fail unless the overwrite bool is set. This will + overwrite the exiting transaction label. Labels must not be empty, and + cannot exceed 500 characters. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def FundPsbt(self, request, context): + """ + FundPsbt creates a fully populated PSBT that contains enough inputs to fund + the outputs specified in the template. There are two ways of specifying a + template: Either by passing in a PSBT with at least one output declared or + by passing in a raw TxTemplate message. + + If there are no inputs specified in the template, coin selection is + performed automatically. If the template does contain any inputs, it is + assumed that full coin selection happened externally and no additional + inputs are added. If the specified inputs aren't enough to fund the outputs + with the given fee rate, an error is returned. + + After either selecting or verifying the inputs, all input UTXOs are locked + with an internal app ID. + + NOTE: If this method returns without an error, it is the caller's + responsibility to either spend the locked UTXOs (by finalizing and then + publishing the transaction) or to unlock/release the locked UTXOs in case of + an error on the caller's side. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def FinalizePsbt(self, request, context): + """ + FinalizePsbt expects a partial transaction with all inputs and outputs fully + declared and tries to sign all inputs that belong to the wallet. Lnd must be + the last signer of the transaction. That means, if there are any unsigned + non-witness inputs or inputs without UTXO information attached or inputs + without witness data that do not belong to lnd's wallet, this method will + fail. If no error is returned, the PSBT is ready to be extracted and the + final TX within to be broadcast. + + NOTE: This method does NOT publish the transaction once finalized. It is the + caller's responsibility to either publish the transaction on success or + unlock/release any locked UTXOs in case of an error in this method. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_WalletKitServicer_to_server(servicer, server): + rpc_method_handlers = { + 'ListUnspent': grpc.unary_unary_rpc_method_handler( + servicer.ListUnspent, + request_deserializer=walletkit__pb2.ListUnspentRequest.FromString, + response_serializer=walletkit__pb2.ListUnspentResponse.SerializeToString, + ), + 'LeaseOutput': grpc.unary_unary_rpc_method_handler( + servicer.LeaseOutput, + request_deserializer=walletkit__pb2.LeaseOutputRequest.FromString, + response_serializer=walletkit__pb2.LeaseOutputResponse.SerializeToString, + ), + 'ReleaseOutput': grpc.unary_unary_rpc_method_handler( + servicer.ReleaseOutput, + request_deserializer=walletkit__pb2.ReleaseOutputRequest.FromString, + response_serializer=walletkit__pb2.ReleaseOutputResponse.SerializeToString, + ), + 'DeriveNextKey': grpc.unary_unary_rpc_method_handler( + servicer.DeriveNextKey, + request_deserializer=walletkit__pb2.KeyReq.FromString, + response_serializer=signer__pb2.KeyDescriptor.SerializeToString, + ), + 'DeriveKey': grpc.unary_unary_rpc_method_handler( + servicer.DeriveKey, + request_deserializer=signer__pb2.KeyLocator.FromString, + response_serializer=signer__pb2.KeyDescriptor.SerializeToString, + ), + 'NextAddr': grpc.unary_unary_rpc_method_handler( + servicer.NextAddr, + request_deserializer=walletkit__pb2.AddrRequest.FromString, + response_serializer=walletkit__pb2.AddrResponse.SerializeToString, + ), + 'PublishTransaction': grpc.unary_unary_rpc_method_handler( + servicer.PublishTransaction, + request_deserializer=walletkit__pb2.Transaction.FromString, + response_serializer=walletkit__pb2.PublishResponse.SerializeToString, + ), + 'SendOutputs': grpc.unary_unary_rpc_method_handler( + servicer.SendOutputs, + request_deserializer=walletkit__pb2.SendOutputsRequest.FromString, + response_serializer=walletkit__pb2.SendOutputsResponse.SerializeToString, + ), + 'EstimateFee': grpc.unary_unary_rpc_method_handler( + servicer.EstimateFee, + request_deserializer=walletkit__pb2.EstimateFeeRequest.FromString, + response_serializer=walletkit__pb2.EstimateFeeResponse.SerializeToString, + ), + 'PendingSweeps': grpc.unary_unary_rpc_method_handler( + servicer.PendingSweeps, + request_deserializer=walletkit__pb2.PendingSweepsRequest.FromString, + response_serializer=walletkit__pb2.PendingSweepsResponse.SerializeToString, + ), + 'BumpFee': grpc.unary_unary_rpc_method_handler( + servicer.BumpFee, + request_deserializer=walletkit__pb2.BumpFeeRequest.FromString, + response_serializer=walletkit__pb2.BumpFeeResponse.SerializeToString, + ), + 'ListSweeps': grpc.unary_unary_rpc_method_handler( + servicer.ListSweeps, + request_deserializer=walletkit__pb2.ListSweepsRequest.FromString, + response_serializer=walletkit__pb2.ListSweepsResponse.SerializeToString, + ), + 'LabelTransaction': grpc.unary_unary_rpc_method_handler( + servicer.LabelTransaction, + request_deserializer=walletkit__pb2.LabelTransactionRequest.FromString, + response_serializer=walletkit__pb2.LabelTransactionResponse.SerializeToString, + ), + 'FundPsbt': grpc.unary_unary_rpc_method_handler( + servicer.FundPsbt, + request_deserializer=walletkit__pb2.FundPsbtRequest.FromString, + response_serializer=walletkit__pb2.FundPsbtResponse.SerializeToString, + ), + 'FinalizePsbt': grpc.unary_unary_rpc_method_handler( + servicer.FinalizePsbt, + request_deserializer=walletkit__pb2.FinalizePsbtRequest.FromString, + response_serializer=walletkit__pb2.FinalizePsbtResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'walletrpc.WalletKit', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class WalletKit(object): + """WalletKit is a service that gives access to the core functionalities of the + daemon's wallet. + """ + + @staticmethod + def ListUnspent(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, '/walletrpc.WalletKit/ListUnspent', + walletkit__pb2.ListUnspentRequest.SerializeToString, + walletkit__pb2.ListUnspentResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def LeaseOutput(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, '/walletrpc.WalletKit/LeaseOutput', + walletkit__pb2.LeaseOutputRequest.SerializeToString, + walletkit__pb2.LeaseOutputResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def ReleaseOutput(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, '/walletrpc.WalletKit/ReleaseOutput', + walletkit__pb2.ReleaseOutputRequest.SerializeToString, + walletkit__pb2.ReleaseOutputResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def DeriveNextKey(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, '/walletrpc.WalletKit/DeriveNextKey', + walletkit__pb2.KeyReq.SerializeToString, + signer__pb2.KeyDescriptor.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def DeriveKey(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, '/walletrpc.WalletKit/DeriveKey', + signer__pb2.KeyLocator.SerializeToString, + signer__pb2.KeyDescriptor.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def NextAddr(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, '/walletrpc.WalletKit/NextAddr', + walletkit__pb2.AddrRequest.SerializeToString, + walletkit__pb2.AddrResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def PublishTransaction(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, '/walletrpc.WalletKit/PublishTransaction', + walletkit__pb2.Transaction.SerializeToString, + walletkit__pb2.PublishResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def SendOutputs(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, '/walletrpc.WalletKit/SendOutputs', + walletkit__pb2.SendOutputsRequest.SerializeToString, + walletkit__pb2.SendOutputsResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def EstimateFee(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, '/walletrpc.WalletKit/EstimateFee', + walletkit__pb2.EstimateFeeRequest.SerializeToString, + walletkit__pb2.EstimateFeeResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def PendingSweeps(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, '/walletrpc.WalletKit/PendingSweeps', + walletkit__pb2.PendingSweepsRequest.SerializeToString, + walletkit__pb2.PendingSweepsResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def BumpFee(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, '/walletrpc.WalletKit/BumpFee', + walletkit__pb2.BumpFeeRequest.SerializeToString, + walletkit__pb2.BumpFeeResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def ListSweeps(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, '/walletrpc.WalletKit/ListSweeps', + walletkit__pb2.ListSweepsRequest.SerializeToString, + walletkit__pb2.ListSweepsResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def LabelTransaction(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, '/walletrpc.WalletKit/LabelTransaction', + walletkit__pb2.LabelTransactionRequest.SerializeToString, + walletkit__pb2.LabelTransactionResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def FundPsbt(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, '/walletrpc.WalletKit/FundPsbt', + walletkit__pb2.FundPsbtRequest.SerializeToString, + walletkit__pb2.FundPsbtResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def FinalizePsbt(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, '/walletrpc.WalletKit/FinalizePsbt', + walletkit__pb2.FinalizePsbtRequest.SerializeToString, + walletkit__pb2.FinalizePsbtResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/lndmanage/lib/exceptions.py b/lndmanage/lib/exceptions.py index 41cce18..0d2c848 100644 --- a/lndmanage/lib/exceptions.py +++ b/lndmanage/lib/exceptions.py @@ -50,7 +50,7 @@ class PolicyError(PaymentError): pass -class InsufficientBandwidth(PaymentError): +class OurNodeFailure(PaymentError): pass @@ -68,3 +68,21 @@ class RPCError(Exception): class RouterRPCError(RPCError): pass + + +class TemporaryChannelFailure(PaymentFailure): + def __init__(self, payment): + self.payment = payment + super().__init__() + + +class UnknownNextPeer(PaymentFailure): + def __init__(self, payment): + self.payment = payment + super().__init__() + + +class FeeInsufficient(PaymentFailure): + def __init__(self, payment): + self.payment = payment + super().__init__() diff --git a/lndmanage/lib/node.py b/lndmanage/lib/node.py index c53a192..2490cef 100644 --- a/lndmanage/lib/node.py +++ b/lndmanage/lib/node.py @@ -3,6 +3,7 @@ import time import datetime import statistics +from typing import List, TYPE_CHECKING from collections import OrderedDict @@ -17,7 +18,8 @@ import lndmanage.grpc_compiled.router_pb2_grpc as lndrouterrpc from lndmanage.lib.network import Network -from lndmanage.lib.exceptions import PaymentTimeOut, NoRoute, PolicyError, InsufficientBandwidth +from lndmanage.lib.exceptions import PaymentTimeOut, NoRoute, OurNodeFailure +from lndmanage.lib import exceptions from lndmanage.lib.utilities import convert_dictionary_number_strings_to_ints from lndmanage.lib.ln_utilities import ( extract_short_channel_id_from_string, @@ -27,6 +29,9 @@ ) from lndmanage import settings +if TYPE_CHECKING: + from lndmanage.lib.routing import Route + import logging logger = logging.getLogger(__name__) logger.addHandler(logging.NullHandler()) @@ -170,18 +175,15 @@ def get_channel_info(self, channel_id): return channel_dict @staticmethod - def lnd_hops(hops): + def lnd_hops(hops) -> List[lnd.Hop]: return [lnd.Hop(**hop) for hop in hops] - def lnd_route(self, route): + def _to_lnd_route(self, route: 'Route') -> lnd.Route: """ Converts a cleartext route to an lnd route. - - :param route: :class:`lib.route.Route` - :return: """ hops = self.lnd_hops(route.hops) - return lnd.Route( + lnd_route = lnd.Route( total_time_lock=route.total_time_lock, total_fees=route.total_fee_msat // 1000, total_amt=route.total_amt_msat // 1000, @@ -189,36 +191,9 @@ def lnd_route(self, route): total_fees_msat=route.total_fee_msat, total_amt_msat=route.total_amt_msat ) + return lnd_route - def self_payment(self, routes, amt_msat): - """ - Do a self-payment along routes with amt_msat. - - :param routes: list of :class:`lib.route.Route` objects - :param amt_msat: - :return: payment result - """ - invoice = self._rpc.AddInvoice(lnd.Invoice(value=amt_msat // 1000)) - result = self.send_to_route(routes, invoice.r_hash) - logger.debug(result) - return result - - def self_payment_zero_invoice(self, routes, memo): - """ - Do a self-payment along routes with an invoice of zero satoshis. - This helps to use one invoice for several rebalancing attempts. - Adds a memo to the invoice, which can later be parsed for bookkeeping. - - :param routes: list of :class:`lib.route.Route` objects - :param memo: str, Comment field for an invoice. - :return: payment result - """ - invoice = self._rpc.AddInvoice(lnd.Invoice(value=0, memo=memo)) - result = self.send_to_route(routes, invoice.r_hash) - logger.debug(result) - return result - - def get_invoice(self, amt_msat, memo): + def get_invoice(self, amt_msat: int, memo: str) -> lnd.Invoice: """ Creates a new invoice with amt_msat and memo. @@ -226,11 +201,11 @@ def get_invoice(self, amt_msat, memo): :param memo: str :return: Hash of invoice preimage. """ - invoice = self._rpc.AddInvoice( - lnd.Invoice(value=amt_msat // 1000, memo=memo)) - return invoice.r_hash + invoice = self._rpc.AddInvoice(lnd.Invoice( + value=amt_msat // 1000, memo=memo)) + return invoice - def get_rebalance_invoice(self, memo): + def get_rebalance_invoice(self, memo) -> lnd.Invoice: """ Creates a zero amount invoice and gives back it's hash. @@ -238,48 +213,60 @@ def get_rebalance_invoice(self, memo): :return: Hash of the invoice preimage. """ invoice = self._rpc.AddInvoice(lnd.Invoice(value=0, memo=memo)) - return invoice.r_hash + return invoice - def send_to_route(self, route, r_hash_bytes): + def send_to_route(self, route: 'Route', payment_hash: bytes, + payment_address: bytes): """ Takes bare route (list) and tries to send along it, trying to fulfill the invoice labeled by the given hash. :param route: (list) of :class:`lib.routes.Route` - :param r_hash_bytes: invoice identifier + :param payment_hash: invoice identifier :return: """ - lnd_route = self.lnd_route(route) - request = lnd.SendToRouteRequest( + lnd_route = self._to_lnd_route(route) + # set payment address for last hop + lnd_route.hops[-1].tlv_payload = True + lnd_route.hops[-1].mpp_record.payment_addr = payment_address + lnd_route.hops[-1].mpp_record.total_amt_msat = lnd_route.hops[-1].amt_to_forward_msat + # set payment hash + request = lndrouter.SendToRouteRequest( route=lnd_route, - payment_hash_string=r_hash_bytes.hex(), + payment_hash=payment_hash, ) try: # timeout after 5 minutes - payment = self._rpc.SendToRouteSync(request, timeout=5 * 60) + payment = self._routerrpc.SendToRouteV2(request, timeout=5 * 60) except _Rendezvous: raise PaymentTimeOut - - # check for unexpected payment errors - if "htlc exceeds maximum policy" in payment.payment_error: - logger.error(" HTLC exceeds maximum policy amount (channel reserve).") - raise PolicyError - elif "insufficient bandwidth to route" in payment.payment_error: - logger.error(" Insufficient bandwidth to route HTLC.") - raise InsufficientBandwidth + if payment.HasField('failure'): + failure = payment.failure # type: lnd.Failure.FailureCode + logger.debug(f"Routing failure: {failure}") + if failure.failure_source_index == 0: + raise OurNodeFailure("Not enough funds?") + if failure.code == 15: + raise exceptions.TemporaryChannelFailure(payment) + if failure.code == 18: + raise exceptions.UnknownNextPeer(payment) + if failure.code == 12: + raise exceptions.FeeInsufficient(payment) + else: + logger.info(failure) + raise Exception(f"Unknown error: code {failure.code}") return payment def get_raw_network_graph(self): try: graph = self._rpc.DescribeGraph(lnd.ChannelGraphRequest()) + return graph except _Rendezvous: logger.error( "Problem connecting to lnd. " "Either %s is not configured correctly or lnd is not running.", self.config_file) exit(1) - return graph def get_raw_info(self): """ @@ -396,7 +383,7 @@ def convert_to_days_ago(timestamp): channel_unbalancedness_and_commit_fee( c.local_balance, c.capacity, c.commit_fee, c.initiator) try: - uptime_lifetime_ratio = c.uptime / c.lifetime + uptime_lifetime_ratio = c.uptime / c.lifetime except ZeroDivisionError: uptime_lifetime_ratio = 0 diff --git a/lndmanage/lib/rebalance.py b/lndmanage/lib/rebalance.py index 4ddc7d0..770acc0 100644 --- a/lndmanage/lib/rebalance.py +++ b/lndmanage/lib/rebalance.py @@ -1,7 +1,9 @@ import logging import math +from typing import TYPE_CHECKING, Optional, List, Tuple from lndmanage.lib.routing import Router +from lndmanage.lib import exceptions from lndmanage.lib.exceptions import ( RebalanceFailure, NoRoute, @@ -16,29 +18,27 @@ ) from lndmanage import settings +if TYPE_CHECKING: + from lndmanage.lib.node import LndNode + logger = logging.getLogger(__name__) logger.addHandler(logging.NullHandler()) class Rebalancer(object): """ - Implements methods of rebalancing. + Implements methods for rebalancing. A max_effective_fee_rate can be set, which limits the fee rate paid for a rebalance. The effective fee rate is (base_fee + fee_rate * amt)/amt. A fee cap can be defined by budget_sat. Individual and total rebalancing are not allowed to go over this amount. """ - def __init__(self, node, max_effective_fee_rate, budget_sat): + def __init__(self, node: 'LndNode', max_effective_fee_rate: float, budget_sat: int): """ :param node: node instance - :type node: lndmanage.lib.node.LndNode - :param max_effective_fee_rate: maximum effective fee rate paid - :type max_effective_fee_rate: float - :param budget_sat: rebalancing budget - :type budget_sat: int """ self.node = node self.channel_list = {} @@ -47,38 +47,30 @@ def __init__(self, node, max_effective_fee_rate, budget_sat): self.max_effective_fee_rate = max_effective_fee_rate self.budget_sat = budget_sat - def rebalance_two_channels(self, channel_id_from, channel_id_to, amt_sat, - invoice_r_hash, budget_sat, dry=False): + def rebalance_two_channels( + self, channel_id_from: int, channel_id_to: int, amt_sat: int, + payment_hash: bytes, payment_address: bytes, budget_sat: int, + dry=False + ) -> int: """ Rebalances from channel_id_from to channel_id_to with an amount of amt_sat. - A prior created `invoice_r_hash` has to be given. The budget_sat sets + A prior created payment_hash has to be given. The budget_sat sets the maxmimum fees in sat that will be paid. A dry run can be done. :param channel_id_from: channel sending - :type channel_id_from: int - :param channel_id_to: channel receiving - :type channel_id_to: int - :param amt_sat: amount to be sent in sat - :type amt_sat: int - - :param invoice_r_hash: payment hash - :type invoice_r_hash: bytearray - + :param payment_hash: payment hash + :param payment_address: payment hash :param budget_sat: budget for the rebalance - :type budget_sat: int - :param dry: specifies if dry run - :type dry: bool :return: total fees for the whole rebalance in msat - :rtype: int - :raises RebalancingTrialsExhausted: - too many attempts to rebalance channels + :raises TemporarayChannelFailure: no liquidity along path + :raises UnknownNextPeer: a routing node didn't where to forward :raises DuplicateRoute: the same route was already tried :raises NoRoute: no route was found from source to destination :raises TooExpensive: the circular payment would exceed the fee limits @@ -100,7 +92,7 @@ def rebalance_two_channels(self, channel_id_from, channel_id_to, amt_sat, routes = self.router.get_routes_for_rebalancing( channel_id_from, channel_id_to, amt_msat, method='external-mc') - if len(routes) == 0: + if not routes: raise NoRoute else: # take only the first route from routes @@ -108,6 +100,7 @@ def rebalance_two_channels(self, channel_id_from, channel_id_to, amt_sat, if previous_route_channel_hops == r.channel_hops: raise DuplicateRoute("Have tried this route already.") + previous_route_channel_hops = r.channel_hops logger.info( f"Next route: total fee: {r.total_fee_msat / 1000:3.3f} sat, " @@ -128,85 +121,56 @@ def rebalance_two_channels(self, channel_id_from, channel_id_to, amt_sat, f"{r.total_fee_msat / 1000:.3f} sat, budget: {budget_sat:.3f} sat") raise TooExpensive + result = None + failed_hop = None if not dry: try: - result = self.node.send_to_route(r, invoice_r_hash) + result = self.node.send_to_route(r, payment_hash, payment_address) except PaymentTimeOut: - # TODO: handle payment timeout properly raise PaymentTimeOut - - previous_route_channel_hops = r.channel_hops - - # handle expected payment errors - if result.payment_error: - logger.debug(f"Payment error: {result.payment_error}.") - - # determine the channel/node that reported a failure - reporting_channel_id = self.node.handle_payment_error( - result.payment_error) - - if reporting_channel_id: - try: - index_failed_channel = \ - r.channel_hops.index(reporting_channel_id) - failed_channel_id = \ - r.channel_hops[index_failed_channel] - except ValueError: - logger.error( - "Failed channel not even in list of channel " - "hops (lnd issue?).") - continue - # check if a failed channel was our own, which should, - # in principle, not happen - if failed_channel_id in [channel_id_from, - channel_id_to]: - raise RebalanceFailure( - f"Own channel failed. Something is wrong. " - f"This is likely due to a wrong accounting " - f"for the channel reserve and will be fixed " - f"in the future. " - f"Try with smaller absolute target. " - f"Failing channel: {failed_channel_id}") - - # determine the nodes involved in the channel - failed_channel_source = r.node_hops[ - index_failed_channel] - failed_channel_target = r.node_hops[ - index_failed_channel + 1] - logger.info(f" Failed channel: {failed_channel_id}") - logger.debug( - f" Failed channel between nodes " - f"{failed_channel_source} and " - f"{failed_channel_target}") - logger.debug(f" Node hops {r.node_hops}") - logger.debug(f" Channel hops {r.channel_hops}") - - # remember the bad channel for next routing - self.router.channel_rater.add_bad_channel( - failed_channel_id, failed_channel_source, - failed_channel_target) - - else: # usually the case of UnknownNextPeer - # add all the inner hops to the blacklist - logger.error( - " Unknown next peer somewhere in route.") - inner_hops = r.channel_hops[1:-1] - for i_hop, hop in enumerate(inner_hops): - failed_channel_source = r.node_hops[i_hop] - failed_channel_target = r.node_hops[i_hop + 1] - self.router.channel_rater.add_bad_channel( - hop, failed_channel_source, - failed_channel_target) - continue + except exceptions.TemporaryChannelFailure as e: + failed_hop = int(e.payment.failure.failure_source_index) + except exceptions.UnknownNextPeer as e: + failed_hop = int(e.payment.failure.failure_source_index + 1) + except exceptions.FeeInsufficient as e: + failed_hop = int(e.payment.failure.failure_source_index) else: - logger.debug(result.payment_preimage) + logger.debug(f"Preimage: {result.preimage.hex()}") logger.info("Success!\n") return r.total_fee_msat + + if failed_hop: + failed_channel_id = r.hops[failed_hop]['chan_id'] + failed_node_source = r.node_hops[failed_hop] + failed_node_target = r.node_hops[failed_hop + 1] + + if failed_channel_id in [channel_id_from, channel_id_to]: + raise RebalanceFailure( + f"Own channel failed. Something is wrong. " + f"This is likely due to a wrong accounting " + f"for the channel reserve and will be fixed " + f"in the future. " + f"Try with smaller absolute target. " + f"Failing channel: {failed_channel_id}") + + # determine the nodes involved in the channel + logger.info(f" Failed channel: {failed_channel_id}") + logger.debug( + f" Failed channel between nodes " + f"{failed_node_source} and " + f"{failed_node_target}") + logger.debug(f" Node hops {r.node_hops}") + logger.debug(f" Channel hops {r.channel_hops}") + + # remember the bad channel for next routing + self.router.channel_rater.add_bad_channel( + failed_channel_id, failed_node_source, + failed_node_target) else: # dry raise DryRun - def _get_rebalance_candidates(self, channel_id, local_balance_change, - allow_unbalancing=False, strategy=None): + def _get_rebalance_candidates(self, channel_id: int, local_balance_change: int, + allow_unbalancing=False, strategy=Optional[str]): """ Determines channels, which can be used to rebalance a channel. @@ -219,15 +183,9 @@ def _get_rebalance_candidates(self, channel_id, local_balance_change, which determines the order of channels of the rebalancing process. :param channel_id: the channel id of the to be rebalanced channel - :type channel_id: int - :param local_balance_change: amount by which the local balance of channel should change in sat - :type local_balance_change: int - :param allow_unbalancing: if unbalancing of channels should be allowed - :type allow_unbalancing: bool - :param strategy: None: By default, counterparty channels are sorted such that the ones unbalanced in the opposite direction are chosen first, @@ -311,34 +269,27 @@ def _get_rebalance_candidates(self, channel_id, local_balance_change, return rebalance_candidates @staticmethod - def _effective_fee_rate(amt_sat, base, rate): + def _effective_fee_rate(amt_sat: int, base_fee: float, fee_rate: float) -> float: """ Calculates the effective fee rate: (base_fee + fee_rate * amt) / amt :param amt_sat: amount in sat - :type amt_sat: int - - :param base: base fee in sat - :type base: float - - :param rate: fee rate - :type rate: float + :param base_fee: base fee in sat + :param fee_rate: fee rate :return: effective fee rate - :rtype: float """ amt_msat = amt_sat * 1000 assert not (amt_msat == 0) - rate = (base + rate * amt_msat / 1000000) / amt_msat - return rate + fee_rate = (base_fee + fee_rate * amt_msat / 1000000) / amt_msat + return fee_rate @staticmethod - def _print_rebalance_candidates(rebalance_candidates): + def _print_rebalance_candidates(rebalance_candidates: List[dict]): """ Prints rebalance candidates. :param rebalance_candidates: - :type rebalance_candidates: list[dict] """ logger.debug(f"-------- Description --------") logger.debug( @@ -367,14 +318,12 @@ def _print_rebalance_candidates(rebalance_candidates): f"fr:{c['peer_fee_rate']/1E6: 1.6f} " f"a:{c['alias']}") - def _extract_channel_info(self, chan_id): + def _extract_channel_info(self, chan_id: int) -> dict: """ Gets the channel info (policy, capacity, nodes) from the graph. :param chan_id: channel id - :type chan_id: int :return: channel information - :rtype: dict """ # TODO: make more pythonic channel_info = None @@ -386,22 +335,15 @@ def _extract_channel_info(self, chan_id): return channel_info @staticmethod - def _get_source_and_target_channels(channel_one, channel_two, - rebalance_direction): + def _get_source_and_target_channels(channel_one: int, channel_two: int, + rebalance_direction: float) -> Tuple[int, int]: """ Determines what the sending and receiving channel ids are. :param channel_one: first channel - :type channel_one: int - :param channel_two: second channel - :type channel_two: int - :param rebalance_direction: positive, if receiving, negative if sending - :type rebalance_direction: float - :return: sending and receiving channel - :rtype: (int, int) """ if rebalance_direction < 0: source = channel_one @@ -413,8 +355,8 @@ def _get_source_and_target_channels(channel_one, channel_two, return source, target @staticmethod - def _maximal_local_balance_change(unbalancedness_target, - unbalanced_channel_info): + def _maximal_local_balance_change(unbalancedness_target: float, + unbalanced_channel_info: dict) -> int: """ Tries to find out the amount to maximally send/receive given the relative target and channel reserve constraints for channel balance @@ -427,14 +369,10 @@ def _maximal_local_balance_change(unbalancedness_target, :param unbalancedness_target: interpreted in terms of unbalancedness [-1...1] - :type unbalancedness_target: float - :param unbalanced_channel_info: fees, capacity, initiator info - :type unbalanced_channel_info: dict :return: positive or negative amount in sat (encodes the decrease/increase in the local balance) - :rtype: int """ # both parties need to maintain a channel reserve of 1% # according to BOLT 2 @@ -494,15 +432,13 @@ def _maximal_local_balance_change(unbalancedness_target, return amt_target_original - def _node_is_multiple_connected(self, pub_key): + def _node_is_multiple_connected(self, pub_key: str) -> bool: """ Checks if the node is connected to us via several channels. :param pub_key: node public key - :type pub_key: str :return: true if number of channels to the node is larger than 1 - :rtype: bool """ n_channels = 0 for pk, chan_info in self.channel_list.items(): @@ -513,8 +449,8 @@ def _node_is_multiple_connected(self, pub_key): else: return False - def rebalance(self, channel_id, dry=False, chunksize=1.0, target=None, - allow_unbalancing=False, strategy=None): + def rebalance(self, channel_id: int, dry=False, chunksize=1.0, target=Optional[float], + allow_unbalancing=False, strategy=Optional[str]): """ Automatically rebalances a selected channel with a fee cap of self.budget_sat and self.max_effective_fee_rate. @@ -533,26 +469,14 @@ def rebalance(self, channel_id, dry=False, chunksize=1.0, target=None, cost increases. :param channel_id: - :type channel_id: int - :param dry: if set, then there's a dry run - :type dry: bool - :param chunksize: a number between 0 and 1 - :type chunksize: float - :param target: specifies unbalancedness after rebalancing in [-1, 1] - :type target: float - :param allow_unbalancing: allows counterparty channels to get a little bit unbalanced - :type allow_unbalancing: bool - :param strategy: lets you select a strategy for rebalancing order - :type strategy: str :return: fees in msat paid for rebalancing - :rtype: int :raises MultichannelInboundRebalanceFailure: can't rebalance channels with a node we are mutiply connected @@ -716,18 +640,18 @@ def rebalance(self, channel_id, dry=False, chunksize=1.0, target=None, f"of {initial_local_balance_change} sat. " f"Fees paid up to now: {total_fees_msat / 1000:.3f} sat.") - # for each rebalance, get a new invoice - invoice_r_hash = self.node.get_invoice( + # for each rebalance attempt, get a new invoice + invoice = self.node.get_invoice( amt_msat=amt*1000, memo=f"lndmanage: Rebalance of channel {channel_id}.") - + payment_hash, payment_address = invoice.r_hash, invoice.payment_addr # attempt the rebalance try: # be up to date with the blockheight, otherwise could lead # to cltv errors self.node.update_blockheight() total_fees_msat += self.rebalance_two_channels( - source_channel, target_channel, amt, invoice_r_hash, + source_channel, target_channel, amt, payment_hash, payment_address, self.budget_sat, dry=dry) local_balance_change_left -= int(rebalance_direction * amt) diff --git a/lndmanage/lndmanage.py b/lndmanage/lndmanage.py index a052b69..2725320 100755 --- a/lndmanage/lndmanage.py +++ b/lndmanage/lndmanage.py @@ -405,12 +405,13 @@ def run_commands(self, node, args): elif args.cmd == 'circle': rebalancer = Rebalancer(node, args.max_fee_rate, args.max_fee_sat) - invoice_r_hash = node.get_rebalance_invoice( - memo='circular payment') + invoice = node.get_rebalance_invoice(memo='circular payment') + payment_hash, payment_address = invoice.r_hash, invoice.payment_addr try: rebalancer.rebalance_two_channels( args.channel_from, args.channel_to, - args.amt_sat, invoice_r_hash, args.max_fee_sat, + args.amt_sat, payment_hash, payment_address, + args.max_fee_sat, dry=not args.reckless) except DryRun: logger.info("This was just a dry run.") diff --git a/test/test_circle.py b/test/test_circle.py index 9f91fdf..c8927d1 100644 --- a/test/test_circle.py +++ b/test/test_circle.py @@ -12,7 +12,7 @@ RebalancingTrialsExhausted, NoRoute, PolicyError, - InsufficientBandwidth, + OurNodeFailure, ) from lndmanage import settings from test.testnetwork import TestNetwork @@ -37,34 +37,21 @@ class CircleTest(TestNetwork): """ network_definition = None - def circle_and_check(self, channel_number_send, - channel_number_receive, amount_sat, - expected_fees_msat, budget_sat=20, + def circle_and_check(self, channel_number_send: int, + channel_number_receive: int, amount_sat: int, + expected_fees_msat: int, budget_sat=20, max_effective_fee_rate=50, dry=False): """ Helper function for testing a circular payment. :param channel_number_send: channel whose local balance is decreased - :type channel_number_send: int - :param channel_number_receive: channel whose local balance is increased - :type channel_number_receive: int - :param amount_sat: amount in satoshi to rebalance - :type amount_sat: int - :param expected_fees_msat: expected fees in millisatoshi for the rebalance - :type expected_fees_msat: int - :param budget_sat: budget for rebalancing - :type budget_sat: int - :param max_effective_fee_rate: the maximal effective fee rate accepted - :type max_effective_fee_rate: int - :param dry: if it should be a dry run - :type dry: bool """ self.rebalancer = Rebalancer( @@ -78,15 +65,16 @@ def circle_and_check(self, channel_number_send, channel_number_send]['channel_id'] channel_id_receive = self.testnet.channel_mapping[ channel_number_receive]['channel_id'] - invoice_r_hash = self.lndnode.get_invoice(amount_sat, '') + invoice = self.lndnode.get_invoice(amount_sat, '') + payment_hash, payment_address = invoice.r_hash, invoice.payment_addr - # exercise try: fees_msat = self.rebalancer.rebalance_two_channels( channel_id_send, channel_id_receive, amount_sat, - invoice_r_hash, + payment_hash, + payment_address, budget_sat, dry=dry ) @@ -94,7 +82,6 @@ def circle_and_check(self, channel_number_send, except Exception as e: raise e - # check graph_after = self.testnet.assemble_graph() channel_data_send_before = graph_before['A'][channel_number_send] channel_data_receive_before = graph_before['A'][channel_number_receive] @@ -180,7 +167,7 @@ def test_circle_6_1_fail_rebalance_failure_no_funds(self): expected_fees_msat = 33 self.assertRaises( - InsufficientBandwidth, + OurNodeFailure, self.circle_and_check, channel_number_from, channel_number_to, @@ -232,25 +219,6 @@ def test_circle_1_6_fail_max_fee_rate_too_expensive(self): ) - def test_circle_1_6_fail_first_hop_insufficient_funds(self): - """ - Tests failure when our channel fails because we didn't take into - account channel reserve. (Failing channel 1: 117:1:0) - """ - channel_number_from = 1 - channel_number_to = 6 - amount_sat = 1000000 - expected_fees_msat = 33 - - self.assertRaises( - PolicyError, - self.circle_and_check, - channel_number_from, - channel_number_to, - amount_sat, - expected_fees_msat, - ) - def test_circle_1_6_success_channel_reserve(self): """ Test for a maximal amount circular payment. @@ -341,24 +309,9 @@ def test_circle_1_2_fail_max_trials_exhausted(self): expected_fees_msat ) - # def test_circle_1_2_success_multi_trial(self): - # """ - # Test if RebalancingTrialsExhausted is raised. - # """ - # channel_number_from = 1 - # channel_number_to = 2 - # amount_sat = 200000 - # expected_fees_msat = 1207 - - # self.circle_and_check( - # channel_number_from, - # channel_number_to, - # amount_sat, - # expected_fees_msat) - def test_circle_1_2_fail_no_route_multi_trials(self): """ - Test if NoRoute is raised. + Test if RebalancingTrialsExhausted is raised. """ channel_number_from = 1 channel_number_to = 2