import * as $protobuf from 'protobufjs';
import Long = require('long');
/** Namespace lnrpc. */
export namespace lnrpc {
    /** Represents a Lightning */
    class Lightning extends $protobuf.rpc.Service {
        /**
         * Constructs a new Lightning service.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         */
        constructor(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        );

        /**
         * Creates new Lightning service using the specified rpc implementation.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         * @returns RPC service. Useful where requests and/or responses are streamed.
         */
        public static create(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        ): Lightning;

        /**
         * Calls WalletBalance.
         * @param request WalletBalanceRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and WalletBalanceResponse
         */
        public walletBalance(
            request: lnrpc.IWalletBalanceRequest,
            callback: lnrpc.Lightning.WalletBalanceCallback
        ): void;

        /**
         * Calls WalletBalance.
         * @param request WalletBalanceRequest message or plain object
         * @returns Promise
         */
        public walletBalance(
            request: lnrpc.IWalletBalanceRequest
        ): Promise<lnrpc.WalletBalanceResponse>;

        /**
         * Calls ChannelBalance.
         * @param request ChannelBalanceRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ChannelBalanceResponse
         */
        public channelBalance(
            request: lnrpc.IChannelBalanceRequest,
            callback: lnrpc.Lightning.ChannelBalanceCallback
        ): void;

        /**
         * Calls ChannelBalance.
         * @param request ChannelBalanceRequest message or plain object
         * @returns Promise
         */
        public channelBalance(
            request: lnrpc.IChannelBalanceRequest
        ): Promise<lnrpc.ChannelBalanceResponse>;

        /**
         * Calls GetTransactions.
         * @param request GetTransactionsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and TransactionDetails
         */
        public getTransactions(
            request: lnrpc.IGetTransactionsRequest,
            callback: lnrpc.Lightning.GetTransactionsCallback
        ): void;

        /**
         * Calls GetTransactions.
         * @param request GetTransactionsRequest message or plain object
         * @returns Promise
         */
        public getTransactions(
            request: lnrpc.IGetTransactionsRequest
        ): Promise<lnrpc.TransactionDetails>;

        /**
         * Calls EstimateFee.
         * @param request EstimateFeeRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and EstimateFeeResponse
         */
        public estimateFee(
            request: lnrpc.IEstimateFeeRequest,
            callback: lnrpc.Lightning.EstimateFeeCallback
        ): void;

        /**
         * Calls EstimateFee.
         * @param request EstimateFeeRequest message or plain object
         * @returns Promise
         */
        public estimateFee(
            request: lnrpc.IEstimateFeeRequest
        ): Promise<lnrpc.EstimateFeeResponse>;

        /**
         * Calls SendCoins.
         * @param request SendCoinsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SendCoinsResponse
         */
        public sendCoins(
            request: lnrpc.ISendCoinsRequest,
            callback: lnrpc.Lightning.SendCoinsCallback
        ): void;

        /**
         * Calls SendCoins.
         * @param request SendCoinsRequest message or plain object
         * @returns Promise
         */
        public sendCoins(
            request: lnrpc.ISendCoinsRequest
        ): Promise<lnrpc.SendCoinsResponse>;

        /**
         * Calls ListUnspent.
         * @param request ListUnspentRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ListUnspentResponse
         */
        public listUnspent(
            request: lnrpc.IListUnspentRequest,
            callback: lnrpc.Lightning.ListUnspentCallback
        ): void;

        /**
         * Calls ListUnspent.
         * @param request ListUnspentRequest message or plain object
         * @returns Promise
         */
        public listUnspent(
            request: lnrpc.IListUnspentRequest
        ): Promise<lnrpc.ListUnspentResponse>;

        /**
         * Calls SubscribeTransactions.
         * @param request GetTransactionsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and Transaction
         */
        public subscribeTransactions(
            request: lnrpc.IGetTransactionsRequest,
            callback: lnrpc.Lightning.SubscribeTransactionsCallback
        ): void;

        /**
         * Calls SubscribeTransactions.
         * @param request GetTransactionsRequest message or plain object
         * @returns Promise
         */
        public subscribeTransactions(
            request: lnrpc.IGetTransactionsRequest
        ): Promise<lnrpc.Transaction>;

        /**
         * Calls SendMany.
         * @param request SendManyRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SendManyResponse
         */
        public sendMany(
            request: lnrpc.ISendManyRequest,
            callback: lnrpc.Lightning.SendManyCallback
        ): void;

        /**
         * Calls SendMany.
         * @param request SendManyRequest message or plain object
         * @returns Promise
         */
        public sendMany(
            request: lnrpc.ISendManyRequest
        ): Promise<lnrpc.SendManyResponse>;

        /**
         * Calls NewAddress.
         * @param request NewAddressRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and NewAddressResponse
         */
        public newAddress(
            request: lnrpc.INewAddressRequest,
            callback: lnrpc.Lightning.NewAddressCallback
        ): void;

        /**
         * Calls NewAddress.
         * @param request NewAddressRequest message or plain object
         * @returns Promise
         */
        public newAddress(
            request: lnrpc.INewAddressRequest
        ): Promise<lnrpc.NewAddressResponse>;

        /**
         * Calls SignMessage.
         * @param request SignMessageRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SignMessageResponse
         */
        public signMessage(
            request: lnrpc.ISignMessageRequest,
            callback: lnrpc.Lightning.SignMessageCallback
        ): void;

        /**
         * Calls SignMessage.
         * @param request SignMessageRequest message or plain object
         * @returns Promise
         */
        public signMessage(
            request: lnrpc.ISignMessageRequest
        ): Promise<lnrpc.SignMessageResponse>;

        /**
         * Calls VerifyMessage.
         * @param request VerifyMessageRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and VerifyMessageResponse
         */
        public verifyMessage(
            request: lnrpc.IVerifyMessageRequest,
            callback: lnrpc.Lightning.VerifyMessageCallback
        ): void;

        /**
         * Calls VerifyMessage.
         * @param request VerifyMessageRequest message or plain object
         * @returns Promise
         */
        public verifyMessage(
            request: lnrpc.IVerifyMessageRequest
        ): Promise<lnrpc.VerifyMessageResponse>;

        /**
         * Calls ConnectPeer.
         * @param request ConnectPeerRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ConnectPeerResponse
         */
        public connectPeer(
            request: lnrpc.IConnectPeerRequest,
            callback: lnrpc.Lightning.ConnectPeerCallback
        ): void;

        /**
         * Calls ConnectPeer.
         * @param request ConnectPeerRequest message or plain object
         * @returns Promise
         */
        public connectPeer(
            request: lnrpc.IConnectPeerRequest
        ): Promise<lnrpc.ConnectPeerResponse>;

        /**
         * Calls DisconnectPeer.
         * @param request DisconnectPeerRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and DisconnectPeerResponse
         */
        public disconnectPeer(
            request: lnrpc.IDisconnectPeerRequest,
            callback: lnrpc.Lightning.DisconnectPeerCallback
        ): void;

        /**
         * Calls DisconnectPeer.
         * @param request DisconnectPeerRequest message or plain object
         * @returns Promise
         */
        public disconnectPeer(
            request: lnrpc.IDisconnectPeerRequest
        ): Promise<lnrpc.DisconnectPeerResponse>;

        /**
         * Calls ListPeers.
         * @param request ListPeersRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ListPeersResponse
         */
        public listPeers(
            request: lnrpc.IListPeersRequest,
            callback: lnrpc.Lightning.ListPeersCallback
        ): void;

        /**
         * Calls ListPeers.
         * @param request ListPeersRequest message or plain object
         * @returns Promise
         */
        public listPeers(
            request: lnrpc.IListPeersRequest
        ): Promise<lnrpc.ListPeersResponse>;

        /**
         * Calls SubscribePeerEvents.
         * @param request PeerEventSubscription message or plain object
         * @param callback Node-style callback called with the error, if any, and PeerEvent
         */
        public subscribePeerEvents(
            request: lnrpc.IPeerEventSubscription,
            callback: lnrpc.Lightning.SubscribePeerEventsCallback
        ): void;

        /**
         * Calls SubscribePeerEvents.
         * @param request PeerEventSubscription message or plain object
         * @returns Promise
         */
        public subscribePeerEvents(
            request: lnrpc.IPeerEventSubscription
        ): Promise<lnrpc.PeerEvent>;

        /**
         * Calls GetInfo.
         * @param request GetInfoRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and GetInfoResponse
         */
        public getInfo(
            request: lnrpc.IGetInfoRequest,
            callback: lnrpc.Lightning.GetInfoCallback
        ): void;

        /**
         * Calls GetInfo.
         * @param request GetInfoRequest message or plain object
         * @returns Promise
         */
        public getInfo(
            request: lnrpc.IGetInfoRequest
        ): Promise<lnrpc.GetInfoResponse>;

        /**
         * Calls GetDebugInfo.
         * @param request GetDebugInfoRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and GetDebugInfoResponse
         */
        public getDebugInfo(
            request: lnrpc.IGetDebugInfoRequest,
            callback: lnrpc.Lightning.GetDebugInfoCallback
        ): void;

        /**
         * Calls GetDebugInfo.
         * @param request GetDebugInfoRequest message or plain object
         * @returns Promise
         */
        public getDebugInfo(
            request: lnrpc.IGetDebugInfoRequest
        ): Promise<lnrpc.GetDebugInfoResponse>;

        /**
         * lncli: `getrecoveryinfo`
         * GetRecoveryInfo returns information concerning the recovery mode including
         * whether it's in a recovery mode, whether the recovery is finished, and the
         * progress made so far.
         * @param request GetRecoveryInfoRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and GetRecoveryInfoResponse
         */
        public getRecoveryInfo(
            request: lnrpc.IGetRecoveryInfoRequest,
            callback: lnrpc.Lightning.GetRecoveryInfoCallback
        ): void;

        /**
         * lncli: `getrecoveryinfo`
         * GetRecoveryInfo returns information concerning the recovery mode including
         * whether it's in a recovery mode, whether the recovery is finished, and the
         * progress made so far.
         * @param request GetRecoveryInfoRequest message or plain object
         * @returns Promise
         */
        public getRecoveryInfo(
            request: lnrpc.IGetRecoveryInfoRequest
        ): Promise<lnrpc.GetRecoveryInfoResponse>;

        /**
         * Calls PendingChannels.
         * @param request PendingChannelsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and PendingChannelsResponse
         */
        public pendingChannels(
            request: lnrpc.IPendingChannelsRequest,
            callback: lnrpc.Lightning.PendingChannelsCallback
        ): void;

        /**
         * Calls PendingChannels.
         * @param request PendingChannelsRequest message or plain object
         * @returns Promise
         */
        public pendingChannels(
            request: lnrpc.IPendingChannelsRequest
        ): Promise<lnrpc.PendingChannelsResponse>;

        /**
         * Calls ListChannels.
         * @param request ListChannelsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ListChannelsResponse
         */
        public listChannels(
            request: lnrpc.IListChannelsRequest,
            callback: lnrpc.Lightning.ListChannelsCallback
        ): void;

        /**
         * Calls ListChannels.
         * @param request ListChannelsRequest message or plain object
         * @returns Promise
         */
        public listChannels(
            request: lnrpc.IListChannelsRequest
        ): Promise<lnrpc.ListChannelsResponse>;

        /**
         * Calls SubscribeChannelEvents.
         * @param request ChannelEventSubscription message or plain object
         * @param callback Node-style callback called with the error, if any, and ChannelEventUpdate
         */
        public subscribeChannelEvents(
            request: lnrpc.IChannelEventSubscription,
            callback: lnrpc.Lightning.SubscribeChannelEventsCallback
        ): void;

        /**
         * Calls SubscribeChannelEvents.
         * @param request ChannelEventSubscription message or plain object
         * @returns Promise
         */
        public subscribeChannelEvents(
            request: lnrpc.IChannelEventSubscription
        ): Promise<lnrpc.ChannelEventUpdate>;

        /**
         * Calls ClosedChannels.
         * @param request ClosedChannelsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ClosedChannelsResponse
         */
        public closedChannels(
            request: lnrpc.IClosedChannelsRequest,
            callback: lnrpc.Lightning.ClosedChannelsCallback
        ): void;

        /**
         * Calls ClosedChannels.
         * @param request ClosedChannelsRequest message or plain object
         * @returns Promise
         */
        public closedChannels(
            request: lnrpc.IClosedChannelsRequest
        ): Promise<lnrpc.ClosedChannelsResponse>;

        /**
         * Calls OpenChannelSync.
         * @param request OpenChannelRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ChannelPoint
         */
        public openChannelSync(
            request: lnrpc.IOpenChannelRequest,
            callback: lnrpc.Lightning.OpenChannelSyncCallback
        ): void;

        /**
         * Calls OpenChannelSync.
         * @param request OpenChannelRequest message or plain object
         * @returns Promise
         */
        public openChannelSync(
            request: lnrpc.IOpenChannelRequest
        ): Promise<lnrpc.ChannelPoint>;

        /**
         * Calls OpenChannel.
         * @param request OpenChannelRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and OpenStatusUpdate
         */
        public openChannel(
            request: lnrpc.IOpenChannelRequest,
            callback: lnrpc.Lightning.OpenChannelCallback
        ): void;

        /**
         * Calls OpenChannel.
         * @param request OpenChannelRequest message or plain object
         * @returns Promise
         */
        public openChannel(
            request: lnrpc.IOpenChannelRequest
        ): Promise<lnrpc.OpenStatusUpdate>;

        /**
         * Calls BatchOpenChannel.
         * @param request BatchOpenChannelRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and BatchOpenChannelResponse
         */
        public batchOpenChannel(
            request: lnrpc.IBatchOpenChannelRequest,
            callback: lnrpc.Lightning.BatchOpenChannelCallback
        ): void;

        /**
         * Calls BatchOpenChannel.
         * @param request BatchOpenChannelRequest message or plain object
         * @returns Promise
         */
        public batchOpenChannel(
            request: lnrpc.IBatchOpenChannelRequest
        ): Promise<lnrpc.BatchOpenChannelResponse>;

        /**
         * Calls FundingStateStep.
         * @param request FundingTransitionMsg message or plain object
         * @param callback Node-style callback called with the error, if any, and FundingStateStepResp
         */
        public fundingStateStep(
            request: lnrpc.IFundingTransitionMsg,
            callback: lnrpc.Lightning.FundingStateStepCallback
        ): void;

        /**
         * Calls FundingStateStep.
         * @param request FundingTransitionMsg message or plain object
         * @returns Promise
         */
        public fundingStateStep(
            request: lnrpc.IFundingTransitionMsg
        ): Promise<lnrpc.FundingStateStepResp>;

        /**
         * Calls ChannelAcceptor.
         * @param request ChannelAcceptResponse message or plain object
         * @param callback Node-style callback called with the error, if any, and ChannelAcceptRequest
         */
        public channelAcceptor(
            request: lnrpc.IChannelAcceptResponse,
            callback: lnrpc.Lightning.ChannelAcceptorCallback
        ): void;

        /**
         * Calls ChannelAcceptor.
         * @param request ChannelAcceptResponse message or plain object
         * @returns Promise
         */
        public channelAcceptor(
            request: lnrpc.IChannelAcceptResponse
        ): Promise<lnrpc.ChannelAcceptRequest>;

        /**
         * Calls CloseChannel.
         * @param request CloseChannelRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and CloseStatusUpdate
         */
        public closeChannel(
            request: lnrpc.ICloseChannelRequest,
            callback: lnrpc.Lightning.CloseChannelCallback
        ): void;

        /**
         * Calls CloseChannel.
         * @param request CloseChannelRequest message or plain object
         * @returns Promise
         */
        public closeChannel(
            request: lnrpc.ICloseChannelRequest
        ): Promise<lnrpc.CloseStatusUpdate>;

        /**
         * Calls AbandonChannel.
         * @param request AbandonChannelRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and AbandonChannelResponse
         */
        public abandonChannel(
            request: lnrpc.IAbandonChannelRequest,
            callback: lnrpc.Lightning.AbandonChannelCallback
        ): void;

        /**
         * Calls AbandonChannel.
         * @param request AbandonChannelRequest message or plain object
         * @returns Promise
         */
        public abandonChannel(
            request: lnrpc.IAbandonChannelRequest
        ): Promise<lnrpc.AbandonChannelResponse>;

        /**
         * Calls SendPayment.
         * @param request SendRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SendResponse
         */
        public sendPayment(
            request: lnrpc.ISendRequest,
            callback: lnrpc.Lightning.SendPaymentCallback
        ): void;

        /**
         * Calls SendPayment.
         * @param request SendRequest message or plain object
         * @returns Promise
         */
        public sendPayment(
            request: lnrpc.ISendRequest
        ): Promise<lnrpc.SendResponse>;

        /**
         * Calls SendPaymentSync.
         * @param request SendRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SendResponse
         */
        public sendPaymentSync(
            request: lnrpc.ISendRequest,
            callback: lnrpc.Lightning.SendPaymentSyncCallback
        ): void;

        /**
         * Calls SendPaymentSync.
         * @param request SendRequest message or plain object
         * @returns Promise
         */
        public sendPaymentSync(
            request: lnrpc.ISendRequest
        ): Promise<lnrpc.SendResponse>;

        /**
         * Calls SendToRoute.
         * @param request SendToRouteRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SendResponse
         */
        public sendToRoute(
            request: lnrpc.ISendToRouteRequest,
            callback: lnrpc.Lightning.SendToRouteCallback
        ): void;

        /**
         * Calls SendToRoute.
         * @param request SendToRouteRequest message or plain object
         * @returns Promise
         */
        public sendToRoute(
            request: lnrpc.ISendToRouteRequest
        ): Promise<lnrpc.SendResponse>;

        /**
         * Calls SendToRouteSync.
         * @param request SendToRouteRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SendResponse
         */
        public sendToRouteSync(
            request: lnrpc.ISendToRouteRequest,
            callback: lnrpc.Lightning.SendToRouteSyncCallback
        ): void;

        /**
         * Calls SendToRouteSync.
         * @param request SendToRouteRequest message or plain object
         * @returns Promise
         */
        public sendToRouteSync(
            request: lnrpc.ISendToRouteRequest
        ): Promise<lnrpc.SendResponse>;

        /**
         * Calls AddInvoice.
         * @param request Invoice message or plain object
         * @param callback Node-style callback called with the error, if any, and AddInvoiceResponse
         */
        public addInvoice(
            request: lnrpc.IInvoice,
            callback: lnrpc.Lightning.AddInvoiceCallback
        ): void;

        /**
         * Calls AddInvoice.
         * @param request Invoice message or plain object
         * @returns Promise
         */
        public addInvoice(
            request: lnrpc.IInvoice
        ): Promise<lnrpc.AddInvoiceResponse>;

        /**
         * Calls ListInvoices.
         * @param request ListInvoiceRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ListInvoiceResponse
         */
        public listInvoices(
            request: lnrpc.IListInvoiceRequest,
            callback: lnrpc.Lightning.ListInvoicesCallback
        ): void;

        /**
         * Calls ListInvoices.
         * @param request ListInvoiceRequest message or plain object
         * @returns Promise
         */
        public listInvoices(
            request: lnrpc.IListInvoiceRequest
        ): Promise<lnrpc.ListInvoiceResponse>;

        /**
         * Calls LookupInvoice.
         * @param request PaymentHash message or plain object
         * @param callback Node-style callback called with the error, if any, and Invoice
         */
        public lookupInvoice(
            request: lnrpc.IPaymentHash,
            callback: lnrpc.Lightning.LookupInvoiceCallback
        ): void;

        /**
         * Calls LookupInvoice.
         * @param request PaymentHash message or plain object
         * @returns Promise
         */
        public lookupInvoice(
            request: lnrpc.IPaymentHash
        ): Promise<lnrpc.Invoice>;

        /**
         * Calls SubscribeInvoices.
         * @param request InvoiceSubscription message or plain object
         * @param callback Node-style callback called with the error, if any, and Invoice
         */
        public subscribeInvoices(
            request: lnrpc.IInvoiceSubscription,
            callback: lnrpc.Lightning.SubscribeInvoicesCallback
        ): void;

        /**
         * Calls SubscribeInvoices.
         * @param request InvoiceSubscription message or plain object
         * @returns Promise
         */
        public subscribeInvoices(
            request: lnrpc.IInvoiceSubscription
        ): Promise<lnrpc.Invoice>;

        /**
         * Calls DecodePayReq.
         * @param request PayReqString message or plain object
         * @param callback Node-style callback called with the error, if any, and PayReq
         */
        public decodePayReq(
            request: lnrpc.IPayReqString,
            callback: lnrpc.Lightning.DecodePayReqCallback
        ): void;

        /**
         * Calls DecodePayReq.
         * @param request PayReqString message or plain object
         * @returns Promise
         */
        public decodePayReq(
            request: lnrpc.IPayReqString
        ): Promise<lnrpc.PayReq>;

        /**
         * Calls ListPayments.
         * @param request ListPaymentsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ListPaymentsResponse
         */
        public listPayments(
            request: lnrpc.IListPaymentsRequest,
            callback: lnrpc.Lightning.ListPaymentsCallback
        ): void;

        /**
         * Calls ListPayments.
         * @param request ListPaymentsRequest message or plain object
         * @returns Promise
         */
        public listPayments(
            request: lnrpc.IListPaymentsRequest
        ): Promise<lnrpc.ListPaymentsResponse>;

        /**
         * Calls DeletePayment.
         * @param request DeletePaymentRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and DeletePaymentResponse
         */
        public deletePayment(
            request: lnrpc.IDeletePaymentRequest,
            callback: lnrpc.Lightning.DeletePaymentCallback
        ): void;

        /**
         * Calls DeletePayment.
         * @param request DeletePaymentRequest message or plain object
         * @returns Promise
         */
        public deletePayment(
            request: lnrpc.IDeletePaymentRequest
        ): Promise<lnrpc.DeletePaymentResponse>;

        /**
         * Calls DeleteAllPayments.
         * @param request DeleteAllPaymentsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and DeleteAllPaymentsResponse
         */
        public deleteAllPayments(
            request: lnrpc.IDeleteAllPaymentsRequest,
            callback: lnrpc.Lightning.DeleteAllPaymentsCallback
        ): void;

        /**
         * Calls DeleteAllPayments.
         * @param request DeleteAllPaymentsRequest message or plain object
         * @returns Promise
         */
        public deleteAllPayments(
            request: lnrpc.IDeleteAllPaymentsRequest
        ): Promise<lnrpc.DeleteAllPaymentsResponse>;

        /**
         * Calls DescribeGraph.
         * @param request ChannelGraphRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ChannelGraph
         */
        public describeGraph(
            request: lnrpc.IChannelGraphRequest,
            callback: lnrpc.Lightning.DescribeGraphCallback
        ): void;

        /**
         * Calls DescribeGraph.
         * @param request ChannelGraphRequest message or plain object
         * @returns Promise
         */
        public describeGraph(
            request: lnrpc.IChannelGraphRequest
        ): Promise<lnrpc.ChannelGraph>;

        /**
         * Calls GetNodeMetrics.
         * @param request NodeMetricsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and NodeMetricsResponse
         */
        public getNodeMetrics(
            request: lnrpc.INodeMetricsRequest,
            callback: lnrpc.Lightning.GetNodeMetricsCallback
        ): void;

        /**
         * Calls GetNodeMetrics.
         * @param request NodeMetricsRequest message or plain object
         * @returns Promise
         */
        public getNodeMetrics(
            request: lnrpc.INodeMetricsRequest
        ): Promise<lnrpc.NodeMetricsResponse>;

        /**
         * Calls GetChanInfo.
         * @param request ChanInfoRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ChannelEdge
         */
        public getChanInfo(
            request: lnrpc.IChanInfoRequest,
            callback: lnrpc.Lightning.GetChanInfoCallback
        ): void;

        /**
         * Calls GetChanInfo.
         * @param request ChanInfoRequest message or plain object
         * @returns Promise
         */
        public getChanInfo(
            request: lnrpc.IChanInfoRequest
        ): Promise<lnrpc.ChannelEdge>;

        /**
         * Calls GetNodeInfo.
         * @param request NodeInfoRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and NodeInfo
         */
        public getNodeInfo(
            request: lnrpc.INodeInfoRequest,
            callback: lnrpc.Lightning.GetNodeInfoCallback
        ): void;

        /**
         * Calls GetNodeInfo.
         * @param request NodeInfoRequest message or plain object
         * @returns Promise
         */
        public getNodeInfo(
            request: lnrpc.INodeInfoRequest
        ): Promise<lnrpc.NodeInfo>;

        /**
         * Calls QueryRoutes.
         * @param request QueryRoutesRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and QueryRoutesResponse
         */
        public queryRoutes(
            request: lnrpc.IQueryRoutesRequest,
            callback: lnrpc.Lightning.QueryRoutesCallback
        ): void;

        /**
         * Calls QueryRoutes.
         * @param request QueryRoutesRequest message or plain object
         * @returns Promise
         */
        public queryRoutes(
            request: lnrpc.IQueryRoutesRequest
        ): Promise<lnrpc.QueryRoutesResponse>;

        /**
         * Calls GetNetworkInfo.
         * @param request NetworkInfoRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and NetworkInfo
         */
        public getNetworkInfo(
            request: lnrpc.INetworkInfoRequest,
            callback: lnrpc.Lightning.GetNetworkInfoCallback
        ): void;

        /**
         * Calls GetNetworkInfo.
         * @param request NetworkInfoRequest message or plain object
         * @returns Promise
         */
        public getNetworkInfo(
            request: lnrpc.INetworkInfoRequest
        ): Promise<lnrpc.NetworkInfo>;

        /**
         * Calls StopDaemon.
         * @param request StopRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and StopResponse
         */
        public stopDaemon(
            request: lnrpc.IStopRequest,
            callback: lnrpc.Lightning.StopDaemonCallback
        ): void;

        /**
         * Calls StopDaemon.
         * @param request StopRequest message or plain object
         * @returns Promise
         */
        public stopDaemon(
            request: lnrpc.IStopRequest
        ): Promise<lnrpc.StopResponse>;

        /**
         * Calls SubscribeChannelGraph.
         * @param request GraphTopologySubscription message or plain object
         * @param callback Node-style callback called with the error, if any, and GraphTopologyUpdate
         */
        public subscribeChannelGraph(
            request: lnrpc.IGraphTopologySubscription,
            callback: lnrpc.Lightning.SubscribeChannelGraphCallback
        ): void;

        /**
         * Calls SubscribeChannelGraph.
         * @param request GraphTopologySubscription message or plain object
         * @returns Promise
         */
        public subscribeChannelGraph(
            request: lnrpc.IGraphTopologySubscription
        ): Promise<lnrpc.GraphTopologyUpdate>;

        /**
         * Calls DebugLevel.
         * @param request DebugLevelRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and DebugLevelResponse
         */
        public debugLevel(
            request: lnrpc.IDebugLevelRequest,
            callback: lnrpc.Lightning.DebugLevelCallback
        ): void;

        /**
         * Calls DebugLevel.
         * @param request DebugLevelRequest message or plain object
         * @returns Promise
         */
        public debugLevel(
            request: lnrpc.IDebugLevelRequest
        ): Promise<lnrpc.DebugLevelResponse>;

        /**
         * Calls FeeReport.
         * @param request FeeReportRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and FeeReportResponse
         */
        public feeReport(
            request: lnrpc.IFeeReportRequest,
            callback: lnrpc.Lightning.FeeReportCallback
        ): void;

        /**
         * Calls FeeReport.
         * @param request FeeReportRequest message or plain object
         * @returns Promise
         */
        public feeReport(
            request: lnrpc.IFeeReportRequest
        ): Promise<lnrpc.FeeReportResponse>;

        /**
         * Calls UpdateChannelPolicy.
         * @param request PolicyUpdateRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and PolicyUpdateResponse
         */
        public updateChannelPolicy(
            request: lnrpc.IPolicyUpdateRequest,
            callback: lnrpc.Lightning.UpdateChannelPolicyCallback
        ): void;

        /**
         * Calls UpdateChannelPolicy.
         * @param request PolicyUpdateRequest message or plain object
         * @returns Promise
         */
        public updateChannelPolicy(
            request: lnrpc.IPolicyUpdateRequest
        ): Promise<lnrpc.PolicyUpdateResponse>;

        /**
         * Calls ForwardingHistory.
         * @param request ForwardingHistoryRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ForwardingHistoryResponse
         */
        public forwardingHistory(
            request: lnrpc.IForwardingHistoryRequest,
            callback: lnrpc.Lightning.ForwardingHistoryCallback
        ): void;

        /**
         * Calls ForwardingHistory.
         * @param request ForwardingHistoryRequest message or plain object
         * @returns Promise
         */
        public forwardingHistory(
            request: lnrpc.IForwardingHistoryRequest
        ): Promise<lnrpc.ForwardingHistoryResponse>;

        /**
         * Calls ExportChannelBackup.
         * @param request ExportChannelBackupRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ChannelBackup
         */
        public exportChannelBackup(
            request: lnrpc.IExportChannelBackupRequest,
            callback: lnrpc.Lightning.ExportChannelBackupCallback
        ): void;

        /**
         * Calls ExportChannelBackup.
         * @param request ExportChannelBackupRequest message or plain object
         * @returns Promise
         */
        public exportChannelBackup(
            request: lnrpc.IExportChannelBackupRequest
        ): Promise<lnrpc.ChannelBackup>;

        /**
         * Calls ExportAllChannelBackups.
         * @param request ChanBackupExportRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ChanBackupSnapshot
         */
        public exportAllChannelBackups(
            request: lnrpc.IChanBackupExportRequest,
            callback: lnrpc.Lightning.ExportAllChannelBackupsCallback
        ): void;

        /**
         * Calls ExportAllChannelBackups.
         * @param request ChanBackupExportRequest message or plain object
         * @returns Promise
         */
        public exportAllChannelBackups(
            request: lnrpc.IChanBackupExportRequest
        ): Promise<lnrpc.ChanBackupSnapshot>;

        /**
         * Calls VerifyChanBackup.
         * @param request ChanBackupSnapshot message or plain object
         * @param callback Node-style callback called with the error, if any, and VerifyChanBackupResponse
         */
        public verifyChanBackup(
            request: lnrpc.IChanBackupSnapshot,
            callback: lnrpc.Lightning.VerifyChanBackupCallback
        ): void;

        /**
         * Calls VerifyChanBackup.
         * @param request ChanBackupSnapshot message or plain object
         * @returns Promise
         */
        public verifyChanBackup(
            request: lnrpc.IChanBackupSnapshot
        ): Promise<lnrpc.VerifyChanBackupResponse>;

        /**
         * Calls RestoreChannelBackups.
         * @param request RestoreChanBackupRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and RestoreBackupResponse
         */
        public restoreChannelBackups(
            request: lnrpc.IRestoreChanBackupRequest,
            callback: lnrpc.Lightning.RestoreChannelBackupsCallback
        ): void;

        /**
         * Calls RestoreChannelBackups.
         * @param request RestoreChanBackupRequest message or plain object
         * @returns Promise
         */
        public restoreChannelBackups(
            request: lnrpc.IRestoreChanBackupRequest
        ): Promise<lnrpc.RestoreBackupResponse>;

        /**
         * Calls SubscribeChannelBackups.
         * @param request ChannelBackupSubscription message or plain object
         * @param callback Node-style callback called with the error, if any, and ChanBackupSnapshot
         */
        public subscribeChannelBackups(
            request: lnrpc.IChannelBackupSubscription,
            callback: lnrpc.Lightning.SubscribeChannelBackupsCallback
        ): void;

        /**
         * Calls SubscribeChannelBackups.
         * @param request ChannelBackupSubscription message or plain object
         * @returns Promise
         */
        public subscribeChannelBackups(
            request: lnrpc.IChannelBackupSubscription
        ): Promise<lnrpc.ChanBackupSnapshot>;

        /**
         * Calls BakeMacaroon.
         * @param request BakeMacaroonRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and BakeMacaroonResponse
         */
        public bakeMacaroon(
            request: lnrpc.IBakeMacaroonRequest,
            callback: lnrpc.Lightning.BakeMacaroonCallback
        ): void;

        /**
         * Calls BakeMacaroon.
         * @param request BakeMacaroonRequest message or plain object
         * @returns Promise
         */
        public bakeMacaroon(
            request: lnrpc.IBakeMacaroonRequest
        ): Promise<lnrpc.BakeMacaroonResponse>;

        /**
         * Calls ListMacaroonIDs.
         * @param request ListMacaroonIDsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ListMacaroonIDsResponse
         */
        public listMacaroonIDs(
            request: lnrpc.IListMacaroonIDsRequest,
            callback: lnrpc.Lightning.ListMacaroonIDsCallback
        ): void;

        /**
         * Calls ListMacaroonIDs.
         * @param request ListMacaroonIDsRequest message or plain object
         * @returns Promise
         */
        public listMacaroonIDs(
            request: lnrpc.IListMacaroonIDsRequest
        ): Promise<lnrpc.ListMacaroonIDsResponse>;

        /**
         * Calls DeleteMacaroonID.
         * @param request DeleteMacaroonIDRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and DeleteMacaroonIDResponse
         */
        public deleteMacaroonID(
            request: lnrpc.IDeleteMacaroonIDRequest,
            callback: lnrpc.Lightning.DeleteMacaroonIDCallback
        ): void;

        /**
         * Calls DeleteMacaroonID.
         * @param request DeleteMacaroonIDRequest message or plain object
         * @returns Promise
         */
        public deleteMacaroonID(
            request: lnrpc.IDeleteMacaroonIDRequest
        ): Promise<lnrpc.DeleteMacaroonIDResponse>;

        /**
         * Calls ListPermissions.
         * @param request ListPermissionsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ListPermissionsResponse
         */
        public listPermissions(
            request: lnrpc.IListPermissionsRequest,
            callback: lnrpc.Lightning.ListPermissionsCallback
        ): void;

        /**
         * Calls ListPermissions.
         * @param request ListPermissionsRequest message or plain object
         * @returns Promise
         */
        public listPermissions(
            request: lnrpc.IListPermissionsRequest
        ): Promise<lnrpc.ListPermissionsResponse>;

        /**
         * Calls CheckMacaroonPermissions.
         * @param request CheckMacPermRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and CheckMacPermResponse
         */
        public checkMacaroonPermissions(
            request: lnrpc.ICheckMacPermRequest,
            callback: lnrpc.Lightning.CheckMacaroonPermissionsCallback
        ): void;

        /**
         * Calls CheckMacaroonPermissions.
         * @param request CheckMacPermRequest message or plain object
         * @returns Promise
         */
        public checkMacaroonPermissions(
            request: lnrpc.ICheckMacPermRequest
        ): Promise<lnrpc.CheckMacPermResponse>;

        /**
         * Calls RegisterRPCMiddleware.
         * @param request RPCMiddlewareResponse message or plain object
         * @param callback Node-style callback called with the error, if any, and RPCMiddlewareRequest
         */
        public registerRPCMiddleware(
            request: lnrpc.IRPCMiddlewareResponse,
            callback: lnrpc.Lightning.RegisterRPCMiddlewareCallback
        ): void;

        /**
         * Calls RegisterRPCMiddleware.
         * @param request RPCMiddlewareResponse message or plain object
         * @returns Promise
         */
        public registerRPCMiddleware(
            request: lnrpc.IRPCMiddlewareResponse
        ): Promise<lnrpc.RPCMiddlewareRequest>;

        /**
         * Calls SendCustomMessage.
         * @param request SendCustomMessageRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SendCustomMessageResponse
         */
        public sendCustomMessage(
            request: lnrpc.ISendCustomMessageRequest,
            callback: lnrpc.Lightning.SendCustomMessageCallback
        ): void;

        /**
         * Calls SendCustomMessage.
         * @param request SendCustomMessageRequest message or plain object
         * @returns Promise
         */
        public sendCustomMessage(
            request: lnrpc.ISendCustomMessageRequest
        ): Promise<lnrpc.SendCustomMessageResponse>;

        /**
         * Calls SubscribeCustomMessages.
         * @param request SubscribeCustomMessagesRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and CustomMessage
         */
        public subscribeCustomMessages(
            request: lnrpc.ISubscribeCustomMessagesRequest,
            callback: lnrpc.Lightning.SubscribeCustomMessagesCallback
        ): void;

        /**
         * Calls SubscribeCustomMessages.
         * @param request SubscribeCustomMessagesRequest message or plain object
         * @returns Promise
         */
        public subscribeCustomMessages(
            request: lnrpc.ISubscribeCustomMessagesRequest
        ): Promise<lnrpc.CustomMessage>;

        /**
         * Calls ListAliases.
         * @param request ListAliasesRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ListAliasesResponse
         */
        public listAliases(
            request: lnrpc.IListAliasesRequest,
            callback: lnrpc.Lightning.ListAliasesCallback
        ): void;

        /**
         * Calls ListAliases.
         * @param request ListAliasesRequest message or plain object
         * @returns Promise
         */
        public listAliases(
            request: lnrpc.IListAliasesRequest
        ): Promise<lnrpc.ListAliasesResponse>;

        /**
         * Calls LookupHtlcResolution.
         * @param request LookupHtlcResolutionRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and LookupHtlcResolutionResponse
         */
        public lookupHtlcResolution(
            request: lnrpc.ILookupHtlcResolutionRequest,
            callback: lnrpc.Lightning.LookupHtlcResolutionCallback
        ): void;

        /**
         * Calls LookupHtlcResolution.
         * @param request LookupHtlcResolutionRequest message or plain object
         * @returns Promise
         */
        public lookupHtlcResolution(
            request: lnrpc.ILookupHtlcResolutionRequest
        ): Promise<lnrpc.LookupHtlcResolutionResponse>;
    }

    namespace Lightning {
        /**
         * Callback as used by {@link lnrpc.Lightning#walletBalance}.
         * @param error Error, if any
         * @param [response] WalletBalanceResponse
         */
        type WalletBalanceCallback = (
            error: Error | null,
            response?: lnrpc.WalletBalanceResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#channelBalance}.
         * @param error Error, if any
         * @param [response] ChannelBalanceResponse
         */
        type ChannelBalanceCallback = (
            error: Error | null,
            response?: lnrpc.ChannelBalanceResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#getTransactions}.
         * @param error Error, if any
         * @param [response] TransactionDetails
         */
        type GetTransactionsCallback = (
            error: Error | null,
            response?: lnrpc.TransactionDetails
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#estimateFee}.
         * @param error Error, if any
         * @param [response] EstimateFeeResponse
         */
        type EstimateFeeCallback = (
            error: Error | null,
            response?: lnrpc.EstimateFeeResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#sendCoins}.
         * @param error Error, if any
         * @param [response] SendCoinsResponse
         */
        type SendCoinsCallback = (
            error: Error | null,
            response?: lnrpc.SendCoinsResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#listUnspent}.
         * @param error Error, if any
         * @param [response] ListUnspentResponse
         */
        type ListUnspentCallback = (
            error: Error | null,
            response?: lnrpc.ListUnspentResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#subscribeTransactions}.
         * @param error Error, if any
         * @param [response] Transaction
         */
        type SubscribeTransactionsCallback = (
            error: Error | null,
            response?: lnrpc.Transaction
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#sendMany}.
         * @param error Error, if any
         * @param [response] SendManyResponse
         */
        type SendManyCallback = (
            error: Error | null,
            response?: lnrpc.SendManyResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#newAddress}.
         * @param error Error, if any
         * @param [response] NewAddressResponse
         */
        type NewAddressCallback = (
            error: Error | null,
            response?: lnrpc.NewAddressResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#signMessage}.
         * @param error Error, if any
         * @param [response] SignMessageResponse
         */
        type SignMessageCallback = (
            error: Error | null,
            response?: lnrpc.SignMessageResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#verifyMessage}.
         * @param error Error, if any
         * @param [response] VerifyMessageResponse
         */
        type VerifyMessageCallback = (
            error: Error | null,
            response?: lnrpc.VerifyMessageResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#connectPeer}.
         * @param error Error, if any
         * @param [response] ConnectPeerResponse
         */
        type ConnectPeerCallback = (
            error: Error | null,
            response?: lnrpc.ConnectPeerResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#disconnectPeer}.
         * @param error Error, if any
         * @param [response] DisconnectPeerResponse
         */
        type DisconnectPeerCallback = (
            error: Error | null,
            response?: lnrpc.DisconnectPeerResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#listPeers}.
         * @param error Error, if any
         * @param [response] ListPeersResponse
         */
        type ListPeersCallback = (
            error: Error | null,
            response?: lnrpc.ListPeersResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#subscribePeerEvents}.
         * @param error Error, if any
         * @param [response] PeerEvent
         */
        type SubscribePeerEventsCallback = (
            error: Error | null,
            response?: lnrpc.PeerEvent
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#getInfo}.
         * @param error Error, if any
         * @param [response] GetInfoResponse
         */
        type GetInfoCallback = (
            error: Error | null,
            response?: lnrpc.GetInfoResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#getDebugInfo}.
         * @param error Error, if any
         * @param [response] GetDebugInfoResponse
         */
        type GetDebugInfoCallback = (
            error: Error | null,
            response?: lnrpc.GetDebugInfoResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#getRecoveryInfo}.
         * @param error Error, if any
         * @param [response] GetRecoveryInfoResponse
         */
        type GetRecoveryInfoCallback = (
            error: Error | null,
            response?: lnrpc.GetRecoveryInfoResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#pendingChannels}.
         * @param error Error, if any
         * @param [response] PendingChannelsResponse
         */
        type PendingChannelsCallback = (
            error: Error | null,
            response?: lnrpc.PendingChannelsResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#listChannels}.
         * @param error Error, if any
         * @param [response] ListChannelsResponse
         */
        type ListChannelsCallback = (
            error: Error | null,
            response?: lnrpc.ListChannelsResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#subscribeChannelEvents}.
         * @param error Error, if any
         * @param [response] ChannelEventUpdate
         */
        type SubscribeChannelEventsCallback = (
            error: Error | null,
            response?: lnrpc.ChannelEventUpdate
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#closedChannels}.
         * @param error Error, if any
         * @param [response] ClosedChannelsResponse
         */
        type ClosedChannelsCallback = (
            error: Error | null,
            response?: lnrpc.ClosedChannelsResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#openChannelSync}.
         * @param error Error, if any
         * @param [response] ChannelPoint
         */
        type OpenChannelSyncCallback = (
            error: Error | null,
            response?: lnrpc.ChannelPoint
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#openChannel}.
         * @param error Error, if any
         * @param [response] OpenStatusUpdate
         */
        type OpenChannelCallback = (
            error: Error | null,
            response?: lnrpc.OpenStatusUpdate
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#batchOpenChannel}.
         * @param error Error, if any
         * @param [response] BatchOpenChannelResponse
         */
        type BatchOpenChannelCallback = (
            error: Error | null,
            response?: lnrpc.BatchOpenChannelResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#fundingStateStep}.
         * @param error Error, if any
         * @param [response] FundingStateStepResp
         */
        type FundingStateStepCallback = (
            error: Error | null,
            response?: lnrpc.FundingStateStepResp
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#channelAcceptor}.
         * @param error Error, if any
         * @param [response] ChannelAcceptRequest
         */
        type ChannelAcceptorCallback = (
            error: Error | null,
            response?: lnrpc.ChannelAcceptRequest
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#closeChannel}.
         * @param error Error, if any
         * @param [response] CloseStatusUpdate
         */
        type CloseChannelCallback = (
            error: Error | null,
            response?: lnrpc.CloseStatusUpdate
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#abandonChannel}.
         * @param error Error, if any
         * @param [response] AbandonChannelResponse
         */
        type AbandonChannelCallback = (
            error: Error | null,
            response?: lnrpc.AbandonChannelResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#sendPayment}.
         * @param error Error, if any
         * @param [response] SendResponse
         */
        type SendPaymentCallback = (
            error: Error | null,
            response?: lnrpc.SendResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#sendPaymentSync}.
         * @param error Error, if any
         * @param [response] SendResponse
         */
        type SendPaymentSyncCallback = (
            error: Error | null,
            response?: lnrpc.SendResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#sendToRoute}.
         * @param error Error, if any
         * @param [response] SendResponse
         */
        type SendToRouteCallback = (
            error: Error | null,
            response?: lnrpc.SendResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#sendToRouteSync}.
         * @param error Error, if any
         * @param [response] SendResponse
         */
        type SendToRouteSyncCallback = (
            error: Error | null,
            response?: lnrpc.SendResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#addInvoice}.
         * @param error Error, if any
         * @param [response] AddInvoiceResponse
         */
        type AddInvoiceCallback = (
            error: Error | null,
            response?: lnrpc.AddInvoiceResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#listInvoices}.
         * @param error Error, if any
         * @param [response] ListInvoiceResponse
         */
        type ListInvoicesCallback = (
            error: Error | null,
            response?: lnrpc.ListInvoiceResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#lookupInvoice}.
         * @param error Error, if any
         * @param [response] Invoice
         */
        type LookupInvoiceCallback = (
            error: Error | null,
            response?: lnrpc.Invoice
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#subscribeInvoices}.
         * @param error Error, if any
         * @param [response] Invoice
         */
        type SubscribeInvoicesCallback = (
            error: Error | null,
            response?: lnrpc.Invoice
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#decodePayReq}.
         * @param error Error, if any
         * @param [response] PayReq
         */
        type DecodePayReqCallback = (
            error: Error | null,
            response?: lnrpc.PayReq
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#listPayments}.
         * @param error Error, if any
         * @param [response] ListPaymentsResponse
         */
        type ListPaymentsCallback = (
            error: Error | null,
            response?: lnrpc.ListPaymentsResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#deletePayment}.
         * @param error Error, if any
         * @param [response] DeletePaymentResponse
         */
        type DeletePaymentCallback = (
            error: Error | null,
            response?: lnrpc.DeletePaymentResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#deleteAllPayments}.
         * @param error Error, if any
         * @param [response] DeleteAllPaymentsResponse
         */
        type DeleteAllPaymentsCallback = (
            error: Error | null,
            response?: lnrpc.DeleteAllPaymentsResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#describeGraph}.
         * @param error Error, if any
         * @param [response] ChannelGraph
         */
        type DescribeGraphCallback = (
            error: Error | null,
            response?: lnrpc.ChannelGraph
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#getNodeMetrics}.
         * @param error Error, if any
         * @param [response] NodeMetricsResponse
         */
        type GetNodeMetricsCallback = (
            error: Error | null,
            response?: lnrpc.NodeMetricsResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#getChanInfo}.
         * @param error Error, if any
         * @param [response] ChannelEdge
         */
        type GetChanInfoCallback = (
            error: Error | null,
            response?: lnrpc.ChannelEdge
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#getNodeInfo}.
         * @param error Error, if any
         * @param [response] NodeInfo
         */
        type GetNodeInfoCallback = (
            error: Error | null,
            response?: lnrpc.NodeInfo
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#queryRoutes}.
         * @param error Error, if any
         * @param [response] QueryRoutesResponse
         */
        type QueryRoutesCallback = (
            error: Error | null,
            response?: lnrpc.QueryRoutesResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#getNetworkInfo}.
         * @param error Error, if any
         * @param [response] NetworkInfo
         */
        type GetNetworkInfoCallback = (
            error: Error | null,
            response?: lnrpc.NetworkInfo
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#stopDaemon}.
         * @param error Error, if any
         * @param [response] StopResponse
         */
        type StopDaemonCallback = (
            error: Error | null,
            response?: lnrpc.StopResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#subscribeChannelGraph}.
         * @param error Error, if any
         * @param [response] GraphTopologyUpdate
         */
        type SubscribeChannelGraphCallback = (
            error: Error | null,
            response?: lnrpc.GraphTopologyUpdate
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#debugLevel}.
         * @param error Error, if any
         * @param [response] DebugLevelResponse
         */
        type DebugLevelCallback = (
            error: Error | null,
            response?: lnrpc.DebugLevelResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#feeReport}.
         * @param error Error, if any
         * @param [response] FeeReportResponse
         */
        type FeeReportCallback = (
            error: Error | null,
            response?: lnrpc.FeeReportResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#updateChannelPolicy}.
         * @param error Error, if any
         * @param [response] PolicyUpdateResponse
         */
        type UpdateChannelPolicyCallback = (
            error: Error | null,
            response?: lnrpc.PolicyUpdateResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#forwardingHistory}.
         * @param error Error, if any
         * @param [response] ForwardingHistoryResponse
         */
        type ForwardingHistoryCallback = (
            error: Error | null,
            response?: lnrpc.ForwardingHistoryResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#exportChannelBackup}.
         * @param error Error, if any
         * @param [response] ChannelBackup
         */
        type ExportChannelBackupCallback = (
            error: Error | null,
            response?: lnrpc.ChannelBackup
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#exportAllChannelBackups}.
         * @param error Error, if any
         * @param [response] ChanBackupSnapshot
         */
        type ExportAllChannelBackupsCallback = (
            error: Error | null,
            response?: lnrpc.ChanBackupSnapshot
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#verifyChanBackup}.
         * @param error Error, if any
         * @param [response] VerifyChanBackupResponse
         */
        type VerifyChanBackupCallback = (
            error: Error | null,
            response?: lnrpc.VerifyChanBackupResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#restoreChannelBackups}.
         * @param error Error, if any
         * @param [response] RestoreBackupResponse
         */
        type RestoreChannelBackupsCallback = (
            error: Error | null,
            response?: lnrpc.RestoreBackupResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#subscribeChannelBackups}.
         * @param error Error, if any
         * @param [response] ChanBackupSnapshot
         */
        type SubscribeChannelBackupsCallback = (
            error: Error | null,
            response?: lnrpc.ChanBackupSnapshot
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#bakeMacaroon}.
         * @param error Error, if any
         * @param [response] BakeMacaroonResponse
         */
        type BakeMacaroonCallback = (
            error: Error | null,
            response?: lnrpc.BakeMacaroonResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#listMacaroonIDs}.
         * @param error Error, if any
         * @param [response] ListMacaroonIDsResponse
         */
        type ListMacaroonIDsCallback = (
            error: Error | null,
            response?: lnrpc.ListMacaroonIDsResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#deleteMacaroonID}.
         * @param error Error, if any
         * @param [response] DeleteMacaroonIDResponse
         */
        type DeleteMacaroonIDCallback = (
            error: Error | null,
            response?: lnrpc.DeleteMacaroonIDResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#listPermissions}.
         * @param error Error, if any
         * @param [response] ListPermissionsResponse
         */
        type ListPermissionsCallback = (
            error: Error | null,
            response?: lnrpc.ListPermissionsResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#checkMacaroonPermissions}.
         * @param error Error, if any
         * @param [response] CheckMacPermResponse
         */
        type CheckMacaroonPermissionsCallback = (
            error: Error | null,
            response?: lnrpc.CheckMacPermResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#registerRPCMiddleware}.
         * @param error Error, if any
         * @param [response] RPCMiddlewareRequest
         */
        type RegisterRPCMiddlewareCallback = (
            error: Error | null,
            response?: lnrpc.RPCMiddlewareRequest
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#sendCustomMessage}.
         * @param error Error, if any
         * @param [response] SendCustomMessageResponse
         */
        type SendCustomMessageCallback = (
            error: Error | null,
            response?: lnrpc.SendCustomMessageResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#subscribeCustomMessages}.
         * @param error Error, if any
         * @param [response] CustomMessage
         */
        type SubscribeCustomMessagesCallback = (
            error: Error | null,
            response?: lnrpc.CustomMessage
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#listAliases}.
         * @param error Error, if any
         * @param [response] ListAliasesResponse
         */
        type ListAliasesCallback = (
            error: Error | null,
            response?: lnrpc.ListAliasesResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.Lightning#lookupHtlcResolution}.
         * @param error Error, if any
         * @param [response] LookupHtlcResolutionResponse
         */
        type LookupHtlcResolutionCallback = (
            error: Error | null,
            response?: lnrpc.LookupHtlcResolutionResponse
        ) => void;
    }

    /** Properties of a LookupHtlcResolutionRequest. */
    interface ILookupHtlcResolutionRequest {
        /** LookupHtlcResolutionRequest chan_id */
        chan_id?: Long | null;

        /** LookupHtlcResolutionRequest htlc_index */
        htlc_index?: Long | null;
    }

    /** Represents a LookupHtlcResolutionRequest. */
    class LookupHtlcResolutionRequest implements ILookupHtlcResolutionRequest {
        /**
         * Constructs a new LookupHtlcResolutionRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ILookupHtlcResolutionRequest);

        /** LookupHtlcResolutionRequest chan_id. */
        public chan_id: Long;

        /** LookupHtlcResolutionRequest htlc_index. */
        public htlc_index: Long;

        /**
         * Creates a new LookupHtlcResolutionRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns LookupHtlcResolutionRequest instance
         */
        public static create(
            properties?: lnrpc.ILookupHtlcResolutionRequest
        ): lnrpc.LookupHtlcResolutionRequest;

        /**
         * Encodes the specified LookupHtlcResolutionRequest message. Does not implicitly {@link lnrpc.LookupHtlcResolutionRequest.verify|verify} messages.
         * @param message LookupHtlcResolutionRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ILookupHtlcResolutionRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified LookupHtlcResolutionRequest message, length delimited. Does not implicitly {@link lnrpc.LookupHtlcResolutionRequest.verify|verify} messages.
         * @param message LookupHtlcResolutionRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ILookupHtlcResolutionRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a LookupHtlcResolutionRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns LookupHtlcResolutionRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.LookupHtlcResolutionRequest;

        /**
         * Decodes a LookupHtlcResolutionRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns LookupHtlcResolutionRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.LookupHtlcResolutionRequest;

        /**
         * Verifies a LookupHtlcResolutionRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a LookupHtlcResolutionRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns LookupHtlcResolutionRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.LookupHtlcResolutionRequest;

        /**
         * Creates a plain object from a LookupHtlcResolutionRequest message. Also converts values to other types if specified.
         * @param message LookupHtlcResolutionRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.LookupHtlcResolutionRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this LookupHtlcResolutionRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for LookupHtlcResolutionRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a LookupHtlcResolutionResponse. */
    interface ILookupHtlcResolutionResponse {
        /** LookupHtlcResolutionResponse settled */
        settled?: boolean | null;

        /** LookupHtlcResolutionResponse offchain */
        offchain?: boolean | null;
    }

    /** Represents a LookupHtlcResolutionResponse. */
    class LookupHtlcResolutionResponse
        implements ILookupHtlcResolutionResponse
    {
        /**
         * Constructs a new LookupHtlcResolutionResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ILookupHtlcResolutionResponse);

        /** LookupHtlcResolutionResponse settled. */
        public settled: boolean;

        /** LookupHtlcResolutionResponse offchain. */
        public offchain: boolean;

        /**
         * Creates a new LookupHtlcResolutionResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns LookupHtlcResolutionResponse instance
         */
        public static create(
            properties?: lnrpc.ILookupHtlcResolutionResponse
        ): lnrpc.LookupHtlcResolutionResponse;

        /**
         * Encodes the specified LookupHtlcResolutionResponse message. Does not implicitly {@link lnrpc.LookupHtlcResolutionResponse.verify|verify} messages.
         * @param message LookupHtlcResolutionResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ILookupHtlcResolutionResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified LookupHtlcResolutionResponse message, length delimited. Does not implicitly {@link lnrpc.LookupHtlcResolutionResponse.verify|verify} messages.
         * @param message LookupHtlcResolutionResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ILookupHtlcResolutionResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a LookupHtlcResolutionResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns LookupHtlcResolutionResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.LookupHtlcResolutionResponse;

        /**
         * Decodes a LookupHtlcResolutionResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns LookupHtlcResolutionResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.LookupHtlcResolutionResponse;

        /**
         * Verifies a LookupHtlcResolutionResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a LookupHtlcResolutionResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns LookupHtlcResolutionResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.LookupHtlcResolutionResponse;

        /**
         * Creates a plain object from a LookupHtlcResolutionResponse message. Also converts values to other types if specified.
         * @param message LookupHtlcResolutionResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.LookupHtlcResolutionResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this LookupHtlcResolutionResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for LookupHtlcResolutionResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SubscribeCustomMessagesRequest. */
    interface ISubscribeCustomMessagesRequest {}

    /** Represents a SubscribeCustomMessagesRequest. */
    class SubscribeCustomMessagesRequest
        implements ISubscribeCustomMessagesRequest
    {
        /**
         * Constructs a new SubscribeCustomMessagesRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ISubscribeCustomMessagesRequest);

        /**
         * Creates a new SubscribeCustomMessagesRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SubscribeCustomMessagesRequest instance
         */
        public static create(
            properties?: lnrpc.ISubscribeCustomMessagesRequest
        ): lnrpc.SubscribeCustomMessagesRequest;

        /**
         * Encodes the specified SubscribeCustomMessagesRequest message. Does not implicitly {@link lnrpc.SubscribeCustomMessagesRequest.verify|verify} messages.
         * @param message SubscribeCustomMessagesRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ISubscribeCustomMessagesRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SubscribeCustomMessagesRequest message, length delimited. Does not implicitly {@link lnrpc.SubscribeCustomMessagesRequest.verify|verify} messages.
         * @param message SubscribeCustomMessagesRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ISubscribeCustomMessagesRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SubscribeCustomMessagesRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SubscribeCustomMessagesRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.SubscribeCustomMessagesRequest;

        /**
         * Decodes a SubscribeCustomMessagesRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SubscribeCustomMessagesRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.SubscribeCustomMessagesRequest;

        /**
         * Verifies a SubscribeCustomMessagesRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SubscribeCustomMessagesRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SubscribeCustomMessagesRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.SubscribeCustomMessagesRequest;

        /**
         * Creates a plain object from a SubscribeCustomMessagesRequest message. Also converts values to other types if specified.
         * @param message SubscribeCustomMessagesRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.SubscribeCustomMessagesRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SubscribeCustomMessagesRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SubscribeCustomMessagesRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a CustomMessage. */
    interface ICustomMessage {
        /** CustomMessage peer */
        peer?: Uint8Array | null;

        /** CustomMessage type */
        type?: number | null;

        /** CustomMessage data */
        data?: Uint8Array | null;
    }

    /** Represents a CustomMessage. */
    class CustomMessage implements ICustomMessage {
        /**
         * Constructs a new CustomMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ICustomMessage);

        /** CustomMessage peer. */
        public peer: Uint8Array;

        /** CustomMessage type. */
        public type: number;

        /** CustomMessage data. */
        public data: Uint8Array;

        /**
         * Creates a new CustomMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns CustomMessage instance
         */
        public static create(
            properties?: lnrpc.ICustomMessage
        ): lnrpc.CustomMessage;

        /**
         * Encodes the specified CustomMessage message. Does not implicitly {@link lnrpc.CustomMessage.verify|verify} messages.
         * @param message CustomMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ICustomMessage,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified CustomMessage message, length delimited. Does not implicitly {@link lnrpc.CustomMessage.verify|verify} messages.
         * @param message CustomMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ICustomMessage,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a CustomMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns CustomMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.CustomMessage;

        /**
         * Decodes a CustomMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns CustomMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.CustomMessage;

        /**
         * Verifies a CustomMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a CustomMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns CustomMessage
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.CustomMessage;

        /**
         * Creates a plain object from a CustomMessage message. Also converts values to other types if specified.
         * @param message CustomMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.CustomMessage,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this CustomMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for CustomMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SendCustomMessageRequest. */
    interface ISendCustomMessageRequest {
        /** SendCustomMessageRequest peer */
        peer?: Uint8Array | null;

        /** SendCustomMessageRequest type */
        type?: number | null;

        /** SendCustomMessageRequest data */
        data?: Uint8Array | null;
    }

    /** Represents a SendCustomMessageRequest. */
    class SendCustomMessageRequest implements ISendCustomMessageRequest {
        /**
         * Constructs a new SendCustomMessageRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ISendCustomMessageRequest);

        /** SendCustomMessageRequest peer. */
        public peer: Uint8Array;

        /** SendCustomMessageRequest type. */
        public type: number;

        /** SendCustomMessageRequest data. */
        public data: Uint8Array;

        /**
         * Creates a new SendCustomMessageRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SendCustomMessageRequest instance
         */
        public static create(
            properties?: lnrpc.ISendCustomMessageRequest
        ): lnrpc.SendCustomMessageRequest;

        /**
         * Encodes the specified SendCustomMessageRequest message. Does not implicitly {@link lnrpc.SendCustomMessageRequest.verify|verify} messages.
         * @param message SendCustomMessageRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ISendCustomMessageRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SendCustomMessageRequest message, length delimited. Does not implicitly {@link lnrpc.SendCustomMessageRequest.verify|verify} messages.
         * @param message SendCustomMessageRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ISendCustomMessageRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SendCustomMessageRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SendCustomMessageRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.SendCustomMessageRequest;

        /**
         * Decodes a SendCustomMessageRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SendCustomMessageRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.SendCustomMessageRequest;

        /**
         * Verifies a SendCustomMessageRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SendCustomMessageRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SendCustomMessageRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.SendCustomMessageRequest;

        /**
         * Creates a plain object from a SendCustomMessageRequest message. Also converts values to other types if specified.
         * @param message SendCustomMessageRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.SendCustomMessageRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SendCustomMessageRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SendCustomMessageRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SendCustomMessageResponse. */
    interface ISendCustomMessageResponse {}

    /** Represents a SendCustomMessageResponse. */
    class SendCustomMessageResponse implements ISendCustomMessageResponse {
        /**
         * Constructs a new SendCustomMessageResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ISendCustomMessageResponse);

        /**
         * Creates a new SendCustomMessageResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SendCustomMessageResponse instance
         */
        public static create(
            properties?: lnrpc.ISendCustomMessageResponse
        ): lnrpc.SendCustomMessageResponse;

        /**
         * Encodes the specified SendCustomMessageResponse message. Does not implicitly {@link lnrpc.SendCustomMessageResponse.verify|verify} messages.
         * @param message SendCustomMessageResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ISendCustomMessageResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SendCustomMessageResponse message, length delimited. Does not implicitly {@link lnrpc.SendCustomMessageResponse.verify|verify} messages.
         * @param message SendCustomMessageResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ISendCustomMessageResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SendCustomMessageResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SendCustomMessageResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.SendCustomMessageResponse;

        /**
         * Decodes a SendCustomMessageResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SendCustomMessageResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.SendCustomMessageResponse;

        /**
         * Verifies a SendCustomMessageResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SendCustomMessageResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SendCustomMessageResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.SendCustomMessageResponse;

        /**
         * Creates a plain object from a SendCustomMessageResponse message. Also converts values to other types if specified.
         * @param message SendCustomMessageResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.SendCustomMessageResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SendCustomMessageResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SendCustomMessageResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an Utxo. */
    interface IUtxo {
        /** Utxo address_type */
        address_type?: lnrpc.AddressType | null;

        /** Utxo address */
        address?: string | null;

        /** Utxo amount_sat */
        amount_sat?: Long | null;

        /** Utxo pk_script */
        pk_script?: string | null;

        /** Utxo outpoint */
        outpoint?: lnrpc.IOutPoint | null;

        /** Utxo confirmations */
        confirmations?: Long | null;
    }

    /** Represents an Utxo. */
    class Utxo implements IUtxo {
        /**
         * Constructs a new Utxo.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IUtxo);

        /** Utxo address_type. */
        public address_type: lnrpc.AddressType;

        /** Utxo address. */
        public address: string;

        /** Utxo amount_sat. */
        public amount_sat: Long;

        /** Utxo pk_script. */
        public pk_script: string;

        /** Utxo outpoint. */
        public outpoint?: lnrpc.IOutPoint | null;

        /** Utxo confirmations. */
        public confirmations: Long;

        /**
         * Creates a new Utxo instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Utxo instance
         */
        public static create(properties?: lnrpc.IUtxo): lnrpc.Utxo;

        /**
         * Encodes the specified Utxo message. Does not implicitly {@link lnrpc.Utxo.verify|verify} messages.
         * @param message Utxo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IUtxo,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Utxo message, length delimited. Does not implicitly {@link lnrpc.Utxo.verify|verify} messages.
         * @param message Utxo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IUtxo,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an Utxo message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Utxo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.Utxo;

        /**
         * Decodes an Utxo message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Utxo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.Utxo;

        /**
         * Verifies an Utxo message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an Utxo message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Utxo
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.Utxo;

        /**
         * Creates a plain object from an Utxo message. Also converts values to other types if specified.
         * @param message Utxo
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.Utxo,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Utxo to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Utxo
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** OutputScriptType enum. */
    enum OutputScriptType {
        SCRIPT_TYPE_PUBKEY_HASH = 0,
        SCRIPT_TYPE_SCRIPT_HASH = 1,
        SCRIPT_TYPE_WITNESS_V0_PUBKEY_HASH = 2,
        SCRIPT_TYPE_WITNESS_V0_SCRIPT_HASH = 3,
        SCRIPT_TYPE_PUBKEY = 4,
        SCRIPT_TYPE_MULTISIG = 5,
        SCRIPT_TYPE_NULLDATA = 6,
        SCRIPT_TYPE_NON_STANDARD = 7,
        SCRIPT_TYPE_WITNESS_UNKNOWN = 8,
        SCRIPT_TYPE_WITNESS_V1_TAPROOT = 9
    }

    /** Properties of an OutputDetail. */
    interface IOutputDetail {
        /** OutputDetail output_type */
        output_type?: lnrpc.OutputScriptType | null;

        /** OutputDetail address */
        address?: string | null;

        /** OutputDetail pk_script */
        pk_script?: string | null;

        /** OutputDetail output_index */
        output_index?: Long | null;

        /** OutputDetail amount */
        amount?: Long | null;

        /** OutputDetail is_our_address */
        is_our_address?: boolean | null;
    }

    /** Represents an OutputDetail. */
    class OutputDetail implements IOutputDetail {
        /**
         * Constructs a new OutputDetail.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IOutputDetail);

        /** OutputDetail output_type. */
        public output_type: lnrpc.OutputScriptType;

        /** OutputDetail address. */
        public address: string;

        /** OutputDetail pk_script. */
        public pk_script: string;

        /** OutputDetail output_index. */
        public output_index: Long;

        /** OutputDetail amount. */
        public amount: Long;

        /** OutputDetail is_our_address. */
        public is_our_address: boolean;

        /**
         * Creates a new OutputDetail instance using the specified properties.
         * @param [properties] Properties to set
         * @returns OutputDetail instance
         */
        public static create(
            properties?: lnrpc.IOutputDetail
        ): lnrpc.OutputDetail;

        /**
         * Encodes the specified OutputDetail message. Does not implicitly {@link lnrpc.OutputDetail.verify|verify} messages.
         * @param message OutputDetail message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IOutputDetail,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified OutputDetail message, length delimited. Does not implicitly {@link lnrpc.OutputDetail.verify|verify} messages.
         * @param message OutputDetail message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IOutputDetail,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an OutputDetail message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns OutputDetail
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.OutputDetail;

        /**
         * Decodes an OutputDetail message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns OutputDetail
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.OutputDetail;

        /**
         * Verifies an OutputDetail message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an OutputDetail message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns OutputDetail
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.OutputDetail;

        /**
         * Creates a plain object from an OutputDetail message. Also converts values to other types if specified.
         * @param message OutputDetail
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.OutputDetail,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this OutputDetail to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for OutputDetail
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a Transaction. */
    interface ITransaction {
        /** Transaction tx_hash */
        tx_hash?: string | null;

        /** Transaction amount */
        amount?: Long | null;

        /** Transaction num_confirmations */
        num_confirmations?: number | null;

        /** Transaction block_hash */
        block_hash?: string | null;

        /** Transaction block_height */
        block_height?: number | null;

        /** Transaction time_stamp */
        time_stamp?: Long | null;

        /** Transaction total_fees */
        total_fees?: Long | null;

        /** Transaction dest_addresses */
        dest_addresses?: string[] | null;

        /** Transaction output_details */
        output_details?: lnrpc.IOutputDetail[] | null;

        /** Transaction raw_tx_hex */
        raw_tx_hex?: string | null;

        /** Transaction label */
        label?: string | null;

        /** Transaction previous_outpoints */
        previous_outpoints?: lnrpc.IPreviousOutPoint[] | null;
    }

    /** Represents a Transaction. */
    class Transaction implements ITransaction {
        /**
         * Constructs a new Transaction.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ITransaction);

        /** Transaction tx_hash. */
        public tx_hash: string;

        /** Transaction amount. */
        public amount: Long;

        /** Transaction num_confirmations. */
        public num_confirmations: number;

        /** Transaction block_hash. */
        public block_hash: string;

        /** Transaction block_height. */
        public block_height: number;

        /** Transaction time_stamp. */
        public time_stamp: Long;

        /** Transaction total_fees. */
        public total_fees: Long;

        /** Transaction dest_addresses. */
        public dest_addresses: string[];

        /** Transaction output_details. */
        public output_details: lnrpc.IOutputDetail[];

        /** Transaction raw_tx_hex. */
        public raw_tx_hex: string;

        /** Transaction label. */
        public label: string;

        /** Transaction previous_outpoints. */
        public previous_outpoints: lnrpc.IPreviousOutPoint[];

        /**
         * Creates a new Transaction instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Transaction instance
         */
        public static create(
            properties?: lnrpc.ITransaction
        ): lnrpc.Transaction;

        /**
         * Encodes the specified Transaction message. Does not implicitly {@link lnrpc.Transaction.verify|verify} messages.
         * @param message Transaction message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ITransaction,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Transaction message, length delimited. Does not implicitly {@link lnrpc.Transaction.verify|verify} messages.
         * @param message Transaction message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ITransaction,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a Transaction message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Transaction
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.Transaction;

        /**
         * Decodes a Transaction message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Transaction
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.Transaction;

        /**
         * Verifies a Transaction message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a Transaction message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Transaction
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.Transaction;

        /**
         * Creates a plain object from a Transaction message. Also converts values to other types if specified.
         * @param message Transaction
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.Transaction,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Transaction to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Transaction
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetTransactionsRequest. */
    interface IGetTransactionsRequest {
        /** GetTransactionsRequest start_height */
        start_height?: number | null;

        /** GetTransactionsRequest end_height */
        end_height?: number | null;

        /** GetTransactionsRequest account */
        account?: string | null;
    }

    /** Represents a GetTransactionsRequest. */
    class GetTransactionsRequest implements IGetTransactionsRequest {
        /**
         * Constructs a new GetTransactionsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IGetTransactionsRequest);

        /** GetTransactionsRequest start_height. */
        public start_height: number;

        /** GetTransactionsRequest end_height. */
        public end_height: number;

        /** GetTransactionsRequest account. */
        public account: string;

        /**
         * Creates a new GetTransactionsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetTransactionsRequest instance
         */
        public static create(
            properties?: lnrpc.IGetTransactionsRequest
        ): lnrpc.GetTransactionsRequest;

        /**
         * Encodes the specified GetTransactionsRequest message. Does not implicitly {@link lnrpc.GetTransactionsRequest.verify|verify} messages.
         * @param message GetTransactionsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IGetTransactionsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetTransactionsRequest message, length delimited. Does not implicitly {@link lnrpc.GetTransactionsRequest.verify|verify} messages.
         * @param message GetTransactionsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IGetTransactionsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetTransactionsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetTransactionsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.GetTransactionsRequest;

        /**
         * Decodes a GetTransactionsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetTransactionsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.GetTransactionsRequest;

        /**
         * Verifies a GetTransactionsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetTransactionsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetTransactionsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.GetTransactionsRequest;

        /**
         * Creates a plain object from a GetTransactionsRequest message. Also converts values to other types if specified.
         * @param message GetTransactionsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.GetTransactionsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetTransactionsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetTransactionsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a TransactionDetails. */
    interface ITransactionDetails {
        /** TransactionDetails transactions */
        transactions?: lnrpc.ITransaction[] | null;
    }

    /** Represents a TransactionDetails. */
    class TransactionDetails implements ITransactionDetails {
        /**
         * Constructs a new TransactionDetails.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ITransactionDetails);

        /** TransactionDetails transactions. */
        public transactions: lnrpc.ITransaction[];

        /**
         * Creates a new TransactionDetails instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TransactionDetails instance
         */
        public static create(
            properties?: lnrpc.ITransactionDetails
        ): lnrpc.TransactionDetails;

        /**
         * Encodes the specified TransactionDetails message. Does not implicitly {@link lnrpc.TransactionDetails.verify|verify} messages.
         * @param message TransactionDetails message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ITransactionDetails,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified TransactionDetails message, length delimited. Does not implicitly {@link lnrpc.TransactionDetails.verify|verify} messages.
         * @param message TransactionDetails message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ITransactionDetails,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a TransactionDetails message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TransactionDetails
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.TransactionDetails;

        /**
         * Decodes a TransactionDetails message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TransactionDetails
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.TransactionDetails;

        /**
         * Verifies a TransactionDetails message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a TransactionDetails message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TransactionDetails
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.TransactionDetails;

        /**
         * Creates a plain object from a TransactionDetails message. Also converts values to other types if specified.
         * @param message TransactionDetails
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.TransactionDetails,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this TransactionDetails to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TransactionDetails
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a FeeLimit. */
    interface IFeeLimit {
        /** FeeLimit fixed */
        fixed?: Long | null;

        /** FeeLimit fixed_msat */
        fixed_msat?: Long | null;

        /** FeeLimit percent */
        percent?: Long | null;
    }

    /** Represents a FeeLimit. */
    class FeeLimit implements IFeeLimit {
        /**
         * Constructs a new FeeLimit.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IFeeLimit);

        /** FeeLimit fixed. */
        public fixed?: Long | null;

        /** FeeLimit fixed_msat. */
        public fixed_msat?: Long | null;

        /** FeeLimit percent. */
        public percent?: Long | null;

        /** FeeLimit limit. */
        public limit?: 'fixed' | 'fixed_msat' | 'percent';

        /**
         * Creates a new FeeLimit instance using the specified properties.
         * @param [properties] Properties to set
         * @returns FeeLimit instance
         */
        public static create(properties?: lnrpc.IFeeLimit): lnrpc.FeeLimit;

        /**
         * Encodes the specified FeeLimit message. Does not implicitly {@link lnrpc.FeeLimit.verify|verify} messages.
         * @param message FeeLimit message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IFeeLimit,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified FeeLimit message, length delimited. Does not implicitly {@link lnrpc.FeeLimit.verify|verify} messages.
         * @param message FeeLimit message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IFeeLimit,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a FeeLimit message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns FeeLimit
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.FeeLimit;

        /**
         * Decodes a FeeLimit message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns FeeLimit
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.FeeLimit;

        /**
         * Verifies a FeeLimit message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a FeeLimit message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns FeeLimit
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.FeeLimit;

        /**
         * Creates a plain object from a FeeLimit message. Also converts values to other types if specified.
         * @param message FeeLimit
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.FeeLimit,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this FeeLimit to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for FeeLimit
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SendRequest. */
    interface ISendRequest {
        /** SendRequest dest */
        dest?: Uint8Array | null;

        /** SendRequest dest_string */
        dest_string?: string | null;

        /** SendRequest amt */
        amt?: Long | null;

        /** SendRequest amt_msat */
        amt_msat?: Long | null;

        /** SendRequest payment_hash */
        payment_hash?: Uint8Array | null;

        /** SendRequest payment_hash_string */
        payment_hash_string?: string | null;

        /** SendRequest payment_request */
        payment_request?: string | null;

        /** SendRequest final_cltv_delta */
        final_cltv_delta?: number | null;

        /** SendRequest fee_limit */
        fee_limit?: lnrpc.IFeeLimit | null;

        /** SendRequest outgoing_chan_id */
        outgoing_chan_id?: Long | null;

        /** SendRequest last_hop_pubkey */
        last_hop_pubkey?: Uint8Array | null;

        /** SendRequest cltv_limit */
        cltv_limit?: number | null;

        /** SendRequest dest_custom_records */
        dest_custom_records?: { [k: string]: Uint8Array } | null;

        /** SendRequest allow_self_payment */
        allow_self_payment?: boolean | null;

        /** SendRequest dest_features */
        dest_features?: lnrpc.FeatureBit[] | null;

        /** SendRequest payment_addr */
        payment_addr?: Uint8Array | null;
    }

    /** Represents a SendRequest. */
    class SendRequest implements ISendRequest {
        /**
         * Constructs a new SendRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ISendRequest);

        /** SendRequest dest. */
        public dest: Uint8Array;

        /** SendRequest dest_string. */
        public dest_string: string;

        /** SendRequest amt. */
        public amt: Long;

        /** SendRequest amt_msat. */
        public amt_msat: Long;

        /** SendRequest payment_hash. */
        public payment_hash: Uint8Array;

        /** SendRequest payment_hash_string. */
        public payment_hash_string: string;

        /** SendRequest payment_request. */
        public payment_request: string;

        /** SendRequest final_cltv_delta. */
        public final_cltv_delta: number;

        /** SendRequest fee_limit. */
        public fee_limit?: lnrpc.IFeeLimit | null;

        /** SendRequest outgoing_chan_id. */
        public outgoing_chan_id: Long;

        /** SendRequest last_hop_pubkey. */
        public last_hop_pubkey: Uint8Array;

        /** SendRequest cltv_limit. */
        public cltv_limit: number;

        /** SendRequest dest_custom_records. */
        public dest_custom_records: { [k: string]: Uint8Array };

        /** SendRequest allow_self_payment. */
        public allow_self_payment: boolean;

        /** SendRequest dest_features. */
        public dest_features: lnrpc.FeatureBit[];

        /** SendRequest payment_addr. */
        public payment_addr: Uint8Array;

        /**
         * Creates a new SendRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SendRequest instance
         */
        public static create(
            properties?: lnrpc.ISendRequest
        ): lnrpc.SendRequest;

        /**
         * Encodes the specified SendRequest message. Does not implicitly {@link lnrpc.SendRequest.verify|verify} messages.
         * @param message SendRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ISendRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SendRequest message, length delimited. Does not implicitly {@link lnrpc.SendRequest.verify|verify} messages.
         * @param message SendRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ISendRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SendRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SendRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.SendRequest;

        /**
         * Decodes a SendRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SendRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.SendRequest;

        /**
         * Verifies a SendRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SendRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SendRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.SendRequest;

        /**
         * Creates a plain object from a SendRequest message. Also converts values to other types if specified.
         * @param message SendRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.SendRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SendRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SendRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SendResponse. */
    interface ISendResponse {
        /** SendResponse payment_error */
        payment_error?: string | null;

        /** SendResponse payment_preimage */
        payment_preimage?: Uint8Array | null;

        /** SendResponse payment_route */
        payment_route?: lnrpc.IRoute | null;

        /** SendResponse payment_hash */
        payment_hash?: Uint8Array | null;
    }

    /** Represents a SendResponse. */
    class SendResponse implements ISendResponse {
        /**
         * Constructs a new SendResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ISendResponse);

        /** SendResponse payment_error. */
        public payment_error: string;

        /** SendResponse payment_preimage. */
        public payment_preimage: Uint8Array;

        /** SendResponse payment_route. */
        public payment_route?: lnrpc.IRoute | null;

        /** SendResponse payment_hash. */
        public payment_hash: Uint8Array;

        /**
         * Creates a new SendResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SendResponse instance
         */
        public static create(
            properties?: lnrpc.ISendResponse
        ): lnrpc.SendResponse;

        /**
         * Encodes the specified SendResponse message. Does not implicitly {@link lnrpc.SendResponse.verify|verify} messages.
         * @param message SendResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ISendResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SendResponse message, length delimited. Does not implicitly {@link lnrpc.SendResponse.verify|verify} messages.
         * @param message SendResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ISendResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SendResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SendResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.SendResponse;

        /**
         * Decodes a SendResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SendResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.SendResponse;

        /**
         * Verifies a SendResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SendResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SendResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.SendResponse;

        /**
         * Creates a plain object from a SendResponse message. Also converts values to other types if specified.
         * @param message SendResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.SendResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SendResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SendResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SendToRouteRequest. */
    interface ISendToRouteRequest {
        /** SendToRouteRequest payment_hash */
        payment_hash?: Uint8Array | null;

        /** SendToRouteRequest payment_hash_string */
        payment_hash_string?: string | null;

        /** SendToRouteRequest route */
        route?: lnrpc.IRoute | null;
    }

    /** Represents a SendToRouteRequest. */
    class SendToRouteRequest implements ISendToRouteRequest {
        /**
         * Constructs a new SendToRouteRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ISendToRouteRequest);

        /** SendToRouteRequest payment_hash. */
        public payment_hash: Uint8Array;

        /** SendToRouteRequest payment_hash_string. */
        public payment_hash_string: string;

        /** SendToRouteRequest route. */
        public route?: lnrpc.IRoute | null;

        /**
         * Creates a new SendToRouteRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SendToRouteRequest instance
         */
        public static create(
            properties?: lnrpc.ISendToRouteRequest
        ): lnrpc.SendToRouteRequest;

        /**
         * Encodes the specified SendToRouteRequest message. Does not implicitly {@link lnrpc.SendToRouteRequest.verify|verify} messages.
         * @param message SendToRouteRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ISendToRouteRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SendToRouteRequest message, length delimited. Does not implicitly {@link lnrpc.SendToRouteRequest.verify|verify} messages.
         * @param message SendToRouteRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ISendToRouteRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SendToRouteRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SendToRouteRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.SendToRouteRequest;

        /**
         * Decodes a SendToRouteRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SendToRouteRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.SendToRouteRequest;

        /**
         * Verifies a SendToRouteRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SendToRouteRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SendToRouteRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.SendToRouteRequest;

        /**
         * Creates a plain object from a SendToRouteRequest message. Also converts values to other types if specified.
         * @param message SendToRouteRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.SendToRouteRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SendToRouteRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SendToRouteRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChannelAcceptRequest. */
    interface IChannelAcceptRequest {
        /** ChannelAcceptRequest node_pubkey */
        node_pubkey?: Uint8Array | null;

        /** ChannelAcceptRequest chain_hash */
        chain_hash?: Uint8Array | null;

        /** ChannelAcceptRequest pending_chan_id */
        pending_chan_id?: Uint8Array | null;

        /** ChannelAcceptRequest funding_amt */
        funding_amt?: Long | null;

        /** ChannelAcceptRequest push_amt */
        push_amt?: Long | null;

        /** ChannelAcceptRequest dust_limit */
        dust_limit?: Long | null;

        /** ChannelAcceptRequest max_value_in_flight */
        max_value_in_flight?: Long | null;

        /** ChannelAcceptRequest channel_reserve */
        channel_reserve?: Long | null;

        /** ChannelAcceptRequest min_htlc */
        min_htlc?: Long | null;

        /** ChannelAcceptRequest fee_per_kw */
        fee_per_kw?: Long | null;

        /** ChannelAcceptRequest csv_delay */
        csv_delay?: number | null;

        /** ChannelAcceptRequest max_accepted_htlcs */
        max_accepted_htlcs?: number | null;

        /** ChannelAcceptRequest channel_flags */
        channel_flags?: number | null;

        /** ChannelAcceptRequest commitment_type */
        commitment_type?: lnrpc.CommitmentType | null;

        /** ChannelAcceptRequest wants_zero_conf */
        wants_zero_conf?: boolean | null;

        /** ChannelAcceptRequest wants_scid_alias */
        wants_scid_alias?: boolean | null;
    }

    /** Represents a ChannelAcceptRequest. */
    class ChannelAcceptRequest implements IChannelAcceptRequest {
        /**
         * Constructs a new ChannelAcceptRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelAcceptRequest);

        /** ChannelAcceptRequest node_pubkey. */
        public node_pubkey: Uint8Array;

        /** ChannelAcceptRequest chain_hash. */
        public chain_hash: Uint8Array;

        /** ChannelAcceptRequest pending_chan_id. */
        public pending_chan_id: Uint8Array;

        /** ChannelAcceptRequest funding_amt. */
        public funding_amt: Long;

        /** ChannelAcceptRequest push_amt. */
        public push_amt: Long;

        /** ChannelAcceptRequest dust_limit. */
        public dust_limit: Long;

        /** ChannelAcceptRequest max_value_in_flight. */
        public max_value_in_flight: Long;

        /** ChannelAcceptRequest channel_reserve. */
        public channel_reserve: Long;

        /** ChannelAcceptRequest min_htlc. */
        public min_htlc: Long;

        /** ChannelAcceptRequest fee_per_kw. */
        public fee_per_kw: Long;

        /** ChannelAcceptRequest csv_delay. */
        public csv_delay: number;

        /** ChannelAcceptRequest max_accepted_htlcs. */
        public max_accepted_htlcs: number;

        /** ChannelAcceptRequest channel_flags. */
        public channel_flags: number;

        /** ChannelAcceptRequest commitment_type. */
        public commitment_type: lnrpc.CommitmentType;

        /** ChannelAcceptRequest wants_zero_conf. */
        public wants_zero_conf: boolean;

        /** ChannelAcceptRequest wants_scid_alias. */
        public wants_scid_alias: boolean;

        /**
         * Creates a new ChannelAcceptRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelAcceptRequest instance
         */
        public static create(
            properties?: lnrpc.IChannelAcceptRequest
        ): lnrpc.ChannelAcceptRequest;

        /**
         * Encodes the specified ChannelAcceptRequest message. Does not implicitly {@link lnrpc.ChannelAcceptRequest.verify|verify} messages.
         * @param message ChannelAcceptRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelAcceptRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelAcceptRequest message, length delimited. Does not implicitly {@link lnrpc.ChannelAcceptRequest.verify|verify} messages.
         * @param message ChannelAcceptRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelAcceptRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelAcceptRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelAcceptRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelAcceptRequest;

        /**
         * Decodes a ChannelAcceptRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelAcceptRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelAcceptRequest;

        /**
         * Verifies a ChannelAcceptRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelAcceptRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelAcceptRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelAcceptRequest;

        /**
         * Creates a plain object from a ChannelAcceptRequest message. Also converts values to other types if specified.
         * @param message ChannelAcceptRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelAcceptRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelAcceptRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelAcceptRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChannelAcceptResponse. */
    interface IChannelAcceptResponse {
        /** ChannelAcceptResponse accept */
        accept?: boolean | null;

        /** ChannelAcceptResponse pending_chan_id */
        pending_chan_id?: Uint8Array | null;

        /** ChannelAcceptResponse error */
        error?: string | null;

        /** ChannelAcceptResponse upfront_shutdown */
        upfront_shutdown?: string | null;

        /** ChannelAcceptResponse csv_delay */
        csv_delay?: number | null;

        /** ChannelAcceptResponse reserve_sat */
        reserve_sat?: Long | null;

        /** ChannelAcceptResponse in_flight_max_msat */
        in_flight_max_msat?: Long | null;

        /** ChannelAcceptResponse max_htlc_count */
        max_htlc_count?: number | null;

        /** ChannelAcceptResponse min_htlc_in */
        min_htlc_in?: Long | null;

        /** ChannelAcceptResponse min_accept_depth */
        min_accept_depth?: number | null;

        /** ChannelAcceptResponse zero_conf */
        zero_conf?: boolean | null;
    }

    /** Represents a ChannelAcceptResponse. */
    class ChannelAcceptResponse implements IChannelAcceptResponse {
        /**
         * Constructs a new ChannelAcceptResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelAcceptResponse);

        /** ChannelAcceptResponse accept. */
        public accept: boolean;

        /** ChannelAcceptResponse pending_chan_id. */
        public pending_chan_id: Uint8Array;

        /** ChannelAcceptResponse error. */
        public error: string;

        /** ChannelAcceptResponse upfront_shutdown. */
        public upfront_shutdown: string;

        /** ChannelAcceptResponse csv_delay. */
        public csv_delay: number;

        /** ChannelAcceptResponse reserve_sat. */
        public reserve_sat: Long;

        /** ChannelAcceptResponse in_flight_max_msat. */
        public in_flight_max_msat: Long;

        /** ChannelAcceptResponse max_htlc_count. */
        public max_htlc_count: number;

        /** ChannelAcceptResponse min_htlc_in. */
        public min_htlc_in: Long;

        /** ChannelAcceptResponse min_accept_depth. */
        public min_accept_depth: number;

        /** ChannelAcceptResponse zero_conf. */
        public zero_conf: boolean;

        /**
         * Creates a new ChannelAcceptResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelAcceptResponse instance
         */
        public static create(
            properties?: lnrpc.IChannelAcceptResponse
        ): lnrpc.ChannelAcceptResponse;

        /**
         * Encodes the specified ChannelAcceptResponse message. Does not implicitly {@link lnrpc.ChannelAcceptResponse.verify|verify} messages.
         * @param message ChannelAcceptResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelAcceptResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelAcceptResponse message, length delimited. Does not implicitly {@link lnrpc.ChannelAcceptResponse.verify|verify} messages.
         * @param message ChannelAcceptResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelAcceptResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelAcceptResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelAcceptResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelAcceptResponse;

        /**
         * Decodes a ChannelAcceptResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelAcceptResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelAcceptResponse;

        /**
         * Verifies a ChannelAcceptResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelAcceptResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelAcceptResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelAcceptResponse;

        /**
         * Creates a plain object from a ChannelAcceptResponse message. Also converts values to other types if specified.
         * @param message ChannelAcceptResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelAcceptResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelAcceptResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelAcceptResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChannelPoint. */
    interface IChannelPoint {
        /** ChannelPoint funding_txid_bytes */
        funding_txid_bytes?: Uint8Array | null;

        /** ChannelPoint funding_txid_str */
        funding_txid_str?: string | null;

        /** ChannelPoint output_index */
        output_index?: number | null;
    }

    /** Represents a ChannelPoint. */
    class ChannelPoint implements IChannelPoint {
        /**
         * Constructs a new ChannelPoint.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelPoint);

        /** ChannelPoint funding_txid_bytes. */
        public funding_txid_bytes?: Uint8Array | null;

        /** ChannelPoint funding_txid_str. */
        public funding_txid_str?: string | null;

        /** ChannelPoint output_index. */
        public output_index: number;

        /** ChannelPoint funding_txid. */
        public funding_txid?: 'funding_txid_bytes' | 'funding_txid_str';

        /**
         * Creates a new ChannelPoint instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelPoint instance
         */
        public static create(
            properties?: lnrpc.IChannelPoint
        ): lnrpc.ChannelPoint;

        /**
         * Encodes the specified ChannelPoint message. Does not implicitly {@link lnrpc.ChannelPoint.verify|verify} messages.
         * @param message ChannelPoint message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelPoint,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelPoint message, length delimited. Does not implicitly {@link lnrpc.ChannelPoint.verify|verify} messages.
         * @param message ChannelPoint message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelPoint,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelPoint message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelPoint
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelPoint;

        /**
         * Decodes a ChannelPoint message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelPoint
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelPoint;

        /**
         * Verifies a ChannelPoint message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelPoint message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelPoint
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelPoint;

        /**
         * Creates a plain object from a ChannelPoint message. Also converts values to other types if specified.
         * @param message ChannelPoint
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelPoint,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelPoint to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelPoint
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an OutPoint. */
    interface IOutPoint {
        /** OutPoint txid_bytes */
        txid_bytes?: Uint8Array | null;

        /** OutPoint txid_str */
        txid_str?: string | null;

        /** OutPoint output_index */
        output_index?: number | null;
    }

    /** Represents an OutPoint. */
    class OutPoint implements IOutPoint {
        /**
         * Constructs a new OutPoint.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IOutPoint);

        /** OutPoint txid_bytes. */
        public txid_bytes: Uint8Array;

        /** OutPoint txid_str. */
        public txid_str: string;

        /** OutPoint output_index. */
        public output_index: number;

        /**
         * Creates a new OutPoint instance using the specified properties.
         * @param [properties] Properties to set
         * @returns OutPoint instance
         */
        public static create(properties?: lnrpc.IOutPoint): lnrpc.OutPoint;

        /**
         * Encodes the specified OutPoint message. Does not implicitly {@link lnrpc.OutPoint.verify|verify} messages.
         * @param message OutPoint message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IOutPoint,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified OutPoint message, length delimited. Does not implicitly {@link lnrpc.OutPoint.verify|verify} messages.
         * @param message OutPoint message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IOutPoint,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an OutPoint message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns OutPoint
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.OutPoint;

        /**
         * Decodes an OutPoint message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns OutPoint
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.OutPoint;

        /**
         * Verifies an OutPoint message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an OutPoint message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns OutPoint
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.OutPoint;

        /**
         * Creates a plain object from an OutPoint message. Also converts values to other types if specified.
         * @param message OutPoint
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.OutPoint,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this OutPoint to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for OutPoint
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PreviousOutPoint. */
    interface IPreviousOutPoint {
        /** PreviousOutPoint outpoint */
        outpoint?: string | null;

        /** PreviousOutPoint is_our_output */
        is_our_output?: boolean | null;
    }

    /** Represents a PreviousOutPoint. */
    class PreviousOutPoint implements IPreviousOutPoint {
        /**
         * Constructs a new PreviousOutPoint.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IPreviousOutPoint);

        /** PreviousOutPoint outpoint. */
        public outpoint: string;

        /** PreviousOutPoint is_our_output. */
        public is_our_output: boolean;

        /**
         * Creates a new PreviousOutPoint instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PreviousOutPoint instance
         */
        public static create(
            properties?: lnrpc.IPreviousOutPoint
        ): lnrpc.PreviousOutPoint;

        /**
         * Encodes the specified PreviousOutPoint message. Does not implicitly {@link lnrpc.PreviousOutPoint.verify|verify} messages.
         * @param message PreviousOutPoint message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IPreviousOutPoint,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PreviousOutPoint message, length delimited. Does not implicitly {@link lnrpc.PreviousOutPoint.verify|verify} messages.
         * @param message PreviousOutPoint message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IPreviousOutPoint,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PreviousOutPoint message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PreviousOutPoint
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.PreviousOutPoint;

        /**
         * Decodes a PreviousOutPoint message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PreviousOutPoint
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.PreviousOutPoint;

        /**
         * Verifies a PreviousOutPoint message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PreviousOutPoint message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PreviousOutPoint
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.PreviousOutPoint;

        /**
         * Creates a plain object from a PreviousOutPoint message. Also converts values to other types if specified.
         * @param message PreviousOutPoint
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.PreviousOutPoint,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PreviousOutPoint to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PreviousOutPoint
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a LightningAddress. */
    interface ILightningAddress {
        /** LightningAddress pubkey */
        pubkey?: string | null;

        /** LightningAddress host */
        host?: string | null;
    }

    /** Represents a LightningAddress. */
    class LightningAddress implements ILightningAddress {
        /**
         * Constructs a new LightningAddress.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ILightningAddress);

        /** LightningAddress pubkey. */
        public pubkey: string;

        /** LightningAddress host. */
        public host: string;

        /**
         * Creates a new LightningAddress instance using the specified properties.
         * @param [properties] Properties to set
         * @returns LightningAddress instance
         */
        public static create(
            properties?: lnrpc.ILightningAddress
        ): lnrpc.LightningAddress;

        /**
         * Encodes the specified LightningAddress message. Does not implicitly {@link lnrpc.LightningAddress.verify|verify} messages.
         * @param message LightningAddress message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ILightningAddress,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified LightningAddress message, length delimited. Does not implicitly {@link lnrpc.LightningAddress.verify|verify} messages.
         * @param message LightningAddress message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ILightningAddress,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a LightningAddress message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns LightningAddress
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.LightningAddress;

        /**
         * Decodes a LightningAddress message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns LightningAddress
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.LightningAddress;

        /**
         * Verifies a LightningAddress message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a LightningAddress message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns LightningAddress
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.LightningAddress;

        /**
         * Creates a plain object from a LightningAddress message. Also converts values to other types if specified.
         * @param message LightningAddress
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.LightningAddress,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this LightningAddress to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for LightningAddress
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** CoinSelectionStrategy enum. */
    enum CoinSelectionStrategy {
        STRATEGY_USE_GLOBAL_CONFIG = 0,
        STRATEGY_LARGEST = 1,
        STRATEGY_RANDOM = 2
    }

    /** Properties of an EstimateFeeRequest. */
    interface IEstimateFeeRequest {
        /** EstimateFeeRequest AddrToAmount */
        AddrToAmount?: { [k: string]: Long } | null;

        /** EstimateFeeRequest target_conf */
        target_conf?: number | null;

        /** EstimateFeeRequest min_confs */
        min_confs?: number | null;

        /** EstimateFeeRequest spend_unconfirmed */
        spend_unconfirmed?: boolean | null;

        /** EstimateFeeRequest coin_selection_strategy */
        coin_selection_strategy?: lnrpc.CoinSelectionStrategy | null;
    }

    /** Represents an EstimateFeeRequest. */
    class EstimateFeeRequest implements IEstimateFeeRequest {
        /**
         * Constructs a new EstimateFeeRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IEstimateFeeRequest);

        /** EstimateFeeRequest AddrToAmount. */
        public AddrToAmount: { [k: string]: Long };

        /** EstimateFeeRequest target_conf. */
        public target_conf: number;

        /** EstimateFeeRequest min_confs. */
        public min_confs: number;

        /** EstimateFeeRequest spend_unconfirmed. */
        public spend_unconfirmed: boolean;

        /** EstimateFeeRequest coin_selection_strategy. */
        public coin_selection_strategy: lnrpc.CoinSelectionStrategy;

        /**
         * Creates a new EstimateFeeRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns EstimateFeeRequest instance
         */
        public static create(
            properties?: lnrpc.IEstimateFeeRequest
        ): lnrpc.EstimateFeeRequest;

        /**
         * Encodes the specified EstimateFeeRequest message. Does not implicitly {@link lnrpc.EstimateFeeRequest.verify|verify} messages.
         * @param message EstimateFeeRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IEstimateFeeRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified EstimateFeeRequest message, length delimited. Does not implicitly {@link lnrpc.EstimateFeeRequest.verify|verify} messages.
         * @param message EstimateFeeRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IEstimateFeeRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an EstimateFeeRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns EstimateFeeRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.EstimateFeeRequest;

        /**
         * Decodes an EstimateFeeRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns EstimateFeeRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.EstimateFeeRequest;

        /**
         * Verifies an EstimateFeeRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an EstimateFeeRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns EstimateFeeRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.EstimateFeeRequest;

        /**
         * Creates a plain object from an EstimateFeeRequest message. Also converts values to other types if specified.
         * @param message EstimateFeeRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.EstimateFeeRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this EstimateFeeRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for EstimateFeeRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an EstimateFeeResponse. */
    interface IEstimateFeeResponse {
        /** EstimateFeeResponse fee_sat */
        fee_sat?: Long | null;

        /** EstimateFeeResponse feerate_sat_per_byte */
        feerate_sat_per_byte?: Long | null;

        /** EstimateFeeResponse sat_per_vbyte */
        sat_per_vbyte?: Long | null;
    }

    /** Represents an EstimateFeeResponse. */
    class EstimateFeeResponse implements IEstimateFeeResponse {
        /**
         * Constructs a new EstimateFeeResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IEstimateFeeResponse);

        /** EstimateFeeResponse fee_sat. */
        public fee_sat: Long;

        /** EstimateFeeResponse feerate_sat_per_byte. */
        public feerate_sat_per_byte: Long;

        /** EstimateFeeResponse sat_per_vbyte. */
        public sat_per_vbyte: Long;

        /**
         * Creates a new EstimateFeeResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns EstimateFeeResponse instance
         */
        public static create(
            properties?: lnrpc.IEstimateFeeResponse
        ): lnrpc.EstimateFeeResponse;

        /**
         * Encodes the specified EstimateFeeResponse message. Does not implicitly {@link lnrpc.EstimateFeeResponse.verify|verify} messages.
         * @param message EstimateFeeResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IEstimateFeeResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified EstimateFeeResponse message, length delimited. Does not implicitly {@link lnrpc.EstimateFeeResponse.verify|verify} messages.
         * @param message EstimateFeeResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IEstimateFeeResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an EstimateFeeResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns EstimateFeeResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.EstimateFeeResponse;

        /**
         * Decodes an EstimateFeeResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns EstimateFeeResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.EstimateFeeResponse;

        /**
         * Verifies an EstimateFeeResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an EstimateFeeResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns EstimateFeeResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.EstimateFeeResponse;

        /**
         * Creates a plain object from an EstimateFeeResponse message. Also converts values to other types if specified.
         * @param message EstimateFeeResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.EstimateFeeResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this EstimateFeeResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for EstimateFeeResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SendManyRequest. */
    interface ISendManyRequest {
        /** SendManyRequest AddrToAmount */
        AddrToAmount?: { [k: string]: Long } | null;

        /** SendManyRequest target_conf */
        target_conf?: number | null;

        /** SendManyRequest sat_per_vbyte */
        sat_per_vbyte?: Long | null;

        /** SendManyRequest sat_per_byte */
        sat_per_byte?: Long | null;

        /** SendManyRequest label */
        label?: string | null;

        /** SendManyRequest min_confs */
        min_confs?: number | null;

        /** SendManyRequest spend_unconfirmed */
        spend_unconfirmed?: boolean | null;

        /** SendManyRequest coin_selection_strategy */
        coin_selection_strategy?: lnrpc.CoinSelectionStrategy | null;
    }

    /** Represents a SendManyRequest. */
    class SendManyRequest implements ISendManyRequest {
        /**
         * Constructs a new SendManyRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ISendManyRequest);

        /** SendManyRequest AddrToAmount. */
        public AddrToAmount: { [k: string]: Long };

        /** SendManyRequest target_conf. */
        public target_conf: number;

        /** SendManyRequest sat_per_vbyte. */
        public sat_per_vbyte: Long;

        /** SendManyRequest sat_per_byte. */
        public sat_per_byte: Long;

        /** SendManyRequest label. */
        public label: string;

        /** SendManyRequest min_confs. */
        public min_confs: number;

        /** SendManyRequest spend_unconfirmed. */
        public spend_unconfirmed: boolean;

        /** SendManyRequest coin_selection_strategy. */
        public coin_selection_strategy: lnrpc.CoinSelectionStrategy;

        /**
         * Creates a new SendManyRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SendManyRequest instance
         */
        public static create(
            properties?: lnrpc.ISendManyRequest
        ): lnrpc.SendManyRequest;

        /**
         * Encodes the specified SendManyRequest message. Does not implicitly {@link lnrpc.SendManyRequest.verify|verify} messages.
         * @param message SendManyRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ISendManyRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SendManyRequest message, length delimited. Does not implicitly {@link lnrpc.SendManyRequest.verify|verify} messages.
         * @param message SendManyRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ISendManyRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SendManyRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SendManyRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.SendManyRequest;

        /**
         * Decodes a SendManyRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SendManyRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.SendManyRequest;

        /**
         * Verifies a SendManyRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SendManyRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SendManyRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.SendManyRequest;

        /**
         * Creates a plain object from a SendManyRequest message. Also converts values to other types if specified.
         * @param message SendManyRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.SendManyRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SendManyRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SendManyRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SendManyResponse. */
    interface ISendManyResponse {
        /** SendManyResponse txid */
        txid?: string | null;
    }

    /** Represents a SendManyResponse. */
    class SendManyResponse implements ISendManyResponse {
        /**
         * Constructs a new SendManyResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ISendManyResponse);

        /** SendManyResponse txid. */
        public txid: string;

        /**
         * Creates a new SendManyResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SendManyResponse instance
         */
        public static create(
            properties?: lnrpc.ISendManyResponse
        ): lnrpc.SendManyResponse;

        /**
         * Encodes the specified SendManyResponse message. Does not implicitly {@link lnrpc.SendManyResponse.verify|verify} messages.
         * @param message SendManyResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ISendManyResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SendManyResponse message, length delimited. Does not implicitly {@link lnrpc.SendManyResponse.verify|verify} messages.
         * @param message SendManyResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ISendManyResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SendManyResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SendManyResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.SendManyResponse;

        /**
         * Decodes a SendManyResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SendManyResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.SendManyResponse;

        /**
         * Verifies a SendManyResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SendManyResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SendManyResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.SendManyResponse;

        /**
         * Creates a plain object from a SendManyResponse message. Also converts values to other types if specified.
         * @param message SendManyResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.SendManyResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SendManyResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SendManyResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SendCoinsRequest. */
    interface ISendCoinsRequest {
        /** SendCoinsRequest addr */
        addr?: string | null;

        /** SendCoinsRequest amount */
        amount?: Long | null;

        /** SendCoinsRequest target_conf */
        target_conf?: number | null;

        /** SendCoinsRequest sat_per_vbyte */
        sat_per_vbyte?: Long | null;

        /** SendCoinsRequest sat_per_byte */
        sat_per_byte?: Long | null;

        /** SendCoinsRequest send_all */
        send_all?: boolean | null;

        /** SendCoinsRequest label */
        label?: string | null;

        /** SendCoinsRequest min_confs */
        min_confs?: number | null;

        /** SendCoinsRequest spend_unconfirmed */
        spend_unconfirmed?: boolean | null;

        /** SendCoinsRequest coin_selection_strategy */
        coin_selection_strategy?: lnrpc.CoinSelectionStrategy | null;

        /** SendCoinsRequest outpoints */
        outpoints?: lnrpc.IOutPoint[] | null;
    }

    /** Represents a SendCoinsRequest. */
    class SendCoinsRequest implements ISendCoinsRequest {
        /**
         * Constructs a new SendCoinsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ISendCoinsRequest);

        /** SendCoinsRequest addr. */
        public addr: string;

        /** SendCoinsRequest amount. */
        public amount: Long;

        /** SendCoinsRequest target_conf. */
        public target_conf: number;

        /** SendCoinsRequest sat_per_vbyte. */
        public sat_per_vbyte: Long;

        /** SendCoinsRequest sat_per_byte. */
        public sat_per_byte: Long;

        /** SendCoinsRequest send_all. */
        public send_all: boolean;

        /** SendCoinsRequest label. */
        public label: string;

        /** SendCoinsRequest min_confs. */
        public min_confs: number;

        /** SendCoinsRequest spend_unconfirmed. */
        public spend_unconfirmed: boolean;

        /** SendCoinsRequest coin_selection_strategy. */
        public coin_selection_strategy: lnrpc.CoinSelectionStrategy;

        /** SendCoinsRequest outpoints. */
        public outpoints: lnrpc.IOutPoint[];

        /**
         * Creates a new SendCoinsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SendCoinsRequest instance
         */
        public static create(
            properties?: lnrpc.ISendCoinsRequest
        ): lnrpc.SendCoinsRequest;

        /**
         * Encodes the specified SendCoinsRequest message. Does not implicitly {@link lnrpc.SendCoinsRequest.verify|verify} messages.
         * @param message SendCoinsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ISendCoinsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SendCoinsRequest message, length delimited. Does not implicitly {@link lnrpc.SendCoinsRequest.verify|verify} messages.
         * @param message SendCoinsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ISendCoinsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SendCoinsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SendCoinsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.SendCoinsRequest;

        /**
         * Decodes a SendCoinsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SendCoinsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.SendCoinsRequest;

        /**
         * Verifies a SendCoinsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SendCoinsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SendCoinsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.SendCoinsRequest;

        /**
         * Creates a plain object from a SendCoinsRequest message. Also converts values to other types if specified.
         * @param message SendCoinsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.SendCoinsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SendCoinsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SendCoinsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SendCoinsResponse. */
    interface ISendCoinsResponse {
        /** SendCoinsResponse txid */
        txid?: string | null;
    }

    /** Represents a SendCoinsResponse. */
    class SendCoinsResponse implements ISendCoinsResponse {
        /**
         * Constructs a new SendCoinsResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ISendCoinsResponse);

        /** SendCoinsResponse txid. */
        public txid: string;

        /**
         * Creates a new SendCoinsResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SendCoinsResponse instance
         */
        public static create(
            properties?: lnrpc.ISendCoinsResponse
        ): lnrpc.SendCoinsResponse;

        /**
         * Encodes the specified SendCoinsResponse message. Does not implicitly {@link lnrpc.SendCoinsResponse.verify|verify} messages.
         * @param message SendCoinsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ISendCoinsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SendCoinsResponse message, length delimited. Does not implicitly {@link lnrpc.SendCoinsResponse.verify|verify} messages.
         * @param message SendCoinsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ISendCoinsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SendCoinsResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SendCoinsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.SendCoinsResponse;

        /**
         * Decodes a SendCoinsResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SendCoinsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.SendCoinsResponse;

        /**
         * Verifies a SendCoinsResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SendCoinsResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SendCoinsResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.SendCoinsResponse;

        /**
         * Creates a plain object from a SendCoinsResponse message. Also converts values to other types if specified.
         * @param message SendCoinsResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.SendCoinsResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SendCoinsResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SendCoinsResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListUnspentRequest. */
    interface IListUnspentRequest {
        /** ListUnspentRequest min_confs */
        min_confs?: number | null;

        /** ListUnspentRequest max_confs */
        max_confs?: number | null;

        /** ListUnspentRequest account */
        account?: string | null;
    }

    /** Represents a ListUnspentRequest. */
    class ListUnspentRequest implements IListUnspentRequest {
        /**
         * Constructs a new ListUnspentRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IListUnspentRequest);

        /** ListUnspentRequest min_confs. */
        public min_confs: number;

        /** ListUnspentRequest max_confs. */
        public max_confs: number;

        /** ListUnspentRequest account. */
        public account: string;

        /**
         * Creates a new ListUnspentRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListUnspentRequest instance
         */
        public static create(
            properties?: lnrpc.IListUnspentRequest
        ): lnrpc.ListUnspentRequest;

        /**
         * Encodes the specified ListUnspentRequest message. Does not implicitly {@link lnrpc.ListUnspentRequest.verify|verify} messages.
         * @param message ListUnspentRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IListUnspentRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListUnspentRequest message, length delimited. Does not implicitly {@link lnrpc.ListUnspentRequest.verify|verify} messages.
         * @param message ListUnspentRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IListUnspentRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListUnspentRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListUnspentRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ListUnspentRequest;

        /**
         * Decodes a ListUnspentRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListUnspentRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ListUnspentRequest;

        /**
         * Verifies a ListUnspentRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListUnspentRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListUnspentRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ListUnspentRequest;

        /**
         * Creates a plain object from a ListUnspentRequest message. Also converts values to other types if specified.
         * @param message ListUnspentRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ListUnspentRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListUnspentRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListUnspentRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListUnspentResponse. */
    interface IListUnspentResponse {
        /** ListUnspentResponse utxos */
        utxos?: lnrpc.IUtxo[] | null;
    }

    /** Represents a ListUnspentResponse. */
    class ListUnspentResponse implements IListUnspentResponse {
        /**
         * Constructs a new ListUnspentResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IListUnspentResponse);

        /** ListUnspentResponse utxos. */
        public utxos: lnrpc.IUtxo[];

        /**
         * Creates a new ListUnspentResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListUnspentResponse instance
         */
        public static create(
            properties?: lnrpc.IListUnspentResponse
        ): lnrpc.ListUnspentResponse;

        /**
         * Encodes the specified ListUnspentResponse message. Does not implicitly {@link lnrpc.ListUnspentResponse.verify|verify} messages.
         * @param message ListUnspentResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IListUnspentResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListUnspentResponse message, length delimited. Does not implicitly {@link lnrpc.ListUnspentResponse.verify|verify} messages.
         * @param message ListUnspentResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IListUnspentResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListUnspentResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListUnspentResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ListUnspentResponse;

        /**
         * Decodes a ListUnspentResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListUnspentResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ListUnspentResponse;

        /**
         * Verifies a ListUnspentResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListUnspentResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListUnspentResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ListUnspentResponse;

        /**
         * Creates a plain object from a ListUnspentResponse message. Also converts values to other types if specified.
         * @param message ListUnspentResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ListUnspentResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListUnspentResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListUnspentResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** AddressType enum. */
    enum AddressType {
        WITNESS_PUBKEY_HASH = 0,
        NESTED_PUBKEY_HASH = 1,
        UNUSED_WITNESS_PUBKEY_HASH = 2,
        UNUSED_NESTED_PUBKEY_HASH = 3,
        TAPROOT_PUBKEY = 4,
        UNUSED_TAPROOT_PUBKEY = 5
    }

    /** Properties of a NewAddressRequest. */
    interface INewAddressRequest {
        /** NewAddressRequest type */
        type?: lnrpc.AddressType | null;

        /** NewAddressRequest account */
        account?: string | null;
    }

    /** Represents a NewAddressRequest. */
    class NewAddressRequest implements INewAddressRequest {
        /**
         * Constructs a new NewAddressRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.INewAddressRequest);

        /** NewAddressRequest type. */
        public type: lnrpc.AddressType;

        /** NewAddressRequest account. */
        public account: string;

        /**
         * Creates a new NewAddressRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns NewAddressRequest instance
         */
        public static create(
            properties?: lnrpc.INewAddressRequest
        ): lnrpc.NewAddressRequest;

        /**
         * Encodes the specified NewAddressRequest message. Does not implicitly {@link lnrpc.NewAddressRequest.verify|verify} messages.
         * @param message NewAddressRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.INewAddressRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified NewAddressRequest message, length delimited. Does not implicitly {@link lnrpc.NewAddressRequest.verify|verify} messages.
         * @param message NewAddressRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.INewAddressRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a NewAddressRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns NewAddressRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.NewAddressRequest;

        /**
         * Decodes a NewAddressRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns NewAddressRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.NewAddressRequest;

        /**
         * Verifies a NewAddressRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a NewAddressRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns NewAddressRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.NewAddressRequest;

        /**
         * Creates a plain object from a NewAddressRequest message. Also converts values to other types if specified.
         * @param message NewAddressRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.NewAddressRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this NewAddressRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for NewAddressRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a NewAddressResponse. */
    interface INewAddressResponse {
        /** NewAddressResponse address */
        address?: string | null;
    }

    /** Represents a NewAddressResponse. */
    class NewAddressResponse implements INewAddressResponse {
        /**
         * Constructs a new NewAddressResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.INewAddressResponse);

        /** NewAddressResponse address. */
        public address: string;

        /**
         * Creates a new NewAddressResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns NewAddressResponse instance
         */
        public static create(
            properties?: lnrpc.INewAddressResponse
        ): lnrpc.NewAddressResponse;

        /**
         * Encodes the specified NewAddressResponse message. Does not implicitly {@link lnrpc.NewAddressResponse.verify|verify} messages.
         * @param message NewAddressResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.INewAddressResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified NewAddressResponse message, length delimited. Does not implicitly {@link lnrpc.NewAddressResponse.verify|verify} messages.
         * @param message NewAddressResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.INewAddressResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a NewAddressResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns NewAddressResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.NewAddressResponse;

        /**
         * Decodes a NewAddressResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns NewAddressResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.NewAddressResponse;

        /**
         * Verifies a NewAddressResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a NewAddressResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns NewAddressResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.NewAddressResponse;

        /**
         * Creates a plain object from a NewAddressResponse message. Also converts values to other types if specified.
         * @param message NewAddressResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.NewAddressResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this NewAddressResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for NewAddressResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SignMessageRequest. */
    interface ISignMessageRequest {
        /** SignMessageRequest msg */
        msg?: Uint8Array | null;

        /** SignMessageRequest single_hash */
        single_hash?: boolean | null;
    }

    /** Represents a SignMessageRequest. */
    class SignMessageRequest implements ISignMessageRequest {
        /**
         * Constructs a new SignMessageRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ISignMessageRequest);

        /** SignMessageRequest msg. */
        public msg: Uint8Array;

        /** SignMessageRequest single_hash. */
        public single_hash: boolean;

        /**
         * Creates a new SignMessageRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SignMessageRequest instance
         */
        public static create(
            properties?: lnrpc.ISignMessageRequest
        ): lnrpc.SignMessageRequest;

        /**
         * Encodes the specified SignMessageRequest message. Does not implicitly {@link lnrpc.SignMessageRequest.verify|verify} messages.
         * @param message SignMessageRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ISignMessageRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SignMessageRequest message, length delimited. Does not implicitly {@link lnrpc.SignMessageRequest.verify|verify} messages.
         * @param message SignMessageRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ISignMessageRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SignMessageRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SignMessageRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.SignMessageRequest;

        /**
         * Decodes a SignMessageRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SignMessageRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.SignMessageRequest;

        /**
         * Verifies a SignMessageRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SignMessageRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SignMessageRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.SignMessageRequest;

        /**
         * Creates a plain object from a SignMessageRequest message. Also converts values to other types if specified.
         * @param message SignMessageRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.SignMessageRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SignMessageRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SignMessageRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SignMessageResponse. */
    interface ISignMessageResponse {
        /** SignMessageResponse signature */
        signature?: string | null;
    }

    /** Represents a SignMessageResponse. */
    class SignMessageResponse implements ISignMessageResponse {
        /**
         * Constructs a new SignMessageResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ISignMessageResponse);

        /** SignMessageResponse signature. */
        public signature: string;

        /**
         * Creates a new SignMessageResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SignMessageResponse instance
         */
        public static create(
            properties?: lnrpc.ISignMessageResponse
        ): lnrpc.SignMessageResponse;

        /**
         * Encodes the specified SignMessageResponse message. Does not implicitly {@link lnrpc.SignMessageResponse.verify|verify} messages.
         * @param message SignMessageResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ISignMessageResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SignMessageResponse message, length delimited. Does not implicitly {@link lnrpc.SignMessageResponse.verify|verify} messages.
         * @param message SignMessageResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ISignMessageResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SignMessageResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SignMessageResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.SignMessageResponse;

        /**
         * Decodes a SignMessageResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SignMessageResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.SignMessageResponse;

        /**
         * Verifies a SignMessageResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SignMessageResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SignMessageResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.SignMessageResponse;

        /**
         * Creates a plain object from a SignMessageResponse message. Also converts values to other types if specified.
         * @param message SignMessageResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.SignMessageResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SignMessageResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SignMessageResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a VerifyMessageRequest. */
    interface IVerifyMessageRequest {
        /** VerifyMessageRequest msg */
        msg?: Uint8Array | null;

        /** VerifyMessageRequest signature */
        signature?: string | null;
    }

    /** Represents a VerifyMessageRequest. */
    class VerifyMessageRequest implements IVerifyMessageRequest {
        /**
         * Constructs a new VerifyMessageRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IVerifyMessageRequest);

        /** VerifyMessageRequest msg. */
        public msg: Uint8Array;

        /** VerifyMessageRequest signature. */
        public signature: string;

        /**
         * Creates a new VerifyMessageRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns VerifyMessageRequest instance
         */
        public static create(
            properties?: lnrpc.IVerifyMessageRequest
        ): lnrpc.VerifyMessageRequest;

        /**
         * Encodes the specified VerifyMessageRequest message. Does not implicitly {@link lnrpc.VerifyMessageRequest.verify|verify} messages.
         * @param message VerifyMessageRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IVerifyMessageRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified VerifyMessageRequest message, length delimited. Does not implicitly {@link lnrpc.VerifyMessageRequest.verify|verify} messages.
         * @param message VerifyMessageRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IVerifyMessageRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a VerifyMessageRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns VerifyMessageRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.VerifyMessageRequest;

        /**
         * Decodes a VerifyMessageRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns VerifyMessageRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.VerifyMessageRequest;

        /**
         * Verifies a VerifyMessageRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a VerifyMessageRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns VerifyMessageRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.VerifyMessageRequest;

        /**
         * Creates a plain object from a VerifyMessageRequest message. Also converts values to other types if specified.
         * @param message VerifyMessageRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.VerifyMessageRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this VerifyMessageRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for VerifyMessageRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a VerifyMessageResponse. */
    interface IVerifyMessageResponse {
        /** VerifyMessageResponse valid */
        valid?: boolean | null;

        /** VerifyMessageResponse pubkey */
        pubkey?: string | null;
    }

    /** Represents a VerifyMessageResponse. */
    class VerifyMessageResponse implements IVerifyMessageResponse {
        /**
         * Constructs a new VerifyMessageResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IVerifyMessageResponse);

        /** VerifyMessageResponse valid. */
        public valid: boolean;

        /** VerifyMessageResponse pubkey. */
        public pubkey: string;

        /**
         * Creates a new VerifyMessageResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns VerifyMessageResponse instance
         */
        public static create(
            properties?: lnrpc.IVerifyMessageResponse
        ): lnrpc.VerifyMessageResponse;

        /**
         * Encodes the specified VerifyMessageResponse message. Does not implicitly {@link lnrpc.VerifyMessageResponse.verify|verify} messages.
         * @param message VerifyMessageResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IVerifyMessageResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified VerifyMessageResponse message, length delimited. Does not implicitly {@link lnrpc.VerifyMessageResponse.verify|verify} messages.
         * @param message VerifyMessageResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IVerifyMessageResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a VerifyMessageResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns VerifyMessageResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.VerifyMessageResponse;

        /**
         * Decodes a VerifyMessageResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns VerifyMessageResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.VerifyMessageResponse;

        /**
         * Verifies a VerifyMessageResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a VerifyMessageResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns VerifyMessageResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.VerifyMessageResponse;

        /**
         * Creates a plain object from a VerifyMessageResponse message. Also converts values to other types if specified.
         * @param message VerifyMessageResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.VerifyMessageResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this VerifyMessageResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for VerifyMessageResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ConnectPeerRequest. */
    interface IConnectPeerRequest {
        /** ConnectPeerRequest addr */
        addr?: lnrpc.ILightningAddress | null;

        /** ConnectPeerRequest perm */
        perm?: boolean | null;

        /** ConnectPeerRequest timeout */
        timeout?: Long | null;
    }

    /** Represents a ConnectPeerRequest. */
    class ConnectPeerRequest implements IConnectPeerRequest {
        /**
         * Constructs a new ConnectPeerRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IConnectPeerRequest);

        /** ConnectPeerRequest addr. */
        public addr?: lnrpc.ILightningAddress | null;

        /** ConnectPeerRequest perm. */
        public perm: boolean;

        /** ConnectPeerRequest timeout. */
        public timeout: Long;

        /**
         * Creates a new ConnectPeerRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ConnectPeerRequest instance
         */
        public static create(
            properties?: lnrpc.IConnectPeerRequest
        ): lnrpc.ConnectPeerRequest;

        /**
         * Encodes the specified ConnectPeerRequest message. Does not implicitly {@link lnrpc.ConnectPeerRequest.verify|verify} messages.
         * @param message ConnectPeerRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IConnectPeerRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ConnectPeerRequest message, length delimited. Does not implicitly {@link lnrpc.ConnectPeerRequest.verify|verify} messages.
         * @param message ConnectPeerRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IConnectPeerRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ConnectPeerRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ConnectPeerRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ConnectPeerRequest;

        /**
         * Decodes a ConnectPeerRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ConnectPeerRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ConnectPeerRequest;

        /**
         * Verifies a ConnectPeerRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ConnectPeerRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ConnectPeerRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ConnectPeerRequest;

        /**
         * Creates a plain object from a ConnectPeerRequest message. Also converts values to other types if specified.
         * @param message ConnectPeerRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ConnectPeerRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ConnectPeerRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ConnectPeerRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ConnectPeerResponse. */
    interface IConnectPeerResponse {}

    /** Represents a ConnectPeerResponse. */
    class ConnectPeerResponse implements IConnectPeerResponse {
        /**
         * Constructs a new ConnectPeerResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IConnectPeerResponse);

        /**
         * Creates a new ConnectPeerResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ConnectPeerResponse instance
         */
        public static create(
            properties?: lnrpc.IConnectPeerResponse
        ): lnrpc.ConnectPeerResponse;

        /**
         * Encodes the specified ConnectPeerResponse message. Does not implicitly {@link lnrpc.ConnectPeerResponse.verify|verify} messages.
         * @param message ConnectPeerResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IConnectPeerResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ConnectPeerResponse message, length delimited. Does not implicitly {@link lnrpc.ConnectPeerResponse.verify|verify} messages.
         * @param message ConnectPeerResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IConnectPeerResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ConnectPeerResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ConnectPeerResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ConnectPeerResponse;

        /**
         * Decodes a ConnectPeerResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ConnectPeerResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ConnectPeerResponse;

        /**
         * Verifies a ConnectPeerResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ConnectPeerResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ConnectPeerResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ConnectPeerResponse;

        /**
         * Creates a plain object from a ConnectPeerResponse message. Also converts values to other types if specified.
         * @param message ConnectPeerResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ConnectPeerResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ConnectPeerResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ConnectPeerResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a DisconnectPeerRequest. */
    interface IDisconnectPeerRequest {
        /** DisconnectPeerRequest pub_key */
        pub_key?: string | null;
    }

    /** Represents a DisconnectPeerRequest. */
    class DisconnectPeerRequest implements IDisconnectPeerRequest {
        /**
         * Constructs a new DisconnectPeerRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IDisconnectPeerRequest);

        /** DisconnectPeerRequest pub_key. */
        public pub_key: string;

        /**
         * Creates a new DisconnectPeerRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DisconnectPeerRequest instance
         */
        public static create(
            properties?: lnrpc.IDisconnectPeerRequest
        ): lnrpc.DisconnectPeerRequest;

        /**
         * Encodes the specified DisconnectPeerRequest message. Does not implicitly {@link lnrpc.DisconnectPeerRequest.verify|verify} messages.
         * @param message DisconnectPeerRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IDisconnectPeerRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified DisconnectPeerRequest message, length delimited. Does not implicitly {@link lnrpc.DisconnectPeerRequest.verify|verify} messages.
         * @param message DisconnectPeerRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IDisconnectPeerRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a DisconnectPeerRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DisconnectPeerRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.DisconnectPeerRequest;

        /**
         * Decodes a DisconnectPeerRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DisconnectPeerRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.DisconnectPeerRequest;

        /**
         * Verifies a DisconnectPeerRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a DisconnectPeerRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DisconnectPeerRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.DisconnectPeerRequest;

        /**
         * Creates a plain object from a DisconnectPeerRequest message. Also converts values to other types if specified.
         * @param message DisconnectPeerRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.DisconnectPeerRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this DisconnectPeerRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DisconnectPeerRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a DisconnectPeerResponse. */
    interface IDisconnectPeerResponse {}

    /** Represents a DisconnectPeerResponse. */
    class DisconnectPeerResponse implements IDisconnectPeerResponse {
        /**
         * Constructs a new DisconnectPeerResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IDisconnectPeerResponse);

        /**
         * Creates a new DisconnectPeerResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DisconnectPeerResponse instance
         */
        public static create(
            properties?: lnrpc.IDisconnectPeerResponse
        ): lnrpc.DisconnectPeerResponse;

        /**
         * Encodes the specified DisconnectPeerResponse message. Does not implicitly {@link lnrpc.DisconnectPeerResponse.verify|verify} messages.
         * @param message DisconnectPeerResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IDisconnectPeerResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified DisconnectPeerResponse message, length delimited. Does not implicitly {@link lnrpc.DisconnectPeerResponse.verify|verify} messages.
         * @param message DisconnectPeerResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IDisconnectPeerResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a DisconnectPeerResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DisconnectPeerResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.DisconnectPeerResponse;

        /**
         * Decodes a DisconnectPeerResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DisconnectPeerResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.DisconnectPeerResponse;

        /**
         * Verifies a DisconnectPeerResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a DisconnectPeerResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DisconnectPeerResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.DisconnectPeerResponse;

        /**
         * Creates a plain object from a DisconnectPeerResponse message. Also converts values to other types if specified.
         * @param message DisconnectPeerResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.DisconnectPeerResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this DisconnectPeerResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DisconnectPeerResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a HTLC. */
    interface IHTLC {
        /** HTLC incoming */
        incoming?: boolean | null;

        /** HTLC amount */
        amount?: Long | null;

        /** HTLC hash_lock */
        hash_lock?: Uint8Array | null;

        /** HTLC expiration_height */
        expiration_height?: number | null;

        /** HTLC htlc_index */
        htlc_index?: Long | null;

        /** HTLC forwarding_channel */
        forwarding_channel?: Long | null;

        /** HTLC forwarding_htlc_index */
        forwarding_htlc_index?: Long | null;
    }

    /** Represents a HTLC. */
    class HTLC implements IHTLC {
        /**
         * Constructs a new HTLC.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IHTLC);

        /** HTLC incoming. */
        public incoming: boolean;

        /** HTLC amount. */
        public amount: Long;

        /** HTLC hash_lock. */
        public hash_lock: Uint8Array;

        /** HTLC expiration_height. */
        public expiration_height: number;

        /** HTLC htlc_index. */
        public htlc_index: Long;

        /** HTLC forwarding_channel. */
        public forwarding_channel: Long;

        /** HTLC forwarding_htlc_index. */
        public forwarding_htlc_index: Long;

        /**
         * Creates a new HTLC instance using the specified properties.
         * @param [properties] Properties to set
         * @returns HTLC instance
         */
        public static create(properties?: lnrpc.IHTLC): lnrpc.HTLC;

        /**
         * Encodes the specified HTLC message. Does not implicitly {@link lnrpc.HTLC.verify|verify} messages.
         * @param message HTLC message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IHTLC,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified HTLC message, length delimited. Does not implicitly {@link lnrpc.HTLC.verify|verify} messages.
         * @param message HTLC message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IHTLC,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a HTLC message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns HTLC
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.HTLC;

        /**
         * Decodes a HTLC message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns HTLC
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.HTLC;

        /**
         * Verifies a HTLC message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a HTLC message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns HTLC
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.HTLC;

        /**
         * Creates a plain object from a HTLC message. Also converts values to other types if specified.
         * @param message HTLC
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.HTLC,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this HTLC to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for HTLC
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** CommitmentType enum. */
    enum CommitmentType {
        UNKNOWN_COMMITMENT_TYPE = 0,
        LEGACY = 1,
        STATIC_REMOTE_KEY = 2,
        ANCHORS = 3,
        SCRIPT_ENFORCED_LEASE = 4,
        SIMPLE_TAPROOT = 5,
        SIMPLE_TAPROOT_OVERLAY = 6
    }

    /** Properties of a ChannelConstraints. */
    interface IChannelConstraints {
        /** ChannelConstraints csv_delay */
        csv_delay?: number | null;

        /** ChannelConstraints chan_reserve_sat */
        chan_reserve_sat?: Long | null;

        /** ChannelConstraints dust_limit_sat */
        dust_limit_sat?: Long | null;

        /** ChannelConstraints max_pending_amt_msat */
        max_pending_amt_msat?: Long | null;

        /** ChannelConstraints min_htlc_msat */
        min_htlc_msat?: Long | null;

        /** ChannelConstraints max_accepted_htlcs */
        max_accepted_htlcs?: number | null;
    }

    /** Represents a ChannelConstraints. */
    class ChannelConstraints implements IChannelConstraints {
        /**
         * Constructs a new ChannelConstraints.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelConstraints);

        /** ChannelConstraints csv_delay. */
        public csv_delay: number;

        /** ChannelConstraints chan_reserve_sat. */
        public chan_reserve_sat: Long;

        /** ChannelConstraints dust_limit_sat. */
        public dust_limit_sat: Long;

        /** ChannelConstraints max_pending_amt_msat. */
        public max_pending_amt_msat: Long;

        /** ChannelConstraints min_htlc_msat. */
        public min_htlc_msat: Long;

        /** ChannelConstraints max_accepted_htlcs. */
        public max_accepted_htlcs: number;

        /**
         * Creates a new ChannelConstraints instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelConstraints instance
         */
        public static create(
            properties?: lnrpc.IChannelConstraints
        ): lnrpc.ChannelConstraints;

        /**
         * Encodes the specified ChannelConstraints message. Does not implicitly {@link lnrpc.ChannelConstraints.verify|verify} messages.
         * @param message ChannelConstraints message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelConstraints,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelConstraints message, length delimited. Does not implicitly {@link lnrpc.ChannelConstraints.verify|verify} messages.
         * @param message ChannelConstraints message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelConstraints,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelConstraints message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelConstraints
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelConstraints;

        /**
         * Decodes a ChannelConstraints message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelConstraints
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelConstraints;

        /**
         * Verifies a ChannelConstraints message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelConstraints message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelConstraints
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelConstraints;

        /**
         * Creates a plain object from a ChannelConstraints message. Also converts values to other types if specified.
         * @param message ChannelConstraints
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelConstraints,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelConstraints to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelConstraints
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a Channel. */
    interface IChannel {
        /** Channel active */
        active?: boolean | null;

        /** Channel remote_pubkey */
        remote_pubkey?: string | null;

        /** Channel channel_point */
        channel_point?: string | null;

        /** Channel chan_id */
        chan_id?: Long | null;

        /** Channel capacity */
        capacity?: Long | null;

        /** Channel local_balance */
        local_balance?: Long | null;

        /** Channel remote_balance */
        remote_balance?: Long | null;

        /** Channel commit_fee */
        commit_fee?: Long | null;

        /** Channel commit_weight */
        commit_weight?: Long | null;

        /** Channel fee_per_kw */
        fee_per_kw?: Long | null;

        /** Channel unsettled_balance */
        unsettled_balance?: Long | null;

        /** Channel total_satoshis_sent */
        total_satoshis_sent?: Long | null;

        /** Channel total_satoshis_received */
        total_satoshis_received?: Long | null;

        /** Channel num_updates */
        num_updates?: Long | null;

        /** Channel pending_htlcs */
        pending_htlcs?: lnrpc.IHTLC[] | null;

        /** Channel csv_delay */
        csv_delay?: number | null;

        /** Channel private */
        private?: boolean | null;

        /** Channel initiator */
        initiator?: boolean | null;

        /** Channel chan_status_flags */
        chan_status_flags?: string | null;

        /** Channel local_chan_reserve_sat */
        local_chan_reserve_sat?: Long | null;

        /** Channel remote_chan_reserve_sat */
        remote_chan_reserve_sat?: Long | null;

        /** Channel static_remote_key */
        static_remote_key?: boolean | null;

        /** Channel commitment_type */
        commitment_type?: lnrpc.CommitmentType | null;

        /** Channel lifetime */
        lifetime?: Long | null;

        /** Channel uptime */
        uptime?: Long | null;

        /** Channel close_address */
        close_address?: string | null;

        /** Channel push_amount_sat */
        push_amount_sat?: Long | null;

        /** Channel thaw_height */
        thaw_height?: number | null;

        /** Channel local_constraints */
        local_constraints?: lnrpc.IChannelConstraints | null;

        /** Channel remote_constraints */
        remote_constraints?: lnrpc.IChannelConstraints | null;

        /** Channel alias_scids */
        alias_scids?: Long[] | null;

        /** Channel zero_conf */
        zero_conf?: boolean | null;

        /** Channel zero_conf_confirmed_scid */
        zero_conf_confirmed_scid?: Long | null;

        /** Channel peer_alias */
        peer_alias?: string | null;

        /** Channel peer_scid_alias */
        peer_scid_alias?: Long | null;

        /** Channel memo */
        memo?: string | null;

        /** Channel custom_channel_data */
        custom_channel_data?: Uint8Array | null;
    }

    /** Represents a Channel. */
    class Channel implements IChannel {
        /**
         * Constructs a new Channel.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannel);

        /** Channel active. */
        public active: boolean;

        /** Channel remote_pubkey. */
        public remote_pubkey: string;

        /** Channel channel_point. */
        public channel_point: string;

        /** Channel chan_id. */
        public chan_id: Long;

        /** Channel capacity. */
        public capacity: Long;

        /** Channel local_balance. */
        public local_balance: Long;

        /** Channel remote_balance. */
        public remote_balance: Long;

        /** Channel commit_fee. */
        public commit_fee: Long;

        /** Channel commit_weight. */
        public commit_weight: Long;

        /** Channel fee_per_kw. */
        public fee_per_kw: Long;

        /** Channel unsettled_balance. */
        public unsettled_balance: Long;

        /** Channel total_satoshis_sent. */
        public total_satoshis_sent: Long;

        /** Channel total_satoshis_received. */
        public total_satoshis_received: Long;

        /** Channel num_updates. */
        public num_updates: Long;

        /** Channel pending_htlcs. */
        public pending_htlcs: lnrpc.IHTLC[];

        /** Channel csv_delay. */
        public csv_delay: number;

        /** Channel private. */
        public private: boolean;

        /** Channel initiator. */
        public initiator: boolean;

        /** Channel chan_status_flags. */
        public chan_status_flags: string;

        /** Channel local_chan_reserve_sat. */
        public local_chan_reserve_sat: Long;

        /** Channel remote_chan_reserve_sat. */
        public remote_chan_reserve_sat: Long;

        /** Channel static_remote_key. */
        public static_remote_key: boolean;

        /** Channel commitment_type. */
        public commitment_type: lnrpc.CommitmentType;

        /** Channel lifetime. */
        public lifetime: Long;

        /** Channel uptime. */
        public uptime: Long;

        /** Channel close_address. */
        public close_address: string;

        /** Channel push_amount_sat. */
        public push_amount_sat: Long;

        /** Channel thaw_height. */
        public thaw_height: number;

        /** Channel local_constraints. */
        public local_constraints?: lnrpc.IChannelConstraints | null;

        /** Channel remote_constraints. */
        public remote_constraints?: lnrpc.IChannelConstraints | null;

        /** Channel alias_scids. */
        public alias_scids: Long[];

        /** Channel zero_conf. */
        public zero_conf: boolean;

        /** Channel zero_conf_confirmed_scid. */
        public zero_conf_confirmed_scid: Long;

        /** Channel peer_alias. */
        public peer_alias: string;

        /** Channel peer_scid_alias. */
        public peer_scid_alias: Long;

        /** Channel memo. */
        public memo: string;

        /** Channel custom_channel_data. */
        public custom_channel_data: Uint8Array;

        /**
         * Creates a new Channel instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Channel instance
         */
        public static create(properties?: lnrpc.IChannel): lnrpc.Channel;

        /**
         * Encodes the specified Channel message. Does not implicitly {@link lnrpc.Channel.verify|verify} messages.
         * @param message Channel message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannel,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Channel message, length delimited. Does not implicitly {@link lnrpc.Channel.verify|verify} messages.
         * @param message Channel message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannel,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a Channel message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Channel
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.Channel;

        /**
         * Decodes a Channel message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Channel
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.Channel;

        /**
         * Verifies a Channel message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a Channel message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Channel
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.Channel;

        /**
         * Creates a plain object from a Channel message. Also converts values to other types if specified.
         * @param message Channel
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.Channel,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Channel to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Channel
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListChannelsRequest. */
    interface IListChannelsRequest {
        /** ListChannelsRequest active_only */
        active_only?: boolean | null;

        /** ListChannelsRequest inactive_only */
        inactive_only?: boolean | null;

        /** ListChannelsRequest public_only */
        public_only?: boolean | null;

        /** ListChannelsRequest private_only */
        private_only?: boolean | null;

        /** ListChannelsRequest peer */
        peer?: Uint8Array | null;

        /** ListChannelsRequest peer_alias_lookup */
        peer_alias_lookup?: boolean | null;
    }

    /** Represents a ListChannelsRequest. */
    class ListChannelsRequest implements IListChannelsRequest {
        /**
         * Constructs a new ListChannelsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IListChannelsRequest);

        /** ListChannelsRequest active_only. */
        public active_only: boolean;

        /** ListChannelsRequest inactive_only. */
        public inactive_only: boolean;

        /** ListChannelsRequest public_only. */
        public public_only: boolean;

        /** ListChannelsRequest private_only. */
        public private_only: boolean;

        /** ListChannelsRequest peer. */
        public peer: Uint8Array;

        /** ListChannelsRequest peer_alias_lookup. */
        public peer_alias_lookup: boolean;

        /**
         * Creates a new ListChannelsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListChannelsRequest instance
         */
        public static create(
            properties?: lnrpc.IListChannelsRequest
        ): lnrpc.ListChannelsRequest;

        /**
         * Encodes the specified ListChannelsRequest message. Does not implicitly {@link lnrpc.ListChannelsRequest.verify|verify} messages.
         * @param message ListChannelsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IListChannelsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListChannelsRequest message, length delimited. Does not implicitly {@link lnrpc.ListChannelsRequest.verify|verify} messages.
         * @param message ListChannelsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IListChannelsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListChannelsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListChannelsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ListChannelsRequest;

        /**
         * Decodes a ListChannelsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListChannelsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ListChannelsRequest;

        /**
         * Verifies a ListChannelsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListChannelsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListChannelsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ListChannelsRequest;

        /**
         * Creates a plain object from a ListChannelsRequest message. Also converts values to other types if specified.
         * @param message ListChannelsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ListChannelsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListChannelsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListChannelsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListChannelsResponse. */
    interface IListChannelsResponse {
        /** ListChannelsResponse channels */
        channels?: lnrpc.IChannel[] | null;
    }

    /** Represents a ListChannelsResponse. */
    class ListChannelsResponse implements IListChannelsResponse {
        /**
         * Constructs a new ListChannelsResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IListChannelsResponse);

        /** ListChannelsResponse channels. */
        public channels: lnrpc.IChannel[];

        /**
         * Creates a new ListChannelsResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListChannelsResponse instance
         */
        public static create(
            properties?: lnrpc.IListChannelsResponse
        ): lnrpc.ListChannelsResponse;

        /**
         * Encodes the specified ListChannelsResponse message. Does not implicitly {@link lnrpc.ListChannelsResponse.verify|verify} messages.
         * @param message ListChannelsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IListChannelsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListChannelsResponse message, length delimited. Does not implicitly {@link lnrpc.ListChannelsResponse.verify|verify} messages.
         * @param message ListChannelsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IListChannelsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListChannelsResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListChannelsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ListChannelsResponse;

        /**
         * Decodes a ListChannelsResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListChannelsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ListChannelsResponse;

        /**
         * Verifies a ListChannelsResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListChannelsResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListChannelsResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ListChannelsResponse;

        /**
         * Creates a plain object from a ListChannelsResponse message. Also converts values to other types if specified.
         * @param message ListChannelsResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ListChannelsResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListChannelsResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListChannelsResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AliasMap. */
    interface IAliasMap {
        /** AliasMap base_scid */
        base_scid?: Long | null;

        /** AliasMap aliases */
        aliases?: Long[] | null;
    }

    /** Represents an AliasMap. */
    class AliasMap implements IAliasMap {
        /**
         * Constructs a new AliasMap.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IAliasMap);

        /** AliasMap base_scid. */
        public base_scid: Long;

        /** AliasMap aliases. */
        public aliases: Long[];

        /**
         * Creates a new AliasMap instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AliasMap instance
         */
        public static create(properties?: lnrpc.IAliasMap): lnrpc.AliasMap;

        /**
         * Encodes the specified AliasMap message. Does not implicitly {@link lnrpc.AliasMap.verify|verify} messages.
         * @param message AliasMap message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IAliasMap,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AliasMap message, length delimited. Does not implicitly {@link lnrpc.AliasMap.verify|verify} messages.
         * @param message AliasMap message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IAliasMap,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AliasMap message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AliasMap
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.AliasMap;

        /**
         * Decodes an AliasMap message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AliasMap
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.AliasMap;

        /**
         * Verifies an AliasMap message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AliasMap message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AliasMap
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.AliasMap;

        /**
         * Creates a plain object from an AliasMap message. Also converts values to other types if specified.
         * @param message AliasMap
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.AliasMap,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AliasMap to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AliasMap
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListAliasesRequest. */
    interface IListAliasesRequest {}

    /** Represents a ListAliasesRequest. */
    class ListAliasesRequest implements IListAliasesRequest {
        /**
         * Constructs a new ListAliasesRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IListAliasesRequest);

        /**
         * Creates a new ListAliasesRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListAliasesRequest instance
         */
        public static create(
            properties?: lnrpc.IListAliasesRequest
        ): lnrpc.ListAliasesRequest;

        /**
         * Encodes the specified ListAliasesRequest message. Does not implicitly {@link lnrpc.ListAliasesRequest.verify|verify} messages.
         * @param message ListAliasesRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IListAliasesRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListAliasesRequest message, length delimited. Does not implicitly {@link lnrpc.ListAliasesRequest.verify|verify} messages.
         * @param message ListAliasesRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IListAliasesRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListAliasesRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListAliasesRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ListAliasesRequest;

        /**
         * Decodes a ListAliasesRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListAliasesRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ListAliasesRequest;

        /**
         * Verifies a ListAliasesRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListAliasesRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListAliasesRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ListAliasesRequest;

        /**
         * Creates a plain object from a ListAliasesRequest message. Also converts values to other types if specified.
         * @param message ListAliasesRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ListAliasesRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListAliasesRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListAliasesRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListAliasesResponse. */
    interface IListAliasesResponse {
        /** ListAliasesResponse alias_maps */
        alias_maps?: lnrpc.IAliasMap[] | null;
    }

    /** Represents a ListAliasesResponse. */
    class ListAliasesResponse implements IListAliasesResponse {
        /**
         * Constructs a new ListAliasesResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IListAliasesResponse);

        /** ListAliasesResponse alias_maps. */
        public alias_maps: lnrpc.IAliasMap[];

        /**
         * Creates a new ListAliasesResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListAliasesResponse instance
         */
        public static create(
            properties?: lnrpc.IListAliasesResponse
        ): lnrpc.ListAliasesResponse;

        /**
         * Encodes the specified ListAliasesResponse message. Does not implicitly {@link lnrpc.ListAliasesResponse.verify|verify} messages.
         * @param message ListAliasesResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IListAliasesResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListAliasesResponse message, length delimited. Does not implicitly {@link lnrpc.ListAliasesResponse.verify|verify} messages.
         * @param message ListAliasesResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IListAliasesResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListAliasesResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListAliasesResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ListAliasesResponse;

        /**
         * Decodes a ListAliasesResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListAliasesResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ListAliasesResponse;

        /**
         * Verifies a ListAliasesResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListAliasesResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListAliasesResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ListAliasesResponse;

        /**
         * Creates a plain object from a ListAliasesResponse message. Also converts values to other types if specified.
         * @param message ListAliasesResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ListAliasesResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListAliasesResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListAliasesResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Initiator enum. */
    enum Initiator {
        INITIATOR_UNKNOWN = 0,
        INITIATOR_LOCAL = 1,
        INITIATOR_REMOTE = 2,
        INITIATOR_BOTH = 3
    }

    /** Properties of a ChannelCloseSummary. */
    interface IChannelCloseSummary {
        /** ChannelCloseSummary channel_point */
        channel_point?: string | null;

        /** ChannelCloseSummary chan_id */
        chan_id?: Long | null;

        /** ChannelCloseSummary chain_hash */
        chain_hash?: string | null;

        /** ChannelCloseSummary closing_tx_hash */
        closing_tx_hash?: string | null;

        /** ChannelCloseSummary remote_pubkey */
        remote_pubkey?: string | null;

        /** ChannelCloseSummary capacity */
        capacity?: Long | null;

        /** ChannelCloseSummary close_height */
        close_height?: number | null;

        /** ChannelCloseSummary settled_balance */
        settled_balance?: Long | null;

        /** ChannelCloseSummary time_locked_balance */
        time_locked_balance?: Long | null;

        /** ChannelCloseSummary close_type */
        close_type?: lnrpc.ChannelCloseSummary.ClosureType | null;

        /** ChannelCloseSummary open_initiator */
        open_initiator?: lnrpc.Initiator | null;

        /** ChannelCloseSummary close_initiator */
        close_initiator?: lnrpc.Initiator | null;

        /** ChannelCloseSummary resolutions */
        resolutions?: lnrpc.IResolution[] | null;

        /** ChannelCloseSummary alias_scids */
        alias_scids?: Long[] | null;

        /** ChannelCloseSummary zero_conf_confirmed_scid */
        zero_conf_confirmed_scid?: Long | null;
    }

    /** Represents a ChannelCloseSummary. */
    class ChannelCloseSummary implements IChannelCloseSummary {
        /**
         * Constructs a new ChannelCloseSummary.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelCloseSummary);

        /** ChannelCloseSummary channel_point. */
        public channel_point: string;

        /** ChannelCloseSummary chan_id. */
        public chan_id: Long;

        /** ChannelCloseSummary chain_hash. */
        public chain_hash: string;

        /** ChannelCloseSummary closing_tx_hash. */
        public closing_tx_hash: string;

        /** ChannelCloseSummary remote_pubkey. */
        public remote_pubkey: string;

        /** ChannelCloseSummary capacity. */
        public capacity: Long;

        /** ChannelCloseSummary close_height. */
        public close_height: number;

        /** ChannelCloseSummary settled_balance. */
        public settled_balance: Long;

        /** ChannelCloseSummary time_locked_balance. */
        public time_locked_balance: Long;

        /** ChannelCloseSummary close_type. */
        public close_type: lnrpc.ChannelCloseSummary.ClosureType;

        /** ChannelCloseSummary open_initiator. */
        public open_initiator: lnrpc.Initiator;

        /** ChannelCloseSummary close_initiator. */
        public close_initiator: lnrpc.Initiator;

        /** ChannelCloseSummary resolutions. */
        public resolutions: lnrpc.IResolution[];

        /** ChannelCloseSummary alias_scids. */
        public alias_scids: Long[];

        /** ChannelCloseSummary zero_conf_confirmed_scid. */
        public zero_conf_confirmed_scid: Long;

        /**
         * Creates a new ChannelCloseSummary instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelCloseSummary instance
         */
        public static create(
            properties?: lnrpc.IChannelCloseSummary
        ): lnrpc.ChannelCloseSummary;

        /**
         * Encodes the specified ChannelCloseSummary message. Does not implicitly {@link lnrpc.ChannelCloseSummary.verify|verify} messages.
         * @param message ChannelCloseSummary message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelCloseSummary,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelCloseSummary message, length delimited. Does not implicitly {@link lnrpc.ChannelCloseSummary.verify|verify} messages.
         * @param message ChannelCloseSummary message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelCloseSummary,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelCloseSummary message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelCloseSummary
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelCloseSummary;

        /**
         * Decodes a ChannelCloseSummary message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelCloseSummary
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelCloseSummary;

        /**
         * Verifies a ChannelCloseSummary message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelCloseSummary message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelCloseSummary
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelCloseSummary;

        /**
         * Creates a plain object from a ChannelCloseSummary message. Also converts values to other types if specified.
         * @param message ChannelCloseSummary
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelCloseSummary,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelCloseSummary to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelCloseSummary
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace ChannelCloseSummary {
        /** ClosureType enum. */
        enum ClosureType {
            COOPERATIVE_CLOSE = 0,
            LOCAL_FORCE_CLOSE = 1,
            REMOTE_FORCE_CLOSE = 2,
            BREACH_CLOSE = 3,
            FUNDING_CANCELED = 4,
            ABANDONED = 5
        }
    }

    /** ResolutionType enum. */
    enum ResolutionType {
        TYPE_UNKNOWN = 0,
        ANCHOR = 1,
        INCOMING_HTLC = 2,
        OUTGOING_HTLC = 3,
        COMMIT = 4
    }

    /** ResolutionOutcome enum. */
    enum ResolutionOutcome {
        OUTCOME_UNKNOWN = 0,
        CLAIMED = 1,
        UNCLAIMED = 2,
        ABANDONED = 3,
        FIRST_STAGE = 4,
        TIMEOUT = 5
    }

    /** Properties of a Resolution. */
    interface IResolution {
        /** Resolution resolution_type */
        resolution_type?: lnrpc.ResolutionType | null;

        /** Resolution outcome */
        outcome?: lnrpc.ResolutionOutcome | null;

        /** Resolution outpoint */
        outpoint?: lnrpc.IOutPoint | null;

        /** Resolution amount_sat */
        amount_sat?: Long | null;

        /** Resolution sweep_txid */
        sweep_txid?: string | null;
    }

    /** Represents a Resolution. */
    class Resolution implements IResolution {
        /**
         * Constructs a new Resolution.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IResolution);

        /** Resolution resolution_type. */
        public resolution_type: lnrpc.ResolutionType;

        /** Resolution outcome. */
        public outcome: lnrpc.ResolutionOutcome;

        /** Resolution outpoint. */
        public outpoint?: lnrpc.IOutPoint | null;

        /** Resolution amount_sat. */
        public amount_sat: Long;

        /** Resolution sweep_txid. */
        public sweep_txid: string;

        /**
         * Creates a new Resolution instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Resolution instance
         */
        public static create(properties?: lnrpc.IResolution): lnrpc.Resolution;

        /**
         * Encodes the specified Resolution message. Does not implicitly {@link lnrpc.Resolution.verify|verify} messages.
         * @param message Resolution message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IResolution,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Resolution message, length delimited. Does not implicitly {@link lnrpc.Resolution.verify|verify} messages.
         * @param message Resolution message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IResolution,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a Resolution message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Resolution
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.Resolution;

        /**
         * Decodes a Resolution message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Resolution
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.Resolution;

        /**
         * Verifies a Resolution message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a Resolution message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Resolution
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.Resolution;

        /**
         * Creates a plain object from a Resolution message. Also converts values to other types if specified.
         * @param message Resolution
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.Resolution,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Resolution to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Resolution
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ClosedChannelsRequest. */
    interface IClosedChannelsRequest {
        /** ClosedChannelsRequest cooperative */
        cooperative?: boolean | null;

        /** ClosedChannelsRequest local_force */
        local_force?: boolean | null;

        /** ClosedChannelsRequest remote_force */
        remote_force?: boolean | null;

        /** ClosedChannelsRequest breach */
        breach?: boolean | null;

        /** ClosedChannelsRequest funding_canceled */
        funding_canceled?: boolean | null;

        /** ClosedChannelsRequest abandoned */
        abandoned?: boolean | null;
    }

    /** Represents a ClosedChannelsRequest. */
    class ClosedChannelsRequest implements IClosedChannelsRequest {
        /**
         * Constructs a new ClosedChannelsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IClosedChannelsRequest);

        /** ClosedChannelsRequest cooperative. */
        public cooperative: boolean;

        /** ClosedChannelsRequest local_force. */
        public local_force: boolean;

        /** ClosedChannelsRequest remote_force. */
        public remote_force: boolean;

        /** ClosedChannelsRequest breach. */
        public breach: boolean;

        /** ClosedChannelsRequest funding_canceled. */
        public funding_canceled: boolean;

        /** ClosedChannelsRequest abandoned. */
        public abandoned: boolean;

        /**
         * Creates a new ClosedChannelsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ClosedChannelsRequest instance
         */
        public static create(
            properties?: lnrpc.IClosedChannelsRequest
        ): lnrpc.ClosedChannelsRequest;

        /**
         * Encodes the specified ClosedChannelsRequest message. Does not implicitly {@link lnrpc.ClosedChannelsRequest.verify|verify} messages.
         * @param message ClosedChannelsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IClosedChannelsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ClosedChannelsRequest message, length delimited. Does not implicitly {@link lnrpc.ClosedChannelsRequest.verify|verify} messages.
         * @param message ClosedChannelsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IClosedChannelsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ClosedChannelsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ClosedChannelsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ClosedChannelsRequest;

        /**
         * Decodes a ClosedChannelsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ClosedChannelsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ClosedChannelsRequest;

        /**
         * Verifies a ClosedChannelsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ClosedChannelsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ClosedChannelsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ClosedChannelsRequest;

        /**
         * Creates a plain object from a ClosedChannelsRequest message. Also converts values to other types if specified.
         * @param message ClosedChannelsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ClosedChannelsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ClosedChannelsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ClosedChannelsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ClosedChannelsResponse. */
    interface IClosedChannelsResponse {
        /** ClosedChannelsResponse channels */
        channels?: lnrpc.IChannelCloseSummary[] | null;
    }

    /** Represents a ClosedChannelsResponse. */
    class ClosedChannelsResponse implements IClosedChannelsResponse {
        /**
         * Constructs a new ClosedChannelsResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IClosedChannelsResponse);

        /** ClosedChannelsResponse channels. */
        public channels: lnrpc.IChannelCloseSummary[];

        /**
         * Creates a new ClosedChannelsResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ClosedChannelsResponse instance
         */
        public static create(
            properties?: lnrpc.IClosedChannelsResponse
        ): lnrpc.ClosedChannelsResponse;

        /**
         * Encodes the specified ClosedChannelsResponse message. Does not implicitly {@link lnrpc.ClosedChannelsResponse.verify|verify} messages.
         * @param message ClosedChannelsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IClosedChannelsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ClosedChannelsResponse message, length delimited. Does not implicitly {@link lnrpc.ClosedChannelsResponse.verify|verify} messages.
         * @param message ClosedChannelsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IClosedChannelsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ClosedChannelsResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ClosedChannelsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ClosedChannelsResponse;

        /**
         * Decodes a ClosedChannelsResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ClosedChannelsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ClosedChannelsResponse;

        /**
         * Verifies a ClosedChannelsResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ClosedChannelsResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ClosedChannelsResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ClosedChannelsResponse;

        /**
         * Creates a plain object from a ClosedChannelsResponse message. Also converts values to other types if specified.
         * @param message ClosedChannelsResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ClosedChannelsResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ClosedChannelsResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ClosedChannelsResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a Peer. */
    interface IPeer {
        /** Peer pub_key */
        pub_key?: string | null;

        /** Peer address */
        address?: string | null;

        /** Peer bytes_sent */
        bytes_sent?: Long | null;

        /** Peer bytes_recv */
        bytes_recv?: Long | null;

        /** Peer sat_sent */
        sat_sent?: Long | null;

        /** Peer sat_recv */
        sat_recv?: Long | null;

        /** Peer inbound */
        inbound?: boolean | null;

        /** Peer ping_time */
        ping_time?: Long | null;

        /** Peer sync_type */
        sync_type?: lnrpc.Peer.SyncType | null;

        /** Peer features */
        features?: { [k: string]: lnrpc.IFeature } | null;

        /** Peer errors */
        errors?: lnrpc.ITimestampedError[] | null;

        /** Peer flap_count */
        flap_count?: number | null;

        /** Peer last_flap_ns */
        last_flap_ns?: Long | null;

        /** Peer last_ping_payload */
        last_ping_payload?: Uint8Array | null;
    }

    /** Represents a Peer. */
    class Peer implements IPeer {
        /**
         * Constructs a new Peer.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IPeer);

        /** Peer pub_key. */
        public pub_key: string;

        /** Peer address. */
        public address: string;

        /** Peer bytes_sent. */
        public bytes_sent: Long;

        /** Peer bytes_recv. */
        public bytes_recv: Long;

        /** Peer sat_sent. */
        public sat_sent: Long;

        /** Peer sat_recv. */
        public sat_recv: Long;

        /** Peer inbound. */
        public inbound: boolean;

        /** Peer ping_time. */
        public ping_time: Long;

        /** Peer sync_type. */
        public sync_type: lnrpc.Peer.SyncType;

        /** Peer features. */
        public features: { [k: string]: lnrpc.IFeature };

        /** Peer errors. */
        public errors: lnrpc.ITimestampedError[];

        /** Peer flap_count. */
        public flap_count: number;

        /** Peer last_flap_ns. */
        public last_flap_ns: Long;

        /** Peer last_ping_payload. */
        public last_ping_payload: Uint8Array;

        /**
         * Creates a new Peer instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Peer instance
         */
        public static create(properties?: lnrpc.IPeer): lnrpc.Peer;

        /**
         * Encodes the specified Peer message. Does not implicitly {@link lnrpc.Peer.verify|verify} messages.
         * @param message Peer message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IPeer,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Peer message, length delimited. Does not implicitly {@link lnrpc.Peer.verify|verify} messages.
         * @param message Peer message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IPeer,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a Peer message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Peer
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.Peer;

        /**
         * Decodes a Peer message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Peer
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.Peer;

        /**
         * Verifies a Peer message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a Peer message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Peer
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.Peer;

        /**
         * Creates a plain object from a Peer message. Also converts values to other types if specified.
         * @param message Peer
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.Peer,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Peer to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Peer
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace Peer {
        /** SyncType enum. */
        enum SyncType {
            UNKNOWN_SYNC = 0,
            ACTIVE_SYNC = 1,
            PASSIVE_SYNC = 2,
            PINNED_SYNC = 3
        }
    }

    /** Properties of a TimestampedError. */
    interface ITimestampedError {
        /** TimestampedError timestamp */
        timestamp?: Long | null;

        /** TimestampedError error */
        error?: string | null;
    }

    /** Represents a TimestampedError. */
    class TimestampedError implements ITimestampedError {
        /**
         * Constructs a new TimestampedError.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ITimestampedError);

        /** TimestampedError timestamp. */
        public timestamp: Long;

        /** TimestampedError error. */
        public error: string;

        /**
         * Creates a new TimestampedError instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TimestampedError instance
         */
        public static create(
            properties?: lnrpc.ITimestampedError
        ): lnrpc.TimestampedError;

        /**
         * Encodes the specified TimestampedError message. Does not implicitly {@link lnrpc.TimestampedError.verify|verify} messages.
         * @param message TimestampedError message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ITimestampedError,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified TimestampedError message, length delimited. Does not implicitly {@link lnrpc.TimestampedError.verify|verify} messages.
         * @param message TimestampedError message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ITimestampedError,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a TimestampedError message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TimestampedError
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.TimestampedError;

        /**
         * Decodes a TimestampedError message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TimestampedError
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.TimestampedError;

        /**
         * Verifies a TimestampedError message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a TimestampedError message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TimestampedError
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.TimestampedError;

        /**
         * Creates a plain object from a TimestampedError message. Also converts values to other types if specified.
         * @param message TimestampedError
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.TimestampedError,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this TimestampedError to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TimestampedError
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListPeersRequest. */
    interface IListPeersRequest {
        /** ListPeersRequest latest_error */
        latest_error?: boolean | null;
    }

    /** Represents a ListPeersRequest. */
    class ListPeersRequest implements IListPeersRequest {
        /**
         * Constructs a new ListPeersRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IListPeersRequest);

        /** ListPeersRequest latest_error. */
        public latest_error: boolean;

        /**
         * Creates a new ListPeersRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListPeersRequest instance
         */
        public static create(
            properties?: lnrpc.IListPeersRequest
        ): lnrpc.ListPeersRequest;

        /**
         * Encodes the specified ListPeersRequest message. Does not implicitly {@link lnrpc.ListPeersRequest.verify|verify} messages.
         * @param message ListPeersRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IListPeersRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListPeersRequest message, length delimited. Does not implicitly {@link lnrpc.ListPeersRequest.verify|verify} messages.
         * @param message ListPeersRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IListPeersRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListPeersRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListPeersRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ListPeersRequest;

        /**
         * Decodes a ListPeersRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListPeersRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ListPeersRequest;

        /**
         * Verifies a ListPeersRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListPeersRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListPeersRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ListPeersRequest;

        /**
         * Creates a plain object from a ListPeersRequest message. Also converts values to other types if specified.
         * @param message ListPeersRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ListPeersRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListPeersRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListPeersRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListPeersResponse. */
    interface IListPeersResponse {
        /** ListPeersResponse peers */
        peers?: lnrpc.IPeer[] | null;
    }

    /** Represents a ListPeersResponse. */
    class ListPeersResponse implements IListPeersResponse {
        /**
         * Constructs a new ListPeersResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IListPeersResponse);

        /** ListPeersResponse peers. */
        public peers: lnrpc.IPeer[];

        /**
         * Creates a new ListPeersResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListPeersResponse instance
         */
        public static create(
            properties?: lnrpc.IListPeersResponse
        ): lnrpc.ListPeersResponse;

        /**
         * Encodes the specified ListPeersResponse message. Does not implicitly {@link lnrpc.ListPeersResponse.verify|verify} messages.
         * @param message ListPeersResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IListPeersResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListPeersResponse message, length delimited. Does not implicitly {@link lnrpc.ListPeersResponse.verify|verify} messages.
         * @param message ListPeersResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IListPeersResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListPeersResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListPeersResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ListPeersResponse;

        /**
         * Decodes a ListPeersResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListPeersResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ListPeersResponse;

        /**
         * Verifies a ListPeersResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListPeersResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListPeersResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ListPeersResponse;

        /**
         * Creates a plain object from a ListPeersResponse message. Also converts values to other types if specified.
         * @param message ListPeersResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ListPeersResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListPeersResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListPeersResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PeerEventSubscription. */
    interface IPeerEventSubscription {}

    /** Represents a PeerEventSubscription. */
    class PeerEventSubscription implements IPeerEventSubscription {
        /**
         * Constructs a new PeerEventSubscription.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IPeerEventSubscription);

        /**
         * Creates a new PeerEventSubscription instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PeerEventSubscription instance
         */
        public static create(
            properties?: lnrpc.IPeerEventSubscription
        ): lnrpc.PeerEventSubscription;

        /**
         * Encodes the specified PeerEventSubscription message. Does not implicitly {@link lnrpc.PeerEventSubscription.verify|verify} messages.
         * @param message PeerEventSubscription message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IPeerEventSubscription,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PeerEventSubscription message, length delimited. Does not implicitly {@link lnrpc.PeerEventSubscription.verify|verify} messages.
         * @param message PeerEventSubscription message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IPeerEventSubscription,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PeerEventSubscription message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PeerEventSubscription
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.PeerEventSubscription;

        /**
         * Decodes a PeerEventSubscription message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PeerEventSubscription
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.PeerEventSubscription;

        /**
         * Verifies a PeerEventSubscription message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PeerEventSubscription message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PeerEventSubscription
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.PeerEventSubscription;

        /**
         * Creates a plain object from a PeerEventSubscription message. Also converts values to other types if specified.
         * @param message PeerEventSubscription
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.PeerEventSubscription,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PeerEventSubscription to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PeerEventSubscription
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PeerEvent. */
    interface IPeerEvent {
        /** PeerEvent pub_key */
        pub_key?: string | null;

        /** PeerEvent type */
        type?: lnrpc.PeerEvent.EventType | null;
    }

    /** Represents a PeerEvent. */
    class PeerEvent implements IPeerEvent {
        /**
         * Constructs a new PeerEvent.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IPeerEvent);

        /** PeerEvent pub_key. */
        public pub_key: string;

        /** PeerEvent type. */
        public type: lnrpc.PeerEvent.EventType;

        /**
         * Creates a new PeerEvent instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PeerEvent instance
         */
        public static create(properties?: lnrpc.IPeerEvent): lnrpc.PeerEvent;

        /**
         * Encodes the specified PeerEvent message. Does not implicitly {@link lnrpc.PeerEvent.verify|verify} messages.
         * @param message PeerEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IPeerEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PeerEvent message, length delimited. Does not implicitly {@link lnrpc.PeerEvent.verify|verify} messages.
         * @param message PeerEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IPeerEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PeerEvent message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PeerEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.PeerEvent;

        /**
         * Decodes a PeerEvent message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PeerEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.PeerEvent;

        /**
         * Verifies a PeerEvent message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PeerEvent message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PeerEvent
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.PeerEvent;

        /**
         * Creates a plain object from a PeerEvent message. Also converts values to other types if specified.
         * @param message PeerEvent
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.PeerEvent,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PeerEvent to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PeerEvent
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace PeerEvent {
        /** EventType enum. */
        enum EventType {
            PEER_ONLINE = 0,
            PEER_OFFLINE = 1
        }
    }

    /** Properties of a GetInfoRequest. */
    interface IGetInfoRequest {}

    /** Represents a GetInfoRequest. */
    class GetInfoRequest implements IGetInfoRequest {
        /**
         * Constructs a new GetInfoRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IGetInfoRequest);

        /**
         * Creates a new GetInfoRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetInfoRequest instance
         */
        public static create(
            properties?: lnrpc.IGetInfoRequest
        ): lnrpc.GetInfoRequest;

        /**
         * Encodes the specified GetInfoRequest message. Does not implicitly {@link lnrpc.GetInfoRequest.verify|verify} messages.
         * @param message GetInfoRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IGetInfoRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetInfoRequest message, length delimited. Does not implicitly {@link lnrpc.GetInfoRequest.verify|verify} messages.
         * @param message GetInfoRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IGetInfoRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetInfoRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetInfoRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.GetInfoRequest;

        /**
         * Decodes a GetInfoRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetInfoRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.GetInfoRequest;

        /**
         * Verifies a GetInfoRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetInfoRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetInfoRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.GetInfoRequest;

        /**
         * Creates a plain object from a GetInfoRequest message. Also converts values to other types if specified.
         * @param message GetInfoRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.GetInfoRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetInfoRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetInfoRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetInfoResponse. */
    interface IGetInfoResponse {
        /** GetInfoResponse version */
        version?: string | null;

        /** GetInfoResponse commit_hash */
        commit_hash?: string | null;

        /** GetInfoResponse identity_pubkey */
        identity_pubkey?: string | null;

        /** GetInfoResponse alias */
        alias?: string | null;

        /** GetInfoResponse color */
        color?: string | null;

        /** GetInfoResponse num_pending_channels */
        num_pending_channels?: number | null;

        /** GetInfoResponse num_active_channels */
        num_active_channels?: number | null;

        /** GetInfoResponse num_inactive_channels */
        num_inactive_channels?: number | null;

        /** GetInfoResponse num_peers */
        num_peers?: number | null;

        /** GetInfoResponse block_height */
        block_height?: number | null;

        /** GetInfoResponse block_hash */
        block_hash?: string | null;

        /** GetInfoResponse best_header_timestamp */
        best_header_timestamp?: Long | null;

        /** GetInfoResponse synced_to_chain */
        synced_to_chain?: boolean | null;

        /** GetInfoResponse synced_to_graph */
        synced_to_graph?: boolean | null;

        /** GetInfoResponse testnet */
        testnet?: boolean | null;

        /** GetInfoResponse chains */
        chains?: lnrpc.IChain[] | null;

        /** GetInfoResponse uris */
        uris?: string[] | null;

        /** GetInfoResponse features */
        features?: { [k: string]: lnrpc.IFeature } | null;

        /** GetInfoResponse require_htlc_interceptor */
        require_htlc_interceptor?: boolean | null;

        /** GetInfoResponse store_final_htlc_resolutions */
        store_final_htlc_resolutions?: boolean | null;
    }

    /** Represents a GetInfoResponse. */
    class GetInfoResponse implements IGetInfoResponse {
        /**
         * Constructs a new GetInfoResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IGetInfoResponse);

        /** GetInfoResponse version. */
        public version: string;

        /** GetInfoResponse commit_hash. */
        public commit_hash: string;

        /** GetInfoResponse identity_pubkey. */
        public identity_pubkey: string;

        /** GetInfoResponse alias. */
        public alias: string;

        /** GetInfoResponse color. */
        public color: string;

        /** GetInfoResponse num_pending_channels. */
        public num_pending_channels: number;

        /** GetInfoResponse num_active_channels. */
        public num_active_channels: number;

        /** GetInfoResponse num_inactive_channels. */
        public num_inactive_channels: number;

        /** GetInfoResponse num_peers. */
        public num_peers: number;

        /** GetInfoResponse block_height. */
        public block_height: number;

        /** GetInfoResponse block_hash. */
        public block_hash: string;

        /** GetInfoResponse best_header_timestamp. */
        public best_header_timestamp: Long;

        /** GetInfoResponse synced_to_chain. */
        public synced_to_chain: boolean;

        /** GetInfoResponse synced_to_graph. */
        public synced_to_graph: boolean;

        /** GetInfoResponse testnet. */
        public testnet: boolean;

        /** GetInfoResponse chains. */
        public chains: lnrpc.IChain[];

        /** GetInfoResponse uris. */
        public uris: string[];

        /** GetInfoResponse features. */
        public features: { [k: string]: lnrpc.IFeature };

        /** GetInfoResponse require_htlc_interceptor. */
        public require_htlc_interceptor: boolean;

        /** GetInfoResponse store_final_htlc_resolutions. */
        public store_final_htlc_resolutions: boolean;

        /**
         * Creates a new GetInfoResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetInfoResponse instance
         */
        public static create(
            properties?: lnrpc.IGetInfoResponse
        ): lnrpc.GetInfoResponse;

        /**
         * Encodes the specified GetInfoResponse message. Does not implicitly {@link lnrpc.GetInfoResponse.verify|verify} messages.
         * @param message GetInfoResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IGetInfoResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetInfoResponse message, length delimited. Does not implicitly {@link lnrpc.GetInfoResponse.verify|verify} messages.
         * @param message GetInfoResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IGetInfoResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetInfoResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetInfoResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.GetInfoResponse;

        /**
         * Decodes a GetInfoResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetInfoResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.GetInfoResponse;

        /**
         * Verifies a GetInfoResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetInfoResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetInfoResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.GetInfoResponse;

        /**
         * Creates a plain object from a GetInfoResponse message. Also converts values to other types if specified.
         * @param message GetInfoResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.GetInfoResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetInfoResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetInfoResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetDebugInfoRequest. */
    interface IGetDebugInfoRequest {}

    /** Represents a GetDebugInfoRequest. */
    class GetDebugInfoRequest implements IGetDebugInfoRequest {
        /**
         * Constructs a new GetDebugInfoRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IGetDebugInfoRequest);

        /**
         * Creates a new GetDebugInfoRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetDebugInfoRequest instance
         */
        public static create(
            properties?: lnrpc.IGetDebugInfoRequest
        ): lnrpc.GetDebugInfoRequest;

        /**
         * Encodes the specified GetDebugInfoRequest message. Does not implicitly {@link lnrpc.GetDebugInfoRequest.verify|verify} messages.
         * @param message GetDebugInfoRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IGetDebugInfoRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetDebugInfoRequest message, length delimited. Does not implicitly {@link lnrpc.GetDebugInfoRequest.verify|verify} messages.
         * @param message GetDebugInfoRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IGetDebugInfoRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetDebugInfoRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetDebugInfoRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.GetDebugInfoRequest;

        /**
         * Decodes a GetDebugInfoRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetDebugInfoRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.GetDebugInfoRequest;

        /**
         * Verifies a GetDebugInfoRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetDebugInfoRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetDebugInfoRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.GetDebugInfoRequest;

        /**
         * Creates a plain object from a GetDebugInfoRequest message. Also converts values to other types if specified.
         * @param message GetDebugInfoRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.GetDebugInfoRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetDebugInfoRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetDebugInfoRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetDebugInfoResponse. */
    interface IGetDebugInfoResponse {
        /** GetDebugInfoResponse config */
        config?: { [k: string]: string } | null;

        /** GetDebugInfoResponse log */
        log?: string[] | null;
    }

    /** Represents a GetDebugInfoResponse. */
    class GetDebugInfoResponse implements IGetDebugInfoResponse {
        /**
         * Constructs a new GetDebugInfoResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IGetDebugInfoResponse);

        /** GetDebugInfoResponse config. */
        public config: { [k: string]: string };

        /** GetDebugInfoResponse log. */
        public log: string[];

        /**
         * Creates a new GetDebugInfoResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetDebugInfoResponse instance
         */
        public static create(
            properties?: lnrpc.IGetDebugInfoResponse
        ): lnrpc.GetDebugInfoResponse;

        /**
         * Encodes the specified GetDebugInfoResponse message. Does not implicitly {@link lnrpc.GetDebugInfoResponse.verify|verify} messages.
         * @param message GetDebugInfoResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IGetDebugInfoResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetDebugInfoResponse message, length delimited. Does not implicitly {@link lnrpc.GetDebugInfoResponse.verify|verify} messages.
         * @param message GetDebugInfoResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IGetDebugInfoResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetDebugInfoResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetDebugInfoResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.GetDebugInfoResponse;

        /**
         * Decodes a GetDebugInfoResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetDebugInfoResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.GetDebugInfoResponse;

        /**
         * Verifies a GetDebugInfoResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetDebugInfoResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetDebugInfoResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.GetDebugInfoResponse;

        /**
         * Creates a plain object from a GetDebugInfoResponse message. Also converts values to other types if specified.
         * @param message GetDebugInfoResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.GetDebugInfoResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetDebugInfoResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetDebugInfoResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetRecoveryInfoRequest. */
    interface IGetRecoveryInfoRequest {}

    /** Represents a GetRecoveryInfoRequest. */
    class GetRecoveryInfoRequest implements IGetRecoveryInfoRequest {
        /**
         * Constructs a new GetRecoveryInfoRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IGetRecoveryInfoRequest);

        /**
         * Creates a new GetRecoveryInfoRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetRecoveryInfoRequest instance
         */
        public static create(
            properties?: lnrpc.IGetRecoveryInfoRequest
        ): lnrpc.GetRecoveryInfoRequest;

        /**
         * Encodes the specified GetRecoveryInfoRequest message. Does not implicitly {@link lnrpc.GetRecoveryInfoRequest.verify|verify} messages.
         * @param message GetRecoveryInfoRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IGetRecoveryInfoRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetRecoveryInfoRequest message, length delimited. Does not implicitly {@link lnrpc.GetRecoveryInfoRequest.verify|verify} messages.
         * @param message GetRecoveryInfoRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IGetRecoveryInfoRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetRecoveryInfoRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetRecoveryInfoRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.GetRecoveryInfoRequest;

        /**
         * Decodes a GetRecoveryInfoRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetRecoveryInfoRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.GetRecoveryInfoRequest;

        /**
         * Verifies a GetRecoveryInfoRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetRecoveryInfoRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetRecoveryInfoRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.GetRecoveryInfoRequest;

        /**
         * Creates a plain object from a GetRecoveryInfoRequest message. Also converts values to other types if specified.
         * @param message GetRecoveryInfoRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.GetRecoveryInfoRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetRecoveryInfoRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetRecoveryInfoRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetRecoveryInfoResponse. */
    interface IGetRecoveryInfoResponse {
        /** GetRecoveryInfoResponse recovery_mode */
        recovery_mode?: boolean | null;

        /** GetRecoveryInfoResponse recovery_finished */
        recovery_finished?: boolean | null;

        /** GetRecoveryInfoResponse progress */
        progress?: number | null;
    }

    /** Represents a GetRecoveryInfoResponse. */
    class GetRecoveryInfoResponse implements IGetRecoveryInfoResponse {
        /**
         * Constructs a new GetRecoveryInfoResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IGetRecoveryInfoResponse);

        /** GetRecoveryInfoResponse recovery_mode. */
        public recovery_mode: boolean;

        /** GetRecoveryInfoResponse recovery_finished. */
        public recovery_finished: boolean;

        /** GetRecoveryInfoResponse progress. */
        public progress: number;

        /**
         * Creates a new GetRecoveryInfoResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetRecoveryInfoResponse instance
         */
        public static create(
            properties?: lnrpc.IGetRecoveryInfoResponse
        ): lnrpc.GetRecoveryInfoResponse;

        /**
         * Encodes the specified GetRecoveryInfoResponse message. Does not implicitly {@link lnrpc.GetRecoveryInfoResponse.verify|verify} messages.
         * @param message GetRecoveryInfoResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IGetRecoveryInfoResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetRecoveryInfoResponse message, length delimited. Does not implicitly {@link lnrpc.GetRecoveryInfoResponse.verify|verify} messages.
         * @param message GetRecoveryInfoResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IGetRecoveryInfoResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetRecoveryInfoResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetRecoveryInfoResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.GetRecoveryInfoResponse;

        /**
         * Decodes a GetRecoveryInfoResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetRecoveryInfoResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.GetRecoveryInfoResponse;

        /**
         * Verifies a GetRecoveryInfoResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetRecoveryInfoResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetRecoveryInfoResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.GetRecoveryInfoResponse;

        /**
         * Creates a plain object from a GetRecoveryInfoResponse message. Also converts values to other types if specified.
         * @param message GetRecoveryInfoResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.GetRecoveryInfoResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetRecoveryInfoResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetRecoveryInfoResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a Chain. */
    interface IChain {
        /** Chain chain */
        chain?: string | null;

        /** Chain network */
        network?: string | null;
    }

    /** Represents a Chain. */
    class Chain implements IChain {
        /**
         * Constructs a new Chain.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChain);

        /** Chain chain. */
        public chain: string;

        /** Chain network. */
        public network: string;

        /**
         * Creates a new Chain instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Chain instance
         */
        public static create(properties?: lnrpc.IChain): lnrpc.Chain;

        /**
         * Encodes the specified Chain message. Does not implicitly {@link lnrpc.Chain.verify|verify} messages.
         * @param message Chain message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChain,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Chain message, length delimited. Does not implicitly {@link lnrpc.Chain.verify|verify} messages.
         * @param message Chain message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChain,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a Chain message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Chain
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.Chain;

        /**
         * Decodes a Chain message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Chain
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.Chain;

        /**
         * Verifies a Chain message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a Chain message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Chain
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.Chain;

        /**
         * Creates a plain object from a Chain message. Also converts values to other types if specified.
         * @param message Chain
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.Chain,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Chain to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Chain
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ConfirmationUpdate. */
    interface IConfirmationUpdate {
        /** ConfirmationUpdate block_sha */
        block_sha?: Uint8Array | null;

        /** ConfirmationUpdate block_height */
        block_height?: number | null;

        /** ConfirmationUpdate num_confs_left */
        num_confs_left?: number | null;
    }

    /** Represents a ConfirmationUpdate. */
    class ConfirmationUpdate implements IConfirmationUpdate {
        /**
         * Constructs a new ConfirmationUpdate.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IConfirmationUpdate);

        /** ConfirmationUpdate block_sha. */
        public block_sha: Uint8Array;

        /** ConfirmationUpdate block_height. */
        public block_height: number;

        /** ConfirmationUpdate num_confs_left. */
        public num_confs_left: number;

        /**
         * Creates a new ConfirmationUpdate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ConfirmationUpdate instance
         */
        public static create(
            properties?: lnrpc.IConfirmationUpdate
        ): lnrpc.ConfirmationUpdate;

        /**
         * Encodes the specified ConfirmationUpdate message. Does not implicitly {@link lnrpc.ConfirmationUpdate.verify|verify} messages.
         * @param message ConfirmationUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IConfirmationUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ConfirmationUpdate message, length delimited. Does not implicitly {@link lnrpc.ConfirmationUpdate.verify|verify} messages.
         * @param message ConfirmationUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IConfirmationUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ConfirmationUpdate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ConfirmationUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ConfirmationUpdate;

        /**
         * Decodes a ConfirmationUpdate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ConfirmationUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ConfirmationUpdate;

        /**
         * Verifies a ConfirmationUpdate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ConfirmationUpdate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ConfirmationUpdate
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ConfirmationUpdate;

        /**
         * Creates a plain object from a ConfirmationUpdate message. Also converts values to other types if specified.
         * @param message ConfirmationUpdate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ConfirmationUpdate,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ConfirmationUpdate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ConfirmationUpdate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChannelOpenUpdate. */
    interface IChannelOpenUpdate {
        /** ChannelOpenUpdate channel_point */
        channel_point?: lnrpc.IChannelPoint | null;
    }

    /** Represents a ChannelOpenUpdate. */
    class ChannelOpenUpdate implements IChannelOpenUpdate {
        /**
         * Constructs a new ChannelOpenUpdate.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelOpenUpdate);

        /** ChannelOpenUpdate channel_point. */
        public channel_point?: lnrpc.IChannelPoint | null;

        /**
         * Creates a new ChannelOpenUpdate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelOpenUpdate instance
         */
        public static create(
            properties?: lnrpc.IChannelOpenUpdate
        ): lnrpc.ChannelOpenUpdate;

        /**
         * Encodes the specified ChannelOpenUpdate message. Does not implicitly {@link lnrpc.ChannelOpenUpdate.verify|verify} messages.
         * @param message ChannelOpenUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelOpenUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelOpenUpdate message, length delimited. Does not implicitly {@link lnrpc.ChannelOpenUpdate.verify|verify} messages.
         * @param message ChannelOpenUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelOpenUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelOpenUpdate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelOpenUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelOpenUpdate;

        /**
         * Decodes a ChannelOpenUpdate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelOpenUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelOpenUpdate;

        /**
         * Verifies a ChannelOpenUpdate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelOpenUpdate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelOpenUpdate
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelOpenUpdate;

        /**
         * Creates a plain object from a ChannelOpenUpdate message. Also converts values to other types if specified.
         * @param message ChannelOpenUpdate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelOpenUpdate,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelOpenUpdate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelOpenUpdate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a CloseOutput. */
    interface ICloseOutput {
        /** CloseOutput amount_sat */
        amount_sat?: Long | null;

        /** CloseOutput pk_script */
        pk_script?: Uint8Array | null;

        /** CloseOutput is_local */
        is_local?: boolean | null;

        /** CloseOutput custom_channel_data */
        custom_channel_data?: Uint8Array | null;
    }

    /** Represents a CloseOutput. */
    class CloseOutput implements ICloseOutput {
        /**
         * Constructs a new CloseOutput.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ICloseOutput);

        /** CloseOutput amount_sat. */
        public amount_sat: Long;

        /** CloseOutput pk_script. */
        public pk_script: Uint8Array;

        /** CloseOutput is_local. */
        public is_local: boolean;

        /** CloseOutput custom_channel_data. */
        public custom_channel_data: Uint8Array;

        /**
         * Creates a new CloseOutput instance using the specified properties.
         * @param [properties] Properties to set
         * @returns CloseOutput instance
         */
        public static create(
            properties?: lnrpc.ICloseOutput
        ): lnrpc.CloseOutput;

        /**
         * Encodes the specified CloseOutput message. Does not implicitly {@link lnrpc.CloseOutput.verify|verify} messages.
         * @param message CloseOutput message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ICloseOutput,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified CloseOutput message, length delimited. Does not implicitly {@link lnrpc.CloseOutput.verify|verify} messages.
         * @param message CloseOutput message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ICloseOutput,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a CloseOutput message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns CloseOutput
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.CloseOutput;

        /**
         * Decodes a CloseOutput message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns CloseOutput
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.CloseOutput;

        /**
         * Verifies a CloseOutput message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a CloseOutput message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns CloseOutput
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.CloseOutput;

        /**
         * Creates a plain object from a CloseOutput message. Also converts values to other types if specified.
         * @param message CloseOutput
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.CloseOutput,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this CloseOutput to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for CloseOutput
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChannelCloseUpdate. */
    interface IChannelCloseUpdate {
        /** ChannelCloseUpdate closing_txid */
        closing_txid?: Uint8Array | null;

        /** ChannelCloseUpdate success */
        success?: boolean | null;

        /** ChannelCloseUpdate local_close_output */
        local_close_output?: lnrpc.ICloseOutput | null;

        /** ChannelCloseUpdate remote_close_output */
        remote_close_output?: lnrpc.ICloseOutput | null;

        /** ChannelCloseUpdate additional_outputs */
        additional_outputs?: lnrpc.ICloseOutput[] | null;
    }

    /** Represents a ChannelCloseUpdate. */
    class ChannelCloseUpdate implements IChannelCloseUpdate {
        /**
         * Constructs a new ChannelCloseUpdate.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelCloseUpdate);

        /** ChannelCloseUpdate closing_txid. */
        public closing_txid: Uint8Array;

        /** ChannelCloseUpdate success. */
        public success: boolean;

        /** ChannelCloseUpdate local_close_output. */
        public local_close_output?: lnrpc.ICloseOutput | null;

        /** ChannelCloseUpdate remote_close_output. */
        public remote_close_output?: lnrpc.ICloseOutput | null;

        /** ChannelCloseUpdate additional_outputs. */
        public additional_outputs: lnrpc.ICloseOutput[];

        /**
         * Creates a new ChannelCloseUpdate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelCloseUpdate instance
         */
        public static create(
            properties?: lnrpc.IChannelCloseUpdate
        ): lnrpc.ChannelCloseUpdate;

        /**
         * Encodes the specified ChannelCloseUpdate message. Does not implicitly {@link lnrpc.ChannelCloseUpdate.verify|verify} messages.
         * @param message ChannelCloseUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelCloseUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelCloseUpdate message, length delimited. Does not implicitly {@link lnrpc.ChannelCloseUpdate.verify|verify} messages.
         * @param message ChannelCloseUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelCloseUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelCloseUpdate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelCloseUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelCloseUpdate;

        /**
         * Decodes a ChannelCloseUpdate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelCloseUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelCloseUpdate;

        /**
         * Verifies a ChannelCloseUpdate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelCloseUpdate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelCloseUpdate
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelCloseUpdate;

        /**
         * Creates a plain object from a ChannelCloseUpdate message. Also converts values to other types if specified.
         * @param message ChannelCloseUpdate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelCloseUpdate,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelCloseUpdate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelCloseUpdate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a CloseChannelRequest. */
    interface ICloseChannelRequest {
        /** CloseChannelRequest channel_point */
        channel_point?: lnrpc.IChannelPoint | null;

        /** CloseChannelRequest force */
        force?: boolean | null;

        /** CloseChannelRequest target_conf */
        target_conf?: number | null;

        /** CloseChannelRequest sat_per_byte */
        sat_per_byte?: Long | null;

        /** CloseChannelRequest delivery_address */
        delivery_address?: string | null;

        /** CloseChannelRequest sat_per_vbyte */
        sat_per_vbyte?: Long | null;

        /** CloseChannelRequest max_fee_per_vbyte */
        max_fee_per_vbyte?: Long | null;

        /** CloseChannelRequest no_wait */
        no_wait?: boolean | null;
    }

    /** Represents a CloseChannelRequest. */
    class CloseChannelRequest implements ICloseChannelRequest {
        /**
         * Constructs a new CloseChannelRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ICloseChannelRequest);

        /** CloseChannelRequest channel_point. */
        public channel_point?: lnrpc.IChannelPoint | null;

        /** CloseChannelRequest force. */
        public force: boolean;

        /** CloseChannelRequest target_conf. */
        public target_conf: number;

        /** CloseChannelRequest sat_per_byte. */
        public sat_per_byte: Long;

        /** CloseChannelRequest delivery_address. */
        public delivery_address: string;

        /** CloseChannelRequest sat_per_vbyte. */
        public sat_per_vbyte: Long;

        /** CloseChannelRequest max_fee_per_vbyte. */
        public max_fee_per_vbyte: Long;

        /** CloseChannelRequest no_wait. */
        public no_wait: boolean;

        /**
         * Creates a new CloseChannelRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns CloseChannelRequest instance
         */
        public static create(
            properties?: lnrpc.ICloseChannelRequest
        ): lnrpc.CloseChannelRequest;

        /**
         * Encodes the specified CloseChannelRequest message. Does not implicitly {@link lnrpc.CloseChannelRequest.verify|verify} messages.
         * @param message CloseChannelRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ICloseChannelRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified CloseChannelRequest message, length delimited. Does not implicitly {@link lnrpc.CloseChannelRequest.verify|verify} messages.
         * @param message CloseChannelRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ICloseChannelRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a CloseChannelRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns CloseChannelRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.CloseChannelRequest;

        /**
         * Decodes a CloseChannelRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns CloseChannelRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.CloseChannelRequest;

        /**
         * Verifies a CloseChannelRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a CloseChannelRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns CloseChannelRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.CloseChannelRequest;

        /**
         * Creates a plain object from a CloseChannelRequest message. Also converts values to other types if specified.
         * @param message CloseChannelRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.CloseChannelRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this CloseChannelRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for CloseChannelRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a CloseStatusUpdate. */
    interface ICloseStatusUpdate {
        /** CloseStatusUpdate close_pending */
        close_pending?: lnrpc.IPendingUpdate | null;

        /** CloseStatusUpdate chan_close */
        chan_close?: lnrpc.IChannelCloseUpdate | null;

        /** CloseStatusUpdate close_instant */
        close_instant?: lnrpc.IInstantUpdate | null;
    }

    /** Represents a CloseStatusUpdate. */
    class CloseStatusUpdate implements ICloseStatusUpdate {
        /**
         * Constructs a new CloseStatusUpdate.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ICloseStatusUpdate);

        /** CloseStatusUpdate close_pending. */
        public close_pending?: lnrpc.IPendingUpdate | null;

        /** CloseStatusUpdate chan_close. */
        public chan_close?: lnrpc.IChannelCloseUpdate | null;

        /** CloseStatusUpdate close_instant. */
        public close_instant?: lnrpc.IInstantUpdate | null;

        /** CloseStatusUpdate update. */
        public update?: 'close_pending' | 'chan_close' | 'close_instant';

        /**
         * Creates a new CloseStatusUpdate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns CloseStatusUpdate instance
         */
        public static create(
            properties?: lnrpc.ICloseStatusUpdate
        ): lnrpc.CloseStatusUpdate;

        /**
         * Encodes the specified CloseStatusUpdate message. Does not implicitly {@link lnrpc.CloseStatusUpdate.verify|verify} messages.
         * @param message CloseStatusUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ICloseStatusUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified CloseStatusUpdate message, length delimited. Does not implicitly {@link lnrpc.CloseStatusUpdate.verify|verify} messages.
         * @param message CloseStatusUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ICloseStatusUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a CloseStatusUpdate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns CloseStatusUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.CloseStatusUpdate;

        /**
         * Decodes a CloseStatusUpdate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns CloseStatusUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.CloseStatusUpdate;

        /**
         * Verifies a CloseStatusUpdate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a CloseStatusUpdate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns CloseStatusUpdate
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.CloseStatusUpdate;

        /**
         * Creates a plain object from a CloseStatusUpdate message. Also converts values to other types if specified.
         * @param message CloseStatusUpdate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.CloseStatusUpdate,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this CloseStatusUpdate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for CloseStatusUpdate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PendingUpdate. */
    interface IPendingUpdate {
        /** PendingUpdate txid */
        txid?: Uint8Array | null;

        /** PendingUpdate output_index */
        output_index?: number | null;
    }

    /** Represents a PendingUpdate. */
    class PendingUpdate implements IPendingUpdate {
        /**
         * Constructs a new PendingUpdate.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IPendingUpdate);

        /** PendingUpdate txid. */
        public txid: Uint8Array;

        /** PendingUpdate output_index. */
        public output_index: number;

        /**
         * Creates a new PendingUpdate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PendingUpdate instance
         */
        public static create(
            properties?: lnrpc.IPendingUpdate
        ): lnrpc.PendingUpdate;

        /**
         * Encodes the specified PendingUpdate message. Does not implicitly {@link lnrpc.PendingUpdate.verify|verify} messages.
         * @param message PendingUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IPendingUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PendingUpdate message, length delimited. Does not implicitly {@link lnrpc.PendingUpdate.verify|verify} messages.
         * @param message PendingUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IPendingUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PendingUpdate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PendingUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.PendingUpdate;

        /**
         * Decodes a PendingUpdate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PendingUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.PendingUpdate;

        /**
         * Verifies a PendingUpdate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PendingUpdate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PendingUpdate
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.PendingUpdate;

        /**
         * Creates a plain object from a PendingUpdate message. Also converts values to other types if specified.
         * @param message PendingUpdate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.PendingUpdate,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PendingUpdate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PendingUpdate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an InstantUpdate. */
    interface IInstantUpdate {}

    /** Represents an InstantUpdate. */
    class InstantUpdate implements IInstantUpdate {
        /**
         * Constructs a new InstantUpdate.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IInstantUpdate);

        /**
         * Creates a new InstantUpdate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns InstantUpdate instance
         */
        public static create(
            properties?: lnrpc.IInstantUpdate
        ): lnrpc.InstantUpdate;

        /**
         * Encodes the specified InstantUpdate message. Does not implicitly {@link lnrpc.InstantUpdate.verify|verify} messages.
         * @param message InstantUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IInstantUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified InstantUpdate message, length delimited. Does not implicitly {@link lnrpc.InstantUpdate.verify|verify} messages.
         * @param message InstantUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IInstantUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an InstantUpdate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns InstantUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.InstantUpdate;

        /**
         * Decodes an InstantUpdate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns InstantUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.InstantUpdate;

        /**
         * Verifies an InstantUpdate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an InstantUpdate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns InstantUpdate
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.InstantUpdate;

        /**
         * Creates a plain object from an InstantUpdate message. Also converts values to other types if specified.
         * @param message InstantUpdate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.InstantUpdate,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this InstantUpdate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for InstantUpdate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ReadyForPsbtFunding. */
    interface IReadyForPsbtFunding {
        /** ReadyForPsbtFunding funding_address */
        funding_address?: string | null;

        /** ReadyForPsbtFunding funding_amount */
        funding_amount?: Long | null;

        /** ReadyForPsbtFunding psbt */
        psbt?: Uint8Array | null;
    }

    /** Represents a ReadyForPsbtFunding. */
    class ReadyForPsbtFunding implements IReadyForPsbtFunding {
        /**
         * Constructs a new ReadyForPsbtFunding.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IReadyForPsbtFunding);

        /** ReadyForPsbtFunding funding_address. */
        public funding_address: string;

        /** ReadyForPsbtFunding funding_amount. */
        public funding_amount: Long;

        /** ReadyForPsbtFunding psbt. */
        public psbt: Uint8Array;

        /**
         * Creates a new ReadyForPsbtFunding instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ReadyForPsbtFunding instance
         */
        public static create(
            properties?: lnrpc.IReadyForPsbtFunding
        ): lnrpc.ReadyForPsbtFunding;

        /**
         * Encodes the specified ReadyForPsbtFunding message. Does not implicitly {@link lnrpc.ReadyForPsbtFunding.verify|verify} messages.
         * @param message ReadyForPsbtFunding message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IReadyForPsbtFunding,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ReadyForPsbtFunding message, length delimited. Does not implicitly {@link lnrpc.ReadyForPsbtFunding.verify|verify} messages.
         * @param message ReadyForPsbtFunding message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IReadyForPsbtFunding,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ReadyForPsbtFunding message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ReadyForPsbtFunding
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ReadyForPsbtFunding;

        /**
         * Decodes a ReadyForPsbtFunding message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ReadyForPsbtFunding
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ReadyForPsbtFunding;

        /**
         * Verifies a ReadyForPsbtFunding message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ReadyForPsbtFunding message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ReadyForPsbtFunding
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ReadyForPsbtFunding;

        /**
         * Creates a plain object from a ReadyForPsbtFunding message. Also converts values to other types if specified.
         * @param message ReadyForPsbtFunding
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ReadyForPsbtFunding,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ReadyForPsbtFunding to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ReadyForPsbtFunding
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a BatchOpenChannelRequest. */
    interface IBatchOpenChannelRequest {
        /** BatchOpenChannelRequest channels */
        channels?: lnrpc.IBatchOpenChannel[] | null;

        /** BatchOpenChannelRequest target_conf */
        target_conf?: number | null;

        /** BatchOpenChannelRequest sat_per_vbyte */
        sat_per_vbyte?: Long | null;

        /** BatchOpenChannelRequest min_confs */
        min_confs?: number | null;

        /** BatchOpenChannelRequest spend_unconfirmed */
        spend_unconfirmed?: boolean | null;

        /** BatchOpenChannelRequest label */
        label?: string | null;

        /** BatchOpenChannelRequest coin_selection_strategy */
        coin_selection_strategy?: lnrpc.CoinSelectionStrategy | null;
    }

    /** Represents a BatchOpenChannelRequest. */
    class BatchOpenChannelRequest implements IBatchOpenChannelRequest {
        /**
         * Constructs a new BatchOpenChannelRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IBatchOpenChannelRequest);

        /** BatchOpenChannelRequest channels. */
        public channels: lnrpc.IBatchOpenChannel[];

        /** BatchOpenChannelRequest target_conf. */
        public target_conf: number;

        /** BatchOpenChannelRequest sat_per_vbyte. */
        public sat_per_vbyte: Long;

        /** BatchOpenChannelRequest min_confs. */
        public min_confs: number;

        /** BatchOpenChannelRequest spend_unconfirmed. */
        public spend_unconfirmed: boolean;

        /** BatchOpenChannelRequest label. */
        public label: string;

        /** BatchOpenChannelRequest coin_selection_strategy. */
        public coin_selection_strategy: lnrpc.CoinSelectionStrategy;

        /**
         * Creates a new BatchOpenChannelRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BatchOpenChannelRequest instance
         */
        public static create(
            properties?: lnrpc.IBatchOpenChannelRequest
        ): lnrpc.BatchOpenChannelRequest;

        /**
         * Encodes the specified BatchOpenChannelRequest message. Does not implicitly {@link lnrpc.BatchOpenChannelRequest.verify|verify} messages.
         * @param message BatchOpenChannelRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IBatchOpenChannelRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BatchOpenChannelRequest message, length delimited. Does not implicitly {@link lnrpc.BatchOpenChannelRequest.verify|verify} messages.
         * @param message BatchOpenChannelRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IBatchOpenChannelRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BatchOpenChannelRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BatchOpenChannelRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.BatchOpenChannelRequest;

        /**
         * Decodes a BatchOpenChannelRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BatchOpenChannelRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.BatchOpenChannelRequest;

        /**
         * Verifies a BatchOpenChannelRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BatchOpenChannelRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BatchOpenChannelRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.BatchOpenChannelRequest;

        /**
         * Creates a plain object from a BatchOpenChannelRequest message. Also converts values to other types if specified.
         * @param message BatchOpenChannelRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.BatchOpenChannelRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BatchOpenChannelRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BatchOpenChannelRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a BatchOpenChannel. */
    interface IBatchOpenChannel {
        /** BatchOpenChannel node_pubkey */
        node_pubkey?: Uint8Array | null;

        /** BatchOpenChannel local_funding_amount */
        local_funding_amount?: Long | null;

        /** BatchOpenChannel push_sat */
        push_sat?: Long | null;

        /** BatchOpenChannel private */
        private?: boolean | null;

        /** BatchOpenChannel min_htlc_msat */
        min_htlc_msat?: Long | null;

        /** BatchOpenChannel remote_csv_delay */
        remote_csv_delay?: number | null;

        /** BatchOpenChannel close_address */
        close_address?: string | null;

        /** BatchOpenChannel pending_chan_id */
        pending_chan_id?: Uint8Array | null;

        /** BatchOpenChannel commitment_type */
        commitment_type?: lnrpc.CommitmentType | null;

        /** BatchOpenChannel remote_max_value_in_flight_msat */
        remote_max_value_in_flight_msat?: Long | null;

        /** BatchOpenChannel remote_max_htlcs */
        remote_max_htlcs?: number | null;

        /** BatchOpenChannel max_local_csv */
        max_local_csv?: number | null;

        /** BatchOpenChannel zero_conf */
        zero_conf?: boolean | null;

        /** BatchOpenChannel scid_alias */
        scid_alias?: boolean | null;

        /** BatchOpenChannel base_fee */
        base_fee?: Long | null;

        /** BatchOpenChannel fee_rate */
        fee_rate?: Long | null;

        /** BatchOpenChannel use_base_fee */
        use_base_fee?: boolean | null;

        /** BatchOpenChannel use_fee_rate */
        use_fee_rate?: boolean | null;

        /** BatchOpenChannel remote_chan_reserve_sat */
        remote_chan_reserve_sat?: Long | null;

        /** BatchOpenChannel memo */
        memo?: string | null;
    }

    /** Represents a BatchOpenChannel. */
    class BatchOpenChannel implements IBatchOpenChannel {
        /**
         * Constructs a new BatchOpenChannel.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IBatchOpenChannel);

        /** BatchOpenChannel node_pubkey. */
        public node_pubkey: Uint8Array;

        /** BatchOpenChannel local_funding_amount. */
        public local_funding_amount: Long;

        /** BatchOpenChannel push_sat. */
        public push_sat: Long;

        /** BatchOpenChannel private. */
        public private: boolean;

        /** BatchOpenChannel min_htlc_msat. */
        public min_htlc_msat: Long;

        /** BatchOpenChannel remote_csv_delay. */
        public remote_csv_delay: number;

        /** BatchOpenChannel close_address. */
        public close_address: string;

        /** BatchOpenChannel pending_chan_id. */
        public pending_chan_id: Uint8Array;

        /** BatchOpenChannel commitment_type. */
        public commitment_type: lnrpc.CommitmentType;

        /** BatchOpenChannel remote_max_value_in_flight_msat. */
        public remote_max_value_in_flight_msat: Long;

        /** BatchOpenChannel remote_max_htlcs. */
        public remote_max_htlcs: number;

        /** BatchOpenChannel max_local_csv. */
        public max_local_csv: number;

        /** BatchOpenChannel zero_conf. */
        public zero_conf: boolean;

        /** BatchOpenChannel scid_alias. */
        public scid_alias: boolean;

        /** BatchOpenChannel base_fee. */
        public base_fee: Long;

        /** BatchOpenChannel fee_rate. */
        public fee_rate: Long;

        /** BatchOpenChannel use_base_fee. */
        public use_base_fee: boolean;

        /** BatchOpenChannel use_fee_rate. */
        public use_fee_rate: boolean;

        /** BatchOpenChannel remote_chan_reserve_sat. */
        public remote_chan_reserve_sat: Long;

        /** BatchOpenChannel memo. */
        public memo: string;

        /**
         * Creates a new BatchOpenChannel instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BatchOpenChannel instance
         */
        public static create(
            properties?: lnrpc.IBatchOpenChannel
        ): lnrpc.BatchOpenChannel;

        /**
         * Encodes the specified BatchOpenChannel message. Does not implicitly {@link lnrpc.BatchOpenChannel.verify|verify} messages.
         * @param message BatchOpenChannel message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IBatchOpenChannel,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BatchOpenChannel message, length delimited. Does not implicitly {@link lnrpc.BatchOpenChannel.verify|verify} messages.
         * @param message BatchOpenChannel message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IBatchOpenChannel,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BatchOpenChannel message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BatchOpenChannel
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.BatchOpenChannel;

        /**
         * Decodes a BatchOpenChannel message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BatchOpenChannel
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.BatchOpenChannel;

        /**
         * Verifies a BatchOpenChannel message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BatchOpenChannel message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BatchOpenChannel
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.BatchOpenChannel;

        /**
         * Creates a plain object from a BatchOpenChannel message. Also converts values to other types if specified.
         * @param message BatchOpenChannel
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.BatchOpenChannel,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BatchOpenChannel to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BatchOpenChannel
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a BatchOpenChannelResponse. */
    interface IBatchOpenChannelResponse {
        /** BatchOpenChannelResponse pending_channels */
        pending_channels?: lnrpc.IPendingUpdate[] | null;
    }

    /** Represents a BatchOpenChannelResponse. */
    class BatchOpenChannelResponse implements IBatchOpenChannelResponse {
        /**
         * Constructs a new BatchOpenChannelResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IBatchOpenChannelResponse);

        /** BatchOpenChannelResponse pending_channels. */
        public pending_channels: lnrpc.IPendingUpdate[];

        /**
         * Creates a new BatchOpenChannelResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BatchOpenChannelResponse instance
         */
        public static create(
            properties?: lnrpc.IBatchOpenChannelResponse
        ): lnrpc.BatchOpenChannelResponse;

        /**
         * Encodes the specified BatchOpenChannelResponse message. Does not implicitly {@link lnrpc.BatchOpenChannelResponse.verify|verify} messages.
         * @param message BatchOpenChannelResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IBatchOpenChannelResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BatchOpenChannelResponse message, length delimited. Does not implicitly {@link lnrpc.BatchOpenChannelResponse.verify|verify} messages.
         * @param message BatchOpenChannelResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IBatchOpenChannelResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BatchOpenChannelResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BatchOpenChannelResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.BatchOpenChannelResponse;

        /**
         * Decodes a BatchOpenChannelResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BatchOpenChannelResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.BatchOpenChannelResponse;

        /**
         * Verifies a BatchOpenChannelResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BatchOpenChannelResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BatchOpenChannelResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.BatchOpenChannelResponse;

        /**
         * Creates a plain object from a BatchOpenChannelResponse message. Also converts values to other types if specified.
         * @param message BatchOpenChannelResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.BatchOpenChannelResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BatchOpenChannelResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BatchOpenChannelResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an OpenChannelRequest. */
    interface IOpenChannelRequest {
        /** OpenChannelRequest sat_per_vbyte */
        sat_per_vbyte?: Long | null;

        /** OpenChannelRequest node_pubkey */
        node_pubkey?: Uint8Array | null;

        /** OpenChannelRequest node_pubkey_string */
        node_pubkey_string?: string | null;

        /** OpenChannelRequest local_funding_amount */
        local_funding_amount?: Long | null;

        /** OpenChannelRequest push_sat */
        push_sat?: Long | null;

        /** OpenChannelRequest target_conf */
        target_conf?: number | null;

        /** OpenChannelRequest sat_per_byte */
        sat_per_byte?: Long | null;

        /** OpenChannelRequest private */
        private?: boolean | null;

        /** OpenChannelRequest min_htlc_msat */
        min_htlc_msat?: Long | null;

        /** OpenChannelRequest remote_csv_delay */
        remote_csv_delay?: number | null;

        /** OpenChannelRequest min_confs */
        min_confs?: number | null;

        /** OpenChannelRequest spend_unconfirmed */
        spend_unconfirmed?: boolean | null;

        /** OpenChannelRequest close_address */
        close_address?: string | null;

        /** OpenChannelRequest funding_shim */
        funding_shim?: lnrpc.IFundingShim | null;

        /** OpenChannelRequest remote_max_value_in_flight_msat */
        remote_max_value_in_flight_msat?: Long | null;

        /** OpenChannelRequest remote_max_htlcs */
        remote_max_htlcs?: number | null;

        /** OpenChannelRequest max_local_csv */
        max_local_csv?: number | null;

        /** OpenChannelRequest commitment_type */
        commitment_type?: lnrpc.CommitmentType | null;

        /** OpenChannelRequest zero_conf */
        zero_conf?: boolean | null;

        /** OpenChannelRequest scid_alias */
        scid_alias?: boolean | null;

        /** OpenChannelRequest base_fee */
        base_fee?: Long | null;

        /** OpenChannelRequest fee_rate */
        fee_rate?: Long | null;

        /** OpenChannelRequest use_base_fee */
        use_base_fee?: boolean | null;

        /** OpenChannelRequest use_fee_rate */
        use_fee_rate?: boolean | null;

        /** OpenChannelRequest remote_chan_reserve_sat */
        remote_chan_reserve_sat?: Long | null;

        /** OpenChannelRequest fund_max */
        fund_max?: boolean | null;

        /** OpenChannelRequest memo */
        memo?: string | null;

        /** OpenChannelRequest outpoints */
        outpoints?: lnrpc.IOutPoint[] | null;
    }

    /** Represents an OpenChannelRequest. */
    class OpenChannelRequest implements IOpenChannelRequest {
        /**
         * Constructs a new OpenChannelRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IOpenChannelRequest);

        /** OpenChannelRequest sat_per_vbyte. */
        public sat_per_vbyte: Long;

        /** OpenChannelRequest node_pubkey. */
        public node_pubkey: Uint8Array;

        /** OpenChannelRequest node_pubkey_string. */
        public node_pubkey_string: string;

        /** OpenChannelRequest local_funding_amount. */
        public local_funding_amount: Long;

        /** OpenChannelRequest push_sat. */
        public push_sat: Long;

        /** OpenChannelRequest target_conf. */
        public target_conf: number;

        /** OpenChannelRequest sat_per_byte. */
        public sat_per_byte: Long;

        /** OpenChannelRequest private. */
        public private: boolean;

        /** OpenChannelRequest min_htlc_msat. */
        public min_htlc_msat: Long;

        /** OpenChannelRequest remote_csv_delay. */
        public remote_csv_delay: number;

        /** OpenChannelRequest min_confs. */
        public min_confs: number;

        /** OpenChannelRequest spend_unconfirmed. */
        public spend_unconfirmed: boolean;

        /** OpenChannelRequest close_address. */
        public close_address: string;

        /** OpenChannelRequest funding_shim. */
        public funding_shim?: lnrpc.IFundingShim | null;

        /** OpenChannelRequest remote_max_value_in_flight_msat. */
        public remote_max_value_in_flight_msat: Long;

        /** OpenChannelRequest remote_max_htlcs. */
        public remote_max_htlcs: number;

        /** OpenChannelRequest max_local_csv. */
        public max_local_csv: number;

        /** OpenChannelRequest commitment_type. */
        public commitment_type: lnrpc.CommitmentType;

        /** OpenChannelRequest zero_conf. */
        public zero_conf: boolean;

        /** OpenChannelRequest scid_alias. */
        public scid_alias: boolean;

        /** OpenChannelRequest base_fee. */
        public base_fee: Long;

        /** OpenChannelRequest fee_rate. */
        public fee_rate: Long;

        /** OpenChannelRequest use_base_fee. */
        public use_base_fee: boolean;

        /** OpenChannelRequest use_fee_rate. */
        public use_fee_rate: boolean;

        /** OpenChannelRequest remote_chan_reserve_sat. */
        public remote_chan_reserve_sat: Long;

        /** OpenChannelRequest fund_max. */
        public fund_max: boolean;

        /** OpenChannelRequest memo. */
        public memo: string;

        /** OpenChannelRequest outpoints. */
        public outpoints: lnrpc.IOutPoint[];

        /**
         * Creates a new OpenChannelRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns OpenChannelRequest instance
         */
        public static create(
            properties?: lnrpc.IOpenChannelRequest
        ): lnrpc.OpenChannelRequest;

        /**
         * Encodes the specified OpenChannelRequest message. Does not implicitly {@link lnrpc.OpenChannelRequest.verify|verify} messages.
         * @param message OpenChannelRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IOpenChannelRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified OpenChannelRequest message, length delimited. Does not implicitly {@link lnrpc.OpenChannelRequest.verify|verify} messages.
         * @param message OpenChannelRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IOpenChannelRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an OpenChannelRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns OpenChannelRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.OpenChannelRequest;

        /**
         * Decodes an OpenChannelRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns OpenChannelRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.OpenChannelRequest;

        /**
         * Verifies an OpenChannelRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an OpenChannelRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns OpenChannelRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.OpenChannelRequest;

        /**
         * Creates a plain object from an OpenChannelRequest message. Also converts values to other types if specified.
         * @param message OpenChannelRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.OpenChannelRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this OpenChannelRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for OpenChannelRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an OpenStatusUpdate. */
    interface IOpenStatusUpdate {
        /** OpenStatusUpdate chan_pending */
        chan_pending?: lnrpc.IPendingUpdate | null;

        /** OpenStatusUpdate chan_open */
        chan_open?: lnrpc.IChannelOpenUpdate | null;

        /** OpenStatusUpdate psbt_fund */
        psbt_fund?: lnrpc.IReadyForPsbtFunding | null;

        /** OpenStatusUpdate pending_chan_id */
        pending_chan_id?: Uint8Array | null;
    }

    /** Represents an OpenStatusUpdate. */
    class OpenStatusUpdate implements IOpenStatusUpdate {
        /**
         * Constructs a new OpenStatusUpdate.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IOpenStatusUpdate);

        /** OpenStatusUpdate chan_pending. */
        public chan_pending?: lnrpc.IPendingUpdate | null;

        /** OpenStatusUpdate chan_open. */
        public chan_open?: lnrpc.IChannelOpenUpdate | null;

        /** OpenStatusUpdate psbt_fund. */
        public psbt_fund?: lnrpc.IReadyForPsbtFunding | null;

        /** OpenStatusUpdate pending_chan_id. */
        public pending_chan_id: Uint8Array;

        /** OpenStatusUpdate update. */
        public update?: 'chan_pending' | 'chan_open' | 'psbt_fund';

        /**
         * Creates a new OpenStatusUpdate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns OpenStatusUpdate instance
         */
        public static create(
            properties?: lnrpc.IOpenStatusUpdate
        ): lnrpc.OpenStatusUpdate;

        /**
         * Encodes the specified OpenStatusUpdate message. Does not implicitly {@link lnrpc.OpenStatusUpdate.verify|verify} messages.
         * @param message OpenStatusUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IOpenStatusUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified OpenStatusUpdate message, length delimited. Does not implicitly {@link lnrpc.OpenStatusUpdate.verify|verify} messages.
         * @param message OpenStatusUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IOpenStatusUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an OpenStatusUpdate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns OpenStatusUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.OpenStatusUpdate;

        /**
         * Decodes an OpenStatusUpdate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns OpenStatusUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.OpenStatusUpdate;

        /**
         * Verifies an OpenStatusUpdate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an OpenStatusUpdate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns OpenStatusUpdate
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.OpenStatusUpdate;

        /**
         * Creates a plain object from an OpenStatusUpdate message. Also converts values to other types if specified.
         * @param message OpenStatusUpdate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.OpenStatusUpdate,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this OpenStatusUpdate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for OpenStatusUpdate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a KeyLocator. */
    interface IKeyLocator {
        /** KeyLocator key_family */
        key_family?: number | null;

        /** KeyLocator key_index */
        key_index?: number | null;
    }

    /** Represents a KeyLocator. */
    class KeyLocator implements IKeyLocator {
        /**
         * Constructs a new KeyLocator.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IKeyLocator);

        /** KeyLocator key_family. */
        public key_family: number;

        /** KeyLocator key_index. */
        public key_index: number;

        /**
         * Creates a new KeyLocator instance using the specified properties.
         * @param [properties] Properties to set
         * @returns KeyLocator instance
         */
        public static create(properties?: lnrpc.IKeyLocator): lnrpc.KeyLocator;

        /**
         * Encodes the specified KeyLocator message. Does not implicitly {@link lnrpc.KeyLocator.verify|verify} messages.
         * @param message KeyLocator message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IKeyLocator,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified KeyLocator message, length delimited. Does not implicitly {@link lnrpc.KeyLocator.verify|verify} messages.
         * @param message KeyLocator message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IKeyLocator,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a KeyLocator message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns KeyLocator
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.KeyLocator;

        /**
         * Decodes a KeyLocator message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns KeyLocator
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.KeyLocator;

        /**
         * Verifies a KeyLocator message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a KeyLocator message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns KeyLocator
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.KeyLocator;

        /**
         * Creates a plain object from a KeyLocator message. Also converts values to other types if specified.
         * @param message KeyLocator
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.KeyLocator,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this KeyLocator to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for KeyLocator
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a KeyDescriptor. */
    interface IKeyDescriptor {
        /** KeyDescriptor raw_key_bytes */
        raw_key_bytes?: Uint8Array | null;

        /** KeyDescriptor key_loc */
        key_loc?: lnrpc.IKeyLocator | null;
    }

    /** Represents a KeyDescriptor. */
    class KeyDescriptor implements IKeyDescriptor {
        /**
         * Constructs a new KeyDescriptor.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IKeyDescriptor);

        /** KeyDescriptor raw_key_bytes. */
        public raw_key_bytes: Uint8Array;

        /** KeyDescriptor key_loc. */
        public key_loc?: lnrpc.IKeyLocator | null;

        /**
         * Creates a new KeyDescriptor instance using the specified properties.
         * @param [properties] Properties to set
         * @returns KeyDescriptor instance
         */
        public static create(
            properties?: lnrpc.IKeyDescriptor
        ): lnrpc.KeyDescriptor;

        /**
         * Encodes the specified KeyDescriptor message. Does not implicitly {@link lnrpc.KeyDescriptor.verify|verify} messages.
         * @param message KeyDescriptor message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IKeyDescriptor,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified KeyDescriptor message, length delimited. Does not implicitly {@link lnrpc.KeyDescriptor.verify|verify} messages.
         * @param message KeyDescriptor message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IKeyDescriptor,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a KeyDescriptor message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns KeyDescriptor
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.KeyDescriptor;

        /**
         * Decodes a KeyDescriptor message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns KeyDescriptor
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.KeyDescriptor;

        /**
         * Verifies a KeyDescriptor message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a KeyDescriptor message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns KeyDescriptor
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.KeyDescriptor;

        /**
         * Creates a plain object from a KeyDescriptor message. Also converts values to other types if specified.
         * @param message KeyDescriptor
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.KeyDescriptor,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this KeyDescriptor to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for KeyDescriptor
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChanPointShim. */
    interface IChanPointShim {
        /** ChanPointShim amt */
        amt?: Long | null;

        /** ChanPointShim chan_point */
        chan_point?: lnrpc.IChannelPoint | null;

        /** ChanPointShim local_key */
        local_key?: lnrpc.IKeyDescriptor | null;

        /** ChanPointShim remote_key */
        remote_key?: Uint8Array | null;

        /** ChanPointShim pending_chan_id */
        pending_chan_id?: Uint8Array | null;

        /** ChanPointShim thaw_height */
        thaw_height?: number | null;

        /** ChanPointShim musig2 */
        musig2?: boolean | null;
    }

    /** Represents a ChanPointShim. */
    class ChanPointShim implements IChanPointShim {
        /**
         * Constructs a new ChanPointShim.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChanPointShim);

        /** ChanPointShim amt. */
        public amt: Long;

        /** ChanPointShim chan_point. */
        public chan_point?: lnrpc.IChannelPoint | null;

        /** ChanPointShim local_key. */
        public local_key?: lnrpc.IKeyDescriptor | null;

        /** ChanPointShim remote_key. */
        public remote_key: Uint8Array;

        /** ChanPointShim pending_chan_id. */
        public pending_chan_id: Uint8Array;

        /** ChanPointShim thaw_height. */
        public thaw_height: number;

        /** ChanPointShim musig2. */
        public musig2: boolean;

        /**
         * Creates a new ChanPointShim instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChanPointShim instance
         */
        public static create(
            properties?: lnrpc.IChanPointShim
        ): lnrpc.ChanPointShim;

        /**
         * Encodes the specified ChanPointShim message. Does not implicitly {@link lnrpc.ChanPointShim.verify|verify} messages.
         * @param message ChanPointShim message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChanPointShim,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChanPointShim message, length delimited. Does not implicitly {@link lnrpc.ChanPointShim.verify|verify} messages.
         * @param message ChanPointShim message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChanPointShim,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChanPointShim message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChanPointShim
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChanPointShim;

        /**
         * Decodes a ChanPointShim message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChanPointShim
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChanPointShim;

        /**
         * Verifies a ChanPointShim message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChanPointShim message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChanPointShim
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChanPointShim;

        /**
         * Creates a plain object from a ChanPointShim message. Also converts values to other types if specified.
         * @param message ChanPointShim
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChanPointShim,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChanPointShim to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChanPointShim
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PsbtShim. */
    interface IPsbtShim {
        /** PsbtShim pending_chan_id */
        pending_chan_id?: Uint8Array | null;

        /** PsbtShim base_psbt */
        base_psbt?: Uint8Array | null;

        /** PsbtShim no_publish */
        no_publish?: boolean | null;
    }

    /** Represents a PsbtShim. */
    class PsbtShim implements IPsbtShim {
        /**
         * Constructs a new PsbtShim.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IPsbtShim);

        /** PsbtShim pending_chan_id. */
        public pending_chan_id: Uint8Array;

        /** PsbtShim base_psbt. */
        public base_psbt: Uint8Array;

        /** PsbtShim no_publish. */
        public no_publish: boolean;

        /**
         * Creates a new PsbtShim instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PsbtShim instance
         */
        public static create(properties?: lnrpc.IPsbtShim): lnrpc.PsbtShim;

        /**
         * Encodes the specified PsbtShim message. Does not implicitly {@link lnrpc.PsbtShim.verify|verify} messages.
         * @param message PsbtShim message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IPsbtShim,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PsbtShim message, length delimited. Does not implicitly {@link lnrpc.PsbtShim.verify|verify} messages.
         * @param message PsbtShim message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IPsbtShim,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PsbtShim message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PsbtShim
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.PsbtShim;

        /**
         * Decodes a PsbtShim message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PsbtShim
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.PsbtShim;

        /**
         * Verifies a PsbtShim message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PsbtShim message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PsbtShim
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.PsbtShim;

        /**
         * Creates a plain object from a PsbtShim message. Also converts values to other types if specified.
         * @param message PsbtShim
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.PsbtShim,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PsbtShim to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PsbtShim
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a FundingShim. */
    interface IFundingShim {
        /** FundingShim chan_point_shim */
        chan_point_shim?: lnrpc.IChanPointShim | null;

        /** FundingShim psbt_shim */
        psbt_shim?: lnrpc.IPsbtShim | null;
    }

    /** Represents a FundingShim. */
    class FundingShim implements IFundingShim {
        /**
         * Constructs a new FundingShim.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IFundingShim);

        /** FundingShim chan_point_shim. */
        public chan_point_shim?: lnrpc.IChanPointShim | null;

        /** FundingShim psbt_shim. */
        public psbt_shim?: lnrpc.IPsbtShim | null;

        /** FundingShim shim. */
        public shim?: 'chan_point_shim' | 'psbt_shim';

        /**
         * Creates a new FundingShim instance using the specified properties.
         * @param [properties] Properties to set
         * @returns FundingShim instance
         */
        public static create(
            properties?: lnrpc.IFundingShim
        ): lnrpc.FundingShim;

        /**
         * Encodes the specified FundingShim message. Does not implicitly {@link lnrpc.FundingShim.verify|verify} messages.
         * @param message FundingShim message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IFundingShim,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified FundingShim message, length delimited. Does not implicitly {@link lnrpc.FundingShim.verify|verify} messages.
         * @param message FundingShim message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IFundingShim,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a FundingShim message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns FundingShim
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.FundingShim;

        /**
         * Decodes a FundingShim message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns FundingShim
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.FundingShim;

        /**
         * Verifies a FundingShim message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a FundingShim message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns FundingShim
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.FundingShim;

        /**
         * Creates a plain object from a FundingShim message. Also converts values to other types if specified.
         * @param message FundingShim
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.FundingShim,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this FundingShim to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for FundingShim
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a FundingShimCancel. */
    interface IFundingShimCancel {
        /** FundingShimCancel pending_chan_id */
        pending_chan_id?: Uint8Array | null;
    }

    /** Represents a FundingShimCancel. */
    class FundingShimCancel implements IFundingShimCancel {
        /**
         * Constructs a new FundingShimCancel.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IFundingShimCancel);

        /** FundingShimCancel pending_chan_id. */
        public pending_chan_id: Uint8Array;

        /**
         * Creates a new FundingShimCancel instance using the specified properties.
         * @param [properties] Properties to set
         * @returns FundingShimCancel instance
         */
        public static create(
            properties?: lnrpc.IFundingShimCancel
        ): lnrpc.FundingShimCancel;

        /**
         * Encodes the specified FundingShimCancel message. Does not implicitly {@link lnrpc.FundingShimCancel.verify|verify} messages.
         * @param message FundingShimCancel message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IFundingShimCancel,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified FundingShimCancel message, length delimited. Does not implicitly {@link lnrpc.FundingShimCancel.verify|verify} messages.
         * @param message FundingShimCancel message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IFundingShimCancel,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a FundingShimCancel message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns FundingShimCancel
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.FundingShimCancel;

        /**
         * Decodes a FundingShimCancel message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns FundingShimCancel
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.FundingShimCancel;

        /**
         * Verifies a FundingShimCancel message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a FundingShimCancel message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns FundingShimCancel
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.FundingShimCancel;

        /**
         * Creates a plain object from a FundingShimCancel message. Also converts values to other types if specified.
         * @param message FundingShimCancel
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.FundingShimCancel,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this FundingShimCancel to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for FundingShimCancel
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a FundingPsbtVerify. */
    interface IFundingPsbtVerify {
        /** FundingPsbtVerify funded_psbt */
        funded_psbt?: Uint8Array | null;

        /** FundingPsbtVerify pending_chan_id */
        pending_chan_id?: Uint8Array | null;

        /** FundingPsbtVerify skip_finalize */
        skip_finalize?: boolean | null;
    }

    /** Represents a FundingPsbtVerify. */
    class FundingPsbtVerify implements IFundingPsbtVerify {
        /**
         * Constructs a new FundingPsbtVerify.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IFundingPsbtVerify);

        /** FundingPsbtVerify funded_psbt. */
        public funded_psbt: Uint8Array;

        /** FundingPsbtVerify pending_chan_id. */
        public pending_chan_id: Uint8Array;

        /** FundingPsbtVerify skip_finalize. */
        public skip_finalize: boolean;

        /**
         * Creates a new FundingPsbtVerify instance using the specified properties.
         * @param [properties] Properties to set
         * @returns FundingPsbtVerify instance
         */
        public static create(
            properties?: lnrpc.IFundingPsbtVerify
        ): lnrpc.FundingPsbtVerify;

        /**
         * Encodes the specified FundingPsbtVerify message. Does not implicitly {@link lnrpc.FundingPsbtVerify.verify|verify} messages.
         * @param message FundingPsbtVerify message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IFundingPsbtVerify,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified FundingPsbtVerify message, length delimited. Does not implicitly {@link lnrpc.FundingPsbtVerify.verify|verify} messages.
         * @param message FundingPsbtVerify message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IFundingPsbtVerify,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a FundingPsbtVerify message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns FundingPsbtVerify
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.FundingPsbtVerify;

        /**
         * Decodes a FundingPsbtVerify message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns FundingPsbtVerify
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.FundingPsbtVerify;

        /**
         * Verifies a FundingPsbtVerify message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a FundingPsbtVerify message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns FundingPsbtVerify
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.FundingPsbtVerify;

        /**
         * Creates a plain object from a FundingPsbtVerify message. Also converts values to other types if specified.
         * @param message FundingPsbtVerify
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.FundingPsbtVerify,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this FundingPsbtVerify to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for FundingPsbtVerify
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a FundingPsbtFinalize. */
    interface IFundingPsbtFinalize {
        /** FundingPsbtFinalize signed_psbt */
        signed_psbt?: Uint8Array | null;

        /** FundingPsbtFinalize pending_chan_id */
        pending_chan_id?: Uint8Array | null;

        /** FundingPsbtFinalize final_raw_tx */
        final_raw_tx?: Uint8Array | null;
    }

    /** Represents a FundingPsbtFinalize. */
    class FundingPsbtFinalize implements IFundingPsbtFinalize {
        /**
         * Constructs a new FundingPsbtFinalize.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IFundingPsbtFinalize);

        /** FundingPsbtFinalize signed_psbt. */
        public signed_psbt: Uint8Array;

        /** FundingPsbtFinalize pending_chan_id. */
        public pending_chan_id: Uint8Array;

        /** FundingPsbtFinalize final_raw_tx. */
        public final_raw_tx: Uint8Array;

        /**
         * Creates a new FundingPsbtFinalize instance using the specified properties.
         * @param [properties] Properties to set
         * @returns FundingPsbtFinalize instance
         */
        public static create(
            properties?: lnrpc.IFundingPsbtFinalize
        ): lnrpc.FundingPsbtFinalize;

        /**
         * Encodes the specified FundingPsbtFinalize message. Does not implicitly {@link lnrpc.FundingPsbtFinalize.verify|verify} messages.
         * @param message FundingPsbtFinalize message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IFundingPsbtFinalize,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified FundingPsbtFinalize message, length delimited. Does not implicitly {@link lnrpc.FundingPsbtFinalize.verify|verify} messages.
         * @param message FundingPsbtFinalize message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IFundingPsbtFinalize,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a FundingPsbtFinalize message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns FundingPsbtFinalize
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.FundingPsbtFinalize;

        /**
         * Decodes a FundingPsbtFinalize message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns FundingPsbtFinalize
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.FundingPsbtFinalize;

        /**
         * Verifies a FundingPsbtFinalize message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a FundingPsbtFinalize message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns FundingPsbtFinalize
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.FundingPsbtFinalize;

        /**
         * Creates a plain object from a FundingPsbtFinalize message. Also converts values to other types if specified.
         * @param message FundingPsbtFinalize
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.FundingPsbtFinalize,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this FundingPsbtFinalize to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for FundingPsbtFinalize
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a FundingTransitionMsg. */
    interface IFundingTransitionMsg {
        /** FundingTransitionMsg shim_register */
        shim_register?: lnrpc.IFundingShim | null;

        /** FundingTransitionMsg shim_cancel */
        shim_cancel?: lnrpc.IFundingShimCancel | null;

        /** FundingTransitionMsg psbt_verify */
        psbt_verify?: lnrpc.IFundingPsbtVerify | null;

        /** FundingTransitionMsg psbt_finalize */
        psbt_finalize?: lnrpc.IFundingPsbtFinalize | null;
    }

    /** Represents a FundingTransitionMsg. */
    class FundingTransitionMsg implements IFundingTransitionMsg {
        /**
         * Constructs a new FundingTransitionMsg.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IFundingTransitionMsg);

        /** FundingTransitionMsg shim_register. */
        public shim_register?: lnrpc.IFundingShim | null;

        /** FundingTransitionMsg shim_cancel. */
        public shim_cancel?: lnrpc.IFundingShimCancel | null;

        /** FundingTransitionMsg psbt_verify. */
        public psbt_verify?: lnrpc.IFundingPsbtVerify | null;

        /** FundingTransitionMsg psbt_finalize. */
        public psbt_finalize?: lnrpc.IFundingPsbtFinalize | null;

        /** FundingTransitionMsg trigger. */
        public trigger?:
            | 'shim_register'
            | 'shim_cancel'
            | 'psbt_verify'
            | 'psbt_finalize';

        /**
         * Creates a new FundingTransitionMsg instance using the specified properties.
         * @param [properties] Properties to set
         * @returns FundingTransitionMsg instance
         */
        public static create(
            properties?: lnrpc.IFundingTransitionMsg
        ): lnrpc.FundingTransitionMsg;

        /**
         * Encodes the specified FundingTransitionMsg message. Does not implicitly {@link lnrpc.FundingTransitionMsg.verify|verify} messages.
         * @param message FundingTransitionMsg message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IFundingTransitionMsg,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified FundingTransitionMsg message, length delimited. Does not implicitly {@link lnrpc.FundingTransitionMsg.verify|verify} messages.
         * @param message FundingTransitionMsg message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IFundingTransitionMsg,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a FundingTransitionMsg message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns FundingTransitionMsg
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.FundingTransitionMsg;

        /**
         * Decodes a FundingTransitionMsg message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns FundingTransitionMsg
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.FundingTransitionMsg;

        /**
         * Verifies a FundingTransitionMsg message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a FundingTransitionMsg message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns FundingTransitionMsg
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.FundingTransitionMsg;

        /**
         * Creates a plain object from a FundingTransitionMsg message. Also converts values to other types if specified.
         * @param message FundingTransitionMsg
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.FundingTransitionMsg,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this FundingTransitionMsg to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for FundingTransitionMsg
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a FundingStateStepResp. */
    interface IFundingStateStepResp {}

    /** Represents a FundingStateStepResp. */
    class FundingStateStepResp implements IFundingStateStepResp {
        /**
         * Constructs a new FundingStateStepResp.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IFundingStateStepResp);

        /**
         * Creates a new FundingStateStepResp instance using the specified properties.
         * @param [properties] Properties to set
         * @returns FundingStateStepResp instance
         */
        public static create(
            properties?: lnrpc.IFundingStateStepResp
        ): lnrpc.FundingStateStepResp;

        /**
         * Encodes the specified FundingStateStepResp message. Does not implicitly {@link lnrpc.FundingStateStepResp.verify|verify} messages.
         * @param message FundingStateStepResp message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IFundingStateStepResp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified FundingStateStepResp message, length delimited. Does not implicitly {@link lnrpc.FundingStateStepResp.verify|verify} messages.
         * @param message FundingStateStepResp message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IFundingStateStepResp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a FundingStateStepResp message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns FundingStateStepResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.FundingStateStepResp;

        /**
         * Decodes a FundingStateStepResp message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns FundingStateStepResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.FundingStateStepResp;

        /**
         * Verifies a FundingStateStepResp message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a FundingStateStepResp message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns FundingStateStepResp
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.FundingStateStepResp;

        /**
         * Creates a plain object from a FundingStateStepResp message. Also converts values to other types if specified.
         * @param message FundingStateStepResp
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.FundingStateStepResp,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this FundingStateStepResp to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for FundingStateStepResp
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PendingHTLC. */
    interface IPendingHTLC {
        /** PendingHTLC incoming */
        incoming?: boolean | null;

        /** PendingHTLC amount */
        amount?: Long | null;

        /** PendingHTLC outpoint */
        outpoint?: string | null;

        /** PendingHTLC maturity_height */
        maturity_height?: number | null;

        /** PendingHTLC blocks_til_maturity */
        blocks_til_maturity?: number | null;

        /** PendingHTLC stage */
        stage?: number | null;
    }

    /** Represents a PendingHTLC. */
    class PendingHTLC implements IPendingHTLC {
        /**
         * Constructs a new PendingHTLC.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IPendingHTLC);

        /** PendingHTLC incoming. */
        public incoming: boolean;

        /** PendingHTLC amount. */
        public amount: Long;

        /** PendingHTLC outpoint. */
        public outpoint: string;

        /** PendingHTLC maturity_height. */
        public maturity_height: number;

        /** PendingHTLC blocks_til_maturity. */
        public blocks_til_maturity: number;

        /** PendingHTLC stage. */
        public stage: number;

        /**
         * Creates a new PendingHTLC instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PendingHTLC instance
         */
        public static create(
            properties?: lnrpc.IPendingHTLC
        ): lnrpc.PendingHTLC;

        /**
         * Encodes the specified PendingHTLC message. Does not implicitly {@link lnrpc.PendingHTLC.verify|verify} messages.
         * @param message PendingHTLC message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IPendingHTLC,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PendingHTLC message, length delimited. Does not implicitly {@link lnrpc.PendingHTLC.verify|verify} messages.
         * @param message PendingHTLC message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IPendingHTLC,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PendingHTLC message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PendingHTLC
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.PendingHTLC;

        /**
         * Decodes a PendingHTLC message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PendingHTLC
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.PendingHTLC;

        /**
         * Verifies a PendingHTLC message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PendingHTLC message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PendingHTLC
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.PendingHTLC;

        /**
         * Creates a plain object from a PendingHTLC message. Also converts values to other types if specified.
         * @param message PendingHTLC
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.PendingHTLC,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PendingHTLC to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PendingHTLC
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PendingChannelsRequest. */
    interface IPendingChannelsRequest {
        /** PendingChannelsRequest include_raw_tx */
        include_raw_tx?: boolean | null;
    }

    /** Represents a PendingChannelsRequest. */
    class PendingChannelsRequest implements IPendingChannelsRequest {
        /**
         * Constructs a new PendingChannelsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IPendingChannelsRequest);

        /** PendingChannelsRequest include_raw_tx. */
        public include_raw_tx: boolean;

        /**
         * Creates a new PendingChannelsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PendingChannelsRequest instance
         */
        public static create(
            properties?: lnrpc.IPendingChannelsRequest
        ): lnrpc.PendingChannelsRequest;

        /**
         * Encodes the specified PendingChannelsRequest message. Does not implicitly {@link lnrpc.PendingChannelsRequest.verify|verify} messages.
         * @param message PendingChannelsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IPendingChannelsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PendingChannelsRequest message, length delimited. Does not implicitly {@link lnrpc.PendingChannelsRequest.verify|verify} messages.
         * @param message PendingChannelsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IPendingChannelsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PendingChannelsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PendingChannelsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.PendingChannelsRequest;

        /**
         * Decodes a PendingChannelsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PendingChannelsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.PendingChannelsRequest;

        /**
         * Verifies a PendingChannelsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PendingChannelsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PendingChannelsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.PendingChannelsRequest;

        /**
         * Creates a plain object from a PendingChannelsRequest message. Also converts values to other types if specified.
         * @param message PendingChannelsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.PendingChannelsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PendingChannelsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PendingChannelsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PendingChannelsResponse. */
    interface IPendingChannelsResponse {
        /** PendingChannelsResponse total_limbo_balance */
        total_limbo_balance?: Long | null;

        /** PendingChannelsResponse pending_open_channels */
        pending_open_channels?:
            | lnrpc.PendingChannelsResponse.IPendingOpenChannel[]
            | null;

        /** PendingChannelsResponse pending_closing_channels */
        pending_closing_channels?:
            | lnrpc.PendingChannelsResponse.IClosedChannel[]
            | null;

        /** PendingChannelsResponse pending_force_closing_channels */
        pending_force_closing_channels?:
            | lnrpc.PendingChannelsResponse.IForceClosedChannel[]
            | null;

        /** PendingChannelsResponse waiting_close_channels */
        waiting_close_channels?:
            | lnrpc.PendingChannelsResponse.IWaitingCloseChannel[]
            | null;
    }

    /** Represents a PendingChannelsResponse. */
    class PendingChannelsResponse implements IPendingChannelsResponse {
        /**
         * Constructs a new PendingChannelsResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IPendingChannelsResponse);

        /** PendingChannelsResponse total_limbo_balance. */
        public total_limbo_balance: Long;

        /** PendingChannelsResponse pending_open_channels. */
        public pending_open_channels: lnrpc.PendingChannelsResponse.IPendingOpenChannel[];

        /** PendingChannelsResponse pending_closing_channels. */
        public pending_closing_channels: lnrpc.PendingChannelsResponse.IClosedChannel[];

        /** PendingChannelsResponse pending_force_closing_channels. */
        public pending_force_closing_channels: lnrpc.PendingChannelsResponse.IForceClosedChannel[];

        /** PendingChannelsResponse waiting_close_channels. */
        public waiting_close_channels: lnrpc.PendingChannelsResponse.IWaitingCloseChannel[];

        /**
         * Creates a new PendingChannelsResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PendingChannelsResponse instance
         */
        public static create(
            properties?: lnrpc.IPendingChannelsResponse
        ): lnrpc.PendingChannelsResponse;

        /**
         * Encodes the specified PendingChannelsResponse message. Does not implicitly {@link lnrpc.PendingChannelsResponse.verify|verify} messages.
         * @param message PendingChannelsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IPendingChannelsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PendingChannelsResponse message, length delimited. Does not implicitly {@link lnrpc.PendingChannelsResponse.verify|verify} messages.
         * @param message PendingChannelsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IPendingChannelsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PendingChannelsResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PendingChannelsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.PendingChannelsResponse;

        /**
         * Decodes a PendingChannelsResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PendingChannelsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.PendingChannelsResponse;

        /**
         * Verifies a PendingChannelsResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PendingChannelsResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PendingChannelsResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.PendingChannelsResponse;

        /**
         * Creates a plain object from a PendingChannelsResponse message. Also converts values to other types if specified.
         * @param message PendingChannelsResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.PendingChannelsResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PendingChannelsResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PendingChannelsResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace PendingChannelsResponse {
        /** Properties of a PendingChannel. */
        interface IPendingChannel {
            /** PendingChannel remote_node_pub */
            remote_node_pub?: string | null;

            /** PendingChannel channel_point */
            channel_point?: string | null;

            /** PendingChannel capacity */
            capacity?: Long | null;

            /** PendingChannel local_balance */
            local_balance?: Long | null;

            /** PendingChannel remote_balance */
            remote_balance?: Long | null;

            /** PendingChannel local_chan_reserve_sat */
            local_chan_reserve_sat?: Long | null;

            /** PendingChannel remote_chan_reserve_sat */
            remote_chan_reserve_sat?: Long | null;

            /** PendingChannel initiator */
            initiator?: lnrpc.Initiator | null;

            /** PendingChannel commitment_type */
            commitment_type?: lnrpc.CommitmentType | null;

            /** PendingChannel num_forwarding_packages */
            num_forwarding_packages?: Long | null;

            /** PendingChannel chan_status_flags */
            chan_status_flags?: string | null;

            /** PendingChannel private */
            private?: boolean | null;

            /** PendingChannel memo */
            memo?: string | null;

            /** PendingChannel custom_channel_data */
            custom_channel_data?: Uint8Array | null;
        }

        /** Represents a PendingChannel. */
        class PendingChannel implements IPendingChannel {
            /**
             * Constructs a new PendingChannel.
             * @param [properties] Properties to set
             */
            constructor(
                properties?: lnrpc.PendingChannelsResponse.IPendingChannel
            );

            /** PendingChannel remote_node_pub. */
            public remote_node_pub: string;

            /** PendingChannel channel_point. */
            public channel_point: string;

            /** PendingChannel capacity. */
            public capacity: Long;

            /** PendingChannel local_balance. */
            public local_balance: Long;

            /** PendingChannel remote_balance. */
            public remote_balance: Long;

            /** PendingChannel local_chan_reserve_sat. */
            public local_chan_reserve_sat: Long;

            /** PendingChannel remote_chan_reserve_sat. */
            public remote_chan_reserve_sat: Long;

            /** PendingChannel initiator. */
            public initiator: lnrpc.Initiator;

            /** PendingChannel commitment_type. */
            public commitment_type: lnrpc.CommitmentType;

            /** PendingChannel num_forwarding_packages. */
            public num_forwarding_packages: Long;

            /** PendingChannel chan_status_flags. */
            public chan_status_flags: string;

            /** PendingChannel private. */
            public private: boolean;

            /** PendingChannel memo. */
            public memo: string;

            /** PendingChannel custom_channel_data. */
            public custom_channel_data: Uint8Array;

            /**
             * Creates a new PendingChannel instance using the specified properties.
             * @param [properties] Properties to set
             * @returns PendingChannel instance
             */
            public static create(
                properties?: lnrpc.PendingChannelsResponse.IPendingChannel
            ): lnrpc.PendingChannelsResponse.PendingChannel;

            /**
             * Encodes the specified PendingChannel message. Does not implicitly {@link lnrpc.PendingChannelsResponse.PendingChannel.verify|verify} messages.
             * @param message PendingChannel message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(
                message: lnrpc.PendingChannelsResponse.IPendingChannel,
                writer?: $protobuf.Writer
            ): $protobuf.Writer;

            /**
             * Encodes the specified PendingChannel message, length delimited. Does not implicitly {@link lnrpc.PendingChannelsResponse.PendingChannel.verify|verify} messages.
             * @param message PendingChannel message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(
                message: lnrpc.PendingChannelsResponse.IPendingChannel,
                writer?: $protobuf.Writer
            ): $protobuf.Writer;

            /**
             * Decodes a PendingChannel message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns PendingChannel
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(
                reader: $protobuf.Reader | Uint8Array,
                length?: number
            ): lnrpc.PendingChannelsResponse.PendingChannel;

            /**
             * Decodes a PendingChannel message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns PendingChannel
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(
                reader: $protobuf.Reader | Uint8Array
            ): lnrpc.PendingChannelsResponse.PendingChannel;

            /**
             * Verifies a PendingChannel message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): string | null;

            /**
             * Creates a PendingChannel message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns PendingChannel
             */
            public static fromObject(object: {
                [k: string]: any;
            }): lnrpc.PendingChannelsResponse.PendingChannel;

            /**
             * Creates a plain object from a PendingChannel message. Also converts values to other types if specified.
             * @param message PendingChannel
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(
                message: lnrpc.PendingChannelsResponse.PendingChannel,
                options?: $protobuf.IConversionOptions
            ): { [k: string]: any };

            /**
             * Converts this PendingChannel to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for PendingChannel
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a PendingOpenChannel. */
        interface IPendingOpenChannel {
            /** PendingOpenChannel channel */
            channel?: lnrpc.PendingChannelsResponse.IPendingChannel | null;

            /** PendingOpenChannel commit_fee */
            commit_fee?: Long | null;

            /** PendingOpenChannel commit_weight */
            commit_weight?: Long | null;

            /** PendingOpenChannel fee_per_kw */
            fee_per_kw?: Long | null;

            /** PendingOpenChannel funding_expiry_blocks */
            funding_expiry_blocks?: number | null;
        }

        /** Represents a PendingOpenChannel. */
        class PendingOpenChannel implements IPendingOpenChannel {
            /**
             * Constructs a new PendingOpenChannel.
             * @param [properties] Properties to set
             */
            constructor(
                properties?: lnrpc.PendingChannelsResponse.IPendingOpenChannel
            );

            /** PendingOpenChannel channel. */
            public channel?: lnrpc.PendingChannelsResponse.IPendingChannel | null;

            /** PendingOpenChannel commit_fee. */
            public commit_fee: Long;

            /** PendingOpenChannel commit_weight. */
            public commit_weight: Long;

            /** PendingOpenChannel fee_per_kw. */
            public fee_per_kw: Long;

            /** PendingOpenChannel funding_expiry_blocks. */
            public funding_expiry_blocks: number;

            /**
             * Creates a new PendingOpenChannel instance using the specified properties.
             * @param [properties] Properties to set
             * @returns PendingOpenChannel instance
             */
            public static create(
                properties?: lnrpc.PendingChannelsResponse.IPendingOpenChannel
            ): lnrpc.PendingChannelsResponse.PendingOpenChannel;

            /**
             * Encodes the specified PendingOpenChannel message. Does not implicitly {@link lnrpc.PendingChannelsResponse.PendingOpenChannel.verify|verify} messages.
             * @param message PendingOpenChannel message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(
                message: lnrpc.PendingChannelsResponse.IPendingOpenChannel,
                writer?: $protobuf.Writer
            ): $protobuf.Writer;

            /**
             * Encodes the specified PendingOpenChannel message, length delimited. Does not implicitly {@link lnrpc.PendingChannelsResponse.PendingOpenChannel.verify|verify} messages.
             * @param message PendingOpenChannel message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(
                message: lnrpc.PendingChannelsResponse.IPendingOpenChannel,
                writer?: $protobuf.Writer
            ): $protobuf.Writer;

            /**
             * Decodes a PendingOpenChannel message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns PendingOpenChannel
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(
                reader: $protobuf.Reader | Uint8Array,
                length?: number
            ): lnrpc.PendingChannelsResponse.PendingOpenChannel;

            /**
             * Decodes a PendingOpenChannel message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns PendingOpenChannel
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(
                reader: $protobuf.Reader | Uint8Array
            ): lnrpc.PendingChannelsResponse.PendingOpenChannel;

            /**
             * Verifies a PendingOpenChannel message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): string | null;

            /**
             * Creates a PendingOpenChannel message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns PendingOpenChannel
             */
            public static fromObject(object: {
                [k: string]: any;
            }): lnrpc.PendingChannelsResponse.PendingOpenChannel;

            /**
             * Creates a plain object from a PendingOpenChannel message. Also converts values to other types if specified.
             * @param message PendingOpenChannel
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(
                message: lnrpc.PendingChannelsResponse.PendingOpenChannel,
                options?: $protobuf.IConversionOptions
            ): { [k: string]: any };

            /**
             * Converts this PendingOpenChannel to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for PendingOpenChannel
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a WaitingCloseChannel. */
        interface IWaitingCloseChannel {
            /** WaitingCloseChannel channel */
            channel?: lnrpc.PendingChannelsResponse.IPendingChannel | null;

            /** WaitingCloseChannel limbo_balance */
            limbo_balance?: Long | null;

            /** WaitingCloseChannel commitments */
            commitments?: lnrpc.PendingChannelsResponse.ICommitments | null;

            /** WaitingCloseChannel closing_txid */
            closing_txid?: string | null;

            /** WaitingCloseChannel closing_tx_hex */
            closing_tx_hex?: string | null;
        }

        /** Represents a WaitingCloseChannel. */
        class WaitingCloseChannel implements IWaitingCloseChannel {
            /**
             * Constructs a new WaitingCloseChannel.
             * @param [properties] Properties to set
             */
            constructor(
                properties?: lnrpc.PendingChannelsResponse.IWaitingCloseChannel
            );

            /** WaitingCloseChannel channel. */
            public channel?: lnrpc.PendingChannelsResponse.IPendingChannel | null;

            /** WaitingCloseChannel limbo_balance. */
            public limbo_balance: Long;

            /** WaitingCloseChannel commitments. */
            public commitments?: lnrpc.PendingChannelsResponse.ICommitments | null;

            /** WaitingCloseChannel closing_txid. */
            public closing_txid: string;

            /** WaitingCloseChannel closing_tx_hex. */
            public closing_tx_hex: string;

            /**
             * Creates a new WaitingCloseChannel instance using the specified properties.
             * @param [properties] Properties to set
             * @returns WaitingCloseChannel instance
             */
            public static create(
                properties?: lnrpc.PendingChannelsResponse.IWaitingCloseChannel
            ): lnrpc.PendingChannelsResponse.WaitingCloseChannel;

            /**
             * Encodes the specified WaitingCloseChannel message. Does not implicitly {@link lnrpc.PendingChannelsResponse.WaitingCloseChannel.verify|verify} messages.
             * @param message WaitingCloseChannel message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(
                message: lnrpc.PendingChannelsResponse.IWaitingCloseChannel,
                writer?: $protobuf.Writer
            ): $protobuf.Writer;

            /**
             * Encodes the specified WaitingCloseChannel message, length delimited. Does not implicitly {@link lnrpc.PendingChannelsResponse.WaitingCloseChannel.verify|verify} messages.
             * @param message WaitingCloseChannel message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(
                message: lnrpc.PendingChannelsResponse.IWaitingCloseChannel,
                writer?: $protobuf.Writer
            ): $protobuf.Writer;

            /**
             * Decodes a WaitingCloseChannel message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns WaitingCloseChannel
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(
                reader: $protobuf.Reader | Uint8Array,
                length?: number
            ): lnrpc.PendingChannelsResponse.WaitingCloseChannel;

            /**
             * Decodes a WaitingCloseChannel message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns WaitingCloseChannel
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(
                reader: $protobuf.Reader | Uint8Array
            ): lnrpc.PendingChannelsResponse.WaitingCloseChannel;

            /**
             * Verifies a WaitingCloseChannel message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): string | null;

            /**
             * Creates a WaitingCloseChannel message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns WaitingCloseChannel
             */
            public static fromObject(object: {
                [k: string]: any;
            }): lnrpc.PendingChannelsResponse.WaitingCloseChannel;

            /**
             * Creates a plain object from a WaitingCloseChannel message. Also converts values to other types if specified.
             * @param message WaitingCloseChannel
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(
                message: lnrpc.PendingChannelsResponse.WaitingCloseChannel,
                options?: $protobuf.IConversionOptions
            ): { [k: string]: any };

            /**
             * Converts this WaitingCloseChannel to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for WaitingCloseChannel
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Commitments. */
        interface ICommitments {
            /** Commitments local_txid */
            local_txid?: string | null;

            /** Commitments remote_txid */
            remote_txid?: string | null;

            /** Commitments remote_pending_txid */
            remote_pending_txid?: string | null;

            /** Commitments local_commit_fee_sat */
            local_commit_fee_sat?: Long | null;

            /** Commitments remote_commit_fee_sat */
            remote_commit_fee_sat?: Long | null;

            /** Commitments remote_pending_commit_fee_sat */
            remote_pending_commit_fee_sat?: Long | null;
        }

        /** Represents a Commitments. */
        class Commitments implements ICommitments {
            /**
             * Constructs a new Commitments.
             * @param [properties] Properties to set
             */
            constructor(
                properties?: lnrpc.PendingChannelsResponse.ICommitments
            );

            /** Commitments local_txid. */
            public local_txid: string;

            /** Commitments remote_txid. */
            public remote_txid: string;

            /** Commitments remote_pending_txid. */
            public remote_pending_txid: string;

            /** Commitments local_commit_fee_sat. */
            public local_commit_fee_sat: Long;

            /** Commitments remote_commit_fee_sat. */
            public remote_commit_fee_sat: Long;

            /** Commitments remote_pending_commit_fee_sat. */
            public remote_pending_commit_fee_sat: Long;

            /**
             * Creates a new Commitments instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Commitments instance
             */
            public static create(
                properties?: lnrpc.PendingChannelsResponse.ICommitments
            ): lnrpc.PendingChannelsResponse.Commitments;

            /**
             * Encodes the specified Commitments message. Does not implicitly {@link lnrpc.PendingChannelsResponse.Commitments.verify|verify} messages.
             * @param message Commitments message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(
                message: lnrpc.PendingChannelsResponse.ICommitments,
                writer?: $protobuf.Writer
            ): $protobuf.Writer;

            /**
             * Encodes the specified Commitments message, length delimited. Does not implicitly {@link lnrpc.PendingChannelsResponse.Commitments.verify|verify} messages.
             * @param message Commitments message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(
                message: lnrpc.PendingChannelsResponse.ICommitments,
                writer?: $protobuf.Writer
            ): $protobuf.Writer;

            /**
             * Decodes a Commitments message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Commitments
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(
                reader: $protobuf.Reader | Uint8Array,
                length?: number
            ): lnrpc.PendingChannelsResponse.Commitments;

            /**
             * Decodes a Commitments message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Commitments
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(
                reader: $protobuf.Reader | Uint8Array
            ): lnrpc.PendingChannelsResponse.Commitments;

            /**
             * Verifies a Commitments message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): string | null;

            /**
             * Creates a Commitments message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Commitments
             */
            public static fromObject(object: {
                [k: string]: any;
            }): lnrpc.PendingChannelsResponse.Commitments;

            /**
             * Creates a plain object from a Commitments message. Also converts values to other types if specified.
             * @param message Commitments
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(
                message: lnrpc.PendingChannelsResponse.Commitments,
                options?: $protobuf.IConversionOptions
            ): { [k: string]: any };

            /**
             * Converts this Commitments to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Commitments
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ClosedChannel. */
        interface IClosedChannel {
            /** ClosedChannel channel */
            channel?: lnrpc.PendingChannelsResponse.IPendingChannel | null;

            /** ClosedChannel closing_txid */
            closing_txid?: string | null;
        }

        /** Represents a ClosedChannel. */
        class ClosedChannel implements IClosedChannel {
            /**
             * Constructs a new ClosedChannel.
             * @param [properties] Properties to set
             */
            constructor(
                properties?: lnrpc.PendingChannelsResponse.IClosedChannel
            );

            /** ClosedChannel channel. */
            public channel?: lnrpc.PendingChannelsResponse.IPendingChannel | null;

            /** ClosedChannel closing_txid. */
            public closing_txid: string;

            /**
             * Creates a new ClosedChannel instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ClosedChannel instance
             */
            public static create(
                properties?: lnrpc.PendingChannelsResponse.IClosedChannel
            ): lnrpc.PendingChannelsResponse.ClosedChannel;

            /**
             * Encodes the specified ClosedChannel message. Does not implicitly {@link lnrpc.PendingChannelsResponse.ClosedChannel.verify|verify} messages.
             * @param message ClosedChannel message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(
                message: lnrpc.PendingChannelsResponse.IClosedChannel,
                writer?: $protobuf.Writer
            ): $protobuf.Writer;

            /**
             * Encodes the specified ClosedChannel message, length delimited. Does not implicitly {@link lnrpc.PendingChannelsResponse.ClosedChannel.verify|verify} messages.
             * @param message ClosedChannel message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(
                message: lnrpc.PendingChannelsResponse.IClosedChannel,
                writer?: $protobuf.Writer
            ): $protobuf.Writer;

            /**
             * Decodes a ClosedChannel message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ClosedChannel
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(
                reader: $protobuf.Reader | Uint8Array,
                length?: number
            ): lnrpc.PendingChannelsResponse.ClosedChannel;

            /**
             * Decodes a ClosedChannel message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ClosedChannel
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(
                reader: $protobuf.Reader | Uint8Array
            ): lnrpc.PendingChannelsResponse.ClosedChannel;

            /**
             * Verifies a ClosedChannel message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): string | null;

            /**
             * Creates a ClosedChannel message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ClosedChannel
             */
            public static fromObject(object: {
                [k: string]: any;
            }): lnrpc.PendingChannelsResponse.ClosedChannel;

            /**
             * Creates a plain object from a ClosedChannel message. Also converts values to other types if specified.
             * @param message ClosedChannel
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(
                message: lnrpc.PendingChannelsResponse.ClosedChannel,
                options?: $protobuf.IConversionOptions
            ): { [k: string]: any };

            /**
             * Converts this ClosedChannel to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ClosedChannel
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ForceClosedChannel. */
        interface IForceClosedChannel {
            /** ForceClosedChannel channel */
            channel?: lnrpc.PendingChannelsResponse.IPendingChannel | null;

            /** ForceClosedChannel closing_txid */
            closing_txid?: string | null;

            /** ForceClosedChannel limbo_balance */
            limbo_balance?: Long | null;

            /** ForceClosedChannel maturity_height */
            maturity_height?: number | null;

            /** ForceClosedChannel blocks_til_maturity */
            blocks_til_maturity?: number | null;

            /** ForceClosedChannel recovered_balance */
            recovered_balance?: Long | null;

            /** ForceClosedChannel pending_htlcs */
            pending_htlcs?: lnrpc.IPendingHTLC[] | null;

            /** ForceClosedChannel anchor */
            anchor?: lnrpc.PendingChannelsResponse.ForceClosedChannel.AnchorState | null;
        }

        /** Represents a ForceClosedChannel. */
        class ForceClosedChannel implements IForceClosedChannel {
            /**
             * Constructs a new ForceClosedChannel.
             * @param [properties] Properties to set
             */
            constructor(
                properties?: lnrpc.PendingChannelsResponse.IForceClosedChannel
            );

            /** ForceClosedChannel channel. */
            public channel?: lnrpc.PendingChannelsResponse.IPendingChannel | null;

            /** ForceClosedChannel closing_txid. */
            public closing_txid: string;

            /** ForceClosedChannel limbo_balance. */
            public limbo_balance: Long;

            /** ForceClosedChannel maturity_height. */
            public maturity_height: number;

            /** ForceClosedChannel blocks_til_maturity. */
            public blocks_til_maturity: number;

            /** ForceClosedChannel recovered_balance. */
            public recovered_balance: Long;

            /** ForceClosedChannel pending_htlcs. */
            public pending_htlcs: lnrpc.IPendingHTLC[];

            /** ForceClosedChannel anchor. */
            public anchor: lnrpc.PendingChannelsResponse.ForceClosedChannel.AnchorState;

            /**
             * Creates a new ForceClosedChannel instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ForceClosedChannel instance
             */
            public static create(
                properties?: lnrpc.PendingChannelsResponse.IForceClosedChannel
            ): lnrpc.PendingChannelsResponse.ForceClosedChannel;

            /**
             * Encodes the specified ForceClosedChannel message. Does not implicitly {@link lnrpc.PendingChannelsResponse.ForceClosedChannel.verify|verify} messages.
             * @param message ForceClosedChannel message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(
                message: lnrpc.PendingChannelsResponse.IForceClosedChannel,
                writer?: $protobuf.Writer
            ): $protobuf.Writer;

            /**
             * Encodes the specified ForceClosedChannel message, length delimited. Does not implicitly {@link lnrpc.PendingChannelsResponse.ForceClosedChannel.verify|verify} messages.
             * @param message ForceClosedChannel message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(
                message: lnrpc.PendingChannelsResponse.IForceClosedChannel,
                writer?: $protobuf.Writer
            ): $protobuf.Writer;

            /**
             * Decodes a ForceClosedChannel message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ForceClosedChannel
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(
                reader: $protobuf.Reader | Uint8Array,
                length?: number
            ): lnrpc.PendingChannelsResponse.ForceClosedChannel;

            /**
             * Decodes a ForceClosedChannel message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ForceClosedChannel
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(
                reader: $protobuf.Reader | Uint8Array
            ): lnrpc.PendingChannelsResponse.ForceClosedChannel;

            /**
             * Verifies a ForceClosedChannel message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): string | null;

            /**
             * Creates a ForceClosedChannel message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ForceClosedChannel
             */
            public static fromObject(object: {
                [k: string]: any;
            }): lnrpc.PendingChannelsResponse.ForceClosedChannel;

            /**
             * Creates a plain object from a ForceClosedChannel message. Also converts values to other types if specified.
             * @param message ForceClosedChannel
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(
                message: lnrpc.PendingChannelsResponse.ForceClosedChannel,
                options?: $protobuf.IConversionOptions
            ): { [k: string]: any };

            /**
             * Converts this ForceClosedChannel to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ForceClosedChannel
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace ForceClosedChannel {
            /** AnchorState enum. */
            enum AnchorState {
                LIMBO = 0,
                RECOVERED = 1,
                LOST = 2
            }
        }
    }

    /** Properties of a ChannelEventSubscription. */
    interface IChannelEventSubscription {}

    /** Represents a ChannelEventSubscription. */
    class ChannelEventSubscription implements IChannelEventSubscription {
        /**
         * Constructs a new ChannelEventSubscription.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelEventSubscription);

        /**
         * Creates a new ChannelEventSubscription instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelEventSubscription instance
         */
        public static create(
            properties?: lnrpc.IChannelEventSubscription
        ): lnrpc.ChannelEventSubscription;

        /**
         * Encodes the specified ChannelEventSubscription message. Does not implicitly {@link lnrpc.ChannelEventSubscription.verify|verify} messages.
         * @param message ChannelEventSubscription message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelEventSubscription,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelEventSubscription message, length delimited. Does not implicitly {@link lnrpc.ChannelEventSubscription.verify|verify} messages.
         * @param message ChannelEventSubscription message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelEventSubscription,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelEventSubscription message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelEventSubscription
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelEventSubscription;

        /**
         * Decodes a ChannelEventSubscription message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelEventSubscription
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelEventSubscription;

        /**
         * Verifies a ChannelEventSubscription message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelEventSubscription message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelEventSubscription
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelEventSubscription;

        /**
         * Creates a plain object from a ChannelEventSubscription message. Also converts values to other types if specified.
         * @param message ChannelEventSubscription
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelEventSubscription,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelEventSubscription to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelEventSubscription
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChannelEventUpdate. */
    interface IChannelEventUpdate {
        /** ChannelEventUpdate open_channel */
        open_channel?: lnrpc.IChannel | null;

        /** ChannelEventUpdate closed_channel */
        closed_channel?: lnrpc.IChannelCloseSummary | null;

        /** ChannelEventUpdate active_channel */
        active_channel?: lnrpc.IChannelPoint | null;

        /** ChannelEventUpdate inactive_channel */
        inactive_channel?: lnrpc.IChannelPoint | null;

        /** ChannelEventUpdate pending_open_channel */
        pending_open_channel?: lnrpc.IPendingUpdate | null;

        /** ChannelEventUpdate fully_resolved_channel */
        fully_resolved_channel?: lnrpc.IChannelPoint | null;

        /** ChannelEventUpdate type */
        type?: lnrpc.ChannelEventUpdate.UpdateType | null;
    }

    /** Represents a ChannelEventUpdate. */
    class ChannelEventUpdate implements IChannelEventUpdate {
        /**
         * Constructs a new ChannelEventUpdate.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelEventUpdate);

        /** ChannelEventUpdate open_channel. */
        public open_channel?: lnrpc.IChannel | null;

        /** ChannelEventUpdate closed_channel. */
        public closed_channel?: lnrpc.IChannelCloseSummary | null;

        /** ChannelEventUpdate active_channel. */
        public active_channel?: lnrpc.IChannelPoint | null;

        /** ChannelEventUpdate inactive_channel. */
        public inactive_channel?: lnrpc.IChannelPoint | null;

        /** ChannelEventUpdate pending_open_channel. */
        public pending_open_channel?: lnrpc.IPendingUpdate | null;

        /** ChannelEventUpdate fully_resolved_channel. */
        public fully_resolved_channel?: lnrpc.IChannelPoint | null;

        /** ChannelEventUpdate type. */
        public type: lnrpc.ChannelEventUpdate.UpdateType;

        /** ChannelEventUpdate channel. */
        public channel?:
            | 'open_channel'
            | 'closed_channel'
            | 'active_channel'
            | 'inactive_channel'
            | 'pending_open_channel'
            | 'fully_resolved_channel';

        /**
         * Creates a new ChannelEventUpdate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelEventUpdate instance
         */
        public static create(
            properties?: lnrpc.IChannelEventUpdate
        ): lnrpc.ChannelEventUpdate;

        /**
         * Encodes the specified ChannelEventUpdate message. Does not implicitly {@link lnrpc.ChannelEventUpdate.verify|verify} messages.
         * @param message ChannelEventUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelEventUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelEventUpdate message, length delimited. Does not implicitly {@link lnrpc.ChannelEventUpdate.verify|verify} messages.
         * @param message ChannelEventUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelEventUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelEventUpdate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelEventUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelEventUpdate;

        /**
         * Decodes a ChannelEventUpdate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelEventUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelEventUpdate;

        /**
         * Verifies a ChannelEventUpdate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelEventUpdate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelEventUpdate
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelEventUpdate;

        /**
         * Creates a plain object from a ChannelEventUpdate message. Also converts values to other types if specified.
         * @param message ChannelEventUpdate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelEventUpdate,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelEventUpdate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelEventUpdate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace ChannelEventUpdate {
        /** UpdateType enum. */
        enum UpdateType {
            OPEN_CHANNEL = 0,
            CLOSED_CHANNEL = 1,
            ACTIVE_CHANNEL = 2,
            INACTIVE_CHANNEL = 3,
            PENDING_OPEN_CHANNEL = 4,
            FULLY_RESOLVED_CHANNEL = 5
        }
    }

    /** Properties of a WalletAccountBalance. */
    interface IWalletAccountBalance {
        /** WalletAccountBalance confirmed_balance */
        confirmed_balance?: Long | null;

        /** WalletAccountBalance unconfirmed_balance */
        unconfirmed_balance?: Long | null;
    }

    /** Represents a WalletAccountBalance. */
    class WalletAccountBalance implements IWalletAccountBalance {
        /**
         * Constructs a new WalletAccountBalance.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IWalletAccountBalance);

        /** WalletAccountBalance confirmed_balance. */
        public confirmed_balance: Long;

        /** WalletAccountBalance unconfirmed_balance. */
        public unconfirmed_balance: Long;

        /**
         * Creates a new WalletAccountBalance instance using the specified properties.
         * @param [properties] Properties to set
         * @returns WalletAccountBalance instance
         */
        public static create(
            properties?: lnrpc.IWalletAccountBalance
        ): lnrpc.WalletAccountBalance;

        /**
         * Encodes the specified WalletAccountBalance message. Does not implicitly {@link lnrpc.WalletAccountBalance.verify|verify} messages.
         * @param message WalletAccountBalance message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IWalletAccountBalance,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified WalletAccountBalance message, length delimited. Does not implicitly {@link lnrpc.WalletAccountBalance.verify|verify} messages.
         * @param message WalletAccountBalance message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IWalletAccountBalance,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a WalletAccountBalance message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns WalletAccountBalance
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.WalletAccountBalance;

        /**
         * Decodes a WalletAccountBalance message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns WalletAccountBalance
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.WalletAccountBalance;

        /**
         * Verifies a WalletAccountBalance message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a WalletAccountBalance message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns WalletAccountBalance
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.WalletAccountBalance;

        /**
         * Creates a plain object from a WalletAccountBalance message. Also converts values to other types if specified.
         * @param message WalletAccountBalance
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.WalletAccountBalance,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this WalletAccountBalance to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for WalletAccountBalance
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a WalletBalanceRequest. */
    interface IWalletBalanceRequest {
        /** WalletBalanceRequest account */
        account?: string | null;

        /** WalletBalanceRequest min_confs */
        min_confs?: number | null;
    }

    /** Represents a WalletBalanceRequest. */
    class WalletBalanceRequest implements IWalletBalanceRequest {
        /**
         * Constructs a new WalletBalanceRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IWalletBalanceRequest);

        /** WalletBalanceRequest account. */
        public account: string;

        /** WalletBalanceRequest min_confs. */
        public min_confs: number;

        /**
         * Creates a new WalletBalanceRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns WalletBalanceRequest instance
         */
        public static create(
            properties?: lnrpc.IWalletBalanceRequest
        ): lnrpc.WalletBalanceRequest;

        /**
         * Encodes the specified WalletBalanceRequest message. Does not implicitly {@link lnrpc.WalletBalanceRequest.verify|verify} messages.
         * @param message WalletBalanceRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IWalletBalanceRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified WalletBalanceRequest message, length delimited. Does not implicitly {@link lnrpc.WalletBalanceRequest.verify|verify} messages.
         * @param message WalletBalanceRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IWalletBalanceRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a WalletBalanceRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns WalletBalanceRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.WalletBalanceRequest;

        /**
         * Decodes a WalletBalanceRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns WalletBalanceRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.WalletBalanceRequest;

        /**
         * Verifies a WalletBalanceRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a WalletBalanceRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns WalletBalanceRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.WalletBalanceRequest;

        /**
         * Creates a plain object from a WalletBalanceRequest message. Also converts values to other types if specified.
         * @param message WalletBalanceRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.WalletBalanceRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this WalletBalanceRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for WalletBalanceRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a WalletBalanceResponse. */
    interface IWalletBalanceResponse {
        /** WalletBalanceResponse total_balance */
        total_balance?: Long | null;

        /** WalletBalanceResponse confirmed_balance */
        confirmed_balance?: Long | null;

        /** WalletBalanceResponse unconfirmed_balance */
        unconfirmed_balance?: Long | null;

        /** WalletBalanceResponse locked_balance */
        locked_balance?: Long | null;

        /** WalletBalanceResponse reserved_balance_anchor_chan */
        reserved_balance_anchor_chan?: Long | null;

        /** WalletBalanceResponse account_balance */
        account_balance?: { [k: string]: lnrpc.IWalletAccountBalance } | null;
    }

    /** Represents a WalletBalanceResponse. */
    class WalletBalanceResponse implements IWalletBalanceResponse {
        /**
         * Constructs a new WalletBalanceResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IWalletBalanceResponse);

        /** WalletBalanceResponse total_balance. */
        public total_balance: Long;

        /** WalletBalanceResponse confirmed_balance. */
        public confirmed_balance: Long;

        /** WalletBalanceResponse unconfirmed_balance. */
        public unconfirmed_balance: Long;

        /** WalletBalanceResponse locked_balance. */
        public locked_balance: Long;

        /** WalletBalanceResponse reserved_balance_anchor_chan. */
        public reserved_balance_anchor_chan: Long;

        /** WalletBalanceResponse account_balance. */
        public account_balance: { [k: string]: lnrpc.IWalletAccountBalance };

        /**
         * Creates a new WalletBalanceResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns WalletBalanceResponse instance
         */
        public static create(
            properties?: lnrpc.IWalletBalanceResponse
        ): lnrpc.WalletBalanceResponse;

        /**
         * Encodes the specified WalletBalanceResponse message. Does not implicitly {@link lnrpc.WalletBalanceResponse.verify|verify} messages.
         * @param message WalletBalanceResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IWalletBalanceResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified WalletBalanceResponse message, length delimited. Does not implicitly {@link lnrpc.WalletBalanceResponse.verify|verify} messages.
         * @param message WalletBalanceResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IWalletBalanceResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a WalletBalanceResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns WalletBalanceResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.WalletBalanceResponse;

        /**
         * Decodes a WalletBalanceResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns WalletBalanceResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.WalletBalanceResponse;

        /**
         * Verifies a WalletBalanceResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a WalletBalanceResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns WalletBalanceResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.WalletBalanceResponse;

        /**
         * Creates a plain object from a WalletBalanceResponse message. Also converts values to other types if specified.
         * @param message WalletBalanceResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.WalletBalanceResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this WalletBalanceResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for WalletBalanceResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an Amount. */
    interface IAmount {
        /** Amount sat */
        sat?: Long | null;

        /** Amount msat */
        msat?: Long | null;
    }

    /** Represents an Amount. */
    class Amount implements IAmount {
        /**
         * Constructs a new Amount.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IAmount);

        /** Amount sat. */
        public sat: Long;

        /** Amount msat. */
        public msat: Long;

        /**
         * Creates a new Amount instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Amount instance
         */
        public static create(properties?: lnrpc.IAmount): lnrpc.Amount;

        /**
         * Encodes the specified Amount message. Does not implicitly {@link lnrpc.Amount.verify|verify} messages.
         * @param message Amount message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IAmount,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Amount message, length delimited. Does not implicitly {@link lnrpc.Amount.verify|verify} messages.
         * @param message Amount message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IAmount,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an Amount message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Amount
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.Amount;

        /**
         * Decodes an Amount message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Amount
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.Amount;

        /**
         * Verifies an Amount message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an Amount message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Amount
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.Amount;

        /**
         * Creates a plain object from an Amount message. Also converts values to other types if specified.
         * @param message Amount
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.Amount,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Amount to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Amount
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChannelBalanceRequest. */
    interface IChannelBalanceRequest {}

    /** Represents a ChannelBalanceRequest. */
    class ChannelBalanceRequest implements IChannelBalanceRequest {
        /**
         * Constructs a new ChannelBalanceRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelBalanceRequest);

        /**
         * Creates a new ChannelBalanceRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelBalanceRequest instance
         */
        public static create(
            properties?: lnrpc.IChannelBalanceRequest
        ): lnrpc.ChannelBalanceRequest;

        /**
         * Encodes the specified ChannelBalanceRequest message. Does not implicitly {@link lnrpc.ChannelBalanceRequest.verify|verify} messages.
         * @param message ChannelBalanceRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelBalanceRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelBalanceRequest message, length delimited. Does not implicitly {@link lnrpc.ChannelBalanceRequest.verify|verify} messages.
         * @param message ChannelBalanceRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelBalanceRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelBalanceRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelBalanceRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelBalanceRequest;

        /**
         * Decodes a ChannelBalanceRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelBalanceRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelBalanceRequest;

        /**
         * Verifies a ChannelBalanceRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelBalanceRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelBalanceRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelBalanceRequest;

        /**
         * Creates a plain object from a ChannelBalanceRequest message. Also converts values to other types if specified.
         * @param message ChannelBalanceRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelBalanceRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelBalanceRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelBalanceRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChannelBalanceResponse. */
    interface IChannelBalanceResponse {
        /** ChannelBalanceResponse balance */
        balance?: Long | null;

        /** ChannelBalanceResponse pending_open_balance */
        pending_open_balance?: Long | null;

        /** ChannelBalanceResponse local_balance */
        local_balance?: lnrpc.IAmount | null;

        /** ChannelBalanceResponse remote_balance */
        remote_balance?: lnrpc.IAmount | null;

        /** ChannelBalanceResponse unsettled_local_balance */
        unsettled_local_balance?: lnrpc.IAmount | null;

        /** ChannelBalanceResponse unsettled_remote_balance */
        unsettled_remote_balance?: lnrpc.IAmount | null;

        /** ChannelBalanceResponse pending_open_local_balance */
        pending_open_local_balance?: lnrpc.IAmount | null;

        /** ChannelBalanceResponse pending_open_remote_balance */
        pending_open_remote_balance?: lnrpc.IAmount | null;

        /** ChannelBalanceResponse custom_channel_data */
        custom_channel_data?: Uint8Array | null;
    }

    /** Represents a ChannelBalanceResponse. */
    class ChannelBalanceResponse implements IChannelBalanceResponse {
        /**
         * Constructs a new ChannelBalanceResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelBalanceResponse);

        /** ChannelBalanceResponse balance. */
        public balance: Long;

        /** ChannelBalanceResponse pending_open_balance. */
        public pending_open_balance: Long;

        /** ChannelBalanceResponse local_balance. */
        public local_balance?: lnrpc.IAmount | null;

        /** ChannelBalanceResponse remote_balance. */
        public remote_balance?: lnrpc.IAmount | null;

        /** ChannelBalanceResponse unsettled_local_balance. */
        public unsettled_local_balance?: lnrpc.IAmount | null;

        /** ChannelBalanceResponse unsettled_remote_balance. */
        public unsettled_remote_balance?: lnrpc.IAmount | null;

        /** ChannelBalanceResponse pending_open_local_balance. */
        public pending_open_local_balance?: lnrpc.IAmount | null;

        /** ChannelBalanceResponse pending_open_remote_balance. */
        public pending_open_remote_balance?: lnrpc.IAmount | null;

        /** ChannelBalanceResponse custom_channel_data. */
        public custom_channel_data: Uint8Array;

        /**
         * Creates a new ChannelBalanceResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelBalanceResponse instance
         */
        public static create(
            properties?: lnrpc.IChannelBalanceResponse
        ): lnrpc.ChannelBalanceResponse;

        /**
         * Encodes the specified ChannelBalanceResponse message. Does not implicitly {@link lnrpc.ChannelBalanceResponse.verify|verify} messages.
         * @param message ChannelBalanceResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelBalanceResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelBalanceResponse message, length delimited. Does not implicitly {@link lnrpc.ChannelBalanceResponse.verify|verify} messages.
         * @param message ChannelBalanceResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelBalanceResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelBalanceResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelBalanceResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelBalanceResponse;

        /**
         * Decodes a ChannelBalanceResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelBalanceResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelBalanceResponse;

        /**
         * Verifies a ChannelBalanceResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelBalanceResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelBalanceResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelBalanceResponse;

        /**
         * Creates a plain object from a ChannelBalanceResponse message. Also converts values to other types if specified.
         * @param message ChannelBalanceResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelBalanceResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelBalanceResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelBalanceResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a QueryRoutesRequest. */
    interface IQueryRoutesRequest {
        /** QueryRoutesRequest pub_key */
        pub_key?: string | null;

        /** QueryRoutesRequest amt */
        amt?: Long | null;

        /** QueryRoutesRequest amt_msat */
        amt_msat?: Long | null;

        /** QueryRoutesRequest final_cltv_delta */
        final_cltv_delta?: number | null;

        /** QueryRoutesRequest fee_limit */
        fee_limit?: lnrpc.IFeeLimit | null;

        /** QueryRoutesRequest ignored_nodes */
        ignored_nodes?: Uint8Array[] | null;

        /** QueryRoutesRequest ignored_edges */
        ignored_edges?: lnrpc.IEdgeLocator[] | null;

        /** QueryRoutesRequest source_pub_key */
        source_pub_key?: string | null;

        /** QueryRoutesRequest use_mission_control */
        use_mission_control?: boolean | null;

        /** QueryRoutesRequest ignored_pairs */
        ignored_pairs?: lnrpc.INodePair[] | null;

        /** QueryRoutesRequest cltv_limit */
        cltv_limit?: number | null;

        /** QueryRoutesRequest dest_custom_records */
        dest_custom_records?: { [k: string]: Uint8Array } | null;

        /** QueryRoutesRequest outgoing_chan_id */
        outgoing_chan_id?: Long | null;

        /** QueryRoutesRequest last_hop_pubkey */
        last_hop_pubkey?: Uint8Array | null;

        /** QueryRoutesRequest route_hints */
        route_hints?: lnrpc.IRouteHint[] | null;

        /** QueryRoutesRequest blinded_payment_paths */
        blinded_payment_paths?: lnrpc.IBlindedPaymentPath[] | null;

        /** QueryRoutesRequest dest_features */
        dest_features?: lnrpc.FeatureBit[] | null;

        /** QueryRoutesRequest time_pref */
        time_pref?: number | null;
    }

    /** Represents a QueryRoutesRequest. */
    class QueryRoutesRequest implements IQueryRoutesRequest {
        /**
         * Constructs a new QueryRoutesRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IQueryRoutesRequest);

        /** QueryRoutesRequest pub_key. */
        public pub_key: string;

        /** QueryRoutesRequest amt. */
        public amt: Long;

        /** QueryRoutesRequest amt_msat. */
        public amt_msat: Long;

        /** QueryRoutesRequest final_cltv_delta. */
        public final_cltv_delta: number;

        /** QueryRoutesRequest fee_limit. */
        public fee_limit?: lnrpc.IFeeLimit | null;

        /** QueryRoutesRequest ignored_nodes. */
        public ignored_nodes: Uint8Array[];

        /** QueryRoutesRequest ignored_edges. */
        public ignored_edges: lnrpc.IEdgeLocator[];

        /** QueryRoutesRequest source_pub_key. */
        public source_pub_key: string;

        /** QueryRoutesRequest use_mission_control. */
        public use_mission_control: boolean;

        /** QueryRoutesRequest ignored_pairs. */
        public ignored_pairs: lnrpc.INodePair[];

        /** QueryRoutesRequest cltv_limit. */
        public cltv_limit: number;

        /** QueryRoutesRequest dest_custom_records. */
        public dest_custom_records: { [k: string]: Uint8Array };

        /** QueryRoutesRequest outgoing_chan_id. */
        public outgoing_chan_id: Long;

        /** QueryRoutesRequest last_hop_pubkey. */
        public last_hop_pubkey: Uint8Array;

        /** QueryRoutesRequest route_hints. */
        public route_hints: lnrpc.IRouteHint[];

        /** QueryRoutesRequest blinded_payment_paths. */
        public blinded_payment_paths: lnrpc.IBlindedPaymentPath[];

        /** QueryRoutesRequest dest_features. */
        public dest_features: lnrpc.FeatureBit[];

        /** QueryRoutesRequest time_pref. */
        public time_pref: number;

        /**
         * Creates a new QueryRoutesRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns QueryRoutesRequest instance
         */
        public static create(
            properties?: lnrpc.IQueryRoutesRequest
        ): lnrpc.QueryRoutesRequest;

        /**
         * Encodes the specified QueryRoutesRequest message. Does not implicitly {@link lnrpc.QueryRoutesRequest.verify|verify} messages.
         * @param message QueryRoutesRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IQueryRoutesRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified QueryRoutesRequest message, length delimited. Does not implicitly {@link lnrpc.QueryRoutesRequest.verify|verify} messages.
         * @param message QueryRoutesRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IQueryRoutesRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a QueryRoutesRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns QueryRoutesRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.QueryRoutesRequest;

        /**
         * Decodes a QueryRoutesRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns QueryRoutesRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.QueryRoutesRequest;

        /**
         * Verifies a QueryRoutesRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a QueryRoutesRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns QueryRoutesRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.QueryRoutesRequest;

        /**
         * Creates a plain object from a QueryRoutesRequest message. Also converts values to other types if specified.
         * @param message QueryRoutesRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.QueryRoutesRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this QueryRoutesRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for QueryRoutesRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a NodePair. */
    interface INodePair {
        /** NodePair from */
        from?: Uint8Array | null;

        /** NodePair to */
        to?: Uint8Array | null;
    }

    /** Represents a NodePair. */
    class NodePair implements INodePair {
        /**
         * Constructs a new NodePair.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.INodePair);

        /** NodePair from. */
        public from: Uint8Array;

        /** NodePair to. */
        public to: Uint8Array;

        /**
         * Creates a new NodePair instance using the specified properties.
         * @param [properties] Properties to set
         * @returns NodePair instance
         */
        public static create(properties?: lnrpc.INodePair): lnrpc.NodePair;

        /**
         * Encodes the specified NodePair message. Does not implicitly {@link lnrpc.NodePair.verify|verify} messages.
         * @param message NodePair message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.INodePair,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified NodePair message, length delimited. Does not implicitly {@link lnrpc.NodePair.verify|verify} messages.
         * @param message NodePair message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.INodePair,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a NodePair message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns NodePair
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.NodePair;

        /**
         * Decodes a NodePair message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns NodePair
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.NodePair;

        /**
         * Verifies a NodePair message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a NodePair message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns NodePair
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.NodePair;

        /**
         * Creates a plain object from a NodePair message. Also converts values to other types if specified.
         * @param message NodePair
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.NodePair,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this NodePair to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for NodePair
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an EdgeLocator. */
    interface IEdgeLocator {
        /** EdgeLocator channel_id */
        channel_id?: Long | null;

        /** EdgeLocator direction_reverse */
        direction_reverse?: boolean | null;
    }

    /** Represents an EdgeLocator. */
    class EdgeLocator implements IEdgeLocator {
        /**
         * Constructs a new EdgeLocator.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IEdgeLocator);

        /** EdgeLocator channel_id. */
        public channel_id: Long;

        /** EdgeLocator direction_reverse. */
        public direction_reverse: boolean;

        /**
         * Creates a new EdgeLocator instance using the specified properties.
         * @param [properties] Properties to set
         * @returns EdgeLocator instance
         */
        public static create(
            properties?: lnrpc.IEdgeLocator
        ): lnrpc.EdgeLocator;

        /**
         * Encodes the specified EdgeLocator message. Does not implicitly {@link lnrpc.EdgeLocator.verify|verify} messages.
         * @param message EdgeLocator message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IEdgeLocator,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified EdgeLocator message, length delimited. Does not implicitly {@link lnrpc.EdgeLocator.verify|verify} messages.
         * @param message EdgeLocator message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IEdgeLocator,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an EdgeLocator message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns EdgeLocator
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.EdgeLocator;

        /**
         * Decodes an EdgeLocator message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns EdgeLocator
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.EdgeLocator;

        /**
         * Verifies an EdgeLocator message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an EdgeLocator message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns EdgeLocator
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.EdgeLocator;

        /**
         * Creates a plain object from an EdgeLocator message. Also converts values to other types if specified.
         * @param message EdgeLocator
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.EdgeLocator,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this EdgeLocator to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for EdgeLocator
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a QueryRoutesResponse. */
    interface IQueryRoutesResponse {
        /** QueryRoutesResponse routes */
        routes?: lnrpc.IRoute[] | null;

        /** QueryRoutesResponse success_prob */
        success_prob?: number | null;
    }

    /** Represents a QueryRoutesResponse. */
    class QueryRoutesResponse implements IQueryRoutesResponse {
        /**
         * Constructs a new QueryRoutesResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IQueryRoutesResponse);

        /** QueryRoutesResponse routes. */
        public routes: lnrpc.IRoute[];

        /** QueryRoutesResponse success_prob. */
        public success_prob: number;

        /**
         * Creates a new QueryRoutesResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns QueryRoutesResponse instance
         */
        public static create(
            properties?: lnrpc.IQueryRoutesResponse
        ): lnrpc.QueryRoutesResponse;

        /**
         * Encodes the specified QueryRoutesResponse message. Does not implicitly {@link lnrpc.QueryRoutesResponse.verify|verify} messages.
         * @param message QueryRoutesResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IQueryRoutesResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified QueryRoutesResponse message, length delimited. Does not implicitly {@link lnrpc.QueryRoutesResponse.verify|verify} messages.
         * @param message QueryRoutesResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IQueryRoutesResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a QueryRoutesResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns QueryRoutesResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.QueryRoutesResponse;

        /**
         * Decodes a QueryRoutesResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns QueryRoutesResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.QueryRoutesResponse;

        /**
         * Verifies a QueryRoutesResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a QueryRoutesResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns QueryRoutesResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.QueryRoutesResponse;

        /**
         * Creates a plain object from a QueryRoutesResponse message. Also converts values to other types if specified.
         * @param message QueryRoutesResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.QueryRoutesResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this QueryRoutesResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for QueryRoutesResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a Hop. */
    interface IHop {
        /** Hop chan_id */
        chan_id?: Long | null;

        /** Hop chan_capacity */
        chan_capacity?: Long | null;

        /** Hop amt_to_forward */
        amt_to_forward?: Long | null;

        /** Hop fee */
        fee?: Long | null;

        /** Hop expiry */
        expiry?: number | null;

        /** Hop amt_to_forward_msat */
        amt_to_forward_msat?: Long | null;

        /** Hop fee_msat */
        fee_msat?: Long | null;

        /** Hop pub_key */
        pub_key?: string | null;

        /** Hop tlv_payload */
        tlv_payload?: boolean | null;

        /** Hop mpp_record */
        mpp_record?: lnrpc.IMPPRecord | null;

        /** Hop amp_record */
        amp_record?: lnrpc.IAMPRecord | null;

        /** Hop custom_records */
        custom_records?: { [k: string]: Uint8Array } | null;

        /** Hop metadata */
        metadata?: Uint8Array | null;

        /** Hop blinding_point */
        blinding_point?: Uint8Array | null;

        /** Hop encrypted_data */
        encrypted_data?: Uint8Array | null;

        /** Hop total_amt_msat */
        total_amt_msat?: Long | null;
    }

    /** Represents a Hop. */
    class Hop implements IHop {
        /**
         * Constructs a new Hop.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IHop);

        /** Hop chan_id. */
        public chan_id: Long;

        /** Hop chan_capacity. */
        public chan_capacity: Long;

        /** Hop amt_to_forward. */
        public amt_to_forward: Long;

        /** Hop fee. */
        public fee: Long;

        /** Hop expiry. */
        public expiry: number;

        /** Hop amt_to_forward_msat. */
        public amt_to_forward_msat: Long;

        /** Hop fee_msat. */
        public fee_msat: Long;

        /** Hop pub_key. */
        public pub_key: string;

        /** Hop tlv_payload. */
        public tlv_payload: boolean;

        /** Hop mpp_record. */
        public mpp_record?: lnrpc.IMPPRecord | null;

        /** Hop amp_record. */
        public amp_record?: lnrpc.IAMPRecord | null;

        /** Hop custom_records. */
        public custom_records: { [k: string]: Uint8Array };

        /** Hop metadata. */
        public metadata: Uint8Array;

        /** Hop blinding_point. */
        public blinding_point: Uint8Array;

        /** Hop encrypted_data. */
        public encrypted_data: Uint8Array;

        /** Hop total_amt_msat. */
        public total_amt_msat: Long;

        /**
         * Creates a new Hop instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Hop instance
         */
        public static create(properties?: lnrpc.IHop): lnrpc.Hop;

        /**
         * Encodes the specified Hop message. Does not implicitly {@link lnrpc.Hop.verify|verify} messages.
         * @param message Hop message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IHop,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Hop message, length delimited. Does not implicitly {@link lnrpc.Hop.verify|verify} messages.
         * @param message Hop message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IHop,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a Hop message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Hop
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.Hop;

        /**
         * Decodes a Hop message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Hop
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.Hop;

        /**
         * Verifies a Hop message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a Hop message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Hop
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.Hop;

        /**
         * Creates a plain object from a Hop message. Also converts values to other types if specified.
         * @param message Hop
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.Hop,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Hop to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Hop
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MPPRecord. */
    interface IMPPRecord {
        /** MPPRecord payment_addr */
        payment_addr?: Uint8Array | null;

        /** MPPRecord total_amt_msat */
        total_amt_msat?: Long | null;
    }

    /** Represents a MPPRecord. */
    class MPPRecord implements IMPPRecord {
        /**
         * Constructs a new MPPRecord.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IMPPRecord);

        /** MPPRecord payment_addr. */
        public payment_addr: Uint8Array;

        /** MPPRecord total_amt_msat. */
        public total_amt_msat: Long;

        /**
         * Creates a new MPPRecord instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MPPRecord instance
         */
        public static create(properties?: lnrpc.IMPPRecord): lnrpc.MPPRecord;

        /**
         * Encodes the specified MPPRecord message. Does not implicitly {@link lnrpc.MPPRecord.verify|verify} messages.
         * @param message MPPRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IMPPRecord,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MPPRecord message, length delimited. Does not implicitly {@link lnrpc.MPPRecord.verify|verify} messages.
         * @param message MPPRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IMPPRecord,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MPPRecord message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MPPRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.MPPRecord;

        /**
         * Decodes a MPPRecord message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MPPRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.MPPRecord;

        /**
         * Verifies a MPPRecord message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MPPRecord message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MPPRecord
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.MPPRecord;

        /**
         * Creates a plain object from a MPPRecord message. Also converts values to other types if specified.
         * @param message MPPRecord
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.MPPRecord,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MPPRecord to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MPPRecord
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a AMPRecord. */
    interface IAMPRecord {
        /** AMPRecord root_share */
        root_share?: Uint8Array | null;

        /** AMPRecord set_id */
        set_id?: Uint8Array | null;

        /** AMPRecord child_index */
        child_index?: number | null;
    }

    /** Represents a AMPRecord. */
    class AMPRecord implements IAMPRecord {
        /**
         * Constructs a new AMPRecord.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IAMPRecord);

        /** AMPRecord root_share. */
        public root_share: Uint8Array;

        /** AMPRecord set_id. */
        public set_id: Uint8Array;

        /** AMPRecord child_index. */
        public child_index: number;

        /**
         * Creates a new AMPRecord instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AMPRecord instance
         */
        public static create(properties?: lnrpc.IAMPRecord): lnrpc.AMPRecord;

        /**
         * Encodes the specified AMPRecord message. Does not implicitly {@link lnrpc.AMPRecord.verify|verify} messages.
         * @param message AMPRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IAMPRecord,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AMPRecord message, length delimited. Does not implicitly {@link lnrpc.AMPRecord.verify|verify} messages.
         * @param message AMPRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IAMPRecord,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a AMPRecord message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AMPRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.AMPRecord;

        /**
         * Decodes a AMPRecord message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AMPRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.AMPRecord;

        /**
         * Verifies a AMPRecord message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a AMPRecord message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AMPRecord
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.AMPRecord;

        /**
         * Creates a plain object from a AMPRecord message. Also converts values to other types if specified.
         * @param message AMPRecord
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.AMPRecord,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AMPRecord to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AMPRecord
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a Route. */
    interface IRoute {
        /** Route total_time_lock */
        total_time_lock?: number | null;

        /** Route total_fees */
        total_fees?: Long | null;

        /** Route total_amt */
        total_amt?: Long | null;

        /** Route hops */
        hops?: lnrpc.IHop[] | null;

        /** Route total_fees_msat */
        total_fees_msat?: Long | null;

        /** Route total_amt_msat */
        total_amt_msat?: Long | null;

        /** Route first_hop_amount_msat */
        first_hop_amount_msat?: Long | null;

        /** Route custom_channel_data */
        custom_channel_data?: Uint8Array | null;
    }

    /** Represents a Route. */
    class Route implements IRoute {
        /**
         * Constructs a new Route.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IRoute);

        /** Route total_time_lock. */
        public total_time_lock: number;

        /** Route total_fees. */
        public total_fees: Long;

        /** Route total_amt. */
        public total_amt: Long;

        /** Route hops. */
        public hops: lnrpc.IHop[];

        /** Route total_fees_msat. */
        public total_fees_msat: Long;

        /** Route total_amt_msat. */
        public total_amt_msat: Long;

        /** Route first_hop_amount_msat. */
        public first_hop_amount_msat: Long;

        /** Route custom_channel_data. */
        public custom_channel_data: Uint8Array;

        /**
         * Creates a new Route instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Route instance
         */
        public static create(properties?: lnrpc.IRoute): lnrpc.Route;

        /**
         * Encodes the specified Route message. Does not implicitly {@link lnrpc.Route.verify|verify} messages.
         * @param message Route message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IRoute,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Route message, length delimited. Does not implicitly {@link lnrpc.Route.verify|verify} messages.
         * @param message Route message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IRoute,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a Route message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Route
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.Route;

        /**
         * Decodes a Route message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Route
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.Route;

        /**
         * Verifies a Route message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a Route message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Route
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.Route;

        /**
         * Creates a plain object from a Route message. Also converts values to other types if specified.
         * @param message Route
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.Route,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Route to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Route
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a NodeInfoRequest. */
    interface INodeInfoRequest {
        /** NodeInfoRequest pub_key */
        pub_key?: string | null;

        /** NodeInfoRequest include_channels */
        include_channels?: boolean | null;
    }

    /** Represents a NodeInfoRequest. */
    class NodeInfoRequest implements INodeInfoRequest {
        /**
         * Constructs a new NodeInfoRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.INodeInfoRequest);

        /** NodeInfoRequest pub_key. */
        public pub_key: string;

        /** NodeInfoRequest include_channels. */
        public include_channels: boolean;

        /**
         * Creates a new NodeInfoRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns NodeInfoRequest instance
         */
        public static create(
            properties?: lnrpc.INodeInfoRequest
        ): lnrpc.NodeInfoRequest;

        /**
         * Encodes the specified NodeInfoRequest message. Does not implicitly {@link lnrpc.NodeInfoRequest.verify|verify} messages.
         * @param message NodeInfoRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.INodeInfoRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified NodeInfoRequest message, length delimited. Does not implicitly {@link lnrpc.NodeInfoRequest.verify|verify} messages.
         * @param message NodeInfoRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.INodeInfoRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a NodeInfoRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns NodeInfoRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.NodeInfoRequest;

        /**
         * Decodes a NodeInfoRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns NodeInfoRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.NodeInfoRequest;

        /**
         * Verifies a NodeInfoRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a NodeInfoRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns NodeInfoRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.NodeInfoRequest;

        /**
         * Creates a plain object from a NodeInfoRequest message. Also converts values to other types if specified.
         * @param message NodeInfoRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.NodeInfoRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this NodeInfoRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for NodeInfoRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a NodeInfo. */
    interface INodeInfo {
        /** NodeInfo node */
        node?: lnrpc.ILightningNode | null;

        /** NodeInfo num_channels */
        num_channels?: number | null;

        /** NodeInfo total_capacity */
        total_capacity?: Long | null;

        /** NodeInfo channels */
        channels?: lnrpc.IChannelEdge[] | null;
    }

    /** Represents a NodeInfo. */
    class NodeInfo implements INodeInfo {
        /**
         * Constructs a new NodeInfo.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.INodeInfo);

        /** NodeInfo node. */
        public node?: lnrpc.ILightningNode | null;

        /** NodeInfo num_channels. */
        public num_channels: number;

        /** NodeInfo total_capacity. */
        public total_capacity: Long;

        /** NodeInfo channels. */
        public channels: lnrpc.IChannelEdge[];

        /**
         * Creates a new NodeInfo instance using the specified properties.
         * @param [properties] Properties to set
         * @returns NodeInfo instance
         */
        public static create(properties?: lnrpc.INodeInfo): lnrpc.NodeInfo;

        /**
         * Encodes the specified NodeInfo message. Does not implicitly {@link lnrpc.NodeInfo.verify|verify} messages.
         * @param message NodeInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.INodeInfo,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified NodeInfo message, length delimited. Does not implicitly {@link lnrpc.NodeInfo.verify|verify} messages.
         * @param message NodeInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.INodeInfo,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a NodeInfo message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns NodeInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.NodeInfo;

        /**
         * Decodes a NodeInfo message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns NodeInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.NodeInfo;

        /**
         * Verifies a NodeInfo message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a NodeInfo message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns NodeInfo
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.NodeInfo;

        /**
         * Creates a plain object from a NodeInfo message. Also converts values to other types if specified.
         * @param message NodeInfo
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.NodeInfo,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this NodeInfo to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for NodeInfo
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a LightningNode. */
    interface ILightningNode {
        /** LightningNode last_update */
        last_update?: number | null;

        /** LightningNode pub_key */
        pub_key?: string | null;

        /** LightningNode alias */
        alias?: string | null;

        /** LightningNode addresses */
        addresses?: lnrpc.INodeAddress[] | null;

        /** LightningNode color */
        color?: string | null;

        /** LightningNode features */
        features?: { [k: string]: lnrpc.IFeature } | null;

        /** LightningNode custom_records */
        custom_records?: { [k: string]: Uint8Array } | null;
    }

    /** Represents a LightningNode. */
    class LightningNode implements ILightningNode {
        /**
         * Constructs a new LightningNode.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ILightningNode);

        /** LightningNode last_update. */
        public last_update: number;

        /** LightningNode pub_key. */
        public pub_key: string;

        /** LightningNode alias. */
        public alias: string;

        /** LightningNode addresses. */
        public addresses: lnrpc.INodeAddress[];

        /** LightningNode color. */
        public color: string;

        /** LightningNode features. */
        public features: { [k: string]: lnrpc.IFeature };

        /** LightningNode custom_records. */
        public custom_records: { [k: string]: Uint8Array };

        /**
         * Creates a new LightningNode instance using the specified properties.
         * @param [properties] Properties to set
         * @returns LightningNode instance
         */
        public static create(
            properties?: lnrpc.ILightningNode
        ): lnrpc.LightningNode;

        /**
         * Encodes the specified LightningNode message. Does not implicitly {@link lnrpc.LightningNode.verify|verify} messages.
         * @param message LightningNode message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ILightningNode,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified LightningNode message, length delimited. Does not implicitly {@link lnrpc.LightningNode.verify|verify} messages.
         * @param message LightningNode message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ILightningNode,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a LightningNode message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns LightningNode
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.LightningNode;

        /**
         * Decodes a LightningNode message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns LightningNode
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.LightningNode;

        /**
         * Verifies a LightningNode message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a LightningNode message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns LightningNode
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.LightningNode;

        /**
         * Creates a plain object from a LightningNode message. Also converts values to other types if specified.
         * @param message LightningNode
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.LightningNode,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this LightningNode to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for LightningNode
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a NodeAddress. */
    interface INodeAddress {
        /** NodeAddress network */
        network?: string | null;

        /** NodeAddress addr */
        addr?: string | null;
    }

    /** Represents a NodeAddress. */
    class NodeAddress implements INodeAddress {
        /**
         * Constructs a new NodeAddress.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.INodeAddress);

        /** NodeAddress network. */
        public network: string;

        /** NodeAddress addr. */
        public addr: string;

        /**
         * Creates a new NodeAddress instance using the specified properties.
         * @param [properties] Properties to set
         * @returns NodeAddress instance
         */
        public static create(
            properties?: lnrpc.INodeAddress
        ): lnrpc.NodeAddress;

        /**
         * Encodes the specified NodeAddress message. Does not implicitly {@link lnrpc.NodeAddress.verify|verify} messages.
         * @param message NodeAddress message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.INodeAddress,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified NodeAddress message, length delimited. Does not implicitly {@link lnrpc.NodeAddress.verify|verify} messages.
         * @param message NodeAddress message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.INodeAddress,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a NodeAddress message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns NodeAddress
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.NodeAddress;

        /**
         * Decodes a NodeAddress message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns NodeAddress
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.NodeAddress;

        /**
         * Verifies a NodeAddress message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a NodeAddress message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns NodeAddress
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.NodeAddress;

        /**
         * Creates a plain object from a NodeAddress message. Also converts values to other types if specified.
         * @param message NodeAddress
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.NodeAddress,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this NodeAddress to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for NodeAddress
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a RoutingPolicy. */
    interface IRoutingPolicy {
        /** RoutingPolicy time_lock_delta */
        time_lock_delta?: number | null;

        /** RoutingPolicy min_htlc */
        min_htlc?: Long | null;

        /** RoutingPolicy fee_base_msat */
        fee_base_msat?: Long | null;

        /** RoutingPolicy fee_rate_milli_msat */
        fee_rate_milli_msat?: Long | null;

        /** RoutingPolicy disabled */
        disabled?: boolean | null;

        /** RoutingPolicy max_htlc_msat */
        max_htlc_msat?: Long | null;

        /** RoutingPolicy last_update */
        last_update?: number | null;

        /** RoutingPolicy custom_records */
        custom_records?: { [k: string]: Uint8Array } | null;

        /** RoutingPolicy inbound_fee_base_msat */
        inbound_fee_base_msat?: number | null;

        /** RoutingPolicy inbound_fee_rate_milli_msat */
        inbound_fee_rate_milli_msat?: number | null;
    }

    /** Represents a RoutingPolicy. */
    class RoutingPolicy implements IRoutingPolicy {
        /**
         * Constructs a new RoutingPolicy.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IRoutingPolicy);

        /** RoutingPolicy time_lock_delta. */
        public time_lock_delta: number;

        /** RoutingPolicy min_htlc. */
        public min_htlc: Long;

        /** RoutingPolicy fee_base_msat. */
        public fee_base_msat: Long;

        /** RoutingPolicy fee_rate_milli_msat. */
        public fee_rate_milli_msat: Long;

        /** RoutingPolicy disabled. */
        public disabled: boolean;

        /** RoutingPolicy max_htlc_msat. */
        public max_htlc_msat: Long;

        /** RoutingPolicy last_update. */
        public last_update: number;

        /** RoutingPolicy custom_records. */
        public custom_records: { [k: string]: Uint8Array };

        /** RoutingPolicy inbound_fee_base_msat. */
        public inbound_fee_base_msat: number;

        /** RoutingPolicy inbound_fee_rate_milli_msat. */
        public inbound_fee_rate_milli_msat: number;

        /**
         * Creates a new RoutingPolicy instance using the specified properties.
         * @param [properties] Properties to set
         * @returns RoutingPolicy instance
         */
        public static create(
            properties?: lnrpc.IRoutingPolicy
        ): lnrpc.RoutingPolicy;

        /**
         * Encodes the specified RoutingPolicy message. Does not implicitly {@link lnrpc.RoutingPolicy.verify|verify} messages.
         * @param message RoutingPolicy message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IRoutingPolicy,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified RoutingPolicy message, length delimited. Does not implicitly {@link lnrpc.RoutingPolicy.verify|verify} messages.
         * @param message RoutingPolicy message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IRoutingPolicy,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a RoutingPolicy message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns RoutingPolicy
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.RoutingPolicy;

        /**
         * Decodes a RoutingPolicy message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns RoutingPolicy
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.RoutingPolicy;

        /**
         * Verifies a RoutingPolicy message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a RoutingPolicy message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns RoutingPolicy
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.RoutingPolicy;

        /**
         * Creates a plain object from a RoutingPolicy message. Also converts values to other types if specified.
         * @param message RoutingPolicy
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.RoutingPolicy,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this RoutingPolicy to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for RoutingPolicy
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChannelEdge. */
    interface IChannelEdge {
        /** ChannelEdge channel_id */
        channel_id?: Long | null;

        /** ChannelEdge chan_point */
        chan_point?: string | null;

        /** ChannelEdge last_update */
        last_update?: number | null;

        /** ChannelEdge node1_pub */
        node1_pub?: string | null;

        /** ChannelEdge node2_pub */
        node2_pub?: string | null;

        /** ChannelEdge capacity */
        capacity?: Long | null;

        /** ChannelEdge node1_policy */
        node1_policy?: lnrpc.IRoutingPolicy | null;

        /** ChannelEdge node2_policy */
        node2_policy?: lnrpc.IRoutingPolicy | null;

        /** ChannelEdge custom_records */
        custom_records?: { [k: string]: Uint8Array } | null;
    }

    /** Represents a ChannelEdge. */
    class ChannelEdge implements IChannelEdge {
        /**
         * Constructs a new ChannelEdge.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelEdge);

        /** ChannelEdge channel_id. */
        public channel_id: Long;

        /** ChannelEdge chan_point. */
        public chan_point: string;

        /** ChannelEdge last_update. */
        public last_update: number;

        /** ChannelEdge node1_pub. */
        public node1_pub: string;

        /** ChannelEdge node2_pub. */
        public node2_pub: string;

        /** ChannelEdge capacity. */
        public capacity: Long;

        /** ChannelEdge node1_policy. */
        public node1_policy?: lnrpc.IRoutingPolicy | null;

        /** ChannelEdge node2_policy. */
        public node2_policy?: lnrpc.IRoutingPolicy | null;

        /** ChannelEdge custom_records. */
        public custom_records: { [k: string]: Uint8Array };

        /**
         * Creates a new ChannelEdge instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelEdge instance
         */
        public static create(
            properties?: lnrpc.IChannelEdge
        ): lnrpc.ChannelEdge;

        /**
         * Encodes the specified ChannelEdge message. Does not implicitly {@link lnrpc.ChannelEdge.verify|verify} messages.
         * @param message ChannelEdge message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelEdge,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelEdge message, length delimited. Does not implicitly {@link lnrpc.ChannelEdge.verify|verify} messages.
         * @param message ChannelEdge message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelEdge,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelEdge message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelEdge
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelEdge;

        /**
         * Decodes a ChannelEdge message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelEdge
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelEdge;

        /**
         * Verifies a ChannelEdge message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelEdge message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelEdge
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelEdge;

        /**
         * Creates a plain object from a ChannelEdge message. Also converts values to other types if specified.
         * @param message ChannelEdge
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelEdge,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelEdge to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelEdge
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChannelGraphRequest. */
    interface IChannelGraphRequest {
        /** ChannelGraphRequest include_unannounced */
        include_unannounced?: boolean | null;
    }

    /** Represents a ChannelGraphRequest. */
    class ChannelGraphRequest implements IChannelGraphRequest {
        /**
         * Constructs a new ChannelGraphRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelGraphRequest);

        /** ChannelGraphRequest include_unannounced. */
        public include_unannounced: boolean;

        /**
         * Creates a new ChannelGraphRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelGraphRequest instance
         */
        public static create(
            properties?: lnrpc.IChannelGraphRequest
        ): lnrpc.ChannelGraphRequest;

        /**
         * Encodes the specified ChannelGraphRequest message. Does not implicitly {@link lnrpc.ChannelGraphRequest.verify|verify} messages.
         * @param message ChannelGraphRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelGraphRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelGraphRequest message, length delimited. Does not implicitly {@link lnrpc.ChannelGraphRequest.verify|verify} messages.
         * @param message ChannelGraphRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelGraphRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelGraphRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelGraphRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelGraphRequest;

        /**
         * Decodes a ChannelGraphRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelGraphRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelGraphRequest;

        /**
         * Verifies a ChannelGraphRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelGraphRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelGraphRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelGraphRequest;

        /**
         * Creates a plain object from a ChannelGraphRequest message. Also converts values to other types if specified.
         * @param message ChannelGraphRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelGraphRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelGraphRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelGraphRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChannelGraph. */
    interface IChannelGraph {
        /** ChannelGraph nodes */
        nodes?: lnrpc.ILightningNode[] | null;

        /** ChannelGraph edges */
        edges?: lnrpc.IChannelEdge[] | null;
    }

    /** Represents a ChannelGraph. */
    class ChannelGraph implements IChannelGraph {
        /**
         * Constructs a new ChannelGraph.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelGraph);

        /** ChannelGraph nodes. */
        public nodes: lnrpc.ILightningNode[];

        /** ChannelGraph edges. */
        public edges: lnrpc.IChannelEdge[];

        /**
         * Creates a new ChannelGraph instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelGraph instance
         */
        public static create(
            properties?: lnrpc.IChannelGraph
        ): lnrpc.ChannelGraph;

        /**
         * Encodes the specified ChannelGraph message. Does not implicitly {@link lnrpc.ChannelGraph.verify|verify} messages.
         * @param message ChannelGraph message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelGraph,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelGraph message, length delimited. Does not implicitly {@link lnrpc.ChannelGraph.verify|verify} messages.
         * @param message ChannelGraph message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelGraph,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelGraph message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelGraph
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelGraph;

        /**
         * Decodes a ChannelGraph message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelGraph
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelGraph;

        /**
         * Verifies a ChannelGraph message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelGraph message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelGraph
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelGraph;

        /**
         * Creates a plain object from a ChannelGraph message. Also converts values to other types if specified.
         * @param message ChannelGraph
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelGraph,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelGraph to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelGraph
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** NodeMetricType enum. */
    enum NodeMetricType {
        UNKNOWN = 0,
        BETWEENNESS_CENTRALITY = 1
    }

    /** Properties of a NodeMetricsRequest. */
    interface INodeMetricsRequest {
        /** NodeMetricsRequest types */
        types?: lnrpc.NodeMetricType[] | null;
    }

    /** Represents a NodeMetricsRequest. */
    class NodeMetricsRequest implements INodeMetricsRequest {
        /**
         * Constructs a new NodeMetricsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.INodeMetricsRequest);

        /** NodeMetricsRequest types. */
        public types: lnrpc.NodeMetricType[];

        /**
         * Creates a new NodeMetricsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns NodeMetricsRequest instance
         */
        public static create(
            properties?: lnrpc.INodeMetricsRequest
        ): lnrpc.NodeMetricsRequest;

        /**
         * Encodes the specified NodeMetricsRequest message. Does not implicitly {@link lnrpc.NodeMetricsRequest.verify|verify} messages.
         * @param message NodeMetricsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.INodeMetricsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified NodeMetricsRequest message, length delimited. Does not implicitly {@link lnrpc.NodeMetricsRequest.verify|verify} messages.
         * @param message NodeMetricsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.INodeMetricsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a NodeMetricsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns NodeMetricsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.NodeMetricsRequest;

        /**
         * Decodes a NodeMetricsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns NodeMetricsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.NodeMetricsRequest;

        /**
         * Verifies a NodeMetricsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a NodeMetricsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns NodeMetricsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.NodeMetricsRequest;

        /**
         * Creates a plain object from a NodeMetricsRequest message. Also converts values to other types if specified.
         * @param message NodeMetricsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.NodeMetricsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this NodeMetricsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for NodeMetricsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a NodeMetricsResponse. */
    interface INodeMetricsResponse {
        /** NodeMetricsResponse betweenness_centrality */
        betweenness_centrality?: { [k: string]: lnrpc.IFloatMetric } | null;
    }

    /** Represents a NodeMetricsResponse. */
    class NodeMetricsResponse implements INodeMetricsResponse {
        /**
         * Constructs a new NodeMetricsResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.INodeMetricsResponse);

        /** NodeMetricsResponse betweenness_centrality. */
        public betweenness_centrality: { [k: string]: lnrpc.IFloatMetric };

        /**
         * Creates a new NodeMetricsResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns NodeMetricsResponse instance
         */
        public static create(
            properties?: lnrpc.INodeMetricsResponse
        ): lnrpc.NodeMetricsResponse;

        /**
         * Encodes the specified NodeMetricsResponse message. Does not implicitly {@link lnrpc.NodeMetricsResponse.verify|verify} messages.
         * @param message NodeMetricsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.INodeMetricsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified NodeMetricsResponse message, length delimited. Does not implicitly {@link lnrpc.NodeMetricsResponse.verify|verify} messages.
         * @param message NodeMetricsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.INodeMetricsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a NodeMetricsResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns NodeMetricsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.NodeMetricsResponse;

        /**
         * Decodes a NodeMetricsResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns NodeMetricsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.NodeMetricsResponse;

        /**
         * Verifies a NodeMetricsResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a NodeMetricsResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns NodeMetricsResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.NodeMetricsResponse;

        /**
         * Creates a plain object from a NodeMetricsResponse message. Also converts values to other types if specified.
         * @param message NodeMetricsResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.NodeMetricsResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this NodeMetricsResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for NodeMetricsResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a FloatMetric. */
    interface IFloatMetric {
        /** FloatMetric value */
        value?: number | null;

        /** FloatMetric normalized_value */
        normalized_value?: number | null;
    }

    /** Represents a FloatMetric. */
    class FloatMetric implements IFloatMetric {
        /**
         * Constructs a new FloatMetric.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IFloatMetric);

        /** FloatMetric value. */
        public value: number;

        /** FloatMetric normalized_value. */
        public normalized_value: number;

        /**
         * Creates a new FloatMetric instance using the specified properties.
         * @param [properties] Properties to set
         * @returns FloatMetric instance
         */
        public static create(
            properties?: lnrpc.IFloatMetric
        ): lnrpc.FloatMetric;

        /**
         * Encodes the specified FloatMetric message. Does not implicitly {@link lnrpc.FloatMetric.verify|verify} messages.
         * @param message FloatMetric message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IFloatMetric,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified FloatMetric message, length delimited. Does not implicitly {@link lnrpc.FloatMetric.verify|verify} messages.
         * @param message FloatMetric message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IFloatMetric,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a FloatMetric message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns FloatMetric
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.FloatMetric;

        /**
         * Decodes a FloatMetric message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns FloatMetric
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.FloatMetric;

        /**
         * Verifies a FloatMetric message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a FloatMetric message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns FloatMetric
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.FloatMetric;

        /**
         * Creates a plain object from a FloatMetric message. Also converts values to other types if specified.
         * @param message FloatMetric
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.FloatMetric,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this FloatMetric to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for FloatMetric
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChanInfoRequest. */
    interface IChanInfoRequest {
        /** ChanInfoRequest chan_id */
        chan_id?: Long | null;

        /** ChanInfoRequest chan_point */
        chan_point?: string | null;
    }

    /** Represents a ChanInfoRequest. */
    class ChanInfoRequest implements IChanInfoRequest {
        /**
         * Constructs a new ChanInfoRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChanInfoRequest);

        /** ChanInfoRequest chan_id. */
        public chan_id: Long;

        /** ChanInfoRequest chan_point. */
        public chan_point: string;

        /**
         * Creates a new ChanInfoRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChanInfoRequest instance
         */
        public static create(
            properties?: lnrpc.IChanInfoRequest
        ): lnrpc.ChanInfoRequest;

        /**
         * Encodes the specified ChanInfoRequest message. Does not implicitly {@link lnrpc.ChanInfoRequest.verify|verify} messages.
         * @param message ChanInfoRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChanInfoRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChanInfoRequest message, length delimited. Does not implicitly {@link lnrpc.ChanInfoRequest.verify|verify} messages.
         * @param message ChanInfoRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChanInfoRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChanInfoRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChanInfoRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChanInfoRequest;

        /**
         * Decodes a ChanInfoRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChanInfoRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChanInfoRequest;

        /**
         * Verifies a ChanInfoRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChanInfoRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChanInfoRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChanInfoRequest;

        /**
         * Creates a plain object from a ChanInfoRequest message. Also converts values to other types if specified.
         * @param message ChanInfoRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChanInfoRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChanInfoRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChanInfoRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a NetworkInfoRequest. */
    interface INetworkInfoRequest {}

    /** Represents a NetworkInfoRequest. */
    class NetworkInfoRequest implements INetworkInfoRequest {
        /**
         * Constructs a new NetworkInfoRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.INetworkInfoRequest);

        /**
         * Creates a new NetworkInfoRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns NetworkInfoRequest instance
         */
        public static create(
            properties?: lnrpc.INetworkInfoRequest
        ): lnrpc.NetworkInfoRequest;

        /**
         * Encodes the specified NetworkInfoRequest message. Does not implicitly {@link lnrpc.NetworkInfoRequest.verify|verify} messages.
         * @param message NetworkInfoRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.INetworkInfoRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified NetworkInfoRequest message, length delimited. Does not implicitly {@link lnrpc.NetworkInfoRequest.verify|verify} messages.
         * @param message NetworkInfoRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.INetworkInfoRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a NetworkInfoRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns NetworkInfoRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.NetworkInfoRequest;

        /**
         * Decodes a NetworkInfoRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns NetworkInfoRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.NetworkInfoRequest;

        /**
         * Verifies a NetworkInfoRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a NetworkInfoRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns NetworkInfoRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.NetworkInfoRequest;

        /**
         * Creates a plain object from a NetworkInfoRequest message. Also converts values to other types if specified.
         * @param message NetworkInfoRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.NetworkInfoRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this NetworkInfoRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for NetworkInfoRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a NetworkInfo. */
    interface INetworkInfo {
        /** NetworkInfo graph_diameter */
        graph_diameter?: number | null;

        /** NetworkInfo avg_out_degree */
        avg_out_degree?: number | null;

        /** NetworkInfo max_out_degree */
        max_out_degree?: number | null;

        /** NetworkInfo num_nodes */
        num_nodes?: number | null;

        /** NetworkInfo num_channels */
        num_channels?: number | null;

        /** NetworkInfo total_network_capacity */
        total_network_capacity?: Long | null;

        /** NetworkInfo avg_channel_size */
        avg_channel_size?: number | null;

        /** NetworkInfo min_channel_size */
        min_channel_size?: Long | null;

        /** NetworkInfo max_channel_size */
        max_channel_size?: Long | null;

        /** NetworkInfo median_channel_size_sat */
        median_channel_size_sat?: Long | null;

        /** NetworkInfo num_zombie_chans */
        num_zombie_chans?: Long | null;
    }

    /** Represents a NetworkInfo. */
    class NetworkInfo implements INetworkInfo {
        /**
         * Constructs a new NetworkInfo.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.INetworkInfo);

        /** NetworkInfo graph_diameter. */
        public graph_diameter: number;

        /** NetworkInfo avg_out_degree. */
        public avg_out_degree: number;

        /** NetworkInfo max_out_degree. */
        public max_out_degree: number;

        /** NetworkInfo num_nodes. */
        public num_nodes: number;

        /** NetworkInfo num_channels. */
        public num_channels: number;

        /** NetworkInfo total_network_capacity. */
        public total_network_capacity: Long;

        /** NetworkInfo avg_channel_size. */
        public avg_channel_size: number;

        /** NetworkInfo min_channel_size. */
        public min_channel_size: Long;

        /** NetworkInfo max_channel_size. */
        public max_channel_size: Long;

        /** NetworkInfo median_channel_size_sat. */
        public median_channel_size_sat: Long;

        /** NetworkInfo num_zombie_chans. */
        public num_zombie_chans: Long;

        /**
         * Creates a new NetworkInfo instance using the specified properties.
         * @param [properties] Properties to set
         * @returns NetworkInfo instance
         */
        public static create(
            properties?: lnrpc.INetworkInfo
        ): lnrpc.NetworkInfo;

        /**
         * Encodes the specified NetworkInfo message. Does not implicitly {@link lnrpc.NetworkInfo.verify|verify} messages.
         * @param message NetworkInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.INetworkInfo,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified NetworkInfo message, length delimited. Does not implicitly {@link lnrpc.NetworkInfo.verify|verify} messages.
         * @param message NetworkInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.INetworkInfo,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a NetworkInfo message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns NetworkInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.NetworkInfo;

        /**
         * Decodes a NetworkInfo message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns NetworkInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.NetworkInfo;

        /**
         * Verifies a NetworkInfo message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a NetworkInfo message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns NetworkInfo
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.NetworkInfo;

        /**
         * Creates a plain object from a NetworkInfo message. Also converts values to other types if specified.
         * @param message NetworkInfo
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.NetworkInfo,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this NetworkInfo to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for NetworkInfo
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a StopRequest. */
    interface IStopRequest {}

    /** Represents a StopRequest. */
    class StopRequest implements IStopRequest {
        /**
         * Constructs a new StopRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IStopRequest);

        /**
         * Creates a new StopRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StopRequest instance
         */
        public static create(
            properties?: lnrpc.IStopRequest
        ): lnrpc.StopRequest;

        /**
         * Encodes the specified StopRequest message. Does not implicitly {@link lnrpc.StopRequest.verify|verify} messages.
         * @param message StopRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IStopRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified StopRequest message, length delimited. Does not implicitly {@link lnrpc.StopRequest.verify|verify} messages.
         * @param message StopRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IStopRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a StopRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StopRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.StopRequest;

        /**
         * Decodes a StopRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StopRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.StopRequest;

        /**
         * Verifies a StopRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a StopRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StopRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.StopRequest;

        /**
         * Creates a plain object from a StopRequest message. Also converts values to other types if specified.
         * @param message StopRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.StopRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this StopRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StopRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a StopResponse. */
    interface IStopResponse {}

    /** Represents a StopResponse. */
    class StopResponse implements IStopResponse {
        /**
         * Constructs a new StopResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IStopResponse);

        /**
         * Creates a new StopResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StopResponse instance
         */
        public static create(
            properties?: lnrpc.IStopResponse
        ): lnrpc.StopResponse;

        /**
         * Encodes the specified StopResponse message. Does not implicitly {@link lnrpc.StopResponse.verify|verify} messages.
         * @param message StopResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IStopResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified StopResponse message, length delimited. Does not implicitly {@link lnrpc.StopResponse.verify|verify} messages.
         * @param message StopResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IStopResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a StopResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StopResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.StopResponse;

        /**
         * Decodes a StopResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StopResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.StopResponse;

        /**
         * Verifies a StopResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a StopResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StopResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.StopResponse;

        /**
         * Creates a plain object from a StopResponse message. Also converts values to other types if specified.
         * @param message StopResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.StopResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this StopResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StopResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GraphTopologySubscription. */
    interface IGraphTopologySubscription {}

    /** Represents a GraphTopologySubscription. */
    class GraphTopologySubscription implements IGraphTopologySubscription {
        /**
         * Constructs a new GraphTopologySubscription.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IGraphTopologySubscription);

        /**
         * Creates a new GraphTopologySubscription instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GraphTopologySubscription instance
         */
        public static create(
            properties?: lnrpc.IGraphTopologySubscription
        ): lnrpc.GraphTopologySubscription;

        /**
         * Encodes the specified GraphTopologySubscription message. Does not implicitly {@link lnrpc.GraphTopologySubscription.verify|verify} messages.
         * @param message GraphTopologySubscription message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IGraphTopologySubscription,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GraphTopologySubscription message, length delimited. Does not implicitly {@link lnrpc.GraphTopologySubscription.verify|verify} messages.
         * @param message GraphTopologySubscription message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IGraphTopologySubscription,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GraphTopologySubscription message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GraphTopologySubscription
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.GraphTopologySubscription;

        /**
         * Decodes a GraphTopologySubscription message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GraphTopologySubscription
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.GraphTopologySubscription;

        /**
         * Verifies a GraphTopologySubscription message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GraphTopologySubscription message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GraphTopologySubscription
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.GraphTopologySubscription;

        /**
         * Creates a plain object from a GraphTopologySubscription message. Also converts values to other types if specified.
         * @param message GraphTopologySubscription
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.GraphTopologySubscription,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GraphTopologySubscription to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GraphTopologySubscription
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GraphTopologyUpdate. */
    interface IGraphTopologyUpdate {
        /** GraphTopologyUpdate node_updates */
        node_updates?: lnrpc.INodeUpdate[] | null;

        /** GraphTopologyUpdate channel_updates */
        channel_updates?: lnrpc.IChannelEdgeUpdate[] | null;

        /** GraphTopologyUpdate closed_chans */
        closed_chans?: lnrpc.IClosedChannelUpdate[] | null;
    }

    /** Represents a GraphTopologyUpdate. */
    class GraphTopologyUpdate implements IGraphTopologyUpdate {
        /**
         * Constructs a new GraphTopologyUpdate.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IGraphTopologyUpdate);

        /** GraphTopologyUpdate node_updates. */
        public node_updates: lnrpc.INodeUpdate[];

        /** GraphTopologyUpdate channel_updates. */
        public channel_updates: lnrpc.IChannelEdgeUpdate[];

        /** GraphTopologyUpdate closed_chans. */
        public closed_chans: lnrpc.IClosedChannelUpdate[];

        /**
         * Creates a new GraphTopologyUpdate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GraphTopologyUpdate instance
         */
        public static create(
            properties?: lnrpc.IGraphTopologyUpdate
        ): lnrpc.GraphTopologyUpdate;

        /**
         * Encodes the specified GraphTopologyUpdate message. Does not implicitly {@link lnrpc.GraphTopologyUpdate.verify|verify} messages.
         * @param message GraphTopologyUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IGraphTopologyUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GraphTopologyUpdate message, length delimited. Does not implicitly {@link lnrpc.GraphTopologyUpdate.verify|verify} messages.
         * @param message GraphTopologyUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IGraphTopologyUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GraphTopologyUpdate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GraphTopologyUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.GraphTopologyUpdate;

        /**
         * Decodes a GraphTopologyUpdate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GraphTopologyUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.GraphTopologyUpdate;

        /**
         * Verifies a GraphTopologyUpdate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GraphTopologyUpdate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GraphTopologyUpdate
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.GraphTopologyUpdate;

        /**
         * Creates a plain object from a GraphTopologyUpdate message. Also converts values to other types if specified.
         * @param message GraphTopologyUpdate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.GraphTopologyUpdate,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GraphTopologyUpdate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GraphTopologyUpdate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a NodeUpdate. */
    interface INodeUpdate {
        /** NodeUpdate addresses */
        addresses?: string[] | null;

        /** NodeUpdate identity_key */
        identity_key?: string | null;

        /** NodeUpdate global_features */
        global_features?: Uint8Array | null;

        /** NodeUpdate alias */
        alias?: string | null;

        /** NodeUpdate color */
        color?: string | null;

        /** NodeUpdate node_addresses */
        node_addresses?: lnrpc.INodeAddress[] | null;

        /** NodeUpdate features */
        features?: { [k: string]: lnrpc.IFeature } | null;
    }

    /** Represents a NodeUpdate. */
    class NodeUpdate implements INodeUpdate {
        /**
         * Constructs a new NodeUpdate.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.INodeUpdate);

        /** NodeUpdate addresses. */
        public addresses: string[];

        /** NodeUpdate identity_key. */
        public identity_key: string;

        /** NodeUpdate global_features. */
        public global_features: Uint8Array;

        /** NodeUpdate alias. */
        public alias: string;

        /** NodeUpdate color. */
        public color: string;

        /** NodeUpdate node_addresses. */
        public node_addresses: lnrpc.INodeAddress[];

        /** NodeUpdate features. */
        public features: { [k: string]: lnrpc.IFeature };

        /**
         * Creates a new NodeUpdate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns NodeUpdate instance
         */
        public static create(properties?: lnrpc.INodeUpdate): lnrpc.NodeUpdate;

        /**
         * Encodes the specified NodeUpdate message. Does not implicitly {@link lnrpc.NodeUpdate.verify|verify} messages.
         * @param message NodeUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.INodeUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified NodeUpdate message, length delimited. Does not implicitly {@link lnrpc.NodeUpdate.verify|verify} messages.
         * @param message NodeUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.INodeUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a NodeUpdate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns NodeUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.NodeUpdate;

        /**
         * Decodes a NodeUpdate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns NodeUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.NodeUpdate;

        /**
         * Verifies a NodeUpdate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a NodeUpdate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns NodeUpdate
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.NodeUpdate;

        /**
         * Creates a plain object from a NodeUpdate message. Also converts values to other types if specified.
         * @param message NodeUpdate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.NodeUpdate,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this NodeUpdate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for NodeUpdate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChannelEdgeUpdate. */
    interface IChannelEdgeUpdate {
        /** ChannelEdgeUpdate chan_id */
        chan_id?: Long | null;

        /** ChannelEdgeUpdate chan_point */
        chan_point?: lnrpc.IChannelPoint | null;

        /** ChannelEdgeUpdate capacity */
        capacity?: Long | null;

        /** ChannelEdgeUpdate routing_policy */
        routing_policy?: lnrpc.IRoutingPolicy | null;

        /** ChannelEdgeUpdate advertising_node */
        advertising_node?: string | null;

        /** ChannelEdgeUpdate connecting_node */
        connecting_node?: string | null;
    }

    /** Represents a ChannelEdgeUpdate. */
    class ChannelEdgeUpdate implements IChannelEdgeUpdate {
        /**
         * Constructs a new ChannelEdgeUpdate.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelEdgeUpdate);

        /** ChannelEdgeUpdate chan_id. */
        public chan_id: Long;

        /** ChannelEdgeUpdate chan_point. */
        public chan_point?: lnrpc.IChannelPoint | null;

        /** ChannelEdgeUpdate capacity. */
        public capacity: Long;

        /** ChannelEdgeUpdate routing_policy. */
        public routing_policy?: lnrpc.IRoutingPolicy | null;

        /** ChannelEdgeUpdate advertising_node. */
        public advertising_node: string;

        /** ChannelEdgeUpdate connecting_node. */
        public connecting_node: string;

        /**
         * Creates a new ChannelEdgeUpdate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelEdgeUpdate instance
         */
        public static create(
            properties?: lnrpc.IChannelEdgeUpdate
        ): lnrpc.ChannelEdgeUpdate;

        /**
         * Encodes the specified ChannelEdgeUpdate message. Does not implicitly {@link lnrpc.ChannelEdgeUpdate.verify|verify} messages.
         * @param message ChannelEdgeUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelEdgeUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelEdgeUpdate message, length delimited. Does not implicitly {@link lnrpc.ChannelEdgeUpdate.verify|verify} messages.
         * @param message ChannelEdgeUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelEdgeUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelEdgeUpdate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelEdgeUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelEdgeUpdate;

        /**
         * Decodes a ChannelEdgeUpdate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelEdgeUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelEdgeUpdate;

        /**
         * Verifies a ChannelEdgeUpdate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelEdgeUpdate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelEdgeUpdate
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelEdgeUpdate;

        /**
         * Creates a plain object from a ChannelEdgeUpdate message. Also converts values to other types if specified.
         * @param message ChannelEdgeUpdate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelEdgeUpdate,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelEdgeUpdate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelEdgeUpdate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ClosedChannelUpdate. */
    interface IClosedChannelUpdate {
        /** ClosedChannelUpdate chan_id */
        chan_id?: Long | null;

        /** ClosedChannelUpdate capacity */
        capacity?: Long | null;

        /** ClosedChannelUpdate closed_height */
        closed_height?: number | null;

        /** ClosedChannelUpdate chan_point */
        chan_point?: lnrpc.IChannelPoint | null;
    }

    /** Represents a ClosedChannelUpdate. */
    class ClosedChannelUpdate implements IClosedChannelUpdate {
        /**
         * Constructs a new ClosedChannelUpdate.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IClosedChannelUpdate);

        /** ClosedChannelUpdate chan_id. */
        public chan_id: Long;

        /** ClosedChannelUpdate capacity. */
        public capacity: Long;

        /** ClosedChannelUpdate closed_height. */
        public closed_height: number;

        /** ClosedChannelUpdate chan_point. */
        public chan_point?: lnrpc.IChannelPoint | null;

        /**
         * Creates a new ClosedChannelUpdate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ClosedChannelUpdate instance
         */
        public static create(
            properties?: lnrpc.IClosedChannelUpdate
        ): lnrpc.ClosedChannelUpdate;

        /**
         * Encodes the specified ClosedChannelUpdate message. Does not implicitly {@link lnrpc.ClosedChannelUpdate.verify|verify} messages.
         * @param message ClosedChannelUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IClosedChannelUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ClosedChannelUpdate message, length delimited. Does not implicitly {@link lnrpc.ClosedChannelUpdate.verify|verify} messages.
         * @param message ClosedChannelUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IClosedChannelUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ClosedChannelUpdate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ClosedChannelUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ClosedChannelUpdate;

        /**
         * Decodes a ClosedChannelUpdate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ClosedChannelUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ClosedChannelUpdate;

        /**
         * Verifies a ClosedChannelUpdate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ClosedChannelUpdate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ClosedChannelUpdate
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ClosedChannelUpdate;

        /**
         * Creates a plain object from a ClosedChannelUpdate message. Also converts values to other types if specified.
         * @param message ClosedChannelUpdate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ClosedChannelUpdate,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ClosedChannelUpdate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ClosedChannelUpdate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a HopHint. */
    interface IHopHint {
        /** HopHint node_id */
        node_id?: string | null;

        /** HopHint chan_id */
        chan_id?: Long | null;

        /** HopHint fee_base_msat */
        fee_base_msat?: number | null;

        /** HopHint fee_proportional_millionths */
        fee_proportional_millionths?: number | null;

        /** HopHint cltv_expiry_delta */
        cltv_expiry_delta?: number | null;
    }

    /** Represents a HopHint. */
    class HopHint implements IHopHint {
        /**
         * Constructs a new HopHint.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IHopHint);

        /** HopHint node_id. */
        public node_id: string;

        /** HopHint chan_id. */
        public chan_id: Long;

        /** HopHint fee_base_msat. */
        public fee_base_msat: number;

        /** HopHint fee_proportional_millionths. */
        public fee_proportional_millionths: number;

        /** HopHint cltv_expiry_delta. */
        public cltv_expiry_delta: number;

        /**
         * Creates a new HopHint instance using the specified properties.
         * @param [properties] Properties to set
         * @returns HopHint instance
         */
        public static create(properties?: lnrpc.IHopHint): lnrpc.HopHint;

        /**
         * Encodes the specified HopHint message. Does not implicitly {@link lnrpc.HopHint.verify|verify} messages.
         * @param message HopHint message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IHopHint,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified HopHint message, length delimited. Does not implicitly {@link lnrpc.HopHint.verify|verify} messages.
         * @param message HopHint message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IHopHint,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a HopHint message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns HopHint
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.HopHint;

        /**
         * Decodes a HopHint message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns HopHint
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.HopHint;

        /**
         * Verifies a HopHint message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a HopHint message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns HopHint
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.HopHint;

        /**
         * Creates a plain object from a HopHint message. Also converts values to other types if specified.
         * @param message HopHint
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.HopHint,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this HopHint to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for HopHint
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SetID. */
    interface ISetID {
        /** SetID set_id */
        set_id?: Uint8Array | null;
    }

    /** Represents a SetID. */
    class SetID implements ISetID {
        /**
         * Constructs a new SetID.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ISetID);

        /** SetID set_id. */
        public set_id: Uint8Array;

        /**
         * Creates a new SetID instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SetID instance
         */
        public static create(properties?: lnrpc.ISetID): lnrpc.SetID;

        /**
         * Encodes the specified SetID message. Does not implicitly {@link lnrpc.SetID.verify|verify} messages.
         * @param message SetID message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ISetID,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SetID message, length delimited. Does not implicitly {@link lnrpc.SetID.verify|verify} messages.
         * @param message SetID message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ISetID,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SetID message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SetID
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.SetID;

        /**
         * Decodes a SetID message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SetID
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.SetID;

        /**
         * Verifies a SetID message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SetID message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SetID
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.SetID;

        /**
         * Creates a plain object from a SetID message. Also converts values to other types if specified.
         * @param message SetID
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.SetID,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SetID to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SetID
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a RouteHint. */
    interface IRouteHint {
        /** RouteHint hop_hints */
        hop_hints?: lnrpc.IHopHint[] | null;
    }

    /** Represents a RouteHint. */
    class RouteHint implements IRouteHint {
        /**
         * Constructs a new RouteHint.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IRouteHint);

        /** RouteHint hop_hints. */
        public hop_hints: lnrpc.IHopHint[];

        /**
         * Creates a new RouteHint instance using the specified properties.
         * @param [properties] Properties to set
         * @returns RouteHint instance
         */
        public static create(properties?: lnrpc.IRouteHint): lnrpc.RouteHint;

        /**
         * Encodes the specified RouteHint message. Does not implicitly {@link lnrpc.RouteHint.verify|verify} messages.
         * @param message RouteHint message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IRouteHint,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified RouteHint message, length delimited. Does not implicitly {@link lnrpc.RouteHint.verify|verify} messages.
         * @param message RouteHint message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IRouteHint,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a RouteHint message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns RouteHint
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.RouteHint;

        /**
         * Decodes a RouteHint message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns RouteHint
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.RouteHint;

        /**
         * Verifies a RouteHint message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a RouteHint message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns RouteHint
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.RouteHint;

        /**
         * Creates a plain object from a RouteHint message. Also converts values to other types if specified.
         * @param message RouteHint
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.RouteHint,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this RouteHint to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for RouteHint
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a BlindedPaymentPath. */
    interface IBlindedPaymentPath {
        /** BlindedPaymentPath blinded_path */
        blinded_path?: lnrpc.IBlindedPath | null;

        /** BlindedPaymentPath base_fee_msat */
        base_fee_msat?: Long | null;

        /** BlindedPaymentPath proportional_fee_rate */
        proportional_fee_rate?: number | null;

        /** BlindedPaymentPath total_cltv_delta */
        total_cltv_delta?: number | null;

        /** BlindedPaymentPath htlc_min_msat */
        htlc_min_msat?: Long | null;

        /** BlindedPaymentPath htlc_max_msat */
        htlc_max_msat?: Long | null;

        /** BlindedPaymentPath features */
        features?: lnrpc.FeatureBit[] | null;
    }

    /** Represents a BlindedPaymentPath. */
    class BlindedPaymentPath implements IBlindedPaymentPath {
        /**
         * Constructs a new BlindedPaymentPath.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IBlindedPaymentPath);

        /** BlindedPaymentPath blinded_path. */
        public blinded_path?: lnrpc.IBlindedPath | null;

        /** BlindedPaymentPath base_fee_msat. */
        public base_fee_msat: Long;

        /** BlindedPaymentPath proportional_fee_rate. */
        public proportional_fee_rate: number;

        /** BlindedPaymentPath total_cltv_delta. */
        public total_cltv_delta: number;

        /** BlindedPaymentPath htlc_min_msat. */
        public htlc_min_msat: Long;

        /** BlindedPaymentPath htlc_max_msat. */
        public htlc_max_msat: Long;

        /** BlindedPaymentPath features. */
        public features: lnrpc.FeatureBit[];

        /**
         * Creates a new BlindedPaymentPath instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BlindedPaymentPath instance
         */
        public static create(
            properties?: lnrpc.IBlindedPaymentPath
        ): lnrpc.BlindedPaymentPath;

        /**
         * Encodes the specified BlindedPaymentPath message. Does not implicitly {@link lnrpc.BlindedPaymentPath.verify|verify} messages.
         * @param message BlindedPaymentPath message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IBlindedPaymentPath,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BlindedPaymentPath message, length delimited. Does not implicitly {@link lnrpc.BlindedPaymentPath.verify|verify} messages.
         * @param message BlindedPaymentPath message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IBlindedPaymentPath,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BlindedPaymentPath message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BlindedPaymentPath
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.BlindedPaymentPath;

        /**
         * Decodes a BlindedPaymentPath message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BlindedPaymentPath
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.BlindedPaymentPath;

        /**
         * Verifies a BlindedPaymentPath message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BlindedPaymentPath message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BlindedPaymentPath
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.BlindedPaymentPath;

        /**
         * Creates a plain object from a BlindedPaymentPath message. Also converts values to other types if specified.
         * @param message BlindedPaymentPath
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.BlindedPaymentPath,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BlindedPaymentPath to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BlindedPaymentPath
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a BlindedPath. */
    interface IBlindedPath {
        /** BlindedPath introduction_node */
        introduction_node?: Uint8Array | null;

        /** BlindedPath blinding_point */
        blinding_point?: Uint8Array | null;

        /** BlindedPath blinded_hops */
        blinded_hops?: lnrpc.IBlindedHop[] | null;
    }

    /** Represents a BlindedPath. */
    class BlindedPath implements IBlindedPath {
        /**
         * Constructs a new BlindedPath.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IBlindedPath);

        /** BlindedPath introduction_node. */
        public introduction_node: Uint8Array;

        /** BlindedPath blinding_point. */
        public blinding_point: Uint8Array;

        /** BlindedPath blinded_hops. */
        public blinded_hops: lnrpc.IBlindedHop[];

        /**
         * Creates a new BlindedPath instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BlindedPath instance
         */
        public static create(
            properties?: lnrpc.IBlindedPath
        ): lnrpc.BlindedPath;

        /**
         * Encodes the specified BlindedPath message. Does not implicitly {@link lnrpc.BlindedPath.verify|verify} messages.
         * @param message BlindedPath message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IBlindedPath,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BlindedPath message, length delimited. Does not implicitly {@link lnrpc.BlindedPath.verify|verify} messages.
         * @param message BlindedPath message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IBlindedPath,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BlindedPath message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BlindedPath
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.BlindedPath;

        /**
         * Decodes a BlindedPath message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BlindedPath
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.BlindedPath;

        /**
         * Verifies a BlindedPath message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BlindedPath message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BlindedPath
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.BlindedPath;

        /**
         * Creates a plain object from a BlindedPath message. Also converts values to other types if specified.
         * @param message BlindedPath
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.BlindedPath,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BlindedPath to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BlindedPath
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a BlindedHop. */
    interface IBlindedHop {
        /** BlindedHop blinded_node */
        blinded_node?: Uint8Array | null;

        /** BlindedHop encrypted_data */
        encrypted_data?: Uint8Array | null;
    }

    /** Represents a BlindedHop. */
    class BlindedHop implements IBlindedHop {
        /**
         * Constructs a new BlindedHop.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IBlindedHop);

        /** BlindedHop blinded_node. */
        public blinded_node: Uint8Array;

        /** BlindedHop encrypted_data. */
        public encrypted_data: Uint8Array;

        /**
         * Creates a new BlindedHop instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BlindedHop instance
         */
        public static create(properties?: lnrpc.IBlindedHop): lnrpc.BlindedHop;

        /**
         * Encodes the specified BlindedHop message. Does not implicitly {@link lnrpc.BlindedHop.verify|verify} messages.
         * @param message BlindedHop message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IBlindedHop,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BlindedHop message, length delimited. Does not implicitly {@link lnrpc.BlindedHop.verify|verify} messages.
         * @param message BlindedHop message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IBlindedHop,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BlindedHop message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BlindedHop
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.BlindedHop;

        /**
         * Decodes a BlindedHop message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BlindedHop
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.BlindedHop;

        /**
         * Verifies a BlindedHop message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BlindedHop message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BlindedHop
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.BlindedHop;

        /**
         * Creates a plain object from a BlindedHop message. Also converts values to other types if specified.
         * @param message BlindedHop
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.BlindedHop,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BlindedHop to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BlindedHop
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a AMPInvoiceState. */
    interface IAMPInvoiceState {
        /** AMPInvoiceState state */
        state?: lnrpc.InvoiceHTLCState | null;

        /** AMPInvoiceState settle_index */
        settle_index?: Long | null;

        /** AMPInvoiceState settle_time */
        settle_time?: Long | null;

        /** AMPInvoiceState amt_paid_msat */
        amt_paid_msat?: Long | null;
    }

    /** Represents a AMPInvoiceState. */
    class AMPInvoiceState implements IAMPInvoiceState {
        /**
         * Constructs a new AMPInvoiceState.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IAMPInvoiceState);

        /** AMPInvoiceState state. */
        public state: lnrpc.InvoiceHTLCState;

        /** AMPInvoiceState settle_index. */
        public settle_index: Long;

        /** AMPInvoiceState settle_time. */
        public settle_time: Long;

        /** AMPInvoiceState amt_paid_msat. */
        public amt_paid_msat: Long;

        /**
         * Creates a new AMPInvoiceState instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AMPInvoiceState instance
         */
        public static create(
            properties?: lnrpc.IAMPInvoiceState
        ): lnrpc.AMPInvoiceState;

        /**
         * Encodes the specified AMPInvoiceState message. Does not implicitly {@link lnrpc.AMPInvoiceState.verify|verify} messages.
         * @param message AMPInvoiceState message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IAMPInvoiceState,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AMPInvoiceState message, length delimited. Does not implicitly {@link lnrpc.AMPInvoiceState.verify|verify} messages.
         * @param message AMPInvoiceState message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IAMPInvoiceState,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a AMPInvoiceState message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AMPInvoiceState
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.AMPInvoiceState;

        /**
         * Decodes a AMPInvoiceState message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AMPInvoiceState
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.AMPInvoiceState;

        /**
         * Verifies a AMPInvoiceState message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a AMPInvoiceState message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AMPInvoiceState
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.AMPInvoiceState;

        /**
         * Creates a plain object from a AMPInvoiceState message. Also converts values to other types if specified.
         * @param message AMPInvoiceState
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.AMPInvoiceState,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AMPInvoiceState to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AMPInvoiceState
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an Invoice. */
    interface IInvoice {
        /** Invoice memo */
        memo?: string | null;

        /** Invoice r_preimage */
        r_preimage?: Uint8Array | null;

        /** Invoice r_hash */
        r_hash?: Uint8Array | null;

        /** Invoice value */
        value?: Long | null;

        /** Invoice value_msat */
        value_msat?: Long | null;

        /** Invoice settled */
        settled?: boolean | null;

        /** Invoice creation_date */
        creation_date?: Long | null;

        /** Invoice settle_date */
        settle_date?: Long | null;

        /** Invoice payment_request */
        payment_request?: string | null;

        /** Invoice description_hash */
        description_hash?: Uint8Array | null;

        /** Invoice expiry */
        expiry?: Long | null;

        /** Invoice fallback_addr */
        fallback_addr?: string | null;

        /** Invoice cltv_expiry */
        cltv_expiry?: Long | null;

        /** Invoice route_hints */
        route_hints?: lnrpc.IRouteHint[] | null;

        /** Invoice private */
        private?: boolean | null;

        /** Invoice add_index */
        add_index?: Long | null;

        /** Invoice settle_index */
        settle_index?: Long | null;

        /** Invoice amt_paid */
        amt_paid?: Long | null;

        /** Invoice amt_paid_sat */
        amt_paid_sat?: Long | null;

        /** Invoice amt_paid_msat */
        amt_paid_msat?: Long | null;

        /** Invoice state */
        state?: lnrpc.Invoice.InvoiceState | null;

        /** Invoice htlcs */
        htlcs?: lnrpc.IInvoiceHTLC[] | null;

        /** Invoice features */
        features?: { [k: string]: lnrpc.IFeature } | null;

        /** Invoice is_keysend */
        is_keysend?: boolean | null;

        /** Invoice payment_addr */
        payment_addr?: Uint8Array | null;

        /** Invoice is_amp */
        is_amp?: boolean | null;

        /** Invoice amp_invoice_state */
        amp_invoice_state?: { [k: string]: lnrpc.IAMPInvoiceState } | null;

        /** Invoice is_blinded */
        is_blinded?: boolean | null;

        /** Invoice blinded_path_config */
        blinded_path_config?: lnrpc.IBlindedPathConfig | null;

        /** Invoice min_hop_hints */
        min_hop_hints?: number | null;
    }

    /** Represents an Invoice. */
    class Invoice implements IInvoice {
        /**
         * Constructs a new Invoice.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IInvoice);

        /** Invoice memo. */
        public memo: string;

        /** Invoice r_preimage. */
        public r_preimage: Uint8Array;

        /** Invoice r_hash. */
        public r_hash: Uint8Array;

        /** Invoice value. */
        public value: Long;

        /** Invoice value_msat. */
        public value_msat: Long;

        /** Invoice settled. */
        public settled: boolean;

        /** Invoice creation_date. */
        public creation_date: Long;

        /** Invoice settle_date. */
        public settle_date: Long;

        /** Invoice payment_request. */
        public payment_request: string;

        /** Invoice description_hash. */
        public description_hash: Uint8Array;

        /** Invoice expiry. */
        public expiry: Long;

        /** Invoice fallback_addr. */
        public fallback_addr: string;

        /** Invoice cltv_expiry. */
        public cltv_expiry: Long;

        /** Invoice route_hints. */
        public route_hints: lnrpc.IRouteHint[];

        /** Invoice private. */
        public private: boolean;

        /** Invoice add_index. */
        public add_index: Long;

        /** Invoice settle_index. */
        public settle_index: Long;

        /** Invoice amt_paid. */
        public amt_paid: Long;

        /** Invoice amt_paid_sat. */
        public amt_paid_sat: Long;

        /** Invoice amt_paid_msat. */
        public amt_paid_msat: Long;

        /** Invoice state. */
        public state: lnrpc.Invoice.InvoiceState;

        /** Invoice htlcs. */
        public htlcs: lnrpc.IInvoiceHTLC[];

        /** Invoice features. */
        public features: { [k: string]: lnrpc.IFeature };

        /** Invoice is_keysend. */
        public is_keysend: boolean;

        /** Invoice payment_addr. */
        public payment_addr: Uint8Array;

        /** Invoice is_amp. */
        public is_amp: boolean;

        /** Invoice amp_invoice_state. */
        public amp_invoice_state: { [k: string]: lnrpc.IAMPInvoiceState };

        /** Invoice is_blinded. */
        public is_blinded: boolean;

        /** Invoice blinded_path_config. */
        public blinded_path_config?: lnrpc.IBlindedPathConfig | null;

        /** Invoice min_hop_hints. */
        public min_hop_hints: number;

        /**
         * Creates a new Invoice instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Invoice instance
         */
        public static create(properties?: lnrpc.IInvoice): lnrpc.Invoice;

        /**
         * Encodes the specified Invoice message. Does not implicitly {@link lnrpc.Invoice.verify|verify} messages.
         * @param message Invoice message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IInvoice,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Invoice message, length delimited. Does not implicitly {@link lnrpc.Invoice.verify|verify} messages.
         * @param message Invoice message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IInvoice,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an Invoice message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Invoice
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.Invoice;

        /**
         * Decodes an Invoice message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Invoice
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.Invoice;

        /**
         * Verifies an Invoice message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an Invoice message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Invoice
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.Invoice;

        /**
         * Creates a plain object from an Invoice message. Also converts values to other types if specified.
         * @param message Invoice
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.Invoice,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Invoice to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Invoice
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace Invoice {
        /** InvoiceState enum. */
        enum InvoiceState {
            OPEN = 0,
            SETTLED = 1,
            CANCELED = 2,
            ACCEPTED = 3
        }
    }

    /** Properties of a BlindedPathConfig. */
    interface IBlindedPathConfig {
        /** BlindedPathConfig min_num_real_hops */
        min_num_real_hops?: number | null;

        /** BlindedPathConfig num_hops */
        num_hops?: number | null;

        /** BlindedPathConfig max_num_paths */
        max_num_paths?: number | null;

        /** BlindedPathConfig node_omission_list */
        node_omission_list?: Uint8Array[] | null;
    }

    /** Represents a BlindedPathConfig. */
    class BlindedPathConfig implements IBlindedPathConfig {
        /**
         * Constructs a new BlindedPathConfig.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IBlindedPathConfig);

        /** BlindedPathConfig min_num_real_hops. */
        public min_num_real_hops?: number | null;

        /** BlindedPathConfig num_hops. */
        public num_hops?: number | null;

        /** BlindedPathConfig max_num_paths. */
        public max_num_paths?: number | null;

        /** BlindedPathConfig node_omission_list. */
        public node_omission_list: Uint8Array[];

        /** BlindedPathConfig _min_num_real_hops. */
        public _min_num_real_hops?: 'min_num_real_hops';

        /** BlindedPathConfig _num_hops. */
        public _num_hops?: 'num_hops';

        /** BlindedPathConfig _max_num_paths. */
        public _max_num_paths?: 'max_num_paths';

        /**
         * Creates a new BlindedPathConfig instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BlindedPathConfig instance
         */
        public static create(
            properties?: lnrpc.IBlindedPathConfig
        ): lnrpc.BlindedPathConfig;

        /**
         * Encodes the specified BlindedPathConfig message. Does not implicitly {@link lnrpc.BlindedPathConfig.verify|verify} messages.
         * @param message BlindedPathConfig message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IBlindedPathConfig,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BlindedPathConfig message, length delimited. Does not implicitly {@link lnrpc.BlindedPathConfig.verify|verify} messages.
         * @param message BlindedPathConfig message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IBlindedPathConfig,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BlindedPathConfig message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BlindedPathConfig
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.BlindedPathConfig;

        /**
         * Decodes a BlindedPathConfig message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BlindedPathConfig
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.BlindedPathConfig;

        /**
         * Verifies a BlindedPathConfig message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BlindedPathConfig message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BlindedPathConfig
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.BlindedPathConfig;

        /**
         * Creates a plain object from a BlindedPathConfig message. Also converts values to other types if specified.
         * @param message BlindedPathConfig
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.BlindedPathConfig,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BlindedPathConfig to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BlindedPathConfig
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** InvoiceHTLCState enum. */
    enum InvoiceHTLCState {
        ACCEPTED = 0,
        SETTLED = 1,
        CANCELED = 2
    }

    /** Properties of an InvoiceHTLC. */
    interface IInvoiceHTLC {
        /** InvoiceHTLC chan_id */
        chan_id?: Long | null;

        /** InvoiceHTLC htlc_index */
        htlc_index?: Long | null;

        /** InvoiceHTLC amt_msat */
        amt_msat?: Long | null;

        /** InvoiceHTLC accept_height */
        accept_height?: number | null;

        /** InvoiceHTLC accept_time */
        accept_time?: Long | null;

        /** InvoiceHTLC resolve_time */
        resolve_time?: Long | null;

        /** InvoiceHTLC expiry_height */
        expiry_height?: number | null;

        /** InvoiceHTLC state */
        state?: lnrpc.InvoiceHTLCState | null;

        /** InvoiceHTLC custom_records */
        custom_records?: { [k: string]: Uint8Array } | null;

        /** InvoiceHTLC mpp_total_amt_msat */
        mpp_total_amt_msat?: Long | null;

        /** InvoiceHTLC amp */
        amp?: lnrpc.IAMP | null;

        /** InvoiceHTLC custom_channel_data */
        custom_channel_data?: Uint8Array | null;
    }

    /** Represents an InvoiceHTLC. */
    class InvoiceHTLC implements IInvoiceHTLC {
        /**
         * Constructs a new InvoiceHTLC.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IInvoiceHTLC);

        /** InvoiceHTLC chan_id. */
        public chan_id: Long;

        /** InvoiceHTLC htlc_index. */
        public htlc_index: Long;

        /** InvoiceHTLC amt_msat. */
        public amt_msat: Long;

        /** InvoiceHTLC accept_height. */
        public accept_height: number;

        /** InvoiceHTLC accept_time. */
        public accept_time: Long;

        /** InvoiceHTLC resolve_time. */
        public resolve_time: Long;

        /** InvoiceHTLC expiry_height. */
        public expiry_height: number;

        /** InvoiceHTLC state. */
        public state: lnrpc.InvoiceHTLCState;

        /** InvoiceHTLC custom_records. */
        public custom_records: { [k: string]: Uint8Array };

        /** InvoiceHTLC mpp_total_amt_msat. */
        public mpp_total_amt_msat: Long;

        /** InvoiceHTLC amp. */
        public amp?: lnrpc.IAMP | null;

        /** InvoiceHTLC custom_channel_data. */
        public custom_channel_data: Uint8Array;

        /**
         * Creates a new InvoiceHTLC instance using the specified properties.
         * @param [properties] Properties to set
         * @returns InvoiceHTLC instance
         */
        public static create(
            properties?: lnrpc.IInvoiceHTLC
        ): lnrpc.InvoiceHTLC;

        /**
         * Encodes the specified InvoiceHTLC message. Does not implicitly {@link lnrpc.InvoiceHTLC.verify|verify} messages.
         * @param message InvoiceHTLC message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IInvoiceHTLC,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified InvoiceHTLC message, length delimited. Does not implicitly {@link lnrpc.InvoiceHTLC.verify|verify} messages.
         * @param message InvoiceHTLC message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IInvoiceHTLC,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an InvoiceHTLC message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns InvoiceHTLC
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.InvoiceHTLC;

        /**
         * Decodes an InvoiceHTLC message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns InvoiceHTLC
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.InvoiceHTLC;

        /**
         * Verifies an InvoiceHTLC message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an InvoiceHTLC message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns InvoiceHTLC
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.InvoiceHTLC;

        /**
         * Creates a plain object from an InvoiceHTLC message. Also converts values to other types if specified.
         * @param message InvoiceHTLC
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.InvoiceHTLC,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this InvoiceHTLC to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for InvoiceHTLC
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a AMP. */
    interface IAMP {
        /** AMP root_share */
        root_share?: Uint8Array | null;

        /** AMP set_id */
        set_id?: Uint8Array | null;

        /** AMP child_index */
        child_index?: number | null;

        /** AMP hash */
        hash?: Uint8Array | null;

        /** AMP preimage */
        preimage?: Uint8Array | null;
    }

    /** Represents a AMP. */
    class AMP implements IAMP {
        /**
         * Constructs a new AMP.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IAMP);

        /** AMP root_share. */
        public root_share: Uint8Array;

        /** AMP set_id. */
        public set_id: Uint8Array;

        /** AMP child_index. */
        public child_index: number;

        /** AMP hash. */
        public hash: Uint8Array;

        /** AMP preimage. */
        public preimage: Uint8Array;

        /**
         * Creates a new AMP instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AMP instance
         */
        public static create(properties?: lnrpc.IAMP): lnrpc.AMP;

        /**
         * Encodes the specified AMP message. Does not implicitly {@link lnrpc.AMP.verify|verify} messages.
         * @param message AMP message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IAMP,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AMP message, length delimited. Does not implicitly {@link lnrpc.AMP.verify|verify} messages.
         * @param message AMP message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IAMP,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a AMP message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AMP
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.AMP;

        /**
         * Decodes a AMP message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AMP
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.AMP;

        /**
         * Verifies a AMP message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a AMP message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AMP
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.AMP;

        /**
         * Creates a plain object from a AMP message. Also converts values to other types if specified.
         * @param message AMP
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.AMP,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AMP to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AMP
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AddInvoiceResponse. */
    interface IAddInvoiceResponse {
        /** AddInvoiceResponse r_hash */
        r_hash?: Uint8Array | null;

        /** AddInvoiceResponse payment_request */
        payment_request?: string | null;

        /** AddInvoiceResponse add_index */
        add_index?: Long | null;

        /** AddInvoiceResponse payment_addr */
        payment_addr?: Uint8Array | null;
    }

    /** Represents an AddInvoiceResponse. */
    class AddInvoiceResponse implements IAddInvoiceResponse {
        /**
         * Constructs a new AddInvoiceResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IAddInvoiceResponse);

        /** AddInvoiceResponse r_hash. */
        public r_hash: Uint8Array;

        /** AddInvoiceResponse payment_request. */
        public payment_request: string;

        /** AddInvoiceResponse add_index. */
        public add_index: Long;

        /** AddInvoiceResponse payment_addr. */
        public payment_addr: Uint8Array;

        /**
         * Creates a new AddInvoiceResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AddInvoiceResponse instance
         */
        public static create(
            properties?: lnrpc.IAddInvoiceResponse
        ): lnrpc.AddInvoiceResponse;

        /**
         * Encodes the specified AddInvoiceResponse message. Does not implicitly {@link lnrpc.AddInvoiceResponse.verify|verify} messages.
         * @param message AddInvoiceResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IAddInvoiceResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AddInvoiceResponse message, length delimited. Does not implicitly {@link lnrpc.AddInvoiceResponse.verify|verify} messages.
         * @param message AddInvoiceResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IAddInvoiceResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AddInvoiceResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AddInvoiceResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.AddInvoiceResponse;

        /**
         * Decodes an AddInvoiceResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AddInvoiceResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.AddInvoiceResponse;

        /**
         * Verifies an AddInvoiceResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AddInvoiceResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AddInvoiceResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.AddInvoiceResponse;

        /**
         * Creates a plain object from an AddInvoiceResponse message. Also converts values to other types if specified.
         * @param message AddInvoiceResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.AddInvoiceResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AddInvoiceResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AddInvoiceResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PaymentHash. */
    interface IPaymentHash {
        /** PaymentHash r_hash_str */
        r_hash_str?: string | null;

        /** PaymentHash r_hash */
        r_hash?: Uint8Array | null;
    }

    /** Represents a PaymentHash. */
    class PaymentHash implements IPaymentHash {
        /**
         * Constructs a new PaymentHash.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IPaymentHash);

        /** PaymentHash r_hash_str. */
        public r_hash_str: string;

        /** PaymentHash r_hash. */
        public r_hash: Uint8Array;

        /**
         * Creates a new PaymentHash instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PaymentHash instance
         */
        public static create(
            properties?: lnrpc.IPaymentHash
        ): lnrpc.PaymentHash;

        /**
         * Encodes the specified PaymentHash message. Does not implicitly {@link lnrpc.PaymentHash.verify|verify} messages.
         * @param message PaymentHash message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IPaymentHash,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PaymentHash message, length delimited. Does not implicitly {@link lnrpc.PaymentHash.verify|verify} messages.
         * @param message PaymentHash message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IPaymentHash,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PaymentHash message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PaymentHash
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.PaymentHash;

        /**
         * Decodes a PaymentHash message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PaymentHash
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.PaymentHash;

        /**
         * Verifies a PaymentHash message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PaymentHash message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PaymentHash
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.PaymentHash;

        /**
         * Creates a plain object from a PaymentHash message. Also converts values to other types if specified.
         * @param message PaymentHash
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.PaymentHash,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PaymentHash to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PaymentHash
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListInvoiceRequest. */
    interface IListInvoiceRequest {
        /** ListInvoiceRequest pending_only */
        pending_only?: boolean | null;

        /** ListInvoiceRequest index_offset */
        index_offset?: Long | null;

        /** ListInvoiceRequest num_max_invoices */
        num_max_invoices?: Long | null;

        /** ListInvoiceRequest reversed */
        reversed?: boolean | null;

        /** ListInvoiceRequest creation_date_start */
        creation_date_start?: Long | null;

        /** ListInvoiceRequest creation_date_end */
        creation_date_end?: Long | null;
    }

    /** Represents a ListInvoiceRequest. */
    class ListInvoiceRequest implements IListInvoiceRequest {
        /**
         * Constructs a new ListInvoiceRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IListInvoiceRequest);

        /** ListInvoiceRequest pending_only. */
        public pending_only: boolean;

        /** ListInvoiceRequest index_offset. */
        public index_offset: Long;

        /** ListInvoiceRequest num_max_invoices. */
        public num_max_invoices: Long;

        /** ListInvoiceRequest reversed. */
        public reversed: boolean;

        /** ListInvoiceRequest creation_date_start. */
        public creation_date_start: Long;

        /** ListInvoiceRequest creation_date_end. */
        public creation_date_end: Long;

        /**
         * Creates a new ListInvoiceRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListInvoiceRequest instance
         */
        public static create(
            properties?: lnrpc.IListInvoiceRequest
        ): lnrpc.ListInvoiceRequest;

        /**
         * Encodes the specified ListInvoiceRequest message. Does not implicitly {@link lnrpc.ListInvoiceRequest.verify|verify} messages.
         * @param message ListInvoiceRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IListInvoiceRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListInvoiceRequest message, length delimited. Does not implicitly {@link lnrpc.ListInvoiceRequest.verify|verify} messages.
         * @param message ListInvoiceRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IListInvoiceRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListInvoiceRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListInvoiceRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ListInvoiceRequest;

        /**
         * Decodes a ListInvoiceRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListInvoiceRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ListInvoiceRequest;

        /**
         * Verifies a ListInvoiceRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListInvoiceRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListInvoiceRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ListInvoiceRequest;

        /**
         * Creates a plain object from a ListInvoiceRequest message. Also converts values to other types if specified.
         * @param message ListInvoiceRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ListInvoiceRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListInvoiceRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListInvoiceRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListInvoiceResponse. */
    interface IListInvoiceResponse {
        /** ListInvoiceResponse invoices */
        invoices?: lnrpc.IInvoice[] | null;

        /** ListInvoiceResponse last_index_offset */
        last_index_offset?: Long | null;

        /** ListInvoiceResponse first_index_offset */
        first_index_offset?: Long | null;
    }

    /** Represents a ListInvoiceResponse. */
    class ListInvoiceResponse implements IListInvoiceResponse {
        /**
         * Constructs a new ListInvoiceResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IListInvoiceResponse);

        /** ListInvoiceResponse invoices. */
        public invoices: lnrpc.IInvoice[];

        /** ListInvoiceResponse last_index_offset. */
        public last_index_offset: Long;

        /** ListInvoiceResponse first_index_offset. */
        public first_index_offset: Long;

        /**
         * Creates a new ListInvoiceResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListInvoiceResponse instance
         */
        public static create(
            properties?: lnrpc.IListInvoiceResponse
        ): lnrpc.ListInvoiceResponse;

        /**
         * Encodes the specified ListInvoiceResponse message. Does not implicitly {@link lnrpc.ListInvoiceResponse.verify|verify} messages.
         * @param message ListInvoiceResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IListInvoiceResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListInvoiceResponse message, length delimited. Does not implicitly {@link lnrpc.ListInvoiceResponse.verify|verify} messages.
         * @param message ListInvoiceResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IListInvoiceResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListInvoiceResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListInvoiceResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ListInvoiceResponse;

        /**
         * Decodes a ListInvoiceResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListInvoiceResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ListInvoiceResponse;

        /**
         * Verifies a ListInvoiceResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListInvoiceResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListInvoiceResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ListInvoiceResponse;

        /**
         * Creates a plain object from a ListInvoiceResponse message. Also converts values to other types if specified.
         * @param message ListInvoiceResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ListInvoiceResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListInvoiceResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListInvoiceResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an InvoiceSubscription. */
    interface IInvoiceSubscription {
        /** InvoiceSubscription add_index */
        add_index?: Long | null;

        /** InvoiceSubscription settle_index */
        settle_index?: Long | null;
    }

    /** Represents an InvoiceSubscription. */
    class InvoiceSubscription implements IInvoiceSubscription {
        /**
         * Constructs a new InvoiceSubscription.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IInvoiceSubscription);

        /** InvoiceSubscription add_index. */
        public add_index: Long;

        /** InvoiceSubscription settle_index. */
        public settle_index: Long;

        /**
         * Creates a new InvoiceSubscription instance using the specified properties.
         * @param [properties] Properties to set
         * @returns InvoiceSubscription instance
         */
        public static create(
            properties?: lnrpc.IInvoiceSubscription
        ): lnrpc.InvoiceSubscription;

        /**
         * Encodes the specified InvoiceSubscription message. Does not implicitly {@link lnrpc.InvoiceSubscription.verify|verify} messages.
         * @param message InvoiceSubscription message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IInvoiceSubscription,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified InvoiceSubscription message, length delimited. Does not implicitly {@link lnrpc.InvoiceSubscription.verify|verify} messages.
         * @param message InvoiceSubscription message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IInvoiceSubscription,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an InvoiceSubscription message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns InvoiceSubscription
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.InvoiceSubscription;

        /**
         * Decodes an InvoiceSubscription message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns InvoiceSubscription
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.InvoiceSubscription;

        /**
         * Verifies an InvoiceSubscription message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an InvoiceSubscription message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns InvoiceSubscription
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.InvoiceSubscription;

        /**
         * Creates a plain object from an InvoiceSubscription message. Also converts values to other types if specified.
         * @param message InvoiceSubscription
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.InvoiceSubscription,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this InvoiceSubscription to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for InvoiceSubscription
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** PaymentFailureReason enum. */
    enum PaymentFailureReason {
        FAILURE_REASON_NONE = 0,
        FAILURE_REASON_TIMEOUT = 1,
        FAILURE_REASON_NO_ROUTE = 2,
        FAILURE_REASON_ERROR = 3,
        FAILURE_REASON_INCORRECT_PAYMENT_DETAILS = 4,
        FAILURE_REASON_INSUFFICIENT_BALANCE = 5,
        FAILURE_REASON_CANCELED = 6
    }

    /** Properties of a Payment. */
    interface IPayment {
        /** Payment payment_hash */
        payment_hash?: string | null;

        /** Payment value */
        value?: Long | null;

        /** Payment creation_date */
        creation_date?: Long | null;

        /** Payment fee */
        fee?: Long | null;

        /** Payment payment_preimage */
        payment_preimage?: string | null;

        /** Payment value_sat */
        value_sat?: Long | null;

        /** Payment value_msat */
        value_msat?: Long | null;

        /** Payment payment_request */
        payment_request?: string | null;

        /** Payment status */
        status?: lnrpc.Payment.PaymentStatus | null;

        /** Payment fee_sat */
        fee_sat?: Long | null;

        /** Payment fee_msat */
        fee_msat?: Long | null;

        /** Payment creation_time_ns */
        creation_time_ns?: Long | null;

        /** Payment htlcs */
        htlcs?: lnrpc.IHTLCAttempt[] | null;

        /** Payment payment_index */
        payment_index?: Long | null;

        /** Payment failure_reason */
        failure_reason?: lnrpc.PaymentFailureReason | null;

        /** Payment first_hop_custom_records */
        first_hop_custom_records?: { [k: string]: Uint8Array } | null;
    }

    /** Represents a Payment. */
    class Payment implements IPayment {
        /**
         * Constructs a new Payment.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IPayment);

        /** Payment payment_hash. */
        public payment_hash: string;

        /** Payment value. */
        public value: Long;

        /** Payment creation_date. */
        public creation_date: Long;

        /** Payment fee. */
        public fee: Long;

        /** Payment payment_preimage. */
        public payment_preimage: string;

        /** Payment value_sat. */
        public value_sat: Long;

        /** Payment value_msat. */
        public value_msat: Long;

        /** Payment payment_request. */
        public payment_request: string;

        /** Payment status. */
        public status: lnrpc.Payment.PaymentStatus;

        /** Payment fee_sat. */
        public fee_sat: Long;

        /** Payment fee_msat. */
        public fee_msat: Long;

        /** Payment creation_time_ns. */
        public creation_time_ns: Long;

        /** Payment htlcs. */
        public htlcs: lnrpc.IHTLCAttempt[];

        /** Payment payment_index. */
        public payment_index: Long;

        /** Payment failure_reason. */
        public failure_reason: lnrpc.PaymentFailureReason;

        /** Payment first_hop_custom_records. */
        public first_hop_custom_records: { [k: string]: Uint8Array };

        /**
         * Creates a new Payment instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Payment instance
         */
        public static create(properties?: lnrpc.IPayment): lnrpc.Payment;

        /**
         * Encodes the specified Payment message. Does not implicitly {@link lnrpc.Payment.verify|verify} messages.
         * @param message Payment message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IPayment,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Payment message, length delimited. Does not implicitly {@link lnrpc.Payment.verify|verify} messages.
         * @param message Payment message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IPayment,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a Payment message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Payment
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.Payment;

        /**
         * Decodes a Payment message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Payment
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.Payment;

        /**
         * Verifies a Payment message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a Payment message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Payment
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.Payment;

        /**
         * Creates a plain object from a Payment message. Also converts values to other types if specified.
         * @param message Payment
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.Payment,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Payment to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Payment
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace Payment {
        /** PaymentStatus enum. */
        enum PaymentStatus {
            UNKNOWN = 0,
            IN_FLIGHT = 1,
            SUCCEEDED = 2,
            FAILED = 3,
            INITIATED = 4
        }
    }

    /** Properties of a HTLCAttempt. */
    interface IHTLCAttempt {
        /** HTLCAttempt attempt_id */
        attempt_id?: Long | null;

        /** HTLCAttempt status */
        status?: lnrpc.HTLCAttempt.HTLCStatus | null;

        /** HTLCAttempt route */
        route?: lnrpc.IRoute | null;

        /** HTLCAttempt attempt_time_ns */
        attempt_time_ns?: Long | null;

        /** HTLCAttempt resolve_time_ns */
        resolve_time_ns?: Long | null;

        /** HTLCAttempt failure */
        failure?: lnrpc.IFailure | null;

        /** HTLCAttempt preimage */
        preimage?: Uint8Array | null;
    }

    /** Represents a HTLCAttempt. */
    class HTLCAttempt implements IHTLCAttempt {
        /**
         * Constructs a new HTLCAttempt.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IHTLCAttempt);

        /** HTLCAttempt attempt_id. */
        public attempt_id: Long;

        /** HTLCAttempt status. */
        public status: lnrpc.HTLCAttempt.HTLCStatus;

        /** HTLCAttempt route. */
        public route?: lnrpc.IRoute | null;

        /** HTLCAttempt attempt_time_ns. */
        public attempt_time_ns: Long;

        /** HTLCAttempt resolve_time_ns. */
        public resolve_time_ns: Long;

        /** HTLCAttempt failure. */
        public failure?: lnrpc.IFailure | null;

        /** HTLCAttempt preimage. */
        public preimage: Uint8Array;

        /**
         * Creates a new HTLCAttempt instance using the specified properties.
         * @param [properties] Properties to set
         * @returns HTLCAttempt instance
         */
        public static create(
            properties?: lnrpc.IHTLCAttempt
        ): lnrpc.HTLCAttempt;

        /**
         * Encodes the specified HTLCAttempt message. Does not implicitly {@link lnrpc.HTLCAttempt.verify|verify} messages.
         * @param message HTLCAttempt message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IHTLCAttempt,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified HTLCAttempt message, length delimited. Does not implicitly {@link lnrpc.HTLCAttempt.verify|verify} messages.
         * @param message HTLCAttempt message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IHTLCAttempt,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a HTLCAttempt message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns HTLCAttempt
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.HTLCAttempt;

        /**
         * Decodes a HTLCAttempt message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns HTLCAttempt
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.HTLCAttempt;

        /**
         * Verifies a HTLCAttempt message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a HTLCAttempt message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns HTLCAttempt
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.HTLCAttempt;

        /**
         * Creates a plain object from a HTLCAttempt message. Also converts values to other types if specified.
         * @param message HTLCAttempt
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.HTLCAttempt,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this HTLCAttempt to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for HTLCAttempt
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace HTLCAttempt {
        /** HTLCStatus enum. */
        enum HTLCStatus {
            IN_FLIGHT = 0,
            SUCCEEDED = 1,
            FAILED = 2
        }
    }

    /** Properties of a ListPaymentsRequest. */
    interface IListPaymentsRequest {
        /** ListPaymentsRequest include_incomplete */
        include_incomplete?: boolean | null;

        /** ListPaymentsRequest index_offset */
        index_offset?: Long | null;

        /** ListPaymentsRequest max_payments */
        max_payments?: Long | null;

        /** ListPaymentsRequest reversed */
        reversed?: boolean | null;

        /** ListPaymentsRequest count_total_payments */
        count_total_payments?: boolean | null;

        /** ListPaymentsRequest creation_date_start */
        creation_date_start?: Long | null;

        /** ListPaymentsRequest creation_date_end */
        creation_date_end?: Long | null;
    }

    /** Represents a ListPaymentsRequest. */
    class ListPaymentsRequest implements IListPaymentsRequest {
        /**
         * Constructs a new ListPaymentsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IListPaymentsRequest);

        /** ListPaymentsRequest include_incomplete. */
        public include_incomplete: boolean;

        /** ListPaymentsRequest index_offset. */
        public index_offset: Long;

        /** ListPaymentsRequest max_payments. */
        public max_payments: Long;

        /** ListPaymentsRequest reversed. */
        public reversed: boolean;

        /** ListPaymentsRequest count_total_payments. */
        public count_total_payments: boolean;

        /** ListPaymentsRequest creation_date_start. */
        public creation_date_start: Long;

        /** ListPaymentsRequest creation_date_end. */
        public creation_date_end: Long;

        /**
         * Creates a new ListPaymentsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListPaymentsRequest instance
         */
        public static create(
            properties?: lnrpc.IListPaymentsRequest
        ): lnrpc.ListPaymentsRequest;

        /**
         * Encodes the specified ListPaymentsRequest message. Does not implicitly {@link lnrpc.ListPaymentsRequest.verify|verify} messages.
         * @param message ListPaymentsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IListPaymentsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListPaymentsRequest message, length delimited. Does not implicitly {@link lnrpc.ListPaymentsRequest.verify|verify} messages.
         * @param message ListPaymentsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IListPaymentsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListPaymentsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListPaymentsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ListPaymentsRequest;

        /**
         * Decodes a ListPaymentsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListPaymentsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ListPaymentsRequest;

        /**
         * Verifies a ListPaymentsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListPaymentsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListPaymentsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ListPaymentsRequest;

        /**
         * Creates a plain object from a ListPaymentsRequest message. Also converts values to other types if specified.
         * @param message ListPaymentsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ListPaymentsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListPaymentsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListPaymentsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListPaymentsResponse. */
    interface IListPaymentsResponse {
        /** ListPaymentsResponse payments */
        payments?: lnrpc.IPayment[] | null;

        /** ListPaymentsResponse first_index_offset */
        first_index_offset?: Long | null;

        /** ListPaymentsResponse last_index_offset */
        last_index_offset?: Long | null;

        /** ListPaymentsResponse total_num_payments */
        total_num_payments?: Long | null;
    }

    /** Represents a ListPaymentsResponse. */
    class ListPaymentsResponse implements IListPaymentsResponse {
        /**
         * Constructs a new ListPaymentsResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IListPaymentsResponse);

        /** ListPaymentsResponse payments. */
        public payments: lnrpc.IPayment[];

        /** ListPaymentsResponse first_index_offset. */
        public first_index_offset: Long;

        /** ListPaymentsResponse last_index_offset. */
        public last_index_offset: Long;

        /** ListPaymentsResponse total_num_payments. */
        public total_num_payments: Long;

        /**
         * Creates a new ListPaymentsResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListPaymentsResponse instance
         */
        public static create(
            properties?: lnrpc.IListPaymentsResponse
        ): lnrpc.ListPaymentsResponse;

        /**
         * Encodes the specified ListPaymentsResponse message. Does not implicitly {@link lnrpc.ListPaymentsResponse.verify|verify} messages.
         * @param message ListPaymentsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IListPaymentsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListPaymentsResponse message, length delimited. Does not implicitly {@link lnrpc.ListPaymentsResponse.verify|verify} messages.
         * @param message ListPaymentsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IListPaymentsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListPaymentsResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListPaymentsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ListPaymentsResponse;

        /**
         * Decodes a ListPaymentsResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListPaymentsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ListPaymentsResponse;

        /**
         * Verifies a ListPaymentsResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListPaymentsResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListPaymentsResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ListPaymentsResponse;

        /**
         * Creates a plain object from a ListPaymentsResponse message. Also converts values to other types if specified.
         * @param message ListPaymentsResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ListPaymentsResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListPaymentsResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListPaymentsResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a DeletePaymentRequest. */
    interface IDeletePaymentRequest {
        /** DeletePaymentRequest payment_hash */
        payment_hash?: Uint8Array | null;

        /** DeletePaymentRequest failed_htlcs_only */
        failed_htlcs_only?: boolean | null;
    }

    /** Represents a DeletePaymentRequest. */
    class DeletePaymentRequest implements IDeletePaymentRequest {
        /**
         * Constructs a new DeletePaymentRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IDeletePaymentRequest);

        /** DeletePaymentRequest payment_hash. */
        public payment_hash: Uint8Array;

        /** DeletePaymentRequest failed_htlcs_only. */
        public failed_htlcs_only: boolean;

        /**
         * Creates a new DeletePaymentRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DeletePaymentRequest instance
         */
        public static create(
            properties?: lnrpc.IDeletePaymentRequest
        ): lnrpc.DeletePaymentRequest;

        /**
         * Encodes the specified DeletePaymentRequest message. Does not implicitly {@link lnrpc.DeletePaymentRequest.verify|verify} messages.
         * @param message DeletePaymentRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IDeletePaymentRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified DeletePaymentRequest message, length delimited. Does not implicitly {@link lnrpc.DeletePaymentRequest.verify|verify} messages.
         * @param message DeletePaymentRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IDeletePaymentRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a DeletePaymentRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DeletePaymentRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.DeletePaymentRequest;

        /**
         * Decodes a DeletePaymentRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DeletePaymentRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.DeletePaymentRequest;

        /**
         * Verifies a DeletePaymentRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a DeletePaymentRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DeletePaymentRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.DeletePaymentRequest;

        /**
         * Creates a plain object from a DeletePaymentRequest message. Also converts values to other types if specified.
         * @param message DeletePaymentRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.DeletePaymentRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this DeletePaymentRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DeletePaymentRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a DeleteAllPaymentsRequest. */
    interface IDeleteAllPaymentsRequest {
        /** DeleteAllPaymentsRequest failed_payments_only */
        failed_payments_only?: boolean | null;

        /** DeleteAllPaymentsRequest failed_htlcs_only */
        failed_htlcs_only?: boolean | null;

        /** DeleteAllPaymentsRequest all_payments */
        all_payments?: boolean | null;
    }

    /** Represents a DeleteAllPaymentsRequest. */
    class DeleteAllPaymentsRequest implements IDeleteAllPaymentsRequest {
        /**
         * Constructs a new DeleteAllPaymentsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IDeleteAllPaymentsRequest);

        /** DeleteAllPaymentsRequest failed_payments_only. */
        public failed_payments_only: boolean;

        /** DeleteAllPaymentsRequest failed_htlcs_only. */
        public failed_htlcs_only: boolean;

        /** DeleteAllPaymentsRequest all_payments. */
        public all_payments: boolean;

        /**
         * Creates a new DeleteAllPaymentsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DeleteAllPaymentsRequest instance
         */
        public static create(
            properties?: lnrpc.IDeleteAllPaymentsRequest
        ): lnrpc.DeleteAllPaymentsRequest;

        /**
         * Encodes the specified DeleteAllPaymentsRequest message. Does not implicitly {@link lnrpc.DeleteAllPaymentsRequest.verify|verify} messages.
         * @param message DeleteAllPaymentsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IDeleteAllPaymentsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified DeleteAllPaymentsRequest message, length delimited. Does not implicitly {@link lnrpc.DeleteAllPaymentsRequest.verify|verify} messages.
         * @param message DeleteAllPaymentsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IDeleteAllPaymentsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a DeleteAllPaymentsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DeleteAllPaymentsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.DeleteAllPaymentsRequest;

        /**
         * Decodes a DeleteAllPaymentsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DeleteAllPaymentsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.DeleteAllPaymentsRequest;

        /**
         * Verifies a DeleteAllPaymentsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a DeleteAllPaymentsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DeleteAllPaymentsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.DeleteAllPaymentsRequest;

        /**
         * Creates a plain object from a DeleteAllPaymentsRequest message. Also converts values to other types if specified.
         * @param message DeleteAllPaymentsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.DeleteAllPaymentsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this DeleteAllPaymentsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DeleteAllPaymentsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a DeletePaymentResponse. */
    interface IDeletePaymentResponse {}

    /** Represents a DeletePaymentResponse. */
    class DeletePaymentResponse implements IDeletePaymentResponse {
        /**
         * Constructs a new DeletePaymentResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IDeletePaymentResponse);

        /**
         * Creates a new DeletePaymentResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DeletePaymentResponse instance
         */
        public static create(
            properties?: lnrpc.IDeletePaymentResponse
        ): lnrpc.DeletePaymentResponse;

        /**
         * Encodes the specified DeletePaymentResponse message. Does not implicitly {@link lnrpc.DeletePaymentResponse.verify|verify} messages.
         * @param message DeletePaymentResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IDeletePaymentResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified DeletePaymentResponse message, length delimited. Does not implicitly {@link lnrpc.DeletePaymentResponse.verify|verify} messages.
         * @param message DeletePaymentResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IDeletePaymentResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a DeletePaymentResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DeletePaymentResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.DeletePaymentResponse;

        /**
         * Decodes a DeletePaymentResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DeletePaymentResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.DeletePaymentResponse;

        /**
         * Verifies a DeletePaymentResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a DeletePaymentResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DeletePaymentResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.DeletePaymentResponse;

        /**
         * Creates a plain object from a DeletePaymentResponse message. Also converts values to other types if specified.
         * @param message DeletePaymentResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.DeletePaymentResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this DeletePaymentResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DeletePaymentResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a DeleteAllPaymentsResponse. */
    interface IDeleteAllPaymentsResponse {}

    /** Represents a DeleteAllPaymentsResponse. */
    class DeleteAllPaymentsResponse implements IDeleteAllPaymentsResponse {
        /**
         * Constructs a new DeleteAllPaymentsResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IDeleteAllPaymentsResponse);

        /**
         * Creates a new DeleteAllPaymentsResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DeleteAllPaymentsResponse instance
         */
        public static create(
            properties?: lnrpc.IDeleteAllPaymentsResponse
        ): lnrpc.DeleteAllPaymentsResponse;

        /**
         * Encodes the specified DeleteAllPaymentsResponse message. Does not implicitly {@link lnrpc.DeleteAllPaymentsResponse.verify|verify} messages.
         * @param message DeleteAllPaymentsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IDeleteAllPaymentsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified DeleteAllPaymentsResponse message, length delimited. Does not implicitly {@link lnrpc.DeleteAllPaymentsResponse.verify|verify} messages.
         * @param message DeleteAllPaymentsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IDeleteAllPaymentsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a DeleteAllPaymentsResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DeleteAllPaymentsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.DeleteAllPaymentsResponse;

        /**
         * Decodes a DeleteAllPaymentsResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DeleteAllPaymentsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.DeleteAllPaymentsResponse;

        /**
         * Verifies a DeleteAllPaymentsResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a DeleteAllPaymentsResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DeleteAllPaymentsResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.DeleteAllPaymentsResponse;

        /**
         * Creates a plain object from a DeleteAllPaymentsResponse message. Also converts values to other types if specified.
         * @param message DeleteAllPaymentsResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.DeleteAllPaymentsResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this DeleteAllPaymentsResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DeleteAllPaymentsResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AbandonChannelRequest. */
    interface IAbandonChannelRequest {
        /** AbandonChannelRequest channel_point */
        channel_point?: lnrpc.IChannelPoint | null;

        /** AbandonChannelRequest pending_funding_shim_only */
        pending_funding_shim_only?: boolean | null;

        /** AbandonChannelRequest i_know_what_i_am_doing */
        i_know_what_i_am_doing?: boolean | null;
    }

    /** Represents an AbandonChannelRequest. */
    class AbandonChannelRequest implements IAbandonChannelRequest {
        /**
         * Constructs a new AbandonChannelRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IAbandonChannelRequest);

        /** AbandonChannelRequest channel_point. */
        public channel_point?: lnrpc.IChannelPoint | null;

        /** AbandonChannelRequest pending_funding_shim_only. */
        public pending_funding_shim_only: boolean;

        /** AbandonChannelRequest i_know_what_i_am_doing. */
        public i_know_what_i_am_doing: boolean;

        /**
         * Creates a new AbandonChannelRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AbandonChannelRequest instance
         */
        public static create(
            properties?: lnrpc.IAbandonChannelRequest
        ): lnrpc.AbandonChannelRequest;

        /**
         * Encodes the specified AbandonChannelRequest message. Does not implicitly {@link lnrpc.AbandonChannelRequest.verify|verify} messages.
         * @param message AbandonChannelRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IAbandonChannelRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AbandonChannelRequest message, length delimited. Does not implicitly {@link lnrpc.AbandonChannelRequest.verify|verify} messages.
         * @param message AbandonChannelRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IAbandonChannelRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AbandonChannelRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AbandonChannelRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.AbandonChannelRequest;

        /**
         * Decodes an AbandonChannelRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AbandonChannelRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.AbandonChannelRequest;

        /**
         * Verifies an AbandonChannelRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AbandonChannelRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AbandonChannelRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.AbandonChannelRequest;

        /**
         * Creates a plain object from an AbandonChannelRequest message. Also converts values to other types if specified.
         * @param message AbandonChannelRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.AbandonChannelRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AbandonChannelRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AbandonChannelRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AbandonChannelResponse. */
    interface IAbandonChannelResponse {}

    /** Represents an AbandonChannelResponse. */
    class AbandonChannelResponse implements IAbandonChannelResponse {
        /**
         * Constructs a new AbandonChannelResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IAbandonChannelResponse);

        /**
         * Creates a new AbandonChannelResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AbandonChannelResponse instance
         */
        public static create(
            properties?: lnrpc.IAbandonChannelResponse
        ): lnrpc.AbandonChannelResponse;

        /**
         * Encodes the specified AbandonChannelResponse message. Does not implicitly {@link lnrpc.AbandonChannelResponse.verify|verify} messages.
         * @param message AbandonChannelResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IAbandonChannelResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AbandonChannelResponse message, length delimited. Does not implicitly {@link lnrpc.AbandonChannelResponse.verify|verify} messages.
         * @param message AbandonChannelResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IAbandonChannelResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AbandonChannelResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AbandonChannelResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.AbandonChannelResponse;

        /**
         * Decodes an AbandonChannelResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AbandonChannelResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.AbandonChannelResponse;

        /**
         * Verifies an AbandonChannelResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AbandonChannelResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AbandonChannelResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.AbandonChannelResponse;

        /**
         * Creates a plain object from an AbandonChannelResponse message. Also converts values to other types if specified.
         * @param message AbandonChannelResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.AbandonChannelResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AbandonChannelResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AbandonChannelResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a DebugLevelRequest. */
    interface IDebugLevelRequest {
        /** DebugLevelRequest show */
        show?: boolean | null;

        /** DebugLevelRequest level_spec */
        level_spec?: string | null;
    }

    /** Represents a DebugLevelRequest. */
    class DebugLevelRequest implements IDebugLevelRequest {
        /**
         * Constructs a new DebugLevelRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IDebugLevelRequest);

        /** DebugLevelRequest show. */
        public show: boolean;

        /** DebugLevelRequest level_spec. */
        public level_spec: string;

        /**
         * Creates a new DebugLevelRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DebugLevelRequest instance
         */
        public static create(
            properties?: lnrpc.IDebugLevelRequest
        ): lnrpc.DebugLevelRequest;

        /**
         * Encodes the specified DebugLevelRequest message. Does not implicitly {@link lnrpc.DebugLevelRequest.verify|verify} messages.
         * @param message DebugLevelRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IDebugLevelRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified DebugLevelRequest message, length delimited. Does not implicitly {@link lnrpc.DebugLevelRequest.verify|verify} messages.
         * @param message DebugLevelRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IDebugLevelRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a DebugLevelRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DebugLevelRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.DebugLevelRequest;

        /**
         * Decodes a DebugLevelRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DebugLevelRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.DebugLevelRequest;

        /**
         * Verifies a DebugLevelRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a DebugLevelRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DebugLevelRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.DebugLevelRequest;

        /**
         * Creates a plain object from a DebugLevelRequest message. Also converts values to other types if specified.
         * @param message DebugLevelRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.DebugLevelRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this DebugLevelRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DebugLevelRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a DebugLevelResponse. */
    interface IDebugLevelResponse {
        /** DebugLevelResponse sub_systems */
        sub_systems?: string | null;
    }

    /** Represents a DebugLevelResponse. */
    class DebugLevelResponse implements IDebugLevelResponse {
        /**
         * Constructs a new DebugLevelResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IDebugLevelResponse);

        /** DebugLevelResponse sub_systems. */
        public sub_systems: string;

        /**
         * Creates a new DebugLevelResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DebugLevelResponse instance
         */
        public static create(
            properties?: lnrpc.IDebugLevelResponse
        ): lnrpc.DebugLevelResponse;

        /**
         * Encodes the specified DebugLevelResponse message. Does not implicitly {@link lnrpc.DebugLevelResponse.verify|verify} messages.
         * @param message DebugLevelResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IDebugLevelResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified DebugLevelResponse message, length delimited. Does not implicitly {@link lnrpc.DebugLevelResponse.verify|verify} messages.
         * @param message DebugLevelResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IDebugLevelResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a DebugLevelResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DebugLevelResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.DebugLevelResponse;

        /**
         * Decodes a DebugLevelResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DebugLevelResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.DebugLevelResponse;

        /**
         * Verifies a DebugLevelResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a DebugLevelResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DebugLevelResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.DebugLevelResponse;

        /**
         * Creates a plain object from a DebugLevelResponse message. Also converts values to other types if specified.
         * @param message DebugLevelResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.DebugLevelResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this DebugLevelResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DebugLevelResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PayReqString. */
    interface IPayReqString {
        /** PayReqString pay_req */
        pay_req?: string | null;
    }

    /** Represents a PayReqString. */
    class PayReqString implements IPayReqString {
        /**
         * Constructs a new PayReqString.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IPayReqString);

        /** PayReqString pay_req. */
        public pay_req: string;

        /**
         * Creates a new PayReqString instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PayReqString instance
         */
        public static create(
            properties?: lnrpc.IPayReqString
        ): lnrpc.PayReqString;

        /**
         * Encodes the specified PayReqString message. Does not implicitly {@link lnrpc.PayReqString.verify|verify} messages.
         * @param message PayReqString message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IPayReqString,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PayReqString message, length delimited. Does not implicitly {@link lnrpc.PayReqString.verify|verify} messages.
         * @param message PayReqString message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IPayReqString,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PayReqString message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PayReqString
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.PayReqString;

        /**
         * Decodes a PayReqString message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PayReqString
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.PayReqString;

        /**
         * Verifies a PayReqString message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PayReqString message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PayReqString
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.PayReqString;

        /**
         * Creates a plain object from a PayReqString message. Also converts values to other types if specified.
         * @param message PayReqString
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.PayReqString,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PayReqString to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PayReqString
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PayReq. */
    interface IPayReq {
        /** PayReq destination */
        destination?: string | null;

        /** PayReq payment_hash */
        payment_hash?: string | null;

        /** PayReq num_satoshis */
        num_satoshis?: Long | null;

        /** PayReq timestamp */
        timestamp?: Long | null;

        /** PayReq expiry */
        expiry?: Long | null;

        /** PayReq description */
        description?: string | null;

        /** PayReq description_hash */
        description_hash?: string | null;

        /** PayReq fallback_addr */
        fallback_addr?: string | null;

        /** PayReq cltv_expiry */
        cltv_expiry?: Long | null;

        /** PayReq route_hints */
        route_hints?: lnrpc.IRouteHint[] | null;

        /** PayReq payment_addr */
        payment_addr?: Uint8Array | null;

        /** PayReq num_msat */
        num_msat?: Long | null;

        /** PayReq features */
        features?: { [k: string]: lnrpc.IFeature } | null;

        /** PayReq blinded_paths */
        blinded_paths?: lnrpc.IBlindedPaymentPath[] | null;
    }

    /** Represents a PayReq. */
    class PayReq implements IPayReq {
        /**
         * Constructs a new PayReq.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IPayReq);

        /** PayReq destination. */
        public destination: string;

        /** PayReq payment_hash. */
        public payment_hash: string;

        /** PayReq num_satoshis. */
        public num_satoshis: Long;

        /** PayReq timestamp. */
        public timestamp: Long;

        /** PayReq expiry. */
        public expiry: Long;

        /** PayReq description. */
        public description: string;

        /** PayReq description_hash. */
        public description_hash: string;

        /** PayReq fallback_addr. */
        public fallback_addr: string;

        /** PayReq cltv_expiry. */
        public cltv_expiry: Long;

        /** PayReq route_hints. */
        public route_hints: lnrpc.IRouteHint[];

        /** PayReq payment_addr. */
        public payment_addr: Uint8Array;

        /** PayReq num_msat. */
        public num_msat: Long;

        /** PayReq features. */
        public features: { [k: string]: lnrpc.IFeature };

        /** PayReq blinded_paths. */
        public blinded_paths: lnrpc.IBlindedPaymentPath[];

        /**
         * Creates a new PayReq instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PayReq instance
         */
        public static create(properties?: lnrpc.IPayReq): lnrpc.PayReq;

        /**
         * Encodes the specified PayReq message. Does not implicitly {@link lnrpc.PayReq.verify|verify} messages.
         * @param message PayReq message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IPayReq,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PayReq message, length delimited. Does not implicitly {@link lnrpc.PayReq.verify|verify} messages.
         * @param message PayReq message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IPayReq,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PayReq message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PayReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.PayReq;

        /**
         * Decodes a PayReq message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PayReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.PayReq;

        /**
         * Verifies a PayReq message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PayReq message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PayReq
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.PayReq;

        /**
         * Creates a plain object from a PayReq message. Also converts values to other types if specified.
         * @param message PayReq
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.PayReq,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PayReq to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PayReq
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** FeatureBit enum. */
    enum FeatureBit {
        DATALOSS_PROTECT_REQ = 0,
        DATALOSS_PROTECT_OPT = 1,
        INITIAL_ROUING_SYNC = 3,
        UPFRONT_SHUTDOWN_SCRIPT_REQ = 4,
        UPFRONT_SHUTDOWN_SCRIPT_OPT = 5,
        GOSSIP_QUERIES_REQ = 6,
        GOSSIP_QUERIES_OPT = 7,
        TLV_ONION_REQ = 8,
        TLV_ONION_OPT = 9,
        EXT_GOSSIP_QUERIES_REQ = 10,
        EXT_GOSSIP_QUERIES_OPT = 11,
        STATIC_REMOTE_KEY_REQ = 12,
        STATIC_REMOTE_KEY_OPT = 13,
        PAYMENT_ADDR_REQ = 14,
        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,
        ROUTE_BLINDING_REQUIRED = 24,
        ROUTE_BLINDING_OPTIONAL = 25,
        AMP_REQ = 30,
        AMP_OPT = 31
    }

    /** Properties of a Feature. */
    interface IFeature {
        /** Feature name */
        name?: string | null;

        /** Feature is_required */
        is_required?: boolean | null;

        /** Feature is_known */
        is_known?: boolean | null;
    }

    /** Represents a Feature. */
    class Feature implements IFeature {
        /**
         * Constructs a new Feature.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IFeature);

        /** Feature name. */
        public name: string;

        /** Feature is_required. */
        public is_required: boolean;

        /** Feature is_known. */
        public is_known: boolean;

        /**
         * Creates a new Feature instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Feature instance
         */
        public static create(properties?: lnrpc.IFeature): lnrpc.Feature;

        /**
         * Encodes the specified Feature message. Does not implicitly {@link lnrpc.Feature.verify|verify} messages.
         * @param message Feature message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IFeature,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Feature message, length delimited. Does not implicitly {@link lnrpc.Feature.verify|verify} messages.
         * @param message Feature message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IFeature,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a Feature message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Feature
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.Feature;

        /**
         * Decodes a Feature message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Feature
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.Feature;

        /**
         * Verifies a Feature message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a Feature message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Feature
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.Feature;

        /**
         * Creates a plain object from a Feature message. Also converts values to other types if specified.
         * @param message Feature
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.Feature,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Feature to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Feature
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a FeeReportRequest. */
    interface IFeeReportRequest {}

    /** Represents a FeeReportRequest. */
    class FeeReportRequest implements IFeeReportRequest {
        /**
         * Constructs a new FeeReportRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IFeeReportRequest);

        /**
         * Creates a new FeeReportRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns FeeReportRequest instance
         */
        public static create(
            properties?: lnrpc.IFeeReportRequest
        ): lnrpc.FeeReportRequest;

        /**
         * Encodes the specified FeeReportRequest message. Does not implicitly {@link lnrpc.FeeReportRequest.verify|verify} messages.
         * @param message FeeReportRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IFeeReportRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified FeeReportRequest message, length delimited. Does not implicitly {@link lnrpc.FeeReportRequest.verify|verify} messages.
         * @param message FeeReportRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IFeeReportRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a FeeReportRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns FeeReportRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.FeeReportRequest;

        /**
         * Decodes a FeeReportRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns FeeReportRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.FeeReportRequest;

        /**
         * Verifies a FeeReportRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a FeeReportRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns FeeReportRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.FeeReportRequest;

        /**
         * Creates a plain object from a FeeReportRequest message. Also converts values to other types if specified.
         * @param message FeeReportRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.FeeReportRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this FeeReportRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for FeeReportRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChannelFeeReport. */
    interface IChannelFeeReport {
        /** ChannelFeeReport chan_id */
        chan_id?: Long | null;

        /** ChannelFeeReport channel_point */
        channel_point?: string | null;

        /** ChannelFeeReport base_fee_msat */
        base_fee_msat?: Long | null;

        /** ChannelFeeReport fee_per_mil */
        fee_per_mil?: Long | null;

        /** ChannelFeeReport fee_rate */
        fee_rate?: number | null;

        /** ChannelFeeReport inbound_base_fee_msat */
        inbound_base_fee_msat?: number | null;

        /** ChannelFeeReport inbound_fee_per_mil */
        inbound_fee_per_mil?: number | null;
    }

    /** Represents a ChannelFeeReport. */
    class ChannelFeeReport implements IChannelFeeReport {
        /**
         * Constructs a new ChannelFeeReport.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelFeeReport);

        /** ChannelFeeReport chan_id. */
        public chan_id: Long;

        /** ChannelFeeReport channel_point. */
        public channel_point: string;

        /** ChannelFeeReport base_fee_msat. */
        public base_fee_msat: Long;

        /** ChannelFeeReport fee_per_mil. */
        public fee_per_mil: Long;

        /** ChannelFeeReport fee_rate. */
        public fee_rate: number;

        /** ChannelFeeReport inbound_base_fee_msat. */
        public inbound_base_fee_msat: number;

        /** ChannelFeeReport inbound_fee_per_mil. */
        public inbound_fee_per_mil: number;

        /**
         * Creates a new ChannelFeeReport instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelFeeReport instance
         */
        public static create(
            properties?: lnrpc.IChannelFeeReport
        ): lnrpc.ChannelFeeReport;

        /**
         * Encodes the specified ChannelFeeReport message. Does not implicitly {@link lnrpc.ChannelFeeReport.verify|verify} messages.
         * @param message ChannelFeeReport message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelFeeReport,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelFeeReport message, length delimited. Does not implicitly {@link lnrpc.ChannelFeeReport.verify|verify} messages.
         * @param message ChannelFeeReport message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelFeeReport,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelFeeReport message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelFeeReport
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelFeeReport;

        /**
         * Decodes a ChannelFeeReport message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelFeeReport
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelFeeReport;

        /**
         * Verifies a ChannelFeeReport message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelFeeReport message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelFeeReport
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelFeeReport;

        /**
         * Creates a plain object from a ChannelFeeReport message. Also converts values to other types if specified.
         * @param message ChannelFeeReport
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelFeeReport,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelFeeReport to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelFeeReport
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a FeeReportResponse. */
    interface IFeeReportResponse {
        /** FeeReportResponse channel_fees */
        channel_fees?: lnrpc.IChannelFeeReport[] | null;

        /** FeeReportResponse day_fee_sum */
        day_fee_sum?: Long | null;

        /** FeeReportResponse week_fee_sum */
        week_fee_sum?: Long | null;

        /** FeeReportResponse month_fee_sum */
        month_fee_sum?: Long | null;
    }

    /** Represents a FeeReportResponse. */
    class FeeReportResponse implements IFeeReportResponse {
        /**
         * Constructs a new FeeReportResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IFeeReportResponse);

        /** FeeReportResponse channel_fees. */
        public channel_fees: lnrpc.IChannelFeeReport[];

        /** FeeReportResponse day_fee_sum. */
        public day_fee_sum: Long;

        /** FeeReportResponse week_fee_sum. */
        public week_fee_sum: Long;

        /** FeeReportResponse month_fee_sum. */
        public month_fee_sum: Long;

        /**
         * Creates a new FeeReportResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns FeeReportResponse instance
         */
        public static create(
            properties?: lnrpc.IFeeReportResponse
        ): lnrpc.FeeReportResponse;

        /**
         * Encodes the specified FeeReportResponse message. Does not implicitly {@link lnrpc.FeeReportResponse.verify|verify} messages.
         * @param message FeeReportResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IFeeReportResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified FeeReportResponse message, length delimited. Does not implicitly {@link lnrpc.FeeReportResponse.verify|verify} messages.
         * @param message FeeReportResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IFeeReportResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a FeeReportResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns FeeReportResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.FeeReportResponse;

        /**
         * Decodes a FeeReportResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns FeeReportResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.FeeReportResponse;

        /**
         * Verifies a FeeReportResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a FeeReportResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns FeeReportResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.FeeReportResponse;

        /**
         * Creates a plain object from a FeeReportResponse message. Also converts values to other types if specified.
         * @param message FeeReportResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.FeeReportResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this FeeReportResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for FeeReportResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an InboundFee. */
    interface IInboundFee {
        /** InboundFee base_fee_msat */
        base_fee_msat?: number | null;

        /** InboundFee fee_rate_ppm */
        fee_rate_ppm?: number | null;
    }

    /** Represents an InboundFee. */
    class InboundFee implements IInboundFee {
        /**
         * Constructs a new InboundFee.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IInboundFee);

        /** InboundFee base_fee_msat. */
        public base_fee_msat: number;

        /** InboundFee fee_rate_ppm. */
        public fee_rate_ppm: number;

        /**
         * Creates a new InboundFee instance using the specified properties.
         * @param [properties] Properties to set
         * @returns InboundFee instance
         */
        public static create(properties?: lnrpc.IInboundFee): lnrpc.InboundFee;

        /**
         * Encodes the specified InboundFee message. Does not implicitly {@link lnrpc.InboundFee.verify|verify} messages.
         * @param message InboundFee message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IInboundFee,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified InboundFee message, length delimited. Does not implicitly {@link lnrpc.InboundFee.verify|verify} messages.
         * @param message InboundFee message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IInboundFee,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an InboundFee message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns InboundFee
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.InboundFee;

        /**
         * Decodes an InboundFee message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns InboundFee
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.InboundFee;

        /**
         * Verifies an InboundFee message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an InboundFee message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns InboundFee
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.InboundFee;

        /**
         * Creates a plain object from an InboundFee message. Also converts values to other types if specified.
         * @param message InboundFee
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.InboundFee,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this InboundFee to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for InboundFee
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PolicyUpdateRequest. */
    interface IPolicyUpdateRequest {
        /** PolicyUpdateRequest global */
        global?: boolean | null;

        /** PolicyUpdateRequest chan_point */
        chan_point?: lnrpc.IChannelPoint | null;

        /** PolicyUpdateRequest base_fee_msat */
        base_fee_msat?: Long | null;

        /** PolicyUpdateRequest fee_rate */
        fee_rate?: number | null;

        /** PolicyUpdateRequest fee_rate_ppm */
        fee_rate_ppm?: number | null;

        /** PolicyUpdateRequest time_lock_delta */
        time_lock_delta?: number | null;

        /** PolicyUpdateRequest max_htlc_msat */
        max_htlc_msat?: Long | null;

        /** PolicyUpdateRequest min_htlc_msat */
        min_htlc_msat?: Long | null;

        /** PolicyUpdateRequest min_htlc_msat_specified */
        min_htlc_msat_specified?: boolean | null;

        /** PolicyUpdateRequest inbound_fee */
        inbound_fee?: lnrpc.IInboundFee | null;
    }

    /** Represents a PolicyUpdateRequest. */
    class PolicyUpdateRequest implements IPolicyUpdateRequest {
        /**
         * Constructs a new PolicyUpdateRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IPolicyUpdateRequest);

        /** PolicyUpdateRequest global. */
        public global?: boolean | null;

        /** PolicyUpdateRequest chan_point. */
        public chan_point?: lnrpc.IChannelPoint | null;

        /** PolicyUpdateRequest base_fee_msat. */
        public base_fee_msat: Long;

        /** PolicyUpdateRequest fee_rate. */
        public fee_rate: number;

        /** PolicyUpdateRequest fee_rate_ppm. */
        public fee_rate_ppm: number;

        /** PolicyUpdateRequest time_lock_delta. */
        public time_lock_delta: number;

        /** PolicyUpdateRequest max_htlc_msat. */
        public max_htlc_msat: Long;

        /** PolicyUpdateRequest min_htlc_msat. */
        public min_htlc_msat: Long;

        /** PolicyUpdateRequest min_htlc_msat_specified. */
        public min_htlc_msat_specified: boolean;

        /** PolicyUpdateRequest inbound_fee. */
        public inbound_fee?: lnrpc.IInboundFee | null;

        /** PolicyUpdateRequest scope. */
        public scope?: 'global' | 'chan_point';

        /**
         * Creates a new PolicyUpdateRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PolicyUpdateRequest instance
         */
        public static create(
            properties?: lnrpc.IPolicyUpdateRequest
        ): lnrpc.PolicyUpdateRequest;

        /**
         * Encodes the specified PolicyUpdateRequest message. Does not implicitly {@link lnrpc.PolicyUpdateRequest.verify|verify} messages.
         * @param message PolicyUpdateRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IPolicyUpdateRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PolicyUpdateRequest message, length delimited. Does not implicitly {@link lnrpc.PolicyUpdateRequest.verify|verify} messages.
         * @param message PolicyUpdateRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IPolicyUpdateRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PolicyUpdateRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PolicyUpdateRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.PolicyUpdateRequest;

        /**
         * Decodes a PolicyUpdateRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PolicyUpdateRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.PolicyUpdateRequest;

        /**
         * Verifies a PolicyUpdateRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PolicyUpdateRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PolicyUpdateRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.PolicyUpdateRequest;

        /**
         * Creates a plain object from a PolicyUpdateRequest message. Also converts values to other types if specified.
         * @param message PolicyUpdateRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.PolicyUpdateRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PolicyUpdateRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PolicyUpdateRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** UpdateFailure enum. */
    enum UpdateFailure {
        UPDATE_FAILURE_UNKNOWN = 0,
        UPDATE_FAILURE_PENDING = 1,
        UPDATE_FAILURE_NOT_FOUND = 2,
        UPDATE_FAILURE_INTERNAL_ERR = 3,
        UPDATE_FAILURE_INVALID_PARAMETER = 4
    }

    /** Properties of a FailedUpdate. */
    interface IFailedUpdate {
        /** FailedUpdate outpoint */
        outpoint?: lnrpc.IOutPoint | null;

        /** FailedUpdate reason */
        reason?: lnrpc.UpdateFailure | null;

        /** FailedUpdate update_error */
        update_error?: string | null;
    }

    /** Represents a FailedUpdate. */
    class FailedUpdate implements IFailedUpdate {
        /**
         * Constructs a new FailedUpdate.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IFailedUpdate);

        /** FailedUpdate outpoint. */
        public outpoint?: lnrpc.IOutPoint | null;

        /** FailedUpdate reason. */
        public reason: lnrpc.UpdateFailure;

        /** FailedUpdate update_error. */
        public update_error: string;

        /**
         * Creates a new FailedUpdate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns FailedUpdate instance
         */
        public static create(
            properties?: lnrpc.IFailedUpdate
        ): lnrpc.FailedUpdate;

        /**
         * Encodes the specified FailedUpdate message. Does not implicitly {@link lnrpc.FailedUpdate.verify|verify} messages.
         * @param message FailedUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IFailedUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified FailedUpdate message, length delimited. Does not implicitly {@link lnrpc.FailedUpdate.verify|verify} messages.
         * @param message FailedUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IFailedUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a FailedUpdate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns FailedUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.FailedUpdate;

        /**
         * Decodes a FailedUpdate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns FailedUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.FailedUpdate;

        /**
         * Verifies a FailedUpdate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a FailedUpdate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns FailedUpdate
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.FailedUpdate;

        /**
         * Creates a plain object from a FailedUpdate message. Also converts values to other types if specified.
         * @param message FailedUpdate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.FailedUpdate,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this FailedUpdate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for FailedUpdate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PolicyUpdateResponse. */
    interface IPolicyUpdateResponse {
        /** PolicyUpdateResponse failed_updates */
        failed_updates?: lnrpc.IFailedUpdate[] | null;
    }

    /** Represents a PolicyUpdateResponse. */
    class PolicyUpdateResponse implements IPolicyUpdateResponse {
        /**
         * Constructs a new PolicyUpdateResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IPolicyUpdateResponse);

        /** PolicyUpdateResponse failed_updates. */
        public failed_updates: lnrpc.IFailedUpdate[];

        /**
         * Creates a new PolicyUpdateResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PolicyUpdateResponse instance
         */
        public static create(
            properties?: lnrpc.IPolicyUpdateResponse
        ): lnrpc.PolicyUpdateResponse;

        /**
         * Encodes the specified PolicyUpdateResponse message. Does not implicitly {@link lnrpc.PolicyUpdateResponse.verify|verify} messages.
         * @param message PolicyUpdateResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IPolicyUpdateResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PolicyUpdateResponse message, length delimited. Does not implicitly {@link lnrpc.PolicyUpdateResponse.verify|verify} messages.
         * @param message PolicyUpdateResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IPolicyUpdateResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PolicyUpdateResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PolicyUpdateResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.PolicyUpdateResponse;

        /**
         * Decodes a PolicyUpdateResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PolicyUpdateResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.PolicyUpdateResponse;

        /**
         * Verifies a PolicyUpdateResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PolicyUpdateResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PolicyUpdateResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.PolicyUpdateResponse;

        /**
         * Creates a plain object from a PolicyUpdateResponse message. Also converts values to other types if specified.
         * @param message PolicyUpdateResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.PolicyUpdateResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PolicyUpdateResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PolicyUpdateResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ForwardingHistoryRequest. */
    interface IForwardingHistoryRequest {
        /** ForwardingHistoryRequest start_time */
        start_time?: Long | null;

        /** ForwardingHistoryRequest end_time */
        end_time?: Long | null;

        /** ForwardingHistoryRequest index_offset */
        index_offset?: number | null;

        /** ForwardingHistoryRequest num_max_events */
        num_max_events?: number | null;

        /** ForwardingHistoryRequest peer_alias_lookup */
        peer_alias_lookup?: boolean | null;

        /** ForwardingHistoryRequest incoming_chan_ids */
        incoming_chan_ids?: Long[] | null;

        /** ForwardingHistoryRequest outgoing_chan_ids */
        outgoing_chan_ids?: Long[] | null;
    }

    /** Represents a ForwardingHistoryRequest. */
    class ForwardingHistoryRequest implements IForwardingHistoryRequest {
        /**
         * Constructs a new ForwardingHistoryRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IForwardingHistoryRequest);

        /** ForwardingHistoryRequest start_time. */
        public start_time: Long;

        /** ForwardingHistoryRequest end_time. */
        public end_time: Long;

        /** ForwardingHistoryRequest index_offset. */
        public index_offset: number;

        /** ForwardingHistoryRequest num_max_events. */
        public num_max_events: number;

        /** ForwardingHistoryRequest peer_alias_lookup. */
        public peer_alias_lookup: boolean;

        /** ForwardingHistoryRequest incoming_chan_ids. */
        public incoming_chan_ids: Long[];

        /** ForwardingHistoryRequest outgoing_chan_ids. */
        public outgoing_chan_ids: Long[];

        /**
         * Creates a new ForwardingHistoryRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ForwardingHistoryRequest instance
         */
        public static create(
            properties?: lnrpc.IForwardingHistoryRequest
        ): lnrpc.ForwardingHistoryRequest;

        /**
         * Encodes the specified ForwardingHistoryRequest message. Does not implicitly {@link lnrpc.ForwardingHistoryRequest.verify|verify} messages.
         * @param message ForwardingHistoryRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IForwardingHistoryRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ForwardingHistoryRequest message, length delimited. Does not implicitly {@link lnrpc.ForwardingHistoryRequest.verify|verify} messages.
         * @param message ForwardingHistoryRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IForwardingHistoryRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ForwardingHistoryRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ForwardingHistoryRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ForwardingHistoryRequest;

        /**
         * Decodes a ForwardingHistoryRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ForwardingHistoryRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ForwardingHistoryRequest;

        /**
         * Verifies a ForwardingHistoryRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ForwardingHistoryRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ForwardingHistoryRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ForwardingHistoryRequest;

        /**
         * Creates a plain object from a ForwardingHistoryRequest message. Also converts values to other types if specified.
         * @param message ForwardingHistoryRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ForwardingHistoryRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ForwardingHistoryRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ForwardingHistoryRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ForwardingEvent. */
    interface IForwardingEvent {
        /** ForwardingEvent timestamp */
        timestamp?: Long | null;

        /** ForwardingEvent chan_id_in */
        chan_id_in?: Long | null;

        /** ForwardingEvent chan_id_out */
        chan_id_out?: Long | null;

        /** ForwardingEvent amt_in */
        amt_in?: Long | null;

        /** ForwardingEvent amt_out */
        amt_out?: Long | null;

        /** ForwardingEvent fee */
        fee?: Long | null;

        /** ForwardingEvent fee_msat */
        fee_msat?: Long | null;

        /** ForwardingEvent amt_in_msat */
        amt_in_msat?: Long | null;

        /** ForwardingEvent amt_out_msat */
        amt_out_msat?: Long | null;

        /** ForwardingEvent timestamp_ns */
        timestamp_ns?: Long | null;

        /** ForwardingEvent peer_alias_in */
        peer_alias_in?: string | null;

        /** ForwardingEvent peer_alias_out */
        peer_alias_out?: string | null;
    }

    /** Represents a ForwardingEvent. */
    class ForwardingEvent implements IForwardingEvent {
        /**
         * Constructs a new ForwardingEvent.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IForwardingEvent);

        /** ForwardingEvent timestamp. */
        public timestamp: Long;

        /** ForwardingEvent chan_id_in. */
        public chan_id_in: Long;

        /** ForwardingEvent chan_id_out. */
        public chan_id_out: Long;

        /** ForwardingEvent amt_in. */
        public amt_in: Long;

        /** ForwardingEvent amt_out. */
        public amt_out: Long;

        /** ForwardingEvent fee. */
        public fee: Long;

        /** ForwardingEvent fee_msat. */
        public fee_msat: Long;

        /** ForwardingEvent amt_in_msat. */
        public amt_in_msat: Long;

        /** ForwardingEvent amt_out_msat. */
        public amt_out_msat: Long;

        /** ForwardingEvent timestamp_ns. */
        public timestamp_ns: Long;

        /** ForwardingEvent peer_alias_in. */
        public peer_alias_in: string;

        /** ForwardingEvent peer_alias_out. */
        public peer_alias_out: string;

        /**
         * Creates a new ForwardingEvent instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ForwardingEvent instance
         */
        public static create(
            properties?: lnrpc.IForwardingEvent
        ): lnrpc.ForwardingEvent;

        /**
         * Encodes the specified ForwardingEvent message. Does not implicitly {@link lnrpc.ForwardingEvent.verify|verify} messages.
         * @param message ForwardingEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IForwardingEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ForwardingEvent message, length delimited. Does not implicitly {@link lnrpc.ForwardingEvent.verify|verify} messages.
         * @param message ForwardingEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IForwardingEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ForwardingEvent message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ForwardingEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ForwardingEvent;

        /**
         * Decodes a ForwardingEvent message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ForwardingEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ForwardingEvent;

        /**
         * Verifies a ForwardingEvent message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ForwardingEvent message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ForwardingEvent
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ForwardingEvent;

        /**
         * Creates a plain object from a ForwardingEvent message. Also converts values to other types if specified.
         * @param message ForwardingEvent
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ForwardingEvent,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ForwardingEvent to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ForwardingEvent
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ForwardingHistoryResponse. */
    interface IForwardingHistoryResponse {
        /** ForwardingHistoryResponse forwarding_events */
        forwarding_events?: lnrpc.IForwardingEvent[] | null;

        /** ForwardingHistoryResponse last_offset_index */
        last_offset_index?: number | null;
    }

    /** Represents a ForwardingHistoryResponse. */
    class ForwardingHistoryResponse implements IForwardingHistoryResponse {
        /**
         * Constructs a new ForwardingHistoryResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IForwardingHistoryResponse);

        /** ForwardingHistoryResponse forwarding_events. */
        public forwarding_events: lnrpc.IForwardingEvent[];

        /** ForwardingHistoryResponse last_offset_index. */
        public last_offset_index: number;

        /**
         * Creates a new ForwardingHistoryResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ForwardingHistoryResponse instance
         */
        public static create(
            properties?: lnrpc.IForwardingHistoryResponse
        ): lnrpc.ForwardingHistoryResponse;

        /**
         * Encodes the specified ForwardingHistoryResponse message. Does not implicitly {@link lnrpc.ForwardingHistoryResponse.verify|verify} messages.
         * @param message ForwardingHistoryResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IForwardingHistoryResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ForwardingHistoryResponse message, length delimited. Does not implicitly {@link lnrpc.ForwardingHistoryResponse.verify|verify} messages.
         * @param message ForwardingHistoryResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IForwardingHistoryResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ForwardingHistoryResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ForwardingHistoryResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ForwardingHistoryResponse;

        /**
         * Decodes a ForwardingHistoryResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ForwardingHistoryResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ForwardingHistoryResponse;

        /**
         * Verifies a ForwardingHistoryResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ForwardingHistoryResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ForwardingHistoryResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ForwardingHistoryResponse;

        /**
         * Creates a plain object from a ForwardingHistoryResponse message. Also converts values to other types if specified.
         * @param message ForwardingHistoryResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ForwardingHistoryResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ForwardingHistoryResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ForwardingHistoryResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an ExportChannelBackupRequest. */
    interface IExportChannelBackupRequest {
        /** ExportChannelBackupRequest chan_point */
        chan_point?: lnrpc.IChannelPoint | null;
    }

    /** Represents an ExportChannelBackupRequest. */
    class ExportChannelBackupRequest implements IExportChannelBackupRequest {
        /**
         * Constructs a new ExportChannelBackupRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IExportChannelBackupRequest);

        /** ExportChannelBackupRequest chan_point. */
        public chan_point?: lnrpc.IChannelPoint | null;

        /**
         * Creates a new ExportChannelBackupRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ExportChannelBackupRequest instance
         */
        public static create(
            properties?: lnrpc.IExportChannelBackupRequest
        ): lnrpc.ExportChannelBackupRequest;

        /**
         * Encodes the specified ExportChannelBackupRequest message. Does not implicitly {@link lnrpc.ExportChannelBackupRequest.verify|verify} messages.
         * @param message ExportChannelBackupRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IExportChannelBackupRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ExportChannelBackupRequest message, length delimited. Does not implicitly {@link lnrpc.ExportChannelBackupRequest.verify|verify} messages.
         * @param message ExportChannelBackupRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IExportChannelBackupRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an ExportChannelBackupRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ExportChannelBackupRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ExportChannelBackupRequest;

        /**
         * Decodes an ExportChannelBackupRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ExportChannelBackupRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ExportChannelBackupRequest;

        /**
         * Verifies an ExportChannelBackupRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an ExportChannelBackupRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ExportChannelBackupRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ExportChannelBackupRequest;

        /**
         * Creates a plain object from an ExportChannelBackupRequest message. Also converts values to other types if specified.
         * @param message ExportChannelBackupRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ExportChannelBackupRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ExportChannelBackupRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ExportChannelBackupRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChannelBackup. */
    interface IChannelBackup {
        /** ChannelBackup chan_point */
        chan_point?: lnrpc.IChannelPoint | null;

        /** ChannelBackup chan_backup */
        chan_backup?: Uint8Array | null;
    }

    /** Represents a ChannelBackup. */
    class ChannelBackup implements IChannelBackup {
        /**
         * Constructs a new ChannelBackup.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelBackup);

        /** ChannelBackup chan_point. */
        public chan_point?: lnrpc.IChannelPoint | null;

        /** ChannelBackup chan_backup. */
        public chan_backup: Uint8Array;

        /**
         * Creates a new ChannelBackup instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelBackup instance
         */
        public static create(
            properties?: lnrpc.IChannelBackup
        ): lnrpc.ChannelBackup;

        /**
         * Encodes the specified ChannelBackup message. Does not implicitly {@link lnrpc.ChannelBackup.verify|verify} messages.
         * @param message ChannelBackup message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelBackup,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelBackup message, length delimited. Does not implicitly {@link lnrpc.ChannelBackup.verify|verify} messages.
         * @param message ChannelBackup message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelBackup,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelBackup message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelBackup
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelBackup;

        /**
         * Decodes a ChannelBackup message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelBackup
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelBackup;

        /**
         * Verifies a ChannelBackup message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelBackup message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelBackup
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelBackup;

        /**
         * Creates a plain object from a ChannelBackup message. Also converts values to other types if specified.
         * @param message ChannelBackup
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelBackup,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelBackup to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelBackup
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MultiChanBackup. */
    interface IMultiChanBackup {
        /** MultiChanBackup chan_points */
        chan_points?: lnrpc.IChannelPoint[] | null;

        /** MultiChanBackup multi_chan_backup */
        multi_chan_backup?: Uint8Array | null;
    }

    /** Represents a MultiChanBackup. */
    class MultiChanBackup implements IMultiChanBackup {
        /**
         * Constructs a new MultiChanBackup.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IMultiChanBackup);

        /** MultiChanBackup chan_points. */
        public chan_points: lnrpc.IChannelPoint[];

        /** MultiChanBackup multi_chan_backup. */
        public multi_chan_backup: Uint8Array;

        /**
         * Creates a new MultiChanBackup instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MultiChanBackup instance
         */
        public static create(
            properties?: lnrpc.IMultiChanBackup
        ): lnrpc.MultiChanBackup;

        /**
         * Encodes the specified MultiChanBackup message. Does not implicitly {@link lnrpc.MultiChanBackup.verify|verify} messages.
         * @param message MultiChanBackup message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IMultiChanBackup,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MultiChanBackup message, length delimited. Does not implicitly {@link lnrpc.MultiChanBackup.verify|verify} messages.
         * @param message MultiChanBackup message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IMultiChanBackup,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MultiChanBackup message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MultiChanBackup
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.MultiChanBackup;

        /**
         * Decodes a MultiChanBackup message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MultiChanBackup
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.MultiChanBackup;

        /**
         * Verifies a MultiChanBackup message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MultiChanBackup message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MultiChanBackup
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.MultiChanBackup;

        /**
         * Creates a plain object from a MultiChanBackup message. Also converts values to other types if specified.
         * @param message MultiChanBackup
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.MultiChanBackup,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MultiChanBackup to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MultiChanBackup
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChanBackupExportRequest. */
    interface IChanBackupExportRequest {}

    /** Represents a ChanBackupExportRequest. */
    class ChanBackupExportRequest implements IChanBackupExportRequest {
        /**
         * Constructs a new ChanBackupExportRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChanBackupExportRequest);

        /**
         * Creates a new ChanBackupExportRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChanBackupExportRequest instance
         */
        public static create(
            properties?: lnrpc.IChanBackupExportRequest
        ): lnrpc.ChanBackupExportRequest;

        /**
         * Encodes the specified ChanBackupExportRequest message. Does not implicitly {@link lnrpc.ChanBackupExportRequest.verify|verify} messages.
         * @param message ChanBackupExportRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChanBackupExportRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChanBackupExportRequest message, length delimited. Does not implicitly {@link lnrpc.ChanBackupExportRequest.verify|verify} messages.
         * @param message ChanBackupExportRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChanBackupExportRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChanBackupExportRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChanBackupExportRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChanBackupExportRequest;

        /**
         * Decodes a ChanBackupExportRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChanBackupExportRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChanBackupExportRequest;

        /**
         * Verifies a ChanBackupExportRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChanBackupExportRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChanBackupExportRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChanBackupExportRequest;

        /**
         * Creates a plain object from a ChanBackupExportRequest message. Also converts values to other types if specified.
         * @param message ChanBackupExportRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChanBackupExportRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChanBackupExportRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChanBackupExportRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChanBackupSnapshot. */
    interface IChanBackupSnapshot {
        /** ChanBackupSnapshot single_chan_backups */
        single_chan_backups?: lnrpc.IChannelBackups | null;

        /** ChanBackupSnapshot multi_chan_backup */
        multi_chan_backup?: lnrpc.IMultiChanBackup | null;
    }

    /** Represents a ChanBackupSnapshot. */
    class ChanBackupSnapshot implements IChanBackupSnapshot {
        /**
         * Constructs a new ChanBackupSnapshot.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChanBackupSnapshot);

        /** ChanBackupSnapshot single_chan_backups. */
        public single_chan_backups?: lnrpc.IChannelBackups | null;

        /** ChanBackupSnapshot multi_chan_backup. */
        public multi_chan_backup?: lnrpc.IMultiChanBackup | null;

        /**
         * Creates a new ChanBackupSnapshot instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChanBackupSnapshot instance
         */
        public static create(
            properties?: lnrpc.IChanBackupSnapshot
        ): lnrpc.ChanBackupSnapshot;

        /**
         * Encodes the specified ChanBackupSnapshot message. Does not implicitly {@link lnrpc.ChanBackupSnapshot.verify|verify} messages.
         * @param message ChanBackupSnapshot message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChanBackupSnapshot,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChanBackupSnapshot message, length delimited. Does not implicitly {@link lnrpc.ChanBackupSnapshot.verify|verify} messages.
         * @param message ChanBackupSnapshot message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChanBackupSnapshot,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChanBackupSnapshot message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChanBackupSnapshot
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChanBackupSnapshot;

        /**
         * Decodes a ChanBackupSnapshot message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChanBackupSnapshot
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChanBackupSnapshot;

        /**
         * Verifies a ChanBackupSnapshot message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChanBackupSnapshot message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChanBackupSnapshot
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChanBackupSnapshot;

        /**
         * Creates a plain object from a ChanBackupSnapshot message. Also converts values to other types if specified.
         * @param message ChanBackupSnapshot
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChanBackupSnapshot,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChanBackupSnapshot to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChanBackupSnapshot
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChannelBackups. */
    interface IChannelBackups {
        /** ChannelBackups chan_backups */
        chan_backups?: lnrpc.IChannelBackup[] | null;
    }

    /** Represents a ChannelBackups. */
    class ChannelBackups implements IChannelBackups {
        /**
         * Constructs a new ChannelBackups.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelBackups);

        /** ChannelBackups chan_backups. */
        public chan_backups: lnrpc.IChannelBackup[];

        /**
         * Creates a new ChannelBackups instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelBackups instance
         */
        public static create(
            properties?: lnrpc.IChannelBackups
        ): lnrpc.ChannelBackups;

        /**
         * Encodes the specified ChannelBackups message. Does not implicitly {@link lnrpc.ChannelBackups.verify|verify} messages.
         * @param message ChannelBackups message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelBackups,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelBackups message, length delimited. Does not implicitly {@link lnrpc.ChannelBackups.verify|verify} messages.
         * @param message ChannelBackups message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelBackups,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelBackups message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelBackups
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelBackups;

        /**
         * Decodes a ChannelBackups message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelBackups
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelBackups;

        /**
         * Verifies a ChannelBackups message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelBackups message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelBackups
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelBackups;

        /**
         * Creates a plain object from a ChannelBackups message. Also converts values to other types if specified.
         * @param message ChannelBackups
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelBackups,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelBackups to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelBackups
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a RestoreChanBackupRequest. */
    interface IRestoreChanBackupRequest {
        /** RestoreChanBackupRequest chan_backups */
        chan_backups?: lnrpc.IChannelBackups | null;

        /** RestoreChanBackupRequest multi_chan_backup */
        multi_chan_backup?: Uint8Array | null;
    }

    /** Represents a RestoreChanBackupRequest. */
    class RestoreChanBackupRequest implements IRestoreChanBackupRequest {
        /**
         * Constructs a new RestoreChanBackupRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IRestoreChanBackupRequest);

        /** RestoreChanBackupRequest chan_backups. */
        public chan_backups?: lnrpc.IChannelBackups | null;

        /** RestoreChanBackupRequest multi_chan_backup. */
        public multi_chan_backup?: Uint8Array | null;

        /** RestoreChanBackupRequest backup. */
        public backup?: 'chan_backups' | 'multi_chan_backup';

        /**
         * Creates a new RestoreChanBackupRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns RestoreChanBackupRequest instance
         */
        public static create(
            properties?: lnrpc.IRestoreChanBackupRequest
        ): lnrpc.RestoreChanBackupRequest;

        /**
         * Encodes the specified RestoreChanBackupRequest message. Does not implicitly {@link lnrpc.RestoreChanBackupRequest.verify|verify} messages.
         * @param message RestoreChanBackupRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IRestoreChanBackupRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified RestoreChanBackupRequest message, length delimited. Does not implicitly {@link lnrpc.RestoreChanBackupRequest.verify|verify} messages.
         * @param message RestoreChanBackupRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IRestoreChanBackupRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a RestoreChanBackupRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns RestoreChanBackupRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.RestoreChanBackupRequest;

        /**
         * Decodes a RestoreChanBackupRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns RestoreChanBackupRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.RestoreChanBackupRequest;

        /**
         * Verifies a RestoreChanBackupRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a RestoreChanBackupRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns RestoreChanBackupRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.RestoreChanBackupRequest;

        /**
         * Creates a plain object from a RestoreChanBackupRequest message. Also converts values to other types if specified.
         * @param message RestoreChanBackupRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.RestoreChanBackupRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this RestoreChanBackupRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for RestoreChanBackupRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a RestoreBackupResponse. */
    interface IRestoreBackupResponse {}

    /** Represents a RestoreBackupResponse. */
    class RestoreBackupResponse implements IRestoreBackupResponse {
        /**
         * Constructs a new RestoreBackupResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IRestoreBackupResponse);

        /**
         * Creates a new RestoreBackupResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns RestoreBackupResponse instance
         */
        public static create(
            properties?: lnrpc.IRestoreBackupResponse
        ): lnrpc.RestoreBackupResponse;

        /**
         * Encodes the specified RestoreBackupResponse message. Does not implicitly {@link lnrpc.RestoreBackupResponse.verify|verify} messages.
         * @param message RestoreBackupResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IRestoreBackupResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified RestoreBackupResponse message, length delimited. Does not implicitly {@link lnrpc.RestoreBackupResponse.verify|verify} messages.
         * @param message RestoreBackupResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IRestoreBackupResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a RestoreBackupResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns RestoreBackupResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.RestoreBackupResponse;

        /**
         * Decodes a RestoreBackupResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns RestoreBackupResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.RestoreBackupResponse;

        /**
         * Verifies a RestoreBackupResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a RestoreBackupResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns RestoreBackupResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.RestoreBackupResponse;

        /**
         * Creates a plain object from a RestoreBackupResponse message. Also converts values to other types if specified.
         * @param message RestoreBackupResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.RestoreBackupResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this RestoreBackupResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for RestoreBackupResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChannelBackupSubscription. */
    interface IChannelBackupSubscription {}

    /** Represents a ChannelBackupSubscription. */
    class ChannelBackupSubscription implements IChannelBackupSubscription {
        /**
         * Constructs a new ChannelBackupSubscription.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelBackupSubscription);

        /**
         * Creates a new ChannelBackupSubscription instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelBackupSubscription instance
         */
        public static create(
            properties?: lnrpc.IChannelBackupSubscription
        ): lnrpc.ChannelBackupSubscription;

        /**
         * Encodes the specified ChannelBackupSubscription message. Does not implicitly {@link lnrpc.ChannelBackupSubscription.verify|verify} messages.
         * @param message ChannelBackupSubscription message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelBackupSubscription,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelBackupSubscription message, length delimited. Does not implicitly {@link lnrpc.ChannelBackupSubscription.verify|verify} messages.
         * @param message ChannelBackupSubscription message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelBackupSubscription,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelBackupSubscription message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelBackupSubscription
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelBackupSubscription;

        /**
         * Decodes a ChannelBackupSubscription message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelBackupSubscription
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelBackupSubscription;

        /**
         * Verifies a ChannelBackupSubscription message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelBackupSubscription message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelBackupSubscription
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelBackupSubscription;

        /**
         * Creates a plain object from a ChannelBackupSubscription message. Also converts values to other types if specified.
         * @param message ChannelBackupSubscription
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelBackupSubscription,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelBackupSubscription to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelBackupSubscription
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a VerifyChanBackupResponse. */
    interface IVerifyChanBackupResponse {}

    /** Represents a VerifyChanBackupResponse. */
    class VerifyChanBackupResponse implements IVerifyChanBackupResponse {
        /**
         * Constructs a new VerifyChanBackupResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IVerifyChanBackupResponse);

        /**
         * Creates a new VerifyChanBackupResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns VerifyChanBackupResponse instance
         */
        public static create(
            properties?: lnrpc.IVerifyChanBackupResponse
        ): lnrpc.VerifyChanBackupResponse;

        /**
         * Encodes the specified VerifyChanBackupResponse message. Does not implicitly {@link lnrpc.VerifyChanBackupResponse.verify|verify} messages.
         * @param message VerifyChanBackupResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IVerifyChanBackupResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified VerifyChanBackupResponse message, length delimited. Does not implicitly {@link lnrpc.VerifyChanBackupResponse.verify|verify} messages.
         * @param message VerifyChanBackupResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IVerifyChanBackupResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a VerifyChanBackupResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns VerifyChanBackupResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.VerifyChanBackupResponse;

        /**
         * Decodes a VerifyChanBackupResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns VerifyChanBackupResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.VerifyChanBackupResponse;

        /**
         * Verifies a VerifyChanBackupResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a VerifyChanBackupResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns VerifyChanBackupResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.VerifyChanBackupResponse;

        /**
         * Creates a plain object from a VerifyChanBackupResponse message. Also converts values to other types if specified.
         * @param message VerifyChanBackupResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.VerifyChanBackupResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this VerifyChanBackupResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for VerifyChanBackupResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MacaroonPermission. */
    interface IMacaroonPermission {
        /** MacaroonPermission entity */
        entity?: string | null;

        /** MacaroonPermission action */
        action?: string | null;
    }

    /** Represents a MacaroonPermission. */
    class MacaroonPermission implements IMacaroonPermission {
        /**
         * Constructs a new MacaroonPermission.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IMacaroonPermission);

        /** MacaroonPermission entity. */
        public entity: string;

        /** MacaroonPermission action. */
        public action: string;

        /**
         * Creates a new MacaroonPermission instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MacaroonPermission instance
         */
        public static create(
            properties?: lnrpc.IMacaroonPermission
        ): lnrpc.MacaroonPermission;

        /**
         * Encodes the specified MacaroonPermission message. Does not implicitly {@link lnrpc.MacaroonPermission.verify|verify} messages.
         * @param message MacaroonPermission message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IMacaroonPermission,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MacaroonPermission message, length delimited. Does not implicitly {@link lnrpc.MacaroonPermission.verify|verify} messages.
         * @param message MacaroonPermission message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IMacaroonPermission,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MacaroonPermission message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MacaroonPermission
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.MacaroonPermission;

        /**
         * Decodes a MacaroonPermission message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MacaroonPermission
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.MacaroonPermission;

        /**
         * Verifies a MacaroonPermission message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MacaroonPermission message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MacaroonPermission
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.MacaroonPermission;

        /**
         * Creates a plain object from a MacaroonPermission message. Also converts values to other types if specified.
         * @param message MacaroonPermission
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.MacaroonPermission,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MacaroonPermission to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MacaroonPermission
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a BakeMacaroonRequest. */
    interface IBakeMacaroonRequest {
        /** BakeMacaroonRequest permissions */
        permissions?: lnrpc.IMacaroonPermission[] | null;

        /** BakeMacaroonRequest root_key_id */
        root_key_id?: Long | null;

        /** BakeMacaroonRequest allow_external_permissions */
        allow_external_permissions?: boolean | null;
    }

    /** Represents a BakeMacaroonRequest. */
    class BakeMacaroonRequest implements IBakeMacaroonRequest {
        /**
         * Constructs a new BakeMacaroonRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IBakeMacaroonRequest);

        /** BakeMacaroonRequest permissions. */
        public permissions: lnrpc.IMacaroonPermission[];

        /** BakeMacaroonRequest root_key_id. */
        public root_key_id: Long;

        /** BakeMacaroonRequest allow_external_permissions. */
        public allow_external_permissions: boolean;

        /**
         * Creates a new BakeMacaroonRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BakeMacaroonRequest instance
         */
        public static create(
            properties?: lnrpc.IBakeMacaroonRequest
        ): lnrpc.BakeMacaroonRequest;

        /**
         * Encodes the specified BakeMacaroonRequest message. Does not implicitly {@link lnrpc.BakeMacaroonRequest.verify|verify} messages.
         * @param message BakeMacaroonRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IBakeMacaroonRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BakeMacaroonRequest message, length delimited. Does not implicitly {@link lnrpc.BakeMacaroonRequest.verify|verify} messages.
         * @param message BakeMacaroonRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IBakeMacaroonRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BakeMacaroonRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BakeMacaroonRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.BakeMacaroonRequest;

        /**
         * Decodes a BakeMacaroonRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BakeMacaroonRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.BakeMacaroonRequest;

        /**
         * Verifies a BakeMacaroonRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BakeMacaroonRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BakeMacaroonRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.BakeMacaroonRequest;

        /**
         * Creates a plain object from a BakeMacaroonRequest message. Also converts values to other types if specified.
         * @param message BakeMacaroonRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.BakeMacaroonRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BakeMacaroonRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BakeMacaroonRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a BakeMacaroonResponse. */
    interface IBakeMacaroonResponse {
        /** BakeMacaroonResponse macaroon */
        macaroon?: string | null;
    }

    /** Represents a BakeMacaroonResponse. */
    class BakeMacaroonResponse implements IBakeMacaroonResponse {
        /**
         * Constructs a new BakeMacaroonResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IBakeMacaroonResponse);

        /** BakeMacaroonResponse macaroon. */
        public macaroon: string;

        /**
         * Creates a new BakeMacaroonResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BakeMacaroonResponse instance
         */
        public static create(
            properties?: lnrpc.IBakeMacaroonResponse
        ): lnrpc.BakeMacaroonResponse;

        /**
         * Encodes the specified BakeMacaroonResponse message. Does not implicitly {@link lnrpc.BakeMacaroonResponse.verify|verify} messages.
         * @param message BakeMacaroonResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IBakeMacaroonResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BakeMacaroonResponse message, length delimited. Does not implicitly {@link lnrpc.BakeMacaroonResponse.verify|verify} messages.
         * @param message BakeMacaroonResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IBakeMacaroonResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BakeMacaroonResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BakeMacaroonResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.BakeMacaroonResponse;

        /**
         * Decodes a BakeMacaroonResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BakeMacaroonResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.BakeMacaroonResponse;

        /**
         * Verifies a BakeMacaroonResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BakeMacaroonResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BakeMacaroonResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.BakeMacaroonResponse;

        /**
         * Creates a plain object from a BakeMacaroonResponse message. Also converts values to other types if specified.
         * @param message BakeMacaroonResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.BakeMacaroonResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BakeMacaroonResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BakeMacaroonResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListMacaroonIDsRequest. */
    interface IListMacaroonIDsRequest {}

    /** Represents a ListMacaroonIDsRequest. */
    class ListMacaroonIDsRequest implements IListMacaroonIDsRequest {
        /**
         * Constructs a new ListMacaroonIDsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IListMacaroonIDsRequest);

        /**
         * Creates a new ListMacaroonIDsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListMacaroonIDsRequest instance
         */
        public static create(
            properties?: lnrpc.IListMacaroonIDsRequest
        ): lnrpc.ListMacaroonIDsRequest;

        /**
         * Encodes the specified ListMacaroonIDsRequest message. Does not implicitly {@link lnrpc.ListMacaroonIDsRequest.verify|verify} messages.
         * @param message ListMacaroonIDsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IListMacaroonIDsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListMacaroonIDsRequest message, length delimited. Does not implicitly {@link lnrpc.ListMacaroonIDsRequest.verify|verify} messages.
         * @param message ListMacaroonIDsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IListMacaroonIDsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListMacaroonIDsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListMacaroonIDsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ListMacaroonIDsRequest;

        /**
         * Decodes a ListMacaroonIDsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListMacaroonIDsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ListMacaroonIDsRequest;

        /**
         * Verifies a ListMacaroonIDsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListMacaroonIDsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListMacaroonIDsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ListMacaroonIDsRequest;

        /**
         * Creates a plain object from a ListMacaroonIDsRequest message. Also converts values to other types if specified.
         * @param message ListMacaroonIDsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ListMacaroonIDsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListMacaroonIDsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListMacaroonIDsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListMacaroonIDsResponse. */
    interface IListMacaroonIDsResponse {
        /** ListMacaroonIDsResponse root_key_ids */
        root_key_ids?: Long[] | null;
    }

    /** Represents a ListMacaroonIDsResponse. */
    class ListMacaroonIDsResponse implements IListMacaroonIDsResponse {
        /**
         * Constructs a new ListMacaroonIDsResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IListMacaroonIDsResponse);

        /** ListMacaroonIDsResponse root_key_ids. */
        public root_key_ids: Long[];

        /**
         * Creates a new ListMacaroonIDsResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListMacaroonIDsResponse instance
         */
        public static create(
            properties?: lnrpc.IListMacaroonIDsResponse
        ): lnrpc.ListMacaroonIDsResponse;

        /**
         * Encodes the specified ListMacaroonIDsResponse message. Does not implicitly {@link lnrpc.ListMacaroonIDsResponse.verify|verify} messages.
         * @param message ListMacaroonIDsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IListMacaroonIDsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListMacaroonIDsResponse message, length delimited. Does not implicitly {@link lnrpc.ListMacaroonIDsResponse.verify|verify} messages.
         * @param message ListMacaroonIDsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IListMacaroonIDsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListMacaroonIDsResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListMacaroonIDsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ListMacaroonIDsResponse;

        /**
         * Decodes a ListMacaroonIDsResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListMacaroonIDsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ListMacaroonIDsResponse;

        /**
         * Verifies a ListMacaroonIDsResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListMacaroonIDsResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListMacaroonIDsResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ListMacaroonIDsResponse;

        /**
         * Creates a plain object from a ListMacaroonIDsResponse message. Also converts values to other types if specified.
         * @param message ListMacaroonIDsResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ListMacaroonIDsResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListMacaroonIDsResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListMacaroonIDsResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a DeleteMacaroonIDRequest. */
    interface IDeleteMacaroonIDRequest {
        /** DeleteMacaroonIDRequest root_key_id */
        root_key_id?: Long | null;
    }

    /** Represents a DeleteMacaroonIDRequest. */
    class DeleteMacaroonIDRequest implements IDeleteMacaroonIDRequest {
        /**
         * Constructs a new DeleteMacaroonIDRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IDeleteMacaroonIDRequest);

        /** DeleteMacaroonIDRequest root_key_id. */
        public root_key_id: Long;

        /**
         * Creates a new DeleteMacaroonIDRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DeleteMacaroonIDRequest instance
         */
        public static create(
            properties?: lnrpc.IDeleteMacaroonIDRequest
        ): lnrpc.DeleteMacaroonIDRequest;

        /**
         * Encodes the specified DeleteMacaroonIDRequest message. Does not implicitly {@link lnrpc.DeleteMacaroonIDRequest.verify|verify} messages.
         * @param message DeleteMacaroonIDRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IDeleteMacaroonIDRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified DeleteMacaroonIDRequest message, length delimited. Does not implicitly {@link lnrpc.DeleteMacaroonIDRequest.verify|verify} messages.
         * @param message DeleteMacaroonIDRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IDeleteMacaroonIDRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a DeleteMacaroonIDRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DeleteMacaroonIDRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.DeleteMacaroonIDRequest;

        /**
         * Decodes a DeleteMacaroonIDRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DeleteMacaroonIDRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.DeleteMacaroonIDRequest;

        /**
         * Verifies a DeleteMacaroonIDRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a DeleteMacaroonIDRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DeleteMacaroonIDRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.DeleteMacaroonIDRequest;

        /**
         * Creates a plain object from a DeleteMacaroonIDRequest message. Also converts values to other types if specified.
         * @param message DeleteMacaroonIDRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.DeleteMacaroonIDRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this DeleteMacaroonIDRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DeleteMacaroonIDRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a DeleteMacaroonIDResponse. */
    interface IDeleteMacaroonIDResponse {
        /** DeleteMacaroonIDResponse deleted */
        deleted?: boolean | null;
    }

    /** Represents a DeleteMacaroonIDResponse. */
    class DeleteMacaroonIDResponse implements IDeleteMacaroonIDResponse {
        /**
         * Constructs a new DeleteMacaroonIDResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IDeleteMacaroonIDResponse);

        /** DeleteMacaroonIDResponse deleted. */
        public deleted: boolean;

        /**
         * Creates a new DeleteMacaroonIDResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DeleteMacaroonIDResponse instance
         */
        public static create(
            properties?: lnrpc.IDeleteMacaroonIDResponse
        ): lnrpc.DeleteMacaroonIDResponse;

        /**
         * Encodes the specified DeleteMacaroonIDResponse message. Does not implicitly {@link lnrpc.DeleteMacaroonIDResponse.verify|verify} messages.
         * @param message DeleteMacaroonIDResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IDeleteMacaroonIDResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified DeleteMacaroonIDResponse message, length delimited. Does not implicitly {@link lnrpc.DeleteMacaroonIDResponse.verify|verify} messages.
         * @param message DeleteMacaroonIDResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IDeleteMacaroonIDResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a DeleteMacaroonIDResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DeleteMacaroonIDResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.DeleteMacaroonIDResponse;

        /**
         * Decodes a DeleteMacaroonIDResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DeleteMacaroonIDResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.DeleteMacaroonIDResponse;

        /**
         * Verifies a DeleteMacaroonIDResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a DeleteMacaroonIDResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DeleteMacaroonIDResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.DeleteMacaroonIDResponse;

        /**
         * Creates a plain object from a DeleteMacaroonIDResponse message. Also converts values to other types if specified.
         * @param message DeleteMacaroonIDResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.DeleteMacaroonIDResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this DeleteMacaroonIDResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DeleteMacaroonIDResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MacaroonPermissionList. */
    interface IMacaroonPermissionList {
        /** MacaroonPermissionList permissions */
        permissions?: lnrpc.IMacaroonPermission[] | null;
    }

    /** Represents a MacaroonPermissionList. */
    class MacaroonPermissionList implements IMacaroonPermissionList {
        /**
         * Constructs a new MacaroonPermissionList.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IMacaroonPermissionList);

        /** MacaroonPermissionList permissions. */
        public permissions: lnrpc.IMacaroonPermission[];

        /**
         * Creates a new MacaroonPermissionList instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MacaroonPermissionList instance
         */
        public static create(
            properties?: lnrpc.IMacaroonPermissionList
        ): lnrpc.MacaroonPermissionList;

        /**
         * Encodes the specified MacaroonPermissionList message. Does not implicitly {@link lnrpc.MacaroonPermissionList.verify|verify} messages.
         * @param message MacaroonPermissionList message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IMacaroonPermissionList,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MacaroonPermissionList message, length delimited. Does not implicitly {@link lnrpc.MacaroonPermissionList.verify|verify} messages.
         * @param message MacaroonPermissionList message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IMacaroonPermissionList,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MacaroonPermissionList message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MacaroonPermissionList
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.MacaroonPermissionList;

        /**
         * Decodes a MacaroonPermissionList message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MacaroonPermissionList
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.MacaroonPermissionList;

        /**
         * Verifies a MacaroonPermissionList message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MacaroonPermissionList message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MacaroonPermissionList
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.MacaroonPermissionList;

        /**
         * Creates a plain object from a MacaroonPermissionList message. Also converts values to other types if specified.
         * @param message MacaroonPermissionList
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.MacaroonPermissionList,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MacaroonPermissionList to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MacaroonPermissionList
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListPermissionsRequest. */
    interface IListPermissionsRequest {}

    /** Represents a ListPermissionsRequest. */
    class ListPermissionsRequest implements IListPermissionsRequest {
        /**
         * Constructs a new ListPermissionsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IListPermissionsRequest);

        /**
         * Creates a new ListPermissionsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListPermissionsRequest instance
         */
        public static create(
            properties?: lnrpc.IListPermissionsRequest
        ): lnrpc.ListPermissionsRequest;

        /**
         * Encodes the specified ListPermissionsRequest message. Does not implicitly {@link lnrpc.ListPermissionsRequest.verify|verify} messages.
         * @param message ListPermissionsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IListPermissionsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListPermissionsRequest message, length delimited. Does not implicitly {@link lnrpc.ListPermissionsRequest.verify|verify} messages.
         * @param message ListPermissionsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IListPermissionsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListPermissionsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListPermissionsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ListPermissionsRequest;

        /**
         * Decodes a ListPermissionsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListPermissionsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ListPermissionsRequest;

        /**
         * Verifies a ListPermissionsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListPermissionsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListPermissionsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ListPermissionsRequest;

        /**
         * Creates a plain object from a ListPermissionsRequest message. Also converts values to other types if specified.
         * @param message ListPermissionsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ListPermissionsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListPermissionsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListPermissionsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListPermissionsResponse. */
    interface IListPermissionsResponse {
        /** ListPermissionsResponse method_permissions */
        method_permissions?: {
            [k: string]: lnrpc.IMacaroonPermissionList;
        } | null;
    }

    /** Represents a ListPermissionsResponse. */
    class ListPermissionsResponse implements IListPermissionsResponse {
        /**
         * Constructs a new ListPermissionsResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IListPermissionsResponse);

        /** ListPermissionsResponse method_permissions. */
        public method_permissions: {
            [k: string]: lnrpc.IMacaroonPermissionList;
        };

        /**
         * Creates a new ListPermissionsResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListPermissionsResponse instance
         */
        public static create(
            properties?: lnrpc.IListPermissionsResponse
        ): lnrpc.ListPermissionsResponse;

        /**
         * Encodes the specified ListPermissionsResponse message. Does not implicitly {@link lnrpc.ListPermissionsResponse.verify|verify} messages.
         * @param message ListPermissionsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IListPermissionsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListPermissionsResponse message, length delimited. Does not implicitly {@link lnrpc.ListPermissionsResponse.verify|verify} messages.
         * @param message ListPermissionsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IListPermissionsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListPermissionsResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListPermissionsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ListPermissionsResponse;

        /**
         * Decodes a ListPermissionsResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListPermissionsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ListPermissionsResponse;

        /**
         * Verifies a ListPermissionsResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListPermissionsResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListPermissionsResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ListPermissionsResponse;

        /**
         * Creates a plain object from a ListPermissionsResponse message. Also converts values to other types if specified.
         * @param message ListPermissionsResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ListPermissionsResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListPermissionsResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListPermissionsResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a Failure. */
    interface IFailure {
        /** Failure code */
        code?: lnrpc.Failure.FailureCode | null;

        /** Failure channel_update */
        channel_update?: lnrpc.IChannelUpdate | null;

        /** Failure htlc_msat */
        htlc_msat?: Long | null;

        /** Failure onion_sha_256 */
        onion_sha_256?: Uint8Array | null;

        /** Failure cltv_expiry */
        cltv_expiry?: number | null;

        /** Failure flags */
        flags?: number | null;

        /** Failure failure_source_index */
        failure_source_index?: number | null;

        /** Failure height */
        height?: number | null;
    }

    /** Represents a Failure. */
    class Failure implements IFailure {
        /**
         * Constructs a new Failure.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IFailure);

        /** Failure code. */
        public code: lnrpc.Failure.FailureCode;

        /** Failure channel_update. */
        public channel_update?: lnrpc.IChannelUpdate | null;

        /** Failure htlc_msat. */
        public htlc_msat: Long;

        /** Failure onion_sha_256. */
        public onion_sha_256: Uint8Array;

        /** Failure cltv_expiry. */
        public cltv_expiry: number;

        /** Failure flags. */
        public flags: number;

        /** Failure failure_source_index. */
        public failure_source_index: number;

        /** Failure height. */
        public height: number;

        /**
         * Creates a new Failure instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Failure instance
         */
        public static create(properties?: lnrpc.IFailure): lnrpc.Failure;

        /**
         * Encodes the specified Failure message. Does not implicitly {@link lnrpc.Failure.verify|verify} messages.
         * @param message Failure message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IFailure,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Failure message, length delimited. Does not implicitly {@link lnrpc.Failure.verify|verify} messages.
         * @param message Failure message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IFailure,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a Failure message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Failure
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.Failure;

        /**
         * Decodes a Failure message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Failure
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.Failure;

        /**
         * Verifies a Failure message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a Failure message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Failure
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.Failure;

        /**
         * Creates a plain object from a Failure message. Also converts values to other types if specified.
         * @param message Failure
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.Failure,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Failure to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Failure
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace Failure {
        /** FailureCode enum. */
        enum FailureCode {
            RESERVED = 0,
            INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS = 1,
            INCORRECT_PAYMENT_AMOUNT = 2,
            FINAL_INCORRECT_CLTV_EXPIRY = 3,
            FINAL_INCORRECT_HTLC_AMOUNT = 4,
            FINAL_EXPIRY_TOO_SOON = 5,
            INVALID_REALM = 6,
            EXPIRY_TOO_SOON = 7,
            INVALID_ONION_VERSION = 8,
            INVALID_ONION_HMAC = 9,
            INVALID_ONION_KEY = 10,
            AMOUNT_BELOW_MINIMUM = 11,
            FEE_INSUFFICIENT = 12,
            INCORRECT_CLTV_EXPIRY = 13,
            CHANNEL_DISABLED = 14,
            TEMPORARY_CHANNEL_FAILURE = 15,
            REQUIRED_NODE_FEATURE_MISSING = 16,
            REQUIRED_CHANNEL_FEATURE_MISSING = 17,
            UNKNOWN_NEXT_PEER = 18,
            TEMPORARY_NODE_FAILURE = 19,
            PERMANENT_NODE_FAILURE = 20,
            PERMANENT_CHANNEL_FAILURE = 21,
            EXPIRY_TOO_FAR = 22,
            MPP_TIMEOUT = 23,
            INVALID_ONION_PAYLOAD = 24,
            INVALID_ONION_BLINDING = 25,
            INTERNAL_FAILURE = 997,
            UNKNOWN_FAILURE = 998,
            UNREADABLE_FAILURE = 999
        }
    }

    /** Properties of a ChannelUpdate. */
    interface IChannelUpdate {
        /** ChannelUpdate signature */
        signature?: Uint8Array | null;

        /** ChannelUpdate chain_hash */
        chain_hash?: Uint8Array | null;

        /** ChannelUpdate chan_id */
        chan_id?: Long | null;

        /** ChannelUpdate timestamp */
        timestamp?: number | null;

        /** ChannelUpdate message_flags */
        message_flags?: number | null;

        /** ChannelUpdate channel_flags */
        channel_flags?: number | null;

        /** ChannelUpdate time_lock_delta */
        time_lock_delta?: number | null;

        /** ChannelUpdate htlc_minimum_msat */
        htlc_minimum_msat?: Long | null;

        /** ChannelUpdate base_fee */
        base_fee?: number | null;

        /** ChannelUpdate fee_rate */
        fee_rate?: number | null;

        /** ChannelUpdate htlc_maximum_msat */
        htlc_maximum_msat?: Long | null;

        /** ChannelUpdate extra_opaque_data */
        extra_opaque_data?: Uint8Array | null;
    }

    /** Represents a ChannelUpdate. */
    class ChannelUpdate implements IChannelUpdate {
        /**
         * Constructs a new ChannelUpdate.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChannelUpdate);

        /** ChannelUpdate signature. */
        public signature: Uint8Array;

        /** ChannelUpdate chain_hash. */
        public chain_hash: Uint8Array;

        /** ChannelUpdate chan_id. */
        public chan_id: Long;

        /** ChannelUpdate timestamp. */
        public timestamp: number;

        /** ChannelUpdate message_flags. */
        public message_flags: number;

        /** ChannelUpdate channel_flags. */
        public channel_flags: number;

        /** ChannelUpdate time_lock_delta. */
        public time_lock_delta: number;

        /** ChannelUpdate htlc_minimum_msat. */
        public htlc_minimum_msat: Long;

        /** ChannelUpdate base_fee. */
        public base_fee: number;

        /** ChannelUpdate fee_rate. */
        public fee_rate: number;

        /** ChannelUpdate htlc_maximum_msat. */
        public htlc_maximum_msat: Long;

        /** ChannelUpdate extra_opaque_data. */
        public extra_opaque_data: Uint8Array;

        /**
         * Creates a new ChannelUpdate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChannelUpdate instance
         */
        public static create(
            properties?: lnrpc.IChannelUpdate
        ): lnrpc.ChannelUpdate;

        /**
         * Encodes the specified ChannelUpdate message. Does not implicitly {@link lnrpc.ChannelUpdate.verify|verify} messages.
         * @param message ChannelUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChannelUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChannelUpdate message, length delimited. Does not implicitly {@link lnrpc.ChannelUpdate.verify|verify} messages.
         * @param message ChannelUpdate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChannelUpdate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChannelUpdate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChannelUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChannelUpdate;

        /**
         * Decodes a ChannelUpdate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChannelUpdate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChannelUpdate;

        /**
         * Verifies a ChannelUpdate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChannelUpdate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChannelUpdate
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChannelUpdate;

        /**
         * Creates a plain object from a ChannelUpdate message. Also converts values to other types if specified.
         * @param message ChannelUpdate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChannelUpdate,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChannelUpdate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChannelUpdate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MacaroonId. */
    interface IMacaroonId {
        /** MacaroonId nonce */
        nonce?: Uint8Array | null;

        /** MacaroonId storageId */
        storageId?: Uint8Array | null;

        /** MacaroonId ops */
        ops?: lnrpc.IOp[] | null;
    }

    /** Represents a MacaroonId. */
    class MacaroonId implements IMacaroonId {
        /**
         * Constructs a new MacaroonId.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IMacaroonId);

        /** MacaroonId nonce. */
        public nonce: Uint8Array;

        /** MacaroonId storageId. */
        public storageId: Uint8Array;

        /** MacaroonId ops. */
        public ops: lnrpc.IOp[];

        /**
         * Creates a new MacaroonId instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MacaroonId instance
         */
        public static create(properties?: lnrpc.IMacaroonId): lnrpc.MacaroonId;

        /**
         * Encodes the specified MacaroonId message. Does not implicitly {@link lnrpc.MacaroonId.verify|verify} messages.
         * @param message MacaroonId message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IMacaroonId,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MacaroonId message, length delimited. Does not implicitly {@link lnrpc.MacaroonId.verify|verify} messages.
         * @param message MacaroonId message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IMacaroonId,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MacaroonId message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MacaroonId
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.MacaroonId;

        /**
         * Decodes a MacaroonId message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MacaroonId
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.MacaroonId;

        /**
         * Verifies a MacaroonId message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MacaroonId message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MacaroonId
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.MacaroonId;

        /**
         * Creates a plain object from a MacaroonId message. Also converts values to other types if specified.
         * @param message MacaroonId
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.MacaroonId,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MacaroonId to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MacaroonId
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an Op. */
    interface IOp {
        /** Op entity */
        entity?: string | null;

        /** Op actions */
        actions?: string[] | null;
    }

    /** Represents an Op. */
    class Op implements IOp {
        /**
         * Constructs a new Op.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IOp);

        /** Op entity. */
        public entity: string;

        /** Op actions. */
        public actions: string[];

        /**
         * Creates a new Op instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Op instance
         */
        public static create(properties?: lnrpc.IOp): lnrpc.Op;

        /**
         * Encodes the specified Op message. Does not implicitly {@link lnrpc.Op.verify|verify} messages.
         * @param message Op message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IOp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Op message, length delimited. Does not implicitly {@link lnrpc.Op.verify|verify} messages.
         * @param message Op message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IOp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an Op message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Op
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.Op;

        /**
         * Decodes an Op message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Op
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.Op;

        /**
         * Verifies an Op message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an Op message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Op
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.Op;

        /**
         * Creates a plain object from an Op message. Also converts values to other types if specified.
         * @param message Op
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.Op,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Op to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Op
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a CheckMacPermRequest. */
    interface ICheckMacPermRequest {
        /** CheckMacPermRequest macaroon */
        macaroon?: Uint8Array | null;

        /** CheckMacPermRequest permissions */
        permissions?: lnrpc.IMacaroonPermission[] | null;

        /** CheckMacPermRequest fullMethod */
        fullMethod?: string | null;
    }

    /** Represents a CheckMacPermRequest. */
    class CheckMacPermRequest implements ICheckMacPermRequest {
        /**
         * Constructs a new CheckMacPermRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ICheckMacPermRequest);

        /** CheckMacPermRequest macaroon. */
        public macaroon: Uint8Array;

        /** CheckMacPermRequest permissions. */
        public permissions: lnrpc.IMacaroonPermission[];

        /** CheckMacPermRequest fullMethod. */
        public fullMethod: string;

        /**
         * Creates a new CheckMacPermRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns CheckMacPermRequest instance
         */
        public static create(
            properties?: lnrpc.ICheckMacPermRequest
        ): lnrpc.CheckMacPermRequest;

        /**
         * Encodes the specified CheckMacPermRequest message. Does not implicitly {@link lnrpc.CheckMacPermRequest.verify|verify} messages.
         * @param message CheckMacPermRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ICheckMacPermRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified CheckMacPermRequest message, length delimited. Does not implicitly {@link lnrpc.CheckMacPermRequest.verify|verify} messages.
         * @param message CheckMacPermRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ICheckMacPermRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a CheckMacPermRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns CheckMacPermRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.CheckMacPermRequest;

        /**
         * Decodes a CheckMacPermRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns CheckMacPermRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.CheckMacPermRequest;

        /**
         * Verifies a CheckMacPermRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a CheckMacPermRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns CheckMacPermRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.CheckMacPermRequest;

        /**
         * Creates a plain object from a CheckMacPermRequest message. Also converts values to other types if specified.
         * @param message CheckMacPermRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.CheckMacPermRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this CheckMacPermRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for CheckMacPermRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a CheckMacPermResponse. */
    interface ICheckMacPermResponse {
        /** CheckMacPermResponse valid */
        valid?: boolean | null;
    }

    /** Represents a CheckMacPermResponse. */
    class CheckMacPermResponse implements ICheckMacPermResponse {
        /**
         * Constructs a new CheckMacPermResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ICheckMacPermResponse);

        /** CheckMacPermResponse valid. */
        public valid: boolean;

        /**
         * Creates a new CheckMacPermResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns CheckMacPermResponse instance
         */
        public static create(
            properties?: lnrpc.ICheckMacPermResponse
        ): lnrpc.CheckMacPermResponse;

        /**
         * Encodes the specified CheckMacPermResponse message. Does not implicitly {@link lnrpc.CheckMacPermResponse.verify|verify} messages.
         * @param message CheckMacPermResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ICheckMacPermResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified CheckMacPermResponse message, length delimited. Does not implicitly {@link lnrpc.CheckMacPermResponse.verify|verify} messages.
         * @param message CheckMacPermResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ICheckMacPermResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a CheckMacPermResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns CheckMacPermResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.CheckMacPermResponse;

        /**
         * Decodes a CheckMacPermResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns CheckMacPermResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.CheckMacPermResponse;

        /**
         * Verifies a CheckMacPermResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a CheckMacPermResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns CheckMacPermResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.CheckMacPermResponse;

        /**
         * Creates a plain object from a CheckMacPermResponse message. Also converts values to other types if specified.
         * @param message CheckMacPermResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.CheckMacPermResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this CheckMacPermResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for CheckMacPermResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a RPCMiddlewareRequest. */
    interface IRPCMiddlewareRequest {
        /** RPCMiddlewareRequest request_id */
        request_id?: Long | null;

        /** RPCMiddlewareRequest raw_macaroon */
        raw_macaroon?: Uint8Array | null;

        /** RPCMiddlewareRequest custom_caveat_condition */
        custom_caveat_condition?: string | null;

        /** RPCMiddlewareRequest stream_auth */
        stream_auth?: lnrpc.IStreamAuth | null;

        /** RPCMiddlewareRequest request */
        request?: lnrpc.IRPCMessage | null;

        /** RPCMiddlewareRequest response */
        response?: lnrpc.IRPCMessage | null;

        /** RPCMiddlewareRequest reg_complete */
        reg_complete?: boolean | null;

        /** RPCMiddlewareRequest msg_id */
        msg_id?: Long | null;
    }

    /** Represents a RPCMiddlewareRequest. */
    class RPCMiddlewareRequest implements IRPCMiddlewareRequest {
        /**
         * Constructs a new RPCMiddlewareRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IRPCMiddlewareRequest);

        /** RPCMiddlewareRequest request_id. */
        public request_id: Long;

        /** RPCMiddlewareRequest raw_macaroon. */
        public raw_macaroon: Uint8Array;

        /** RPCMiddlewareRequest custom_caveat_condition. */
        public custom_caveat_condition: string;

        /** RPCMiddlewareRequest stream_auth. */
        public stream_auth?: lnrpc.IStreamAuth | null;

        /** RPCMiddlewareRequest request. */
        public request?: lnrpc.IRPCMessage | null;

        /** RPCMiddlewareRequest response. */
        public response?: lnrpc.IRPCMessage | null;

        /** RPCMiddlewareRequest reg_complete. */
        public reg_complete?: boolean | null;

        /** RPCMiddlewareRequest msg_id. */
        public msg_id: Long;

        /** RPCMiddlewareRequest intercept_type. */
        public intercept_type?:
            | 'stream_auth'
            | 'request'
            | 'response'
            | 'reg_complete';

        /**
         * Creates a new RPCMiddlewareRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns RPCMiddlewareRequest instance
         */
        public static create(
            properties?: lnrpc.IRPCMiddlewareRequest
        ): lnrpc.RPCMiddlewareRequest;

        /**
         * Encodes the specified RPCMiddlewareRequest message. Does not implicitly {@link lnrpc.RPCMiddlewareRequest.verify|verify} messages.
         * @param message RPCMiddlewareRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IRPCMiddlewareRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified RPCMiddlewareRequest message, length delimited. Does not implicitly {@link lnrpc.RPCMiddlewareRequest.verify|verify} messages.
         * @param message RPCMiddlewareRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IRPCMiddlewareRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a RPCMiddlewareRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns RPCMiddlewareRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.RPCMiddlewareRequest;

        /**
         * Decodes a RPCMiddlewareRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns RPCMiddlewareRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.RPCMiddlewareRequest;

        /**
         * Verifies a RPCMiddlewareRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a RPCMiddlewareRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns RPCMiddlewareRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.RPCMiddlewareRequest;

        /**
         * Creates a plain object from a RPCMiddlewareRequest message. Also converts values to other types if specified.
         * @param message RPCMiddlewareRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.RPCMiddlewareRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this RPCMiddlewareRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for RPCMiddlewareRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a StreamAuth. */
    interface IStreamAuth {
        /** StreamAuth method_full_uri */
        method_full_uri?: string | null;
    }

    /** Represents a StreamAuth. */
    class StreamAuth implements IStreamAuth {
        /**
         * Constructs a new StreamAuth.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IStreamAuth);

        /** StreamAuth method_full_uri. */
        public method_full_uri: string;

        /**
         * Creates a new StreamAuth instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StreamAuth instance
         */
        public static create(properties?: lnrpc.IStreamAuth): lnrpc.StreamAuth;

        /**
         * Encodes the specified StreamAuth message. Does not implicitly {@link lnrpc.StreamAuth.verify|verify} messages.
         * @param message StreamAuth message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IStreamAuth,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified StreamAuth message, length delimited. Does not implicitly {@link lnrpc.StreamAuth.verify|verify} messages.
         * @param message StreamAuth message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IStreamAuth,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a StreamAuth message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StreamAuth
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.StreamAuth;

        /**
         * Decodes a StreamAuth message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StreamAuth
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.StreamAuth;

        /**
         * Verifies a StreamAuth message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a StreamAuth message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StreamAuth
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.StreamAuth;

        /**
         * Creates a plain object from a StreamAuth message. Also converts values to other types if specified.
         * @param message StreamAuth
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.StreamAuth,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this StreamAuth to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StreamAuth
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a RPCMessage. */
    interface IRPCMessage {
        /** RPCMessage method_full_uri */
        method_full_uri?: string | null;

        /** RPCMessage stream_rpc */
        stream_rpc?: boolean | null;

        /** RPCMessage type_name */
        type_name?: string | null;

        /** RPCMessage serialized */
        serialized?: Uint8Array | null;

        /** RPCMessage is_error */
        is_error?: boolean | null;
    }

    /** Represents a RPCMessage. */
    class RPCMessage implements IRPCMessage {
        /**
         * Constructs a new RPCMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IRPCMessage);

        /** RPCMessage method_full_uri. */
        public method_full_uri: string;

        /** RPCMessage stream_rpc. */
        public stream_rpc: boolean;

        /** RPCMessage type_name. */
        public type_name: string;

        /** RPCMessage serialized. */
        public serialized: Uint8Array;

        /** RPCMessage is_error. */
        public is_error: boolean;

        /**
         * Creates a new RPCMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns RPCMessage instance
         */
        public static create(properties?: lnrpc.IRPCMessage): lnrpc.RPCMessage;

        /**
         * Encodes the specified RPCMessage message. Does not implicitly {@link lnrpc.RPCMessage.verify|verify} messages.
         * @param message RPCMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IRPCMessage,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified RPCMessage message, length delimited. Does not implicitly {@link lnrpc.RPCMessage.verify|verify} messages.
         * @param message RPCMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IRPCMessage,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a RPCMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns RPCMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.RPCMessage;

        /**
         * Decodes a RPCMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns RPCMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.RPCMessage;

        /**
         * Verifies a RPCMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a RPCMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns RPCMessage
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.RPCMessage;

        /**
         * Creates a plain object from a RPCMessage message. Also converts values to other types if specified.
         * @param message RPCMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.RPCMessage,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this RPCMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for RPCMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a RPCMiddlewareResponse. */
    interface IRPCMiddlewareResponse {
        /** RPCMiddlewareResponse ref_msg_id */
        ref_msg_id?: Long | null;

        /** RPCMiddlewareResponse register */
        register?: lnrpc.IMiddlewareRegistration | null;

        /** RPCMiddlewareResponse feedback */
        feedback?: lnrpc.IInterceptFeedback | null;
    }

    /** Represents a RPCMiddlewareResponse. */
    class RPCMiddlewareResponse implements IRPCMiddlewareResponse {
        /**
         * Constructs a new RPCMiddlewareResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IRPCMiddlewareResponse);

        /** RPCMiddlewareResponse ref_msg_id. */
        public ref_msg_id: Long;

        /** RPCMiddlewareResponse register. */
        public register?: lnrpc.IMiddlewareRegistration | null;

        /** RPCMiddlewareResponse feedback. */
        public feedback?: lnrpc.IInterceptFeedback | null;

        /** RPCMiddlewareResponse middleware_message. */
        public middleware_message?: 'register' | 'feedback';

        /**
         * Creates a new RPCMiddlewareResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns RPCMiddlewareResponse instance
         */
        public static create(
            properties?: lnrpc.IRPCMiddlewareResponse
        ): lnrpc.RPCMiddlewareResponse;

        /**
         * Encodes the specified RPCMiddlewareResponse message. Does not implicitly {@link lnrpc.RPCMiddlewareResponse.verify|verify} messages.
         * @param message RPCMiddlewareResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IRPCMiddlewareResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified RPCMiddlewareResponse message, length delimited. Does not implicitly {@link lnrpc.RPCMiddlewareResponse.verify|verify} messages.
         * @param message RPCMiddlewareResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IRPCMiddlewareResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a RPCMiddlewareResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns RPCMiddlewareResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.RPCMiddlewareResponse;

        /**
         * Decodes a RPCMiddlewareResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns RPCMiddlewareResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.RPCMiddlewareResponse;

        /**
         * Verifies a RPCMiddlewareResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a RPCMiddlewareResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns RPCMiddlewareResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.RPCMiddlewareResponse;

        /**
         * Creates a plain object from a RPCMiddlewareResponse message. Also converts values to other types if specified.
         * @param message RPCMiddlewareResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.RPCMiddlewareResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this RPCMiddlewareResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for RPCMiddlewareResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MiddlewareRegistration. */
    interface IMiddlewareRegistration {
        /** MiddlewareRegistration middleware_name */
        middleware_name?: string | null;

        /** MiddlewareRegistration custom_macaroon_caveat_name */
        custom_macaroon_caveat_name?: string | null;

        /** MiddlewareRegistration read_only_mode */
        read_only_mode?: boolean | null;
    }

    /** Represents a MiddlewareRegistration. */
    class MiddlewareRegistration implements IMiddlewareRegistration {
        /**
         * Constructs a new MiddlewareRegistration.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IMiddlewareRegistration);

        /** MiddlewareRegistration middleware_name. */
        public middleware_name: string;

        /** MiddlewareRegistration custom_macaroon_caveat_name. */
        public custom_macaroon_caveat_name: string;

        /** MiddlewareRegistration read_only_mode. */
        public read_only_mode: boolean;

        /**
         * Creates a new MiddlewareRegistration instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MiddlewareRegistration instance
         */
        public static create(
            properties?: lnrpc.IMiddlewareRegistration
        ): lnrpc.MiddlewareRegistration;

        /**
         * Encodes the specified MiddlewareRegistration message. Does not implicitly {@link lnrpc.MiddlewareRegistration.verify|verify} messages.
         * @param message MiddlewareRegistration message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IMiddlewareRegistration,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MiddlewareRegistration message, length delimited. Does not implicitly {@link lnrpc.MiddlewareRegistration.verify|verify} messages.
         * @param message MiddlewareRegistration message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IMiddlewareRegistration,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MiddlewareRegistration message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MiddlewareRegistration
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.MiddlewareRegistration;

        /**
         * Decodes a MiddlewareRegistration message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MiddlewareRegistration
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.MiddlewareRegistration;

        /**
         * Verifies a MiddlewareRegistration message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MiddlewareRegistration message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MiddlewareRegistration
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.MiddlewareRegistration;

        /**
         * Creates a plain object from a MiddlewareRegistration message. Also converts values to other types if specified.
         * @param message MiddlewareRegistration
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.MiddlewareRegistration,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MiddlewareRegistration to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MiddlewareRegistration
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an InterceptFeedback. */
    interface IInterceptFeedback {
        /** InterceptFeedback error */
        error?: string | null;

        /** InterceptFeedback replace_response */
        replace_response?: boolean | null;

        /** InterceptFeedback replacement_serialized */
        replacement_serialized?: Uint8Array | null;
    }

    /** Represents an InterceptFeedback. */
    class InterceptFeedback implements IInterceptFeedback {
        /**
         * Constructs a new InterceptFeedback.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IInterceptFeedback);

        /** InterceptFeedback error. */
        public error: string;

        /** InterceptFeedback replace_response. */
        public replace_response: boolean;

        /** InterceptFeedback replacement_serialized. */
        public replacement_serialized: Uint8Array;

        /**
         * Creates a new InterceptFeedback instance using the specified properties.
         * @param [properties] Properties to set
         * @returns InterceptFeedback instance
         */
        public static create(
            properties?: lnrpc.IInterceptFeedback
        ): lnrpc.InterceptFeedback;

        /**
         * Encodes the specified InterceptFeedback message. Does not implicitly {@link lnrpc.InterceptFeedback.verify|verify} messages.
         * @param message InterceptFeedback message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IInterceptFeedback,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified InterceptFeedback message, length delimited. Does not implicitly {@link lnrpc.InterceptFeedback.verify|verify} messages.
         * @param message InterceptFeedback message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IInterceptFeedback,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an InterceptFeedback message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns InterceptFeedback
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.InterceptFeedback;

        /**
         * Decodes an InterceptFeedback message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns InterceptFeedback
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.InterceptFeedback;

        /**
         * Verifies an InterceptFeedback message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an InterceptFeedback message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns InterceptFeedback
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.InterceptFeedback;

        /**
         * Creates a plain object from an InterceptFeedback message. Also converts values to other types if specified.
         * @param message InterceptFeedback
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.InterceptFeedback,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this InterceptFeedback to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for InterceptFeedback
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Represents a State */
    class State extends $protobuf.rpc.Service {
        /**
         * Constructs a new State service.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         */
        constructor(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        );

        /**
         * Creates new State service using the specified rpc implementation.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         * @returns RPC service. Useful where requests and/or responses are streamed.
         */
        public static create(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        ): State;

        /**
         * Calls SubscribeState.
         * @param request SubscribeStateRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SubscribeStateResponse
         */
        public subscribeState(
            request: lnrpc.ISubscribeStateRequest,
            callback: lnrpc.State.SubscribeStateCallback
        ): void;

        /**
         * Calls SubscribeState.
         * @param request SubscribeStateRequest message or plain object
         * @returns Promise
         */
        public subscribeState(
            request: lnrpc.ISubscribeStateRequest
        ): Promise<lnrpc.SubscribeStateResponse>;

        /**
         * Calls GetState.
         * @param request GetStateRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and GetStateResponse
         */
        public getState(
            request: lnrpc.IGetStateRequest,
            callback: lnrpc.State.GetStateCallback
        ): void;

        /**
         * Calls GetState.
         * @param request GetStateRequest message or plain object
         * @returns Promise
         */
        public getState(
            request: lnrpc.IGetStateRequest
        ): Promise<lnrpc.GetStateResponse>;
    }

    namespace State {
        /**
         * Callback as used by {@link lnrpc.State#subscribeState}.
         * @param error Error, if any
         * @param [response] SubscribeStateResponse
         */
        type SubscribeStateCallback = (
            error: Error | null,
            response?: lnrpc.SubscribeStateResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.State#getState}.
         * @param error Error, if any
         * @param [response] GetStateResponse
         */
        type GetStateCallback = (
            error: Error | null,
            response?: lnrpc.GetStateResponse
        ) => void;
    }

    /** WalletState enum. */
    enum WalletState {
        NON_EXISTING = 0,
        LOCKED = 1,
        UNLOCKED = 2,
        RPC_ACTIVE = 3,
        SERVER_ACTIVE = 4,
        WAITING_TO_START = 255
    }

    /** Properties of a SubscribeStateRequest. */
    interface ISubscribeStateRequest {}

    /** Represents a SubscribeStateRequest. */
    class SubscribeStateRequest implements ISubscribeStateRequest {
        /**
         * Constructs a new SubscribeStateRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ISubscribeStateRequest);

        /**
         * Creates a new SubscribeStateRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SubscribeStateRequest instance
         */
        public static create(
            properties?: lnrpc.ISubscribeStateRequest
        ): lnrpc.SubscribeStateRequest;

        /**
         * Encodes the specified SubscribeStateRequest message. Does not implicitly {@link lnrpc.SubscribeStateRequest.verify|verify} messages.
         * @param message SubscribeStateRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ISubscribeStateRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SubscribeStateRequest message, length delimited. Does not implicitly {@link lnrpc.SubscribeStateRequest.verify|verify} messages.
         * @param message SubscribeStateRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ISubscribeStateRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SubscribeStateRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SubscribeStateRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.SubscribeStateRequest;

        /**
         * Decodes a SubscribeStateRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SubscribeStateRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.SubscribeStateRequest;

        /**
         * Verifies a SubscribeStateRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SubscribeStateRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SubscribeStateRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.SubscribeStateRequest;

        /**
         * Creates a plain object from a SubscribeStateRequest message. Also converts values to other types if specified.
         * @param message SubscribeStateRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.SubscribeStateRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SubscribeStateRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SubscribeStateRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SubscribeStateResponse. */
    interface ISubscribeStateResponse {
        /** SubscribeStateResponse state */
        state?: lnrpc.WalletState | null;
    }

    /** Represents a SubscribeStateResponse. */
    class SubscribeStateResponse implements ISubscribeStateResponse {
        /**
         * Constructs a new SubscribeStateResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.ISubscribeStateResponse);

        /** SubscribeStateResponse state. */
        public state: lnrpc.WalletState;

        /**
         * Creates a new SubscribeStateResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SubscribeStateResponse instance
         */
        public static create(
            properties?: lnrpc.ISubscribeStateResponse
        ): lnrpc.SubscribeStateResponse;

        /**
         * Encodes the specified SubscribeStateResponse message. Does not implicitly {@link lnrpc.SubscribeStateResponse.verify|verify} messages.
         * @param message SubscribeStateResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.ISubscribeStateResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SubscribeStateResponse message, length delimited. Does not implicitly {@link lnrpc.SubscribeStateResponse.verify|verify} messages.
         * @param message SubscribeStateResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.ISubscribeStateResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SubscribeStateResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SubscribeStateResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.SubscribeStateResponse;

        /**
         * Decodes a SubscribeStateResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SubscribeStateResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.SubscribeStateResponse;

        /**
         * Verifies a SubscribeStateResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SubscribeStateResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SubscribeStateResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.SubscribeStateResponse;

        /**
         * Creates a plain object from a SubscribeStateResponse message. Also converts values to other types if specified.
         * @param message SubscribeStateResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.SubscribeStateResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SubscribeStateResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SubscribeStateResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetStateRequest. */
    interface IGetStateRequest {}

    /** Represents a GetStateRequest. */
    class GetStateRequest implements IGetStateRequest {
        /**
         * Constructs a new GetStateRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IGetStateRequest);

        /**
         * Creates a new GetStateRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetStateRequest instance
         */
        public static create(
            properties?: lnrpc.IGetStateRequest
        ): lnrpc.GetStateRequest;

        /**
         * Encodes the specified GetStateRequest message. Does not implicitly {@link lnrpc.GetStateRequest.verify|verify} messages.
         * @param message GetStateRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IGetStateRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetStateRequest message, length delimited. Does not implicitly {@link lnrpc.GetStateRequest.verify|verify} messages.
         * @param message GetStateRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IGetStateRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetStateRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetStateRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.GetStateRequest;

        /**
         * Decodes a GetStateRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetStateRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.GetStateRequest;

        /**
         * Verifies a GetStateRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetStateRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetStateRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.GetStateRequest;

        /**
         * Creates a plain object from a GetStateRequest message. Also converts values to other types if specified.
         * @param message GetStateRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.GetStateRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetStateRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetStateRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetStateResponse. */
    interface IGetStateResponse {
        /** GetStateResponse state */
        state?: lnrpc.WalletState | null;
    }

    /** Represents a GetStateResponse. */
    class GetStateResponse implements IGetStateResponse {
        /**
         * Constructs a new GetStateResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IGetStateResponse);

        /** GetStateResponse state. */
        public state: lnrpc.WalletState;

        /**
         * Creates a new GetStateResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetStateResponse instance
         */
        public static create(
            properties?: lnrpc.IGetStateResponse
        ): lnrpc.GetStateResponse;

        /**
         * Encodes the specified GetStateResponse message. Does not implicitly {@link lnrpc.GetStateResponse.verify|verify} messages.
         * @param message GetStateResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IGetStateResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetStateResponse message, length delimited. Does not implicitly {@link lnrpc.GetStateResponse.verify|verify} messages.
         * @param message GetStateResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IGetStateResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetStateResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetStateResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.GetStateResponse;

        /**
         * Decodes a GetStateResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetStateResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.GetStateResponse;

        /**
         * Verifies a GetStateResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetStateResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetStateResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.GetStateResponse;

        /**
         * Creates a plain object from a GetStateResponse message. Also converts values to other types if specified.
         * @param message GetStateResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.GetStateResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetStateResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetStateResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Represents a WalletUnlocker */
    class WalletUnlocker extends $protobuf.rpc.Service {
        /**
         * Constructs a new WalletUnlocker service.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         */
        constructor(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        );

        /**
         * Creates new WalletUnlocker service using the specified rpc implementation.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         * @returns RPC service. Useful where requests and/or responses are streamed.
         */
        public static create(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        ): WalletUnlocker;

        /**
         * Calls GenSeed.
         * @param request GenSeedRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and GenSeedResponse
         */
        public genSeed(
            request: lnrpc.IGenSeedRequest,
            callback: lnrpc.WalletUnlocker.GenSeedCallback
        ): void;

        /**
         * Calls GenSeed.
         * @param request GenSeedRequest message or plain object
         * @returns Promise
         */
        public genSeed(
            request: lnrpc.IGenSeedRequest
        ): Promise<lnrpc.GenSeedResponse>;

        /**
         * Calls InitWallet.
         * @param request InitWalletRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and InitWalletResponse
         */
        public initWallet(
            request: lnrpc.IInitWalletRequest,
            callback: lnrpc.WalletUnlocker.InitWalletCallback
        ): void;

        /**
         * Calls InitWallet.
         * @param request InitWalletRequest message or plain object
         * @returns Promise
         */
        public initWallet(
            request: lnrpc.IInitWalletRequest
        ): Promise<lnrpc.InitWalletResponse>;

        /**
         * Calls UnlockWallet.
         * @param request UnlockWalletRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and UnlockWalletResponse
         */
        public unlockWallet(
            request: lnrpc.IUnlockWalletRequest,
            callback: lnrpc.WalletUnlocker.UnlockWalletCallback
        ): void;

        /**
         * Calls UnlockWallet.
         * @param request UnlockWalletRequest message or plain object
         * @returns Promise
         */
        public unlockWallet(
            request: lnrpc.IUnlockWalletRequest
        ): Promise<lnrpc.UnlockWalletResponse>;

        /**
         * Calls ChangePassword.
         * @param request ChangePasswordRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ChangePasswordResponse
         */
        public changePassword(
            request: lnrpc.IChangePasswordRequest,
            callback: lnrpc.WalletUnlocker.ChangePasswordCallback
        ): void;

        /**
         * Calls ChangePassword.
         * @param request ChangePasswordRequest message or plain object
         * @returns Promise
         */
        public changePassword(
            request: lnrpc.IChangePasswordRequest
        ): Promise<lnrpc.ChangePasswordResponse>;
    }

    namespace WalletUnlocker {
        /**
         * Callback as used by {@link lnrpc.WalletUnlocker#genSeed}.
         * @param error Error, if any
         * @param [response] GenSeedResponse
         */
        type GenSeedCallback = (
            error: Error | null,
            response?: lnrpc.GenSeedResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.WalletUnlocker#initWallet}.
         * @param error Error, if any
         * @param [response] InitWalletResponse
         */
        type InitWalletCallback = (
            error: Error | null,
            response?: lnrpc.InitWalletResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.WalletUnlocker#unlockWallet}.
         * @param error Error, if any
         * @param [response] UnlockWalletResponse
         */
        type UnlockWalletCallback = (
            error: Error | null,
            response?: lnrpc.UnlockWalletResponse
        ) => void;

        /**
         * Callback as used by {@link lnrpc.WalletUnlocker#changePassword}.
         * @param error Error, if any
         * @param [response] ChangePasswordResponse
         */
        type ChangePasswordCallback = (
            error: Error | null,
            response?: lnrpc.ChangePasswordResponse
        ) => void;
    }

    /** Properties of a GenSeedRequest. */
    interface IGenSeedRequest {
        /** GenSeedRequest aezeed_passphrase */
        aezeed_passphrase?: Uint8Array | null;

        /** GenSeedRequest seed_entropy */
        seed_entropy?: Uint8Array | null;
    }

    /** Represents a GenSeedRequest. */
    class GenSeedRequest implements IGenSeedRequest {
        /**
         * Constructs a new GenSeedRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IGenSeedRequest);

        /** GenSeedRequest aezeed_passphrase. */
        public aezeed_passphrase: Uint8Array;

        /** GenSeedRequest seed_entropy. */
        public seed_entropy: Uint8Array;

        /**
         * Creates a new GenSeedRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GenSeedRequest instance
         */
        public static create(
            properties?: lnrpc.IGenSeedRequest
        ): lnrpc.GenSeedRequest;

        /**
         * Encodes the specified GenSeedRequest message. Does not implicitly {@link lnrpc.GenSeedRequest.verify|verify} messages.
         * @param message GenSeedRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IGenSeedRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GenSeedRequest message, length delimited. Does not implicitly {@link lnrpc.GenSeedRequest.verify|verify} messages.
         * @param message GenSeedRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IGenSeedRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GenSeedRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GenSeedRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.GenSeedRequest;

        /**
         * Decodes a GenSeedRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GenSeedRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.GenSeedRequest;

        /**
         * Verifies a GenSeedRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GenSeedRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GenSeedRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.GenSeedRequest;

        /**
         * Creates a plain object from a GenSeedRequest message. Also converts values to other types if specified.
         * @param message GenSeedRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.GenSeedRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GenSeedRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GenSeedRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GenSeedResponse. */
    interface IGenSeedResponse {
        /** GenSeedResponse cipher_seed_mnemonic */
        cipher_seed_mnemonic?: string[] | null;

        /** GenSeedResponse enciphered_seed */
        enciphered_seed?: Uint8Array | null;
    }

    /** Represents a GenSeedResponse. */
    class GenSeedResponse implements IGenSeedResponse {
        /**
         * Constructs a new GenSeedResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IGenSeedResponse);

        /** GenSeedResponse cipher_seed_mnemonic. */
        public cipher_seed_mnemonic: string[];

        /** GenSeedResponse enciphered_seed. */
        public enciphered_seed: Uint8Array;

        /**
         * Creates a new GenSeedResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GenSeedResponse instance
         */
        public static create(
            properties?: lnrpc.IGenSeedResponse
        ): lnrpc.GenSeedResponse;

        /**
         * Encodes the specified GenSeedResponse message. Does not implicitly {@link lnrpc.GenSeedResponse.verify|verify} messages.
         * @param message GenSeedResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IGenSeedResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GenSeedResponse message, length delimited. Does not implicitly {@link lnrpc.GenSeedResponse.verify|verify} messages.
         * @param message GenSeedResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IGenSeedResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GenSeedResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GenSeedResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.GenSeedResponse;

        /**
         * Decodes a GenSeedResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GenSeedResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.GenSeedResponse;

        /**
         * Verifies a GenSeedResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GenSeedResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GenSeedResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.GenSeedResponse;

        /**
         * Creates a plain object from a GenSeedResponse message. Also converts values to other types if specified.
         * @param message GenSeedResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.GenSeedResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GenSeedResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GenSeedResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an InitWalletRequest. */
    interface IInitWalletRequest {
        /** InitWalletRequest wallet_password */
        wallet_password?: Uint8Array | null;

        /** InitWalletRequest cipher_seed_mnemonic */
        cipher_seed_mnemonic?: string[] | null;

        /** InitWalletRequest aezeed_passphrase */
        aezeed_passphrase?: Uint8Array | null;

        /** InitWalletRequest recovery_window */
        recovery_window?: number | null;

        /** InitWalletRequest channel_backups */
        channel_backups?: lnrpc.IChanBackupSnapshot | null;

        /** InitWalletRequest stateless_init */
        stateless_init?: boolean | null;

        /** InitWalletRequest extended_master_key */
        extended_master_key?: string | null;

        /** InitWalletRequest extended_master_key_birthday_timestamp */
        extended_master_key_birthday_timestamp?: Long | null;

        /** InitWalletRequest watch_only */
        watch_only?: lnrpc.IWatchOnly | null;

        /** InitWalletRequest macaroon_root_key */
        macaroon_root_key?: Uint8Array | null;
    }

    /** Represents an InitWalletRequest. */
    class InitWalletRequest implements IInitWalletRequest {
        /**
         * Constructs a new InitWalletRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IInitWalletRequest);

        /** InitWalletRequest wallet_password. */
        public wallet_password: Uint8Array;

        /** InitWalletRequest cipher_seed_mnemonic. */
        public cipher_seed_mnemonic: string[];

        /** InitWalletRequest aezeed_passphrase. */
        public aezeed_passphrase: Uint8Array;

        /** InitWalletRequest recovery_window. */
        public recovery_window: number;

        /** InitWalletRequest channel_backups. */
        public channel_backups?: lnrpc.IChanBackupSnapshot | null;

        /** InitWalletRequest stateless_init. */
        public stateless_init: boolean;

        /** InitWalletRequest extended_master_key. */
        public extended_master_key: string;

        /** InitWalletRequest extended_master_key_birthday_timestamp. */
        public extended_master_key_birthday_timestamp: Long;

        /** InitWalletRequest watch_only. */
        public watch_only?: lnrpc.IWatchOnly | null;

        /** InitWalletRequest macaroon_root_key. */
        public macaroon_root_key: Uint8Array;

        /**
         * Creates a new InitWalletRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns InitWalletRequest instance
         */
        public static create(
            properties?: lnrpc.IInitWalletRequest
        ): lnrpc.InitWalletRequest;

        /**
         * Encodes the specified InitWalletRequest message. Does not implicitly {@link lnrpc.InitWalletRequest.verify|verify} messages.
         * @param message InitWalletRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IInitWalletRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified InitWalletRequest message, length delimited. Does not implicitly {@link lnrpc.InitWalletRequest.verify|verify} messages.
         * @param message InitWalletRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IInitWalletRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an InitWalletRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns InitWalletRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.InitWalletRequest;

        /**
         * Decodes an InitWalletRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns InitWalletRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.InitWalletRequest;

        /**
         * Verifies an InitWalletRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an InitWalletRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns InitWalletRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.InitWalletRequest;

        /**
         * Creates a plain object from an InitWalletRequest message. Also converts values to other types if specified.
         * @param message InitWalletRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.InitWalletRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this InitWalletRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for InitWalletRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an InitWalletResponse. */
    interface IInitWalletResponse {
        /** InitWalletResponse admin_macaroon */
        admin_macaroon?: Uint8Array | null;
    }

    /** Represents an InitWalletResponse. */
    class InitWalletResponse implements IInitWalletResponse {
        /**
         * Constructs a new InitWalletResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IInitWalletResponse);

        /** InitWalletResponse admin_macaroon. */
        public admin_macaroon: Uint8Array;

        /**
         * Creates a new InitWalletResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns InitWalletResponse instance
         */
        public static create(
            properties?: lnrpc.IInitWalletResponse
        ): lnrpc.InitWalletResponse;

        /**
         * Encodes the specified InitWalletResponse message. Does not implicitly {@link lnrpc.InitWalletResponse.verify|verify} messages.
         * @param message InitWalletResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IInitWalletResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified InitWalletResponse message, length delimited. Does not implicitly {@link lnrpc.InitWalletResponse.verify|verify} messages.
         * @param message InitWalletResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IInitWalletResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an InitWalletResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns InitWalletResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.InitWalletResponse;

        /**
         * Decodes an InitWalletResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns InitWalletResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.InitWalletResponse;

        /**
         * Verifies an InitWalletResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an InitWalletResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns InitWalletResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.InitWalletResponse;

        /**
         * Creates a plain object from an InitWalletResponse message. Also converts values to other types if specified.
         * @param message InitWalletResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.InitWalletResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this InitWalletResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for InitWalletResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a WatchOnly. */
    interface IWatchOnly {
        /** WatchOnly master_key_birthday_timestamp */
        master_key_birthday_timestamp?: Long | null;

        /** WatchOnly master_key_fingerprint */
        master_key_fingerprint?: Uint8Array | null;

        /** WatchOnly accounts */
        accounts?: lnrpc.IWatchOnlyAccount[] | null;
    }

    /** Represents a WatchOnly. */
    class WatchOnly implements IWatchOnly {
        /**
         * Constructs a new WatchOnly.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IWatchOnly);

        /** WatchOnly master_key_birthday_timestamp. */
        public master_key_birthday_timestamp: Long;

        /** WatchOnly master_key_fingerprint. */
        public master_key_fingerprint: Uint8Array;

        /** WatchOnly accounts. */
        public accounts: lnrpc.IWatchOnlyAccount[];

        /**
         * Creates a new WatchOnly instance using the specified properties.
         * @param [properties] Properties to set
         * @returns WatchOnly instance
         */
        public static create(properties?: lnrpc.IWatchOnly): lnrpc.WatchOnly;

        /**
         * Encodes the specified WatchOnly message. Does not implicitly {@link lnrpc.WatchOnly.verify|verify} messages.
         * @param message WatchOnly message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IWatchOnly,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified WatchOnly message, length delimited. Does not implicitly {@link lnrpc.WatchOnly.verify|verify} messages.
         * @param message WatchOnly message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IWatchOnly,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a WatchOnly message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns WatchOnly
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.WatchOnly;

        /**
         * Decodes a WatchOnly message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns WatchOnly
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.WatchOnly;

        /**
         * Verifies a WatchOnly message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a WatchOnly message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns WatchOnly
         */
        public static fromObject(object: { [k: string]: any }): lnrpc.WatchOnly;

        /**
         * Creates a plain object from a WatchOnly message. Also converts values to other types if specified.
         * @param message WatchOnly
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.WatchOnly,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this WatchOnly to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for WatchOnly
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a WatchOnlyAccount. */
    interface IWatchOnlyAccount {
        /** WatchOnlyAccount purpose */
        purpose?: number | null;

        /** WatchOnlyAccount coin_type */
        coin_type?: number | null;

        /** WatchOnlyAccount account */
        account?: number | null;

        /** WatchOnlyAccount xpub */
        xpub?: string | null;
    }

    /** Represents a WatchOnlyAccount. */
    class WatchOnlyAccount implements IWatchOnlyAccount {
        /**
         * Constructs a new WatchOnlyAccount.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IWatchOnlyAccount);

        /** WatchOnlyAccount purpose. */
        public purpose: number;

        /** WatchOnlyAccount coin_type. */
        public coin_type: number;

        /** WatchOnlyAccount account. */
        public account: number;

        /** WatchOnlyAccount xpub. */
        public xpub: string;

        /**
         * Creates a new WatchOnlyAccount instance using the specified properties.
         * @param [properties] Properties to set
         * @returns WatchOnlyAccount instance
         */
        public static create(
            properties?: lnrpc.IWatchOnlyAccount
        ): lnrpc.WatchOnlyAccount;

        /**
         * Encodes the specified WatchOnlyAccount message. Does not implicitly {@link lnrpc.WatchOnlyAccount.verify|verify} messages.
         * @param message WatchOnlyAccount message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IWatchOnlyAccount,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified WatchOnlyAccount message, length delimited. Does not implicitly {@link lnrpc.WatchOnlyAccount.verify|verify} messages.
         * @param message WatchOnlyAccount message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IWatchOnlyAccount,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a WatchOnlyAccount message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns WatchOnlyAccount
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.WatchOnlyAccount;

        /**
         * Decodes a WatchOnlyAccount message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns WatchOnlyAccount
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.WatchOnlyAccount;

        /**
         * Verifies a WatchOnlyAccount message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a WatchOnlyAccount message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns WatchOnlyAccount
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.WatchOnlyAccount;

        /**
         * Creates a plain object from a WatchOnlyAccount message. Also converts values to other types if specified.
         * @param message WatchOnlyAccount
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.WatchOnlyAccount,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this WatchOnlyAccount to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for WatchOnlyAccount
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an UnlockWalletRequest. */
    interface IUnlockWalletRequest {
        /** UnlockWalletRequest wallet_password */
        wallet_password?: Uint8Array | null;

        /** UnlockWalletRequest recovery_window */
        recovery_window?: number | null;

        /** UnlockWalletRequest channel_backups */
        channel_backups?: lnrpc.IChanBackupSnapshot | null;

        /** UnlockWalletRequest stateless_init */
        stateless_init?: boolean | null;
    }

    /** Represents an UnlockWalletRequest. */
    class UnlockWalletRequest implements IUnlockWalletRequest {
        /**
         * Constructs a new UnlockWalletRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IUnlockWalletRequest);

        /** UnlockWalletRequest wallet_password. */
        public wallet_password: Uint8Array;

        /** UnlockWalletRequest recovery_window. */
        public recovery_window: number;

        /** UnlockWalletRequest channel_backups. */
        public channel_backups?: lnrpc.IChanBackupSnapshot | null;

        /** UnlockWalletRequest stateless_init. */
        public stateless_init: boolean;

        /**
         * Creates a new UnlockWalletRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns UnlockWalletRequest instance
         */
        public static create(
            properties?: lnrpc.IUnlockWalletRequest
        ): lnrpc.UnlockWalletRequest;

        /**
         * Encodes the specified UnlockWalletRequest message. Does not implicitly {@link lnrpc.UnlockWalletRequest.verify|verify} messages.
         * @param message UnlockWalletRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IUnlockWalletRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified UnlockWalletRequest message, length delimited. Does not implicitly {@link lnrpc.UnlockWalletRequest.verify|verify} messages.
         * @param message UnlockWalletRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IUnlockWalletRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an UnlockWalletRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns UnlockWalletRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.UnlockWalletRequest;

        /**
         * Decodes an UnlockWalletRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns UnlockWalletRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.UnlockWalletRequest;

        /**
         * Verifies an UnlockWalletRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an UnlockWalletRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns UnlockWalletRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.UnlockWalletRequest;

        /**
         * Creates a plain object from an UnlockWalletRequest message. Also converts values to other types if specified.
         * @param message UnlockWalletRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.UnlockWalletRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this UnlockWalletRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for UnlockWalletRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an UnlockWalletResponse. */
    interface IUnlockWalletResponse {}

    /** Represents an UnlockWalletResponse. */
    class UnlockWalletResponse implements IUnlockWalletResponse {
        /**
         * Constructs a new UnlockWalletResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IUnlockWalletResponse);

        /**
         * Creates a new UnlockWalletResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns UnlockWalletResponse instance
         */
        public static create(
            properties?: lnrpc.IUnlockWalletResponse
        ): lnrpc.UnlockWalletResponse;

        /**
         * Encodes the specified UnlockWalletResponse message. Does not implicitly {@link lnrpc.UnlockWalletResponse.verify|verify} messages.
         * @param message UnlockWalletResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IUnlockWalletResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified UnlockWalletResponse message, length delimited. Does not implicitly {@link lnrpc.UnlockWalletResponse.verify|verify} messages.
         * @param message UnlockWalletResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IUnlockWalletResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an UnlockWalletResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns UnlockWalletResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.UnlockWalletResponse;

        /**
         * Decodes an UnlockWalletResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns UnlockWalletResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.UnlockWalletResponse;

        /**
         * Verifies an UnlockWalletResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an UnlockWalletResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns UnlockWalletResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.UnlockWalletResponse;

        /**
         * Creates a plain object from an UnlockWalletResponse message. Also converts values to other types if specified.
         * @param message UnlockWalletResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.UnlockWalletResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this UnlockWalletResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for UnlockWalletResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChangePasswordRequest. */
    interface IChangePasswordRequest {
        /** ChangePasswordRequest current_password */
        current_password?: Uint8Array | null;

        /** ChangePasswordRequest new_password */
        new_password?: Uint8Array | null;

        /** ChangePasswordRequest stateless_init */
        stateless_init?: boolean | null;

        /** ChangePasswordRequest new_macaroon_root_key */
        new_macaroon_root_key?: boolean | null;
    }

    /** Represents a ChangePasswordRequest. */
    class ChangePasswordRequest implements IChangePasswordRequest {
        /**
         * Constructs a new ChangePasswordRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChangePasswordRequest);

        /** ChangePasswordRequest current_password. */
        public current_password: Uint8Array;

        /** ChangePasswordRequest new_password. */
        public new_password: Uint8Array;

        /** ChangePasswordRequest stateless_init. */
        public stateless_init: boolean;

        /** ChangePasswordRequest new_macaroon_root_key. */
        public new_macaroon_root_key: boolean;

        /**
         * Creates a new ChangePasswordRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChangePasswordRequest instance
         */
        public static create(
            properties?: lnrpc.IChangePasswordRequest
        ): lnrpc.ChangePasswordRequest;

        /**
         * Encodes the specified ChangePasswordRequest message. Does not implicitly {@link lnrpc.ChangePasswordRequest.verify|verify} messages.
         * @param message ChangePasswordRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChangePasswordRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChangePasswordRequest message, length delimited. Does not implicitly {@link lnrpc.ChangePasswordRequest.verify|verify} messages.
         * @param message ChangePasswordRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChangePasswordRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChangePasswordRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChangePasswordRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChangePasswordRequest;

        /**
         * Decodes a ChangePasswordRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChangePasswordRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChangePasswordRequest;

        /**
         * Verifies a ChangePasswordRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChangePasswordRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChangePasswordRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChangePasswordRequest;

        /**
         * Creates a plain object from a ChangePasswordRequest message. Also converts values to other types if specified.
         * @param message ChangePasswordRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChangePasswordRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChangePasswordRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChangePasswordRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ChangePasswordResponse. */
    interface IChangePasswordResponse {
        /** ChangePasswordResponse admin_macaroon */
        admin_macaroon?: Uint8Array | null;
    }

    /** Represents a ChangePasswordResponse. */
    class ChangePasswordResponse implements IChangePasswordResponse {
        /**
         * Constructs a new ChangePasswordResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: lnrpc.IChangePasswordResponse);

        /** ChangePasswordResponse admin_macaroon. */
        public admin_macaroon: Uint8Array;

        /**
         * Creates a new ChangePasswordResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChangePasswordResponse instance
         */
        public static create(
            properties?: lnrpc.IChangePasswordResponse
        ): lnrpc.ChangePasswordResponse;

        /**
         * Encodes the specified ChangePasswordResponse message. Does not implicitly {@link lnrpc.ChangePasswordResponse.verify|verify} messages.
         * @param message ChangePasswordResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: lnrpc.IChangePasswordResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ChangePasswordResponse message, length delimited. Does not implicitly {@link lnrpc.ChangePasswordResponse.verify|verify} messages.
         * @param message ChangePasswordResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: lnrpc.IChangePasswordResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ChangePasswordResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChangePasswordResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): lnrpc.ChangePasswordResponse;

        /**
         * Decodes a ChangePasswordResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChangePasswordResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): lnrpc.ChangePasswordResponse;

        /**
         * Verifies a ChangePasswordResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ChangePasswordResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChangePasswordResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): lnrpc.ChangePasswordResponse;

        /**
         * Creates a plain object from a ChangePasswordResponse message. Also converts values to other types if specified.
         * @param message ChangePasswordResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: lnrpc.ChangePasswordResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ChangePasswordResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChangePasswordResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }
}

/** Namespace autopilotrpc. */
export namespace autopilotrpc {
    /** Represents an Autopilot */
    class Autopilot extends $protobuf.rpc.Service {
        /**
         * Constructs a new Autopilot service.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         */
        constructor(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        );

        /**
         * Creates new Autopilot service using the specified rpc implementation.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         * @returns RPC service. Useful where requests and/or responses are streamed.
         */
        public static create(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        ): Autopilot;

        /**
         * Calls Status.
         * @param request StatusRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and StatusResponse
         */
        public status(
            request: autopilotrpc.IStatusRequest,
            callback: autopilotrpc.Autopilot.StatusCallback
        ): void;

        /**
         * Calls Status.
         * @param request StatusRequest message or plain object
         * @returns Promise
         */
        public status(
            request: autopilotrpc.IStatusRequest
        ): Promise<autopilotrpc.StatusResponse>;

        /**
         * Calls ModifyStatus.
         * @param request ModifyStatusRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ModifyStatusResponse
         */
        public modifyStatus(
            request: autopilotrpc.IModifyStatusRequest,
            callback: autopilotrpc.Autopilot.ModifyStatusCallback
        ): void;

        /**
         * Calls ModifyStatus.
         * @param request ModifyStatusRequest message or plain object
         * @returns Promise
         */
        public modifyStatus(
            request: autopilotrpc.IModifyStatusRequest
        ): Promise<autopilotrpc.ModifyStatusResponse>;

        /**
         * Calls QueryScores.
         * @param request QueryScoresRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and QueryScoresResponse
         */
        public queryScores(
            request: autopilotrpc.IQueryScoresRequest,
            callback: autopilotrpc.Autopilot.QueryScoresCallback
        ): void;

        /**
         * Calls QueryScores.
         * @param request QueryScoresRequest message or plain object
         * @returns Promise
         */
        public queryScores(
            request: autopilotrpc.IQueryScoresRequest
        ): Promise<autopilotrpc.QueryScoresResponse>;

        /**
         * Calls SetScores.
         * @param request SetScoresRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SetScoresResponse
         */
        public setScores(
            request: autopilotrpc.ISetScoresRequest,
            callback: autopilotrpc.Autopilot.SetScoresCallback
        ): void;

        /**
         * Calls SetScores.
         * @param request SetScoresRequest message or plain object
         * @returns Promise
         */
        public setScores(
            request: autopilotrpc.ISetScoresRequest
        ): Promise<autopilotrpc.SetScoresResponse>;
    }

    namespace Autopilot {
        /**
         * Callback as used by {@link autopilotrpc.Autopilot#status}.
         * @param error Error, if any
         * @param [response] StatusResponse
         */
        type StatusCallback = (
            error: Error | null,
            response?: autopilotrpc.StatusResponse
        ) => void;

        /**
         * Callback as used by {@link autopilotrpc.Autopilot#modifyStatus}.
         * @param error Error, if any
         * @param [response] ModifyStatusResponse
         */
        type ModifyStatusCallback = (
            error: Error | null,
            response?: autopilotrpc.ModifyStatusResponse
        ) => void;

        /**
         * Callback as used by {@link autopilotrpc.Autopilot#queryScores}.
         * @param error Error, if any
         * @param [response] QueryScoresResponse
         */
        type QueryScoresCallback = (
            error: Error | null,
            response?: autopilotrpc.QueryScoresResponse
        ) => void;

        /**
         * Callback as used by {@link autopilotrpc.Autopilot#setScores}.
         * @param error Error, if any
         * @param [response] SetScoresResponse
         */
        type SetScoresCallback = (
            error: Error | null,
            response?: autopilotrpc.SetScoresResponse
        ) => void;
    }

    /** Properties of a StatusRequest. */
    interface IStatusRequest {}

    /** Represents a StatusRequest. */
    class StatusRequest implements IStatusRequest {
        /**
         * Constructs a new StatusRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: autopilotrpc.IStatusRequest);

        /**
         * Creates a new StatusRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StatusRequest instance
         */
        public static create(
            properties?: autopilotrpc.IStatusRequest
        ): autopilotrpc.StatusRequest;

        /**
         * Encodes the specified StatusRequest message. Does not implicitly {@link autopilotrpc.StatusRequest.verify|verify} messages.
         * @param message StatusRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: autopilotrpc.IStatusRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified StatusRequest message, length delimited. Does not implicitly {@link autopilotrpc.StatusRequest.verify|verify} messages.
         * @param message StatusRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: autopilotrpc.IStatusRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a StatusRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StatusRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): autopilotrpc.StatusRequest;

        /**
         * Decodes a StatusRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StatusRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): autopilotrpc.StatusRequest;

        /**
         * Verifies a StatusRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a StatusRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StatusRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): autopilotrpc.StatusRequest;

        /**
         * Creates a plain object from a StatusRequest message. Also converts values to other types if specified.
         * @param message StatusRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: autopilotrpc.StatusRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this StatusRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StatusRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a StatusResponse. */
    interface IStatusResponse {
        /** StatusResponse active */
        active?: boolean | null;
    }

    /** Represents a StatusResponse. */
    class StatusResponse implements IStatusResponse {
        /**
         * Constructs a new StatusResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: autopilotrpc.IStatusResponse);

        /** StatusResponse active. */
        public active: boolean;

        /**
         * Creates a new StatusResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StatusResponse instance
         */
        public static create(
            properties?: autopilotrpc.IStatusResponse
        ): autopilotrpc.StatusResponse;

        /**
         * Encodes the specified StatusResponse message. Does not implicitly {@link autopilotrpc.StatusResponse.verify|verify} messages.
         * @param message StatusResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: autopilotrpc.IStatusResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified StatusResponse message, length delimited. Does not implicitly {@link autopilotrpc.StatusResponse.verify|verify} messages.
         * @param message StatusResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: autopilotrpc.IStatusResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a StatusResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StatusResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): autopilotrpc.StatusResponse;

        /**
         * Decodes a StatusResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StatusResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): autopilotrpc.StatusResponse;

        /**
         * Verifies a StatusResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a StatusResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StatusResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): autopilotrpc.StatusResponse;

        /**
         * Creates a plain object from a StatusResponse message. Also converts values to other types if specified.
         * @param message StatusResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: autopilotrpc.StatusResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this StatusResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StatusResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ModifyStatusRequest. */
    interface IModifyStatusRequest {
        /** ModifyStatusRequest enable */
        enable?: boolean | null;
    }

    /** Represents a ModifyStatusRequest. */
    class ModifyStatusRequest implements IModifyStatusRequest {
        /**
         * Constructs a new ModifyStatusRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: autopilotrpc.IModifyStatusRequest);

        /** ModifyStatusRequest enable. */
        public enable: boolean;

        /**
         * Creates a new ModifyStatusRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ModifyStatusRequest instance
         */
        public static create(
            properties?: autopilotrpc.IModifyStatusRequest
        ): autopilotrpc.ModifyStatusRequest;

        /**
         * Encodes the specified ModifyStatusRequest message. Does not implicitly {@link autopilotrpc.ModifyStatusRequest.verify|verify} messages.
         * @param message ModifyStatusRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: autopilotrpc.IModifyStatusRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ModifyStatusRequest message, length delimited. Does not implicitly {@link autopilotrpc.ModifyStatusRequest.verify|verify} messages.
         * @param message ModifyStatusRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: autopilotrpc.IModifyStatusRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ModifyStatusRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ModifyStatusRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): autopilotrpc.ModifyStatusRequest;

        /**
         * Decodes a ModifyStatusRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ModifyStatusRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): autopilotrpc.ModifyStatusRequest;

        /**
         * Verifies a ModifyStatusRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ModifyStatusRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ModifyStatusRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): autopilotrpc.ModifyStatusRequest;

        /**
         * Creates a plain object from a ModifyStatusRequest message. Also converts values to other types if specified.
         * @param message ModifyStatusRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: autopilotrpc.ModifyStatusRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ModifyStatusRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ModifyStatusRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ModifyStatusResponse. */
    interface IModifyStatusResponse {}

    /** Represents a ModifyStatusResponse. */
    class ModifyStatusResponse implements IModifyStatusResponse {
        /**
         * Constructs a new ModifyStatusResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: autopilotrpc.IModifyStatusResponse);

        /**
         * Creates a new ModifyStatusResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ModifyStatusResponse instance
         */
        public static create(
            properties?: autopilotrpc.IModifyStatusResponse
        ): autopilotrpc.ModifyStatusResponse;

        /**
         * Encodes the specified ModifyStatusResponse message. Does not implicitly {@link autopilotrpc.ModifyStatusResponse.verify|verify} messages.
         * @param message ModifyStatusResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: autopilotrpc.IModifyStatusResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ModifyStatusResponse message, length delimited. Does not implicitly {@link autopilotrpc.ModifyStatusResponse.verify|verify} messages.
         * @param message ModifyStatusResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: autopilotrpc.IModifyStatusResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ModifyStatusResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ModifyStatusResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): autopilotrpc.ModifyStatusResponse;

        /**
         * Decodes a ModifyStatusResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ModifyStatusResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): autopilotrpc.ModifyStatusResponse;

        /**
         * Verifies a ModifyStatusResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ModifyStatusResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ModifyStatusResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): autopilotrpc.ModifyStatusResponse;

        /**
         * Creates a plain object from a ModifyStatusResponse message. Also converts values to other types if specified.
         * @param message ModifyStatusResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: autopilotrpc.ModifyStatusResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ModifyStatusResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ModifyStatusResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a QueryScoresRequest. */
    interface IQueryScoresRequest {
        /** QueryScoresRequest pubkeys */
        pubkeys?: string[] | null;

        /** QueryScoresRequest ignore_local_state */
        ignore_local_state?: boolean | null;
    }

    /** Represents a QueryScoresRequest. */
    class QueryScoresRequest implements IQueryScoresRequest {
        /**
         * Constructs a new QueryScoresRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: autopilotrpc.IQueryScoresRequest);

        /** QueryScoresRequest pubkeys. */
        public pubkeys: string[];

        /** QueryScoresRequest ignore_local_state. */
        public ignore_local_state: boolean;

        /**
         * Creates a new QueryScoresRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns QueryScoresRequest instance
         */
        public static create(
            properties?: autopilotrpc.IQueryScoresRequest
        ): autopilotrpc.QueryScoresRequest;

        /**
         * Encodes the specified QueryScoresRequest message. Does not implicitly {@link autopilotrpc.QueryScoresRequest.verify|verify} messages.
         * @param message QueryScoresRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: autopilotrpc.IQueryScoresRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified QueryScoresRequest message, length delimited. Does not implicitly {@link autopilotrpc.QueryScoresRequest.verify|verify} messages.
         * @param message QueryScoresRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: autopilotrpc.IQueryScoresRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a QueryScoresRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns QueryScoresRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): autopilotrpc.QueryScoresRequest;

        /**
         * Decodes a QueryScoresRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns QueryScoresRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): autopilotrpc.QueryScoresRequest;

        /**
         * Verifies a QueryScoresRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a QueryScoresRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns QueryScoresRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): autopilotrpc.QueryScoresRequest;

        /**
         * Creates a plain object from a QueryScoresRequest message. Also converts values to other types if specified.
         * @param message QueryScoresRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: autopilotrpc.QueryScoresRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this QueryScoresRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for QueryScoresRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a QueryScoresResponse. */
    interface IQueryScoresResponse {
        /** QueryScoresResponse results */
        results?: autopilotrpc.QueryScoresResponse.IHeuristicResult[] | null;
    }

    /** Represents a QueryScoresResponse. */
    class QueryScoresResponse implements IQueryScoresResponse {
        /**
         * Constructs a new QueryScoresResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: autopilotrpc.IQueryScoresResponse);

        /** QueryScoresResponse results. */
        public results: autopilotrpc.QueryScoresResponse.IHeuristicResult[];

        /**
         * Creates a new QueryScoresResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns QueryScoresResponse instance
         */
        public static create(
            properties?: autopilotrpc.IQueryScoresResponse
        ): autopilotrpc.QueryScoresResponse;

        /**
         * Encodes the specified QueryScoresResponse message. Does not implicitly {@link autopilotrpc.QueryScoresResponse.verify|verify} messages.
         * @param message QueryScoresResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: autopilotrpc.IQueryScoresResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified QueryScoresResponse message, length delimited. Does not implicitly {@link autopilotrpc.QueryScoresResponse.verify|verify} messages.
         * @param message QueryScoresResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: autopilotrpc.IQueryScoresResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a QueryScoresResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns QueryScoresResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): autopilotrpc.QueryScoresResponse;

        /**
         * Decodes a QueryScoresResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns QueryScoresResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): autopilotrpc.QueryScoresResponse;

        /**
         * Verifies a QueryScoresResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a QueryScoresResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns QueryScoresResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): autopilotrpc.QueryScoresResponse;

        /**
         * Creates a plain object from a QueryScoresResponse message. Also converts values to other types if specified.
         * @param message QueryScoresResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: autopilotrpc.QueryScoresResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this QueryScoresResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for QueryScoresResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace QueryScoresResponse {
        /** Properties of a HeuristicResult. */
        interface IHeuristicResult {
            /** HeuristicResult heuristic */
            heuristic?: string | null;

            /** HeuristicResult scores */
            scores?: { [k: string]: number } | null;
        }

        /** Represents a HeuristicResult. */
        class HeuristicResult implements IHeuristicResult {
            /**
             * Constructs a new HeuristicResult.
             * @param [properties] Properties to set
             */
            constructor(
                properties?: autopilotrpc.QueryScoresResponse.IHeuristicResult
            );

            /** HeuristicResult heuristic. */
            public heuristic: string;

            /** HeuristicResult scores. */
            public scores: { [k: string]: number };

            /**
             * Creates a new HeuristicResult instance using the specified properties.
             * @param [properties] Properties to set
             * @returns HeuristicResult instance
             */
            public static create(
                properties?: autopilotrpc.QueryScoresResponse.IHeuristicResult
            ): autopilotrpc.QueryScoresResponse.HeuristicResult;

            /**
             * Encodes the specified HeuristicResult message. Does not implicitly {@link autopilotrpc.QueryScoresResponse.HeuristicResult.verify|verify} messages.
             * @param message HeuristicResult message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(
                message: autopilotrpc.QueryScoresResponse.IHeuristicResult,
                writer?: $protobuf.Writer
            ): $protobuf.Writer;

            /**
             * Encodes the specified HeuristicResult message, length delimited. Does not implicitly {@link autopilotrpc.QueryScoresResponse.HeuristicResult.verify|verify} messages.
             * @param message HeuristicResult message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(
                message: autopilotrpc.QueryScoresResponse.IHeuristicResult,
                writer?: $protobuf.Writer
            ): $protobuf.Writer;

            /**
             * Decodes a HeuristicResult message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns HeuristicResult
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(
                reader: $protobuf.Reader | Uint8Array,
                length?: number
            ): autopilotrpc.QueryScoresResponse.HeuristicResult;

            /**
             * Decodes a HeuristicResult message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns HeuristicResult
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(
                reader: $protobuf.Reader | Uint8Array
            ): autopilotrpc.QueryScoresResponse.HeuristicResult;

            /**
             * Verifies a HeuristicResult message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): string | null;

            /**
             * Creates a HeuristicResult message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns HeuristicResult
             */
            public static fromObject(object: {
                [k: string]: any;
            }): autopilotrpc.QueryScoresResponse.HeuristicResult;

            /**
             * Creates a plain object from a HeuristicResult message. Also converts values to other types if specified.
             * @param message HeuristicResult
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(
                message: autopilotrpc.QueryScoresResponse.HeuristicResult,
                options?: $protobuf.IConversionOptions
            ): { [k: string]: any };

            /**
             * Converts this HeuristicResult to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for HeuristicResult
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Properties of a SetScoresRequest. */
    interface ISetScoresRequest {
        /** SetScoresRequest heuristic */
        heuristic?: string | null;

        /** SetScoresRequest scores */
        scores?: { [k: string]: number } | null;
    }

    /** Represents a SetScoresRequest. */
    class SetScoresRequest implements ISetScoresRequest {
        /**
         * Constructs a new SetScoresRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: autopilotrpc.ISetScoresRequest);

        /** SetScoresRequest heuristic. */
        public heuristic: string;

        /** SetScoresRequest scores. */
        public scores: { [k: string]: number };

        /**
         * Creates a new SetScoresRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SetScoresRequest instance
         */
        public static create(
            properties?: autopilotrpc.ISetScoresRequest
        ): autopilotrpc.SetScoresRequest;

        /**
         * Encodes the specified SetScoresRequest message. Does not implicitly {@link autopilotrpc.SetScoresRequest.verify|verify} messages.
         * @param message SetScoresRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: autopilotrpc.ISetScoresRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SetScoresRequest message, length delimited. Does not implicitly {@link autopilotrpc.SetScoresRequest.verify|verify} messages.
         * @param message SetScoresRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: autopilotrpc.ISetScoresRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SetScoresRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SetScoresRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): autopilotrpc.SetScoresRequest;

        /**
         * Decodes a SetScoresRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SetScoresRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): autopilotrpc.SetScoresRequest;

        /**
         * Verifies a SetScoresRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SetScoresRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SetScoresRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): autopilotrpc.SetScoresRequest;

        /**
         * Creates a plain object from a SetScoresRequest message. Also converts values to other types if specified.
         * @param message SetScoresRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: autopilotrpc.SetScoresRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SetScoresRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SetScoresRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SetScoresResponse. */
    interface ISetScoresResponse {}

    /** Represents a SetScoresResponse. */
    class SetScoresResponse implements ISetScoresResponse {
        /**
         * Constructs a new SetScoresResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: autopilotrpc.ISetScoresResponse);

        /**
         * Creates a new SetScoresResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SetScoresResponse instance
         */
        public static create(
            properties?: autopilotrpc.ISetScoresResponse
        ): autopilotrpc.SetScoresResponse;

        /**
         * Encodes the specified SetScoresResponse message. Does not implicitly {@link autopilotrpc.SetScoresResponse.verify|verify} messages.
         * @param message SetScoresResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: autopilotrpc.ISetScoresResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SetScoresResponse message, length delimited. Does not implicitly {@link autopilotrpc.SetScoresResponse.verify|verify} messages.
         * @param message SetScoresResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: autopilotrpc.ISetScoresResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SetScoresResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SetScoresResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): autopilotrpc.SetScoresResponse;

        /**
         * Decodes a SetScoresResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SetScoresResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): autopilotrpc.SetScoresResponse;

        /**
         * Verifies a SetScoresResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SetScoresResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SetScoresResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): autopilotrpc.SetScoresResponse;

        /**
         * Creates a plain object from a SetScoresResponse message. Also converts values to other types if specified.
         * @param message SetScoresResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: autopilotrpc.SetScoresResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SetScoresResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SetScoresResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }
}

/** Namespace chainrpc. */
export namespace chainrpc {
    /** Represents a ChainNotifier */
    class ChainNotifier extends $protobuf.rpc.Service {
        /**
         * Constructs a new ChainNotifier service.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         */
        constructor(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        );

        /**
         * Creates new ChainNotifier service using the specified rpc implementation.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         * @returns RPC service. Useful where requests and/or responses are streamed.
         */
        public static create(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        ): ChainNotifier;

        /**
         * Calls RegisterConfirmationsNtfn.
         * @param request ConfRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ConfEvent
         */
        public registerConfirmationsNtfn(
            request: chainrpc.IConfRequest,
            callback: chainrpc.ChainNotifier.RegisterConfirmationsNtfnCallback
        ): void;

        /**
         * Calls RegisterConfirmationsNtfn.
         * @param request ConfRequest message or plain object
         * @returns Promise
         */
        public registerConfirmationsNtfn(
            request: chainrpc.IConfRequest
        ): Promise<chainrpc.ConfEvent>;

        /**
         * Calls RegisterSpendNtfn.
         * @param request SpendRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SpendEvent
         */
        public registerSpendNtfn(
            request: chainrpc.ISpendRequest,
            callback: chainrpc.ChainNotifier.RegisterSpendNtfnCallback
        ): void;

        /**
         * Calls RegisterSpendNtfn.
         * @param request SpendRequest message or plain object
         * @returns Promise
         */
        public registerSpendNtfn(
            request: chainrpc.ISpendRequest
        ): Promise<chainrpc.SpendEvent>;

        /**
         * Calls RegisterBlockEpochNtfn.
         * @param request BlockEpoch message or plain object
         * @param callback Node-style callback called with the error, if any, and BlockEpoch
         */
        public registerBlockEpochNtfn(
            request: chainrpc.IBlockEpoch,
            callback: chainrpc.ChainNotifier.RegisterBlockEpochNtfnCallback
        ): void;

        /**
         * Calls RegisterBlockEpochNtfn.
         * @param request BlockEpoch message or plain object
         * @returns Promise
         */
        public registerBlockEpochNtfn(
            request: chainrpc.IBlockEpoch
        ): Promise<chainrpc.BlockEpoch>;
    }

    namespace ChainNotifier {
        /**
         * Callback as used by {@link chainrpc.ChainNotifier#registerConfirmationsNtfn}.
         * @param error Error, if any
         * @param [response] ConfEvent
         */
        type RegisterConfirmationsNtfnCallback = (
            error: Error | null,
            response?: chainrpc.ConfEvent
        ) => void;

        /**
         * Callback as used by {@link chainrpc.ChainNotifier#registerSpendNtfn}.
         * @param error Error, if any
         * @param [response] SpendEvent
         */
        type RegisterSpendNtfnCallback = (
            error: Error | null,
            response?: chainrpc.SpendEvent
        ) => void;

        /**
         * Callback as used by {@link chainrpc.ChainNotifier#registerBlockEpochNtfn}.
         * @param error Error, if any
         * @param [response] BlockEpoch
         */
        type RegisterBlockEpochNtfnCallback = (
            error: Error | null,
            response?: chainrpc.BlockEpoch
        ) => void;
    }

    /** Properties of a ConfRequest. */
    interface IConfRequest {
        /** ConfRequest txid */
        txid?: Uint8Array | null;

        /** ConfRequest script */
        script?: Uint8Array | null;

        /** ConfRequest num_confs */
        num_confs?: number | null;

        /** ConfRequest height_hint */
        height_hint?: number | null;

        /** ConfRequest include_block */
        include_block?: boolean | null;
    }

    /** Represents a ConfRequest. */
    class ConfRequest implements IConfRequest {
        /**
         * Constructs a new ConfRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: chainrpc.IConfRequest);

        /** ConfRequest txid. */
        public txid: Uint8Array;

        /** ConfRequest script. */
        public script: Uint8Array;

        /** ConfRequest num_confs. */
        public num_confs: number;

        /** ConfRequest height_hint. */
        public height_hint: number;

        /** ConfRequest include_block. */
        public include_block: boolean;

        /**
         * Creates a new ConfRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ConfRequest instance
         */
        public static create(
            properties?: chainrpc.IConfRequest
        ): chainrpc.ConfRequest;

        /**
         * Encodes the specified ConfRequest message. Does not implicitly {@link chainrpc.ConfRequest.verify|verify} messages.
         * @param message ConfRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: chainrpc.IConfRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ConfRequest message, length delimited. Does not implicitly {@link chainrpc.ConfRequest.verify|verify} messages.
         * @param message ConfRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: chainrpc.IConfRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ConfRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ConfRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): chainrpc.ConfRequest;

        /**
         * Decodes a ConfRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ConfRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): chainrpc.ConfRequest;

        /**
         * Verifies a ConfRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ConfRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ConfRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): chainrpc.ConfRequest;

        /**
         * Creates a plain object from a ConfRequest message. Also converts values to other types if specified.
         * @param message ConfRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: chainrpc.ConfRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ConfRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ConfRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ConfDetails. */
    interface IConfDetails {
        /** ConfDetails raw_tx */
        raw_tx?: Uint8Array | null;

        /** ConfDetails block_hash */
        block_hash?: Uint8Array | null;

        /** ConfDetails block_height */
        block_height?: number | null;

        /** ConfDetails tx_index */
        tx_index?: number | null;

        /** ConfDetails raw_block */
        raw_block?: Uint8Array | null;
    }

    /** Represents a ConfDetails. */
    class ConfDetails implements IConfDetails {
        /**
         * Constructs a new ConfDetails.
         * @param [properties] Properties to set
         */
        constructor(properties?: chainrpc.IConfDetails);

        /** ConfDetails raw_tx. */
        public raw_tx: Uint8Array;

        /** ConfDetails block_hash. */
        public block_hash: Uint8Array;

        /** ConfDetails block_height. */
        public block_height: number;

        /** ConfDetails tx_index. */
        public tx_index: number;

        /** ConfDetails raw_block. */
        public raw_block: Uint8Array;

        /**
         * Creates a new ConfDetails instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ConfDetails instance
         */
        public static create(
            properties?: chainrpc.IConfDetails
        ): chainrpc.ConfDetails;

        /**
         * Encodes the specified ConfDetails message. Does not implicitly {@link chainrpc.ConfDetails.verify|verify} messages.
         * @param message ConfDetails message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: chainrpc.IConfDetails,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ConfDetails message, length delimited. Does not implicitly {@link chainrpc.ConfDetails.verify|verify} messages.
         * @param message ConfDetails message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: chainrpc.IConfDetails,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ConfDetails message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ConfDetails
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): chainrpc.ConfDetails;

        /**
         * Decodes a ConfDetails message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ConfDetails
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): chainrpc.ConfDetails;

        /**
         * Verifies a ConfDetails message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ConfDetails message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ConfDetails
         */
        public static fromObject(object: {
            [k: string]: any;
        }): chainrpc.ConfDetails;

        /**
         * Creates a plain object from a ConfDetails message. Also converts values to other types if specified.
         * @param message ConfDetails
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: chainrpc.ConfDetails,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ConfDetails to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ConfDetails
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a Reorg. */
    interface IReorg {}

    /** Represents a Reorg. */
    class Reorg implements IReorg {
        /**
         * Constructs a new Reorg.
         * @param [properties] Properties to set
         */
        constructor(properties?: chainrpc.IReorg);

        /**
         * Creates a new Reorg instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Reorg instance
         */
        public static create(properties?: chainrpc.IReorg): chainrpc.Reorg;

        /**
         * Encodes the specified Reorg message. Does not implicitly {@link chainrpc.Reorg.verify|verify} messages.
         * @param message Reorg message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: chainrpc.IReorg,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Reorg message, length delimited. Does not implicitly {@link chainrpc.Reorg.verify|verify} messages.
         * @param message Reorg message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: chainrpc.IReorg,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a Reorg message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Reorg
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): chainrpc.Reorg;

        /**
         * Decodes a Reorg message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Reorg
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): chainrpc.Reorg;

        /**
         * Verifies a Reorg message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a Reorg message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Reorg
         */
        public static fromObject(object: { [k: string]: any }): chainrpc.Reorg;

        /**
         * Creates a plain object from a Reorg message. Also converts values to other types if specified.
         * @param message Reorg
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: chainrpc.Reorg,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Reorg to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Reorg
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ConfEvent. */
    interface IConfEvent {
        /** ConfEvent conf */
        conf?: chainrpc.IConfDetails | null;

        /** ConfEvent reorg */
        reorg?: chainrpc.IReorg | null;
    }

    /** Represents a ConfEvent. */
    class ConfEvent implements IConfEvent {
        /**
         * Constructs a new ConfEvent.
         * @param [properties] Properties to set
         */
        constructor(properties?: chainrpc.IConfEvent);

        /** ConfEvent conf. */
        public conf?: chainrpc.IConfDetails | null;

        /** ConfEvent reorg. */
        public reorg?: chainrpc.IReorg | null;

        /** ConfEvent event. */
        public event?: 'conf' | 'reorg';

        /**
         * Creates a new ConfEvent instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ConfEvent instance
         */
        public static create(
            properties?: chainrpc.IConfEvent
        ): chainrpc.ConfEvent;

        /**
         * Encodes the specified ConfEvent message. Does not implicitly {@link chainrpc.ConfEvent.verify|verify} messages.
         * @param message ConfEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: chainrpc.IConfEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ConfEvent message, length delimited. Does not implicitly {@link chainrpc.ConfEvent.verify|verify} messages.
         * @param message ConfEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: chainrpc.IConfEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ConfEvent message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ConfEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): chainrpc.ConfEvent;

        /**
         * Decodes a ConfEvent message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ConfEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): chainrpc.ConfEvent;

        /**
         * Verifies a ConfEvent message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ConfEvent message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ConfEvent
         */
        public static fromObject(object: {
            [k: string]: any;
        }): chainrpc.ConfEvent;

        /**
         * Creates a plain object from a ConfEvent message. Also converts values to other types if specified.
         * @param message ConfEvent
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: chainrpc.ConfEvent,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ConfEvent to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ConfEvent
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an Outpoint. */
    interface IOutpoint {
        /** Outpoint hash */
        hash?: Uint8Array | null;

        /** Outpoint index */
        index?: number | null;
    }

    /** Represents an Outpoint. */
    class Outpoint implements IOutpoint {
        /**
         * Constructs a new Outpoint.
         * @param [properties] Properties to set
         */
        constructor(properties?: chainrpc.IOutpoint);

        /** Outpoint hash. */
        public hash: Uint8Array;

        /** Outpoint index. */
        public index: number;

        /**
         * Creates a new Outpoint instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Outpoint instance
         */
        public static create(
            properties?: chainrpc.IOutpoint
        ): chainrpc.Outpoint;

        /**
         * Encodes the specified Outpoint message. Does not implicitly {@link chainrpc.Outpoint.verify|verify} messages.
         * @param message Outpoint message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: chainrpc.IOutpoint,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Outpoint message, length delimited. Does not implicitly {@link chainrpc.Outpoint.verify|verify} messages.
         * @param message Outpoint message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: chainrpc.IOutpoint,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an Outpoint message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Outpoint
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): chainrpc.Outpoint;

        /**
         * Decodes an Outpoint message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Outpoint
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): chainrpc.Outpoint;

        /**
         * Verifies an Outpoint message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an Outpoint message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Outpoint
         */
        public static fromObject(object: {
            [k: string]: any;
        }): chainrpc.Outpoint;

        /**
         * Creates a plain object from an Outpoint message. Also converts values to other types if specified.
         * @param message Outpoint
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: chainrpc.Outpoint,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Outpoint to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Outpoint
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SpendRequest. */
    interface ISpendRequest {
        /** SpendRequest outpoint */
        outpoint?: chainrpc.IOutpoint | null;

        /** SpendRequest script */
        script?: Uint8Array | null;

        /** SpendRequest height_hint */
        height_hint?: number | null;
    }

    /** Represents a SpendRequest. */
    class SpendRequest implements ISpendRequest {
        /**
         * Constructs a new SpendRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: chainrpc.ISpendRequest);

        /** SpendRequest outpoint. */
        public outpoint?: chainrpc.IOutpoint | null;

        /** SpendRequest script. */
        public script: Uint8Array;

        /** SpendRequest height_hint. */
        public height_hint: number;

        /**
         * Creates a new SpendRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SpendRequest instance
         */
        public static create(
            properties?: chainrpc.ISpendRequest
        ): chainrpc.SpendRequest;

        /**
         * Encodes the specified SpendRequest message. Does not implicitly {@link chainrpc.SpendRequest.verify|verify} messages.
         * @param message SpendRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: chainrpc.ISpendRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SpendRequest message, length delimited. Does not implicitly {@link chainrpc.SpendRequest.verify|verify} messages.
         * @param message SpendRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: chainrpc.ISpendRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SpendRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SpendRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): chainrpc.SpendRequest;

        /**
         * Decodes a SpendRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SpendRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): chainrpc.SpendRequest;

        /**
         * Verifies a SpendRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SpendRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SpendRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): chainrpc.SpendRequest;

        /**
         * Creates a plain object from a SpendRequest message. Also converts values to other types if specified.
         * @param message SpendRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: chainrpc.SpendRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SpendRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SpendRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SpendDetails. */
    interface ISpendDetails {
        /** SpendDetails spending_outpoint */
        spending_outpoint?: chainrpc.IOutpoint | null;

        /** SpendDetails raw_spending_tx */
        raw_spending_tx?: Uint8Array | null;

        /** SpendDetails spending_tx_hash */
        spending_tx_hash?: Uint8Array | null;

        /** SpendDetails spending_input_index */
        spending_input_index?: number | null;

        /** SpendDetails spending_height */
        spending_height?: number | null;
    }

    /** Represents a SpendDetails. */
    class SpendDetails implements ISpendDetails {
        /**
         * Constructs a new SpendDetails.
         * @param [properties] Properties to set
         */
        constructor(properties?: chainrpc.ISpendDetails);

        /** SpendDetails spending_outpoint. */
        public spending_outpoint?: chainrpc.IOutpoint | null;

        /** SpendDetails raw_spending_tx. */
        public raw_spending_tx: Uint8Array;

        /** SpendDetails spending_tx_hash. */
        public spending_tx_hash: Uint8Array;

        /** SpendDetails spending_input_index. */
        public spending_input_index: number;

        /** SpendDetails spending_height. */
        public spending_height: number;

        /**
         * Creates a new SpendDetails instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SpendDetails instance
         */
        public static create(
            properties?: chainrpc.ISpendDetails
        ): chainrpc.SpendDetails;

        /**
         * Encodes the specified SpendDetails message. Does not implicitly {@link chainrpc.SpendDetails.verify|verify} messages.
         * @param message SpendDetails message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: chainrpc.ISpendDetails,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SpendDetails message, length delimited. Does not implicitly {@link chainrpc.SpendDetails.verify|verify} messages.
         * @param message SpendDetails message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: chainrpc.ISpendDetails,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SpendDetails message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SpendDetails
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): chainrpc.SpendDetails;

        /**
         * Decodes a SpendDetails message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SpendDetails
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): chainrpc.SpendDetails;

        /**
         * Verifies a SpendDetails message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SpendDetails message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SpendDetails
         */
        public static fromObject(object: {
            [k: string]: any;
        }): chainrpc.SpendDetails;

        /**
         * Creates a plain object from a SpendDetails message. Also converts values to other types if specified.
         * @param message SpendDetails
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: chainrpc.SpendDetails,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SpendDetails to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SpendDetails
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SpendEvent. */
    interface ISpendEvent {
        /** SpendEvent spend */
        spend?: chainrpc.ISpendDetails | null;

        /** SpendEvent reorg */
        reorg?: chainrpc.IReorg | null;
    }

    /** Represents a SpendEvent. */
    class SpendEvent implements ISpendEvent {
        /**
         * Constructs a new SpendEvent.
         * @param [properties] Properties to set
         */
        constructor(properties?: chainrpc.ISpendEvent);

        /** SpendEvent spend. */
        public spend?: chainrpc.ISpendDetails | null;

        /** SpendEvent reorg. */
        public reorg?: chainrpc.IReorg | null;

        /** SpendEvent event. */
        public event?: 'spend' | 'reorg';

        /**
         * Creates a new SpendEvent instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SpendEvent instance
         */
        public static create(
            properties?: chainrpc.ISpendEvent
        ): chainrpc.SpendEvent;

        /**
         * Encodes the specified SpendEvent message. Does not implicitly {@link chainrpc.SpendEvent.verify|verify} messages.
         * @param message SpendEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: chainrpc.ISpendEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SpendEvent message, length delimited. Does not implicitly {@link chainrpc.SpendEvent.verify|verify} messages.
         * @param message SpendEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: chainrpc.ISpendEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SpendEvent message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SpendEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): chainrpc.SpendEvent;

        /**
         * Decodes a SpendEvent message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SpendEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): chainrpc.SpendEvent;

        /**
         * Verifies a SpendEvent message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SpendEvent message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SpendEvent
         */
        public static fromObject(object: {
            [k: string]: any;
        }): chainrpc.SpendEvent;

        /**
         * Creates a plain object from a SpendEvent message. Also converts values to other types if specified.
         * @param message SpendEvent
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: chainrpc.SpendEvent,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SpendEvent to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SpendEvent
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a BlockEpoch. */
    interface IBlockEpoch {
        /** BlockEpoch hash */
        hash?: Uint8Array | null;

        /** BlockEpoch height */
        height?: number | null;
    }

    /** Represents a BlockEpoch. */
    class BlockEpoch implements IBlockEpoch {
        /**
         * Constructs a new BlockEpoch.
         * @param [properties] Properties to set
         */
        constructor(properties?: chainrpc.IBlockEpoch);

        /** BlockEpoch hash. */
        public hash: Uint8Array;

        /** BlockEpoch height. */
        public height: number;

        /**
         * Creates a new BlockEpoch instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BlockEpoch instance
         */
        public static create(
            properties?: chainrpc.IBlockEpoch
        ): chainrpc.BlockEpoch;

        /**
         * Encodes the specified BlockEpoch message. Does not implicitly {@link chainrpc.BlockEpoch.verify|verify} messages.
         * @param message BlockEpoch message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: chainrpc.IBlockEpoch,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BlockEpoch message, length delimited. Does not implicitly {@link chainrpc.BlockEpoch.verify|verify} messages.
         * @param message BlockEpoch message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: chainrpc.IBlockEpoch,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BlockEpoch message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BlockEpoch
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): chainrpc.BlockEpoch;

        /**
         * Decodes a BlockEpoch message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BlockEpoch
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): chainrpc.BlockEpoch;

        /**
         * Verifies a BlockEpoch message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BlockEpoch message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BlockEpoch
         */
        public static fromObject(object: {
            [k: string]: any;
        }): chainrpc.BlockEpoch;

        /**
         * Creates a plain object from a BlockEpoch message. Also converts values to other types if specified.
         * @param message BlockEpoch
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: chainrpc.BlockEpoch,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BlockEpoch to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BlockEpoch
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }
}

/** Namespace invoicesrpc. */
export namespace invoicesrpc {
    /** Represents an Invoices */
    class Invoices extends $protobuf.rpc.Service {
        /**
         * Constructs a new Invoices service.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         */
        constructor(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        );

        /**
         * Creates new Invoices service using the specified rpc implementation.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         * @returns RPC service. Useful where requests and/or responses are streamed.
         */
        public static create(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        ): Invoices;

        /**
         * Calls SubscribeSingleInvoice.
         * @param request SubscribeSingleInvoiceRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and Invoice
         */
        public subscribeSingleInvoice(
            request: invoicesrpc.ISubscribeSingleInvoiceRequest,
            callback: invoicesrpc.Invoices.SubscribeSingleInvoiceCallback
        ): void;

        /**
         * Calls SubscribeSingleInvoice.
         * @param request SubscribeSingleInvoiceRequest message or plain object
         * @returns Promise
         */
        public subscribeSingleInvoice(
            request: invoicesrpc.ISubscribeSingleInvoiceRequest
        ): Promise<lnrpc.Invoice>;

        /**
         * Calls CancelInvoice.
         * @param request CancelInvoiceMsg message or plain object
         * @param callback Node-style callback called with the error, if any, and CancelInvoiceResp
         */
        public cancelInvoice(
            request: invoicesrpc.ICancelInvoiceMsg,
            callback: invoicesrpc.Invoices.CancelInvoiceCallback
        ): void;

        /**
         * Calls CancelInvoice.
         * @param request CancelInvoiceMsg message or plain object
         * @returns Promise
         */
        public cancelInvoice(
            request: invoicesrpc.ICancelInvoiceMsg
        ): Promise<invoicesrpc.CancelInvoiceResp>;

        /**
         * Calls AddHoldInvoice.
         * @param request AddHoldInvoiceRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and AddHoldInvoiceResp
         */
        public addHoldInvoice(
            request: invoicesrpc.IAddHoldInvoiceRequest,
            callback: invoicesrpc.Invoices.AddHoldInvoiceCallback
        ): void;

        /**
         * Calls AddHoldInvoice.
         * @param request AddHoldInvoiceRequest message or plain object
         * @returns Promise
         */
        public addHoldInvoice(
            request: invoicesrpc.IAddHoldInvoiceRequest
        ): Promise<invoicesrpc.AddHoldInvoiceResp>;

        /**
         * Calls SettleInvoice.
         * @param request SettleInvoiceMsg message or plain object
         * @param callback Node-style callback called with the error, if any, and SettleInvoiceResp
         */
        public settleInvoice(
            request: invoicesrpc.ISettleInvoiceMsg,
            callback: invoicesrpc.Invoices.SettleInvoiceCallback
        ): void;

        /**
         * Calls SettleInvoice.
         * @param request SettleInvoiceMsg message or plain object
         * @returns Promise
         */
        public settleInvoice(
            request: invoicesrpc.ISettleInvoiceMsg
        ): Promise<invoicesrpc.SettleInvoiceResp>;

        /**
         * Calls LookupInvoiceV2.
         * @param request LookupInvoiceMsg message or plain object
         * @param callback Node-style callback called with the error, if any, and Invoice
         */
        public lookupInvoiceV2(
            request: invoicesrpc.ILookupInvoiceMsg,
            callback: invoicesrpc.Invoices.LookupInvoiceV2Callback
        ): void;

        /**
         * Calls LookupInvoiceV2.
         * @param request LookupInvoiceMsg message or plain object
         * @returns Promise
         */
        public lookupInvoiceV2(
            request: invoicesrpc.ILookupInvoiceMsg
        ): Promise<lnrpc.Invoice>;

        /**
         * Calls HtlcModifier.
         * @param request HtlcModifyResponse message or plain object
         * @param callback Node-style callback called with the error, if any, and HtlcModifyRequest
         */
        public htlcModifier(
            request: invoicesrpc.IHtlcModifyResponse,
            callback: invoicesrpc.Invoices.HtlcModifierCallback
        ): void;

        /**
         * Calls HtlcModifier.
         * @param request HtlcModifyResponse message or plain object
         * @returns Promise
         */
        public htlcModifier(
            request: invoicesrpc.IHtlcModifyResponse
        ): Promise<invoicesrpc.HtlcModifyRequest>;
    }

    namespace Invoices {
        /**
         * Callback as used by {@link invoicesrpc.Invoices#subscribeSingleInvoice}.
         * @param error Error, if any
         * @param [response] Invoice
         */
        type SubscribeSingleInvoiceCallback = (
            error: Error | null,
            response?: lnrpc.Invoice
        ) => void;

        /**
         * Callback as used by {@link invoicesrpc.Invoices#cancelInvoice}.
         * @param error Error, if any
         * @param [response] CancelInvoiceResp
         */
        type CancelInvoiceCallback = (
            error: Error | null,
            response?: invoicesrpc.CancelInvoiceResp
        ) => void;

        /**
         * Callback as used by {@link invoicesrpc.Invoices#addHoldInvoice}.
         * @param error Error, if any
         * @param [response] AddHoldInvoiceResp
         */
        type AddHoldInvoiceCallback = (
            error: Error | null,
            response?: invoicesrpc.AddHoldInvoiceResp
        ) => void;

        /**
         * Callback as used by {@link invoicesrpc.Invoices#settleInvoice}.
         * @param error Error, if any
         * @param [response] SettleInvoiceResp
         */
        type SettleInvoiceCallback = (
            error: Error | null,
            response?: invoicesrpc.SettleInvoiceResp
        ) => void;

        /**
         * Callback as used by {@link invoicesrpc.Invoices#lookupInvoiceV2}.
         * @param error Error, if any
         * @param [response] Invoice
         */
        type LookupInvoiceV2Callback = (
            error: Error | null,
            response?: lnrpc.Invoice
        ) => void;

        /**
         * Callback as used by {@link invoicesrpc.Invoices#htlcModifier}.
         * @param error Error, if any
         * @param [response] HtlcModifyRequest
         */
        type HtlcModifierCallback = (
            error: Error | null,
            response?: invoicesrpc.HtlcModifyRequest
        ) => void;
    }

    /** Properties of a CancelInvoiceMsg. */
    interface ICancelInvoiceMsg {
        /** CancelInvoiceMsg payment_hash */
        payment_hash?: Uint8Array | null;
    }

    /** Represents a CancelInvoiceMsg. */
    class CancelInvoiceMsg implements ICancelInvoiceMsg {
        /**
         * Constructs a new CancelInvoiceMsg.
         * @param [properties] Properties to set
         */
        constructor(properties?: invoicesrpc.ICancelInvoiceMsg);

        /** CancelInvoiceMsg payment_hash. */
        public payment_hash: Uint8Array;

        /**
         * Creates a new CancelInvoiceMsg instance using the specified properties.
         * @param [properties] Properties to set
         * @returns CancelInvoiceMsg instance
         */
        public static create(
            properties?: invoicesrpc.ICancelInvoiceMsg
        ): invoicesrpc.CancelInvoiceMsg;

        /**
         * Encodes the specified CancelInvoiceMsg message. Does not implicitly {@link invoicesrpc.CancelInvoiceMsg.verify|verify} messages.
         * @param message CancelInvoiceMsg message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: invoicesrpc.ICancelInvoiceMsg,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified CancelInvoiceMsg message, length delimited. Does not implicitly {@link invoicesrpc.CancelInvoiceMsg.verify|verify} messages.
         * @param message CancelInvoiceMsg message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: invoicesrpc.ICancelInvoiceMsg,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a CancelInvoiceMsg message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns CancelInvoiceMsg
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): invoicesrpc.CancelInvoiceMsg;

        /**
         * Decodes a CancelInvoiceMsg message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns CancelInvoiceMsg
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): invoicesrpc.CancelInvoiceMsg;

        /**
         * Verifies a CancelInvoiceMsg message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a CancelInvoiceMsg message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns CancelInvoiceMsg
         */
        public static fromObject(object: {
            [k: string]: any;
        }): invoicesrpc.CancelInvoiceMsg;

        /**
         * Creates a plain object from a CancelInvoiceMsg message. Also converts values to other types if specified.
         * @param message CancelInvoiceMsg
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: invoicesrpc.CancelInvoiceMsg,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this CancelInvoiceMsg to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for CancelInvoiceMsg
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a CancelInvoiceResp. */
    interface ICancelInvoiceResp {}

    /** Represents a CancelInvoiceResp. */
    class CancelInvoiceResp implements ICancelInvoiceResp {
        /**
         * Constructs a new CancelInvoiceResp.
         * @param [properties] Properties to set
         */
        constructor(properties?: invoicesrpc.ICancelInvoiceResp);

        /**
         * Creates a new CancelInvoiceResp instance using the specified properties.
         * @param [properties] Properties to set
         * @returns CancelInvoiceResp instance
         */
        public static create(
            properties?: invoicesrpc.ICancelInvoiceResp
        ): invoicesrpc.CancelInvoiceResp;

        /**
         * Encodes the specified CancelInvoiceResp message. Does not implicitly {@link invoicesrpc.CancelInvoiceResp.verify|verify} messages.
         * @param message CancelInvoiceResp message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: invoicesrpc.ICancelInvoiceResp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified CancelInvoiceResp message, length delimited. Does not implicitly {@link invoicesrpc.CancelInvoiceResp.verify|verify} messages.
         * @param message CancelInvoiceResp message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: invoicesrpc.ICancelInvoiceResp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a CancelInvoiceResp message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns CancelInvoiceResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): invoicesrpc.CancelInvoiceResp;

        /**
         * Decodes a CancelInvoiceResp message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns CancelInvoiceResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): invoicesrpc.CancelInvoiceResp;

        /**
         * Verifies a CancelInvoiceResp message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a CancelInvoiceResp message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns CancelInvoiceResp
         */
        public static fromObject(object: {
            [k: string]: any;
        }): invoicesrpc.CancelInvoiceResp;

        /**
         * Creates a plain object from a CancelInvoiceResp message. Also converts values to other types if specified.
         * @param message CancelInvoiceResp
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: invoicesrpc.CancelInvoiceResp,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this CancelInvoiceResp to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for CancelInvoiceResp
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AddHoldInvoiceRequest. */
    interface IAddHoldInvoiceRequest {
        /** AddHoldInvoiceRequest memo */
        memo?: string | null;

        /** AddHoldInvoiceRequest hash */
        hash?: Uint8Array | null;

        /** AddHoldInvoiceRequest value */
        value?: Long | null;

        /** AddHoldInvoiceRequest value_msat */
        value_msat?: Long | null;

        /** AddHoldInvoiceRequest description_hash */
        description_hash?: Uint8Array | null;

        /** AddHoldInvoiceRequest expiry */
        expiry?: Long | null;

        /** AddHoldInvoiceRequest fallback_addr */
        fallback_addr?: string | null;

        /** AddHoldInvoiceRequest cltv_expiry */
        cltv_expiry?: Long | null;

        /** AddHoldInvoiceRequest route_hints */
        route_hints?: lnrpc.IRouteHint[] | null;

        /** AddHoldInvoiceRequest private */
        private?: boolean | null;
    }

    /** Represents an AddHoldInvoiceRequest. */
    class AddHoldInvoiceRequest implements IAddHoldInvoiceRequest {
        /**
         * Constructs a new AddHoldInvoiceRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: invoicesrpc.IAddHoldInvoiceRequest);

        /** AddHoldInvoiceRequest memo. */
        public memo: string;

        /** AddHoldInvoiceRequest hash. */
        public hash: Uint8Array;

        /** AddHoldInvoiceRequest value. */
        public value: Long;

        /** AddHoldInvoiceRequest value_msat. */
        public value_msat: Long;

        /** AddHoldInvoiceRequest description_hash. */
        public description_hash: Uint8Array;

        /** AddHoldInvoiceRequest expiry. */
        public expiry: Long;

        /** AddHoldInvoiceRequest fallback_addr. */
        public fallback_addr: string;

        /** AddHoldInvoiceRequest cltv_expiry. */
        public cltv_expiry: Long;

        /** AddHoldInvoiceRequest route_hints. */
        public route_hints: lnrpc.IRouteHint[];

        /** AddHoldInvoiceRequest private. */
        public private: boolean;

        /**
         * Creates a new AddHoldInvoiceRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AddHoldInvoiceRequest instance
         */
        public static create(
            properties?: invoicesrpc.IAddHoldInvoiceRequest
        ): invoicesrpc.AddHoldInvoiceRequest;

        /**
         * Encodes the specified AddHoldInvoiceRequest message. Does not implicitly {@link invoicesrpc.AddHoldInvoiceRequest.verify|verify} messages.
         * @param message AddHoldInvoiceRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: invoicesrpc.IAddHoldInvoiceRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AddHoldInvoiceRequest message, length delimited. Does not implicitly {@link invoicesrpc.AddHoldInvoiceRequest.verify|verify} messages.
         * @param message AddHoldInvoiceRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: invoicesrpc.IAddHoldInvoiceRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AddHoldInvoiceRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AddHoldInvoiceRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): invoicesrpc.AddHoldInvoiceRequest;

        /**
         * Decodes an AddHoldInvoiceRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AddHoldInvoiceRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): invoicesrpc.AddHoldInvoiceRequest;

        /**
         * Verifies an AddHoldInvoiceRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AddHoldInvoiceRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AddHoldInvoiceRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): invoicesrpc.AddHoldInvoiceRequest;

        /**
         * Creates a plain object from an AddHoldInvoiceRequest message. Also converts values to other types if specified.
         * @param message AddHoldInvoiceRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: invoicesrpc.AddHoldInvoiceRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AddHoldInvoiceRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AddHoldInvoiceRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AddHoldInvoiceResp. */
    interface IAddHoldInvoiceResp {
        /** AddHoldInvoiceResp payment_request */
        payment_request?: string | null;

        /** AddHoldInvoiceResp add_index */
        add_index?: Long | null;

        /** AddHoldInvoiceResp payment_addr */
        payment_addr?: Uint8Array | null;
    }

    /** Represents an AddHoldInvoiceResp. */
    class AddHoldInvoiceResp implements IAddHoldInvoiceResp {
        /**
         * Constructs a new AddHoldInvoiceResp.
         * @param [properties] Properties to set
         */
        constructor(properties?: invoicesrpc.IAddHoldInvoiceResp);

        /** AddHoldInvoiceResp payment_request. */
        public payment_request: string;

        /** AddHoldInvoiceResp add_index. */
        public add_index: Long;

        /** AddHoldInvoiceResp payment_addr. */
        public payment_addr: Uint8Array;

        /**
         * Creates a new AddHoldInvoiceResp instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AddHoldInvoiceResp instance
         */
        public static create(
            properties?: invoicesrpc.IAddHoldInvoiceResp
        ): invoicesrpc.AddHoldInvoiceResp;

        /**
         * Encodes the specified AddHoldInvoiceResp message. Does not implicitly {@link invoicesrpc.AddHoldInvoiceResp.verify|verify} messages.
         * @param message AddHoldInvoiceResp message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: invoicesrpc.IAddHoldInvoiceResp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AddHoldInvoiceResp message, length delimited. Does not implicitly {@link invoicesrpc.AddHoldInvoiceResp.verify|verify} messages.
         * @param message AddHoldInvoiceResp message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: invoicesrpc.IAddHoldInvoiceResp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AddHoldInvoiceResp message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AddHoldInvoiceResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): invoicesrpc.AddHoldInvoiceResp;

        /**
         * Decodes an AddHoldInvoiceResp message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AddHoldInvoiceResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): invoicesrpc.AddHoldInvoiceResp;

        /**
         * Verifies an AddHoldInvoiceResp message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AddHoldInvoiceResp message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AddHoldInvoiceResp
         */
        public static fromObject(object: {
            [k: string]: any;
        }): invoicesrpc.AddHoldInvoiceResp;

        /**
         * Creates a plain object from an AddHoldInvoiceResp message. Also converts values to other types if specified.
         * @param message AddHoldInvoiceResp
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: invoicesrpc.AddHoldInvoiceResp,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AddHoldInvoiceResp to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AddHoldInvoiceResp
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SettleInvoiceMsg. */
    interface ISettleInvoiceMsg {
        /** SettleInvoiceMsg preimage */
        preimage?: Uint8Array | null;
    }

    /** Represents a SettleInvoiceMsg. */
    class SettleInvoiceMsg implements ISettleInvoiceMsg {
        /**
         * Constructs a new SettleInvoiceMsg.
         * @param [properties] Properties to set
         */
        constructor(properties?: invoicesrpc.ISettleInvoiceMsg);

        /** SettleInvoiceMsg preimage. */
        public preimage: Uint8Array;

        /**
         * Creates a new SettleInvoiceMsg instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SettleInvoiceMsg instance
         */
        public static create(
            properties?: invoicesrpc.ISettleInvoiceMsg
        ): invoicesrpc.SettleInvoiceMsg;

        /**
         * Encodes the specified SettleInvoiceMsg message. Does not implicitly {@link invoicesrpc.SettleInvoiceMsg.verify|verify} messages.
         * @param message SettleInvoiceMsg message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: invoicesrpc.ISettleInvoiceMsg,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SettleInvoiceMsg message, length delimited. Does not implicitly {@link invoicesrpc.SettleInvoiceMsg.verify|verify} messages.
         * @param message SettleInvoiceMsg message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: invoicesrpc.ISettleInvoiceMsg,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SettleInvoiceMsg message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SettleInvoiceMsg
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): invoicesrpc.SettleInvoiceMsg;

        /**
         * Decodes a SettleInvoiceMsg message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SettleInvoiceMsg
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): invoicesrpc.SettleInvoiceMsg;

        /**
         * Verifies a SettleInvoiceMsg message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SettleInvoiceMsg message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SettleInvoiceMsg
         */
        public static fromObject(object: {
            [k: string]: any;
        }): invoicesrpc.SettleInvoiceMsg;

        /**
         * Creates a plain object from a SettleInvoiceMsg message. Also converts values to other types if specified.
         * @param message SettleInvoiceMsg
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: invoicesrpc.SettleInvoiceMsg,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SettleInvoiceMsg to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SettleInvoiceMsg
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SettleInvoiceResp. */
    interface ISettleInvoiceResp {}

    /** Represents a SettleInvoiceResp. */
    class SettleInvoiceResp implements ISettleInvoiceResp {
        /**
         * Constructs a new SettleInvoiceResp.
         * @param [properties] Properties to set
         */
        constructor(properties?: invoicesrpc.ISettleInvoiceResp);

        /**
         * Creates a new SettleInvoiceResp instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SettleInvoiceResp instance
         */
        public static create(
            properties?: invoicesrpc.ISettleInvoiceResp
        ): invoicesrpc.SettleInvoiceResp;

        /**
         * Encodes the specified SettleInvoiceResp message. Does not implicitly {@link invoicesrpc.SettleInvoiceResp.verify|verify} messages.
         * @param message SettleInvoiceResp message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: invoicesrpc.ISettleInvoiceResp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SettleInvoiceResp message, length delimited. Does not implicitly {@link invoicesrpc.SettleInvoiceResp.verify|verify} messages.
         * @param message SettleInvoiceResp message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: invoicesrpc.ISettleInvoiceResp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SettleInvoiceResp message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SettleInvoiceResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): invoicesrpc.SettleInvoiceResp;

        /**
         * Decodes a SettleInvoiceResp message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SettleInvoiceResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): invoicesrpc.SettleInvoiceResp;

        /**
         * Verifies a SettleInvoiceResp message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SettleInvoiceResp message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SettleInvoiceResp
         */
        public static fromObject(object: {
            [k: string]: any;
        }): invoicesrpc.SettleInvoiceResp;

        /**
         * Creates a plain object from a SettleInvoiceResp message. Also converts values to other types if specified.
         * @param message SettleInvoiceResp
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: invoicesrpc.SettleInvoiceResp,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SettleInvoiceResp to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SettleInvoiceResp
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SubscribeSingleInvoiceRequest. */
    interface ISubscribeSingleInvoiceRequest {
        /** SubscribeSingleInvoiceRequest r_hash */
        r_hash?: Uint8Array | null;
    }

    /** Represents a SubscribeSingleInvoiceRequest. */
    class SubscribeSingleInvoiceRequest
        implements ISubscribeSingleInvoiceRequest
    {
        /**
         * Constructs a new SubscribeSingleInvoiceRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: invoicesrpc.ISubscribeSingleInvoiceRequest);

        /** SubscribeSingleInvoiceRequest r_hash. */
        public r_hash: Uint8Array;

        /**
         * Creates a new SubscribeSingleInvoiceRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SubscribeSingleInvoiceRequest instance
         */
        public static create(
            properties?: invoicesrpc.ISubscribeSingleInvoiceRequest
        ): invoicesrpc.SubscribeSingleInvoiceRequest;

        /**
         * Encodes the specified SubscribeSingleInvoiceRequest message. Does not implicitly {@link invoicesrpc.SubscribeSingleInvoiceRequest.verify|verify} messages.
         * @param message SubscribeSingleInvoiceRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: invoicesrpc.ISubscribeSingleInvoiceRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SubscribeSingleInvoiceRequest message, length delimited. Does not implicitly {@link invoicesrpc.SubscribeSingleInvoiceRequest.verify|verify} messages.
         * @param message SubscribeSingleInvoiceRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: invoicesrpc.ISubscribeSingleInvoiceRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SubscribeSingleInvoiceRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SubscribeSingleInvoiceRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): invoicesrpc.SubscribeSingleInvoiceRequest;

        /**
         * Decodes a SubscribeSingleInvoiceRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SubscribeSingleInvoiceRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): invoicesrpc.SubscribeSingleInvoiceRequest;

        /**
         * Verifies a SubscribeSingleInvoiceRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SubscribeSingleInvoiceRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SubscribeSingleInvoiceRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): invoicesrpc.SubscribeSingleInvoiceRequest;

        /**
         * Creates a plain object from a SubscribeSingleInvoiceRequest message. Also converts values to other types if specified.
         * @param message SubscribeSingleInvoiceRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: invoicesrpc.SubscribeSingleInvoiceRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SubscribeSingleInvoiceRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SubscribeSingleInvoiceRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** LookupModifier enum. */
    enum LookupModifier {
        DEFAULT = 0,
        HTLC_SET_ONLY = 1,
        HTLC_SET_BLANK = 2
    }

    /** Properties of a LookupInvoiceMsg. */
    interface ILookupInvoiceMsg {
        /** LookupInvoiceMsg payment_hash */
        payment_hash?: Uint8Array | null;

        /** LookupInvoiceMsg payment_addr */
        payment_addr?: Uint8Array | null;

        /** LookupInvoiceMsg set_id */
        set_id?: Uint8Array | null;

        /** LookupInvoiceMsg lookup_modifier */
        lookup_modifier?: invoicesrpc.LookupModifier | null;
    }

    /** Represents a LookupInvoiceMsg. */
    class LookupInvoiceMsg implements ILookupInvoiceMsg {
        /**
         * Constructs a new LookupInvoiceMsg.
         * @param [properties] Properties to set
         */
        constructor(properties?: invoicesrpc.ILookupInvoiceMsg);

        /** LookupInvoiceMsg payment_hash. */
        public payment_hash?: Uint8Array | null;

        /** LookupInvoiceMsg payment_addr. */
        public payment_addr?: Uint8Array | null;

        /** LookupInvoiceMsg set_id. */
        public set_id?: Uint8Array | null;

        /** LookupInvoiceMsg lookup_modifier. */
        public lookup_modifier: invoicesrpc.LookupModifier;

        /** LookupInvoiceMsg invoice_ref. */
        public invoice_ref?: 'payment_hash' | 'payment_addr' | 'set_id';

        /**
         * Creates a new LookupInvoiceMsg instance using the specified properties.
         * @param [properties] Properties to set
         * @returns LookupInvoiceMsg instance
         */
        public static create(
            properties?: invoicesrpc.ILookupInvoiceMsg
        ): invoicesrpc.LookupInvoiceMsg;

        /**
         * Encodes the specified LookupInvoiceMsg message. Does not implicitly {@link invoicesrpc.LookupInvoiceMsg.verify|verify} messages.
         * @param message LookupInvoiceMsg message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: invoicesrpc.ILookupInvoiceMsg,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified LookupInvoiceMsg message, length delimited. Does not implicitly {@link invoicesrpc.LookupInvoiceMsg.verify|verify} messages.
         * @param message LookupInvoiceMsg message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: invoicesrpc.ILookupInvoiceMsg,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a LookupInvoiceMsg message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns LookupInvoiceMsg
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): invoicesrpc.LookupInvoiceMsg;

        /**
         * Decodes a LookupInvoiceMsg message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns LookupInvoiceMsg
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): invoicesrpc.LookupInvoiceMsg;

        /**
         * Verifies a LookupInvoiceMsg message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a LookupInvoiceMsg message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns LookupInvoiceMsg
         */
        public static fromObject(object: {
            [k: string]: any;
        }): invoicesrpc.LookupInvoiceMsg;

        /**
         * Creates a plain object from a LookupInvoiceMsg message. Also converts values to other types if specified.
         * @param message LookupInvoiceMsg
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: invoicesrpc.LookupInvoiceMsg,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this LookupInvoiceMsg to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for LookupInvoiceMsg
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a CircuitKey. */
    interface ICircuitKey {
        /** CircuitKey chan_id */
        chan_id?: Long | null;

        /** CircuitKey htlc_id */
        htlc_id?: Long | null;
    }

    /** Represents a CircuitKey. */
    class CircuitKey implements ICircuitKey {
        /**
         * Constructs a new CircuitKey.
         * @param [properties] Properties to set
         */
        constructor(properties?: invoicesrpc.ICircuitKey);

        /** CircuitKey chan_id. */
        public chan_id: Long;

        /** CircuitKey htlc_id. */
        public htlc_id: Long;

        /**
         * Creates a new CircuitKey instance using the specified properties.
         * @param [properties] Properties to set
         * @returns CircuitKey instance
         */
        public static create(
            properties?: invoicesrpc.ICircuitKey
        ): invoicesrpc.CircuitKey;

        /**
         * Encodes the specified CircuitKey message. Does not implicitly {@link invoicesrpc.CircuitKey.verify|verify} messages.
         * @param message CircuitKey message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: invoicesrpc.ICircuitKey,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified CircuitKey message, length delimited. Does not implicitly {@link invoicesrpc.CircuitKey.verify|verify} messages.
         * @param message CircuitKey message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: invoicesrpc.ICircuitKey,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a CircuitKey message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns CircuitKey
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): invoicesrpc.CircuitKey;

        /**
         * Decodes a CircuitKey message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns CircuitKey
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): invoicesrpc.CircuitKey;

        /**
         * Verifies a CircuitKey message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a CircuitKey message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns CircuitKey
         */
        public static fromObject(object: {
            [k: string]: any;
        }): invoicesrpc.CircuitKey;

        /**
         * Creates a plain object from a CircuitKey message. Also converts values to other types if specified.
         * @param message CircuitKey
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: invoicesrpc.CircuitKey,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this CircuitKey to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for CircuitKey
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a HtlcModifyRequest. */
    interface IHtlcModifyRequest {
        /** HtlcModifyRequest invoice */
        invoice?: lnrpc.IInvoice | null;

        /** HtlcModifyRequest exit_htlc_circuit_key */
        exit_htlc_circuit_key?: invoicesrpc.ICircuitKey | null;

        /** HtlcModifyRequest exit_htlc_amt */
        exit_htlc_amt?: Long | null;

        /** HtlcModifyRequest exit_htlc_expiry */
        exit_htlc_expiry?: number | null;

        /** HtlcModifyRequest current_height */
        current_height?: number | null;

        /** HtlcModifyRequest exit_htlc_wire_custom_records */
        exit_htlc_wire_custom_records?: { [k: string]: Uint8Array } | null;
    }

    /** Represents a HtlcModifyRequest. */
    class HtlcModifyRequest implements IHtlcModifyRequest {
        /**
         * Constructs a new HtlcModifyRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: invoicesrpc.IHtlcModifyRequest);

        /** HtlcModifyRequest invoice. */
        public invoice?: lnrpc.IInvoice | null;

        /** HtlcModifyRequest exit_htlc_circuit_key. */
        public exit_htlc_circuit_key?: invoicesrpc.ICircuitKey | null;

        /** HtlcModifyRequest exit_htlc_amt. */
        public exit_htlc_amt: Long;

        /** HtlcModifyRequest exit_htlc_expiry. */
        public exit_htlc_expiry: number;

        /** HtlcModifyRequest current_height. */
        public current_height: number;

        /** HtlcModifyRequest exit_htlc_wire_custom_records. */
        public exit_htlc_wire_custom_records: { [k: string]: Uint8Array };

        /**
         * Creates a new HtlcModifyRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns HtlcModifyRequest instance
         */
        public static create(
            properties?: invoicesrpc.IHtlcModifyRequest
        ): invoicesrpc.HtlcModifyRequest;

        /**
         * Encodes the specified HtlcModifyRequest message. Does not implicitly {@link invoicesrpc.HtlcModifyRequest.verify|verify} messages.
         * @param message HtlcModifyRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: invoicesrpc.IHtlcModifyRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified HtlcModifyRequest message, length delimited. Does not implicitly {@link invoicesrpc.HtlcModifyRequest.verify|verify} messages.
         * @param message HtlcModifyRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: invoicesrpc.IHtlcModifyRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a HtlcModifyRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns HtlcModifyRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): invoicesrpc.HtlcModifyRequest;

        /**
         * Decodes a HtlcModifyRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns HtlcModifyRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): invoicesrpc.HtlcModifyRequest;

        /**
         * Verifies a HtlcModifyRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a HtlcModifyRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns HtlcModifyRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): invoicesrpc.HtlcModifyRequest;

        /**
         * Creates a plain object from a HtlcModifyRequest message. Also converts values to other types if specified.
         * @param message HtlcModifyRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: invoicesrpc.HtlcModifyRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this HtlcModifyRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for HtlcModifyRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a HtlcModifyResponse. */
    interface IHtlcModifyResponse {
        /** HtlcModifyResponse circuit_key */
        circuit_key?: invoicesrpc.ICircuitKey | null;

        /** HtlcModifyResponse amt_paid */
        amt_paid?: Long | null;

        /** HtlcModifyResponse cancel_set */
        cancel_set?: boolean | null;
    }

    /** Represents a HtlcModifyResponse. */
    class HtlcModifyResponse implements IHtlcModifyResponse {
        /**
         * Constructs a new HtlcModifyResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: invoicesrpc.IHtlcModifyResponse);

        /** HtlcModifyResponse circuit_key. */
        public circuit_key?: invoicesrpc.ICircuitKey | null;

        /** HtlcModifyResponse amt_paid. */
        public amt_paid?: Long | null;

        /** HtlcModifyResponse cancel_set. */
        public cancel_set: boolean;

        /** HtlcModifyResponse _amt_paid. */
        public _amt_paid?: 'amt_paid';

        /**
         * Creates a new HtlcModifyResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns HtlcModifyResponse instance
         */
        public static create(
            properties?: invoicesrpc.IHtlcModifyResponse
        ): invoicesrpc.HtlcModifyResponse;

        /**
         * Encodes the specified HtlcModifyResponse message. Does not implicitly {@link invoicesrpc.HtlcModifyResponse.verify|verify} messages.
         * @param message HtlcModifyResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: invoicesrpc.IHtlcModifyResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified HtlcModifyResponse message, length delimited. Does not implicitly {@link invoicesrpc.HtlcModifyResponse.verify|verify} messages.
         * @param message HtlcModifyResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: invoicesrpc.IHtlcModifyResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a HtlcModifyResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns HtlcModifyResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): invoicesrpc.HtlcModifyResponse;

        /**
         * Decodes a HtlcModifyResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns HtlcModifyResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): invoicesrpc.HtlcModifyResponse;

        /**
         * Verifies a HtlcModifyResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a HtlcModifyResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns HtlcModifyResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): invoicesrpc.HtlcModifyResponse;

        /**
         * Creates a plain object from a HtlcModifyResponse message. Also converts values to other types if specified.
         * @param message HtlcModifyResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: invoicesrpc.HtlcModifyResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this HtlcModifyResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for HtlcModifyResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }
}

/** Namespace neutrinorpc. */
export namespace neutrinorpc {
    /** Represents a NeutrinoKit */
    class NeutrinoKit extends $protobuf.rpc.Service {
        /**
         * Constructs a new NeutrinoKit service.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         */
        constructor(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        );

        /**
         * Creates new NeutrinoKit service using the specified rpc implementation.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         * @returns RPC service. Useful where requests and/or responses are streamed.
         */
        public static create(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        ): NeutrinoKit;

        /**
         * Calls Status.
         * @param request StatusRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and StatusResponse
         */
        public status(
            request: neutrinorpc.IStatusRequest,
            callback: neutrinorpc.NeutrinoKit.StatusCallback
        ): void;

        /**
         * Calls Status.
         * @param request StatusRequest message or plain object
         * @returns Promise
         */
        public status(
            request: neutrinorpc.IStatusRequest
        ): Promise<neutrinorpc.StatusResponse>;

        /**
         * Calls AddPeer.
         * @param request AddPeerRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and AddPeerResponse
         */
        public addPeer(
            request: neutrinorpc.IAddPeerRequest,
            callback: neutrinorpc.NeutrinoKit.AddPeerCallback
        ): void;

        /**
         * Calls AddPeer.
         * @param request AddPeerRequest message or plain object
         * @returns Promise
         */
        public addPeer(
            request: neutrinorpc.IAddPeerRequest
        ): Promise<neutrinorpc.AddPeerResponse>;

        /**
         * Calls DisconnectPeer.
         * @param request DisconnectPeerRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and DisconnectPeerResponse
         */
        public disconnectPeer(
            request: neutrinorpc.IDisconnectPeerRequest,
            callback: neutrinorpc.NeutrinoKit.DisconnectPeerCallback
        ): void;

        /**
         * Calls DisconnectPeer.
         * @param request DisconnectPeerRequest message or plain object
         * @returns Promise
         */
        public disconnectPeer(
            request: neutrinorpc.IDisconnectPeerRequest
        ): Promise<neutrinorpc.DisconnectPeerResponse>;

        /**
         * Calls IsBanned.
         * @param request IsBannedRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and IsBannedResponse
         */
        public isBanned(
            request: neutrinorpc.IIsBannedRequest,
            callback: neutrinorpc.NeutrinoKit.IsBannedCallback
        ): void;

        /**
         * Calls IsBanned.
         * @param request IsBannedRequest message or plain object
         * @returns Promise
         */
        public isBanned(
            request: neutrinorpc.IIsBannedRequest
        ): Promise<neutrinorpc.IsBannedResponse>;

        /**
         * Calls GetBlockHeader.
         * @param request GetBlockHeaderRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and GetBlockHeaderResponse
         */
        public getBlockHeader(
            request: neutrinorpc.IGetBlockHeaderRequest,
            callback: neutrinorpc.NeutrinoKit.GetBlockHeaderCallback
        ): void;

        /**
         * Calls GetBlockHeader.
         * @param request GetBlockHeaderRequest message or plain object
         * @returns Promise
         */
        public getBlockHeader(
            request: neutrinorpc.IGetBlockHeaderRequest
        ): Promise<neutrinorpc.GetBlockHeaderResponse>;

        /**
         * Calls GetBlock.
         * @param request GetBlockRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and GetBlockResponse
         */
        public getBlock(
            request: neutrinorpc.IGetBlockRequest,
            callback: neutrinorpc.NeutrinoKit.GetBlockCallback
        ): void;

        /**
         * Calls GetBlock.
         * @param request GetBlockRequest message or plain object
         * @returns Promise
         */
        public getBlock(
            request: neutrinorpc.IGetBlockRequest
        ): Promise<neutrinorpc.GetBlockResponse>;

        /**
         * Calls GetCFilter.
         * @param request GetCFilterRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and GetCFilterResponse
         */
        public getCFilter(
            request: neutrinorpc.IGetCFilterRequest,
            callback: neutrinorpc.NeutrinoKit.GetCFilterCallback
        ): void;

        /**
         * Calls GetCFilter.
         * @param request GetCFilterRequest message or plain object
         * @returns Promise
         */
        public getCFilter(
            request: neutrinorpc.IGetCFilterRequest
        ): Promise<neutrinorpc.GetCFilterResponse>;

        /**
         * Calls GetBlockHash.
         * @param request GetBlockHashRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and GetBlockHashResponse
         */
        public getBlockHash(
            request: neutrinorpc.IGetBlockHashRequest,
            callback: neutrinorpc.NeutrinoKit.GetBlockHashCallback
        ): void;

        /**
         * Calls GetBlockHash.
         * @param request GetBlockHashRequest message or plain object
         * @returns Promise
         */
        public getBlockHash(
            request: neutrinorpc.IGetBlockHashRequest
        ): Promise<neutrinorpc.GetBlockHashResponse>;
    }

    namespace NeutrinoKit {
        /**
         * Callback as used by {@link neutrinorpc.NeutrinoKit#status}.
         * @param error Error, if any
         * @param [response] StatusResponse
         */
        type StatusCallback = (
            error: Error | null,
            response?: neutrinorpc.StatusResponse
        ) => void;

        /**
         * Callback as used by {@link neutrinorpc.NeutrinoKit#addPeer}.
         * @param error Error, if any
         * @param [response] AddPeerResponse
         */
        type AddPeerCallback = (
            error: Error | null,
            response?: neutrinorpc.AddPeerResponse
        ) => void;

        /**
         * Callback as used by {@link neutrinorpc.NeutrinoKit#disconnectPeer}.
         * @param error Error, if any
         * @param [response] DisconnectPeerResponse
         */
        type DisconnectPeerCallback = (
            error: Error | null,
            response?: neutrinorpc.DisconnectPeerResponse
        ) => void;

        /**
         * Callback as used by {@link neutrinorpc.NeutrinoKit#isBanned}.
         * @param error Error, if any
         * @param [response] IsBannedResponse
         */
        type IsBannedCallback = (
            error: Error | null,
            response?: neutrinorpc.IsBannedResponse
        ) => void;

        /**
         * Callback as used by {@link neutrinorpc.NeutrinoKit#getBlockHeader}.
         * @param error Error, if any
         * @param [response] GetBlockHeaderResponse
         */
        type GetBlockHeaderCallback = (
            error: Error | null,
            response?: neutrinorpc.GetBlockHeaderResponse
        ) => void;

        /**
         * Callback as used by {@link neutrinorpc.NeutrinoKit#getBlock}.
         * @param error Error, if any
         * @param [response] GetBlockResponse
         */
        type GetBlockCallback = (
            error: Error | null,
            response?: neutrinorpc.GetBlockResponse
        ) => void;

        /**
         * Callback as used by {@link neutrinorpc.NeutrinoKit#getCFilter}.
         * @param error Error, if any
         * @param [response] GetCFilterResponse
         */
        type GetCFilterCallback = (
            error: Error | null,
            response?: neutrinorpc.GetCFilterResponse
        ) => void;

        /**
         * Callback as used by {@link neutrinorpc.NeutrinoKit#getBlockHash}.
         * @param error Error, if any
         * @param [response] GetBlockHashResponse
         */
        type GetBlockHashCallback = (
            error: Error | null,
            response?: neutrinorpc.GetBlockHashResponse
        ) => void;
    }

    /** Properties of a StatusRequest. */
    interface IStatusRequest {}

    /** Represents a StatusRequest. */
    class StatusRequest implements IStatusRequest {
        /**
         * Constructs a new StatusRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: neutrinorpc.IStatusRequest);

        /**
         * Creates a new StatusRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StatusRequest instance
         */
        public static create(
            properties?: neutrinorpc.IStatusRequest
        ): neutrinorpc.StatusRequest;

        /**
         * Encodes the specified StatusRequest message. Does not implicitly {@link neutrinorpc.StatusRequest.verify|verify} messages.
         * @param message StatusRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: neutrinorpc.IStatusRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified StatusRequest message, length delimited. Does not implicitly {@link neutrinorpc.StatusRequest.verify|verify} messages.
         * @param message StatusRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: neutrinorpc.IStatusRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a StatusRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StatusRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): neutrinorpc.StatusRequest;

        /**
         * Decodes a StatusRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StatusRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): neutrinorpc.StatusRequest;

        /**
         * Verifies a StatusRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a StatusRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StatusRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): neutrinorpc.StatusRequest;

        /**
         * Creates a plain object from a StatusRequest message. Also converts values to other types if specified.
         * @param message StatusRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: neutrinorpc.StatusRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this StatusRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StatusRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a StatusResponse. */
    interface IStatusResponse {
        /** StatusResponse active */
        active?: boolean | null;

        /** StatusResponse synced */
        synced?: boolean | null;

        /** StatusResponse block_height */
        block_height?: number | null;

        /** StatusResponse block_hash */
        block_hash?: string | null;

        /** StatusResponse peers */
        peers?: string[] | null;
    }

    /** Represents a StatusResponse. */
    class StatusResponse implements IStatusResponse {
        /**
         * Constructs a new StatusResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: neutrinorpc.IStatusResponse);

        /** StatusResponse active. */
        public active: boolean;

        /** StatusResponse synced. */
        public synced: boolean;

        /** StatusResponse block_height. */
        public block_height: number;

        /** StatusResponse block_hash. */
        public block_hash: string;

        /** StatusResponse peers. */
        public peers: string[];

        /**
         * Creates a new StatusResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StatusResponse instance
         */
        public static create(
            properties?: neutrinorpc.IStatusResponse
        ): neutrinorpc.StatusResponse;

        /**
         * Encodes the specified StatusResponse message. Does not implicitly {@link neutrinorpc.StatusResponse.verify|verify} messages.
         * @param message StatusResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: neutrinorpc.IStatusResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified StatusResponse message, length delimited. Does not implicitly {@link neutrinorpc.StatusResponse.verify|verify} messages.
         * @param message StatusResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: neutrinorpc.IStatusResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a StatusResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StatusResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): neutrinorpc.StatusResponse;

        /**
         * Decodes a StatusResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StatusResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): neutrinorpc.StatusResponse;

        /**
         * Verifies a StatusResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a StatusResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StatusResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): neutrinorpc.StatusResponse;

        /**
         * Creates a plain object from a StatusResponse message. Also converts values to other types if specified.
         * @param message StatusResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: neutrinorpc.StatusResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this StatusResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StatusResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AddPeerRequest. */
    interface IAddPeerRequest {
        /** AddPeerRequest peer_addrs */
        peer_addrs?: string | null;
    }

    /** Represents an AddPeerRequest. */
    class AddPeerRequest implements IAddPeerRequest {
        /**
         * Constructs a new AddPeerRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: neutrinorpc.IAddPeerRequest);

        /** AddPeerRequest peer_addrs. */
        public peer_addrs: string;

        /**
         * Creates a new AddPeerRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AddPeerRequest instance
         */
        public static create(
            properties?: neutrinorpc.IAddPeerRequest
        ): neutrinorpc.AddPeerRequest;

        /**
         * Encodes the specified AddPeerRequest message. Does not implicitly {@link neutrinorpc.AddPeerRequest.verify|verify} messages.
         * @param message AddPeerRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: neutrinorpc.IAddPeerRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AddPeerRequest message, length delimited. Does not implicitly {@link neutrinorpc.AddPeerRequest.verify|verify} messages.
         * @param message AddPeerRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: neutrinorpc.IAddPeerRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AddPeerRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AddPeerRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): neutrinorpc.AddPeerRequest;

        /**
         * Decodes an AddPeerRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AddPeerRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): neutrinorpc.AddPeerRequest;

        /**
         * Verifies an AddPeerRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AddPeerRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AddPeerRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): neutrinorpc.AddPeerRequest;

        /**
         * Creates a plain object from an AddPeerRequest message. Also converts values to other types if specified.
         * @param message AddPeerRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: neutrinorpc.AddPeerRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AddPeerRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AddPeerRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AddPeerResponse. */
    interface IAddPeerResponse {}

    /** Represents an AddPeerResponse. */
    class AddPeerResponse implements IAddPeerResponse {
        /**
         * Constructs a new AddPeerResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: neutrinorpc.IAddPeerResponse);

        /**
         * Creates a new AddPeerResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AddPeerResponse instance
         */
        public static create(
            properties?: neutrinorpc.IAddPeerResponse
        ): neutrinorpc.AddPeerResponse;

        /**
         * Encodes the specified AddPeerResponse message. Does not implicitly {@link neutrinorpc.AddPeerResponse.verify|verify} messages.
         * @param message AddPeerResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: neutrinorpc.IAddPeerResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AddPeerResponse message, length delimited. Does not implicitly {@link neutrinorpc.AddPeerResponse.verify|verify} messages.
         * @param message AddPeerResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: neutrinorpc.IAddPeerResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AddPeerResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AddPeerResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): neutrinorpc.AddPeerResponse;

        /**
         * Decodes an AddPeerResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AddPeerResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): neutrinorpc.AddPeerResponse;

        /**
         * Verifies an AddPeerResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AddPeerResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AddPeerResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): neutrinorpc.AddPeerResponse;

        /**
         * Creates a plain object from an AddPeerResponse message. Also converts values to other types if specified.
         * @param message AddPeerResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: neutrinorpc.AddPeerResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AddPeerResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AddPeerResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a DisconnectPeerRequest. */
    interface IDisconnectPeerRequest {
        /** DisconnectPeerRequest peer_addrs */
        peer_addrs?: string | null;
    }

    /** Represents a DisconnectPeerRequest. */
    class DisconnectPeerRequest implements IDisconnectPeerRequest {
        /**
         * Constructs a new DisconnectPeerRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: neutrinorpc.IDisconnectPeerRequest);

        /** DisconnectPeerRequest peer_addrs. */
        public peer_addrs: string;

        /**
         * Creates a new DisconnectPeerRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DisconnectPeerRequest instance
         */
        public static create(
            properties?: neutrinorpc.IDisconnectPeerRequest
        ): neutrinorpc.DisconnectPeerRequest;

        /**
         * Encodes the specified DisconnectPeerRequest message. Does not implicitly {@link neutrinorpc.DisconnectPeerRequest.verify|verify} messages.
         * @param message DisconnectPeerRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: neutrinorpc.IDisconnectPeerRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified DisconnectPeerRequest message, length delimited. Does not implicitly {@link neutrinorpc.DisconnectPeerRequest.verify|verify} messages.
         * @param message DisconnectPeerRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: neutrinorpc.IDisconnectPeerRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a DisconnectPeerRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DisconnectPeerRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): neutrinorpc.DisconnectPeerRequest;

        /**
         * Decodes a DisconnectPeerRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DisconnectPeerRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): neutrinorpc.DisconnectPeerRequest;

        /**
         * Verifies a DisconnectPeerRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a DisconnectPeerRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DisconnectPeerRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): neutrinorpc.DisconnectPeerRequest;

        /**
         * Creates a plain object from a DisconnectPeerRequest message. Also converts values to other types if specified.
         * @param message DisconnectPeerRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: neutrinorpc.DisconnectPeerRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this DisconnectPeerRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DisconnectPeerRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a DisconnectPeerResponse. */
    interface IDisconnectPeerResponse {}

    /** Represents a DisconnectPeerResponse. */
    class DisconnectPeerResponse implements IDisconnectPeerResponse {
        /**
         * Constructs a new DisconnectPeerResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: neutrinorpc.IDisconnectPeerResponse);

        /**
         * Creates a new DisconnectPeerResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DisconnectPeerResponse instance
         */
        public static create(
            properties?: neutrinorpc.IDisconnectPeerResponse
        ): neutrinorpc.DisconnectPeerResponse;

        /**
         * Encodes the specified DisconnectPeerResponse message. Does not implicitly {@link neutrinorpc.DisconnectPeerResponse.verify|verify} messages.
         * @param message DisconnectPeerResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: neutrinorpc.IDisconnectPeerResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified DisconnectPeerResponse message, length delimited. Does not implicitly {@link neutrinorpc.DisconnectPeerResponse.verify|verify} messages.
         * @param message DisconnectPeerResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: neutrinorpc.IDisconnectPeerResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a DisconnectPeerResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DisconnectPeerResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): neutrinorpc.DisconnectPeerResponse;

        /**
         * Decodes a DisconnectPeerResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DisconnectPeerResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): neutrinorpc.DisconnectPeerResponse;

        /**
         * Verifies a DisconnectPeerResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a DisconnectPeerResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DisconnectPeerResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): neutrinorpc.DisconnectPeerResponse;

        /**
         * Creates a plain object from a DisconnectPeerResponse message. Also converts values to other types if specified.
         * @param message DisconnectPeerResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: neutrinorpc.DisconnectPeerResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this DisconnectPeerResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DisconnectPeerResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an IsBannedRequest. */
    interface IIsBannedRequest {
        /** IsBannedRequest peer_addrs */
        peer_addrs?: string | null;
    }

    /** Represents an IsBannedRequest. */
    class IsBannedRequest implements IIsBannedRequest {
        /**
         * Constructs a new IsBannedRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: neutrinorpc.IIsBannedRequest);

        /** IsBannedRequest peer_addrs. */
        public peer_addrs: string;

        /**
         * Creates a new IsBannedRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns IsBannedRequest instance
         */
        public static create(
            properties?: neutrinorpc.IIsBannedRequest
        ): neutrinorpc.IsBannedRequest;

        /**
         * Encodes the specified IsBannedRequest message. Does not implicitly {@link neutrinorpc.IsBannedRequest.verify|verify} messages.
         * @param message IsBannedRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: neutrinorpc.IIsBannedRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified IsBannedRequest message, length delimited. Does not implicitly {@link neutrinorpc.IsBannedRequest.verify|verify} messages.
         * @param message IsBannedRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: neutrinorpc.IIsBannedRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an IsBannedRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns IsBannedRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): neutrinorpc.IsBannedRequest;

        /**
         * Decodes an IsBannedRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns IsBannedRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): neutrinorpc.IsBannedRequest;

        /**
         * Verifies an IsBannedRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an IsBannedRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns IsBannedRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): neutrinorpc.IsBannedRequest;

        /**
         * Creates a plain object from an IsBannedRequest message. Also converts values to other types if specified.
         * @param message IsBannedRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: neutrinorpc.IsBannedRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this IsBannedRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for IsBannedRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an IsBannedResponse. */
    interface IIsBannedResponse {
        /** IsBannedResponse banned */
        banned?: boolean | null;
    }

    /** Represents an IsBannedResponse. */
    class IsBannedResponse implements IIsBannedResponse {
        /**
         * Constructs a new IsBannedResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: neutrinorpc.IIsBannedResponse);

        /** IsBannedResponse banned. */
        public banned: boolean;

        /**
         * Creates a new IsBannedResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns IsBannedResponse instance
         */
        public static create(
            properties?: neutrinorpc.IIsBannedResponse
        ): neutrinorpc.IsBannedResponse;

        /**
         * Encodes the specified IsBannedResponse message. Does not implicitly {@link neutrinorpc.IsBannedResponse.verify|verify} messages.
         * @param message IsBannedResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: neutrinorpc.IIsBannedResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified IsBannedResponse message, length delimited. Does not implicitly {@link neutrinorpc.IsBannedResponse.verify|verify} messages.
         * @param message IsBannedResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: neutrinorpc.IIsBannedResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an IsBannedResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns IsBannedResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): neutrinorpc.IsBannedResponse;

        /**
         * Decodes an IsBannedResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns IsBannedResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): neutrinorpc.IsBannedResponse;

        /**
         * Verifies an IsBannedResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an IsBannedResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns IsBannedResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): neutrinorpc.IsBannedResponse;

        /**
         * Creates a plain object from an IsBannedResponse message. Also converts values to other types if specified.
         * @param message IsBannedResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: neutrinorpc.IsBannedResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this IsBannedResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for IsBannedResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetBlockHeaderRequest. */
    interface IGetBlockHeaderRequest {
        /** GetBlockHeaderRequest hash */
        hash?: string | null;
    }

    /** Represents a GetBlockHeaderRequest. */
    class GetBlockHeaderRequest implements IGetBlockHeaderRequest {
        /**
         * Constructs a new GetBlockHeaderRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: neutrinorpc.IGetBlockHeaderRequest);

        /** GetBlockHeaderRequest hash. */
        public hash: string;

        /**
         * Creates a new GetBlockHeaderRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetBlockHeaderRequest instance
         */
        public static create(
            properties?: neutrinorpc.IGetBlockHeaderRequest
        ): neutrinorpc.GetBlockHeaderRequest;

        /**
         * Encodes the specified GetBlockHeaderRequest message. Does not implicitly {@link neutrinorpc.GetBlockHeaderRequest.verify|verify} messages.
         * @param message GetBlockHeaderRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: neutrinorpc.IGetBlockHeaderRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetBlockHeaderRequest message, length delimited. Does not implicitly {@link neutrinorpc.GetBlockHeaderRequest.verify|verify} messages.
         * @param message GetBlockHeaderRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: neutrinorpc.IGetBlockHeaderRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetBlockHeaderRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetBlockHeaderRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): neutrinorpc.GetBlockHeaderRequest;

        /**
         * Decodes a GetBlockHeaderRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetBlockHeaderRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): neutrinorpc.GetBlockHeaderRequest;

        /**
         * Verifies a GetBlockHeaderRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetBlockHeaderRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetBlockHeaderRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): neutrinorpc.GetBlockHeaderRequest;

        /**
         * Creates a plain object from a GetBlockHeaderRequest message. Also converts values to other types if specified.
         * @param message GetBlockHeaderRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: neutrinorpc.GetBlockHeaderRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetBlockHeaderRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetBlockHeaderRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetBlockHeaderResponse. */
    interface IGetBlockHeaderResponse {
        /** GetBlockHeaderResponse hash */
        hash?: string | null;

        /** GetBlockHeaderResponse confirmations */
        confirmations?: Long | null;

        /** GetBlockHeaderResponse stripped_size */
        stripped_size?: Long | null;

        /** GetBlockHeaderResponse size */
        size?: Long | null;

        /** GetBlockHeaderResponse weight */
        weight?: Long | null;

        /** GetBlockHeaderResponse height */
        height?: number | null;

        /** GetBlockHeaderResponse version */
        version?: number | null;

        /** GetBlockHeaderResponse version_hex */
        version_hex?: string | null;

        /** GetBlockHeaderResponse merkleroot */
        merkleroot?: string | null;

        /** GetBlockHeaderResponse time */
        time?: Long | null;

        /** GetBlockHeaderResponse nonce */
        nonce?: number | null;

        /** GetBlockHeaderResponse bits */
        bits?: string | null;

        /** GetBlockHeaderResponse ntx */
        ntx?: number | null;

        /** GetBlockHeaderResponse previous_block_hash */
        previous_block_hash?: string | null;

        /** GetBlockHeaderResponse raw_hex */
        raw_hex?: Uint8Array | null;
    }

    /** Represents a GetBlockHeaderResponse. */
    class GetBlockHeaderResponse implements IGetBlockHeaderResponse {
        /**
         * Constructs a new GetBlockHeaderResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: neutrinorpc.IGetBlockHeaderResponse);

        /** GetBlockHeaderResponse hash. */
        public hash: string;

        /** GetBlockHeaderResponse confirmations. */
        public confirmations: Long;

        /** GetBlockHeaderResponse stripped_size. */
        public stripped_size: Long;

        /** GetBlockHeaderResponse size. */
        public size: Long;

        /** GetBlockHeaderResponse weight. */
        public weight: Long;

        /** GetBlockHeaderResponse height. */
        public height: number;

        /** GetBlockHeaderResponse version. */
        public version: number;

        /** GetBlockHeaderResponse version_hex. */
        public version_hex: string;

        /** GetBlockHeaderResponse merkleroot. */
        public merkleroot: string;

        /** GetBlockHeaderResponse time. */
        public time: Long;

        /** GetBlockHeaderResponse nonce. */
        public nonce: number;

        /** GetBlockHeaderResponse bits. */
        public bits: string;

        /** GetBlockHeaderResponse ntx. */
        public ntx: number;

        /** GetBlockHeaderResponse previous_block_hash. */
        public previous_block_hash: string;

        /** GetBlockHeaderResponse raw_hex. */
        public raw_hex: Uint8Array;

        /**
         * Creates a new GetBlockHeaderResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetBlockHeaderResponse instance
         */
        public static create(
            properties?: neutrinorpc.IGetBlockHeaderResponse
        ): neutrinorpc.GetBlockHeaderResponse;

        /**
         * Encodes the specified GetBlockHeaderResponse message. Does not implicitly {@link neutrinorpc.GetBlockHeaderResponse.verify|verify} messages.
         * @param message GetBlockHeaderResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: neutrinorpc.IGetBlockHeaderResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetBlockHeaderResponse message, length delimited. Does not implicitly {@link neutrinorpc.GetBlockHeaderResponse.verify|verify} messages.
         * @param message GetBlockHeaderResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: neutrinorpc.IGetBlockHeaderResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetBlockHeaderResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetBlockHeaderResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): neutrinorpc.GetBlockHeaderResponse;

        /**
         * Decodes a GetBlockHeaderResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetBlockHeaderResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): neutrinorpc.GetBlockHeaderResponse;

        /**
         * Verifies a GetBlockHeaderResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetBlockHeaderResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetBlockHeaderResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): neutrinorpc.GetBlockHeaderResponse;

        /**
         * Creates a plain object from a GetBlockHeaderResponse message. Also converts values to other types if specified.
         * @param message GetBlockHeaderResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: neutrinorpc.GetBlockHeaderResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetBlockHeaderResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetBlockHeaderResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetBlockRequest. */
    interface IGetBlockRequest {
        /** GetBlockRequest hash */
        hash?: string | null;
    }

    /** Represents a GetBlockRequest. */
    class GetBlockRequest implements IGetBlockRequest {
        /**
         * Constructs a new GetBlockRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: neutrinorpc.IGetBlockRequest);

        /** GetBlockRequest hash. */
        public hash: string;

        /**
         * Creates a new GetBlockRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetBlockRequest instance
         */
        public static create(
            properties?: neutrinorpc.IGetBlockRequest
        ): neutrinorpc.GetBlockRequest;

        /**
         * Encodes the specified GetBlockRequest message. Does not implicitly {@link neutrinorpc.GetBlockRequest.verify|verify} messages.
         * @param message GetBlockRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: neutrinorpc.IGetBlockRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetBlockRequest message, length delimited. Does not implicitly {@link neutrinorpc.GetBlockRequest.verify|verify} messages.
         * @param message GetBlockRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: neutrinorpc.IGetBlockRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetBlockRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetBlockRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): neutrinorpc.GetBlockRequest;

        /**
         * Decodes a GetBlockRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetBlockRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): neutrinorpc.GetBlockRequest;

        /**
         * Verifies a GetBlockRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetBlockRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetBlockRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): neutrinorpc.GetBlockRequest;

        /**
         * Creates a plain object from a GetBlockRequest message. Also converts values to other types if specified.
         * @param message GetBlockRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: neutrinorpc.GetBlockRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetBlockRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetBlockRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetBlockResponse. */
    interface IGetBlockResponse {
        /** GetBlockResponse hash */
        hash?: string | null;

        /** GetBlockResponse confirmations */
        confirmations?: Long | null;

        /** GetBlockResponse stripped_size */
        stripped_size?: Long | null;

        /** GetBlockResponse size */
        size?: Long | null;

        /** GetBlockResponse weight */
        weight?: Long | null;

        /** GetBlockResponse height */
        height?: number | null;

        /** GetBlockResponse version */
        version?: number | null;

        /** GetBlockResponse version_hex */
        version_hex?: string | null;

        /** GetBlockResponse merkleroot */
        merkleroot?: string | null;

        /** GetBlockResponse tx */
        tx?: string[] | null;

        /** GetBlockResponse time */
        time?: Long | null;

        /** GetBlockResponse nonce */
        nonce?: number | null;

        /** GetBlockResponse bits */
        bits?: string | null;

        /** GetBlockResponse ntx */
        ntx?: number | null;

        /** GetBlockResponse previous_block_hash */
        previous_block_hash?: string | null;

        /** GetBlockResponse raw_hex */
        raw_hex?: Uint8Array | null;
    }

    /** Represents a GetBlockResponse. */
    class GetBlockResponse implements IGetBlockResponse {
        /**
         * Constructs a new GetBlockResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: neutrinorpc.IGetBlockResponse);

        /** GetBlockResponse hash. */
        public hash: string;

        /** GetBlockResponse confirmations. */
        public confirmations: Long;

        /** GetBlockResponse stripped_size. */
        public stripped_size: Long;

        /** GetBlockResponse size. */
        public size: Long;

        /** GetBlockResponse weight. */
        public weight: Long;

        /** GetBlockResponse height. */
        public height: number;

        /** GetBlockResponse version. */
        public version: number;

        /** GetBlockResponse version_hex. */
        public version_hex: string;

        /** GetBlockResponse merkleroot. */
        public merkleroot: string;

        /** GetBlockResponse tx. */
        public tx: string[];

        /** GetBlockResponse time. */
        public time: Long;

        /** GetBlockResponse nonce. */
        public nonce: number;

        /** GetBlockResponse bits. */
        public bits: string;

        /** GetBlockResponse ntx. */
        public ntx: number;

        /** GetBlockResponse previous_block_hash. */
        public previous_block_hash: string;

        /** GetBlockResponse raw_hex. */
        public raw_hex: Uint8Array;

        /**
         * Creates a new GetBlockResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetBlockResponse instance
         */
        public static create(
            properties?: neutrinorpc.IGetBlockResponse
        ): neutrinorpc.GetBlockResponse;

        /**
         * Encodes the specified GetBlockResponse message. Does not implicitly {@link neutrinorpc.GetBlockResponse.verify|verify} messages.
         * @param message GetBlockResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: neutrinorpc.IGetBlockResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetBlockResponse message, length delimited. Does not implicitly {@link neutrinorpc.GetBlockResponse.verify|verify} messages.
         * @param message GetBlockResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: neutrinorpc.IGetBlockResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetBlockResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetBlockResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): neutrinorpc.GetBlockResponse;

        /**
         * Decodes a GetBlockResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetBlockResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): neutrinorpc.GetBlockResponse;

        /**
         * Verifies a GetBlockResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetBlockResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetBlockResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): neutrinorpc.GetBlockResponse;

        /**
         * Creates a plain object from a GetBlockResponse message. Also converts values to other types if specified.
         * @param message GetBlockResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: neutrinorpc.GetBlockResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetBlockResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetBlockResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetCFilterRequest. */
    interface IGetCFilterRequest {
        /** GetCFilterRequest hash */
        hash?: string | null;
    }

    /** Represents a GetCFilterRequest. */
    class GetCFilterRequest implements IGetCFilterRequest {
        /**
         * Constructs a new GetCFilterRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: neutrinorpc.IGetCFilterRequest);

        /** GetCFilterRequest hash. */
        public hash: string;

        /**
         * Creates a new GetCFilterRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetCFilterRequest instance
         */
        public static create(
            properties?: neutrinorpc.IGetCFilterRequest
        ): neutrinorpc.GetCFilterRequest;

        /**
         * Encodes the specified GetCFilterRequest message. Does not implicitly {@link neutrinorpc.GetCFilterRequest.verify|verify} messages.
         * @param message GetCFilterRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: neutrinorpc.IGetCFilterRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetCFilterRequest message, length delimited. Does not implicitly {@link neutrinorpc.GetCFilterRequest.verify|verify} messages.
         * @param message GetCFilterRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: neutrinorpc.IGetCFilterRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetCFilterRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetCFilterRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): neutrinorpc.GetCFilterRequest;

        /**
         * Decodes a GetCFilterRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetCFilterRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): neutrinorpc.GetCFilterRequest;

        /**
         * Verifies a GetCFilterRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetCFilterRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetCFilterRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): neutrinorpc.GetCFilterRequest;

        /**
         * Creates a plain object from a GetCFilterRequest message. Also converts values to other types if specified.
         * @param message GetCFilterRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: neutrinorpc.GetCFilterRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetCFilterRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetCFilterRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetCFilterResponse. */
    interface IGetCFilterResponse {
        /** GetCFilterResponse filter */
        filter?: Uint8Array | null;
    }

    /** Represents a GetCFilterResponse. */
    class GetCFilterResponse implements IGetCFilterResponse {
        /**
         * Constructs a new GetCFilterResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: neutrinorpc.IGetCFilterResponse);

        /** GetCFilterResponse filter. */
        public filter: Uint8Array;

        /**
         * Creates a new GetCFilterResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetCFilterResponse instance
         */
        public static create(
            properties?: neutrinorpc.IGetCFilterResponse
        ): neutrinorpc.GetCFilterResponse;

        /**
         * Encodes the specified GetCFilterResponse message. Does not implicitly {@link neutrinorpc.GetCFilterResponse.verify|verify} messages.
         * @param message GetCFilterResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: neutrinorpc.IGetCFilterResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetCFilterResponse message, length delimited. Does not implicitly {@link neutrinorpc.GetCFilterResponse.verify|verify} messages.
         * @param message GetCFilterResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: neutrinorpc.IGetCFilterResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetCFilterResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetCFilterResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): neutrinorpc.GetCFilterResponse;

        /**
         * Decodes a GetCFilterResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetCFilterResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): neutrinorpc.GetCFilterResponse;

        /**
         * Verifies a GetCFilterResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetCFilterResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetCFilterResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): neutrinorpc.GetCFilterResponse;

        /**
         * Creates a plain object from a GetCFilterResponse message. Also converts values to other types if specified.
         * @param message GetCFilterResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: neutrinorpc.GetCFilterResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetCFilterResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetCFilterResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetBlockHashRequest. */
    interface IGetBlockHashRequest {
        /** GetBlockHashRequest height */
        height?: number | null;
    }

    /** Represents a GetBlockHashRequest. */
    class GetBlockHashRequest implements IGetBlockHashRequest {
        /**
         * Constructs a new GetBlockHashRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: neutrinorpc.IGetBlockHashRequest);

        /** GetBlockHashRequest height. */
        public height: number;

        /**
         * Creates a new GetBlockHashRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetBlockHashRequest instance
         */
        public static create(
            properties?: neutrinorpc.IGetBlockHashRequest
        ): neutrinorpc.GetBlockHashRequest;

        /**
         * Encodes the specified GetBlockHashRequest message. Does not implicitly {@link neutrinorpc.GetBlockHashRequest.verify|verify} messages.
         * @param message GetBlockHashRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: neutrinorpc.IGetBlockHashRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetBlockHashRequest message, length delimited. Does not implicitly {@link neutrinorpc.GetBlockHashRequest.verify|verify} messages.
         * @param message GetBlockHashRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: neutrinorpc.IGetBlockHashRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetBlockHashRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetBlockHashRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): neutrinorpc.GetBlockHashRequest;

        /**
         * Decodes a GetBlockHashRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetBlockHashRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): neutrinorpc.GetBlockHashRequest;

        /**
         * Verifies a GetBlockHashRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetBlockHashRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetBlockHashRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): neutrinorpc.GetBlockHashRequest;

        /**
         * Creates a plain object from a GetBlockHashRequest message. Also converts values to other types if specified.
         * @param message GetBlockHashRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: neutrinorpc.GetBlockHashRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetBlockHashRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetBlockHashRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetBlockHashResponse. */
    interface IGetBlockHashResponse {
        /** GetBlockHashResponse hash */
        hash?: string | null;
    }

    /** Represents a GetBlockHashResponse. */
    class GetBlockHashResponse implements IGetBlockHashResponse {
        /**
         * Constructs a new GetBlockHashResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: neutrinorpc.IGetBlockHashResponse);

        /** GetBlockHashResponse hash. */
        public hash: string;

        /**
         * Creates a new GetBlockHashResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetBlockHashResponse instance
         */
        public static create(
            properties?: neutrinorpc.IGetBlockHashResponse
        ): neutrinorpc.GetBlockHashResponse;

        /**
         * Encodes the specified GetBlockHashResponse message. Does not implicitly {@link neutrinorpc.GetBlockHashResponse.verify|verify} messages.
         * @param message GetBlockHashResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: neutrinorpc.IGetBlockHashResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetBlockHashResponse message, length delimited. Does not implicitly {@link neutrinorpc.GetBlockHashResponse.verify|verify} messages.
         * @param message GetBlockHashResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: neutrinorpc.IGetBlockHashResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetBlockHashResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetBlockHashResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): neutrinorpc.GetBlockHashResponse;

        /**
         * Decodes a GetBlockHashResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetBlockHashResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): neutrinorpc.GetBlockHashResponse;

        /**
         * Verifies a GetBlockHashResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetBlockHashResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetBlockHashResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): neutrinorpc.GetBlockHashResponse;

        /**
         * Creates a plain object from a GetBlockHashResponse message. Also converts values to other types if specified.
         * @param message GetBlockHashResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: neutrinorpc.GetBlockHashResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetBlockHashResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetBlockHashResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }
}

/** Namespace routerrpc. */
export namespace routerrpc {
    /** Represents a Router */
    class Router extends $protobuf.rpc.Service {
        /**
         * Constructs a new Router service.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         */
        constructor(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        );

        /**
         * Creates new Router service using the specified rpc implementation.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         * @returns RPC service. Useful where requests and/or responses are streamed.
         */
        public static create(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        ): Router;

        /**
         * Calls SendPaymentV2.
         * @param request SendPaymentRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and Payment
         */
        public sendPaymentV2(
            request: routerrpc.ISendPaymentRequest,
            callback: routerrpc.Router.SendPaymentV2Callback
        ): void;

        /**
         * Calls SendPaymentV2.
         * @param request SendPaymentRequest message or plain object
         * @returns Promise
         */
        public sendPaymentV2(
            request: routerrpc.ISendPaymentRequest
        ): Promise<lnrpc.Payment>;

        /**
         * Calls TrackPaymentV2.
         * @param request TrackPaymentRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and Payment
         */
        public trackPaymentV2(
            request: routerrpc.ITrackPaymentRequest,
            callback: routerrpc.Router.TrackPaymentV2Callback
        ): void;

        /**
         * Calls TrackPaymentV2.
         * @param request TrackPaymentRequest message or plain object
         * @returns Promise
         */
        public trackPaymentV2(
            request: routerrpc.ITrackPaymentRequest
        ): Promise<lnrpc.Payment>;

        /**
         * Calls TrackPayments.
         * @param request TrackPaymentsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and Payment
         */
        public trackPayments(
            request: routerrpc.ITrackPaymentsRequest,
            callback: routerrpc.Router.TrackPaymentsCallback
        ): void;

        /**
         * Calls TrackPayments.
         * @param request TrackPaymentsRequest message or plain object
         * @returns Promise
         */
        public trackPayments(
            request: routerrpc.ITrackPaymentsRequest
        ): Promise<lnrpc.Payment>;

        /**
         * Calls EstimateRouteFee.
         * @param request RouteFeeRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and RouteFeeResponse
         */
        public estimateRouteFee(
            request: routerrpc.IRouteFeeRequest,
            callback: routerrpc.Router.EstimateRouteFeeCallback
        ): void;

        /**
         * Calls EstimateRouteFee.
         * @param request RouteFeeRequest message or plain object
         * @returns Promise
         */
        public estimateRouteFee(
            request: routerrpc.IRouteFeeRequest
        ): Promise<routerrpc.RouteFeeResponse>;

        /**
         * Calls SendToRoute.
         * @param request SendToRouteRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SendToRouteResponse
         */
        public sendToRoute(
            request: routerrpc.ISendToRouteRequest,
            callback: routerrpc.Router.SendToRouteCallback
        ): void;

        /**
         * Calls SendToRoute.
         * @param request SendToRouteRequest message or plain object
         * @returns Promise
         */
        public sendToRoute(
            request: routerrpc.ISendToRouteRequest
        ): Promise<routerrpc.SendToRouteResponse>;

        /**
         * Calls SendToRouteV2.
         * @param request SendToRouteRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and HTLCAttempt
         */
        public sendToRouteV2(
            request: routerrpc.ISendToRouteRequest,
            callback: routerrpc.Router.SendToRouteV2Callback
        ): void;

        /**
         * Calls SendToRouteV2.
         * @param request SendToRouteRequest message or plain object
         * @returns Promise
         */
        public sendToRouteV2(
            request: routerrpc.ISendToRouteRequest
        ): Promise<lnrpc.HTLCAttempt>;

        /**
         * Calls ResetMissionControl.
         * @param request ResetMissionControlRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ResetMissionControlResponse
         */
        public resetMissionControl(
            request: routerrpc.IResetMissionControlRequest,
            callback: routerrpc.Router.ResetMissionControlCallback
        ): void;

        /**
         * Calls ResetMissionControl.
         * @param request ResetMissionControlRequest message or plain object
         * @returns Promise
         */
        public resetMissionControl(
            request: routerrpc.IResetMissionControlRequest
        ): Promise<routerrpc.ResetMissionControlResponse>;

        /**
         * Calls QueryMissionControl.
         * @param request QueryMissionControlRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and QueryMissionControlResponse
         */
        public queryMissionControl(
            request: routerrpc.IQueryMissionControlRequest,
            callback: routerrpc.Router.QueryMissionControlCallback
        ): void;

        /**
         * Calls QueryMissionControl.
         * @param request QueryMissionControlRequest message or plain object
         * @returns Promise
         */
        public queryMissionControl(
            request: routerrpc.IQueryMissionControlRequest
        ): Promise<routerrpc.QueryMissionControlResponse>;

        /**
         * Calls XImportMissionControl.
         * @param request XImportMissionControlRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and XImportMissionControlResponse
         */
        public xImportMissionControl(
            request: routerrpc.IXImportMissionControlRequest,
            callback: routerrpc.Router.XImportMissionControlCallback
        ): void;

        /**
         * Calls XImportMissionControl.
         * @param request XImportMissionControlRequest message or plain object
         * @returns Promise
         */
        public xImportMissionControl(
            request: routerrpc.IXImportMissionControlRequest
        ): Promise<routerrpc.XImportMissionControlResponse>;

        /**
         * Calls GetMissionControlConfig.
         * @param request GetMissionControlConfigRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and GetMissionControlConfigResponse
         */
        public getMissionControlConfig(
            request: routerrpc.IGetMissionControlConfigRequest,
            callback: routerrpc.Router.GetMissionControlConfigCallback
        ): void;

        /**
         * Calls GetMissionControlConfig.
         * @param request GetMissionControlConfigRequest message or plain object
         * @returns Promise
         */
        public getMissionControlConfig(
            request: routerrpc.IGetMissionControlConfigRequest
        ): Promise<routerrpc.GetMissionControlConfigResponse>;

        /**
         * Calls SetMissionControlConfig.
         * @param request SetMissionControlConfigRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SetMissionControlConfigResponse
         */
        public setMissionControlConfig(
            request: routerrpc.ISetMissionControlConfigRequest,
            callback: routerrpc.Router.SetMissionControlConfigCallback
        ): void;

        /**
         * Calls SetMissionControlConfig.
         * @param request SetMissionControlConfigRequest message or plain object
         * @returns Promise
         */
        public setMissionControlConfig(
            request: routerrpc.ISetMissionControlConfigRequest
        ): Promise<routerrpc.SetMissionControlConfigResponse>;

        /**
         * Calls QueryProbability.
         * @param request QueryProbabilityRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and QueryProbabilityResponse
         */
        public queryProbability(
            request: routerrpc.IQueryProbabilityRequest,
            callback: routerrpc.Router.QueryProbabilityCallback
        ): void;

        /**
         * Calls QueryProbability.
         * @param request QueryProbabilityRequest message or plain object
         * @returns Promise
         */
        public queryProbability(
            request: routerrpc.IQueryProbabilityRequest
        ): Promise<routerrpc.QueryProbabilityResponse>;

        /**
         * Calls BuildRoute.
         * @param request BuildRouteRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and BuildRouteResponse
         */
        public buildRoute(
            request: routerrpc.IBuildRouteRequest,
            callback: routerrpc.Router.BuildRouteCallback
        ): void;

        /**
         * Calls BuildRoute.
         * @param request BuildRouteRequest message or plain object
         * @returns Promise
         */
        public buildRoute(
            request: routerrpc.IBuildRouteRequest
        ): Promise<routerrpc.BuildRouteResponse>;

        /**
         * Calls SubscribeHtlcEvents.
         * @param request SubscribeHtlcEventsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and HtlcEvent
         */
        public subscribeHtlcEvents(
            request: routerrpc.ISubscribeHtlcEventsRequest,
            callback: routerrpc.Router.SubscribeHtlcEventsCallback
        ): void;

        /**
         * Calls SubscribeHtlcEvents.
         * @param request SubscribeHtlcEventsRequest message or plain object
         * @returns Promise
         */
        public subscribeHtlcEvents(
            request: routerrpc.ISubscribeHtlcEventsRequest
        ): Promise<routerrpc.HtlcEvent>;

        /**
         * Calls SendPayment.
         * @param request SendPaymentRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and PaymentStatus
         */
        public sendPayment(
            request: routerrpc.ISendPaymentRequest,
            callback: routerrpc.Router.SendPaymentCallback
        ): void;

        /**
         * Calls SendPayment.
         * @param request SendPaymentRequest message or plain object
         * @returns Promise
         */
        public sendPayment(
            request: routerrpc.ISendPaymentRequest
        ): Promise<routerrpc.PaymentStatus>;

        /**
         * Calls TrackPayment.
         * @param request TrackPaymentRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and PaymentStatus
         */
        public trackPayment(
            request: routerrpc.ITrackPaymentRequest,
            callback: routerrpc.Router.TrackPaymentCallback
        ): void;

        /**
         * Calls TrackPayment.
         * @param request TrackPaymentRequest message or plain object
         * @returns Promise
         */
        public trackPayment(
            request: routerrpc.ITrackPaymentRequest
        ): Promise<routerrpc.PaymentStatus>;

        /**
         * HtlcInterceptor dispatches a bi-directional streaming RPC in which
         * Forwarded HTLC requests are sent to the client and the client responds with
         * a boolean that tells LND if this htlc should be intercepted.
         * In case of interception, the htlc can be either settled, cancelled or
         * resumed later by using the ResolveHoldForward endpoint.
         * @param request ForwardHtlcInterceptResponse message or plain object
         * @param callback Node-style callback called with the error, if any, and ForwardHtlcInterceptRequest
         */
        public htlcInterceptor(
            request: routerrpc.IForwardHtlcInterceptResponse,
            callback: routerrpc.Router.HtlcInterceptorCallback
        ): void;

        /**
         * HtlcInterceptor dispatches a bi-directional streaming RPC in which
         * Forwarded HTLC requests are sent to the client and the client responds with
         * a boolean that tells LND if this htlc should be intercepted.
         * In case of interception, the htlc can be either settled, cancelled or
         * resumed later by using the ResolveHoldForward endpoint.
         * @param request ForwardHtlcInterceptResponse message or plain object
         * @returns Promise
         */
        public htlcInterceptor(
            request: routerrpc.IForwardHtlcInterceptResponse
        ): Promise<routerrpc.ForwardHtlcInterceptRequest>;

        /**
         * Calls UpdateChanStatus.
         * @param request UpdateChanStatusRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and UpdateChanStatusResponse
         */
        public updateChanStatus(
            request: routerrpc.IUpdateChanStatusRequest,
            callback: routerrpc.Router.UpdateChanStatusCallback
        ): void;

        /**
         * Calls UpdateChanStatus.
         * @param request UpdateChanStatusRequest message or plain object
         * @returns Promise
         */
        public updateChanStatus(
            request: routerrpc.IUpdateChanStatusRequest
        ): Promise<routerrpc.UpdateChanStatusResponse>;

        /**
         * Calls XAddLocalChanAliases.
         * @param request AddAliasesRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and AddAliasesResponse
         */
        public xAddLocalChanAliases(
            request: routerrpc.IAddAliasesRequest,
            callback: routerrpc.Router.XAddLocalChanAliasesCallback
        ): void;

        /**
         * Calls XAddLocalChanAliases.
         * @param request AddAliasesRequest message or plain object
         * @returns Promise
         */
        public xAddLocalChanAliases(
            request: routerrpc.IAddAliasesRequest
        ): Promise<routerrpc.AddAliasesResponse>;

        /**
         * Calls XDeleteLocalChanAliases.
         * @param request DeleteAliasesRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and DeleteAliasesResponse
         */
        public xDeleteLocalChanAliases(
            request: routerrpc.IDeleteAliasesRequest,
            callback: routerrpc.Router.XDeleteLocalChanAliasesCallback
        ): void;

        /**
         * Calls XDeleteLocalChanAliases.
         * @param request DeleteAliasesRequest message or plain object
         * @returns Promise
         */
        public xDeleteLocalChanAliases(
            request: routerrpc.IDeleteAliasesRequest
        ): Promise<routerrpc.DeleteAliasesResponse>;
    }

    namespace Router {
        /**
         * Callback as used by {@link routerrpc.Router#sendPaymentV2}.
         * @param error Error, if any
         * @param [response] Payment
         */
        type SendPaymentV2Callback = (
            error: Error | null,
            response?: lnrpc.Payment
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#trackPaymentV2}.
         * @param error Error, if any
         * @param [response] Payment
         */
        type TrackPaymentV2Callback = (
            error: Error | null,
            response?: lnrpc.Payment
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#trackPayments}.
         * @param error Error, if any
         * @param [response] Payment
         */
        type TrackPaymentsCallback = (
            error: Error | null,
            response?: lnrpc.Payment
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#estimateRouteFee}.
         * @param error Error, if any
         * @param [response] RouteFeeResponse
         */
        type EstimateRouteFeeCallback = (
            error: Error | null,
            response?: routerrpc.RouteFeeResponse
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#sendToRoute}.
         * @param error Error, if any
         * @param [response] SendToRouteResponse
         */
        type SendToRouteCallback = (
            error: Error | null,
            response?: routerrpc.SendToRouteResponse
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#sendToRouteV2}.
         * @param error Error, if any
         * @param [response] HTLCAttempt
         */
        type SendToRouteV2Callback = (
            error: Error | null,
            response?: lnrpc.HTLCAttempt
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#resetMissionControl}.
         * @param error Error, if any
         * @param [response] ResetMissionControlResponse
         */
        type ResetMissionControlCallback = (
            error: Error | null,
            response?: routerrpc.ResetMissionControlResponse
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#queryMissionControl}.
         * @param error Error, if any
         * @param [response] QueryMissionControlResponse
         */
        type QueryMissionControlCallback = (
            error: Error | null,
            response?: routerrpc.QueryMissionControlResponse
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#xImportMissionControl}.
         * @param error Error, if any
         * @param [response] XImportMissionControlResponse
         */
        type XImportMissionControlCallback = (
            error: Error | null,
            response?: routerrpc.XImportMissionControlResponse
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#getMissionControlConfig}.
         * @param error Error, if any
         * @param [response] GetMissionControlConfigResponse
         */
        type GetMissionControlConfigCallback = (
            error: Error | null,
            response?: routerrpc.GetMissionControlConfigResponse
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#setMissionControlConfig}.
         * @param error Error, if any
         * @param [response] SetMissionControlConfigResponse
         */
        type SetMissionControlConfigCallback = (
            error: Error | null,
            response?: routerrpc.SetMissionControlConfigResponse
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#queryProbability}.
         * @param error Error, if any
         * @param [response] QueryProbabilityResponse
         */
        type QueryProbabilityCallback = (
            error: Error | null,
            response?: routerrpc.QueryProbabilityResponse
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#buildRoute}.
         * @param error Error, if any
         * @param [response] BuildRouteResponse
         */
        type BuildRouteCallback = (
            error: Error | null,
            response?: routerrpc.BuildRouteResponse
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#subscribeHtlcEvents}.
         * @param error Error, if any
         * @param [response] HtlcEvent
         */
        type SubscribeHtlcEventsCallback = (
            error: Error | null,
            response?: routerrpc.HtlcEvent
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#sendPayment}.
         * @param error Error, if any
         * @param [response] PaymentStatus
         */
        type SendPaymentCallback = (
            error: Error | null,
            response?: routerrpc.PaymentStatus
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#trackPayment}.
         * @param error Error, if any
         * @param [response] PaymentStatus
         */
        type TrackPaymentCallback = (
            error: Error | null,
            response?: routerrpc.PaymentStatus
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#htlcInterceptor}.
         * @param error Error, if any
         * @param [response] ForwardHtlcInterceptRequest
         */
        type HtlcInterceptorCallback = (
            error: Error | null,
            response?: routerrpc.ForwardHtlcInterceptRequest
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#updateChanStatus}.
         * @param error Error, if any
         * @param [response] UpdateChanStatusResponse
         */
        type UpdateChanStatusCallback = (
            error: Error | null,
            response?: routerrpc.UpdateChanStatusResponse
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#xAddLocalChanAliases}.
         * @param error Error, if any
         * @param [response] AddAliasesResponse
         */
        type XAddLocalChanAliasesCallback = (
            error: Error | null,
            response?: routerrpc.AddAliasesResponse
        ) => void;

        /**
         * Callback as used by {@link routerrpc.Router#xDeleteLocalChanAliases}.
         * @param error Error, if any
         * @param [response] DeleteAliasesResponse
         */
        type XDeleteLocalChanAliasesCallback = (
            error: Error | null,
            response?: routerrpc.DeleteAliasesResponse
        ) => void;
    }

    /** Properties of a SendPaymentRequest. */
    interface ISendPaymentRequest {
        /** SendPaymentRequest dest */
        dest?: Uint8Array | null;

        /** SendPaymentRequest amt */
        amt?: Long | null;

        /** SendPaymentRequest payment_hash */
        payment_hash?: Uint8Array | null;

        /** SendPaymentRequest final_cltv_delta */
        final_cltv_delta?: number | null;

        /** SendPaymentRequest payment_request */
        payment_request?: string | null;

        /** SendPaymentRequest timeout_seconds */
        timeout_seconds?: number | null;

        /** SendPaymentRequest fee_limit_sat */
        fee_limit_sat?: Long | null;

        /** SendPaymentRequest outgoing_chan_id */
        outgoing_chan_id?: Long | null;

        /** SendPaymentRequest cltv_limit */
        cltv_limit?: number | null;

        /** SendPaymentRequest route_hints */
        route_hints?: lnrpc.IRouteHint[] | null;

        /** SendPaymentRequest dest_custom_records */
        dest_custom_records?: { [k: string]: Uint8Array } | null;

        /** SendPaymentRequest amt_msat */
        amt_msat?: Long | null;

        /** SendPaymentRequest fee_limit_msat */
        fee_limit_msat?: Long | null;

        /** SendPaymentRequest last_hop_pubkey */
        last_hop_pubkey?: Uint8Array | null;

        /** SendPaymentRequest allow_self_payment */
        allow_self_payment?: boolean | null;

        /** SendPaymentRequest dest_features */
        dest_features?: lnrpc.FeatureBit[] | null;

        /** SendPaymentRequest max_parts */
        max_parts?: number | null;

        /** SendPaymentRequest no_inflight_updates */
        no_inflight_updates?: boolean | null;

        /** SendPaymentRequest outgoing_chan_ids */
        outgoing_chan_ids?: Long[] | null;

        /** SendPaymentRequest payment_addr */
        payment_addr?: Uint8Array | null;

        /** SendPaymentRequest max_shard_size_msat */
        max_shard_size_msat?: Long | null;

        /** SendPaymentRequest amp */
        amp?: boolean | null;

        /** SendPaymentRequest time_pref */
        time_pref?: number | null;

        /** SendPaymentRequest cancelable */
        cancelable?: boolean | null;

        /** SendPaymentRequest first_hop_custom_records */
        first_hop_custom_records?: { [k: string]: Uint8Array } | null;
    }

    /** Represents a SendPaymentRequest. */
    class SendPaymentRequest implements ISendPaymentRequest {
        /**
         * Constructs a new SendPaymentRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.ISendPaymentRequest);

        /** SendPaymentRequest dest. */
        public dest: Uint8Array;

        /** SendPaymentRequest amt. */
        public amt: Long;

        /** SendPaymentRequest payment_hash. */
        public payment_hash: Uint8Array;

        /** SendPaymentRequest final_cltv_delta. */
        public final_cltv_delta: number;

        /** SendPaymentRequest payment_request. */
        public payment_request: string;

        /** SendPaymentRequest timeout_seconds. */
        public timeout_seconds: number;

        /** SendPaymentRequest fee_limit_sat. */
        public fee_limit_sat: Long;

        /** SendPaymentRequest outgoing_chan_id. */
        public outgoing_chan_id: Long;

        /** SendPaymentRequest cltv_limit. */
        public cltv_limit: number;

        /** SendPaymentRequest route_hints. */
        public route_hints: lnrpc.IRouteHint[];

        /** SendPaymentRequest dest_custom_records. */
        public dest_custom_records: { [k: string]: Uint8Array };

        /** SendPaymentRequest amt_msat. */
        public amt_msat: Long;

        /** SendPaymentRequest fee_limit_msat. */
        public fee_limit_msat: Long;

        /** SendPaymentRequest last_hop_pubkey. */
        public last_hop_pubkey: Uint8Array;

        /** SendPaymentRequest allow_self_payment. */
        public allow_self_payment: boolean;

        /** SendPaymentRequest dest_features. */
        public dest_features: lnrpc.FeatureBit[];

        /** SendPaymentRequest max_parts. */
        public max_parts: number;

        /** SendPaymentRequest no_inflight_updates. */
        public no_inflight_updates: boolean;

        /** SendPaymentRequest outgoing_chan_ids. */
        public outgoing_chan_ids: Long[];

        /** SendPaymentRequest payment_addr. */
        public payment_addr: Uint8Array;

        /** SendPaymentRequest max_shard_size_msat. */
        public max_shard_size_msat: Long;

        /** SendPaymentRequest amp. */
        public amp: boolean;

        /** SendPaymentRequest time_pref. */
        public time_pref: number;

        /** SendPaymentRequest cancelable. */
        public cancelable: boolean;

        /** SendPaymentRequest first_hop_custom_records. */
        public first_hop_custom_records: { [k: string]: Uint8Array };

        /**
         * Creates a new SendPaymentRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SendPaymentRequest instance
         */
        public static create(
            properties?: routerrpc.ISendPaymentRequest
        ): routerrpc.SendPaymentRequest;

        /**
         * Encodes the specified SendPaymentRequest message. Does not implicitly {@link routerrpc.SendPaymentRequest.verify|verify} messages.
         * @param message SendPaymentRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.ISendPaymentRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SendPaymentRequest message, length delimited. Does not implicitly {@link routerrpc.SendPaymentRequest.verify|verify} messages.
         * @param message SendPaymentRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.ISendPaymentRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SendPaymentRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SendPaymentRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.SendPaymentRequest;

        /**
         * Decodes a SendPaymentRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SendPaymentRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.SendPaymentRequest;

        /**
         * Verifies a SendPaymentRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SendPaymentRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SendPaymentRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.SendPaymentRequest;

        /**
         * Creates a plain object from a SendPaymentRequest message. Also converts values to other types if specified.
         * @param message SendPaymentRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.SendPaymentRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SendPaymentRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SendPaymentRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a TrackPaymentRequest. */
    interface ITrackPaymentRequest {
        /** TrackPaymentRequest payment_hash */
        payment_hash?: Uint8Array | null;

        /** TrackPaymentRequest no_inflight_updates */
        no_inflight_updates?: boolean | null;
    }

    /** Represents a TrackPaymentRequest. */
    class TrackPaymentRequest implements ITrackPaymentRequest {
        /**
         * Constructs a new TrackPaymentRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.ITrackPaymentRequest);

        /** TrackPaymentRequest payment_hash. */
        public payment_hash: Uint8Array;

        /** TrackPaymentRequest no_inflight_updates. */
        public no_inflight_updates: boolean;

        /**
         * Creates a new TrackPaymentRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TrackPaymentRequest instance
         */
        public static create(
            properties?: routerrpc.ITrackPaymentRequest
        ): routerrpc.TrackPaymentRequest;

        /**
         * Encodes the specified TrackPaymentRequest message. Does not implicitly {@link routerrpc.TrackPaymentRequest.verify|verify} messages.
         * @param message TrackPaymentRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.ITrackPaymentRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified TrackPaymentRequest message, length delimited. Does not implicitly {@link routerrpc.TrackPaymentRequest.verify|verify} messages.
         * @param message TrackPaymentRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.ITrackPaymentRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a TrackPaymentRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TrackPaymentRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.TrackPaymentRequest;

        /**
         * Decodes a TrackPaymentRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TrackPaymentRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.TrackPaymentRequest;

        /**
         * Verifies a TrackPaymentRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a TrackPaymentRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TrackPaymentRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.TrackPaymentRequest;

        /**
         * Creates a plain object from a TrackPaymentRequest message. Also converts values to other types if specified.
         * @param message TrackPaymentRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.TrackPaymentRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this TrackPaymentRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TrackPaymentRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a TrackPaymentsRequest. */
    interface ITrackPaymentsRequest {
        /** TrackPaymentsRequest no_inflight_updates */
        no_inflight_updates?: boolean | null;
    }

    /** Represents a TrackPaymentsRequest. */
    class TrackPaymentsRequest implements ITrackPaymentsRequest {
        /**
         * Constructs a new TrackPaymentsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.ITrackPaymentsRequest);

        /** TrackPaymentsRequest no_inflight_updates. */
        public no_inflight_updates: boolean;

        /**
         * Creates a new TrackPaymentsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TrackPaymentsRequest instance
         */
        public static create(
            properties?: routerrpc.ITrackPaymentsRequest
        ): routerrpc.TrackPaymentsRequest;

        /**
         * Encodes the specified TrackPaymentsRequest message. Does not implicitly {@link routerrpc.TrackPaymentsRequest.verify|verify} messages.
         * @param message TrackPaymentsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.ITrackPaymentsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified TrackPaymentsRequest message, length delimited. Does not implicitly {@link routerrpc.TrackPaymentsRequest.verify|verify} messages.
         * @param message TrackPaymentsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.ITrackPaymentsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a TrackPaymentsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TrackPaymentsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.TrackPaymentsRequest;

        /**
         * Decodes a TrackPaymentsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TrackPaymentsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.TrackPaymentsRequest;

        /**
         * Verifies a TrackPaymentsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a TrackPaymentsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TrackPaymentsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.TrackPaymentsRequest;

        /**
         * Creates a plain object from a TrackPaymentsRequest message. Also converts values to other types if specified.
         * @param message TrackPaymentsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.TrackPaymentsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this TrackPaymentsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TrackPaymentsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a RouteFeeRequest. */
    interface IRouteFeeRequest {
        /** RouteFeeRequest dest */
        dest?: Uint8Array | null;

        /** RouteFeeRequest amt_sat */
        amt_sat?: Long | null;

        /** RouteFeeRequest payment_request */
        payment_request?: string | null;

        /** RouteFeeRequest timeout */
        timeout?: number | null;
    }

    /** Represents a RouteFeeRequest. */
    class RouteFeeRequest implements IRouteFeeRequest {
        /**
         * Constructs a new RouteFeeRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IRouteFeeRequest);

        /** RouteFeeRequest dest. */
        public dest: Uint8Array;

        /** RouteFeeRequest amt_sat. */
        public amt_sat: Long;

        /** RouteFeeRequest payment_request. */
        public payment_request: string;

        /** RouteFeeRequest timeout. */
        public timeout: number;

        /**
         * Creates a new RouteFeeRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns RouteFeeRequest instance
         */
        public static create(
            properties?: routerrpc.IRouteFeeRequest
        ): routerrpc.RouteFeeRequest;

        /**
         * Encodes the specified RouteFeeRequest message. Does not implicitly {@link routerrpc.RouteFeeRequest.verify|verify} messages.
         * @param message RouteFeeRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IRouteFeeRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified RouteFeeRequest message, length delimited. Does not implicitly {@link routerrpc.RouteFeeRequest.verify|verify} messages.
         * @param message RouteFeeRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IRouteFeeRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a RouteFeeRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns RouteFeeRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.RouteFeeRequest;

        /**
         * Decodes a RouteFeeRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns RouteFeeRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.RouteFeeRequest;

        /**
         * Verifies a RouteFeeRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a RouteFeeRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns RouteFeeRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.RouteFeeRequest;

        /**
         * Creates a plain object from a RouteFeeRequest message. Also converts values to other types if specified.
         * @param message RouteFeeRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.RouteFeeRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this RouteFeeRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for RouteFeeRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a RouteFeeResponse. */
    interface IRouteFeeResponse {
        /** RouteFeeResponse routing_fee_msat */
        routing_fee_msat?: Long | null;

        /** RouteFeeResponse time_lock_delay */
        time_lock_delay?: Long | null;

        /** RouteFeeResponse failure_reason */
        failure_reason?: lnrpc.PaymentFailureReason | null;
    }

    /** Represents a RouteFeeResponse. */
    class RouteFeeResponse implements IRouteFeeResponse {
        /**
         * Constructs a new RouteFeeResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IRouteFeeResponse);

        /** RouteFeeResponse routing_fee_msat. */
        public routing_fee_msat: Long;

        /** RouteFeeResponse time_lock_delay. */
        public time_lock_delay: Long;

        /** RouteFeeResponse failure_reason. */
        public failure_reason: lnrpc.PaymentFailureReason;

        /**
         * Creates a new RouteFeeResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns RouteFeeResponse instance
         */
        public static create(
            properties?: routerrpc.IRouteFeeResponse
        ): routerrpc.RouteFeeResponse;

        /**
         * Encodes the specified RouteFeeResponse message. Does not implicitly {@link routerrpc.RouteFeeResponse.verify|verify} messages.
         * @param message RouteFeeResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IRouteFeeResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified RouteFeeResponse message, length delimited. Does not implicitly {@link routerrpc.RouteFeeResponse.verify|verify} messages.
         * @param message RouteFeeResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IRouteFeeResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a RouteFeeResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns RouteFeeResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.RouteFeeResponse;

        /**
         * Decodes a RouteFeeResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns RouteFeeResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.RouteFeeResponse;

        /**
         * Verifies a RouteFeeResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a RouteFeeResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns RouteFeeResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.RouteFeeResponse;

        /**
         * Creates a plain object from a RouteFeeResponse message. Also converts values to other types if specified.
         * @param message RouteFeeResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.RouteFeeResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this RouteFeeResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for RouteFeeResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SendToRouteRequest. */
    interface ISendToRouteRequest {
        /** SendToRouteRequest payment_hash */
        payment_hash?: Uint8Array | null;

        /** SendToRouteRequest route */
        route?: lnrpc.IRoute | null;

        /** SendToRouteRequest skip_temp_err */
        skip_temp_err?: boolean | null;

        /** SendToRouteRequest first_hop_custom_records */
        first_hop_custom_records?: { [k: string]: Uint8Array } | null;
    }

    /** Represents a SendToRouteRequest. */
    class SendToRouteRequest implements ISendToRouteRequest {
        /**
         * Constructs a new SendToRouteRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.ISendToRouteRequest);

        /** SendToRouteRequest payment_hash. */
        public payment_hash: Uint8Array;

        /** SendToRouteRequest route. */
        public route?: lnrpc.IRoute | null;

        /** SendToRouteRequest skip_temp_err. */
        public skip_temp_err: boolean;

        /** SendToRouteRequest first_hop_custom_records. */
        public first_hop_custom_records: { [k: string]: Uint8Array };

        /**
         * Creates a new SendToRouteRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SendToRouteRequest instance
         */
        public static create(
            properties?: routerrpc.ISendToRouteRequest
        ): routerrpc.SendToRouteRequest;

        /**
         * Encodes the specified SendToRouteRequest message. Does not implicitly {@link routerrpc.SendToRouteRequest.verify|verify} messages.
         * @param message SendToRouteRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.ISendToRouteRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SendToRouteRequest message, length delimited. Does not implicitly {@link routerrpc.SendToRouteRequest.verify|verify} messages.
         * @param message SendToRouteRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.ISendToRouteRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SendToRouteRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SendToRouteRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.SendToRouteRequest;

        /**
         * Decodes a SendToRouteRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SendToRouteRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.SendToRouteRequest;

        /**
         * Verifies a SendToRouteRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SendToRouteRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SendToRouteRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.SendToRouteRequest;

        /**
         * Creates a plain object from a SendToRouteRequest message. Also converts values to other types if specified.
         * @param message SendToRouteRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.SendToRouteRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SendToRouteRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SendToRouteRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SendToRouteResponse. */
    interface ISendToRouteResponse {
        /** SendToRouteResponse preimage */
        preimage?: Uint8Array | null;

        /** SendToRouteResponse failure */
        failure?: lnrpc.IFailure | null;
    }

    /** Represents a SendToRouteResponse. */
    class SendToRouteResponse implements ISendToRouteResponse {
        /**
         * Constructs a new SendToRouteResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.ISendToRouteResponse);

        /** SendToRouteResponse preimage. */
        public preimage: Uint8Array;

        /** SendToRouteResponse failure. */
        public failure?: lnrpc.IFailure | null;

        /**
         * Creates a new SendToRouteResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SendToRouteResponse instance
         */
        public static create(
            properties?: routerrpc.ISendToRouteResponse
        ): routerrpc.SendToRouteResponse;

        /**
         * Encodes the specified SendToRouteResponse message. Does not implicitly {@link routerrpc.SendToRouteResponse.verify|verify} messages.
         * @param message SendToRouteResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.ISendToRouteResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SendToRouteResponse message, length delimited. Does not implicitly {@link routerrpc.SendToRouteResponse.verify|verify} messages.
         * @param message SendToRouteResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.ISendToRouteResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SendToRouteResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SendToRouteResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.SendToRouteResponse;

        /**
         * Decodes a SendToRouteResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SendToRouteResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.SendToRouteResponse;

        /**
         * Verifies a SendToRouteResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SendToRouteResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SendToRouteResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.SendToRouteResponse;

        /**
         * Creates a plain object from a SendToRouteResponse message. Also converts values to other types if specified.
         * @param message SendToRouteResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.SendToRouteResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SendToRouteResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SendToRouteResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ResetMissionControlRequest. */
    interface IResetMissionControlRequest {}

    /** Represents a ResetMissionControlRequest. */
    class ResetMissionControlRequest implements IResetMissionControlRequest {
        /**
         * Constructs a new ResetMissionControlRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IResetMissionControlRequest);

        /**
         * Creates a new ResetMissionControlRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ResetMissionControlRequest instance
         */
        public static create(
            properties?: routerrpc.IResetMissionControlRequest
        ): routerrpc.ResetMissionControlRequest;

        /**
         * Encodes the specified ResetMissionControlRequest message. Does not implicitly {@link routerrpc.ResetMissionControlRequest.verify|verify} messages.
         * @param message ResetMissionControlRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IResetMissionControlRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ResetMissionControlRequest message, length delimited. Does not implicitly {@link routerrpc.ResetMissionControlRequest.verify|verify} messages.
         * @param message ResetMissionControlRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IResetMissionControlRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ResetMissionControlRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ResetMissionControlRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.ResetMissionControlRequest;

        /**
         * Decodes a ResetMissionControlRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ResetMissionControlRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.ResetMissionControlRequest;

        /**
         * Verifies a ResetMissionControlRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ResetMissionControlRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ResetMissionControlRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.ResetMissionControlRequest;

        /**
         * Creates a plain object from a ResetMissionControlRequest message. Also converts values to other types if specified.
         * @param message ResetMissionControlRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.ResetMissionControlRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ResetMissionControlRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ResetMissionControlRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ResetMissionControlResponse. */
    interface IResetMissionControlResponse {}

    /** Represents a ResetMissionControlResponse. */
    class ResetMissionControlResponse implements IResetMissionControlResponse {
        /**
         * Constructs a new ResetMissionControlResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IResetMissionControlResponse);

        /**
         * Creates a new ResetMissionControlResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ResetMissionControlResponse instance
         */
        public static create(
            properties?: routerrpc.IResetMissionControlResponse
        ): routerrpc.ResetMissionControlResponse;

        /**
         * Encodes the specified ResetMissionControlResponse message. Does not implicitly {@link routerrpc.ResetMissionControlResponse.verify|verify} messages.
         * @param message ResetMissionControlResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IResetMissionControlResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ResetMissionControlResponse message, length delimited. Does not implicitly {@link routerrpc.ResetMissionControlResponse.verify|verify} messages.
         * @param message ResetMissionControlResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IResetMissionControlResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ResetMissionControlResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ResetMissionControlResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.ResetMissionControlResponse;

        /**
         * Decodes a ResetMissionControlResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ResetMissionControlResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.ResetMissionControlResponse;

        /**
         * Verifies a ResetMissionControlResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ResetMissionControlResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ResetMissionControlResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.ResetMissionControlResponse;

        /**
         * Creates a plain object from a ResetMissionControlResponse message. Also converts values to other types if specified.
         * @param message ResetMissionControlResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.ResetMissionControlResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ResetMissionControlResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ResetMissionControlResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a QueryMissionControlRequest. */
    interface IQueryMissionControlRequest {}

    /** Represents a QueryMissionControlRequest. */
    class QueryMissionControlRequest implements IQueryMissionControlRequest {
        /**
         * Constructs a new QueryMissionControlRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IQueryMissionControlRequest);

        /**
         * Creates a new QueryMissionControlRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns QueryMissionControlRequest instance
         */
        public static create(
            properties?: routerrpc.IQueryMissionControlRequest
        ): routerrpc.QueryMissionControlRequest;

        /**
         * Encodes the specified QueryMissionControlRequest message. Does not implicitly {@link routerrpc.QueryMissionControlRequest.verify|verify} messages.
         * @param message QueryMissionControlRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IQueryMissionControlRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified QueryMissionControlRequest message, length delimited. Does not implicitly {@link routerrpc.QueryMissionControlRequest.verify|verify} messages.
         * @param message QueryMissionControlRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IQueryMissionControlRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a QueryMissionControlRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns QueryMissionControlRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.QueryMissionControlRequest;

        /**
         * Decodes a QueryMissionControlRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns QueryMissionControlRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.QueryMissionControlRequest;

        /**
         * Verifies a QueryMissionControlRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a QueryMissionControlRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns QueryMissionControlRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.QueryMissionControlRequest;

        /**
         * Creates a plain object from a QueryMissionControlRequest message. Also converts values to other types if specified.
         * @param message QueryMissionControlRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.QueryMissionControlRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this QueryMissionControlRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for QueryMissionControlRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a QueryMissionControlResponse. */
    interface IQueryMissionControlResponse {
        /** QueryMissionControlResponse pairs */
        pairs?: routerrpc.IPairHistory[] | null;
    }

    /** Represents a QueryMissionControlResponse. */
    class QueryMissionControlResponse implements IQueryMissionControlResponse {
        /**
         * Constructs a new QueryMissionControlResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IQueryMissionControlResponse);

        /** QueryMissionControlResponse pairs. */
        public pairs: routerrpc.IPairHistory[];

        /**
         * Creates a new QueryMissionControlResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns QueryMissionControlResponse instance
         */
        public static create(
            properties?: routerrpc.IQueryMissionControlResponse
        ): routerrpc.QueryMissionControlResponse;

        /**
         * Encodes the specified QueryMissionControlResponse message. Does not implicitly {@link routerrpc.QueryMissionControlResponse.verify|verify} messages.
         * @param message QueryMissionControlResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IQueryMissionControlResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified QueryMissionControlResponse message, length delimited. Does not implicitly {@link routerrpc.QueryMissionControlResponse.verify|verify} messages.
         * @param message QueryMissionControlResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IQueryMissionControlResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a QueryMissionControlResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns QueryMissionControlResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.QueryMissionControlResponse;

        /**
         * Decodes a QueryMissionControlResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns QueryMissionControlResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.QueryMissionControlResponse;

        /**
         * Verifies a QueryMissionControlResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a QueryMissionControlResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns QueryMissionControlResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.QueryMissionControlResponse;

        /**
         * Creates a plain object from a QueryMissionControlResponse message. Also converts values to other types if specified.
         * @param message QueryMissionControlResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.QueryMissionControlResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this QueryMissionControlResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for QueryMissionControlResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a XImportMissionControlRequest. */
    interface IXImportMissionControlRequest {
        /** XImportMissionControlRequest pairs */
        pairs?: routerrpc.IPairHistory[] | null;

        /** XImportMissionControlRequest force */
        force?: boolean | null;
    }

    /** Represents a XImportMissionControlRequest. */
    class XImportMissionControlRequest
        implements IXImportMissionControlRequest
    {
        /**
         * Constructs a new XImportMissionControlRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IXImportMissionControlRequest);

        /** XImportMissionControlRequest pairs. */
        public pairs: routerrpc.IPairHistory[];

        /** XImportMissionControlRequest force. */
        public force: boolean;

        /**
         * Creates a new XImportMissionControlRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns XImportMissionControlRequest instance
         */
        public static create(
            properties?: routerrpc.IXImportMissionControlRequest
        ): routerrpc.XImportMissionControlRequest;

        /**
         * Encodes the specified XImportMissionControlRequest message. Does not implicitly {@link routerrpc.XImportMissionControlRequest.verify|verify} messages.
         * @param message XImportMissionControlRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IXImportMissionControlRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified XImportMissionControlRequest message, length delimited. Does not implicitly {@link routerrpc.XImportMissionControlRequest.verify|verify} messages.
         * @param message XImportMissionControlRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IXImportMissionControlRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a XImportMissionControlRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns XImportMissionControlRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.XImportMissionControlRequest;

        /**
         * Decodes a XImportMissionControlRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns XImportMissionControlRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.XImportMissionControlRequest;

        /**
         * Verifies a XImportMissionControlRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a XImportMissionControlRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns XImportMissionControlRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.XImportMissionControlRequest;

        /**
         * Creates a plain object from a XImportMissionControlRequest message. Also converts values to other types if specified.
         * @param message XImportMissionControlRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.XImportMissionControlRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this XImportMissionControlRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for XImportMissionControlRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a XImportMissionControlResponse. */
    interface IXImportMissionControlResponse {}

    /** Represents a XImportMissionControlResponse. */
    class XImportMissionControlResponse
        implements IXImportMissionControlResponse
    {
        /**
         * Constructs a new XImportMissionControlResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IXImportMissionControlResponse);

        /**
         * Creates a new XImportMissionControlResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns XImportMissionControlResponse instance
         */
        public static create(
            properties?: routerrpc.IXImportMissionControlResponse
        ): routerrpc.XImportMissionControlResponse;

        /**
         * Encodes the specified XImportMissionControlResponse message. Does not implicitly {@link routerrpc.XImportMissionControlResponse.verify|verify} messages.
         * @param message XImportMissionControlResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IXImportMissionControlResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified XImportMissionControlResponse message, length delimited. Does not implicitly {@link routerrpc.XImportMissionControlResponse.verify|verify} messages.
         * @param message XImportMissionControlResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IXImportMissionControlResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a XImportMissionControlResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns XImportMissionControlResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.XImportMissionControlResponse;

        /**
         * Decodes a XImportMissionControlResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns XImportMissionControlResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.XImportMissionControlResponse;

        /**
         * Verifies a XImportMissionControlResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a XImportMissionControlResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns XImportMissionControlResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.XImportMissionControlResponse;

        /**
         * Creates a plain object from a XImportMissionControlResponse message. Also converts values to other types if specified.
         * @param message XImportMissionControlResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.XImportMissionControlResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this XImportMissionControlResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for XImportMissionControlResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PairHistory. */
    interface IPairHistory {
        /** PairHistory node_from */
        node_from?: Uint8Array | null;

        /** PairHistory node_to */
        node_to?: Uint8Array | null;

        /** PairHistory history */
        history?: routerrpc.IPairData | null;
    }

    /** Represents a PairHistory. */
    class PairHistory implements IPairHistory {
        /**
         * Constructs a new PairHistory.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IPairHistory);

        /** PairHistory node_from. */
        public node_from: Uint8Array;

        /** PairHistory node_to. */
        public node_to: Uint8Array;

        /** PairHistory history. */
        public history?: routerrpc.IPairData | null;

        /**
         * Creates a new PairHistory instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PairHistory instance
         */
        public static create(
            properties?: routerrpc.IPairHistory
        ): routerrpc.PairHistory;

        /**
         * Encodes the specified PairHistory message. Does not implicitly {@link routerrpc.PairHistory.verify|verify} messages.
         * @param message PairHistory message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IPairHistory,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PairHistory message, length delimited. Does not implicitly {@link routerrpc.PairHistory.verify|verify} messages.
         * @param message PairHistory message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IPairHistory,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PairHistory message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PairHistory
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.PairHistory;

        /**
         * Decodes a PairHistory message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PairHistory
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.PairHistory;

        /**
         * Verifies a PairHistory message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PairHistory message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PairHistory
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.PairHistory;

        /**
         * Creates a plain object from a PairHistory message. Also converts values to other types if specified.
         * @param message PairHistory
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.PairHistory,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PairHistory to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PairHistory
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PairData. */
    interface IPairData {
        /** PairData fail_time */
        fail_time?: Long | null;

        /** PairData fail_amt_sat */
        fail_amt_sat?: Long | null;

        /** PairData fail_amt_msat */
        fail_amt_msat?: Long | null;

        /** PairData success_time */
        success_time?: Long | null;

        /** PairData success_amt_sat */
        success_amt_sat?: Long | null;

        /** PairData success_amt_msat */
        success_amt_msat?: Long | null;
    }

    /** Represents a PairData. */
    class PairData implements IPairData {
        /**
         * Constructs a new PairData.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IPairData);

        /** PairData fail_time. */
        public fail_time: Long;

        /** PairData fail_amt_sat. */
        public fail_amt_sat: Long;

        /** PairData fail_amt_msat. */
        public fail_amt_msat: Long;

        /** PairData success_time. */
        public success_time: Long;

        /** PairData success_amt_sat. */
        public success_amt_sat: Long;

        /** PairData success_amt_msat. */
        public success_amt_msat: Long;

        /**
         * Creates a new PairData instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PairData instance
         */
        public static create(
            properties?: routerrpc.IPairData
        ): routerrpc.PairData;

        /**
         * Encodes the specified PairData message. Does not implicitly {@link routerrpc.PairData.verify|verify} messages.
         * @param message PairData message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IPairData,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PairData message, length delimited. Does not implicitly {@link routerrpc.PairData.verify|verify} messages.
         * @param message PairData message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IPairData,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PairData message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PairData
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.PairData;

        /**
         * Decodes a PairData message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PairData
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.PairData;

        /**
         * Verifies a PairData message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PairData message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PairData
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.PairData;

        /**
         * Creates a plain object from a PairData message. Also converts values to other types if specified.
         * @param message PairData
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.PairData,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PairData to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PairData
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetMissionControlConfigRequest. */
    interface IGetMissionControlConfigRequest {}

    /** Represents a GetMissionControlConfigRequest. */
    class GetMissionControlConfigRequest
        implements IGetMissionControlConfigRequest
    {
        /**
         * Constructs a new GetMissionControlConfigRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IGetMissionControlConfigRequest);

        /**
         * Creates a new GetMissionControlConfigRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetMissionControlConfigRequest instance
         */
        public static create(
            properties?: routerrpc.IGetMissionControlConfigRequest
        ): routerrpc.GetMissionControlConfigRequest;

        /**
         * Encodes the specified GetMissionControlConfigRequest message. Does not implicitly {@link routerrpc.GetMissionControlConfigRequest.verify|verify} messages.
         * @param message GetMissionControlConfigRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IGetMissionControlConfigRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetMissionControlConfigRequest message, length delimited. Does not implicitly {@link routerrpc.GetMissionControlConfigRequest.verify|verify} messages.
         * @param message GetMissionControlConfigRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IGetMissionControlConfigRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetMissionControlConfigRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetMissionControlConfigRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.GetMissionControlConfigRequest;

        /**
         * Decodes a GetMissionControlConfigRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetMissionControlConfigRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.GetMissionControlConfigRequest;

        /**
         * Verifies a GetMissionControlConfigRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetMissionControlConfigRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetMissionControlConfigRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.GetMissionControlConfigRequest;

        /**
         * Creates a plain object from a GetMissionControlConfigRequest message. Also converts values to other types if specified.
         * @param message GetMissionControlConfigRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.GetMissionControlConfigRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetMissionControlConfigRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetMissionControlConfigRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetMissionControlConfigResponse. */
    interface IGetMissionControlConfigResponse {
        /** GetMissionControlConfigResponse config */
        config?: routerrpc.IMissionControlConfig | null;
    }

    /** Represents a GetMissionControlConfigResponse. */
    class GetMissionControlConfigResponse
        implements IGetMissionControlConfigResponse
    {
        /**
         * Constructs a new GetMissionControlConfigResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IGetMissionControlConfigResponse);

        /** GetMissionControlConfigResponse config. */
        public config?: routerrpc.IMissionControlConfig | null;

        /**
         * Creates a new GetMissionControlConfigResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetMissionControlConfigResponse instance
         */
        public static create(
            properties?: routerrpc.IGetMissionControlConfigResponse
        ): routerrpc.GetMissionControlConfigResponse;

        /**
         * Encodes the specified GetMissionControlConfigResponse message. Does not implicitly {@link routerrpc.GetMissionControlConfigResponse.verify|verify} messages.
         * @param message GetMissionControlConfigResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IGetMissionControlConfigResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetMissionControlConfigResponse message, length delimited. Does not implicitly {@link routerrpc.GetMissionControlConfigResponse.verify|verify} messages.
         * @param message GetMissionControlConfigResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IGetMissionControlConfigResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetMissionControlConfigResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetMissionControlConfigResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.GetMissionControlConfigResponse;

        /**
         * Decodes a GetMissionControlConfigResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetMissionControlConfigResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.GetMissionControlConfigResponse;

        /**
         * Verifies a GetMissionControlConfigResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetMissionControlConfigResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetMissionControlConfigResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.GetMissionControlConfigResponse;

        /**
         * Creates a plain object from a GetMissionControlConfigResponse message. Also converts values to other types if specified.
         * @param message GetMissionControlConfigResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.GetMissionControlConfigResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetMissionControlConfigResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetMissionControlConfigResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SetMissionControlConfigRequest. */
    interface ISetMissionControlConfigRequest {
        /** SetMissionControlConfigRequest config */
        config?: routerrpc.IMissionControlConfig | null;
    }

    /** Represents a SetMissionControlConfigRequest. */
    class SetMissionControlConfigRequest
        implements ISetMissionControlConfigRequest
    {
        /**
         * Constructs a new SetMissionControlConfigRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.ISetMissionControlConfigRequest);

        /** SetMissionControlConfigRequest config. */
        public config?: routerrpc.IMissionControlConfig | null;

        /**
         * Creates a new SetMissionControlConfigRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SetMissionControlConfigRequest instance
         */
        public static create(
            properties?: routerrpc.ISetMissionControlConfigRequest
        ): routerrpc.SetMissionControlConfigRequest;

        /**
         * Encodes the specified SetMissionControlConfigRequest message. Does not implicitly {@link routerrpc.SetMissionControlConfigRequest.verify|verify} messages.
         * @param message SetMissionControlConfigRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.ISetMissionControlConfigRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SetMissionControlConfigRequest message, length delimited. Does not implicitly {@link routerrpc.SetMissionControlConfigRequest.verify|verify} messages.
         * @param message SetMissionControlConfigRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.ISetMissionControlConfigRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SetMissionControlConfigRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SetMissionControlConfigRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.SetMissionControlConfigRequest;

        /**
         * Decodes a SetMissionControlConfigRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SetMissionControlConfigRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.SetMissionControlConfigRequest;

        /**
         * Verifies a SetMissionControlConfigRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SetMissionControlConfigRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SetMissionControlConfigRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.SetMissionControlConfigRequest;

        /**
         * Creates a plain object from a SetMissionControlConfigRequest message. Also converts values to other types if specified.
         * @param message SetMissionControlConfigRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.SetMissionControlConfigRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SetMissionControlConfigRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SetMissionControlConfigRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SetMissionControlConfigResponse. */
    interface ISetMissionControlConfigResponse {}

    /** Represents a SetMissionControlConfigResponse. */
    class SetMissionControlConfigResponse
        implements ISetMissionControlConfigResponse
    {
        /**
         * Constructs a new SetMissionControlConfigResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.ISetMissionControlConfigResponse);

        /**
         * Creates a new SetMissionControlConfigResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SetMissionControlConfigResponse instance
         */
        public static create(
            properties?: routerrpc.ISetMissionControlConfigResponse
        ): routerrpc.SetMissionControlConfigResponse;

        /**
         * Encodes the specified SetMissionControlConfigResponse message. Does not implicitly {@link routerrpc.SetMissionControlConfigResponse.verify|verify} messages.
         * @param message SetMissionControlConfigResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.ISetMissionControlConfigResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SetMissionControlConfigResponse message, length delimited. Does not implicitly {@link routerrpc.SetMissionControlConfigResponse.verify|verify} messages.
         * @param message SetMissionControlConfigResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.ISetMissionControlConfigResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SetMissionControlConfigResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SetMissionControlConfigResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.SetMissionControlConfigResponse;

        /**
         * Decodes a SetMissionControlConfigResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SetMissionControlConfigResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.SetMissionControlConfigResponse;

        /**
         * Verifies a SetMissionControlConfigResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SetMissionControlConfigResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SetMissionControlConfigResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.SetMissionControlConfigResponse;

        /**
         * Creates a plain object from a SetMissionControlConfigResponse message. Also converts values to other types if specified.
         * @param message SetMissionControlConfigResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.SetMissionControlConfigResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SetMissionControlConfigResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SetMissionControlConfigResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MissionControlConfig. */
    interface IMissionControlConfig {
        /** MissionControlConfig half_life_seconds */
        half_life_seconds?: Long | null;

        /** MissionControlConfig hop_probability */
        hop_probability?: number | null;

        /** MissionControlConfig weight */
        weight?: number | null;

        /** MissionControlConfig maximum_payment_results */
        maximum_payment_results?: number | null;

        /** MissionControlConfig minimum_failure_relax_interval */
        minimum_failure_relax_interval?: Long | null;

        /** MissionControlConfig model */
        model?: routerrpc.MissionControlConfig.ProbabilityModel | null;

        /** MissionControlConfig apriori */
        apriori?: routerrpc.IAprioriParameters | null;

        /** MissionControlConfig bimodal */
        bimodal?: routerrpc.IBimodalParameters | null;
    }

    /** Represents a MissionControlConfig. */
    class MissionControlConfig implements IMissionControlConfig {
        /**
         * Constructs a new MissionControlConfig.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IMissionControlConfig);

        /** MissionControlConfig half_life_seconds. */
        public half_life_seconds: Long;

        /** MissionControlConfig hop_probability. */
        public hop_probability: number;

        /** MissionControlConfig weight. */
        public weight: number;

        /** MissionControlConfig maximum_payment_results. */
        public maximum_payment_results: number;

        /** MissionControlConfig minimum_failure_relax_interval. */
        public minimum_failure_relax_interval: Long;

        /** MissionControlConfig model. */
        public model: routerrpc.MissionControlConfig.ProbabilityModel;

        /** MissionControlConfig apriori. */
        public apriori?: routerrpc.IAprioriParameters | null;

        /** MissionControlConfig bimodal. */
        public bimodal?: routerrpc.IBimodalParameters | null;

        /** MissionControlConfig EstimatorConfig. */
        public EstimatorConfig?: 'apriori' | 'bimodal';

        /**
         * Creates a new MissionControlConfig instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MissionControlConfig instance
         */
        public static create(
            properties?: routerrpc.IMissionControlConfig
        ): routerrpc.MissionControlConfig;

        /**
         * Encodes the specified MissionControlConfig message. Does not implicitly {@link routerrpc.MissionControlConfig.verify|verify} messages.
         * @param message MissionControlConfig message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IMissionControlConfig,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MissionControlConfig message, length delimited. Does not implicitly {@link routerrpc.MissionControlConfig.verify|verify} messages.
         * @param message MissionControlConfig message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IMissionControlConfig,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MissionControlConfig message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MissionControlConfig
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.MissionControlConfig;

        /**
         * Decodes a MissionControlConfig message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MissionControlConfig
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.MissionControlConfig;

        /**
         * Verifies a MissionControlConfig message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MissionControlConfig message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MissionControlConfig
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.MissionControlConfig;

        /**
         * Creates a plain object from a MissionControlConfig message. Also converts values to other types if specified.
         * @param message MissionControlConfig
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.MissionControlConfig,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MissionControlConfig to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MissionControlConfig
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace MissionControlConfig {
        /** ProbabilityModel enum. */
        enum ProbabilityModel {
            APRIORI = 0,
            BIMODAL = 1
        }
    }

    /** Properties of a BimodalParameters. */
    interface IBimodalParameters {
        /** BimodalParameters node_weight */
        node_weight?: number | null;

        /** BimodalParameters scale_msat */
        scale_msat?: Long | null;

        /** BimodalParameters decay_time */
        decay_time?: Long | null;
    }

    /** Represents a BimodalParameters. */
    class BimodalParameters implements IBimodalParameters {
        /**
         * Constructs a new BimodalParameters.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IBimodalParameters);

        /** BimodalParameters node_weight. */
        public node_weight: number;

        /** BimodalParameters scale_msat. */
        public scale_msat: Long;

        /** BimodalParameters decay_time. */
        public decay_time: Long;

        /**
         * Creates a new BimodalParameters instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BimodalParameters instance
         */
        public static create(
            properties?: routerrpc.IBimodalParameters
        ): routerrpc.BimodalParameters;

        /**
         * Encodes the specified BimodalParameters message. Does not implicitly {@link routerrpc.BimodalParameters.verify|verify} messages.
         * @param message BimodalParameters message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IBimodalParameters,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BimodalParameters message, length delimited. Does not implicitly {@link routerrpc.BimodalParameters.verify|verify} messages.
         * @param message BimodalParameters message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IBimodalParameters,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BimodalParameters message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BimodalParameters
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.BimodalParameters;

        /**
         * Decodes a BimodalParameters message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BimodalParameters
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.BimodalParameters;

        /**
         * Verifies a BimodalParameters message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BimodalParameters message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BimodalParameters
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.BimodalParameters;

        /**
         * Creates a plain object from a BimodalParameters message. Also converts values to other types if specified.
         * @param message BimodalParameters
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.BimodalParameters,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BimodalParameters to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BimodalParameters
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AprioriParameters. */
    interface IAprioriParameters {
        /** AprioriParameters half_life_seconds */
        half_life_seconds?: Long | null;

        /** AprioriParameters hop_probability */
        hop_probability?: number | null;

        /** AprioriParameters weight */
        weight?: number | null;

        /** AprioriParameters capacity_fraction */
        capacity_fraction?: number | null;
    }

    /** Represents an AprioriParameters. */
    class AprioriParameters implements IAprioriParameters {
        /**
         * Constructs a new AprioriParameters.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IAprioriParameters);

        /** AprioriParameters half_life_seconds. */
        public half_life_seconds: Long;

        /** AprioriParameters hop_probability. */
        public hop_probability: number;

        /** AprioriParameters weight. */
        public weight: number;

        /** AprioriParameters capacity_fraction. */
        public capacity_fraction: number;

        /**
         * Creates a new AprioriParameters instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AprioriParameters instance
         */
        public static create(
            properties?: routerrpc.IAprioriParameters
        ): routerrpc.AprioriParameters;

        /**
         * Encodes the specified AprioriParameters message. Does not implicitly {@link routerrpc.AprioriParameters.verify|verify} messages.
         * @param message AprioriParameters message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IAprioriParameters,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AprioriParameters message, length delimited. Does not implicitly {@link routerrpc.AprioriParameters.verify|verify} messages.
         * @param message AprioriParameters message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IAprioriParameters,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AprioriParameters message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AprioriParameters
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.AprioriParameters;

        /**
         * Decodes an AprioriParameters message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AprioriParameters
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.AprioriParameters;

        /**
         * Verifies an AprioriParameters message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AprioriParameters message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AprioriParameters
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.AprioriParameters;

        /**
         * Creates a plain object from an AprioriParameters message. Also converts values to other types if specified.
         * @param message AprioriParameters
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.AprioriParameters,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AprioriParameters to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AprioriParameters
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a QueryProbabilityRequest. */
    interface IQueryProbabilityRequest {
        /** QueryProbabilityRequest from_node */
        from_node?: Uint8Array | null;

        /** QueryProbabilityRequest to_node */
        to_node?: Uint8Array | null;

        /** QueryProbabilityRequest amt_msat */
        amt_msat?: Long | null;
    }

    /** Represents a QueryProbabilityRequest. */
    class QueryProbabilityRequest implements IQueryProbabilityRequest {
        /**
         * Constructs a new QueryProbabilityRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IQueryProbabilityRequest);

        /** QueryProbabilityRequest from_node. */
        public from_node: Uint8Array;

        /** QueryProbabilityRequest to_node. */
        public to_node: Uint8Array;

        /** QueryProbabilityRequest amt_msat. */
        public amt_msat: Long;

        /**
         * Creates a new QueryProbabilityRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns QueryProbabilityRequest instance
         */
        public static create(
            properties?: routerrpc.IQueryProbabilityRequest
        ): routerrpc.QueryProbabilityRequest;

        /**
         * Encodes the specified QueryProbabilityRequest message. Does not implicitly {@link routerrpc.QueryProbabilityRequest.verify|verify} messages.
         * @param message QueryProbabilityRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IQueryProbabilityRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified QueryProbabilityRequest message, length delimited. Does not implicitly {@link routerrpc.QueryProbabilityRequest.verify|verify} messages.
         * @param message QueryProbabilityRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IQueryProbabilityRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a QueryProbabilityRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns QueryProbabilityRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.QueryProbabilityRequest;

        /**
         * Decodes a QueryProbabilityRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns QueryProbabilityRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.QueryProbabilityRequest;

        /**
         * Verifies a QueryProbabilityRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a QueryProbabilityRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns QueryProbabilityRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.QueryProbabilityRequest;

        /**
         * Creates a plain object from a QueryProbabilityRequest message. Also converts values to other types if specified.
         * @param message QueryProbabilityRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.QueryProbabilityRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this QueryProbabilityRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for QueryProbabilityRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a QueryProbabilityResponse. */
    interface IQueryProbabilityResponse {
        /** QueryProbabilityResponse probability */
        probability?: number | null;

        /** QueryProbabilityResponse history */
        history?: routerrpc.IPairData | null;
    }

    /** Represents a QueryProbabilityResponse. */
    class QueryProbabilityResponse implements IQueryProbabilityResponse {
        /**
         * Constructs a new QueryProbabilityResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IQueryProbabilityResponse);

        /** QueryProbabilityResponse probability. */
        public probability: number;

        /** QueryProbabilityResponse history. */
        public history?: routerrpc.IPairData | null;

        /**
         * Creates a new QueryProbabilityResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns QueryProbabilityResponse instance
         */
        public static create(
            properties?: routerrpc.IQueryProbabilityResponse
        ): routerrpc.QueryProbabilityResponse;

        /**
         * Encodes the specified QueryProbabilityResponse message. Does not implicitly {@link routerrpc.QueryProbabilityResponse.verify|verify} messages.
         * @param message QueryProbabilityResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IQueryProbabilityResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified QueryProbabilityResponse message, length delimited. Does not implicitly {@link routerrpc.QueryProbabilityResponse.verify|verify} messages.
         * @param message QueryProbabilityResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IQueryProbabilityResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a QueryProbabilityResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns QueryProbabilityResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.QueryProbabilityResponse;

        /**
         * Decodes a QueryProbabilityResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns QueryProbabilityResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.QueryProbabilityResponse;

        /**
         * Verifies a QueryProbabilityResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a QueryProbabilityResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns QueryProbabilityResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.QueryProbabilityResponse;

        /**
         * Creates a plain object from a QueryProbabilityResponse message. Also converts values to other types if specified.
         * @param message QueryProbabilityResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.QueryProbabilityResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this QueryProbabilityResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for QueryProbabilityResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a BuildRouteRequest. */
    interface IBuildRouteRequest {
        /** BuildRouteRequest amt_msat */
        amt_msat?: Long | null;

        /** BuildRouteRequest final_cltv_delta */
        final_cltv_delta?: number | null;

        /** BuildRouteRequest outgoing_chan_id */
        outgoing_chan_id?: Long | null;

        /** BuildRouteRequest hop_pubkeys */
        hop_pubkeys?: Uint8Array[] | null;

        /** BuildRouteRequest payment_addr */
        payment_addr?: Uint8Array | null;

        /** BuildRouteRequest first_hop_custom_records */
        first_hop_custom_records?: { [k: string]: Uint8Array } | null;
    }

    /** Represents a BuildRouteRequest. */
    class BuildRouteRequest implements IBuildRouteRequest {
        /**
         * Constructs a new BuildRouteRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IBuildRouteRequest);

        /** BuildRouteRequest amt_msat. */
        public amt_msat: Long;

        /** BuildRouteRequest final_cltv_delta. */
        public final_cltv_delta: number;

        /** BuildRouteRequest outgoing_chan_id. */
        public outgoing_chan_id: Long;

        /** BuildRouteRequest hop_pubkeys. */
        public hop_pubkeys: Uint8Array[];

        /** BuildRouteRequest payment_addr. */
        public payment_addr: Uint8Array;

        /** BuildRouteRequest first_hop_custom_records. */
        public first_hop_custom_records: { [k: string]: Uint8Array };

        /**
         * Creates a new BuildRouteRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BuildRouteRequest instance
         */
        public static create(
            properties?: routerrpc.IBuildRouteRequest
        ): routerrpc.BuildRouteRequest;

        /**
         * Encodes the specified BuildRouteRequest message. Does not implicitly {@link routerrpc.BuildRouteRequest.verify|verify} messages.
         * @param message BuildRouteRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IBuildRouteRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BuildRouteRequest message, length delimited. Does not implicitly {@link routerrpc.BuildRouteRequest.verify|verify} messages.
         * @param message BuildRouteRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IBuildRouteRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BuildRouteRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BuildRouteRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.BuildRouteRequest;

        /**
         * Decodes a BuildRouteRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BuildRouteRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.BuildRouteRequest;

        /**
         * Verifies a BuildRouteRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BuildRouteRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BuildRouteRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.BuildRouteRequest;

        /**
         * Creates a plain object from a BuildRouteRequest message. Also converts values to other types if specified.
         * @param message BuildRouteRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.BuildRouteRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BuildRouteRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BuildRouteRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a BuildRouteResponse. */
    interface IBuildRouteResponse {
        /** BuildRouteResponse route */
        route?: lnrpc.IRoute | null;
    }

    /** Represents a BuildRouteResponse. */
    class BuildRouteResponse implements IBuildRouteResponse {
        /**
         * Constructs a new BuildRouteResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IBuildRouteResponse);

        /** BuildRouteResponse route. */
        public route?: lnrpc.IRoute | null;

        /**
         * Creates a new BuildRouteResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BuildRouteResponse instance
         */
        public static create(
            properties?: routerrpc.IBuildRouteResponse
        ): routerrpc.BuildRouteResponse;

        /**
         * Encodes the specified BuildRouteResponse message. Does not implicitly {@link routerrpc.BuildRouteResponse.verify|verify} messages.
         * @param message BuildRouteResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IBuildRouteResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BuildRouteResponse message, length delimited. Does not implicitly {@link routerrpc.BuildRouteResponse.verify|verify} messages.
         * @param message BuildRouteResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IBuildRouteResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BuildRouteResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BuildRouteResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.BuildRouteResponse;

        /**
         * Decodes a BuildRouteResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BuildRouteResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.BuildRouteResponse;

        /**
         * Verifies a BuildRouteResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BuildRouteResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BuildRouteResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.BuildRouteResponse;

        /**
         * Creates a plain object from a BuildRouteResponse message. Also converts values to other types if specified.
         * @param message BuildRouteResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.BuildRouteResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BuildRouteResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BuildRouteResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SubscribeHtlcEventsRequest. */
    interface ISubscribeHtlcEventsRequest {}

    /** Represents a SubscribeHtlcEventsRequest. */
    class SubscribeHtlcEventsRequest implements ISubscribeHtlcEventsRequest {
        /**
         * Constructs a new SubscribeHtlcEventsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.ISubscribeHtlcEventsRequest);

        /**
         * Creates a new SubscribeHtlcEventsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SubscribeHtlcEventsRequest instance
         */
        public static create(
            properties?: routerrpc.ISubscribeHtlcEventsRequest
        ): routerrpc.SubscribeHtlcEventsRequest;

        /**
         * Encodes the specified SubscribeHtlcEventsRequest message. Does not implicitly {@link routerrpc.SubscribeHtlcEventsRequest.verify|verify} messages.
         * @param message SubscribeHtlcEventsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.ISubscribeHtlcEventsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SubscribeHtlcEventsRequest message, length delimited. Does not implicitly {@link routerrpc.SubscribeHtlcEventsRequest.verify|verify} messages.
         * @param message SubscribeHtlcEventsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.ISubscribeHtlcEventsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SubscribeHtlcEventsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SubscribeHtlcEventsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.SubscribeHtlcEventsRequest;

        /**
         * Decodes a SubscribeHtlcEventsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SubscribeHtlcEventsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.SubscribeHtlcEventsRequest;

        /**
         * Verifies a SubscribeHtlcEventsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SubscribeHtlcEventsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SubscribeHtlcEventsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.SubscribeHtlcEventsRequest;

        /**
         * Creates a plain object from a SubscribeHtlcEventsRequest message. Also converts values to other types if specified.
         * @param message SubscribeHtlcEventsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.SubscribeHtlcEventsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SubscribeHtlcEventsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SubscribeHtlcEventsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a HtlcEvent. */
    interface IHtlcEvent {
        /** HtlcEvent incoming_channel_id */
        incoming_channel_id?: Long | null;

        /** HtlcEvent outgoing_channel_id */
        outgoing_channel_id?: Long | null;

        /** HtlcEvent incoming_htlc_id */
        incoming_htlc_id?: Long | null;

        /** HtlcEvent outgoing_htlc_id */
        outgoing_htlc_id?: Long | null;

        /** HtlcEvent timestamp_ns */
        timestamp_ns?: Long | null;

        /** HtlcEvent event_type */
        event_type?: routerrpc.HtlcEvent.EventType | null;

        /** HtlcEvent forward_event */
        forward_event?: routerrpc.IForwardEvent | null;

        /** HtlcEvent forward_fail_event */
        forward_fail_event?: routerrpc.IForwardFailEvent | null;

        /** HtlcEvent settle_event */
        settle_event?: routerrpc.ISettleEvent | null;

        /** HtlcEvent link_fail_event */
        link_fail_event?: routerrpc.ILinkFailEvent | null;

        /** HtlcEvent subscribed_event */
        subscribed_event?: routerrpc.ISubscribedEvent | null;

        /** HtlcEvent final_htlc_event */
        final_htlc_event?: routerrpc.IFinalHtlcEvent | null;
    }

    /** Represents a HtlcEvent. */
    class HtlcEvent implements IHtlcEvent {
        /**
         * Constructs a new HtlcEvent.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IHtlcEvent);

        /** HtlcEvent incoming_channel_id. */
        public incoming_channel_id: Long;

        /** HtlcEvent outgoing_channel_id. */
        public outgoing_channel_id: Long;

        /** HtlcEvent incoming_htlc_id. */
        public incoming_htlc_id: Long;

        /** HtlcEvent outgoing_htlc_id. */
        public outgoing_htlc_id: Long;

        /** HtlcEvent timestamp_ns. */
        public timestamp_ns: Long;

        /** HtlcEvent event_type. */
        public event_type: routerrpc.HtlcEvent.EventType;

        /** HtlcEvent forward_event. */
        public forward_event?: routerrpc.IForwardEvent | null;

        /** HtlcEvent forward_fail_event. */
        public forward_fail_event?: routerrpc.IForwardFailEvent | null;

        /** HtlcEvent settle_event. */
        public settle_event?: routerrpc.ISettleEvent | null;

        /** HtlcEvent link_fail_event. */
        public link_fail_event?: routerrpc.ILinkFailEvent | null;

        /** HtlcEvent subscribed_event. */
        public subscribed_event?: routerrpc.ISubscribedEvent | null;

        /** HtlcEvent final_htlc_event. */
        public final_htlc_event?: routerrpc.IFinalHtlcEvent | null;

        /** HtlcEvent event. */
        public event?:
            | 'forward_event'
            | 'forward_fail_event'
            | 'settle_event'
            | 'link_fail_event'
            | 'subscribed_event'
            | 'final_htlc_event';

        /**
         * Creates a new HtlcEvent instance using the specified properties.
         * @param [properties] Properties to set
         * @returns HtlcEvent instance
         */
        public static create(
            properties?: routerrpc.IHtlcEvent
        ): routerrpc.HtlcEvent;

        /**
         * Encodes the specified HtlcEvent message. Does not implicitly {@link routerrpc.HtlcEvent.verify|verify} messages.
         * @param message HtlcEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IHtlcEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified HtlcEvent message, length delimited. Does not implicitly {@link routerrpc.HtlcEvent.verify|verify} messages.
         * @param message HtlcEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IHtlcEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a HtlcEvent message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns HtlcEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.HtlcEvent;

        /**
         * Decodes a HtlcEvent message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns HtlcEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.HtlcEvent;

        /**
         * Verifies a HtlcEvent message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a HtlcEvent message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns HtlcEvent
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.HtlcEvent;

        /**
         * Creates a plain object from a HtlcEvent message. Also converts values to other types if specified.
         * @param message HtlcEvent
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.HtlcEvent,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this HtlcEvent to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for HtlcEvent
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace HtlcEvent {
        /** EventType enum. */
        enum EventType {
            UNKNOWN = 0,
            SEND = 1,
            RECEIVE = 2,
            FORWARD = 3
        }
    }

    /** Properties of a HtlcInfo. */
    interface IHtlcInfo {
        /** HtlcInfo incoming_timelock */
        incoming_timelock?: number | null;

        /** HtlcInfo outgoing_timelock */
        outgoing_timelock?: number | null;

        /** HtlcInfo incoming_amt_msat */
        incoming_amt_msat?: Long | null;

        /** HtlcInfo outgoing_amt_msat */
        outgoing_amt_msat?: Long | null;
    }

    /** Represents a HtlcInfo. */
    class HtlcInfo implements IHtlcInfo {
        /**
         * Constructs a new HtlcInfo.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IHtlcInfo);

        /** HtlcInfo incoming_timelock. */
        public incoming_timelock: number;

        /** HtlcInfo outgoing_timelock. */
        public outgoing_timelock: number;

        /** HtlcInfo incoming_amt_msat. */
        public incoming_amt_msat: Long;

        /** HtlcInfo outgoing_amt_msat. */
        public outgoing_amt_msat: Long;

        /**
         * Creates a new HtlcInfo instance using the specified properties.
         * @param [properties] Properties to set
         * @returns HtlcInfo instance
         */
        public static create(
            properties?: routerrpc.IHtlcInfo
        ): routerrpc.HtlcInfo;

        /**
         * Encodes the specified HtlcInfo message. Does not implicitly {@link routerrpc.HtlcInfo.verify|verify} messages.
         * @param message HtlcInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IHtlcInfo,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified HtlcInfo message, length delimited. Does not implicitly {@link routerrpc.HtlcInfo.verify|verify} messages.
         * @param message HtlcInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IHtlcInfo,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a HtlcInfo message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns HtlcInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.HtlcInfo;

        /**
         * Decodes a HtlcInfo message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns HtlcInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.HtlcInfo;

        /**
         * Verifies a HtlcInfo message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a HtlcInfo message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns HtlcInfo
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.HtlcInfo;

        /**
         * Creates a plain object from a HtlcInfo message. Also converts values to other types if specified.
         * @param message HtlcInfo
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.HtlcInfo,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this HtlcInfo to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for HtlcInfo
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ForwardEvent. */
    interface IForwardEvent {
        /** ForwardEvent info */
        info?: routerrpc.IHtlcInfo | null;
    }

    /** Represents a ForwardEvent. */
    class ForwardEvent implements IForwardEvent {
        /**
         * Constructs a new ForwardEvent.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IForwardEvent);

        /** ForwardEvent info. */
        public info?: routerrpc.IHtlcInfo | null;

        /**
         * Creates a new ForwardEvent instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ForwardEvent instance
         */
        public static create(
            properties?: routerrpc.IForwardEvent
        ): routerrpc.ForwardEvent;

        /**
         * Encodes the specified ForwardEvent message. Does not implicitly {@link routerrpc.ForwardEvent.verify|verify} messages.
         * @param message ForwardEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IForwardEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ForwardEvent message, length delimited. Does not implicitly {@link routerrpc.ForwardEvent.verify|verify} messages.
         * @param message ForwardEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IForwardEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ForwardEvent message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ForwardEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.ForwardEvent;

        /**
         * Decodes a ForwardEvent message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ForwardEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.ForwardEvent;

        /**
         * Verifies a ForwardEvent message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ForwardEvent message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ForwardEvent
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.ForwardEvent;

        /**
         * Creates a plain object from a ForwardEvent message. Also converts values to other types if specified.
         * @param message ForwardEvent
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.ForwardEvent,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ForwardEvent to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ForwardEvent
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ForwardFailEvent. */
    interface IForwardFailEvent {}

    /** Represents a ForwardFailEvent. */
    class ForwardFailEvent implements IForwardFailEvent {
        /**
         * Constructs a new ForwardFailEvent.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IForwardFailEvent);

        /**
         * Creates a new ForwardFailEvent instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ForwardFailEvent instance
         */
        public static create(
            properties?: routerrpc.IForwardFailEvent
        ): routerrpc.ForwardFailEvent;

        /**
         * Encodes the specified ForwardFailEvent message. Does not implicitly {@link routerrpc.ForwardFailEvent.verify|verify} messages.
         * @param message ForwardFailEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IForwardFailEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ForwardFailEvent message, length delimited. Does not implicitly {@link routerrpc.ForwardFailEvent.verify|verify} messages.
         * @param message ForwardFailEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IForwardFailEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ForwardFailEvent message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ForwardFailEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.ForwardFailEvent;

        /**
         * Decodes a ForwardFailEvent message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ForwardFailEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.ForwardFailEvent;

        /**
         * Verifies a ForwardFailEvent message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ForwardFailEvent message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ForwardFailEvent
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.ForwardFailEvent;

        /**
         * Creates a plain object from a ForwardFailEvent message. Also converts values to other types if specified.
         * @param message ForwardFailEvent
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.ForwardFailEvent,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ForwardFailEvent to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ForwardFailEvent
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SettleEvent. */
    interface ISettleEvent {
        /** SettleEvent preimage */
        preimage?: Uint8Array | null;
    }

    /** Represents a SettleEvent. */
    class SettleEvent implements ISettleEvent {
        /**
         * Constructs a new SettleEvent.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.ISettleEvent);

        /** SettleEvent preimage. */
        public preimage: Uint8Array;

        /**
         * Creates a new SettleEvent instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SettleEvent instance
         */
        public static create(
            properties?: routerrpc.ISettleEvent
        ): routerrpc.SettleEvent;

        /**
         * Encodes the specified SettleEvent message. Does not implicitly {@link routerrpc.SettleEvent.verify|verify} messages.
         * @param message SettleEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.ISettleEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SettleEvent message, length delimited. Does not implicitly {@link routerrpc.SettleEvent.verify|verify} messages.
         * @param message SettleEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.ISettleEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SettleEvent message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SettleEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.SettleEvent;

        /**
         * Decodes a SettleEvent message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SettleEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.SettleEvent;

        /**
         * Verifies a SettleEvent message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SettleEvent message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SettleEvent
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.SettleEvent;

        /**
         * Creates a plain object from a SettleEvent message. Also converts values to other types if specified.
         * @param message SettleEvent
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.SettleEvent,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SettleEvent to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SettleEvent
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a FinalHtlcEvent. */
    interface IFinalHtlcEvent {
        /** FinalHtlcEvent settled */
        settled?: boolean | null;

        /** FinalHtlcEvent offchain */
        offchain?: boolean | null;
    }

    /** Represents a FinalHtlcEvent. */
    class FinalHtlcEvent implements IFinalHtlcEvent {
        /**
         * Constructs a new FinalHtlcEvent.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IFinalHtlcEvent);

        /** FinalHtlcEvent settled. */
        public settled: boolean;

        /** FinalHtlcEvent offchain. */
        public offchain: boolean;

        /**
         * Creates a new FinalHtlcEvent instance using the specified properties.
         * @param [properties] Properties to set
         * @returns FinalHtlcEvent instance
         */
        public static create(
            properties?: routerrpc.IFinalHtlcEvent
        ): routerrpc.FinalHtlcEvent;

        /**
         * Encodes the specified FinalHtlcEvent message. Does not implicitly {@link routerrpc.FinalHtlcEvent.verify|verify} messages.
         * @param message FinalHtlcEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IFinalHtlcEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified FinalHtlcEvent message, length delimited. Does not implicitly {@link routerrpc.FinalHtlcEvent.verify|verify} messages.
         * @param message FinalHtlcEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IFinalHtlcEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a FinalHtlcEvent message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns FinalHtlcEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.FinalHtlcEvent;

        /**
         * Decodes a FinalHtlcEvent message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns FinalHtlcEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.FinalHtlcEvent;

        /**
         * Verifies a FinalHtlcEvent message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a FinalHtlcEvent message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns FinalHtlcEvent
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.FinalHtlcEvent;

        /**
         * Creates a plain object from a FinalHtlcEvent message. Also converts values to other types if specified.
         * @param message FinalHtlcEvent
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.FinalHtlcEvent,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this FinalHtlcEvent to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for FinalHtlcEvent
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SubscribedEvent. */
    interface ISubscribedEvent {}

    /** Represents a SubscribedEvent. */
    class SubscribedEvent implements ISubscribedEvent {
        /**
         * Constructs a new SubscribedEvent.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.ISubscribedEvent);

        /**
         * Creates a new SubscribedEvent instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SubscribedEvent instance
         */
        public static create(
            properties?: routerrpc.ISubscribedEvent
        ): routerrpc.SubscribedEvent;

        /**
         * Encodes the specified SubscribedEvent message. Does not implicitly {@link routerrpc.SubscribedEvent.verify|verify} messages.
         * @param message SubscribedEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.ISubscribedEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SubscribedEvent message, length delimited. Does not implicitly {@link routerrpc.SubscribedEvent.verify|verify} messages.
         * @param message SubscribedEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.ISubscribedEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SubscribedEvent message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SubscribedEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.SubscribedEvent;

        /**
         * Decodes a SubscribedEvent message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SubscribedEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.SubscribedEvent;

        /**
         * Verifies a SubscribedEvent message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SubscribedEvent message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SubscribedEvent
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.SubscribedEvent;

        /**
         * Creates a plain object from a SubscribedEvent message. Also converts values to other types if specified.
         * @param message SubscribedEvent
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.SubscribedEvent,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SubscribedEvent to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SubscribedEvent
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a LinkFailEvent. */
    interface ILinkFailEvent {
        /** LinkFailEvent info */
        info?: routerrpc.IHtlcInfo | null;

        /** LinkFailEvent wire_failure */
        wire_failure?: lnrpc.Failure.FailureCode | null;

        /** LinkFailEvent failure_detail */
        failure_detail?: routerrpc.FailureDetail | null;

        /** LinkFailEvent failure_string */
        failure_string?: string | null;
    }

    /** Represents a LinkFailEvent. */
    class LinkFailEvent implements ILinkFailEvent {
        /**
         * Constructs a new LinkFailEvent.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.ILinkFailEvent);

        /** LinkFailEvent info. */
        public info?: routerrpc.IHtlcInfo | null;

        /** LinkFailEvent wire_failure. */
        public wire_failure: lnrpc.Failure.FailureCode;

        /** LinkFailEvent failure_detail. */
        public failure_detail: routerrpc.FailureDetail;

        /** LinkFailEvent failure_string. */
        public failure_string: string;

        /**
         * Creates a new LinkFailEvent instance using the specified properties.
         * @param [properties] Properties to set
         * @returns LinkFailEvent instance
         */
        public static create(
            properties?: routerrpc.ILinkFailEvent
        ): routerrpc.LinkFailEvent;

        /**
         * Encodes the specified LinkFailEvent message. Does not implicitly {@link routerrpc.LinkFailEvent.verify|verify} messages.
         * @param message LinkFailEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.ILinkFailEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified LinkFailEvent message, length delimited. Does not implicitly {@link routerrpc.LinkFailEvent.verify|verify} messages.
         * @param message LinkFailEvent message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.ILinkFailEvent,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a LinkFailEvent message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns LinkFailEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.LinkFailEvent;

        /**
         * Decodes a LinkFailEvent message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns LinkFailEvent
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.LinkFailEvent;

        /**
         * Verifies a LinkFailEvent message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a LinkFailEvent message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns LinkFailEvent
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.LinkFailEvent;

        /**
         * Creates a plain object from a LinkFailEvent message. Also converts values to other types if specified.
         * @param message LinkFailEvent
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.LinkFailEvent,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this LinkFailEvent to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for LinkFailEvent
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** FailureDetail enum. */
    enum FailureDetail {
        UNKNOWN = 0,
        NO_DETAIL = 1,
        ONION_DECODE = 2,
        LINK_NOT_ELIGIBLE = 3,
        ON_CHAIN_TIMEOUT = 4,
        HTLC_EXCEEDS_MAX = 5,
        INSUFFICIENT_BALANCE = 6,
        INCOMPLETE_FORWARD = 7,
        HTLC_ADD_FAILED = 8,
        FORWARDS_DISABLED = 9,
        INVOICE_CANCELED = 10,
        INVOICE_UNDERPAID = 11,
        INVOICE_EXPIRY_TOO_SOON = 12,
        INVOICE_NOT_OPEN = 13,
        MPP_INVOICE_TIMEOUT = 14,
        ADDRESS_MISMATCH = 15,
        SET_TOTAL_MISMATCH = 16,
        SET_TOTAL_TOO_LOW = 17,
        SET_OVERPAID = 18,
        UNKNOWN_INVOICE = 19,
        INVALID_KEYSEND = 20,
        MPP_IN_PROGRESS = 21,
        CIRCULAR_ROUTE = 22
    }

    /** PaymentState enum. */
    enum PaymentState {
        IN_FLIGHT = 0,
        SUCCEEDED = 1,
        FAILED_TIMEOUT = 2,
        FAILED_NO_ROUTE = 3,
        FAILED_ERROR = 4,
        FAILED_INCORRECT_PAYMENT_DETAILS = 5,
        FAILED_INSUFFICIENT_BALANCE = 6
    }

    /** Properties of a PaymentStatus. */
    interface IPaymentStatus {
        /** PaymentStatus state */
        state?: routerrpc.PaymentState | null;

        /** PaymentStatus preimage */
        preimage?: Uint8Array | null;

        /** PaymentStatus htlcs */
        htlcs?: lnrpc.IHTLCAttempt[] | null;
    }

    /** Represents a PaymentStatus. */
    class PaymentStatus implements IPaymentStatus {
        /**
         * Constructs a new PaymentStatus.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IPaymentStatus);

        /** PaymentStatus state. */
        public state: routerrpc.PaymentState;

        /** PaymentStatus preimage. */
        public preimage: Uint8Array;

        /** PaymentStatus htlcs. */
        public htlcs: lnrpc.IHTLCAttempt[];

        /**
         * Creates a new PaymentStatus instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PaymentStatus instance
         */
        public static create(
            properties?: routerrpc.IPaymentStatus
        ): routerrpc.PaymentStatus;

        /**
         * Encodes the specified PaymentStatus message. Does not implicitly {@link routerrpc.PaymentStatus.verify|verify} messages.
         * @param message PaymentStatus message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IPaymentStatus,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PaymentStatus message, length delimited. Does not implicitly {@link routerrpc.PaymentStatus.verify|verify} messages.
         * @param message PaymentStatus message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IPaymentStatus,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PaymentStatus message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PaymentStatus
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.PaymentStatus;

        /**
         * Decodes a PaymentStatus message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PaymentStatus
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.PaymentStatus;

        /**
         * Verifies a PaymentStatus message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PaymentStatus message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PaymentStatus
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.PaymentStatus;

        /**
         * Creates a plain object from a PaymentStatus message. Also converts values to other types if specified.
         * @param message PaymentStatus
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.PaymentStatus,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PaymentStatus to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PaymentStatus
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a CircuitKey. */
    interface ICircuitKey {
        /** The id of the channel that the is part of this circuit. */
        chan_id?: Long | null;

        /** The index of the incoming htlc in the incoming channel. */
        htlc_id?: Long | null;
    }

    /** Represents a CircuitKey. */
    class CircuitKey implements ICircuitKey {
        /**
         * Constructs a new CircuitKey.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.ICircuitKey);

        /** The id of the channel that the is part of this circuit. */
        public chan_id: Long;

        /** The index of the incoming htlc in the incoming channel. */
        public htlc_id: Long;

        /**
         * Creates a new CircuitKey instance using the specified properties.
         * @param [properties] Properties to set
         * @returns CircuitKey instance
         */
        public static create(
            properties?: routerrpc.ICircuitKey
        ): routerrpc.CircuitKey;

        /**
         * Encodes the specified CircuitKey message. Does not implicitly {@link routerrpc.CircuitKey.verify|verify} messages.
         * @param message CircuitKey message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.ICircuitKey,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified CircuitKey message, length delimited. Does not implicitly {@link routerrpc.CircuitKey.verify|verify} messages.
         * @param message CircuitKey message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.ICircuitKey,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a CircuitKey message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns CircuitKey
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.CircuitKey;

        /**
         * Decodes a CircuitKey message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns CircuitKey
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.CircuitKey;

        /**
         * Verifies a CircuitKey message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a CircuitKey message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns CircuitKey
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.CircuitKey;

        /**
         * Creates a plain object from a CircuitKey message. Also converts values to other types if specified.
         * @param message CircuitKey
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.CircuitKey,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this CircuitKey to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for CircuitKey
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ForwardHtlcInterceptRequest. */
    interface IForwardHtlcInterceptRequest {
        /** ForwardHtlcInterceptRequest incoming_circuit_key */
        incoming_circuit_key?: routerrpc.ICircuitKey | null;

        /** ForwardHtlcInterceptRequest incoming_amount_msat */
        incoming_amount_msat?: Long | null;

        /** ForwardHtlcInterceptRequest incoming_expiry */
        incoming_expiry?: number | null;

        /** ForwardHtlcInterceptRequest payment_hash */
        payment_hash?: Uint8Array | null;

        /** ForwardHtlcInterceptRequest outgoing_requested_chan_id */
        outgoing_requested_chan_id?: Long | null;

        /** ForwardHtlcInterceptRequest outgoing_amount_msat */
        outgoing_amount_msat?: Long | null;

        /** ForwardHtlcInterceptRequest outgoing_expiry */
        outgoing_expiry?: number | null;

        /** ForwardHtlcInterceptRequest custom_records */
        custom_records?: { [k: string]: Uint8Array } | null;

        /** ForwardHtlcInterceptRequest onion_blob */
        onion_blob?: Uint8Array | null;

        /** ForwardHtlcInterceptRequest auto_fail_height */
        auto_fail_height?: number | null;

        /** ForwardHtlcInterceptRequest in_wire_custom_records */
        in_wire_custom_records?: { [k: string]: Uint8Array } | null;
    }

    /** Represents a ForwardHtlcInterceptRequest. */
    class ForwardHtlcInterceptRequest implements IForwardHtlcInterceptRequest {
        /**
         * Constructs a new ForwardHtlcInterceptRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IForwardHtlcInterceptRequest);

        /** ForwardHtlcInterceptRequest incoming_circuit_key. */
        public incoming_circuit_key?: routerrpc.ICircuitKey | null;

        /** ForwardHtlcInterceptRequest incoming_amount_msat. */
        public incoming_amount_msat: Long;

        /** ForwardHtlcInterceptRequest incoming_expiry. */
        public incoming_expiry: number;

        /** ForwardHtlcInterceptRequest payment_hash. */
        public payment_hash: Uint8Array;

        /** ForwardHtlcInterceptRequest outgoing_requested_chan_id. */
        public outgoing_requested_chan_id: Long;

        /** ForwardHtlcInterceptRequest outgoing_amount_msat. */
        public outgoing_amount_msat: Long;

        /** ForwardHtlcInterceptRequest outgoing_expiry. */
        public outgoing_expiry: number;

        /** ForwardHtlcInterceptRequest custom_records. */
        public custom_records: { [k: string]: Uint8Array };

        /** ForwardHtlcInterceptRequest onion_blob. */
        public onion_blob: Uint8Array;

        /** ForwardHtlcInterceptRequest auto_fail_height. */
        public auto_fail_height: number;

        /** ForwardHtlcInterceptRequest in_wire_custom_records. */
        public in_wire_custom_records: { [k: string]: Uint8Array };

        /**
         * Creates a new ForwardHtlcInterceptRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ForwardHtlcInterceptRequest instance
         */
        public static create(
            properties?: routerrpc.IForwardHtlcInterceptRequest
        ): routerrpc.ForwardHtlcInterceptRequest;

        /**
         * Encodes the specified ForwardHtlcInterceptRequest message. Does not implicitly {@link routerrpc.ForwardHtlcInterceptRequest.verify|verify} messages.
         * @param message ForwardHtlcInterceptRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IForwardHtlcInterceptRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ForwardHtlcInterceptRequest message, length delimited. Does not implicitly {@link routerrpc.ForwardHtlcInterceptRequest.verify|verify} messages.
         * @param message ForwardHtlcInterceptRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IForwardHtlcInterceptRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ForwardHtlcInterceptRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ForwardHtlcInterceptRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.ForwardHtlcInterceptRequest;

        /**
         * Decodes a ForwardHtlcInterceptRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ForwardHtlcInterceptRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.ForwardHtlcInterceptRequest;

        /**
         * Verifies a ForwardHtlcInterceptRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ForwardHtlcInterceptRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ForwardHtlcInterceptRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.ForwardHtlcInterceptRequest;

        /**
         * Creates a plain object from a ForwardHtlcInterceptRequest message. Also converts values to other types if specified.
         * @param message ForwardHtlcInterceptRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.ForwardHtlcInterceptRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ForwardHtlcInterceptRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ForwardHtlcInterceptRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ForwardHtlcInterceptResponse. */
    interface IForwardHtlcInterceptResponse {
        /**
         * The key of this forwarded htlc. It defines the incoming channel id and
         * the index in this channel.
         */
        incoming_circuit_key?: routerrpc.ICircuitKey | null;

        /** ForwardHtlcInterceptResponse action */
        action?: routerrpc.ResolveHoldForwardAction | null;

        /** ForwardHtlcInterceptResponse preimage */
        preimage?: Uint8Array | null;

        /** ForwardHtlcInterceptResponse failure_message */
        failure_message?: Uint8Array | null;

        /** ForwardHtlcInterceptResponse failure_code */
        failure_code?: lnrpc.Failure.FailureCode | null;

        /** ForwardHtlcInterceptResponse in_amount_msat */
        in_amount_msat?: Long | null;

        /** ForwardHtlcInterceptResponse out_amount_msat */
        out_amount_msat?: Long | null;

        /** ForwardHtlcInterceptResponse out_wire_custom_records */
        out_wire_custom_records?: { [k: string]: Uint8Array } | null;
    }

    /**
     * ForwardHtlcInterceptResponse enables the caller to resolve a previously hold
     * forward. The caller can choose either to:
     * - `Resume`: Execute the default behavior (usually forward).
     * - `ResumeModified`: Execute the default behavior (usually forward) with HTLC
     * field modifications.
     * - `Reject`: Fail the htlc backwards.
     * - `Settle`: Settle this htlc with a given preimage.
     */
    class ForwardHtlcInterceptResponse
        implements IForwardHtlcInterceptResponse
    {
        /**
         * Constructs a new ForwardHtlcInterceptResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IForwardHtlcInterceptResponse);

        /**
         * The key of this forwarded htlc. It defines the incoming channel id and
         * the index in this channel.
         */
        public incoming_circuit_key?: routerrpc.ICircuitKey | null;

        /** ForwardHtlcInterceptResponse action. */
        public action: routerrpc.ResolveHoldForwardAction;

        /** ForwardHtlcInterceptResponse preimage. */
        public preimage: Uint8Array;

        /** ForwardHtlcInterceptResponse failure_message. */
        public failure_message: Uint8Array;

        /** ForwardHtlcInterceptResponse failure_code. */
        public failure_code: lnrpc.Failure.FailureCode;

        /** ForwardHtlcInterceptResponse in_amount_msat. */
        public in_amount_msat: Long;

        /** ForwardHtlcInterceptResponse out_amount_msat. */
        public out_amount_msat: Long;

        /** ForwardHtlcInterceptResponse out_wire_custom_records. */
        public out_wire_custom_records: { [k: string]: Uint8Array };

        /**
         * Creates a new ForwardHtlcInterceptResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ForwardHtlcInterceptResponse instance
         */
        public static create(
            properties?: routerrpc.IForwardHtlcInterceptResponse
        ): routerrpc.ForwardHtlcInterceptResponse;

        /**
         * Encodes the specified ForwardHtlcInterceptResponse message. Does not implicitly {@link routerrpc.ForwardHtlcInterceptResponse.verify|verify} messages.
         * @param message ForwardHtlcInterceptResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IForwardHtlcInterceptResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ForwardHtlcInterceptResponse message, length delimited. Does not implicitly {@link routerrpc.ForwardHtlcInterceptResponse.verify|verify} messages.
         * @param message ForwardHtlcInterceptResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IForwardHtlcInterceptResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ForwardHtlcInterceptResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ForwardHtlcInterceptResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.ForwardHtlcInterceptResponse;

        /**
         * Decodes a ForwardHtlcInterceptResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ForwardHtlcInterceptResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.ForwardHtlcInterceptResponse;

        /**
         * Verifies a ForwardHtlcInterceptResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ForwardHtlcInterceptResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ForwardHtlcInterceptResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.ForwardHtlcInterceptResponse;

        /**
         * Creates a plain object from a ForwardHtlcInterceptResponse message. Also converts values to other types if specified.
         * @param message ForwardHtlcInterceptResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.ForwardHtlcInterceptResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ForwardHtlcInterceptResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ForwardHtlcInterceptResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** ResolveHoldForwardAction enum. */
    enum ResolveHoldForwardAction {
        SETTLE = 0,
        FAIL = 1,
        RESUME = 2,
        RESUME_MODIFIED = 3
    }

    /** Properties of an UpdateChanStatusRequest. */
    interface IUpdateChanStatusRequest {
        /** UpdateChanStatusRequest chan_point */
        chan_point?: lnrpc.IChannelPoint | null;

        /** UpdateChanStatusRequest action */
        action?: routerrpc.ChanStatusAction | null;
    }

    /** Represents an UpdateChanStatusRequest. */
    class UpdateChanStatusRequest implements IUpdateChanStatusRequest {
        /**
         * Constructs a new UpdateChanStatusRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IUpdateChanStatusRequest);

        /** UpdateChanStatusRequest chan_point. */
        public chan_point?: lnrpc.IChannelPoint | null;

        /** UpdateChanStatusRequest action. */
        public action: routerrpc.ChanStatusAction;

        /**
         * Creates a new UpdateChanStatusRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns UpdateChanStatusRequest instance
         */
        public static create(
            properties?: routerrpc.IUpdateChanStatusRequest
        ): routerrpc.UpdateChanStatusRequest;

        /**
         * Encodes the specified UpdateChanStatusRequest message. Does not implicitly {@link routerrpc.UpdateChanStatusRequest.verify|verify} messages.
         * @param message UpdateChanStatusRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IUpdateChanStatusRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified UpdateChanStatusRequest message, length delimited. Does not implicitly {@link routerrpc.UpdateChanStatusRequest.verify|verify} messages.
         * @param message UpdateChanStatusRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IUpdateChanStatusRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an UpdateChanStatusRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns UpdateChanStatusRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.UpdateChanStatusRequest;

        /**
         * Decodes an UpdateChanStatusRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns UpdateChanStatusRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.UpdateChanStatusRequest;

        /**
         * Verifies an UpdateChanStatusRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an UpdateChanStatusRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns UpdateChanStatusRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.UpdateChanStatusRequest;

        /**
         * Creates a plain object from an UpdateChanStatusRequest message. Also converts values to other types if specified.
         * @param message UpdateChanStatusRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.UpdateChanStatusRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this UpdateChanStatusRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for UpdateChanStatusRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** ChanStatusAction enum. */
    enum ChanStatusAction {
        ENABLE = 0,
        DISABLE = 1,
        AUTO = 2
    }

    /** Properties of an UpdateChanStatusResponse. */
    interface IUpdateChanStatusResponse {}

    /** Represents an UpdateChanStatusResponse. */
    class UpdateChanStatusResponse implements IUpdateChanStatusResponse {
        /**
         * Constructs a new UpdateChanStatusResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IUpdateChanStatusResponse);

        /**
         * Creates a new UpdateChanStatusResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns UpdateChanStatusResponse instance
         */
        public static create(
            properties?: routerrpc.IUpdateChanStatusResponse
        ): routerrpc.UpdateChanStatusResponse;

        /**
         * Encodes the specified UpdateChanStatusResponse message. Does not implicitly {@link routerrpc.UpdateChanStatusResponse.verify|verify} messages.
         * @param message UpdateChanStatusResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IUpdateChanStatusResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified UpdateChanStatusResponse message, length delimited. Does not implicitly {@link routerrpc.UpdateChanStatusResponse.verify|verify} messages.
         * @param message UpdateChanStatusResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IUpdateChanStatusResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an UpdateChanStatusResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns UpdateChanStatusResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.UpdateChanStatusResponse;

        /**
         * Decodes an UpdateChanStatusResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns UpdateChanStatusResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.UpdateChanStatusResponse;

        /**
         * Verifies an UpdateChanStatusResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an UpdateChanStatusResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns UpdateChanStatusResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.UpdateChanStatusResponse;

        /**
         * Creates a plain object from an UpdateChanStatusResponse message. Also converts values to other types if specified.
         * @param message UpdateChanStatusResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.UpdateChanStatusResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this UpdateChanStatusResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for UpdateChanStatusResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AddAliasesRequest. */
    interface IAddAliasesRequest {
        /** AddAliasesRequest alias_maps */
        alias_maps?: lnrpc.IAliasMap[] | null;
    }

    /** Represents an AddAliasesRequest. */
    class AddAliasesRequest implements IAddAliasesRequest {
        /**
         * Constructs a new AddAliasesRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IAddAliasesRequest);

        /** AddAliasesRequest alias_maps. */
        public alias_maps: lnrpc.IAliasMap[];

        /**
         * Creates a new AddAliasesRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AddAliasesRequest instance
         */
        public static create(
            properties?: routerrpc.IAddAliasesRequest
        ): routerrpc.AddAliasesRequest;

        /**
         * Encodes the specified AddAliasesRequest message. Does not implicitly {@link routerrpc.AddAliasesRequest.verify|verify} messages.
         * @param message AddAliasesRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IAddAliasesRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AddAliasesRequest message, length delimited. Does not implicitly {@link routerrpc.AddAliasesRequest.verify|verify} messages.
         * @param message AddAliasesRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IAddAliasesRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AddAliasesRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AddAliasesRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.AddAliasesRequest;

        /**
         * Decodes an AddAliasesRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AddAliasesRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.AddAliasesRequest;

        /**
         * Verifies an AddAliasesRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AddAliasesRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AddAliasesRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.AddAliasesRequest;

        /**
         * Creates a plain object from an AddAliasesRequest message. Also converts values to other types if specified.
         * @param message AddAliasesRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.AddAliasesRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AddAliasesRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AddAliasesRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AddAliasesResponse. */
    interface IAddAliasesResponse {
        /** AddAliasesResponse alias_maps */
        alias_maps?: lnrpc.IAliasMap[] | null;
    }

    /** Represents an AddAliasesResponse. */
    class AddAliasesResponse implements IAddAliasesResponse {
        /**
         * Constructs a new AddAliasesResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IAddAliasesResponse);

        /** AddAliasesResponse alias_maps. */
        public alias_maps: lnrpc.IAliasMap[];

        /**
         * Creates a new AddAliasesResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AddAliasesResponse instance
         */
        public static create(
            properties?: routerrpc.IAddAliasesResponse
        ): routerrpc.AddAliasesResponse;

        /**
         * Encodes the specified AddAliasesResponse message. Does not implicitly {@link routerrpc.AddAliasesResponse.verify|verify} messages.
         * @param message AddAliasesResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IAddAliasesResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AddAliasesResponse message, length delimited. Does not implicitly {@link routerrpc.AddAliasesResponse.verify|verify} messages.
         * @param message AddAliasesResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IAddAliasesResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AddAliasesResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AddAliasesResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.AddAliasesResponse;

        /**
         * Decodes an AddAliasesResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AddAliasesResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.AddAliasesResponse;

        /**
         * Verifies an AddAliasesResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AddAliasesResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AddAliasesResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.AddAliasesResponse;

        /**
         * Creates a plain object from an AddAliasesResponse message. Also converts values to other types if specified.
         * @param message AddAliasesResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.AddAliasesResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AddAliasesResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AddAliasesResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a DeleteAliasesRequest. */
    interface IDeleteAliasesRequest {
        /** DeleteAliasesRequest alias_maps */
        alias_maps?: lnrpc.IAliasMap[] | null;
    }

    /** Represents a DeleteAliasesRequest. */
    class DeleteAliasesRequest implements IDeleteAliasesRequest {
        /**
         * Constructs a new DeleteAliasesRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IDeleteAliasesRequest);

        /** DeleteAliasesRequest alias_maps. */
        public alias_maps: lnrpc.IAliasMap[];

        /**
         * Creates a new DeleteAliasesRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DeleteAliasesRequest instance
         */
        public static create(
            properties?: routerrpc.IDeleteAliasesRequest
        ): routerrpc.DeleteAliasesRequest;

        /**
         * Encodes the specified DeleteAliasesRequest message. Does not implicitly {@link routerrpc.DeleteAliasesRequest.verify|verify} messages.
         * @param message DeleteAliasesRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IDeleteAliasesRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified DeleteAliasesRequest message, length delimited. Does not implicitly {@link routerrpc.DeleteAliasesRequest.verify|verify} messages.
         * @param message DeleteAliasesRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IDeleteAliasesRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a DeleteAliasesRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DeleteAliasesRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.DeleteAliasesRequest;

        /**
         * Decodes a DeleteAliasesRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DeleteAliasesRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.DeleteAliasesRequest;

        /**
         * Verifies a DeleteAliasesRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a DeleteAliasesRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DeleteAliasesRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.DeleteAliasesRequest;

        /**
         * Creates a plain object from a DeleteAliasesRequest message. Also converts values to other types if specified.
         * @param message DeleteAliasesRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.DeleteAliasesRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this DeleteAliasesRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DeleteAliasesRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a DeleteAliasesResponse. */
    interface IDeleteAliasesResponse {
        /** DeleteAliasesResponse alias_maps */
        alias_maps?: lnrpc.IAliasMap[] | null;
    }

    /** Represents a DeleteAliasesResponse. */
    class DeleteAliasesResponse implements IDeleteAliasesResponse {
        /**
         * Constructs a new DeleteAliasesResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: routerrpc.IDeleteAliasesResponse);

        /** DeleteAliasesResponse alias_maps. */
        public alias_maps: lnrpc.IAliasMap[];

        /**
         * Creates a new DeleteAliasesResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DeleteAliasesResponse instance
         */
        public static create(
            properties?: routerrpc.IDeleteAliasesResponse
        ): routerrpc.DeleteAliasesResponse;

        /**
         * Encodes the specified DeleteAliasesResponse message. Does not implicitly {@link routerrpc.DeleteAliasesResponse.verify|verify} messages.
         * @param message DeleteAliasesResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: routerrpc.IDeleteAliasesResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified DeleteAliasesResponse message, length delimited. Does not implicitly {@link routerrpc.DeleteAliasesResponse.verify|verify} messages.
         * @param message DeleteAliasesResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: routerrpc.IDeleteAliasesResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a DeleteAliasesResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DeleteAliasesResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): routerrpc.DeleteAliasesResponse;

        /**
         * Decodes a DeleteAliasesResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DeleteAliasesResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): routerrpc.DeleteAliasesResponse;

        /**
         * Verifies a DeleteAliasesResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a DeleteAliasesResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DeleteAliasesResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): routerrpc.DeleteAliasesResponse;

        /**
         * Creates a plain object from a DeleteAliasesResponse message. Also converts values to other types if specified.
         * @param message DeleteAliasesResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: routerrpc.DeleteAliasesResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this DeleteAliasesResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DeleteAliasesResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }
}

/** Namespace signrpc. */
export namespace signrpc {
    /** Represents a Signer */
    class Signer extends $protobuf.rpc.Service {
        /**
         * Constructs a new Signer service.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         */
        constructor(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        );

        /**
         * Creates new Signer service using the specified rpc implementation.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         * @returns RPC service. Useful where requests and/or responses are streamed.
         */
        public static create(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        ): Signer;

        /**
         * Calls SignOutputRaw.
         * @param request SignReq message or plain object
         * @param callback Node-style callback called with the error, if any, and SignResp
         */
        public signOutputRaw(
            request: signrpc.ISignReq,
            callback: signrpc.Signer.SignOutputRawCallback
        ): void;

        /**
         * Calls SignOutputRaw.
         * @param request SignReq message or plain object
         * @returns Promise
         */
        public signOutputRaw(
            request: signrpc.ISignReq
        ): Promise<signrpc.SignResp>;

        /**
         * Calls ComputeInputScript.
         * @param request SignReq message or plain object
         * @param callback Node-style callback called with the error, if any, and InputScriptResp
         */
        public computeInputScript(
            request: signrpc.ISignReq,
            callback: signrpc.Signer.ComputeInputScriptCallback
        ): void;

        /**
         * Calls ComputeInputScript.
         * @param request SignReq message or plain object
         * @returns Promise
         */
        public computeInputScript(
            request: signrpc.ISignReq
        ): Promise<signrpc.InputScriptResp>;

        /**
         * Calls SignMessage.
         * @param request SignMessageReq message or plain object
         * @param callback Node-style callback called with the error, if any, and SignMessageResp
         */
        public signMessage(
            request: signrpc.ISignMessageReq,
            callback: signrpc.Signer.SignMessageCallback
        ): void;

        /**
         * Calls SignMessage.
         * @param request SignMessageReq message or plain object
         * @returns Promise
         */
        public signMessage(
            request: signrpc.ISignMessageReq
        ): Promise<signrpc.SignMessageResp>;

        /**
         * Calls VerifyMessage.
         * @param request VerifyMessageReq message or plain object
         * @param callback Node-style callback called with the error, if any, and VerifyMessageResp
         */
        public verifyMessage(
            request: signrpc.IVerifyMessageReq,
            callback: signrpc.Signer.VerifyMessageCallback
        ): void;

        /**
         * Calls VerifyMessage.
         * @param request VerifyMessageReq message or plain object
         * @returns Promise
         */
        public verifyMessage(
            request: signrpc.IVerifyMessageReq
        ): Promise<signrpc.VerifyMessageResp>;

        /**
         * Calls DeriveSharedKey.
         * @param request SharedKeyRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SharedKeyResponse
         */
        public deriveSharedKey(
            request: signrpc.ISharedKeyRequest,
            callback: signrpc.Signer.DeriveSharedKeyCallback
        ): void;

        /**
         * Calls DeriveSharedKey.
         * @param request SharedKeyRequest message or plain object
         * @returns Promise
         */
        public deriveSharedKey(
            request: signrpc.ISharedKeyRequest
        ): Promise<signrpc.SharedKeyResponse>;

        /**
         * Calls MuSig2CombineKeys.
         * @param request MuSig2CombineKeysRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and MuSig2CombineKeysResponse
         */
        public muSig2CombineKeys(
            request: signrpc.IMuSig2CombineKeysRequest,
            callback: signrpc.Signer.MuSig2CombineKeysCallback
        ): void;

        /**
         * Calls MuSig2CombineKeys.
         * @param request MuSig2CombineKeysRequest message or plain object
         * @returns Promise
         */
        public muSig2CombineKeys(
            request: signrpc.IMuSig2CombineKeysRequest
        ): Promise<signrpc.MuSig2CombineKeysResponse>;

        /**
         * Calls MuSig2CreateSession.
         * @param request MuSig2SessionRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and MuSig2SessionResponse
         */
        public muSig2CreateSession(
            request: signrpc.IMuSig2SessionRequest,
            callback: signrpc.Signer.MuSig2CreateSessionCallback
        ): void;

        /**
         * Calls MuSig2CreateSession.
         * @param request MuSig2SessionRequest message or plain object
         * @returns Promise
         */
        public muSig2CreateSession(
            request: signrpc.IMuSig2SessionRequest
        ): Promise<signrpc.MuSig2SessionResponse>;

        /**
         * Calls MuSig2RegisterNonces.
         * @param request MuSig2RegisterNoncesRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and MuSig2RegisterNoncesResponse
         */
        public muSig2RegisterNonces(
            request: signrpc.IMuSig2RegisterNoncesRequest,
            callback: signrpc.Signer.MuSig2RegisterNoncesCallback
        ): void;

        /**
         * Calls MuSig2RegisterNonces.
         * @param request MuSig2RegisterNoncesRequest message or plain object
         * @returns Promise
         */
        public muSig2RegisterNonces(
            request: signrpc.IMuSig2RegisterNoncesRequest
        ): Promise<signrpc.MuSig2RegisterNoncesResponse>;

        /**
         * Calls MuSig2Sign.
         * @param request MuSig2SignRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and MuSig2SignResponse
         */
        public muSig2Sign(
            request: signrpc.IMuSig2SignRequest,
            callback: signrpc.Signer.MuSig2SignCallback
        ): void;

        /**
         * Calls MuSig2Sign.
         * @param request MuSig2SignRequest message or plain object
         * @returns Promise
         */
        public muSig2Sign(
            request: signrpc.IMuSig2SignRequest
        ): Promise<signrpc.MuSig2SignResponse>;

        /**
         * Calls MuSig2CombineSig.
         * @param request MuSig2CombineSigRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and MuSig2CombineSigResponse
         */
        public muSig2CombineSig(
            request: signrpc.IMuSig2CombineSigRequest,
            callback: signrpc.Signer.MuSig2CombineSigCallback
        ): void;

        /**
         * Calls MuSig2CombineSig.
         * @param request MuSig2CombineSigRequest message or plain object
         * @returns Promise
         */
        public muSig2CombineSig(
            request: signrpc.IMuSig2CombineSigRequest
        ): Promise<signrpc.MuSig2CombineSigResponse>;

        /**
         * Calls MuSig2Cleanup.
         * @param request MuSig2CleanupRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and MuSig2CleanupResponse
         */
        public muSig2Cleanup(
            request: signrpc.IMuSig2CleanupRequest,
            callback: signrpc.Signer.MuSig2CleanupCallback
        ): void;

        /**
         * Calls MuSig2Cleanup.
         * @param request MuSig2CleanupRequest message or plain object
         * @returns Promise
         */
        public muSig2Cleanup(
            request: signrpc.IMuSig2CleanupRequest
        ): Promise<signrpc.MuSig2CleanupResponse>;
    }

    namespace Signer {
        /**
         * Callback as used by {@link signrpc.Signer#signOutputRaw}.
         * @param error Error, if any
         * @param [response] SignResp
         */
        type SignOutputRawCallback = (
            error: Error | null,
            response?: signrpc.SignResp
        ) => void;

        /**
         * Callback as used by {@link signrpc.Signer#computeInputScript}.
         * @param error Error, if any
         * @param [response] InputScriptResp
         */
        type ComputeInputScriptCallback = (
            error: Error | null,
            response?: signrpc.InputScriptResp
        ) => void;

        /**
         * Callback as used by {@link signrpc.Signer#signMessage}.
         * @param error Error, if any
         * @param [response] SignMessageResp
         */
        type SignMessageCallback = (
            error: Error | null,
            response?: signrpc.SignMessageResp
        ) => void;

        /**
         * Callback as used by {@link signrpc.Signer#verifyMessage}.
         * @param error Error, if any
         * @param [response] VerifyMessageResp
         */
        type VerifyMessageCallback = (
            error: Error | null,
            response?: signrpc.VerifyMessageResp
        ) => void;

        /**
         * Callback as used by {@link signrpc.Signer#deriveSharedKey}.
         * @param error Error, if any
         * @param [response] SharedKeyResponse
         */
        type DeriveSharedKeyCallback = (
            error: Error | null,
            response?: signrpc.SharedKeyResponse
        ) => void;

        /**
         * Callback as used by {@link signrpc.Signer#muSig2CombineKeys}.
         * @param error Error, if any
         * @param [response] MuSig2CombineKeysResponse
         */
        type MuSig2CombineKeysCallback = (
            error: Error | null,
            response?: signrpc.MuSig2CombineKeysResponse
        ) => void;

        /**
         * Callback as used by {@link signrpc.Signer#muSig2CreateSession}.
         * @param error Error, if any
         * @param [response] MuSig2SessionResponse
         */
        type MuSig2CreateSessionCallback = (
            error: Error | null,
            response?: signrpc.MuSig2SessionResponse
        ) => void;

        /**
         * Callback as used by {@link signrpc.Signer#muSig2RegisterNonces}.
         * @param error Error, if any
         * @param [response] MuSig2RegisterNoncesResponse
         */
        type MuSig2RegisterNoncesCallback = (
            error: Error | null,
            response?: signrpc.MuSig2RegisterNoncesResponse
        ) => void;

        /**
         * Callback as used by {@link signrpc.Signer#muSig2Sign}.
         * @param error Error, if any
         * @param [response] MuSig2SignResponse
         */
        type MuSig2SignCallback = (
            error: Error | null,
            response?: signrpc.MuSig2SignResponse
        ) => void;

        /**
         * Callback as used by {@link signrpc.Signer#muSig2CombineSig}.
         * @param error Error, if any
         * @param [response] MuSig2CombineSigResponse
         */
        type MuSig2CombineSigCallback = (
            error: Error | null,
            response?: signrpc.MuSig2CombineSigResponse
        ) => void;

        /**
         * Callback as used by {@link signrpc.Signer#muSig2Cleanup}.
         * @param error Error, if any
         * @param [response] MuSig2CleanupResponse
         */
        type MuSig2CleanupCallback = (
            error: Error | null,
            response?: signrpc.MuSig2CleanupResponse
        ) => void;
    }

    /** Properties of a KeyLocator. */
    interface IKeyLocator {
        /** KeyLocator key_family */
        key_family?: number | null;

        /** KeyLocator key_index */
        key_index?: number | null;
    }

    /** Represents a KeyLocator. */
    class KeyLocator implements IKeyLocator {
        /**
         * Constructs a new KeyLocator.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IKeyLocator);

        /** KeyLocator key_family. */
        public key_family: number;

        /** KeyLocator key_index. */
        public key_index: number;

        /**
         * Creates a new KeyLocator instance using the specified properties.
         * @param [properties] Properties to set
         * @returns KeyLocator instance
         */
        public static create(
            properties?: signrpc.IKeyLocator
        ): signrpc.KeyLocator;

        /**
         * Encodes the specified KeyLocator message. Does not implicitly {@link signrpc.KeyLocator.verify|verify} messages.
         * @param message KeyLocator message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IKeyLocator,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified KeyLocator message, length delimited. Does not implicitly {@link signrpc.KeyLocator.verify|verify} messages.
         * @param message KeyLocator message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IKeyLocator,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a KeyLocator message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns KeyLocator
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.KeyLocator;

        /**
         * Decodes a KeyLocator message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns KeyLocator
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.KeyLocator;

        /**
         * Verifies a KeyLocator message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a KeyLocator message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns KeyLocator
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.KeyLocator;

        /**
         * Creates a plain object from a KeyLocator message. Also converts values to other types if specified.
         * @param message KeyLocator
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.KeyLocator,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this KeyLocator to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for KeyLocator
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a KeyDescriptor. */
    interface IKeyDescriptor {
        /** KeyDescriptor raw_key_bytes */
        raw_key_bytes?: Uint8Array | null;

        /** KeyDescriptor key_loc */
        key_loc?: signrpc.IKeyLocator | null;
    }

    /** Represents a KeyDescriptor. */
    class KeyDescriptor implements IKeyDescriptor {
        /**
         * Constructs a new KeyDescriptor.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IKeyDescriptor);

        /** KeyDescriptor raw_key_bytes. */
        public raw_key_bytes: Uint8Array;

        /** KeyDescriptor key_loc. */
        public key_loc?: signrpc.IKeyLocator | null;

        /**
         * Creates a new KeyDescriptor instance using the specified properties.
         * @param [properties] Properties to set
         * @returns KeyDescriptor instance
         */
        public static create(
            properties?: signrpc.IKeyDescriptor
        ): signrpc.KeyDescriptor;

        /**
         * Encodes the specified KeyDescriptor message. Does not implicitly {@link signrpc.KeyDescriptor.verify|verify} messages.
         * @param message KeyDescriptor message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IKeyDescriptor,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified KeyDescriptor message, length delimited. Does not implicitly {@link signrpc.KeyDescriptor.verify|verify} messages.
         * @param message KeyDescriptor message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IKeyDescriptor,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a KeyDescriptor message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns KeyDescriptor
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.KeyDescriptor;

        /**
         * Decodes a KeyDescriptor message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns KeyDescriptor
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.KeyDescriptor;

        /**
         * Verifies a KeyDescriptor message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a KeyDescriptor message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns KeyDescriptor
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.KeyDescriptor;

        /**
         * Creates a plain object from a KeyDescriptor message. Also converts values to other types if specified.
         * @param message KeyDescriptor
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.KeyDescriptor,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this KeyDescriptor to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for KeyDescriptor
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a TxOut. */
    interface ITxOut {
        /** TxOut value */
        value?: Long | null;

        /** TxOut pk_script */
        pk_script?: Uint8Array | null;
    }

    /** Represents a TxOut. */
    class TxOut implements ITxOut {
        /**
         * Constructs a new TxOut.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.ITxOut);

        /** TxOut value. */
        public value: Long;

        /** TxOut pk_script. */
        public pk_script: Uint8Array;

        /**
         * Creates a new TxOut instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TxOut instance
         */
        public static create(properties?: signrpc.ITxOut): signrpc.TxOut;

        /**
         * Encodes the specified TxOut message. Does not implicitly {@link signrpc.TxOut.verify|verify} messages.
         * @param message TxOut message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.ITxOut,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified TxOut message, length delimited. Does not implicitly {@link signrpc.TxOut.verify|verify} messages.
         * @param message TxOut message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.ITxOut,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a TxOut message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TxOut
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.TxOut;

        /**
         * Decodes a TxOut message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TxOut
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.TxOut;

        /**
         * Verifies a TxOut message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a TxOut message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TxOut
         */
        public static fromObject(object: { [k: string]: any }): signrpc.TxOut;

        /**
         * Creates a plain object from a TxOut message. Also converts values to other types if specified.
         * @param message TxOut
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.TxOut,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this TxOut to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TxOut
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** SignMethod enum. */
    enum SignMethod {
        SIGN_METHOD_WITNESS_V0 = 0,
        SIGN_METHOD_TAPROOT_KEY_SPEND_BIP0086 = 1,
        SIGN_METHOD_TAPROOT_KEY_SPEND = 2,
        SIGN_METHOD_TAPROOT_SCRIPT_SPEND = 3
    }

    /** Properties of a SignDescriptor. */
    interface ISignDescriptor {
        /** SignDescriptor key_desc */
        key_desc?: signrpc.IKeyDescriptor | null;

        /** SignDescriptor single_tweak */
        single_tweak?: Uint8Array | null;

        /** SignDescriptor double_tweak */
        double_tweak?: Uint8Array | null;

        /** SignDescriptor tap_tweak */
        tap_tweak?: Uint8Array | null;

        /** SignDescriptor witness_script */
        witness_script?: Uint8Array | null;

        /** SignDescriptor output */
        output?: signrpc.ITxOut | null;

        /** SignDescriptor sighash */
        sighash?: number | null;

        /** SignDescriptor input_index */
        input_index?: number | null;

        /** SignDescriptor sign_method */
        sign_method?: signrpc.SignMethod | null;
    }

    /** Represents a SignDescriptor. */
    class SignDescriptor implements ISignDescriptor {
        /**
         * Constructs a new SignDescriptor.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.ISignDescriptor);

        /** SignDescriptor key_desc. */
        public key_desc?: signrpc.IKeyDescriptor | null;

        /** SignDescriptor single_tweak. */
        public single_tweak: Uint8Array;

        /** SignDescriptor double_tweak. */
        public double_tweak: Uint8Array;

        /** SignDescriptor tap_tweak. */
        public tap_tweak: Uint8Array;

        /** SignDescriptor witness_script. */
        public witness_script: Uint8Array;

        /** SignDescriptor output. */
        public output?: signrpc.ITxOut | null;

        /** SignDescriptor sighash. */
        public sighash: number;

        /** SignDescriptor input_index. */
        public input_index: number;

        /** SignDescriptor sign_method. */
        public sign_method: signrpc.SignMethod;

        /**
         * Creates a new SignDescriptor instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SignDescriptor instance
         */
        public static create(
            properties?: signrpc.ISignDescriptor
        ): signrpc.SignDescriptor;

        /**
         * Encodes the specified SignDescriptor message. Does not implicitly {@link signrpc.SignDescriptor.verify|verify} messages.
         * @param message SignDescriptor message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.ISignDescriptor,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SignDescriptor message, length delimited. Does not implicitly {@link signrpc.SignDescriptor.verify|verify} messages.
         * @param message SignDescriptor message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.ISignDescriptor,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SignDescriptor message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SignDescriptor
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.SignDescriptor;

        /**
         * Decodes a SignDescriptor message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SignDescriptor
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.SignDescriptor;

        /**
         * Verifies a SignDescriptor message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SignDescriptor message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SignDescriptor
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.SignDescriptor;

        /**
         * Creates a plain object from a SignDescriptor message. Also converts values to other types if specified.
         * @param message SignDescriptor
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.SignDescriptor,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SignDescriptor to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SignDescriptor
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SignReq. */
    interface ISignReq {
        /** SignReq raw_tx_bytes */
        raw_tx_bytes?: Uint8Array | null;

        /** SignReq sign_descs */
        sign_descs?: signrpc.ISignDescriptor[] | null;

        /** SignReq prev_outputs */
        prev_outputs?: signrpc.ITxOut[] | null;
    }

    /** Represents a SignReq. */
    class SignReq implements ISignReq {
        /**
         * Constructs a new SignReq.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.ISignReq);

        /** SignReq raw_tx_bytes. */
        public raw_tx_bytes: Uint8Array;

        /** SignReq sign_descs. */
        public sign_descs: signrpc.ISignDescriptor[];

        /** SignReq prev_outputs. */
        public prev_outputs: signrpc.ITxOut[];

        /**
         * Creates a new SignReq instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SignReq instance
         */
        public static create(properties?: signrpc.ISignReq): signrpc.SignReq;

        /**
         * Encodes the specified SignReq message. Does not implicitly {@link signrpc.SignReq.verify|verify} messages.
         * @param message SignReq message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.ISignReq,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SignReq message, length delimited. Does not implicitly {@link signrpc.SignReq.verify|verify} messages.
         * @param message SignReq message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.ISignReq,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SignReq message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SignReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.SignReq;

        /**
         * Decodes a SignReq message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SignReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.SignReq;

        /**
         * Verifies a SignReq message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SignReq message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SignReq
         */
        public static fromObject(object: { [k: string]: any }): signrpc.SignReq;

        /**
         * Creates a plain object from a SignReq message. Also converts values to other types if specified.
         * @param message SignReq
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.SignReq,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SignReq to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SignReq
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SignResp. */
    interface ISignResp {
        /** SignResp raw_sigs */
        raw_sigs?: Uint8Array[] | null;
    }

    /** Represents a SignResp. */
    class SignResp implements ISignResp {
        /**
         * Constructs a new SignResp.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.ISignResp);

        /** SignResp raw_sigs. */
        public raw_sigs: Uint8Array[];

        /**
         * Creates a new SignResp instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SignResp instance
         */
        public static create(properties?: signrpc.ISignResp): signrpc.SignResp;

        /**
         * Encodes the specified SignResp message. Does not implicitly {@link signrpc.SignResp.verify|verify} messages.
         * @param message SignResp message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.ISignResp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SignResp message, length delimited. Does not implicitly {@link signrpc.SignResp.verify|verify} messages.
         * @param message SignResp message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.ISignResp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SignResp message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SignResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.SignResp;

        /**
         * Decodes a SignResp message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SignResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.SignResp;

        /**
         * Verifies a SignResp message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SignResp message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SignResp
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.SignResp;

        /**
         * Creates a plain object from a SignResp message. Also converts values to other types if specified.
         * @param message SignResp
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.SignResp,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SignResp to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SignResp
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an InputScript. */
    interface IInputScript {
        /** InputScript witness */
        witness?: Uint8Array[] | null;

        /** InputScript sig_script */
        sig_script?: Uint8Array | null;
    }

    /** Represents an InputScript. */
    class InputScript implements IInputScript {
        /**
         * Constructs a new InputScript.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IInputScript);

        /** InputScript witness. */
        public witness: Uint8Array[];

        /** InputScript sig_script. */
        public sig_script: Uint8Array;

        /**
         * Creates a new InputScript instance using the specified properties.
         * @param [properties] Properties to set
         * @returns InputScript instance
         */
        public static create(
            properties?: signrpc.IInputScript
        ): signrpc.InputScript;

        /**
         * Encodes the specified InputScript message. Does not implicitly {@link signrpc.InputScript.verify|verify} messages.
         * @param message InputScript message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IInputScript,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified InputScript message, length delimited. Does not implicitly {@link signrpc.InputScript.verify|verify} messages.
         * @param message InputScript message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IInputScript,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an InputScript message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns InputScript
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.InputScript;

        /**
         * Decodes an InputScript message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns InputScript
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.InputScript;

        /**
         * Verifies an InputScript message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an InputScript message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns InputScript
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.InputScript;

        /**
         * Creates a plain object from an InputScript message. Also converts values to other types if specified.
         * @param message InputScript
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.InputScript,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this InputScript to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for InputScript
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an InputScriptResp. */
    interface IInputScriptResp {
        /** InputScriptResp input_scripts */
        input_scripts?: signrpc.IInputScript[] | null;
    }

    /** Represents an InputScriptResp. */
    class InputScriptResp implements IInputScriptResp {
        /**
         * Constructs a new InputScriptResp.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IInputScriptResp);

        /** InputScriptResp input_scripts. */
        public input_scripts: signrpc.IInputScript[];

        /**
         * Creates a new InputScriptResp instance using the specified properties.
         * @param [properties] Properties to set
         * @returns InputScriptResp instance
         */
        public static create(
            properties?: signrpc.IInputScriptResp
        ): signrpc.InputScriptResp;

        /**
         * Encodes the specified InputScriptResp message. Does not implicitly {@link signrpc.InputScriptResp.verify|verify} messages.
         * @param message InputScriptResp message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IInputScriptResp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified InputScriptResp message, length delimited. Does not implicitly {@link signrpc.InputScriptResp.verify|verify} messages.
         * @param message InputScriptResp message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IInputScriptResp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an InputScriptResp message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns InputScriptResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.InputScriptResp;

        /**
         * Decodes an InputScriptResp message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns InputScriptResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.InputScriptResp;

        /**
         * Verifies an InputScriptResp message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an InputScriptResp message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns InputScriptResp
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.InputScriptResp;

        /**
         * Creates a plain object from an InputScriptResp message. Also converts values to other types if specified.
         * @param message InputScriptResp
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.InputScriptResp,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this InputScriptResp to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for InputScriptResp
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SignMessageReq. */
    interface ISignMessageReq {
        /** SignMessageReq msg */
        msg?: Uint8Array | null;

        /** SignMessageReq key_loc */
        key_loc?: signrpc.IKeyLocator | null;

        /** SignMessageReq double_hash */
        double_hash?: boolean | null;

        /** SignMessageReq compact_sig */
        compact_sig?: boolean | null;

        /** SignMessageReq schnorr_sig */
        schnorr_sig?: boolean | null;

        /** SignMessageReq schnorr_sig_tap_tweak */
        schnorr_sig_tap_tweak?: Uint8Array | null;

        /** SignMessageReq tag */
        tag?: Uint8Array | null;
    }

    /** Represents a SignMessageReq. */
    class SignMessageReq implements ISignMessageReq {
        /**
         * Constructs a new SignMessageReq.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.ISignMessageReq);

        /** SignMessageReq msg. */
        public msg: Uint8Array;

        /** SignMessageReq key_loc. */
        public key_loc?: signrpc.IKeyLocator | null;

        /** SignMessageReq double_hash. */
        public double_hash: boolean;

        /** SignMessageReq compact_sig. */
        public compact_sig: boolean;

        /** SignMessageReq schnorr_sig. */
        public schnorr_sig: boolean;

        /** SignMessageReq schnorr_sig_tap_tweak. */
        public schnorr_sig_tap_tweak: Uint8Array;

        /** SignMessageReq tag. */
        public tag: Uint8Array;

        /**
         * Creates a new SignMessageReq instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SignMessageReq instance
         */
        public static create(
            properties?: signrpc.ISignMessageReq
        ): signrpc.SignMessageReq;

        /**
         * Encodes the specified SignMessageReq message. Does not implicitly {@link signrpc.SignMessageReq.verify|verify} messages.
         * @param message SignMessageReq message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.ISignMessageReq,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SignMessageReq message, length delimited. Does not implicitly {@link signrpc.SignMessageReq.verify|verify} messages.
         * @param message SignMessageReq message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.ISignMessageReq,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SignMessageReq message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SignMessageReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.SignMessageReq;

        /**
         * Decodes a SignMessageReq message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SignMessageReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.SignMessageReq;

        /**
         * Verifies a SignMessageReq message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SignMessageReq message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SignMessageReq
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.SignMessageReq;

        /**
         * Creates a plain object from a SignMessageReq message. Also converts values to other types if specified.
         * @param message SignMessageReq
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.SignMessageReq,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SignMessageReq to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SignMessageReq
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SignMessageResp. */
    interface ISignMessageResp {
        /** SignMessageResp signature */
        signature?: Uint8Array | null;
    }

    /** Represents a SignMessageResp. */
    class SignMessageResp implements ISignMessageResp {
        /**
         * Constructs a new SignMessageResp.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.ISignMessageResp);

        /** SignMessageResp signature. */
        public signature: Uint8Array;

        /**
         * Creates a new SignMessageResp instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SignMessageResp instance
         */
        public static create(
            properties?: signrpc.ISignMessageResp
        ): signrpc.SignMessageResp;

        /**
         * Encodes the specified SignMessageResp message. Does not implicitly {@link signrpc.SignMessageResp.verify|verify} messages.
         * @param message SignMessageResp message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.ISignMessageResp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SignMessageResp message, length delimited. Does not implicitly {@link signrpc.SignMessageResp.verify|verify} messages.
         * @param message SignMessageResp message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.ISignMessageResp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SignMessageResp message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SignMessageResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.SignMessageResp;

        /**
         * Decodes a SignMessageResp message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SignMessageResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.SignMessageResp;

        /**
         * Verifies a SignMessageResp message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SignMessageResp message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SignMessageResp
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.SignMessageResp;

        /**
         * Creates a plain object from a SignMessageResp message. Also converts values to other types if specified.
         * @param message SignMessageResp
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.SignMessageResp,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SignMessageResp to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SignMessageResp
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a VerifyMessageReq. */
    interface IVerifyMessageReq {
        /** VerifyMessageReq msg */
        msg?: Uint8Array | null;

        /** VerifyMessageReq signature */
        signature?: Uint8Array | null;

        /** VerifyMessageReq pubkey */
        pubkey?: Uint8Array | null;

        /** VerifyMessageReq is_schnorr_sig */
        is_schnorr_sig?: boolean | null;

        /** VerifyMessageReq tag */
        tag?: Uint8Array | null;
    }

    /** Represents a VerifyMessageReq. */
    class VerifyMessageReq implements IVerifyMessageReq {
        /**
         * Constructs a new VerifyMessageReq.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IVerifyMessageReq);

        /** VerifyMessageReq msg. */
        public msg: Uint8Array;

        /** VerifyMessageReq signature. */
        public signature: Uint8Array;

        /** VerifyMessageReq pubkey. */
        public pubkey: Uint8Array;

        /** VerifyMessageReq is_schnorr_sig. */
        public is_schnorr_sig: boolean;

        /** VerifyMessageReq tag. */
        public tag: Uint8Array;

        /**
         * Creates a new VerifyMessageReq instance using the specified properties.
         * @param [properties] Properties to set
         * @returns VerifyMessageReq instance
         */
        public static create(
            properties?: signrpc.IVerifyMessageReq
        ): signrpc.VerifyMessageReq;

        /**
         * Encodes the specified VerifyMessageReq message. Does not implicitly {@link signrpc.VerifyMessageReq.verify|verify} messages.
         * @param message VerifyMessageReq message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IVerifyMessageReq,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified VerifyMessageReq message, length delimited. Does not implicitly {@link signrpc.VerifyMessageReq.verify|verify} messages.
         * @param message VerifyMessageReq message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IVerifyMessageReq,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a VerifyMessageReq message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns VerifyMessageReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.VerifyMessageReq;

        /**
         * Decodes a VerifyMessageReq message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns VerifyMessageReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.VerifyMessageReq;

        /**
         * Verifies a VerifyMessageReq message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a VerifyMessageReq message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns VerifyMessageReq
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.VerifyMessageReq;

        /**
         * Creates a plain object from a VerifyMessageReq message. Also converts values to other types if specified.
         * @param message VerifyMessageReq
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.VerifyMessageReq,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this VerifyMessageReq to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for VerifyMessageReq
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a VerifyMessageResp. */
    interface IVerifyMessageResp {
        /** VerifyMessageResp valid */
        valid?: boolean | null;
    }

    /** Represents a VerifyMessageResp. */
    class VerifyMessageResp implements IVerifyMessageResp {
        /**
         * Constructs a new VerifyMessageResp.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IVerifyMessageResp);

        /** VerifyMessageResp valid. */
        public valid: boolean;

        /**
         * Creates a new VerifyMessageResp instance using the specified properties.
         * @param [properties] Properties to set
         * @returns VerifyMessageResp instance
         */
        public static create(
            properties?: signrpc.IVerifyMessageResp
        ): signrpc.VerifyMessageResp;

        /**
         * Encodes the specified VerifyMessageResp message. Does not implicitly {@link signrpc.VerifyMessageResp.verify|verify} messages.
         * @param message VerifyMessageResp message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IVerifyMessageResp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified VerifyMessageResp message, length delimited. Does not implicitly {@link signrpc.VerifyMessageResp.verify|verify} messages.
         * @param message VerifyMessageResp message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IVerifyMessageResp,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a VerifyMessageResp message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns VerifyMessageResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.VerifyMessageResp;

        /**
         * Decodes a VerifyMessageResp message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns VerifyMessageResp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.VerifyMessageResp;

        /**
         * Verifies a VerifyMessageResp message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a VerifyMessageResp message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns VerifyMessageResp
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.VerifyMessageResp;

        /**
         * Creates a plain object from a VerifyMessageResp message. Also converts values to other types if specified.
         * @param message VerifyMessageResp
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.VerifyMessageResp,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this VerifyMessageResp to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for VerifyMessageResp
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SharedKeyRequest. */
    interface ISharedKeyRequest {
        /** SharedKeyRequest ephemeral_pubkey */
        ephemeral_pubkey?: Uint8Array | null;

        /** SharedKeyRequest key_loc */
        key_loc?: signrpc.IKeyLocator | null;

        /** SharedKeyRequest key_desc */
        key_desc?: signrpc.IKeyDescriptor | null;
    }

    /** Represents a SharedKeyRequest. */
    class SharedKeyRequest implements ISharedKeyRequest {
        /**
         * Constructs a new SharedKeyRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.ISharedKeyRequest);

        /** SharedKeyRequest ephemeral_pubkey. */
        public ephemeral_pubkey: Uint8Array;

        /** SharedKeyRequest key_loc. */
        public key_loc?: signrpc.IKeyLocator | null;

        /** SharedKeyRequest key_desc. */
        public key_desc?: signrpc.IKeyDescriptor | null;

        /**
         * Creates a new SharedKeyRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SharedKeyRequest instance
         */
        public static create(
            properties?: signrpc.ISharedKeyRequest
        ): signrpc.SharedKeyRequest;

        /**
         * Encodes the specified SharedKeyRequest message. Does not implicitly {@link signrpc.SharedKeyRequest.verify|verify} messages.
         * @param message SharedKeyRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.ISharedKeyRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SharedKeyRequest message, length delimited. Does not implicitly {@link signrpc.SharedKeyRequest.verify|verify} messages.
         * @param message SharedKeyRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.ISharedKeyRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SharedKeyRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SharedKeyRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.SharedKeyRequest;

        /**
         * Decodes a SharedKeyRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SharedKeyRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.SharedKeyRequest;

        /**
         * Verifies a SharedKeyRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SharedKeyRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SharedKeyRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.SharedKeyRequest;

        /**
         * Creates a plain object from a SharedKeyRequest message. Also converts values to other types if specified.
         * @param message SharedKeyRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.SharedKeyRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SharedKeyRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SharedKeyRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SharedKeyResponse. */
    interface ISharedKeyResponse {
        /** SharedKeyResponse shared_key */
        shared_key?: Uint8Array | null;
    }

    /** Represents a SharedKeyResponse. */
    class SharedKeyResponse implements ISharedKeyResponse {
        /**
         * Constructs a new SharedKeyResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.ISharedKeyResponse);

        /** SharedKeyResponse shared_key. */
        public shared_key: Uint8Array;

        /**
         * Creates a new SharedKeyResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SharedKeyResponse instance
         */
        public static create(
            properties?: signrpc.ISharedKeyResponse
        ): signrpc.SharedKeyResponse;

        /**
         * Encodes the specified SharedKeyResponse message. Does not implicitly {@link signrpc.SharedKeyResponse.verify|verify} messages.
         * @param message SharedKeyResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.ISharedKeyResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SharedKeyResponse message, length delimited. Does not implicitly {@link signrpc.SharedKeyResponse.verify|verify} messages.
         * @param message SharedKeyResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.ISharedKeyResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SharedKeyResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SharedKeyResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.SharedKeyResponse;

        /**
         * Decodes a SharedKeyResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SharedKeyResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.SharedKeyResponse;

        /**
         * Verifies a SharedKeyResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SharedKeyResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SharedKeyResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.SharedKeyResponse;

        /**
         * Creates a plain object from a SharedKeyResponse message. Also converts values to other types if specified.
         * @param message SharedKeyResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.SharedKeyResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SharedKeyResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SharedKeyResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a TweakDesc. */
    interface ITweakDesc {
        /** TweakDesc tweak */
        tweak?: Uint8Array | null;

        /** TweakDesc is_x_only */
        is_x_only?: boolean | null;
    }

    /** Represents a TweakDesc. */
    class TweakDesc implements ITweakDesc {
        /**
         * Constructs a new TweakDesc.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.ITweakDesc);

        /** TweakDesc tweak. */
        public tweak: Uint8Array;

        /** TweakDesc is_x_only. */
        public is_x_only: boolean;

        /**
         * Creates a new TweakDesc instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TweakDesc instance
         */
        public static create(
            properties?: signrpc.ITweakDesc
        ): signrpc.TweakDesc;

        /**
         * Encodes the specified TweakDesc message. Does not implicitly {@link signrpc.TweakDesc.verify|verify} messages.
         * @param message TweakDesc message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.ITweakDesc,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified TweakDesc message, length delimited. Does not implicitly {@link signrpc.TweakDesc.verify|verify} messages.
         * @param message TweakDesc message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.ITweakDesc,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a TweakDesc message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TweakDesc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.TweakDesc;

        /**
         * Decodes a TweakDesc message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TweakDesc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.TweakDesc;

        /**
         * Verifies a TweakDesc message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a TweakDesc message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TweakDesc
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.TweakDesc;

        /**
         * Creates a plain object from a TweakDesc message. Also converts values to other types if specified.
         * @param message TweakDesc
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.TweakDesc,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this TweakDesc to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TweakDesc
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a TaprootTweakDesc. */
    interface ITaprootTweakDesc {
        /** TaprootTweakDesc script_root */
        script_root?: Uint8Array | null;

        /** TaprootTweakDesc key_spend_only */
        key_spend_only?: boolean | null;
    }

    /** Represents a TaprootTweakDesc. */
    class TaprootTweakDesc implements ITaprootTweakDesc {
        /**
         * Constructs a new TaprootTweakDesc.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.ITaprootTweakDesc);

        /** TaprootTweakDesc script_root. */
        public script_root: Uint8Array;

        /** TaprootTweakDesc key_spend_only. */
        public key_spend_only: boolean;

        /**
         * Creates a new TaprootTweakDesc instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TaprootTweakDesc instance
         */
        public static create(
            properties?: signrpc.ITaprootTweakDesc
        ): signrpc.TaprootTweakDesc;

        /**
         * Encodes the specified TaprootTweakDesc message. Does not implicitly {@link signrpc.TaprootTweakDesc.verify|verify} messages.
         * @param message TaprootTweakDesc message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.ITaprootTweakDesc,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified TaprootTweakDesc message, length delimited. Does not implicitly {@link signrpc.TaprootTweakDesc.verify|verify} messages.
         * @param message TaprootTweakDesc message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.ITaprootTweakDesc,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a TaprootTweakDesc message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TaprootTweakDesc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.TaprootTweakDesc;

        /**
         * Decodes a TaprootTweakDesc message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TaprootTweakDesc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.TaprootTweakDesc;

        /**
         * Verifies a TaprootTweakDesc message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a TaprootTweakDesc message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TaprootTweakDesc
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.TaprootTweakDesc;

        /**
         * Creates a plain object from a TaprootTweakDesc message. Also converts values to other types if specified.
         * @param message TaprootTweakDesc
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.TaprootTweakDesc,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this TaprootTweakDesc to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TaprootTweakDesc
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** MuSig2Version enum. */
    enum MuSig2Version {
        MUSIG2_VERSION_UNDEFINED = 0,
        MUSIG2_VERSION_V040 = 1,
        MUSIG2_VERSION_V100RC2 = 2
    }

    /** Properties of a MuSig2CombineKeysRequest. */
    interface IMuSig2CombineKeysRequest {
        /** MuSig2CombineKeysRequest all_signer_pubkeys */
        all_signer_pubkeys?: Uint8Array[] | null;

        /** MuSig2CombineKeysRequest tweaks */
        tweaks?: signrpc.ITweakDesc[] | null;

        /** MuSig2CombineKeysRequest taproot_tweak */
        taproot_tweak?: signrpc.ITaprootTweakDesc | null;

        /** MuSig2CombineKeysRequest version */
        version?: signrpc.MuSig2Version | null;
    }

    /** Represents a MuSig2CombineKeysRequest. */
    class MuSig2CombineKeysRequest implements IMuSig2CombineKeysRequest {
        /**
         * Constructs a new MuSig2CombineKeysRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IMuSig2CombineKeysRequest);

        /** MuSig2CombineKeysRequest all_signer_pubkeys. */
        public all_signer_pubkeys: Uint8Array[];

        /** MuSig2CombineKeysRequest tweaks. */
        public tweaks: signrpc.ITweakDesc[];

        /** MuSig2CombineKeysRequest taproot_tweak. */
        public taproot_tweak?: signrpc.ITaprootTweakDesc | null;

        /** MuSig2CombineKeysRequest version. */
        public version: signrpc.MuSig2Version;

        /**
         * Creates a new MuSig2CombineKeysRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MuSig2CombineKeysRequest instance
         */
        public static create(
            properties?: signrpc.IMuSig2CombineKeysRequest
        ): signrpc.MuSig2CombineKeysRequest;

        /**
         * Encodes the specified MuSig2CombineKeysRequest message. Does not implicitly {@link signrpc.MuSig2CombineKeysRequest.verify|verify} messages.
         * @param message MuSig2CombineKeysRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IMuSig2CombineKeysRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MuSig2CombineKeysRequest message, length delimited. Does not implicitly {@link signrpc.MuSig2CombineKeysRequest.verify|verify} messages.
         * @param message MuSig2CombineKeysRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IMuSig2CombineKeysRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MuSig2CombineKeysRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MuSig2CombineKeysRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.MuSig2CombineKeysRequest;

        /**
         * Decodes a MuSig2CombineKeysRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MuSig2CombineKeysRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.MuSig2CombineKeysRequest;

        /**
         * Verifies a MuSig2CombineKeysRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MuSig2CombineKeysRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MuSig2CombineKeysRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.MuSig2CombineKeysRequest;

        /**
         * Creates a plain object from a MuSig2CombineKeysRequest message. Also converts values to other types if specified.
         * @param message MuSig2CombineKeysRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.MuSig2CombineKeysRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MuSig2CombineKeysRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MuSig2CombineKeysRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MuSig2CombineKeysResponse. */
    interface IMuSig2CombineKeysResponse {
        /** MuSig2CombineKeysResponse combined_key */
        combined_key?: Uint8Array | null;

        /** MuSig2CombineKeysResponse taproot_internal_key */
        taproot_internal_key?: Uint8Array | null;

        /** MuSig2CombineKeysResponse version */
        version?: signrpc.MuSig2Version | null;
    }

    /** Represents a MuSig2CombineKeysResponse. */
    class MuSig2CombineKeysResponse implements IMuSig2CombineKeysResponse {
        /**
         * Constructs a new MuSig2CombineKeysResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IMuSig2CombineKeysResponse);

        /** MuSig2CombineKeysResponse combined_key. */
        public combined_key: Uint8Array;

        /** MuSig2CombineKeysResponse taproot_internal_key. */
        public taproot_internal_key: Uint8Array;

        /** MuSig2CombineKeysResponse version. */
        public version: signrpc.MuSig2Version;

        /**
         * Creates a new MuSig2CombineKeysResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MuSig2CombineKeysResponse instance
         */
        public static create(
            properties?: signrpc.IMuSig2CombineKeysResponse
        ): signrpc.MuSig2CombineKeysResponse;

        /**
         * Encodes the specified MuSig2CombineKeysResponse message. Does not implicitly {@link signrpc.MuSig2CombineKeysResponse.verify|verify} messages.
         * @param message MuSig2CombineKeysResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IMuSig2CombineKeysResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MuSig2CombineKeysResponse message, length delimited. Does not implicitly {@link signrpc.MuSig2CombineKeysResponse.verify|verify} messages.
         * @param message MuSig2CombineKeysResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IMuSig2CombineKeysResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MuSig2CombineKeysResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MuSig2CombineKeysResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.MuSig2CombineKeysResponse;

        /**
         * Decodes a MuSig2CombineKeysResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MuSig2CombineKeysResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.MuSig2CombineKeysResponse;

        /**
         * Verifies a MuSig2CombineKeysResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MuSig2CombineKeysResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MuSig2CombineKeysResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.MuSig2CombineKeysResponse;

        /**
         * Creates a plain object from a MuSig2CombineKeysResponse message. Also converts values to other types if specified.
         * @param message MuSig2CombineKeysResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.MuSig2CombineKeysResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MuSig2CombineKeysResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MuSig2CombineKeysResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MuSig2SessionRequest. */
    interface IMuSig2SessionRequest {
        /** MuSig2SessionRequest key_loc */
        key_loc?: signrpc.IKeyLocator | null;

        /** MuSig2SessionRequest all_signer_pubkeys */
        all_signer_pubkeys?: Uint8Array[] | null;

        /** MuSig2SessionRequest other_signer_public_nonces */
        other_signer_public_nonces?: Uint8Array[] | null;

        /** MuSig2SessionRequest tweaks */
        tweaks?: signrpc.ITweakDesc[] | null;

        /** MuSig2SessionRequest taproot_tweak */
        taproot_tweak?: signrpc.ITaprootTweakDesc | null;

        /** MuSig2SessionRequest version */
        version?: signrpc.MuSig2Version | null;

        /** MuSig2SessionRequest pregenerated_local_nonce */
        pregenerated_local_nonce?: Uint8Array | null;
    }

    /** Represents a MuSig2SessionRequest. */
    class MuSig2SessionRequest implements IMuSig2SessionRequest {
        /**
         * Constructs a new MuSig2SessionRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IMuSig2SessionRequest);

        /** MuSig2SessionRequest key_loc. */
        public key_loc?: signrpc.IKeyLocator | null;

        /** MuSig2SessionRequest all_signer_pubkeys. */
        public all_signer_pubkeys: Uint8Array[];

        /** MuSig2SessionRequest other_signer_public_nonces. */
        public other_signer_public_nonces: Uint8Array[];

        /** MuSig2SessionRequest tweaks. */
        public tweaks: signrpc.ITweakDesc[];

        /** MuSig2SessionRequest taproot_tweak. */
        public taproot_tweak?: signrpc.ITaprootTweakDesc | null;

        /** MuSig2SessionRequest version. */
        public version: signrpc.MuSig2Version;

        /** MuSig2SessionRequest pregenerated_local_nonce. */
        public pregenerated_local_nonce: Uint8Array;

        /**
         * Creates a new MuSig2SessionRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MuSig2SessionRequest instance
         */
        public static create(
            properties?: signrpc.IMuSig2SessionRequest
        ): signrpc.MuSig2SessionRequest;

        /**
         * Encodes the specified MuSig2SessionRequest message. Does not implicitly {@link signrpc.MuSig2SessionRequest.verify|verify} messages.
         * @param message MuSig2SessionRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IMuSig2SessionRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MuSig2SessionRequest message, length delimited. Does not implicitly {@link signrpc.MuSig2SessionRequest.verify|verify} messages.
         * @param message MuSig2SessionRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IMuSig2SessionRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MuSig2SessionRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MuSig2SessionRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.MuSig2SessionRequest;

        /**
         * Decodes a MuSig2SessionRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MuSig2SessionRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.MuSig2SessionRequest;

        /**
         * Verifies a MuSig2SessionRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MuSig2SessionRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MuSig2SessionRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.MuSig2SessionRequest;

        /**
         * Creates a plain object from a MuSig2SessionRequest message. Also converts values to other types if specified.
         * @param message MuSig2SessionRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.MuSig2SessionRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MuSig2SessionRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MuSig2SessionRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MuSig2SessionResponse. */
    interface IMuSig2SessionResponse {
        /** MuSig2SessionResponse session_id */
        session_id?: Uint8Array | null;

        /** MuSig2SessionResponse combined_key */
        combined_key?: Uint8Array | null;

        /** MuSig2SessionResponse taproot_internal_key */
        taproot_internal_key?: Uint8Array | null;

        /** MuSig2SessionResponse local_public_nonces */
        local_public_nonces?: Uint8Array | null;

        /** MuSig2SessionResponse have_all_nonces */
        have_all_nonces?: boolean | null;

        /** MuSig2SessionResponse version */
        version?: signrpc.MuSig2Version | null;
    }

    /** Represents a MuSig2SessionResponse. */
    class MuSig2SessionResponse implements IMuSig2SessionResponse {
        /**
         * Constructs a new MuSig2SessionResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IMuSig2SessionResponse);

        /** MuSig2SessionResponse session_id. */
        public session_id: Uint8Array;

        /** MuSig2SessionResponse combined_key. */
        public combined_key: Uint8Array;

        /** MuSig2SessionResponse taproot_internal_key. */
        public taproot_internal_key: Uint8Array;

        /** MuSig2SessionResponse local_public_nonces. */
        public local_public_nonces: Uint8Array;

        /** MuSig2SessionResponse have_all_nonces. */
        public have_all_nonces: boolean;

        /** MuSig2SessionResponse version. */
        public version: signrpc.MuSig2Version;

        /**
         * Creates a new MuSig2SessionResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MuSig2SessionResponse instance
         */
        public static create(
            properties?: signrpc.IMuSig2SessionResponse
        ): signrpc.MuSig2SessionResponse;

        /**
         * Encodes the specified MuSig2SessionResponse message. Does not implicitly {@link signrpc.MuSig2SessionResponse.verify|verify} messages.
         * @param message MuSig2SessionResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IMuSig2SessionResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MuSig2SessionResponse message, length delimited. Does not implicitly {@link signrpc.MuSig2SessionResponse.verify|verify} messages.
         * @param message MuSig2SessionResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IMuSig2SessionResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MuSig2SessionResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MuSig2SessionResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.MuSig2SessionResponse;

        /**
         * Decodes a MuSig2SessionResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MuSig2SessionResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.MuSig2SessionResponse;

        /**
         * Verifies a MuSig2SessionResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MuSig2SessionResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MuSig2SessionResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.MuSig2SessionResponse;

        /**
         * Creates a plain object from a MuSig2SessionResponse message. Also converts values to other types if specified.
         * @param message MuSig2SessionResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.MuSig2SessionResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MuSig2SessionResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MuSig2SessionResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MuSig2RegisterNoncesRequest. */
    interface IMuSig2RegisterNoncesRequest {
        /** MuSig2RegisterNoncesRequest session_id */
        session_id?: Uint8Array | null;

        /** MuSig2RegisterNoncesRequest other_signer_public_nonces */
        other_signer_public_nonces?: Uint8Array[] | null;
    }

    /** Represents a MuSig2RegisterNoncesRequest. */
    class MuSig2RegisterNoncesRequest implements IMuSig2RegisterNoncesRequest {
        /**
         * Constructs a new MuSig2RegisterNoncesRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IMuSig2RegisterNoncesRequest);

        /** MuSig2RegisterNoncesRequest session_id. */
        public session_id: Uint8Array;

        /** MuSig2RegisterNoncesRequest other_signer_public_nonces. */
        public other_signer_public_nonces: Uint8Array[];

        /**
         * Creates a new MuSig2RegisterNoncesRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MuSig2RegisterNoncesRequest instance
         */
        public static create(
            properties?: signrpc.IMuSig2RegisterNoncesRequest
        ): signrpc.MuSig2RegisterNoncesRequest;

        /**
         * Encodes the specified MuSig2RegisterNoncesRequest message. Does not implicitly {@link signrpc.MuSig2RegisterNoncesRequest.verify|verify} messages.
         * @param message MuSig2RegisterNoncesRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IMuSig2RegisterNoncesRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MuSig2RegisterNoncesRequest message, length delimited. Does not implicitly {@link signrpc.MuSig2RegisterNoncesRequest.verify|verify} messages.
         * @param message MuSig2RegisterNoncesRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IMuSig2RegisterNoncesRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MuSig2RegisterNoncesRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MuSig2RegisterNoncesRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.MuSig2RegisterNoncesRequest;

        /**
         * Decodes a MuSig2RegisterNoncesRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MuSig2RegisterNoncesRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.MuSig2RegisterNoncesRequest;

        /**
         * Verifies a MuSig2RegisterNoncesRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MuSig2RegisterNoncesRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MuSig2RegisterNoncesRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.MuSig2RegisterNoncesRequest;

        /**
         * Creates a plain object from a MuSig2RegisterNoncesRequest message. Also converts values to other types if specified.
         * @param message MuSig2RegisterNoncesRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.MuSig2RegisterNoncesRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MuSig2RegisterNoncesRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MuSig2RegisterNoncesRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MuSig2RegisterNoncesResponse. */
    interface IMuSig2RegisterNoncesResponse {
        /** MuSig2RegisterNoncesResponse have_all_nonces */
        have_all_nonces?: boolean | null;
    }

    /** Represents a MuSig2RegisterNoncesResponse. */
    class MuSig2RegisterNoncesResponse
        implements IMuSig2RegisterNoncesResponse
    {
        /**
         * Constructs a new MuSig2RegisterNoncesResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IMuSig2RegisterNoncesResponse);

        /** MuSig2RegisterNoncesResponse have_all_nonces. */
        public have_all_nonces: boolean;

        /**
         * Creates a new MuSig2RegisterNoncesResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MuSig2RegisterNoncesResponse instance
         */
        public static create(
            properties?: signrpc.IMuSig2RegisterNoncesResponse
        ): signrpc.MuSig2RegisterNoncesResponse;

        /**
         * Encodes the specified MuSig2RegisterNoncesResponse message. Does not implicitly {@link signrpc.MuSig2RegisterNoncesResponse.verify|verify} messages.
         * @param message MuSig2RegisterNoncesResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IMuSig2RegisterNoncesResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MuSig2RegisterNoncesResponse message, length delimited. Does not implicitly {@link signrpc.MuSig2RegisterNoncesResponse.verify|verify} messages.
         * @param message MuSig2RegisterNoncesResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IMuSig2RegisterNoncesResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MuSig2RegisterNoncesResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MuSig2RegisterNoncesResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.MuSig2RegisterNoncesResponse;

        /**
         * Decodes a MuSig2RegisterNoncesResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MuSig2RegisterNoncesResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.MuSig2RegisterNoncesResponse;

        /**
         * Verifies a MuSig2RegisterNoncesResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MuSig2RegisterNoncesResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MuSig2RegisterNoncesResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.MuSig2RegisterNoncesResponse;

        /**
         * Creates a plain object from a MuSig2RegisterNoncesResponse message. Also converts values to other types if specified.
         * @param message MuSig2RegisterNoncesResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.MuSig2RegisterNoncesResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MuSig2RegisterNoncesResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MuSig2RegisterNoncesResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MuSig2SignRequest. */
    interface IMuSig2SignRequest {
        /** MuSig2SignRequest session_id */
        session_id?: Uint8Array | null;

        /** MuSig2SignRequest message_digest */
        message_digest?: Uint8Array | null;

        /** MuSig2SignRequest cleanup */
        cleanup?: boolean | null;
    }

    /** Represents a MuSig2SignRequest. */
    class MuSig2SignRequest implements IMuSig2SignRequest {
        /**
         * Constructs a new MuSig2SignRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IMuSig2SignRequest);

        /** MuSig2SignRequest session_id. */
        public session_id: Uint8Array;

        /** MuSig2SignRequest message_digest. */
        public message_digest: Uint8Array;

        /** MuSig2SignRequest cleanup. */
        public cleanup: boolean;

        /**
         * Creates a new MuSig2SignRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MuSig2SignRequest instance
         */
        public static create(
            properties?: signrpc.IMuSig2SignRequest
        ): signrpc.MuSig2SignRequest;

        /**
         * Encodes the specified MuSig2SignRequest message. Does not implicitly {@link signrpc.MuSig2SignRequest.verify|verify} messages.
         * @param message MuSig2SignRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IMuSig2SignRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MuSig2SignRequest message, length delimited. Does not implicitly {@link signrpc.MuSig2SignRequest.verify|verify} messages.
         * @param message MuSig2SignRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IMuSig2SignRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MuSig2SignRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MuSig2SignRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.MuSig2SignRequest;

        /**
         * Decodes a MuSig2SignRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MuSig2SignRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.MuSig2SignRequest;

        /**
         * Verifies a MuSig2SignRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MuSig2SignRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MuSig2SignRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.MuSig2SignRequest;

        /**
         * Creates a plain object from a MuSig2SignRequest message. Also converts values to other types if specified.
         * @param message MuSig2SignRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.MuSig2SignRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MuSig2SignRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MuSig2SignRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MuSig2SignResponse. */
    interface IMuSig2SignResponse {
        /** MuSig2SignResponse local_partial_signature */
        local_partial_signature?: Uint8Array | null;
    }

    /** Represents a MuSig2SignResponse. */
    class MuSig2SignResponse implements IMuSig2SignResponse {
        /**
         * Constructs a new MuSig2SignResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IMuSig2SignResponse);

        /** MuSig2SignResponse local_partial_signature. */
        public local_partial_signature: Uint8Array;

        /**
         * Creates a new MuSig2SignResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MuSig2SignResponse instance
         */
        public static create(
            properties?: signrpc.IMuSig2SignResponse
        ): signrpc.MuSig2SignResponse;

        /**
         * Encodes the specified MuSig2SignResponse message. Does not implicitly {@link signrpc.MuSig2SignResponse.verify|verify} messages.
         * @param message MuSig2SignResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IMuSig2SignResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MuSig2SignResponse message, length delimited. Does not implicitly {@link signrpc.MuSig2SignResponse.verify|verify} messages.
         * @param message MuSig2SignResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IMuSig2SignResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MuSig2SignResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MuSig2SignResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.MuSig2SignResponse;

        /**
         * Decodes a MuSig2SignResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MuSig2SignResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.MuSig2SignResponse;

        /**
         * Verifies a MuSig2SignResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MuSig2SignResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MuSig2SignResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.MuSig2SignResponse;

        /**
         * Creates a plain object from a MuSig2SignResponse message. Also converts values to other types if specified.
         * @param message MuSig2SignResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.MuSig2SignResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MuSig2SignResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MuSig2SignResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MuSig2CombineSigRequest. */
    interface IMuSig2CombineSigRequest {
        /** MuSig2CombineSigRequest session_id */
        session_id?: Uint8Array | null;

        /** MuSig2CombineSigRequest other_partial_signatures */
        other_partial_signatures?: Uint8Array[] | null;
    }

    /** Represents a MuSig2CombineSigRequest. */
    class MuSig2CombineSigRequest implements IMuSig2CombineSigRequest {
        /**
         * Constructs a new MuSig2CombineSigRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IMuSig2CombineSigRequest);

        /** MuSig2CombineSigRequest session_id. */
        public session_id: Uint8Array;

        /** MuSig2CombineSigRequest other_partial_signatures. */
        public other_partial_signatures: Uint8Array[];

        /**
         * Creates a new MuSig2CombineSigRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MuSig2CombineSigRequest instance
         */
        public static create(
            properties?: signrpc.IMuSig2CombineSigRequest
        ): signrpc.MuSig2CombineSigRequest;

        /**
         * Encodes the specified MuSig2CombineSigRequest message. Does not implicitly {@link signrpc.MuSig2CombineSigRequest.verify|verify} messages.
         * @param message MuSig2CombineSigRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IMuSig2CombineSigRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MuSig2CombineSigRequest message, length delimited. Does not implicitly {@link signrpc.MuSig2CombineSigRequest.verify|verify} messages.
         * @param message MuSig2CombineSigRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IMuSig2CombineSigRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MuSig2CombineSigRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MuSig2CombineSigRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.MuSig2CombineSigRequest;

        /**
         * Decodes a MuSig2CombineSigRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MuSig2CombineSigRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.MuSig2CombineSigRequest;

        /**
         * Verifies a MuSig2CombineSigRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MuSig2CombineSigRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MuSig2CombineSigRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.MuSig2CombineSigRequest;

        /**
         * Creates a plain object from a MuSig2CombineSigRequest message. Also converts values to other types if specified.
         * @param message MuSig2CombineSigRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.MuSig2CombineSigRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MuSig2CombineSigRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MuSig2CombineSigRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MuSig2CombineSigResponse. */
    interface IMuSig2CombineSigResponse {
        /** MuSig2CombineSigResponse have_all_signatures */
        have_all_signatures?: boolean | null;

        /** MuSig2CombineSigResponse final_signature */
        final_signature?: Uint8Array | null;
    }

    /** Represents a MuSig2CombineSigResponse. */
    class MuSig2CombineSigResponse implements IMuSig2CombineSigResponse {
        /**
         * Constructs a new MuSig2CombineSigResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IMuSig2CombineSigResponse);

        /** MuSig2CombineSigResponse have_all_signatures. */
        public have_all_signatures: boolean;

        /** MuSig2CombineSigResponse final_signature. */
        public final_signature: Uint8Array;

        /**
         * Creates a new MuSig2CombineSigResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MuSig2CombineSigResponse instance
         */
        public static create(
            properties?: signrpc.IMuSig2CombineSigResponse
        ): signrpc.MuSig2CombineSigResponse;

        /**
         * Encodes the specified MuSig2CombineSigResponse message. Does not implicitly {@link signrpc.MuSig2CombineSigResponse.verify|verify} messages.
         * @param message MuSig2CombineSigResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IMuSig2CombineSigResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MuSig2CombineSigResponse message, length delimited. Does not implicitly {@link signrpc.MuSig2CombineSigResponse.verify|verify} messages.
         * @param message MuSig2CombineSigResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IMuSig2CombineSigResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MuSig2CombineSigResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MuSig2CombineSigResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.MuSig2CombineSigResponse;

        /**
         * Decodes a MuSig2CombineSigResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MuSig2CombineSigResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.MuSig2CombineSigResponse;

        /**
         * Verifies a MuSig2CombineSigResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MuSig2CombineSigResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MuSig2CombineSigResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.MuSig2CombineSigResponse;

        /**
         * Creates a plain object from a MuSig2CombineSigResponse message. Also converts values to other types if specified.
         * @param message MuSig2CombineSigResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.MuSig2CombineSigResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MuSig2CombineSigResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MuSig2CombineSigResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MuSig2CleanupRequest. */
    interface IMuSig2CleanupRequest {
        /** MuSig2CleanupRequest session_id */
        session_id?: Uint8Array | null;
    }

    /** Represents a MuSig2CleanupRequest. */
    class MuSig2CleanupRequest implements IMuSig2CleanupRequest {
        /**
         * Constructs a new MuSig2CleanupRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IMuSig2CleanupRequest);

        /** MuSig2CleanupRequest session_id. */
        public session_id: Uint8Array;

        /**
         * Creates a new MuSig2CleanupRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MuSig2CleanupRequest instance
         */
        public static create(
            properties?: signrpc.IMuSig2CleanupRequest
        ): signrpc.MuSig2CleanupRequest;

        /**
         * Encodes the specified MuSig2CleanupRequest message. Does not implicitly {@link signrpc.MuSig2CleanupRequest.verify|verify} messages.
         * @param message MuSig2CleanupRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IMuSig2CleanupRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MuSig2CleanupRequest message, length delimited. Does not implicitly {@link signrpc.MuSig2CleanupRequest.verify|verify} messages.
         * @param message MuSig2CleanupRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IMuSig2CleanupRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MuSig2CleanupRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MuSig2CleanupRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.MuSig2CleanupRequest;

        /**
         * Decodes a MuSig2CleanupRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MuSig2CleanupRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.MuSig2CleanupRequest;

        /**
         * Verifies a MuSig2CleanupRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MuSig2CleanupRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MuSig2CleanupRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.MuSig2CleanupRequest;

        /**
         * Creates a plain object from a MuSig2CleanupRequest message. Also converts values to other types if specified.
         * @param message MuSig2CleanupRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.MuSig2CleanupRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MuSig2CleanupRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MuSig2CleanupRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MuSig2CleanupResponse. */
    interface IMuSig2CleanupResponse {}

    /** Represents a MuSig2CleanupResponse. */
    class MuSig2CleanupResponse implements IMuSig2CleanupResponse {
        /**
         * Constructs a new MuSig2CleanupResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: signrpc.IMuSig2CleanupResponse);

        /**
         * Creates a new MuSig2CleanupResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MuSig2CleanupResponse instance
         */
        public static create(
            properties?: signrpc.IMuSig2CleanupResponse
        ): signrpc.MuSig2CleanupResponse;

        /**
         * Encodes the specified MuSig2CleanupResponse message. Does not implicitly {@link signrpc.MuSig2CleanupResponse.verify|verify} messages.
         * @param message MuSig2CleanupResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: signrpc.IMuSig2CleanupResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified MuSig2CleanupResponse message, length delimited. Does not implicitly {@link signrpc.MuSig2CleanupResponse.verify|verify} messages.
         * @param message MuSig2CleanupResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: signrpc.IMuSig2CleanupResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a MuSig2CleanupResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MuSig2CleanupResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): signrpc.MuSig2CleanupResponse;

        /**
         * Decodes a MuSig2CleanupResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MuSig2CleanupResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): signrpc.MuSig2CleanupResponse;

        /**
         * Verifies a MuSig2CleanupResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a MuSig2CleanupResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MuSig2CleanupResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): signrpc.MuSig2CleanupResponse;

        /**
         * Creates a plain object from a MuSig2CleanupResponse message. Also converts values to other types if specified.
         * @param message MuSig2CleanupResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: signrpc.MuSig2CleanupResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this MuSig2CleanupResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MuSig2CleanupResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }
}

/** Namespace walletrpc. */
export namespace walletrpc {
    /** Represents a WalletKit */
    class WalletKit extends $protobuf.rpc.Service {
        /**
         * Constructs a new WalletKit service.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         */
        constructor(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        );

        /**
         * Creates new WalletKit service using the specified rpc implementation.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         * @returns RPC service. Useful where requests and/or responses are streamed.
         */
        public static create(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        ): WalletKit;

        /**
         * Calls ListUnspent.
         * @param request ListUnspentRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ListUnspentResponse
         */
        public listUnspent(
            request: walletrpc.IListUnspentRequest,
            callback: walletrpc.WalletKit.ListUnspentCallback
        ): void;

        /**
         * Calls ListUnspent.
         * @param request ListUnspentRequest message or plain object
         * @returns Promise
         */
        public listUnspent(
            request: walletrpc.IListUnspentRequest
        ): Promise<walletrpc.ListUnspentResponse>;

        /**
         * Calls LeaseOutput.
         * @param request LeaseOutputRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and LeaseOutputResponse
         */
        public leaseOutput(
            request: walletrpc.ILeaseOutputRequest,
            callback: walletrpc.WalletKit.LeaseOutputCallback
        ): void;

        /**
         * Calls LeaseOutput.
         * @param request LeaseOutputRequest message or plain object
         * @returns Promise
         */
        public leaseOutput(
            request: walletrpc.ILeaseOutputRequest
        ): Promise<walletrpc.LeaseOutputResponse>;

        /**
         * Calls ReleaseOutput.
         * @param request ReleaseOutputRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ReleaseOutputResponse
         */
        public releaseOutput(
            request: walletrpc.IReleaseOutputRequest,
            callback: walletrpc.WalletKit.ReleaseOutputCallback
        ): void;

        /**
         * Calls ReleaseOutput.
         * @param request ReleaseOutputRequest message or plain object
         * @returns Promise
         */
        public releaseOutput(
            request: walletrpc.IReleaseOutputRequest
        ): Promise<walletrpc.ReleaseOutputResponse>;

        /**
         * Calls ListLeases.
         * @param request ListLeasesRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ListLeasesResponse
         */
        public listLeases(
            request: walletrpc.IListLeasesRequest,
            callback: walletrpc.WalletKit.ListLeasesCallback
        ): void;

        /**
         * Calls ListLeases.
         * @param request ListLeasesRequest message or plain object
         * @returns Promise
         */
        public listLeases(
            request: walletrpc.IListLeasesRequest
        ): Promise<walletrpc.ListLeasesResponse>;

        /**
         * Calls DeriveNextKey.
         * @param request KeyReq message or plain object
         * @param callback Node-style callback called with the error, if any, and KeyDescriptor
         */
        public deriveNextKey(
            request: walletrpc.IKeyReq,
            callback: walletrpc.WalletKit.DeriveNextKeyCallback
        ): void;

        /**
         * Calls DeriveNextKey.
         * @param request KeyReq message or plain object
         * @returns Promise
         */
        public deriveNextKey(
            request: walletrpc.IKeyReq
        ): Promise<signrpc.KeyDescriptor>;

        /**
         * Calls DeriveKey.
         * @param request KeyLocator message or plain object
         * @param callback Node-style callback called with the error, if any, and KeyDescriptor
         */
        public deriveKey(
            request: signrpc.IKeyLocator,
            callback: walletrpc.WalletKit.DeriveKeyCallback
        ): void;

        /**
         * Calls DeriveKey.
         * @param request KeyLocator message or plain object
         * @returns Promise
         */
        public deriveKey(
            request: signrpc.IKeyLocator
        ): Promise<signrpc.KeyDescriptor>;

        /**
         * Calls NextAddr.
         * @param request AddrRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and AddrResponse
         */
        public nextAddr(
            request: walletrpc.IAddrRequest,
            callback: walletrpc.WalletKit.NextAddrCallback
        ): void;

        /**
         * Calls NextAddr.
         * @param request AddrRequest message or plain object
         * @returns Promise
         */
        public nextAddr(
            request: walletrpc.IAddrRequest
        ): Promise<walletrpc.AddrResponse>;

        /**
         * Calls GetTransaction.
         * @param request GetTransactionRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and Transaction
         */
        public getTransaction(
            request: walletrpc.IGetTransactionRequest,
            callback: walletrpc.WalletKit.GetTransactionCallback
        ): void;

        /**
         * Calls GetTransaction.
         * @param request GetTransactionRequest message or plain object
         * @returns Promise
         */
        public getTransaction(
            request: walletrpc.IGetTransactionRequest
        ): Promise<lnrpc.Transaction>;

        /**
         * Calls ListAccounts.
         * @param request ListAccountsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ListAccountsResponse
         */
        public listAccounts(
            request: walletrpc.IListAccountsRequest,
            callback: walletrpc.WalletKit.ListAccountsCallback
        ): void;

        /**
         * Calls ListAccounts.
         * @param request ListAccountsRequest message or plain object
         * @returns Promise
         */
        public listAccounts(
            request: walletrpc.IListAccountsRequest
        ): Promise<walletrpc.ListAccountsResponse>;

        /**
         * Calls RequiredReserve.
         * @param request RequiredReserveRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and RequiredReserveResponse
         */
        public requiredReserve(
            request: walletrpc.IRequiredReserveRequest,
            callback: walletrpc.WalletKit.RequiredReserveCallback
        ): void;

        /**
         * Calls RequiredReserve.
         * @param request RequiredReserveRequest message or plain object
         * @returns Promise
         */
        public requiredReserve(
            request: walletrpc.IRequiredReserveRequest
        ): Promise<walletrpc.RequiredReserveResponse>;

        /**
         * Calls ListAddresses.
         * @param request ListAddressesRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ListAddressesResponse
         */
        public listAddresses(
            request: walletrpc.IListAddressesRequest,
            callback: walletrpc.WalletKit.ListAddressesCallback
        ): void;

        /**
         * Calls ListAddresses.
         * @param request ListAddressesRequest message or plain object
         * @returns Promise
         */
        public listAddresses(
            request: walletrpc.IListAddressesRequest
        ): Promise<walletrpc.ListAddressesResponse>;

        /**
         * Calls SignMessageWithAddr.
         * @param request SignMessageWithAddrRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SignMessageWithAddrResponse
         */
        public signMessageWithAddr(
            request: walletrpc.ISignMessageWithAddrRequest,
            callback: walletrpc.WalletKit.SignMessageWithAddrCallback
        ): void;

        /**
         * Calls SignMessageWithAddr.
         * @param request SignMessageWithAddrRequest message or plain object
         * @returns Promise
         */
        public signMessageWithAddr(
            request: walletrpc.ISignMessageWithAddrRequest
        ): Promise<walletrpc.SignMessageWithAddrResponse>;

        /**
         * Calls VerifyMessageWithAddr.
         * @param request VerifyMessageWithAddrRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and VerifyMessageWithAddrResponse
         */
        public verifyMessageWithAddr(
            request: walletrpc.IVerifyMessageWithAddrRequest,
            callback: walletrpc.WalletKit.VerifyMessageWithAddrCallback
        ): void;

        /**
         * Calls VerifyMessageWithAddr.
         * @param request VerifyMessageWithAddrRequest message or plain object
         * @returns Promise
         */
        public verifyMessageWithAddr(
            request: walletrpc.IVerifyMessageWithAddrRequest
        ): Promise<walletrpc.VerifyMessageWithAddrResponse>;

        /**
         * Calls ImportAccount.
         * @param request ImportAccountRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ImportAccountResponse
         */
        public importAccount(
            request: walletrpc.IImportAccountRequest,
            callback: walletrpc.WalletKit.ImportAccountCallback
        ): void;

        /**
         * Calls ImportAccount.
         * @param request ImportAccountRequest message or plain object
         * @returns Promise
         */
        public importAccount(
            request: walletrpc.IImportAccountRequest
        ): Promise<walletrpc.ImportAccountResponse>;

        /**
         * Calls ImportPublicKey.
         * @param request ImportPublicKeyRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ImportPublicKeyResponse
         */
        public importPublicKey(
            request: walletrpc.IImportPublicKeyRequest,
            callback: walletrpc.WalletKit.ImportPublicKeyCallback
        ): void;

        /**
         * Calls ImportPublicKey.
         * @param request ImportPublicKeyRequest message or plain object
         * @returns Promise
         */
        public importPublicKey(
            request: walletrpc.IImportPublicKeyRequest
        ): Promise<walletrpc.ImportPublicKeyResponse>;

        /**
         * Calls ImportTapscript.
         * @param request ImportTapscriptRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ImportTapscriptResponse
         */
        public importTapscript(
            request: walletrpc.IImportTapscriptRequest,
            callback: walletrpc.WalletKit.ImportTapscriptCallback
        ): void;

        /**
         * Calls ImportTapscript.
         * @param request ImportTapscriptRequest message or plain object
         * @returns Promise
         */
        public importTapscript(
            request: walletrpc.IImportTapscriptRequest
        ): Promise<walletrpc.ImportTapscriptResponse>;

        /**
         * Calls PublishTransaction.
         * @param request Transaction message or plain object
         * @param callback Node-style callback called with the error, if any, and PublishResponse
         */
        public publishTransaction(
            request: walletrpc.ITransaction,
            callback: walletrpc.WalletKit.PublishTransactionCallback
        ): void;

        /**
         * Calls PublishTransaction.
         * @param request Transaction message or plain object
         * @returns Promise
         */
        public publishTransaction(
            request: walletrpc.ITransaction
        ): Promise<walletrpc.PublishResponse>;

        /**
         * Calls RemoveTransaction.
         * @param request GetTransactionRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and RemoveTransactionResponse
         */
        public removeTransaction(
            request: walletrpc.IGetTransactionRequest,
            callback: walletrpc.WalletKit.RemoveTransactionCallback
        ): void;

        /**
         * Calls RemoveTransaction.
         * @param request GetTransactionRequest message or plain object
         * @returns Promise
         */
        public removeTransaction(
            request: walletrpc.IGetTransactionRequest
        ): Promise<walletrpc.RemoveTransactionResponse>;

        /**
         * Calls SendOutputs.
         * @param request SendOutputsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SendOutputsResponse
         */
        public sendOutputs(
            request: walletrpc.ISendOutputsRequest,
            callback: walletrpc.WalletKit.SendOutputsCallback
        ): void;

        /**
         * Calls SendOutputs.
         * @param request SendOutputsRequest message or plain object
         * @returns Promise
         */
        public sendOutputs(
            request: walletrpc.ISendOutputsRequest
        ): Promise<walletrpc.SendOutputsResponse>;

        /**
         * Calls EstimateFee.
         * @param request EstimateFeeRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and EstimateFeeResponse
         */
        public estimateFee(
            request: walletrpc.IEstimateFeeRequest,
            callback: walletrpc.WalletKit.EstimateFeeCallback
        ): void;

        /**
         * Calls EstimateFee.
         * @param request EstimateFeeRequest message or plain object
         * @returns Promise
         */
        public estimateFee(
            request: walletrpc.IEstimateFeeRequest
        ): Promise<walletrpc.EstimateFeeResponse>;

        /**
         * Calls PendingSweeps.
         * @param request PendingSweepsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and PendingSweepsResponse
         */
        public pendingSweeps(
            request: walletrpc.IPendingSweepsRequest,
            callback: walletrpc.WalletKit.PendingSweepsCallback
        ): void;

        /**
         * Calls PendingSweeps.
         * @param request PendingSweepsRequest message or plain object
         * @returns Promise
         */
        public pendingSweeps(
            request: walletrpc.IPendingSweepsRequest
        ): Promise<walletrpc.PendingSweepsResponse>;

        /**
         * Calls BumpFee.
         * @param request BumpFeeRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and BumpFeeResponse
         */
        public bumpFee(
            request: walletrpc.IBumpFeeRequest,
            callback: walletrpc.WalletKit.BumpFeeCallback
        ): void;

        /**
         * Calls BumpFee.
         * @param request BumpFeeRequest message or plain object
         * @returns Promise
         */
        public bumpFee(
            request: walletrpc.IBumpFeeRequest
        ): Promise<walletrpc.BumpFeeResponse>;

        /**
         * Calls BumpForceCloseFee.
         * @param request BumpForceCloseFeeRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and BumpForceCloseFeeResponse
         */
        public bumpForceCloseFee(
            request: walletrpc.IBumpForceCloseFeeRequest,
            callback: walletrpc.WalletKit.BumpForceCloseFeeCallback
        ): void;

        /**
         * Calls BumpForceCloseFee.
         * @param request BumpForceCloseFeeRequest message or plain object
         * @returns Promise
         */
        public bumpForceCloseFee(
            request: walletrpc.IBumpForceCloseFeeRequest
        ): Promise<walletrpc.BumpForceCloseFeeResponse>;

        /**
         * Calls ListSweeps.
         * @param request ListSweepsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ListSweepsResponse
         */
        public listSweeps(
            request: walletrpc.IListSweepsRequest,
            callback: walletrpc.WalletKit.ListSweepsCallback
        ): void;

        /**
         * Calls ListSweeps.
         * @param request ListSweepsRequest message or plain object
         * @returns Promise
         */
        public listSweeps(
            request: walletrpc.IListSweepsRequest
        ): Promise<walletrpc.ListSweepsResponse>;

        /**
         * Calls LabelTransaction.
         * @param request LabelTransactionRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and LabelTransactionResponse
         */
        public labelTransaction(
            request: walletrpc.ILabelTransactionRequest,
            callback: walletrpc.WalletKit.LabelTransactionCallback
        ): void;

        /**
         * Calls LabelTransaction.
         * @param request LabelTransactionRequest message or plain object
         * @returns Promise
         */
        public labelTransaction(
            request: walletrpc.ILabelTransactionRequest
        ): Promise<walletrpc.LabelTransactionResponse>;

        /**
         * Calls FundPsbt.
         * @param request FundPsbtRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and FundPsbtResponse
         */
        public fundPsbt(
            request: walletrpc.IFundPsbtRequest,
            callback: walletrpc.WalletKit.FundPsbtCallback
        ): void;

        /**
         * Calls FundPsbt.
         * @param request FundPsbtRequest message or plain object
         * @returns Promise
         */
        public fundPsbt(
            request: walletrpc.IFundPsbtRequest
        ): Promise<walletrpc.FundPsbtResponse>;

        /**
         * Calls SignPsbt.
         * @param request SignPsbtRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and SignPsbtResponse
         */
        public signPsbt(
            request: walletrpc.ISignPsbtRequest,
            callback: walletrpc.WalletKit.SignPsbtCallback
        ): void;

        /**
         * Calls SignPsbt.
         * @param request SignPsbtRequest message or plain object
         * @returns Promise
         */
        public signPsbt(
            request: walletrpc.ISignPsbtRequest
        ): Promise<walletrpc.SignPsbtResponse>;

        /**
         * Calls FinalizePsbt.
         * @param request FinalizePsbtRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and FinalizePsbtResponse
         */
        public finalizePsbt(
            request: walletrpc.IFinalizePsbtRequest,
            callback: walletrpc.WalletKit.FinalizePsbtCallback
        ): void;

        /**
         * Calls FinalizePsbt.
         * @param request FinalizePsbtRequest message or plain object
         * @returns Promise
         */
        public finalizePsbt(
            request: walletrpc.IFinalizePsbtRequest
        ): Promise<walletrpc.FinalizePsbtResponse>;

        /**
         * Calls Rescan.
         * @param request RescanRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and RescanResponse
         */
        public rescan(
            request: walletrpc.IRescanRequest,
            callback: walletrpc.WalletKit.RescanCallback
        ): void;

        /**
         * Calls Rescan.
         * @param request RescanRequest message or plain object
         * @returns Promise
         */
        public rescan(
            request: walletrpc.IRescanRequest
        ): Promise<walletrpc.RescanResponse>;
    }

    namespace WalletKit {
        /**
         * Callback as used by {@link walletrpc.WalletKit#listUnspent}.
         * @param error Error, if any
         * @param [response] ListUnspentResponse
         */
        type ListUnspentCallback = (
            error: Error | null,
            response?: walletrpc.ListUnspentResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#leaseOutput}.
         * @param error Error, if any
         * @param [response] LeaseOutputResponse
         */
        type LeaseOutputCallback = (
            error: Error | null,
            response?: walletrpc.LeaseOutputResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#releaseOutput}.
         * @param error Error, if any
         * @param [response] ReleaseOutputResponse
         */
        type ReleaseOutputCallback = (
            error: Error | null,
            response?: walletrpc.ReleaseOutputResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#listLeases}.
         * @param error Error, if any
         * @param [response] ListLeasesResponse
         */
        type ListLeasesCallback = (
            error: Error | null,
            response?: walletrpc.ListLeasesResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#deriveNextKey}.
         * @param error Error, if any
         * @param [response] KeyDescriptor
         */
        type DeriveNextKeyCallback = (
            error: Error | null,
            response?: signrpc.KeyDescriptor
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#deriveKey}.
         * @param error Error, if any
         * @param [response] KeyDescriptor
         */
        type DeriveKeyCallback = (
            error: Error | null,
            response?: signrpc.KeyDescriptor
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#nextAddr}.
         * @param error Error, if any
         * @param [response] AddrResponse
         */
        type NextAddrCallback = (
            error: Error | null,
            response?: walletrpc.AddrResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#getTransaction}.
         * @param error Error, if any
         * @param [response] Transaction
         */
        type GetTransactionCallback = (
            error: Error | null,
            response?: lnrpc.Transaction
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#listAccounts}.
         * @param error Error, if any
         * @param [response] ListAccountsResponse
         */
        type ListAccountsCallback = (
            error: Error | null,
            response?: walletrpc.ListAccountsResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#requiredReserve}.
         * @param error Error, if any
         * @param [response] RequiredReserveResponse
         */
        type RequiredReserveCallback = (
            error: Error | null,
            response?: walletrpc.RequiredReserveResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#listAddresses}.
         * @param error Error, if any
         * @param [response] ListAddressesResponse
         */
        type ListAddressesCallback = (
            error: Error | null,
            response?: walletrpc.ListAddressesResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#signMessageWithAddr}.
         * @param error Error, if any
         * @param [response] SignMessageWithAddrResponse
         */
        type SignMessageWithAddrCallback = (
            error: Error | null,
            response?: walletrpc.SignMessageWithAddrResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#verifyMessageWithAddr}.
         * @param error Error, if any
         * @param [response] VerifyMessageWithAddrResponse
         */
        type VerifyMessageWithAddrCallback = (
            error: Error | null,
            response?: walletrpc.VerifyMessageWithAddrResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#importAccount}.
         * @param error Error, if any
         * @param [response] ImportAccountResponse
         */
        type ImportAccountCallback = (
            error: Error | null,
            response?: walletrpc.ImportAccountResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#importPublicKey}.
         * @param error Error, if any
         * @param [response] ImportPublicKeyResponse
         */
        type ImportPublicKeyCallback = (
            error: Error | null,
            response?: walletrpc.ImportPublicKeyResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#importTapscript}.
         * @param error Error, if any
         * @param [response] ImportTapscriptResponse
         */
        type ImportTapscriptCallback = (
            error: Error | null,
            response?: walletrpc.ImportTapscriptResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#publishTransaction}.
         * @param error Error, if any
         * @param [response] PublishResponse
         */
        type PublishTransactionCallback = (
            error: Error | null,
            response?: walletrpc.PublishResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#removeTransaction}.
         * @param error Error, if any
         * @param [response] RemoveTransactionResponse
         */
        type RemoveTransactionCallback = (
            error: Error | null,
            response?: walletrpc.RemoveTransactionResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#sendOutputs}.
         * @param error Error, if any
         * @param [response] SendOutputsResponse
         */
        type SendOutputsCallback = (
            error: Error | null,
            response?: walletrpc.SendOutputsResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#estimateFee}.
         * @param error Error, if any
         * @param [response] EstimateFeeResponse
         */
        type EstimateFeeCallback = (
            error: Error | null,
            response?: walletrpc.EstimateFeeResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#pendingSweeps}.
         * @param error Error, if any
         * @param [response] PendingSweepsResponse
         */
        type PendingSweepsCallback = (
            error: Error | null,
            response?: walletrpc.PendingSweepsResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#bumpFee}.
         * @param error Error, if any
         * @param [response] BumpFeeResponse
         */
        type BumpFeeCallback = (
            error: Error | null,
            response?: walletrpc.BumpFeeResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#bumpForceCloseFee}.
         * @param error Error, if any
         * @param [response] BumpForceCloseFeeResponse
         */
        type BumpForceCloseFeeCallback = (
            error: Error | null,
            response?: walletrpc.BumpForceCloseFeeResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#listSweeps}.
         * @param error Error, if any
         * @param [response] ListSweepsResponse
         */
        type ListSweepsCallback = (
            error: Error | null,
            response?: walletrpc.ListSweepsResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#labelTransaction}.
         * @param error Error, if any
         * @param [response] LabelTransactionResponse
         */
        type LabelTransactionCallback = (
            error: Error | null,
            response?: walletrpc.LabelTransactionResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#fundPsbt}.
         * @param error Error, if any
         * @param [response] FundPsbtResponse
         */
        type FundPsbtCallback = (
            error: Error | null,
            response?: walletrpc.FundPsbtResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#signPsbt}.
         * @param error Error, if any
         * @param [response] SignPsbtResponse
         */
        type SignPsbtCallback = (
            error: Error | null,
            response?: walletrpc.SignPsbtResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#finalizePsbt}.
         * @param error Error, if any
         * @param [response] FinalizePsbtResponse
         */
        type FinalizePsbtCallback = (
            error: Error | null,
            response?: walletrpc.FinalizePsbtResponse
        ) => void;

        /**
         * Callback as used by {@link walletrpc.WalletKit#rescan}.
         * @param error Error, if any
         * @param [response] RescanResponse
         */
        type RescanCallback = (
            error: Error | null,
            response?: walletrpc.RescanResponse
        ) => void;
    }

    /** Properties of a ListUnspentRequest. */
    interface IListUnspentRequest {
        /** ListUnspentRequest min_confs */
        min_confs?: number | null;

        /** ListUnspentRequest max_confs */
        max_confs?: number | null;

        /** ListUnspentRequest account */
        account?: string | null;

        /** ListUnspentRequest unconfirmed_only */
        unconfirmed_only?: boolean | null;
    }

    /** Represents a ListUnspentRequest. */
    class ListUnspentRequest implements IListUnspentRequest {
        /**
         * Constructs a new ListUnspentRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IListUnspentRequest);

        /** ListUnspentRequest min_confs. */
        public min_confs: number;

        /** ListUnspentRequest max_confs. */
        public max_confs: number;

        /** ListUnspentRequest account. */
        public account: string;

        /** ListUnspentRequest unconfirmed_only. */
        public unconfirmed_only: boolean;

        /**
         * Creates a new ListUnspentRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListUnspentRequest instance
         */
        public static create(
            properties?: walletrpc.IListUnspentRequest
        ): walletrpc.ListUnspentRequest;

        /**
         * Encodes the specified ListUnspentRequest message. Does not implicitly {@link walletrpc.ListUnspentRequest.verify|verify} messages.
         * @param message ListUnspentRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IListUnspentRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListUnspentRequest message, length delimited. Does not implicitly {@link walletrpc.ListUnspentRequest.verify|verify} messages.
         * @param message ListUnspentRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IListUnspentRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListUnspentRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListUnspentRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ListUnspentRequest;

        /**
         * Decodes a ListUnspentRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListUnspentRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ListUnspentRequest;

        /**
         * Verifies a ListUnspentRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListUnspentRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListUnspentRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ListUnspentRequest;

        /**
         * Creates a plain object from a ListUnspentRequest message. Also converts values to other types if specified.
         * @param message ListUnspentRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ListUnspentRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListUnspentRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListUnspentRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListUnspentResponse. */
    interface IListUnspentResponse {
        /** ListUnspentResponse utxos */
        utxos?: lnrpc.IUtxo[] | null;
    }

    /** Represents a ListUnspentResponse. */
    class ListUnspentResponse implements IListUnspentResponse {
        /**
         * Constructs a new ListUnspentResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IListUnspentResponse);

        /** ListUnspentResponse utxos. */
        public utxos: lnrpc.IUtxo[];

        /**
         * Creates a new ListUnspentResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListUnspentResponse instance
         */
        public static create(
            properties?: walletrpc.IListUnspentResponse
        ): walletrpc.ListUnspentResponse;

        /**
         * Encodes the specified ListUnspentResponse message. Does not implicitly {@link walletrpc.ListUnspentResponse.verify|verify} messages.
         * @param message ListUnspentResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IListUnspentResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListUnspentResponse message, length delimited. Does not implicitly {@link walletrpc.ListUnspentResponse.verify|verify} messages.
         * @param message ListUnspentResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IListUnspentResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListUnspentResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListUnspentResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ListUnspentResponse;

        /**
         * Decodes a ListUnspentResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListUnspentResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ListUnspentResponse;

        /**
         * Verifies a ListUnspentResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListUnspentResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListUnspentResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ListUnspentResponse;

        /**
         * Creates a plain object from a ListUnspentResponse message. Also converts values to other types if specified.
         * @param message ListUnspentResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ListUnspentResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListUnspentResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListUnspentResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a LeaseOutputRequest. */
    interface ILeaseOutputRequest {
        /** LeaseOutputRequest id */
        id?: Uint8Array | null;

        /** LeaseOutputRequest outpoint */
        outpoint?: lnrpc.IOutPoint | null;

        /** LeaseOutputRequest expiration_seconds */
        expiration_seconds?: Long | null;
    }

    /** Represents a LeaseOutputRequest. */
    class LeaseOutputRequest implements ILeaseOutputRequest {
        /**
         * Constructs a new LeaseOutputRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.ILeaseOutputRequest);

        /** LeaseOutputRequest id. */
        public id: Uint8Array;

        /** LeaseOutputRequest outpoint. */
        public outpoint?: lnrpc.IOutPoint | null;

        /** LeaseOutputRequest expiration_seconds. */
        public expiration_seconds: Long;

        /**
         * Creates a new LeaseOutputRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns LeaseOutputRequest instance
         */
        public static create(
            properties?: walletrpc.ILeaseOutputRequest
        ): walletrpc.LeaseOutputRequest;

        /**
         * Encodes the specified LeaseOutputRequest message. Does not implicitly {@link walletrpc.LeaseOutputRequest.verify|verify} messages.
         * @param message LeaseOutputRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.ILeaseOutputRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified LeaseOutputRequest message, length delimited. Does not implicitly {@link walletrpc.LeaseOutputRequest.verify|verify} messages.
         * @param message LeaseOutputRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.ILeaseOutputRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a LeaseOutputRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns LeaseOutputRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.LeaseOutputRequest;

        /**
         * Decodes a LeaseOutputRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns LeaseOutputRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.LeaseOutputRequest;

        /**
         * Verifies a LeaseOutputRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a LeaseOutputRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns LeaseOutputRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.LeaseOutputRequest;

        /**
         * Creates a plain object from a LeaseOutputRequest message. Also converts values to other types if specified.
         * @param message LeaseOutputRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.LeaseOutputRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this LeaseOutputRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for LeaseOutputRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a LeaseOutputResponse. */
    interface ILeaseOutputResponse {
        /** LeaseOutputResponse expiration */
        expiration?: Long | null;
    }

    /** Represents a LeaseOutputResponse. */
    class LeaseOutputResponse implements ILeaseOutputResponse {
        /**
         * Constructs a new LeaseOutputResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.ILeaseOutputResponse);

        /** LeaseOutputResponse expiration. */
        public expiration: Long;

        /**
         * Creates a new LeaseOutputResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns LeaseOutputResponse instance
         */
        public static create(
            properties?: walletrpc.ILeaseOutputResponse
        ): walletrpc.LeaseOutputResponse;

        /**
         * Encodes the specified LeaseOutputResponse message. Does not implicitly {@link walletrpc.LeaseOutputResponse.verify|verify} messages.
         * @param message LeaseOutputResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.ILeaseOutputResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified LeaseOutputResponse message, length delimited. Does not implicitly {@link walletrpc.LeaseOutputResponse.verify|verify} messages.
         * @param message LeaseOutputResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.ILeaseOutputResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a LeaseOutputResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns LeaseOutputResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.LeaseOutputResponse;

        /**
         * Decodes a LeaseOutputResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns LeaseOutputResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.LeaseOutputResponse;

        /**
         * Verifies a LeaseOutputResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a LeaseOutputResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns LeaseOutputResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.LeaseOutputResponse;

        /**
         * Creates a plain object from a LeaseOutputResponse message. Also converts values to other types if specified.
         * @param message LeaseOutputResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.LeaseOutputResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this LeaseOutputResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for LeaseOutputResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ReleaseOutputRequest. */
    interface IReleaseOutputRequest {
        /** ReleaseOutputRequest id */
        id?: Uint8Array | null;

        /** ReleaseOutputRequest outpoint */
        outpoint?: lnrpc.IOutPoint | null;
    }

    /** Represents a ReleaseOutputRequest. */
    class ReleaseOutputRequest implements IReleaseOutputRequest {
        /**
         * Constructs a new ReleaseOutputRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IReleaseOutputRequest);

        /** ReleaseOutputRequest id. */
        public id: Uint8Array;

        /** ReleaseOutputRequest outpoint. */
        public outpoint?: lnrpc.IOutPoint | null;

        /**
         * Creates a new ReleaseOutputRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ReleaseOutputRequest instance
         */
        public static create(
            properties?: walletrpc.IReleaseOutputRequest
        ): walletrpc.ReleaseOutputRequest;

        /**
         * Encodes the specified ReleaseOutputRequest message. Does not implicitly {@link walletrpc.ReleaseOutputRequest.verify|verify} messages.
         * @param message ReleaseOutputRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IReleaseOutputRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ReleaseOutputRequest message, length delimited. Does not implicitly {@link walletrpc.ReleaseOutputRequest.verify|verify} messages.
         * @param message ReleaseOutputRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IReleaseOutputRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ReleaseOutputRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ReleaseOutputRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ReleaseOutputRequest;

        /**
         * Decodes a ReleaseOutputRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ReleaseOutputRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ReleaseOutputRequest;

        /**
         * Verifies a ReleaseOutputRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ReleaseOutputRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ReleaseOutputRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ReleaseOutputRequest;

        /**
         * Creates a plain object from a ReleaseOutputRequest message. Also converts values to other types if specified.
         * @param message ReleaseOutputRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ReleaseOutputRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ReleaseOutputRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ReleaseOutputRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ReleaseOutputResponse. */
    interface IReleaseOutputResponse {}

    /** Represents a ReleaseOutputResponse. */
    class ReleaseOutputResponse implements IReleaseOutputResponse {
        /**
         * Constructs a new ReleaseOutputResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IReleaseOutputResponse);

        /**
         * Creates a new ReleaseOutputResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ReleaseOutputResponse instance
         */
        public static create(
            properties?: walletrpc.IReleaseOutputResponse
        ): walletrpc.ReleaseOutputResponse;

        /**
         * Encodes the specified ReleaseOutputResponse message. Does not implicitly {@link walletrpc.ReleaseOutputResponse.verify|verify} messages.
         * @param message ReleaseOutputResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IReleaseOutputResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ReleaseOutputResponse message, length delimited. Does not implicitly {@link walletrpc.ReleaseOutputResponse.verify|verify} messages.
         * @param message ReleaseOutputResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IReleaseOutputResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ReleaseOutputResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ReleaseOutputResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ReleaseOutputResponse;

        /**
         * Decodes a ReleaseOutputResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ReleaseOutputResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ReleaseOutputResponse;

        /**
         * Verifies a ReleaseOutputResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ReleaseOutputResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ReleaseOutputResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ReleaseOutputResponse;

        /**
         * Creates a plain object from a ReleaseOutputResponse message. Also converts values to other types if specified.
         * @param message ReleaseOutputResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ReleaseOutputResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ReleaseOutputResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ReleaseOutputResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a KeyReq. */
    interface IKeyReq {
        /** KeyReq key_finger_print */
        key_finger_print?: number | null;

        /** KeyReq key_family */
        key_family?: number | null;
    }

    /** Represents a KeyReq. */
    class KeyReq implements IKeyReq {
        /**
         * Constructs a new KeyReq.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IKeyReq);

        /** KeyReq key_finger_print. */
        public key_finger_print: number;

        /** KeyReq key_family. */
        public key_family: number;

        /**
         * Creates a new KeyReq instance using the specified properties.
         * @param [properties] Properties to set
         * @returns KeyReq instance
         */
        public static create(properties?: walletrpc.IKeyReq): walletrpc.KeyReq;

        /**
         * Encodes the specified KeyReq message. Does not implicitly {@link walletrpc.KeyReq.verify|verify} messages.
         * @param message KeyReq message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IKeyReq,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified KeyReq message, length delimited. Does not implicitly {@link walletrpc.KeyReq.verify|verify} messages.
         * @param message KeyReq message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IKeyReq,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a KeyReq message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns KeyReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.KeyReq;

        /**
         * Decodes a KeyReq message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns KeyReq
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.KeyReq;

        /**
         * Verifies a KeyReq message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a KeyReq message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns KeyReq
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.KeyReq;

        /**
         * Creates a plain object from a KeyReq message. Also converts values to other types if specified.
         * @param message KeyReq
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.KeyReq,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this KeyReq to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for KeyReq
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AddrRequest. */
    interface IAddrRequest {
        /** AddrRequest account */
        account?: string | null;

        /** AddrRequest type */
        type?: walletrpc.AddressType | null;

        /** AddrRequest change */
        change?: boolean | null;
    }

    /** Represents an AddrRequest. */
    class AddrRequest implements IAddrRequest {
        /**
         * Constructs a new AddrRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IAddrRequest);

        /** AddrRequest account. */
        public account: string;

        /** AddrRequest type. */
        public type: walletrpc.AddressType;

        /** AddrRequest change. */
        public change: boolean;

        /**
         * Creates a new AddrRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AddrRequest instance
         */
        public static create(
            properties?: walletrpc.IAddrRequest
        ): walletrpc.AddrRequest;

        /**
         * Encodes the specified AddrRequest message. Does not implicitly {@link walletrpc.AddrRequest.verify|verify} messages.
         * @param message AddrRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IAddrRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AddrRequest message, length delimited. Does not implicitly {@link walletrpc.AddrRequest.verify|verify} messages.
         * @param message AddrRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IAddrRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AddrRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AddrRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.AddrRequest;

        /**
         * Decodes an AddrRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AddrRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.AddrRequest;

        /**
         * Verifies an AddrRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AddrRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AddrRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.AddrRequest;

        /**
         * Creates a plain object from an AddrRequest message. Also converts values to other types if specified.
         * @param message AddrRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.AddrRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AddrRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AddrRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AddrResponse. */
    interface IAddrResponse {
        /** AddrResponse addr */
        addr?: string | null;
    }

    /** Represents an AddrResponse. */
    class AddrResponse implements IAddrResponse {
        /**
         * Constructs a new AddrResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IAddrResponse);

        /** AddrResponse addr. */
        public addr: string;

        /**
         * Creates a new AddrResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AddrResponse instance
         */
        public static create(
            properties?: walletrpc.IAddrResponse
        ): walletrpc.AddrResponse;

        /**
         * Encodes the specified AddrResponse message. Does not implicitly {@link walletrpc.AddrResponse.verify|verify} messages.
         * @param message AddrResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IAddrResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AddrResponse message, length delimited. Does not implicitly {@link walletrpc.AddrResponse.verify|verify} messages.
         * @param message AddrResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IAddrResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AddrResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AddrResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.AddrResponse;

        /**
         * Decodes an AddrResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AddrResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.AddrResponse;

        /**
         * Verifies an AddrResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AddrResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AddrResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.AddrResponse;

        /**
         * Creates a plain object from an AddrResponse message. Also converts values to other types if specified.
         * @param message AddrResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.AddrResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AddrResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AddrResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** AddressType enum. */
    enum AddressType {
        UNKNOWN = 0,
        WITNESS_PUBKEY_HASH = 1,
        NESTED_WITNESS_PUBKEY_HASH = 2,
        HYBRID_NESTED_WITNESS_PUBKEY_HASH = 3,
        TAPROOT_PUBKEY = 4
    }

    /** Properties of an Account. */
    interface IAccount {
        /** Account name */
        name?: string | null;

        /** Account address_type */
        address_type?: walletrpc.AddressType | null;

        /** Account extended_public_key */
        extended_public_key?: string | null;

        /** Account master_key_fingerprint */
        master_key_fingerprint?: Uint8Array | null;

        /** Account derivation_path */
        derivation_path?: string | null;

        /** Account external_key_count */
        external_key_count?: number | null;

        /** Account internal_key_count */
        internal_key_count?: number | null;

        /** Account watch_only */
        watch_only?: boolean | null;
    }

    /** Represents an Account. */
    class Account implements IAccount {
        /**
         * Constructs a new Account.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IAccount);

        /** Account name. */
        public name: string;

        /** Account address_type. */
        public address_type: walletrpc.AddressType;

        /** Account extended_public_key. */
        public extended_public_key: string;

        /** Account master_key_fingerprint. */
        public master_key_fingerprint: Uint8Array;

        /** Account derivation_path. */
        public derivation_path: string;

        /** Account external_key_count. */
        public external_key_count: number;

        /** Account internal_key_count. */
        public internal_key_count: number;

        /** Account watch_only. */
        public watch_only: boolean;

        /**
         * Creates a new Account instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Account instance
         */
        public static create(
            properties?: walletrpc.IAccount
        ): walletrpc.Account;

        /**
         * Encodes the specified Account message. Does not implicitly {@link walletrpc.Account.verify|verify} messages.
         * @param message Account message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IAccount,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Account message, length delimited. Does not implicitly {@link walletrpc.Account.verify|verify} messages.
         * @param message Account message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IAccount,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an Account message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Account
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.Account;

        /**
         * Decodes an Account message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Account
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.Account;

        /**
         * Verifies an Account message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an Account message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Account
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.Account;

        /**
         * Creates a plain object from an Account message. Also converts values to other types if specified.
         * @param message Account
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.Account,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Account to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Account
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AddressProperty. */
    interface IAddressProperty {
        /** AddressProperty address */
        address?: string | null;

        /** AddressProperty is_internal */
        is_internal?: boolean | null;

        /** AddressProperty balance */
        balance?: Long | null;

        /** AddressProperty derivation_path */
        derivation_path?: string | null;

        /** AddressProperty public_key */
        public_key?: Uint8Array | null;
    }

    /** Represents an AddressProperty. */
    class AddressProperty implements IAddressProperty {
        /**
         * Constructs a new AddressProperty.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IAddressProperty);

        /** AddressProperty address. */
        public address: string;

        /** AddressProperty is_internal. */
        public is_internal: boolean;

        /** AddressProperty balance. */
        public balance: Long;

        /** AddressProperty derivation_path. */
        public derivation_path: string;

        /** AddressProperty public_key. */
        public public_key: Uint8Array;

        /**
         * Creates a new AddressProperty instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AddressProperty instance
         */
        public static create(
            properties?: walletrpc.IAddressProperty
        ): walletrpc.AddressProperty;

        /**
         * Encodes the specified AddressProperty message. Does not implicitly {@link walletrpc.AddressProperty.verify|verify} messages.
         * @param message AddressProperty message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IAddressProperty,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AddressProperty message, length delimited. Does not implicitly {@link walletrpc.AddressProperty.verify|verify} messages.
         * @param message AddressProperty message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IAddressProperty,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AddressProperty message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AddressProperty
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.AddressProperty;

        /**
         * Decodes an AddressProperty message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AddressProperty
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.AddressProperty;

        /**
         * Verifies an AddressProperty message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AddressProperty message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AddressProperty
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.AddressProperty;

        /**
         * Creates a plain object from an AddressProperty message. Also converts values to other types if specified.
         * @param message AddressProperty
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.AddressProperty,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AddressProperty to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AddressProperty
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AccountWithAddresses. */
    interface IAccountWithAddresses {
        /** AccountWithAddresses name */
        name?: string | null;

        /** AccountWithAddresses address_type */
        address_type?: walletrpc.AddressType | null;

        /** AccountWithAddresses derivation_path */
        derivation_path?: string | null;

        /** AccountWithAddresses addresses */
        addresses?: walletrpc.IAddressProperty[] | null;
    }

    /** Represents an AccountWithAddresses. */
    class AccountWithAddresses implements IAccountWithAddresses {
        /**
         * Constructs a new AccountWithAddresses.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IAccountWithAddresses);

        /** AccountWithAddresses name. */
        public name: string;

        /** AccountWithAddresses address_type. */
        public address_type: walletrpc.AddressType;

        /** AccountWithAddresses derivation_path. */
        public derivation_path: string;

        /** AccountWithAddresses addresses. */
        public addresses: walletrpc.IAddressProperty[];

        /**
         * Creates a new AccountWithAddresses instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AccountWithAddresses instance
         */
        public static create(
            properties?: walletrpc.IAccountWithAddresses
        ): walletrpc.AccountWithAddresses;

        /**
         * Encodes the specified AccountWithAddresses message. Does not implicitly {@link walletrpc.AccountWithAddresses.verify|verify} messages.
         * @param message AccountWithAddresses message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IAccountWithAddresses,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AccountWithAddresses message, length delimited. Does not implicitly {@link walletrpc.AccountWithAddresses.verify|verify} messages.
         * @param message AccountWithAddresses message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IAccountWithAddresses,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AccountWithAddresses message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AccountWithAddresses
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.AccountWithAddresses;

        /**
         * Decodes an AccountWithAddresses message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AccountWithAddresses
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.AccountWithAddresses;

        /**
         * Verifies an AccountWithAddresses message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AccountWithAddresses message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AccountWithAddresses
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.AccountWithAddresses;

        /**
         * Creates a plain object from an AccountWithAddresses message. Also converts values to other types if specified.
         * @param message AccountWithAddresses
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.AccountWithAddresses,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AccountWithAddresses to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AccountWithAddresses
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListAccountsRequest. */
    interface IListAccountsRequest {
        /** ListAccountsRequest name */
        name?: string | null;

        /** ListAccountsRequest address_type */
        address_type?: walletrpc.AddressType | null;
    }

    /** Represents a ListAccountsRequest. */
    class ListAccountsRequest implements IListAccountsRequest {
        /**
         * Constructs a new ListAccountsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IListAccountsRequest);

        /** ListAccountsRequest name. */
        public name: string;

        /** ListAccountsRequest address_type. */
        public address_type: walletrpc.AddressType;

        /**
         * Creates a new ListAccountsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListAccountsRequest instance
         */
        public static create(
            properties?: walletrpc.IListAccountsRequest
        ): walletrpc.ListAccountsRequest;

        /**
         * Encodes the specified ListAccountsRequest message. Does not implicitly {@link walletrpc.ListAccountsRequest.verify|verify} messages.
         * @param message ListAccountsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IListAccountsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListAccountsRequest message, length delimited. Does not implicitly {@link walletrpc.ListAccountsRequest.verify|verify} messages.
         * @param message ListAccountsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IListAccountsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListAccountsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListAccountsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ListAccountsRequest;

        /**
         * Decodes a ListAccountsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListAccountsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ListAccountsRequest;

        /**
         * Verifies a ListAccountsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListAccountsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListAccountsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ListAccountsRequest;

        /**
         * Creates a plain object from a ListAccountsRequest message. Also converts values to other types if specified.
         * @param message ListAccountsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ListAccountsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListAccountsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListAccountsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListAccountsResponse. */
    interface IListAccountsResponse {
        /** ListAccountsResponse accounts */
        accounts?: walletrpc.IAccount[] | null;
    }

    /** Represents a ListAccountsResponse. */
    class ListAccountsResponse implements IListAccountsResponse {
        /**
         * Constructs a new ListAccountsResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IListAccountsResponse);

        /** ListAccountsResponse accounts. */
        public accounts: walletrpc.IAccount[];

        /**
         * Creates a new ListAccountsResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListAccountsResponse instance
         */
        public static create(
            properties?: walletrpc.IListAccountsResponse
        ): walletrpc.ListAccountsResponse;

        /**
         * Encodes the specified ListAccountsResponse message. Does not implicitly {@link walletrpc.ListAccountsResponse.verify|verify} messages.
         * @param message ListAccountsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IListAccountsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListAccountsResponse message, length delimited. Does not implicitly {@link walletrpc.ListAccountsResponse.verify|verify} messages.
         * @param message ListAccountsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IListAccountsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListAccountsResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListAccountsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ListAccountsResponse;

        /**
         * Decodes a ListAccountsResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListAccountsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ListAccountsResponse;

        /**
         * Verifies a ListAccountsResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListAccountsResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListAccountsResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ListAccountsResponse;

        /**
         * Creates a plain object from a ListAccountsResponse message. Also converts values to other types if specified.
         * @param message ListAccountsResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ListAccountsResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListAccountsResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListAccountsResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a RequiredReserveRequest. */
    interface IRequiredReserveRequest {
        /** RequiredReserveRequest additional_public_channels */
        additional_public_channels?: number | null;
    }

    /** Represents a RequiredReserveRequest. */
    class RequiredReserveRequest implements IRequiredReserveRequest {
        /**
         * Constructs a new RequiredReserveRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IRequiredReserveRequest);

        /** RequiredReserveRequest additional_public_channels. */
        public additional_public_channels: number;

        /**
         * Creates a new RequiredReserveRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns RequiredReserveRequest instance
         */
        public static create(
            properties?: walletrpc.IRequiredReserveRequest
        ): walletrpc.RequiredReserveRequest;

        /**
         * Encodes the specified RequiredReserveRequest message. Does not implicitly {@link walletrpc.RequiredReserveRequest.verify|verify} messages.
         * @param message RequiredReserveRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IRequiredReserveRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified RequiredReserveRequest message, length delimited. Does not implicitly {@link walletrpc.RequiredReserveRequest.verify|verify} messages.
         * @param message RequiredReserveRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IRequiredReserveRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a RequiredReserveRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns RequiredReserveRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.RequiredReserveRequest;

        /**
         * Decodes a RequiredReserveRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns RequiredReserveRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.RequiredReserveRequest;

        /**
         * Verifies a RequiredReserveRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a RequiredReserveRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns RequiredReserveRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.RequiredReserveRequest;

        /**
         * Creates a plain object from a RequiredReserveRequest message. Also converts values to other types if specified.
         * @param message RequiredReserveRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.RequiredReserveRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this RequiredReserveRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for RequiredReserveRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a RequiredReserveResponse. */
    interface IRequiredReserveResponse {
        /** RequiredReserveResponse required_reserve */
        required_reserve?: Long | null;
    }

    /** Represents a RequiredReserveResponse. */
    class RequiredReserveResponse implements IRequiredReserveResponse {
        /**
         * Constructs a new RequiredReserveResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IRequiredReserveResponse);

        /** RequiredReserveResponse required_reserve. */
        public required_reserve: Long;

        /**
         * Creates a new RequiredReserveResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns RequiredReserveResponse instance
         */
        public static create(
            properties?: walletrpc.IRequiredReserveResponse
        ): walletrpc.RequiredReserveResponse;

        /**
         * Encodes the specified RequiredReserveResponse message. Does not implicitly {@link walletrpc.RequiredReserveResponse.verify|verify} messages.
         * @param message RequiredReserveResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IRequiredReserveResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified RequiredReserveResponse message, length delimited. Does not implicitly {@link walletrpc.RequiredReserveResponse.verify|verify} messages.
         * @param message RequiredReserveResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IRequiredReserveResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a RequiredReserveResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns RequiredReserveResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.RequiredReserveResponse;

        /**
         * Decodes a RequiredReserveResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns RequiredReserveResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.RequiredReserveResponse;

        /**
         * Verifies a RequiredReserveResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a RequiredReserveResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns RequiredReserveResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.RequiredReserveResponse;

        /**
         * Creates a plain object from a RequiredReserveResponse message. Also converts values to other types if specified.
         * @param message RequiredReserveResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.RequiredReserveResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this RequiredReserveResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for RequiredReserveResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListAddressesRequest. */
    interface IListAddressesRequest {
        /** ListAddressesRequest account_name */
        account_name?: string | null;

        /** ListAddressesRequest show_custom_accounts */
        show_custom_accounts?: boolean | null;
    }

    /** Represents a ListAddressesRequest. */
    class ListAddressesRequest implements IListAddressesRequest {
        /**
         * Constructs a new ListAddressesRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IListAddressesRequest);

        /** ListAddressesRequest account_name. */
        public account_name: string;

        /** ListAddressesRequest show_custom_accounts. */
        public show_custom_accounts: boolean;

        /**
         * Creates a new ListAddressesRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListAddressesRequest instance
         */
        public static create(
            properties?: walletrpc.IListAddressesRequest
        ): walletrpc.ListAddressesRequest;

        /**
         * Encodes the specified ListAddressesRequest message. Does not implicitly {@link walletrpc.ListAddressesRequest.verify|verify} messages.
         * @param message ListAddressesRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IListAddressesRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListAddressesRequest message, length delimited. Does not implicitly {@link walletrpc.ListAddressesRequest.verify|verify} messages.
         * @param message ListAddressesRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IListAddressesRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListAddressesRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListAddressesRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ListAddressesRequest;

        /**
         * Decodes a ListAddressesRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListAddressesRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ListAddressesRequest;

        /**
         * Verifies a ListAddressesRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListAddressesRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListAddressesRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ListAddressesRequest;

        /**
         * Creates a plain object from a ListAddressesRequest message. Also converts values to other types if specified.
         * @param message ListAddressesRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ListAddressesRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListAddressesRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListAddressesRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListAddressesResponse. */
    interface IListAddressesResponse {
        /** ListAddressesResponse account_with_addresses */
        account_with_addresses?: walletrpc.IAccountWithAddresses[] | null;
    }

    /** Represents a ListAddressesResponse. */
    class ListAddressesResponse implements IListAddressesResponse {
        /**
         * Constructs a new ListAddressesResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IListAddressesResponse);

        /** ListAddressesResponse account_with_addresses. */
        public account_with_addresses: walletrpc.IAccountWithAddresses[];

        /**
         * Creates a new ListAddressesResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListAddressesResponse instance
         */
        public static create(
            properties?: walletrpc.IListAddressesResponse
        ): walletrpc.ListAddressesResponse;

        /**
         * Encodes the specified ListAddressesResponse message. Does not implicitly {@link walletrpc.ListAddressesResponse.verify|verify} messages.
         * @param message ListAddressesResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IListAddressesResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListAddressesResponse message, length delimited. Does not implicitly {@link walletrpc.ListAddressesResponse.verify|verify} messages.
         * @param message ListAddressesResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IListAddressesResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListAddressesResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListAddressesResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ListAddressesResponse;

        /**
         * Decodes a ListAddressesResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListAddressesResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ListAddressesResponse;

        /**
         * Verifies a ListAddressesResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListAddressesResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListAddressesResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ListAddressesResponse;

        /**
         * Creates a plain object from a ListAddressesResponse message. Also converts values to other types if specified.
         * @param message ListAddressesResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ListAddressesResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListAddressesResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListAddressesResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetTransactionRequest. */
    interface IGetTransactionRequest {
        /** GetTransactionRequest txid */
        txid?: string | null;
    }

    /** Represents a GetTransactionRequest. */
    class GetTransactionRequest implements IGetTransactionRequest {
        /**
         * Constructs a new GetTransactionRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IGetTransactionRequest);

        /** GetTransactionRequest txid. */
        public txid: string;

        /**
         * Creates a new GetTransactionRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetTransactionRequest instance
         */
        public static create(
            properties?: walletrpc.IGetTransactionRequest
        ): walletrpc.GetTransactionRequest;

        /**
         * Encodes the specified GetTransactionRequest message. Does not implicitly {@link walletrpc.GetTransactionRequest.verify|verify} messages.
         * @param message GetTransactionRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IGetTransactionRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetTransactionRequest message, length delimited. Does not implicitly {@link walletrpc.GetTransactionRequest.verify|verify} messages.
         * @param message GetTransactionRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IGetTransactionRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetTransactionRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetTransactionRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.GetTransactionRequest;

        /**
         * Decodes a GetTransactionRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetTransactionRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.GetTransactionRequest;

        /**
         * Verifies a GetTransactionRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetTransactionRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetTransactionRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.GetTransactionRequest;

        /**
         * Creates a plain object from a GetTransactionRequest message. Also converts values to other types if specified.
         * @param message GetTransactionRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.GetTransactionRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetTransactionRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetTransactionRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SignMessageWithAddrRequest. */
    interface ISignMessageWithAddrRequest {
        /** SignMessageWithAddrRequest msg */
        msg?: Uint8Array | null;

        /** SignMessageWithAddrRequest addr */
        addr?: string | null;
    }

    /** Represents a SignMessageWithAddrRequest. */
    class SignMessageWithAddrRequest implements ISignMessageWithAddrRequest {
        /**
         * Constructs a new SignMessageWithAddrRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.ISignMessageWithAddrRequest);

        /** SignMessageWithAddrRequest msg. */
        public msg: Uint8Array;

        /** SignMessageWithAddrRequest addr. */
        public addr: string;

        /**
         * Creates a new SignMessageWithAddrRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SignMessageWithAddrRequest instance
         */
        public static create(
            properties?: walletrpc.ISignMessageWithAddrRequest
        ): walletrpc.SignMessageWithAddrRequest;

        /**
         * Encodes the specified SignMessageWithAddrRequest message. Does not implicitly {@link walletrpc.SignMessageWithAddrRequest.verify|verify} messages.
         * @param message SignMessageWithAddrRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.ISignMessageWithAddrRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SignMessageWithAddrRequest message, length delimited. Does not implicitly {@link walletrpc.SignMessageWithAddrRequest.verify|verify} messages.
         * @param message SignMessageWithAddrRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.ISignMessageWithAddrRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SignMessageWithAddrRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SignMessageWithAddrRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.SignMessageWithAddrRequest;

        /**
         * Decodes a SignMessageWithAddrRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SignMessageWithAddrRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.SignMessageWithAddrRequest;

        /**
         * Verifies a SignMessageWithAddrRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SignMessageWithAddrRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SignMessageWithAddrRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.SignMessageWithAddrRequest;

        /**
         * Creates a plain object from a SignMessageWithAddrRequest message. Also converts values to other types if specified.
         * @param message SignMessageWithAddrRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.SignMessageWithAddrRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SignMessageWithAddrRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SignMessageWithAddrRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SignMessageWithAddrResponse. */
    interface ISignMessageWithAddrResponse {
        /** SignMessageWithAddrResponse signature */
        signature?: string | null;
    }

    /** Represents a SignMessageWithAddrResponse. */
    class SignMessageWithAddrResponse implements ISignMessageWithAddrResponse {
        /**
         * Constructs a new SignMessageWithAddrResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.ISignMessageWithAddrResponse);

        /** SignMessageWithAddrResponse signature. */
        public signature: string;

        /**
         * Creates a new SignMessageWithAddrResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SignMessageWithAddrResponse instance
         */
        public static create(
            properties?: walletrpc.ISignMessageWithAddrResponse
        ): walletrpc.SignMessageWithAddrResponse;

        /**
         * Encodes the specified SignMessageWithAddrResponse message. Does not implicitly {@link walletrpc.SignMessageWithAddrResponse.verify|verify} messages.
         * @param message SignMessageWithAddrResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.ISignMessageWithAddrResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SignMessageWithAddrResponse message, length delimited. Does not implicitly {@link walletrpc.SignMessageWithAddrResponse.verify|verify} messages.
         * @param message SignMessageWithAddrResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.ISignMessageWithAddrResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SignMessageWithAddrResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SignMessageWithAddrResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.SignMessageWithAddrResponse;

        /**
         * Decodes a SignMessageWithAddrResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SignMessageWithAddrResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.SignMessageWithAddrResponse;

        /**
         * Verifies a SignMessageWithAddrResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SignMessageWithAddrResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SignMessageWithAddrResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.SignMessageWithAddrResponse;

        /**
         * Creates a plain object from a SignMessageWithAddrResponse message. Also converts values to other types if specified.
         * @param message SignMessageWithAddrResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.SignMessageWithAddrResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SignMessageWithAddrResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SignMessageWithAddrResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a VerifyMessageWithAddrRequest. */
    interface IVerifyMessageWithAddrRequest {
        /** VerifyMessageWithAddrRequest msg */
        msg?: Uint8Array | null;

        /** VerifyMessageWithAddrRequest signature */
        signature?: string | null;

        /** VerifyMessageWithAddrRequest addr */
        addr?: string | null;
    }

    /** Represents a VerifyMessageWithAddrRequest. */
    class VerifyMessageWithAddrRequest
        implements IVerifyMessageWithAddrRequest
    {
        /**
         * Constructs a new VerifyMessageWithAddrRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IVerifyMessageWithAddrRequest);

        /** VerifyMessageWithAddrRequest msg. */
        public msg: Uint8Array;

        /** VerifyMessageWithAddrRequest signature. */
        public signature: string;

        /** VerifyMessageWithAddrRequest addr. */
        public addr: string;

        /**
         * Creates a new VerifyMessageWithAddrRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns VerifyMessageWithAddrRequest instance
         */
        public static create(
            properties?: walletrpc.IVerifyMessageWithAddrRequest
        ): walletrpc.VerifyMessageWithAddrRequest;

        /**
         * Encodes the specified VerifyMessageWithAddrRequest message. Does not implicitly {@link walletrpc.VerifyMessageWithAddrRequest.verify|verify} messages.
         * @param message VerifyMessageWithAddrRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IVerifyMessageWithAddrRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified VerifyMessageWithAddrRequest message, length delimited. Does not implicitly {@link walletrpc.VerifyMessageWithAddrRequest.verify|verify} messages.
         * @param message VerifyMessageWithAddrRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IVerifyMessageWithAddrRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a VerifyMessageWithAddrRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns VerifyMessageWithAddrRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.VerifyMessageWithAddrRequest;

        /**
         * Decodes a VerifyMessageWithAddrRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns VerifyMessageWithAddrRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.VerifyMessageWithAddrRequest;

        /**
         * Verifies a VerifyMessageWithAddrRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a VerifyMessageWithAddrRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns VerifyMessageWithAddrRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.VerifyMessageWithAddrRequest;

        /**
         * Creates a plain object from a VerifyMessageWithAddrRequest message. Also converts values to other types if specified.
         * @param message VerifyMessageWithAddrRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.VerifyMessageWithAddrRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this VerifyMessageWithAddrRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for VerifyMessageWithAddrRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a VerifyMessageWithAddrResponse. */
    interface IVerifyMessageWithAddrResponse {
        /** VerifyMessageWithAddrResponse valid */
        valid?: boolean | null;

        /** VerifyMessageWithAddrResponse pubkey */
        pubkey?: Uint8Array | null;
    }

    /** Represents a VerifyMessageWithAddrResponse. */
    class VerifyMessageWithAddrResponse
        implements IVerifyMessageWithAddrResponse
    {
        /**
         * Constructs a new VerifyMessageWithAddrResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IVerifyMessageWithAddrResponse);

        /** VerifyMessageWithAddrResponse valid. */
        public valid: boolean;

        /** VerifyMessageWithAddrResponse pubkey. */
        public pubkey: Uint8Array;

        /**
         * Creates a new VerifyMessageWithAddrResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns VerifyMessageWithAddrResponse instance
         */
        public static create(
            properties?: walletrpc.IVerifyMessageWithAddrResponse
        ): walletrpc.VerifyMessageWithAddrResponse;

        /**
         * Encodes the specified VerifyMessageWithAddrResponse message. Does not implicitly {@link walletrpc.VerifyMessageWithAddrResponse.verify|verify} messages.
         * @param message VerifyMessageWithAddrResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IVerifyMessageWithAddrResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified VerifyMessageWithAddrResponse message, length delimited. Does not implicitly {@link walletrpc.VerifyMessageWithAddrResponse.verify|verify} messages.
         * @param message VerifyMessageWithAddrResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IVerifyMessageWithAddrResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a VerifyMessageWithAddrResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns VerifyMessageWithAddrResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.VerifyMessageWithAddrResponse;

        /**
         * Decodes a VerifyMessageWithAddrResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns VerifyMessageWithAddrResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.VerifyMessageWithAddrResponse;

        /**
         * Verifies a VerifyMessageWithAddrResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a VerifyMessageWithAddrResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns VerifyMessageWithAddrResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.VerifyMessageWithAddrResponse;

        /**
         * Creates a plain object from a VerifyMessageWithAddrResponse message. Also converts values to other types if specified.
         * @param message VerifyMessageWithAddrResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.VerifyMessageWithAddrResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this VerifyMessageWithAddrResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for VerifyMessageWithAddrResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an ImportAccountRequest. */
    interface IImportAccountRequest {
        /** ImportAccountRequest name */
        name?: string | null;

        /** ImportAccountRequest extended_public_key */
        extended_public_key?: string | null;

        /** ImportAccountRequest master_key_fingerprint */
        master_key_fingerprint?: Uint8Array | null;

        /** ImportAccountRequest address_type */
        address_type?: walletrpc.AddressType | null;

        /** ImportAccountRequest dry_run */
        dry_run?: boolean | null;

        /** ImportAccountRequest birthday_height */
        birthday_height?: number | null;
    }

    /** Represents an ImportAccountRequest. */
    class ImportAccountRequest implements IImportAccountRequest {
        /**
         * Constructs a new ImportAccountRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IImportAccountRequest);

        /** ImportAccountRequest name. */
        public name: string;

        /** ImportAccountRequest extended_public_key. */
        public extended_public_key: string;

        /** ImportAccountRequest master_key_fingerprint. */
        public master_key_fingerprint: Uint8Array;

        /** ImportAccountRequest address_type. */
        public address_type: walletrpc.AddressType;

        /** ImportAccountRequest dry_run. */
        public dry_run: boolean;

        /** ImportAccountRequest birthday_height. */
        public birthday_height: number;

        /**
         * Creates a new ImportAccountRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ImportAccountRequest instance
         */
        public static create(
            properties?: walletrpc.IImportAccountRequest
        ): walletrpc.ImportAccountRequest;

        /**
         * Encodes the specified ImportAccountRequest message. Does not implicitly {@link walletrpc.ImportAccountRequest.verify|verify} messages.
         * @param message ImportAccountRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IImportAccountRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ImportAccountRequest message, length delimited. Does not implicitly {@link walletrpc.ImportAccountRequest.verify|verify} messages.
         * @param message ImportAccountRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IImportAccountRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an ImportAccountRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ImportAccountRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ImportAccountRequest;

        /**
         * Decodes an ImportAccountRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ImportAccountRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ImportAccountRequest;

        /**
         * Verifies an ImportAccountRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an ImportAccountRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ImportAccountRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ImportAccountRequest;

        /**
         * Creates a plain object from an ImportAccountRequest message. Also converts values to other types if specified.
         * @param message ImportAccountRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ImportAccountRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ImportAccountRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ImportAccountRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an ImportAccountResponse. */
    interface IImportAccountResponse {
        /** ImportAccountResponse account */
        account?: walletrpc.IAccount | null;

        /** ImportAccountResponse dry_run_external_addrs */
        dry_run_external_addrs?: string[] | null;

        /** ImportAccountResponse dry_run_internal_addrs */
        dry_run_internal_addrs?: string[] | null;
    }

    /** Represents an ImportAccountResponse. */
    class ImportAccountResponse implements IImportAccountResponse {
        /**
         * Constructs a new ImportAccountResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IImportAccountResponse);

        /** ImportAccountResponse account. */
        public account?: walletrpc.IAccount | null;

        /** ImportAccountResponse dry_run_external_addrs. */
        public dry_run_external_addrs: string[];

        /** ImportAccountResponse dry_run_internal_addrs. */
        public dry_run_internal_addrs: string[];

        /**
         * Creates a new ImportAccountResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ImportAccountResponse instance
         */
        public static create(
            properties?: walletrpc.IImportAccountResponse
        ): walletrpc.ImportAccountResponse;

        /**
         * Encodes the specified ImportAccountResponse message. Does not implicitly {@link walletrpc.ImportAccountResponse.verify|verify} messages.
         * @param message ImportAccountResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IImportAccountResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ImportAccountResponse message, length delimited. Does not implicitly {@link walletrpc.ImportAccountResponse.verify|verify} messages.
         * @param message ImportAccountResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IImportAccountResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an ImportAccountResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ImportAccountResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ImportAccountResponse;

        /**
         * Decodes an ImportAccountResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ImportAccountResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ImportAccountResponse;

        /**
         * Verifies an ImportAccountResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an ImportAccountResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ImportAccountResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ImportAccountResponse;

        /**
         * Creates a plain object from an ImportAccountResponse message. Also converts values to other types if specified.
         * @param message ImportAccountResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ImportAccountResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ImportAccountResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ImportAccountResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a RescanRequest. */
    interface IRescanRequest {
        /** RescanRequest start_height */
        start_height?: number | null;
    }

    /** Represents a RescanRequest. */
    class RescanRequest implements IRescanRequest {
        /**
         * Constructs a new RescanRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IRescanRequest);

        /** RescanRequest start_height. */
        public start_height: number;

        /**
         * Creates a new RescanRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns RescanRequest instance
         */
        public static create(
            properties?: walletrpc.IRescanRequest
        ): walletrpc.RescanRequest;

        /**
         * Encodes the specified RescanRequest message. Does not implicitly {@link walletrpc.RescanRequest.verify|verify} messages.
         * @param message RescanRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IRescanRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified RescanRequest message, length delimited. Does not implicitly {@link walletrpc.RescanRequest.verify|verify} messages.
         * @param message RescanRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IRescanRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a RescanRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns RescanRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.RescanRequest;

        /**
         * Decodes a RescanRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns RescanRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.RescanRequest;

        /**
         * Verifies a RescanRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a RescanRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns RescanRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.RescanRequest;

        /**
         * Creates a plain object from a RescanRequest message. Also converts values to other types if specified.
         * @param message RescanRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.RescanRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this RescanRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for RescanRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a RescanResponse. */
    interface IRescanResponse {
        /** RescanResponse status */
        status?: string | null;
    }

    /** Represents a RescanResponse. */
    class RescanResponse implements IRescanResponse {
        /**
         * Constructs a new RescanResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IRescanResponse);

        /** RescanResponse status. */
        public status: string;

        /**
         * Creates a new RescanResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns RescanResponse instance
         */
        public static create(
            properties?: walletrpc.IRescanResponse
        ): walletrpc.RescanResponse;

        /**
         * Encodes the specified RescanResponse message. Does not implicitly {@link walletrpc.RescanResponse.verify|verify} messages.
         * @param message RescanResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IRescanResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified RescanResponse message, length delimited. Does not implicitly {@link walletrpc.RescanResponse.verify|verify} messages.
         * @param message RescanResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IRescanResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a RescanResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns RescanResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.RescanResponse;

        /**
         * Decodes a RescanResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns RescanResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.RescanResponse;

        /**
         * Verifies a RescanResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a RescanResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns RescanResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.RescanResponse;

        /**
         * Creates a plain object from a RescanResponse message. Also converts values to other types if specified.
         * @param message RescanResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.RescanResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this RescanResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for RescanResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an ImportPublicKeyRequest. */
    interface IImportPublicKeyRequest {
        /** ImportPublicKeyRequest public_key */
        public_key?: Uint8Array | null;

        /** ImportPublicKeyRequest address_type */
        address_type?: walletrpc.AddressType | null;

        /** ImportPublicKeyRequest rescan */
        rescan?: boolean | null;

        /** ImportPublicKeyRequest birthday_height */
        birthday_height?: number | null;
    }

    /** Represents an ImportPublicKeyRequest. */
    class ImportPublicKeyRequest implements IImportPublicKeyRequest {
        /**
         * Constructs a new ImportPublicKeyRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IImportPublicKeyRequest);

        /** ImportPublicKeyRequest public_key. */
        public public_key: Uint8Array;

        /** ImportPublicKeyRequest address_type. */
        public address_type: walletrpc.AddressType;

        /** ImportPublicKeyRequest rescan. */
        public rescan: boolean;

        /** ImportPublicKeyRequest birthday_height. */
        public birthday_height: number;

        /**
         * Creates a new ImportPublicKeyRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ImportPublicKeyRequest instance
         */
        public static create(
            properties?: walletrpc.IImportPublicKeyRequest
        ): walletrpc.ImportPublicKeyRequest;

        /**
         * Encodes the specified ImportPublicKeyRequest message. Does not implicitly {@link walletrpc.ImportPublicKeyRequest.verify|verify} messages.
         * @param message ImportPublicKeyRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IImportPublicKeyRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ImportPublicKeyRequest message, length delimited. Does not implicitly {@link walletrpc.ImportPublicKeyRequest.verify|verify} messages.
         * @param message ImportPublicKeyRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IImportPublicKeyRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an ImportPublicKeyRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ImportPublicKeyRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ImportPublicKeyRequest;

        /**
         * Decodes an ImportPublicKeyRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ImportPublicKeyRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ImportPublicKeyRequest;

        /**
         * Verifies an ImportPublicKeyRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an ImportPublicKeyRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ImportPublicKeyRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ImportPublicKeyRequest;

        /**
         * Creates a plain object from an ImportPublicKeyRequest message. Also converts values to other types if specified.
         * @param message ImportPublicKeyRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ImportPublicKeyRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ImportPublicKeyRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ImportPublicKeyRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an ImportPublicKeyResponse. */
    interface IImportPublicKeyResponse {}

    /** Represents an ImportPublicKeyResponse. */
    class ImportPublicKeyResponse implements IImportPublicKeyResponse {
        /**
         * Constructs a new ImportPublicKeyResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IImportPublicKeyResponse);

        /**
         * Creates a new ImportPublicKeyResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ImportPublicKeyResponse instance
         */
        public static create(
            properties?: walletrpc.IImportPublicKeyResponse
        ): walletrpc.ImportPublicKeyResponse;

        /**
         * Encodes the specified ImportPublicKeyResponse message. Does not implicitly {@link walletrpc.ImportPublicKeyResponse.verify|verify} messages.
         * @param message ImportPublicKeyResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IImportPublicKeyResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ImportPublicKeyResponse message, length delimited. Does not implicitly {@link walletrpc.ImportPublicKeyResponse.verify|verify} messages.
         * @param message ImportPublicKeyResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IImportPublicKeyResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an ImportPublicKeyResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ImportPublicKeyResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ImportPublicKeyResponse;

        /**
         * Decodes an ImportPublicKeyResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ImportPublicKeyResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ImportPublicKeyResponse;

        /**
         * Verifies an ImportPublicKeyResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an ImportPublicKeyResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ImportPublicKeyResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ImportPublicKeyResponse;

        /**
         * Creates a plain object from an ImportPublicKeyResponse message. Also converts values to other types if specified.
         * @param message ImportPublicKeyResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ImportPublicKeyResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ImportPublicKeyResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ImportPublicKeyResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an ImportTapscriptRequest. */
    interface IImportTapscriptRequest {
        /** ImportTapscriptRequest internal_public_key */
        internal_public_key?: Uint8Array | null;

        /** ImportTapscriptRequest full_tree */
        full_tree?: walletrpc.ITapscriptFullTree | null;

        /** ImportTapscriptRequest partial_reveal */
        partial_reveal?: walletrpc.ITapscriptPartialReveal | null;

        /** ImportTapscriptRequest root_hash_only */
        root_hash_only?: Uint8Array | null;

        /** ImportTapscriptRequest full_key_only */
        full_key_only?: boolean | null;
    }

    /** Represents an ImportTapscriptRequest. */
    class ImportTapscriptRequest implements IImportTapscriptRequest {
        /**
         * Constructs a new ImportTapscriptRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IImportTapscriptRequest);

        /** ImportTapscriptRequest internal_public_key. */
        public internal_public_key: Uint8Array;

        /** ImportTapscriptRequest full_tree. */
        public full_tree?: walletrpc.ITapscriptFullTree | null;

        /** ImportTapscriptRequest partial_reveal. */
        public partial_reveal?: walletrpc.ITapscriptPartialReveal | null;

        /** ImportTapscriptRequest root_hash_only. */
        public root_hash_only?: Uint8Array | null;

        /** ImportTapscriptRequest full_key_only. */
        public full_key_only?: boolean | null;

        /** ImportTapscriptRequest script. */
        public script?:
            | 'full_tree'
            | 'partial_reveal'
            | 'root_hash_only'
            | 'full_key_only';

        /**
         * Creates a new ImportTapscriptRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ImportTapscriptRequest instance
         */
        public static create(
            properties?: walletrpc.IImportTapscriptRequest
        ): walletrpc.ImportTapscriptRequest;

        /**
         * Encodes the specified ImportTapscriptRequest message. Does not implicitly {@link walletrpc.ImportTapscriptRequest.verify|verify} messages.
         * @param message ImportTapscriptRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IImportTapscriptRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ImportTapscriptRequest message, length delimited. Does not implicitly {@link walletrpc.ImportTapscriptRequest.verify|verify} messages.
         * @param message ImportTapscriptRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IImportTapscriptRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an ImportTapscriptRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ImportTapscriptRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ImportTapscriptRequest;

        /**
         * Decodes an ImportTapscriptRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ImportTapscriptRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ImportTapscriptRequest;

        /**
         * Verifies an ImportTapscriptRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an ImportTapscriptRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ImportTapscriptRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ImportTapscriptRequest;

        /**
         * Creates a plain object from an ImportTapscriptRequest message. Also converts values to other types if specified.
         * @param message ImportTapscriptRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ImportTapscriptRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ImportTapscriptRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ImportTapscriptRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a TapscriptFullTree. */
    interface ITapscriptFullTree {
        /** TapscriptFullTree all_leaves */
        all_leaves?: walletrpc.ITapLeaf[] | null;
    }

    /** Represents a TapscriptFullTree. */
    class TapscriptFullTree implements ITapscriptFullTree {
        /**
         * Constructs a new TapscriptFullTree.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.ITapscriptFullTree);

        /** TapscriptFullTree all_leaves. */
        public all_leaves: walletrpc.ITapLeaf[];

        /**
         * Creates a new TapscriptFullTree instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TapscriptFullTree instance
         */
        public static create(
            properties?: walletrpc.ITapscriptFullTree
        ): walletrpc.TapscriptFullTree;

        /**
         * Encodes the specified TapscriptFullTree message. Does not implicitly {@link walletrpc.TapscriptFullTree.verify|verify} messages.
         * @param message TapscriptFullTree message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.ITapscriptFullTree,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified TapscriptFullTree message, length delimited. Does not implicitly {@link walletrpc.TapscriptFullTree.verify|verify} messages.
         * @param message TapscriptFullTree message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.ITapscriptFullTree,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a TapscriptFullTree message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TapscriptFullTree
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.TapscriptFullTree;

        /**
         * Decodes a TapscriptFullTree message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TapscriptFullTree
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.TapscriptFullTree;

        /**
         * Verifies a TapscriptFullTree message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a TapscriptFullTree message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TapscriptFullTree
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.TapscriptFullTree;

        /**
         * Creates a plain object from a TapscriptFullTree message. Also converts values to other types if specified.
         * @param message TapscriptFullTree
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.TapscriptFullTree,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this TapscriptFullTree to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TapscriptFullTree
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a TapLeaf. */
    interface ITapLeaf {
        /** TapLeaf leaf_version */
        leaf_version?: number | null;

        /** TapLeaf script */
        script?: Uint8Array | null;
    }

    /** Represents a TapLeaf. */
    class TapLeaf implements ITapLeaf {
        /**
         * Constructs a new TapLeaf.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.ITapLeaf);

        /** TapLeaf leaf_version. */
        public leaf_version: number;

        /** TapLeaf script. */
        public script: Uint8Array;

        /**
         * Creates a new TapLeaf instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TapLeaf instance
         */
        public static create(
            properties?: walletrpc.ITapLeaf
        ): walletrpc.TapLeaf;

        /**
         * Encodes the specified TapLeaf message. Does not implicitly {@link walletrpc.TapLeaf.verify|verify} messages.
         * @param message TapLeaf message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.ITapLeaf,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified TapLeaf message, length delimited. Does not implicitly {@link walletrpc.TapLeaf.verify|verify} messages.
         * @param message TapLeaf message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.ITapLeaf,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a TapLeaf message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TapLeaf
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.TapLeaf;

        /**
         * Decodes a TapLeaf message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TapLeaf
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.TapLeaf;

        /**
         * Verifies a TapLeaf message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a TapLeaf message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TapLeaf
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.TapLeaf;

        /**
         * Creates a plain object from a TapLeaf message. Also converts values to other types if specified.
         * @param message TapLeaf
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.TapLeaf,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this TapLeaf to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TapLeaf
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a TapscriptPartialReveal. */
    interface ITapscriptPartialReveal {
        /** TapscriptPartialReveal revealed_leaf */
        revealed_leaf?: walletrpc.ITapLeaf | null;

        /** TapscriptPartialReveal full_inclusion_proof */
        full_inclusion_proof?: Uint8Array | null;
    }

    /** Represents a TapscriptPartialReveal. */
    class TapscriptPartialReveal implements ITapscriptPartialReveal {
        /**
         * Constructs a new TapscriptPartialReveal.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.ITapscriptPartialReveal);

        /** TapscriptPartialReveal revealed_leaf. */
        public revealed_leaf?: walletrpc.ITapLeaf | null;

        /** TapscriptPartialReveal full_inclusion_proof. */
        public full_inclusion_proof: Uint8Array;

        /**
         * Creates a new TapscriptPartialReveal instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TapscriptPartialReveal instance
         */
        public static create(
            properties?: walletrpc.ITapscriptPartialReveal
        ): walletrpc.TapscriptPartialReveal;

        /**
         * Encodes the specified TapscriptPartialReveal message. Does not implicitly {@link walletrpc.TapscriptPartialReveal.verify|verify} messages.
         * @param message TapscriptPartialReveal message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.ITapscriptPartialReveal,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified TapscriptPartialReveal message, length delimited. Does not implicitly {@link walletrpc.TapscriptPartialReveal.verify|verify} messages.
         * @param message TapscriptPartialReveal message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.ITapscriptPartialReveal,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a TapscriptPartialReveal message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TapscriptPartialReveal
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.TapscriptPartialReveal;

        /**
         * Decodes a TapscriptPartialReveal message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TapscriptPartialReveal
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.TapscriptPartialReveal;

        /**
         * Verifies a TapscriptPartialReveal message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a TapscriptPartialReveal message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TapscriptPartialReveal
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.TapscriptPartialReveal;

        /**
         * Creates a plain object from a TapscriptPartialReveal message. Also converts values to other types if specified.
         * @param message TapscriptPartialReveal
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.TapscriptPartialReveal,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this TapscriptPartialReveal to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TapscriptPartialReveal
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an ImportTapscriptResponse. */
    interface IImportTapscriptResponse {
        /** ImportTapscriptResponse p2tr_address */
        p2tr_address?: string | null;
    }

    /** Represents an ImportTapscriptResponse. */
    class ImportTapscriptResponse implements IImportTapscriptResponse {
        /**
         * Constructs a new ImportTapscriptResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IImportTapscriptResponse);

        /** ImportTapscriptResponse p2tr_address. */
        public p2tr_address: string;

        /**
         * Creates a new ImportTapscriptResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ImportTapscriptResponse instance
         */
        public static create(
            properties?: walletrpc.IImportTapscriptResponse
        ): walletrpc.ImportTapscriptResponse;

        /**
         * Encodes the specified ImportTapscriptResponse message. Does not implicitly {@link walletrpc.ImportTapscriptResponse.verify|verify} messages.
         * @param message ImportTapscriptResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IImportTapscriptResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ImportTapscriptResponse message, length delimited. Does not implicitly {@link walletrpc.ImportTapscriptResponse.verify|verify} messages.
         * @param message ImportTapscriptResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IImportTapscriptResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an ImportTapscriptResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ImportTapscriptResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ImportTapscriptResponse;

        /**
         * Decodes an ImportTapscriptResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ImportTapscriptResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ImportTapscriptResponse;

        /**
         * Verifies an ImportTapscriptResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an ImportTapscriptResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ImportTapscriptResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ImportTapscriptResponse;

        /**
         * Creates a plain object from an ImportTapscriptResponse message. Also converts values to other types if specified.
         * @param message ImportTapscriptResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ImportTapscriptResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ImportTapscriptResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ImportTapscriptResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a Transaction. */
    interface ITransaction {
        /** Transaction tx_hex */
        tx_hex?: Uint8Array | null;

        /** Transaction label */
        label?: string | null;
    }

    /** Represents a Transaction. */
    class Transaction implements ITransaction {
        /**
         * Constructs a new Transaction.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.ITransaction);

        /** Transaction tx_hex. */
        public tx_hex: Uint8Array;

        /** Transaction label. */
        public label: string;

        /**
         * Creates a new Transaction instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Transaction instance
         */
        public static create(
            properties?: walletrpc.ITransaction
        ): walletrpc.Transaction;

        /**
         * Encodes the specified Transaction message. Does not implicitly {@link walletrpc.Transaction.verify|verify} messages.
         * @param message Transaction message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.ITransaction,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Transaction message, length delimited. Does not implicitly {@link walletrpc.Transaction.verify|verify} messages.
         * @param message Transaction message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.ITransaction,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a Transaction message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Transaction
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.Transaction;

        /**
         * Decodes a Transaction message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Transaction
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.Transaction;

        /**
         * Verifies a Transaction message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a Transaction message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Transaction
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.Transaction;

        /**
         * Creates a plain object from a Transaction message. Also converts values to other types if specified.
         * @param message Transaction
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.Transaction,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Transaction to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Transaction
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PublishResponse. */
    interface IPublishResponse {
        /** PublishResponse publish_error */
        publish_error?: string | null;
    }

    /** Represents a PublishResponse. */
    class PublishResponse implements IPublishResponse {
        /**
         * Constructs a new PublishResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IPublishResponse);

        /** PublishResponse publish_error. */
        public publish_error: string;

        /**
         * Creates a new PublishResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PublishResponse instance
         */
        public static create(
            properties?: walletrpc.IPublishResponse
        ): walletrpc.PublishResponse;

        /**
         * Encodes the specified PublishResponse message. Does not implicitly {@link walletrpc.PublishResponse.verify|verify} messages.
         * @param message PublishResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IPublishResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PublishResponse message, length delimited. Does not implicitly {@link walletrpc.PublishResponse.verify|verify} messages.
         * @param message PublishResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IPublishResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PublishResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PublishResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.PublishResponse;

        /**
         * Decodes a PublishResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PublishResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.PublishResponse;

        /**
         * Verifies a PublishResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PublishResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PublishResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.PublishResponse;

        /**
         * Creates a plain object from a PublishResponse message. Also converts values to other types if specified.
         * @param message PublishResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.PublishResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PublishResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PublishResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a RemoveTransactionResponse. */
    interface IRemoveTransactionResponse {
        /** RemoveTransactionResponse status */
        status?: string | null;
    }

    /** Represents a RemoveTransactionResponse. */
    class RemoveTransactionResponse implements IRemoveTransactionResponse {
        /**
         * Constructs a new RemoveTransactionResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IRemoveTransactionResponse);

        /** RemoveTransactionResponse status. */
        public status: string;

        /**
         * Creates a new RemoveTransactionResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns RemoveTransactionResponse instance
         */
        public static create(
            properties?: walletrpc.IRemoveTransactionResponse
        ): walletrpc.RemoveTransactionResponse;

        /**
         * Encodes the specified RemoveTransactionResponse message. Does not implicitly {@link walletrpc.RemoveTransactionResponse.verify|verify} messages.
         * @param message RemoveTransactionResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IRemoveTransactionResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified RemoveTransactionResponse message, length delimited. Does not implicitly {@link walletrpc.RemoveTransactionResponse.verify|verify} messages.
         * @param message RemoveTransactionResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IRemoveTransactionResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a RemoveTransactionResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns RemoveTransactionResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.RemoveTransactionResponse;

        /**
         * Decodes a RemoveTransactionResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns RemoveTransactionResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.RemoveTransactionResponse;

        /**
         * Verifies a RemoveTransactionResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a RemoveTransactionResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns RemoveTransactionResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.RemoveTransactionResponse;

        /**
         * Creates a plain object from a RemoveTransactionResponse message. Also converts values to other types if specified.
         * @param message RemoveTransactionResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.RemoveTransactionResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this RemoveTransactionResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for RemoveTransactionResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SendOutputsRequest. */
    interface ISendOutputsRequest {
        /** SendOutputsRequest sat_per_kw */
        sat_per_kw?: Long | null;

        /** SendOutputsRequest outputs */
        outputs?: signrpc.ITxOut[] | null;

        /** SendOutputsRequest label */
        label?: string | null;

        /** SendOutputsRequest min_confs */
        min_confs?: number | null;

        /** SendOutputsRequest spend_unconfirmed */
        spend_unconfirmed?: boolean | null;

        /** SendOutputsRequest coin_selection_strategy */
        coin_selection_strategy?: lnrpc.CoinSelectionStrategy | null;
    }

    /** Represents a SendOutputsRequest. */
    class SendOutputsRequest implements ISendOutputsRequest {
        /**
         * Constructs a new SendOutputsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.ISendOutputsRequest);

        /** SendOutputsRequest sat_per_kw. */
        public sat_per_kw: Long;

        /** SendOutputsRequest outputs. */
        public outputs: signrpc.ITxOut[];

        /** SendOutputsRequest label. */
        public label: string;

        /** SendOutputsRequest min_confs. */
        public min_confs: number;

        /** SendOutputsRequest spend_unconfirmed. */
        public spend_unconfirmed: boolean;

        /** SendOutputsRequest coin_selection_strategy. */
        public coin_selection_strategy: lnrpc.CoinSelectionStrategy;

        /**
         * Creates a new SendOutputsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SendOutputsRequest instance
         */
        public static create(
            properties?: walletrpc.ISendOutputsRequest
        ): walletrpc.SendOutputsRequest;

        /**
         * Encodes the specified SendOutputsRequest message. Does not implicitly {@link walletrpc.SendOutputsRequest.verify|verify} messages.
         * @param message SendOutputsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.ISendOutputsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SendOutputsRequest message, length delimited. Does not implicitly {@link walletrpc.SendOutputsRequest.verify|verify} messages.
         * @param message SendOutputsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.ISendOutputsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SendOutputsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SendOutputsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.SendOutputsRequest;

        /**
         * Decodes a SendOutputsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SendOutputsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.SendOutputsRequest;

        /**
         * Verifies a SendOutputsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SendOutputsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SendOutputsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.SendOutputsRequest;

        /**
         * Creates a plain object from a SendOutputsRequest message. Also converts values to other types if specified.
         * @param message SendOutputsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.SendOutputsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SendOutputsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SendOutputsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SendOutputsResponse. */
    interface ISendOutputsResponse {
        /** SendOutputsResponse raw_tx */
        raw_tx?: Uint8Array | null;
    }

    /** Represents a SendOutputsResponse. */
    class SendOutputsResponse implements ISendOutputsResponse {
        /**
         * Constructs a new SendOutputsResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.ISendOutputsResponse);

        /** SendOutputsResponse raw_tx. */
        public raw_tx: Uint8Array;

        /**
         * Creates a new SendOutputsResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SendOutputsResponse instance
         */
        public static create(
            properties?: walletrpc.ISendOutputsResponse
        ): walletrpc.SendOutputsResponse;

        /**
         * Encodes the specified SendOutputsResponse message. Does not implicitly {@link walletrpc.SendOutputsResponse.verify|verify} messages.
         * @param message SendOutputsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.ISendOutputsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SendOutputsResponse message, length delimited. Does not implicitly {@link walletrpc.SendOutputsResponse.verify|verify} messages.
         * @param message SendOutputsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.ISendOutputsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SendOutputsResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SendOutputsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.SendOutputsResponse;

        /**
         * Decodes a SendOutputsResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SendOutputsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.SendOutputsResponse;

        /**
         * Verifies a SendOutputsResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SendOutputsResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SendOutputsResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.SendOutputsResponse;

        /**
         * Creates a plain object from a SendOutputsResponse message. Also converts values to other types if specified.
         * @param message SendOutputsResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.SendOutputsResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SendOutputsResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SendOutputsResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an EstimateFeeRequest. */
    interface IEstimateFeeRequest {
        /** EstimateFeeRequest conf_target */
        conf_target?: number | null;
    }

    /** Represents an EstimateFeeRequest. */
    class EstimateFeeRequest implements IEstimateFeeRequest {
        /**
         * Constructs a new EstimateFeeRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IEstimateFeeRequest);

        /** EstimateFeeRequest conf_target. */
        public conf_target: number;

        /**
         * Creates a new EstimateFeeRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns EstimateFeeRequest instance
         */
        public static create(
            properties?: walletrpc.IEstimateFeeRequest
        ): walletrpc.EstimateFeeRequest;

        /**
         * Encodes the specified EstimateFeeRequest message. Does not implicitly {@link walletrpc.EstimateFeeRequest.verify|verify} messages.
         * @param message EstimateFeeRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IEstimateFeeRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified EstimateFeeRequest message, length delimited. Does not implicitly {@link walletrpc.EstimateFeeRequest.verify|verify} messages.
         * @param message EstimateFeeRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IEstimateFeeRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an EstimateFeeRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns EstimateFeeRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.EstimateFeeRequest;

        /**
         * Decodes an EstimateFeeRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns EstimateFeeRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.EstimateFeeRequest;

        /**
         * Verifies an EstimateFeeRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an EstimateFeeRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns EstimateFeeRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.EstimateFeeRequest;

        /**
         * Creates a plain object from an EstimateFeeRequest message. Also converts values to other types if specified.
         * @param message EstimateFeeRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.EstimateFeeRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this EstimateFeeRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for EstimateFeeRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an EstimateFeeResponse. */
    interface IEstimateFeeResponse {
        /** EstimateFeeResponse sat_per_kw */
        sat_per_kw?: Long | null;

        /** EstimateFeeResponse min_relay_fee_sat_per_kw */
        min_relay_fee_sat_per_kw?: Long | null;
    }

    /** Represents an EstimateFeeResponse. */
    class EstimateFeeResponse implements IEstimateFeeResponse {
        /**
         * Constructs a new EstimateFeeResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IEstimateFeeResponse);

        /** EstimateFeeResponse sat_per_kw. */
        public sat_per_kw: Long;

        /** EstimateFeeResponse min_relay_fee_sat_per_kw. */
        public min_relay_fee_sat_per_kw: Long;

        /**
         * Creates a new EstimateFeeResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns EstimateFeeResponse instance
         */
        public static create(
            properties?: walletrpc.IEstimateFeeResponse
        ): walletrpc.EstimateFeeResponse;

        /**
         * Encodes the specified EstimateFeeResponse message. Does not implicitly {@link walletrpc.EstimateFeeResponse.verify|verify} messages.
         * @param message EstimateFeeResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IEstimateFeeResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified EstimateFeeResponse message, length delimited. Does not implicitly {@link walletrpc.EstimateFeeResponse.verify|verify} messages.
         * @param message EstimateFeeResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IEstimateFeeResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an EstimateFeeResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns EstimateFeeResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.EstimateFeeResponse;

        /**
         * Decodes an EstimateFeeResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns EstimateFeeResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.EstimateFeeResponse;

        /**
         * Verifies an EstimateFeeResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an EstimateFeeResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns EstimateFeeResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.EstimateFeeResponse;

        /**
         * Creates a plain object from an EstimateFeeResponse message. Also converts values to other types if specified.
         * @param message EstimateFeeResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.EstimateFeeResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this EstimateFeeResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for EstimateFeeResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** WitnessType enum. */
    enum 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,
        COMMITMENT_NO_DELAY_TWEAKLESS = 14,
        COMMITMENT_TO_REMOTE_CONFIRMED = 15,
        HTLC_OFFERED_TIMEOUT_SECOND_LEVEL_INPUT_CONFIRMED = 16,
        HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL_INPUT_CONFIRMED = 17,
        LEASE_COMMITMENT_TIME_LOCK = 18,
        LEASE_COMMITMENT_TO_REMOTE_CONFIRMED = 19,
        LEASE_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL = 20,
        LEASE_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL = 21,
        TAPROOT_PUB_KEY_SPEND = 22,
        TAPROOT_LOCAL_COMMIT_SPEND = 23,
        TAPROOT_REMOTE_COMMIT_SPEND = 24,
        TAPROOT_ANCHOR_SWEEP_SPEND = 25,
        TAPROOT_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL = 26,
        TAPROOT_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL = 27,
        TAPROOT_HTLC_SECOND_LEVEL_REVOKE = 28,
        TAPROOT_HTLC_ACCEPTED_REVOKE = 29,
        TAPROOT_HTLC_OFFERED_REVOKE = 30,
        TAPROOT_HTLC_OFFERED_REMOTE_TIMEOUT = 31,
        TAPROOT_HTLC_LOCAL_OFFERED_TIMEOUT = 32,
        TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS = 33,
        TAPROOT_HTLC_ACCEPTED_LOCAL_SUCCESS = 34,
        TAPROOT_COMMITMENT_REVOKE = 35
    }

    /** Properties of a PendingSweep. */
    interface IPendingSweep {
        /** PendingSweep outpoint */
        outpoint?: lnrpc.IOutPoint | null;

        /** PendingSweep witness_type */
        witness_type?: walletrpc.WitnessType | null;

        /** PendingSweep amount_sat */
        amount_sat?: number | null;

        /** PendingSweep sat_per_byte */
        sat_per_byte?: number | null;

        /** PendingSweep broadcast_attempts */
        broadcast_attempts?: number | null;

        /** PendingSweep next_broadcast_height */
        next_broadcast_height?: number | null;

        /** PendingSweep force */
        force?: boolean | null;

        /** PendingSweep requested_conf_target */
        requested_conf_target?: number | null;

        /** PendingSweep requested_sat_per_byte */
        requested_sat_per_byte?: number | null;

        /** PendingSweep sat_per_vbyte */
        sat_per_vbyte?: Long | null;

        /** PendingSweep requested_sat_per_vbyte */
        requested_sat_per_vbyte?: Long | null;

        /** PendingSweep immediate */
        immediate?: boolean | null;

        /** PendingSweep budget */
        budget?: Long | null;

        /** PendingSweep deadline_height */
        deadline_height?: number | null;
    }

    /** Represents a PendingSweep. */
    class PendingSweep implements IPendingSweep {
        /**
         * Constructs a new PendingSweep.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IPendingSweep);

        /** PendingSweep outpoint. */
        public outpoint?: lnrpc.IOutPoint | null;

        /** PendingSweep witness_type. */
        public witness_type: walletrpc.WitnessType;

        /** PendingSweep amount_sat. */
        public amount_sat: number;

        /** PendingSweep sat_per_byte. */
        public sat_per_byte: number;

        /** PendingSweep broadcast_attempts. */
        public broadcast_attempts: number;

        /** PendingSweep next_broadcast_height. */
        public next_broadcast_height: number;

        /** PendingSweep force. */
        public force: boolean;

        /** PendingSweep requested_conf_target. */
        public requested_conf_target: number;

        /** PendingSweep requested_sat_per_byte. */
        public requested_sat_per_byte: number;

        /** PendingSweep sat_per_vbyte. */
        public sat_per_vbyte: Long;

        /** PendingSweep requested_sat_per_vbyte. */
        public requested_sat_per_vbyte: Long;

        /** PendingSweep immediate. */
        public immediate: boolean;

        /** PendingSweep budget. */
        public budget: Long;

        /** PendingSweep deadline_height. */
        public deadline_height: number;

        /**
         * Creates a new PendingSweep instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PendingSweep instance
         */
        public static create(
            properties?: walletrpc.IPendingSweep
        ): walletrpc.PendingSweep;

        /**
         * Encodes the specified PendingSweep message. Does not implicitly {@link walletrpc.PendingSweep.verify|verify} messages.
         * @param message PendingSweep message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IPendingSweep,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PendingSweep message, length delimited. Does not implicitly {@link walletrpc.PendingSweep.verify|verify} messages.
         * @param message PendingSweep message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IPendingSweep,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PendingSweep message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PendingSweep
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.PendingSweep;

        /**
         * Decodes a PendingSweep message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PendingSweep
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.PendingSweep;

        /**
         * Verifies a PendingSweep message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PendingSweep message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PendingSweep
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.PendingSweep;

        /**
         * Creates a plain object from a PendingSweep message. Also converts values to other types if specified.
         * @param message PendingSweep
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.PendingSweep,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PendingSweep to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PendingSweep
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PendingSweepsRequest. */
    interface IPendingSweepsRequest {}

    /** Represents a PendingSweepsRequest. */
    class PendingSweepsRequest implements IPendingSweepsRequest {
        /**
         * Constructs a new PendingSweepsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IPendingSweepsRequest);

        /**
         * Creates a new PendingSweepsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PendingSweepsRequest instance
         */
        public static create(
            properties?: walletrpc.IPendingSweepsRequest
        ): walletrpc.PendingSweepsRequest;

        /**
         * Encodes the specified PendingSweepsRequest message. Does not implicitly {@link walletrpc.PendingSweepsRequest.verify|verify} messages.
         * @param message PendingSweepsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IPendingSweepsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PendingSweepsRequest message, length delimited. Does not implicitly {@link walletrpc.PendingSweepsRequest.verify|verify} messages.
         * @param message PendingSweepsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IPendingSweepsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PendingSweepsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PendingSweepsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.PendingSweepsRequest;

        /**
         * Decodes a PendingSweepsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PendingSweepsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.PendingSweepsRequest;

        /**
         * Verifies a PendingSweepsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PendingSweepsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PendingSweepsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.PendingSweepsRequest;

        /**
         * Creates a plain object from a PendingSweepsRequest message. Also converts values to other types if specified.
         * @param message PendingSweepsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.PendingSweepsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PendingSweepsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PendingSweepsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PendingSweepsResponse. */
    interface IPendingSweepsResponse {
        /** PendingSweepsResponse pending_sweeps */
        pending_sweeps?: walletrpc.IPendingSweep[] | null;
    }

    /** Represents a PendingSweepsResponse. */
    class PendingSweepsResponse implements IPendingSweepsResponse {
        /**
         * Constructs a new PendingSweepsResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IPendingSweepsResponse);

        /** PendingSweepsResponse pending_sweeps. */
        public pending_sweeps: walletrpc.IPendingSweep[];

        /**
         * Creates a new PendingSweepsResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PendingSweepsResponse instance
         */
        public static create(
            properties?: walletrpc.IPendingSweepsResponse
        ): walletrpc.PendingSweepsResponse;

        /**
         * Encodes the specified PendingSweepsResponse message. Does not implicitly {@link walletrpc.PendingSweepsResponse.verify|verify} messages.
         * @param message PendingSweepsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IPendingSweepsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PendingSweepsResponse message, length delimited. Does not implicitly {@link walletrpc.PendingSweepsResponse.verify|verify} messages.
         * @param message PendingSweepsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IPendingSweepsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PendingSweepsResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PendingSweepsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.PendingSweepsResponse;

        /**
         * Decodes a PendingSweepsResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PendingSweepsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.PendingSweepsResponse;

        /**
         * Verifies a PendingSweepsResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PendingSweepsResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PendingSweepsResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.PendingSweepsResponse;

        /**
         * Creates a plain object from a PendingSweepsResponse message. Also converts values to other types if specified.
         * @param message PendingSweepsResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.PendingSweepsResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PendingSweepsResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PendingSweepsResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a BumpFeeRequest. */
    interface IBumpFeeRequest {
        /** BumpFeeRequest outpoint */
        outpoint?: lnrpc.IOutPoint | null;

        /** BumpFeeRequest target_conf */
        target_conf?: number | null;

        /** BumpFeeRequest sat_per_byte */
        sat_per_byte?: number | null;

        /** BumpFeeRequest force */
        force?: boolean | null;

        /** BumpFeeRequest sat_per_vbyte */
        sat_per_vbyte?: Long | null;

        /** BumpFeeRequest immediate */
        immediate?: boolean | null;

        /** BumpFeeRequest budget */
        budget?: Long | null;
    }

    /** Represents a BumpFeeRequest. */
    class BumpFeeRequest implements IBumpFeeRequest {
        /**
         * Constructs a new BumpFeeRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IBumpFeeRequest);

        /** BumpFeeRequest outpoint. */
        public outpoint?: lnrpc.IOutPoint | null;

        /** BumpFeeRequest target_conf. */
        public target_conf: number;

        /** BumpFeeRequest sat_per_byte. */
        public sat_per_byte: number;

        /** BumpFeeRequest force. */
        public force: boolean;

        /** BumpFeeRequest sat_per_vbyte. */
        public sat_per_vbyte: Long;

        /** BumpFeeRequest immediate. */
        public immediate: boolean;

        /** BumpFeeRequest budget. */
        public budget: Long;

        /**
         * Creates a new BumpFeeRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BumpFeeRequest instance
         */
        public static create(
            properties?: walletrpc.IBumpFeeRequest
        ): walletrpc.BumpFeeRequest;

        /**
         * Encodes the specified BumpFeeRequest message. Does not implicitly {@link walletrpc.BumpFeeRequest.verify|verify} messages.
         * @param message BumpFeeRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IBumpFeeRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BumpFeeRequest message, length delimited. Does not implicitly {@link walletrpc.BumpFeeRequest.verify|verify} messages.
         * @param message BumpFeeRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IBumpFeeRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BumpFeeRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BumpFeeRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.BumpFeeRequest;

        /**
         * Decodes a BumpFeeRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BumpFeeRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.BumpFeeRequest;

        /**
         * Verifies a BumpFeeRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BumpFeeRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BumpFeeRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.BumpFeeRequest;

        /**
         * Creates a plain object from a BumpFeeRequest message. Also converts values to other types if specified.
         * @param message BumpFeeRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.BumpFeeRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BumpFeeRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BumpFeeRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a BumpFeeResponse. */
    interface IBumpFeeResponse {
        /** BumpFeeResponse status */
        status?: string | null;
    }

    /** Represents a BumpFeeResponse. */
    class BumpFeeResponse implements IBumpFeeResponse {
        /**
         * Constructs a new BumpFeeResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IBumpFeeResponse);

        /** BumpFeeResponse status. */
        public status: string;

        /**
         * Creates a new BumpFeeResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BumpFeeResponse instance
         */
        public static create(
            properties?: walletrpc.IBumpFeeResponse
        ): walletrpc.BumpFeeResponse;

        /**
         * Encodes the specified BumpFeeResponse message. Does not implicitly {@link walletrpc.BumpFeeResponse.verify|verify} messages.
         * @param message BumpFeeResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IBumpFeeResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BumpFeeResponse message, length delimited. Does not implicitly {@link walletrpc.BumpFeeResponse.verify|verify} messages.
         * @param message BumpFeeResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IBumpFeeResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BumpFeeResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BumpFeeResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.BumpFeeResponse;

        /**
         * Decodes a BumpFeeResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BumpFeeResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.BumpFeeResponse;

        /**
         * Verifies a BumpFeeResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BumpFeeResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BumpFeeResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.BumpFeeResponse;

        /**
         * Creates a plain object from a BumpFeeResponse message. Also converts values to other types if specified.
         * @param message BumpFeeResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.BumpFeeResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BumpFeeResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BumpFeeResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a BumpForceCloseFeeRequest. */
    interface IBumpForceCloseFeeRequest {
        /** BumpForceCloseFeeRequest chan_point */
        chan_point?: lnrpc.IChannelPoint | null;

        /** BumpForceCloseFeeRequest deadline_delta */
        deadline_delta?: number | null;

        /** BumpForceCloseFeeRequest starting_feerate */
        starting_feerate?: Long | null;

        /** BumpForceCloseFeeRequest immediate */
        immediate?: boolean | null;

        /** BumpForceCloseFeeRequest budget */
        budget?: Long | null;
    }

    /** Represents a BumpForceCloseFeeRequest. */
    class BumpForceCloseFeeRequest implements IBumpForceCloseFeeRequest {
        /**
         * Constructs a new BumpForceCloseFeeRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IBumpForceCloseFeeRequest);

        /** BumpForceCloseFeeRequest chan_point. */
        public chan_point?: lnrpc.IChannelPoint | null;

        /** BumpForceCloseFeeRequest deadline_delta. */
        public deadline_delta: number;

        /** BumpForceCloseFeeRequest starting_feerate. */
        public starting_feerate: Long;

        /** BumpForceCloseFeeRequest immediate. */
        public immediate: boolean;

        /** BumpForceCloseFeeRequest budget. */
        public budget: Long;

        /**
         * Creates a new BumpForceCloseFeeRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BumpForceCloseFeeRequest instance
         */
        public static create(
            properties?: walletrpc.IBumpForceCloseFeeRequest
        ): walletrpc.BumpForceCloseFeeRequest;

        /**
         * Encodes the specified BumpForceCloseFeeRequest message. Does not implicitly {@link walletrpc.BumpForceCloseFeeRequest.verify|verify} messages.
         * @param message BumpForceCloseFeeRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IBumpForceCloseFeeRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BumpForceCloseFeeRequest message, length delimited. Does not implicitly {@link walletrpc.BumpForceCloseFeeRequest.verify|verify} messages.
         * @param message BumpForceCloseFeeRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IBumpForceCloseFeeRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BumpForceCloseFeeRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BumpForceCloseFeeRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.BumpForceCloseFeeRequest;

        /**
         * Decodes a BumpForceCloseFeeRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BumpForceCloseFeeRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.BumpForceCloseFeeRequest;

        /**
         * Verifies a BumpForceCloseFeeRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BumpForceCloseFeeRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BumpForceCloseFeeRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.BumpForceCloseFeeRequest;

        /**
         * Creates a plain object from a BumpForceCloseFeeRequest message. Also converts values to other types if specified.
         * @param message BumpForceCloseFeeRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.BumpForceCloseFeeRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BumpForceCloseFeeRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BumpForceCloseFeeRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a BumpForceCloseFeeResponse. */
    interface IBumpForceCloseFeeResponse {
        /** BumpForceCloseFeeResponse status */
        status?: string | null;
    }

    /** Represents a BumpForceCloseFeeResponse. */
    class BumpForceCloseFeeResponse implements IBumpForceCloseFeeResponse {
        /**
         * Constructs a new BumpForceCloseFeeResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IBumpForceCloseFeeResponse);

        /** BumpForceCloseFeeResponse status. */
        public status: string;

        /**
         * Creates a new BumpForceCloseFeeResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BumpForceCloseFeeResponse instance
         */
        public static create(
            properties?: walletrpc.IBumpForceCloseFeeResponse
        ): walletrpc.BumpForceCloseFeeResponse;

        /**
         * Encodes the specified BumpForceCloseFeeResponse message. Does not implicitly {@link walletrpc.BumpForceCloseFeeResponse.verify|verify} messages.
         * @param message BumpForceCloseFeeResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IBumpForceCloseFeeResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified BumpForceCloseFeeResponse message, length delimited. Does not implicitly {@link walletrpc.BumpForceCloseFeeResponse.verify|verify} messages.
         * @param message BumpForceCloseFeeResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IBumpForceCloseFeeResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a BumpForceCloseFeeResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BumpForceCloseFeeResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.BumpForceCloseFeeResponse;

        /**
         * Decodes a BumpForceCloseFeeResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BumpForceCloseFeeResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.BumpForceCloseFeeResponse;

        /**
         * Verifies a BumpForceCloseFeeResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a BumpForceCloseFeeResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BumpForceCloseFeeResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.BumpForceCloseFeeResponse;

        /**
         * Creates a plain object from a BumpForceCloseFeeResponse message. Also converts values to other types if specified.
         * @param message BumpForceCloseFeeResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.BumpForceCloseFeeResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this BumpForceCloseFeeResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BumpForceCloseFeeResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListSweepsRequest. */
    interface IListSweepsRequest {
        /** ListSweepsRequest verbose */
        verbose?: boolean | null;

        /** ListSweepsRequest start_height */
        start_height?: number | null;
    }

    /** Represents a ListSweepsRequest. */
    class ListSweepsRequest implements IListSweepsRequest {
        /**
         * Constructs a new ListSweepsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IListSweepsRequest);

        /** ListSweepsRequest verbose. */
        public verbose: boolean;

        /** ListSweepsRequest start_height. */
        public start_height: number;

        /**
         * Creates a new ListSweepsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListSweepsRequest instance
         */
        public static create(
            properties?: walletrpc.IListSweepsRequest
        ): walletrpc.ListSweepsRequest;

        /**
         * Encodes the specified ListSweepsRequest message. Does not implicitly {@link walletrpc.ListSweepsRequest.verify|verify} messages.
         * @param message ListSweepsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IListSweepsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListSweepsRequest message, length delimited. Does not implicitly {@link walletrpc.ListSweepsRequest.verify|verify} messages.
         * @param message ListSweepsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IListSweepsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListSweepsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListSweepsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ListSweepsRequest;

        /**
         * Decodes a ListSweepsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListSweepsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ListSweepsRequest;

        /**
         * Verifies a ListSweepsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListSweepsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListSweepsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ListSweepsRequest;

        /**
         * Creates a plain object from a ListSweepsRequest message. Also converts values to other types if specified.
         * @param message ListSweepsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ListSweepsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListSweepsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListSweepsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListSweepsResponse. */
    interface IListSweepsResponse {
        /** ListSweepsResponse transaction_details */
        transaction_details?: lnrpc.ITransactionDetails | null;

        /** ListSweepsResponse transaction_ids */
        transaction_ids?: walletrpc.ListSweepsResponse.ITransactionIDs | null;
    }

    /** Represents a ListSweepsResponse. */
    class ListSweepsResponse implements IListSweepsResponse {
        /**
         * Constructs a new ListSweepsResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IListSweepsResponse);

        /** ListSweepsResponse transaction_details. */
        public transaction_details?: lnrpc.ITransactionDetails | null;

        /** ListSweepsResponse transaction_ids. */
        public transaction_ids?: walletrpc.ListSweepsResponse.ITransactionIDs | null;

        /** ListSweepsResponse sweeps. */
        public sweeps?: 'transaction_details' | 'transaction_ids';

        /**
         * Creates a new ListSweepsResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListSweepsResponse instance
         */
        public static create(
            properties?: walletrpc.IListSweepsResponse
        ): walletrpc.ListSweepsResponse;

        /**
         * Encodes the specified ListSweepsResponse message. Does not implicitly {@link walletrpc.ListSweepsResponse.verify|verify} messages.
         * @param message ListSweepsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IListSweepsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListSweepsResponse message, length delimited. Does not implicitly {@link walletrpc.ListSweepsResponse.verify|verify} messages.
         * @param message ListSweepsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IListSweepsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListSweepsResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListSweepsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ListSweepsResponse;

        /**
         * Decodes a ListSweepsResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListSweepsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ListSweepsResponse;

        /**
         * Verifies a ListSweepsResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListSweepsResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListSweepsResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ListSweepsResponse;

        /**
         * Creates a plain object from a ListSweepsResponse message. Also converts values to other types if specified.
         * @param message ListSweepsResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ListSweepsResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListSweepsResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListSweepsResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace ListSweepsResponse {
        /** Properties of a TransactionIDs. */
        interface ITransactionIDs {
            /** TransactionIDs transaction_ids */
            transaction_ids?: string[] | null;
        }

        /** Represents a TransactionIDs. */
        class TransactionIDs implements ITransactionIDs {
            /**
             * Constructs a new TransactionIDs.
             * @param [properties] Properties to set
             */
            constructor(
                properties?: walletrpc.ListSweepsResponse.ITransactionIDs
            );

            /** TransactionIDs transaction_ids. */
            public transaction_ids: string[];

            /**
             * Creates a new TransactionIDs instance using the specified properties.
             * @param [properties] Properties to set
             * @returns TransactionIDs instance
             */
            public static create(
                properties?: walletrpc.ListSweepsResponse.ITransactionIDs
            ): walletrpc.ListSweepsResponse.TransactionIDs;

            /**
             * Encodes the specified TransactionIDs message. Does not implicitly {@link walletrpc.ListSweepsResponse.TransactionIDs.verify|verify} messages.
             * @param message TransactionIDs message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(
                message: walletrpc.ListSweepsResponse.ITransactionIDs,
                writer?: $protobuf.Writer
            ): $protobuf.Writer;

            /**
             * Encodes the specified TransactionIDs message, length delimited. Does not implicitly {@link walletrpc.ListSweepsResponse.TransactionIDs.verify|verify} messages.
             * @param message TransactionIDs message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(
                message: walletrpc.ListSweepsResponse.ITransactionIDs,
                writer?: $protobuf.Writer
            ): $protobuf.Writer;

            /**
             * Decodes a TransactionIDs message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns TransactionIDs
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(
                reader: $protobuf.Reader | Uint8Array,
                length?: number
            ): walletrpc.ListSweepsResponse.TransactionIDs;

            /**
             * Decodes a TransactionIDs message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns TransactionIDs
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(
                reader: $protobuf.Reader | Uint8Array
            ): walletrpc.ListSweepsResponse.TransactionIDs;

            /**
             * Verifies a TransactionIDs message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): string | null;

            /**
             * Creates a TransactionIDs message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns TransactionIDs
             */
            public static fromObject(object: {
                [k: string]: any;
            }): walletrpc.ListSweepsResponse.TransactionIDs;

            /**
             * Creates a plain object from a TransactionIDs message. Also converts values to other types if specified.
             * @param message TransactionIDs
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(
                message: walletrpc.ListSweepsResponse.TransactionIDs,
                options?: $protobuf.IConversionOptions
            ): { [k: string]: any };

            /**
             * Converts this TransactionIDs to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for TransactionIDs
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Properties of a LabelTransactionRequest. */
    interface ILabelTransactionRequest {
        /** LabelTransactionRequest txid */
        txid?: Uint8Array | null;

        /** LabelTransactionRequest label */
        label?: string | null;

        /** LabelTransactionRequest overwrite */
        overwrite?: boolean | null;
    }

    /** Represents a LabelTransactionRequest. */
    class LabelTransactionRequest implements ILabelTransactionRequest {
        /**
         * Constructs a new LabelTransactionRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.ILabelTransactionRequest);

        /** LabelTransactionRequest txid. */
        public txid: Uint8Array;

        /** LabelTransactionRequest label. */
        public label: string;

        /** LabelTransactionRequest overwrite. */
        public overwrite: boolean;

        /**
         * Creates a new LabelTransactionRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns LabelTransactionRequest instance
         */
        public static create(
            properties?: walletrpc.ILabelTransactionRequest
        ): walletrpc.LabelTransactionRequest;

        /**
         * Encodes the specified LabelTransactionRequest message. Does not implicitly {@link walletrpc.LabelTransactionRequest.verify|verify} messages.
         * @param message LabelTransactionRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.ILabelTransactionRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified LabelTransactionRequest message, length delimited. Does not implicitly {@link walletrpc.LabelTransactionRequest.verify|verify} messages.
         * @param message LabelTransactionRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.ILabelTransactionRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a LabelTransactionRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns LabelTransactionRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.LabelTransactionRequest;

        /**
         * Decodes a LabelTransactionRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns LabelTransactionRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.LabelTransactionRequest;

        /**
         * Verifies a LabelTransactionRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a LabelTransactionRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns LabelTransactionRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.LabelTransactionRequest;

        /**
         * Creates a plain object from a LabelTransactionRequest message. Also converts values to other types if specified.
         * @param message LabelTransactionRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.LabelTransactionRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this LabelTransactionRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for LabelTransactionRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a LabelTransactionResponse. */
    interface ILabelTransactionResponse {}

    /** Represents a LabelTransactionResponse. */
    class LabelTransactionResponse implements ILabelTransactionResponse {
        /**
         * Constructs a new LabelTransactionResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.ILabelTransactionResponse);

        /**
         * Creates a new LabelTransactionResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns LabelTransactionResponse instance
         */
        public static create(
            properties?: walletrpc.ILabelTransactionResponse
        ): walletrpc.LabelTransactionResponse;

        /**
         * Encodes the specified LabelTransactionResponse message. Does not implicitly {@link walletrpc.LabelTransactionResponse.verify|verify} messages.
         * @param message LabelTransactionResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.ILabelTransactionResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified LabelTransactionResponse message, length delimited. Does not implicitly {@link walletrpc.LabelTransactionResponse.verify|verify} messages.
         * @param message LabelTransactionResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.ILabelTransactionResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a LabelTransactionResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns LabelTransactionResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.LabelTransactionResponse;

        /**
         * Decodes a LabelTransactionResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns LabelTransactionResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.LabelTransactionResponse;

        /**
         * Verifies a LabelTransactionResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a LabelTransactionResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns LabelTransactionResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.LabelTransactionResponse;

        /**
         * Creates a plain object from a LabelTransactionResponse message. Also converts values to other types if specified.
         * @param message LabelTransactionResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.LabelTransactionResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this LabelTransactionResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for LabelTransactionResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** ChangeAddressType enum. */
    enum ChangeAddressType {
        CHANGE_ADDRESS_TYPE_UNSPECIFIED = 0,
        CHANGE_ADDRESS_TYPE_P2TR = 1
    }

    /** Properties of a FundPsbtRequest. */
    interface IFundPsbtRequest {
        /** FundPsbtRequest psbt */
        psbt?: Uint8Array | null;

        /** FundPsbtRequest raw */
        raw?: walletrpc.ITxTemplate | null;

        /** FundPsbtRequest coin_select */
        coin_select?: walletrpc.IPsbtCoinSelect | null;

        /** FundPsbtRequest target_conf */
        target_conf?: number | null;

        /** FundPsbtRequest sat_per_vbyte */
        sat_per_vbyte?: Long | null;

        /** FundPsbtRequest account */
        account?: string | null;

        /** FundPsbtRequest min_confs */
        min_confs?: number | null;

        /** FundPsbtRequest spend_unconfirmed */
        spend_unconfirmed?: boolean | null;

        /** FundPsbtRequest change_type */
        change_type?: walletrpc.ChangeAddressType | null;

        /** FundPsbtRequest coin_selection_strategy */
        coin_selection_strategy?: lnrpc.CoinSelectionStrategy | null;
    }

    /** Represents a FundPsbtRequest. */
    class FundPsbtRequest implements IFundPsbtRequest {
        /**
         * Constructs a new FundPsbtRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IFundPsbtRequest);

        /** FundPsbtRequest psbt. */
        public psbt?: Uint8Array | null;

        /** FundPsbtRequest raw. */
        public raw?: walletrpc.ITxTemplate | null;

        /** FundPsbtRequest coin_select. */
        public coin_select?: walletrpc.IPsbtCoinSelect | null;

        /** FundPsbtRequest target_conf. */
        public target_conf?: number | null;

        /** FundPsbtRequest sat_per_vbyte. */
        public sat_per_vbyte?: Long | null;

        /** FundPsbtRequest account. */
        public account: string;

        /** FundPsbtRequest min_confs. */
        public min_confs: number;

        /** FundPsbtRequest spend_unconfirmed. */
        public spend_unconfirmed: boolean;

        /** FundPsbtRequest change_type. */
        public change_type: walletrpc.ChangeAddressType;

        /** FundPsbtRequest coin_selection_strategy. */
        public coin_selection_strategy: lnrpc.CoinSelectionStrategy;

        /** FundPsbtRequest template. */
        public template?: 'psbt' | 'raw' | 'coin_select';

        /** FundPsbtRequest fees. */
        public fees?: 'target_conf' | 'sat_per_vbyte';

        /**
         * Creates a new FundPsbtRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns FundPsbtRequest instance
         */
        public static create(
            properties?: walletrpc.IFundPsbtRequest
        ): walletrpc.FundPsbtRequest;

        /**
         * Encodes the specified FundPsbtRequest message. Does not implicitly {@link walletrpc.FundPsbtRequest.verify|verify} messages.
         * @param message FundPsbtRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IFundPsbtRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified FundPsbtRequest message, length delimited. Does not implicitly {@link walletrpc.FundPsbtRequest.verify|verify} messages.
         * @param message FundPsbtRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IFundPsbtRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a FundPsbtRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns FundPsbtRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.FundPsbtRequest;

        /**
         * Decodes a FundPsbtRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns FundPsbtRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.FundPsbtRequest;

        /**
         * Verifies a FundPsbtRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a FundPsbtRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns FundPsbtRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.FundPsbtRequest;

        /**
         * Creates a plain object from a FundPsbtRequest message. Also converts values to other types if specified.
         * @param message FundPsbtRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.FundPsbtRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this FundPsbtRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for FundPsbtRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a FundPsbtResponse. */
    interface IFundPsbtResponse {
        /** FundPsbtResponse funded_psbt */
        funded_psbt?: Uint8Array | null;

        /** FundPsbtResponse change_output_index */
        change_output_index?: number | null;

        /** FundPsbtResponse locked_utxos */
        locked_utxos?: walletrpc.IUtxoLease[] | null;
    }

    /** Represents a FundPsbtResponse. */
    class FundPsbtResponse implements IFundPsbtResponse {
        /**
         * Constructs a new FundPsbtResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IFundPsbtResponse);

        /** FundPsbtResponse funded_psbt. */
        public funded_psbt: Uint8Array;

        /** FundPsbtResponse change_output_index. */
        public change_output_index: number;

        /** FundPsbtResponse locked_utxos. */
        public locked_utxos: walletrpc.IUtxoLease[];

        /**
         * Creates a new FundPsbtResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns FundPsbtResponse instance
         */
        public static create(
            properties?: walletrpc.IFundPsbtResponse
        ): walletrpc.FundPsbtResponse;

        /**
         * Encodes the specified FundPsbtResponse message. Does not implicitly {@link walletrpc.FundPsbtResponse.verify|verify} messages.
         * @param message FundPsbtResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IFundPsbtResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified FundPsbtResponse message, length delimited. Does not implicitly {@link walletrpc.FundPsbtResponse.verify|verify} messages.
         * @param message FundPsbtResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IFundPsbtResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a FundPsbtResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns FundPsbtResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.FundPsbtResponse;

        /**
         * Decodes a FundPsbtResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns FundPsbtResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.FundPsbtResponse;

        /**
         * Verifies a FundPsbtResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a FundPsbtResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns FundPsbtResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.FundPsbtResponse;

        /**
         * Creates a plain object from a FundPsbtResponse message. Also converts values to other types if specified.
         * @param message FundPsbtResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.FundPsbtResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this FundPsbtResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for FundPsbtResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a TxTemplate. */
    interface ITxTemplate {
        /** TxTemplate inputs */
        inputs?: lnrpc.IOutPoint[] | null;

        /** TxTemplate outputs */
        outputs?: { [k: string]: Long } | null;
    }

    /** Represents a TxTemplate. */
    class TxTemplate implements ITxTemplate {
        /**
         * Constructs a new TxTemplate.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.ITxTemplate);

        /** TxTemplate inputs. */
        public inputs: lnrpc.IOutPoint[];

        /** TxTemplate outputs. */
        public outputs: { [k: string]: Long };

        /**
         * Creates a new TxTemplate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TxTemplate instance
         */
        public static create(
            properties?: walletrpc.ITxTemplate
        ): walletrpc.TxTemplate;

        /**
         * Encodes the specified TxTemplate message. Does not implicitly {@link walletrpc.TxTemplate.verify|verify} messages.
         * @param message TxTemplate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.ITxTemplate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified TxTemplate message, length delimited. Does not implicitly {@link walletrpc.TxTemplate.verify|verify} messages.
         * @param message TxTemplate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.ITxTemplate,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a TxTemplate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TxTemplate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.TxTemplate;

        /**
         * Decodes a TxTemplate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TxTemplate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.TxTemplate;

        /**
         * Verifies a TxTemplate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a TxTemplate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TxTemplate
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.TxTemplate;

        /**
         * Creates a plain object from a TxTemplate message. Also converts values to other types if specified.
         * @param message TxTemplate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.TxTemplate,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this TxTemplate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TxTemplate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PsbtCoinSelect. */
    interface IPsbtCoinSelect {
        /** PsbtCoinSelect psbt */
        psbt?: Uint8Array | null;

        /** PsbtCoinSelect existing_output_index */
        existing_output_index?: number | null;

        /** PsbtCoinSelect add */
        add?: boolean | null;
    }

    /** Represents a PsbtCoinSelect. */
    class PsbtCoinSelect implements IPsbtCoinSelect {
        /**
         * Constructs a new PsbtCoinSelect.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IPsbtCoinSelect);

        /** PsbtCoinSelect psbt. */
        public psbt: Uint8Array;

        /** PsbtCoinSelect existing_output_index. */
        public existing_output_index?: number | null;

        /** PsbtCoinSelect add. */
        public add?: boolean | null;

        /** PsbtCoinSelect change_output. */
        public change_output?: 'existing_output_index' | 'add';

        /**
         * Creates a new PsbtCoinSelect instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PsbtCoinSelect instance
         */
        public static create(
            properties?: walletrpc.IPsbtCoinSelect
        ): walletrpc.PsbtCoinSelect;

        /**
         * Encodes the specified PsbtCoinSelect message. Does not implicitly {@link walletrpc.PsbtCoinSelect.verify|verify} messages.
         * @param message PsbtCoinSelect message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IPsbtCoinSelect,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PsbtCoinSelect message, length delimited. Does not implicitly {@link walletrpc.PsbtCoinSelect.verify|verify} messages.
         * @param message PsbtCoinSelect message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IPsbtCoinSelect,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PsbtCoinSelect message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PsbtCoinSelect
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.PsbtCoinSelect;

        /**
         * Decodes a PsbtCoinSelect message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PsbtCoinSelect
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.PsbtCoinSelect;

        /**
         * Verifies a PsbtCoinSelect message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PsbtCoinSelect message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PsbtCoinSelect
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.PsbtCoinSelect;

        /**
         * Creates a plain object from a PsbtCoinSelect message. Also converts values to other types if specified.
         * @param message PsbtCoinSelect
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.PsbtCoinSelect,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PsbtCoinSelect to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PsbtCoinSelect
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an UtxoLease. */
    interface IUtxoLease {
        /** UtxoLease id */
        id?: Uint8Array | null;

        /** UtxoLease outpoint */
        outpoint?: lnrpc.IOutPoint | null;

        /** UtxoLease expiration */
        expiration?: Long | null;

        /** UtxoLease pk_script */
        pk_script?: Uint8Array | null;

        /** UtxoLease value */
        value?: Long | null;
    }

    /** Represents an UtxoLease. */
    class UtxoLease implements IUtxoLease {
        /**
         * Constructs a new UtxoLease.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IUtxoLease);

        /** UtxoLease id. */
        public id: Uint8Array;

        /** UtxoLease outpoint. */
        public outpoint?: lnrpc.IOutPoint | null;

        /** UtxoLease expiration. */
        public expiration: Long;

        /** UtxoLease pk_script. */
        public pk_script: Uint8Array;

        /** UtxoLease value. */
        public value: Long;

        /**
         * Creates a new UtxoLease instance using the specified properties.
         * @param [properties] Properties to set
         * @returns UtxoLease instance
         */
        public static create(
            properties?: walletrpc.IUtxoLease
        ): walletrpc.UtxoLease;

        /**
         * Encodes the specified UtxoLease message. Does not implicitly {@link walletrpc.UtxoLease.verify|verify} messages.
         * @param message UtxoLease message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IUtxoLease,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified UtxoLease message, length delimited. Does not implicitly {@link walletrpc.UtxoLease.verify|verify} messages.
         * @param message UtxoLease message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IUtxoLease,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an UtxoLease message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns UtxoLease
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.UtxoLease;

        /**
         * Decodes an UtxoLease message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns UtxoLease
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.UtxoLease;

        /**
         * Verifies an UtxoLease message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an UtxoLease message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns UtxoLease
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.UtxoLease;

        /**
         * Creates a plain object from an UtxoLease message. Also converts values to other types if specified.
         * @param message UtxoLease
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.UtxoLease,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this UtxoLease to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for UtxoLease
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SignPsbtRequest. */
    interface ISignPsbtRequest {
        /** SignPsbtRequest funded_psbt */
        funded_psbt?: Uint8Array | null;
    }

    /** Represents a SignPsbtRequest. */
    class SignPsbtRequest implements ISignPsbtRequest {
        /**
         * Constructs a new SignPsbtRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.ISignPsbtRequest);

        /** SignPsbtRequest funded_psbt. */
        public funded_psbt: Uint8Array;

        /**
         * Creates a new SignPsbtRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SignPsbtRequest instance
         */
        public static create(
            properties?: walletrpc.ISignPsbtRequest
        ): walletrpc.SignPsbtRequest;

        /**
         * Encodes the specified SignPsbtRequest message. Does not implicitly {@link walletrpc.SignPsbtRequest.verify|verify} messages.
         * @param message SignPsbtRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.ISignPsbtRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SignPsbtRequest message, length delimited. Does not implicitly {@link walletrpc.SignPsbtRequest.verify|verify} messages.
         * @param message SignPsbtRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.ISignPsbtRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SignPsbtRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SignPsbtRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.SignPsbtRequest;

        /**
         * Decodes a SignPsbtRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SignPsbtRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.SignPsbtRequest;

        /**
         * Verifies a SignPsbtRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SignPsbtRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SignPsbtRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.SignPsbtRequest;

        /**
         * Creates a plain object from a SignPsbtRequest message. Also converts values to other types if specified.
         * @param message SignPsbtRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.SignPsbtRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SignPsbtRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SignPsbtRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a SignPsbtResponse. */
    interface ISignPsbtResponse {
        /** SignPsbtResponse signed_psbt */
        signed_psbt?: Uint8Array | null;

        /** SignPsbtResponse signed_inputs */
        signed_inputs?: number[] | null;
    }

    /** Represents a SignPsbtResponse. */
    class SignPsbtResponse implements ISignPsbtResponse {
        /**
         * Constructs a new SignPsbtResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.ISignPsbtResponse);

        /** SignPsbtResponse signed_psbt. */
        public signed_psbt: Uint8Array;

        /** SignPsbtResponse signed_inputs. */
        public signed_inputs: number[];

        /**
         * Creates a new SignPsbtResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SignPsbtResponse instance
         */
        public static create(
            properties?: walletrpc.ISignPsbtResponse
        ): walletrpc.SignPsbtResponse;

        /**
         * Encodes the specified SignPsbtResponse message. Does not implicitly {@link walletrpc.SignPsbtResponse.verify|verify} messages.
         * @param message SignPsbtResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.ISignPsbtResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified SignPsbtResponse message, length delimited. Does not implicitly {@link walletrpc.SignPsbtResponse.verify|verify} messages.
         * @param message SignPsbtResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.ISignPsbtResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a SignPsbtResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SignPsbtResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.SignPsbtResponse;

        /**
         * Decodes a SignPsbtResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SignPsbtResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.SignPsbtResponse;

        /**
         * Verifies a SignPsbtResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a SignPsbtResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SignPsbtResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.SignPsbtResponse;

        /**
         * Creates a plain object from a SignPsbtResponse message. Also converts values to other types if specified.
         * @param message SignPsbtResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.SignPsbtResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this SignPsbtResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SignPsbtResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a FinalizePsbtRequest. */
    interface IFinalizePsbtRequest {
        /** FinalizePsbtRequest funded_psbt */
        funded_psbt?: Uint8Array | null;

        /** FinalizePsbtRequest account */
        account?: string | null;
    }

    /** Represents a FinalizePsbtRequest. */
    class FinalizePsbtRequest implements IFinalizePsbtRequest {
        /**
         * Constructs a new FinalizePsbtRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IFinalizePsbtRequest);

        /** FinalizePsbtRequest funded_psbt. */
        public funded_psbt: Uint8Array;

        /** FinalizePsbtRequest account. */
        public account: string;

        /**
         * Creates a new FinalizePsbtRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns FinalizePsbtRequest instance
         */
        public static create(
            properties?: walletrpc.IFinalizePsbtRequest
        ): walletrpc.FinalizePsbtRequest;

        /**
         * Encodes the specified FinalizePsbtRequest message. Does not implicitly {@link walletrpc.FinalizePsbtRequest.verify|verify} messages.
         * @param message FinalizePsbtRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IFinalizePsbtRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified FinalizePsbtRequest message, length delimited. Does not implicitly {@link walletrpc.FinalizePsbtRequest.verify|verify} messages.
         * @param message FinalizePsbtRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IFinalizePsbtRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a FinalizePsbtRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns FinalizePsbtRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.FinalizePsbtRequest;

        /**
         * Decodes a FinalizePsbtRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns FinalizePsbtRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.FinalizePsbtRequest;

        /**
         * Verifies a FinalizePsbtRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a FinalizePsbtRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns FinalizePsbtRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.FinalizePsbtRequest;

        /**
         * Creates a plain object from a FinalizePsbtRequest message. Also converts values to other types if specified.
         * @param message FinalizePsbtRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.FinalizePsbtRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this FinalizePsbtRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for FinalizePsbtRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a FinalizePsbtResponse. */
    interface IFinalizePsbtResponse {
        /** FinalizePsbtResponse signed_psbt */
        signed_psbt?: Uint8Array | null;

        /** FinalizePsbtResponse raw_final_tx */
        raw_final_tx?: Uint8Array | null;
    }

    /** Represents a FinalizePsbtResponse. */
    class FinalizePsbtResponse implements IFinalizePsbtResponse {
        /**
         * Constructs a new FinalizePsbtResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IFinalizePsbtResponse);

        /** FinalizePsbtResponse signed_psbt. */
        public signed_psbt: Uint8Array;

        /** FinalizePsbtResponse raw_final_tx. */
        public raw_final_tx: Uint8Array;

        /**
         * Creates a new FinalizePsbtResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns FinalizePsbtResponse instance
         */
        public static create(
            properties?: walletrpc.IFinalizePsbtResponse
        ): walletrpc.FinalizePsbtResponse;

        /**
         * Encodes the specified FinalizePsbtResponse message. Does not implicitly {@link walletrpc.FinalizePsbtResponse.verify|verify} messages.
         * @param message FinalizePsbtResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IFinalizePsbtResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified FinalizePsbtResponse message, length delimited. Does not implicitly {@link walletrpc.FinalizePsbtResponse.verify|verify} messages.
         * @param message FinalizePsbtResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IFinalizePsbtResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a FinalizePsbtResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns FinalizePsbtResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.FinalizePsbtResponse;

        /**
         * Decodes a FinalizePsbtResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns FinalizePsbtResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.FinalizePsbtResponse;

        /**
         * Verifies a FinalizePsbtResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a FinalizePsbtResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns FinalizePsbtResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.FinalizePsbtResponse;

        /**
         * Creates a plain object from a FinalizePsbtResponse message. Also converts values to other types if specified.
         * @param message FinalizePsbtResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.FinalizePsbtResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this FinalizePsbtResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for FinalizePsbtResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListLeasesRequest. */
    interface IListLeasesRequest {}

    /** Represents a ListLeasesRequest. */
    class ListLeasesRequest implements IListLeasesRequest {
        /**
         * Constructs a new ListLeasesRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IListLeasesRequest);

        /**
         * Creates a new ListLeasesRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListLeasesRequest instance
         */
        public static create(
            properties?: walletrpc.IListLeasesRequest
        ): walletrpc.ListLeasesRequest;

        /**
         * Encodes the specified ListLeasesRequest message. Does not implicitly {@link walletrpc.ListLeasesRequest.verify|verify} messages.
         * @param message ListLeasesRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IListLeasesRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListLeasesRequest message, length delimited. Does not implicitly {@link walletrpc.ListLeasesRequest.verify|verify} messages.
         * @param message ListLeasesRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IListLeasesRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListLeasesRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListLeasesRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ListLeasesRequest;

        /**
         * Decodes a ListLeasesRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListLeasesRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ListLeasesRequest;

        /**
         * Verifies a ListLeasesRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListLeasesRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListLeasesRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ListLeasesRequest;

        /**
         * Creates a plain object from a ListLeasesRequest message. Also converts values to other types if specified.
         * @param message ListLeasesRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ListLeasesRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListLeasesRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListLeasesRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListLeasesResponse. */
    interface IListLeasesResponse {
        /** ListLeasesResponse locked_utxos */
        locked_utxos?: walletrpc.IUtxoLease[] | null;
    }

    /** Represents a ListLeasesResponse. */
    class ListLeasesResponse implements IListLeasesResponse {
        /**
         * Constructs a new ListLeasesResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: walletrpc.IListLeasesResponse);

        /** ListLeasesResponse locked_utxos. */
        public locked_utxos: walletrpc.IUtxoLease[];

        /**
         * Creates a new ListLeasesResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListLeasesResponse instance
         */
        public static create(
            properties?: walletrpc.IListLeasesResponse
        ): walletrpc.ListLeasesResponse;

        /**
         * Encodes the specified ListLeasesResponse message. Does not implicitly {@link walletrpc.ListLeasesResponse.verify|verify} messages.
         * @param message ListLeasesResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: walletrpc.IListLeasesResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListLeasesResponse message, length delimited. Does not implicitly {@link walletrpc.ListLeasesResponse.verify|verify} messages.
         * @param message ListLeasesResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: walletrpc.IListLeasesResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListLeasesResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListLeasesResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): walletrpc.ListLeasesResponse;

        /**
         * Decodes a ListLeasesResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListLeasesResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): walletrpc.ListLeasesResponse;

        /**
         * Verifies a ListLeasesResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListLeasesResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListLeasesResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): walletrpc.ListLeasesResponse;

        /**
         * Creates a plain object from a ListLeasesResponse message. Also converts values to other types if specified.
         * @param message ListLeasesResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: walletrpc.ListLeasesResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListLeasesResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListLeasesResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }
}

/** Namespace wtclientrpc. */
export namespace wtclientrpc {
    /** Represents a WatchtowerClient */
    class WatchtowerClient extends $protobuf.rpc.Service {
        /**
         * Constructs a new WatchtowerClient service.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         */
        constructor(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        );

        /**
         * Creates new WatchtowerClient service using the specified rpc implementation.
         * @param rpcImpl RPC implementation
         * @param [requestDelimited=false] Whether requests are length-delimited
         * @param [responseDelimited=false] Whether responses are length-delimited
         * @returns RPC service. Useful where requests and/or responses are streamed.
         */
        public static create(
            rpcImpl: $protobuf.RPCImpl,
            requestDelimited?: boolean,
            responseDelimited?: boolean
        ): WatchtowerClient;

        /**
         * Calls AddTower.
         * @param request AddTowerRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and AddTowerResponse
         */
        public addTower(
            request: wtclientrpc.IAddTowerRequest,
            callback: wtclientrpc.WatchtowerClient.AddTowerCallback
        ): void;

        /**
         * Calls AddTower.
         * @param request AddTowerRequest message or plain object
         * @returns Promise
         */
        public addTower(
            request: wtclientrpc.IAddTowerRequest
        ): Promise<wtclientrpc.AddTowerResponse>;

        /**
         * Calls RemoveTower.
         * @param request RemoveTowerRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and RemoveTowerResponse
         */
        public removeTower(
            request: wtclientrpc.IRemoveTowerRequest,
            callback: wtclientrpc.WatchtowerClient.RemoveTowerCallback
        ): void;

        /**
         * Calls RemoveTower.
         * @param request RemoveTowerRequest message or plain object
         * @returns Promise
         */
        public removeTower(
            request: wtclientrpc.IRemoveTowerRequest
        ): Promise<wtclientrpc.RemoveTowerResponse>;

        /**
         * Calls DeactivateTower.
         * @param request DeactivateTowerRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and DeactivateTowerResponse
         */
        public deactivateTower(
            request: wtclientrpc.IDeactivateTowerRequest,
            callback: wtclientrpc.WatchtowerClient.DeactivateTowerCallback
        ): void;

        /**
         * Calls DeactivateTower.
         * @param request DeactivateTowerRequest message or plain object
         * @returns Promise
         */
        public deactivateTower(
            request: wtclientrpc.IDeactivateTowerRequest
        ): Promise<wtclientrpc.DeactivateTowerResponse>;

        /**
         * Calls TerminateSession.
         * @param request TerminateSessionRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and TerminateSessionResponse
         */
        public terminateSession(
            request: wtclientrpc.ITerminateSessionRequest,
            callback: wtclientrpc.WatchtowerClient.TerminateSessionCallback
        ): void;

        /**
         * Calls TerminateSession.
         * @param request TerminateSessionRequest message or plain object
         * @returns Promise
         */
        public terminateSession(
            request: wtclientrpc.ITerminateSessionRequest
        ): Promise<wtclientrpc.TerminateSessionResponse>;

        /**
         * Calls ListTowers.
         * @param request ListTowersRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and ListTowersResponse
         */
        public listTowers(
            request: wtclientrpc.IListTowersRequest,
            callback: wtclientrpc.WatchtowerClient.ListTowersCallback
        ): void;

        /**
         * Calls ListTowers.
         * @param request ListTowersRequest message or plain object
         * @returns Promise
         */
        public listTowers(
            request: wtclientrpc.IListTowersRequest
        ): Promise<wtclientrpc.ListTowersResponse>;

        /**
         * Calls GetTowerInfo.
         * @param request GetTowerInfoRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and Tower
         */
        public getTowerInfo(
            request: wtclientrpc.IGetTowerInfoRequest,
            callback: wtclientrpc.WatchtowerClient.GetTowerInfoCallback
        ): void;

        /**
         * Calls GetTowerInfo.
         * @param request GetTowerInfoRequest message or plain object
         * @returns Promise
         */
        public getTowerInfo(
            request: wtclientrpc.IGetTowerInfoRequest
        ): Promise<wtclientrpc.Tower>;

        /**
         * Calls Stats.
         * @param request StatsRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and StatsResponse
         */
        public stats(
            request: wtclientrpc.IStatsRequest,
            callback: wtclientrpc.WatchtowerClient.StatsCallback
        ): void;

        /**
         * Calls Stats.
         * @param request StatsRequest message or plain object
         * @returns Promise
         */
        public stats(
            request: wtclientrpc.IStatsRequest
        ): Promise<wtclientrpc.StatsResponse>;

        /**
         * Calls Policy.
         * @param request PolicyRequest message or plain object
         * @param callback Node-style callback called with the error, if any, and PolicyResponse
         */
        public policy(
            request: wtclientrpc.IPolicyRequest,
            callback: wtclientrpc.WatchtowerClient.PolicyCallback
        ): void;

        /**
         * Calls Policy.
         * @param request PolicyRequest message or plain object
         * @returns Promise
         */
        public policy(
            request: wtclientrpc.IPolicyRequest
        ): Promise<wtclientrpc.PolicyResponse>;
    }

    namespace WatchtowerClient {
        /**
         * Callback as used by {@link wtclientrpc.WatchtowerClient#addTower}.
         * @param error Error, if any
         * @param [response] AddTowerResponse
         */
        type AddTowerCallback = (
            error: Error | null,
            response?: wtclientrpc.AddTowerResponse
        ) => void;

        /**
         * Callback as used by {@link wtclientrpc.WatchtowerClient#removeTower}.
         * @param error Error, if any
         * @param [response] RemoveTowerResponse
         */
        type RemoveTowerCallback = (
            error: Error | null,
            response?: wtclientrpc.RemoveTowerResponse
        ) => void;

        /**
         * Callback as used by {@link wtclientrpc.WatchtowerClient#deactivateTower}.
         * @param error Error, if any
         * @param [response] DeactivateTowerResponse
         */
        type DeactivateTowerCallback = (
            error: Error | null,
            response?: wtclientrpc.DeactivateTowerResponse
        ) => void;

        /**
         * Callback as used by {@link wtclientrpc.WatchtowerClient#terminateSession}.
         * @param error Error, if any
         * @param [response] TerminateSessionResponse
         */
        type TerminateSessionCallback = (
            error: Error | null,
            response?: wtclientrpc.TerminateSessionResponse
        ) => void;

        /**
         * Callback as used by {@link wtclientrpc.WatchtowerClient#listTowers}.
         * @param error Error, if any
         * @param [response] ListTowersResponse
         */
        type ListTowersCallback = (
            error: Error | null,
            response?: wtclientrpc.ListTowersResponse
        ) => void;

        /**
         * Callback as used by {@link wtclientrpc.WatchtowerClient#getTowerInfo}.
         * @param error Error, if any
         * @param [response] Tower
         */
        type GetTowerInfoCallback = (
            error: Error | null,
            response?: wtclientrpc.Tower
        ) => void;

        /**
         * Callback as used by {@link wtclientrpc.WatchtowerClient#stats}.
         * @param error Error, if any
         * @param [response] StatsResponse
         */
        type StatsCallback = (
            error: Error | null,
            response?: wtclientrpc.StatsResponse
        ) => void;

        /**
         * Callback as used by {@link wtclientrpc.WatchtowerClient#policy}.
         * @param error Error, if any
         * @param [response] PolicyResponse
         */
        type PolicyCallback = (
            error: Error | null,
            response?: wtclientrpc.PolicyResponse
        ) => void;
    }

    /** Properties of an AddTowerRequest. */
    interface IAddTowerRequest {
        /** AddTowerRequest pubkey */
        pubkey?: Uint8Array | null;

        /** AddTowerRequest address */
        address?: string | null;
    }

    /** Represents an AddTowerRequest. */
    class AddTowerRequest implements IAddTowerRequest {
        /**
         * Constructs a new AddTowerRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.IAddTowerRequest);

        /** AddTowerRequest pubkey. */
        public pubkey: Uint8Array;

        /** AddTowerRequest address. */
        public address: string;

        /**
         * Creates a new AddTowerRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AddTowerRequest instance
         */
        public static create(
            properties?: wtclientrpc.IAddTowerRequest
        ): wtclientrpc.AddTowerRequest;

        /**
         * Encodes the specified AddTowerRequest message. Does not implicitly {@link wtclientrpc.AddTowerRequest.verify|verify} messages.
         * @param message AddTowerRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.IAddTowerRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AddTowerRequest message, length delimited. Does not implicitly {@link wtclientrpc.AddTowerRequest.verify|verify} messages.
         * @param message AddTowerRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.IAddTowerRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AddTowerRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AddTowerRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.AddTowerRequest;

        /**
         * Decodes an AddTowerRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AddTowerRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.AddTowerRequest;

        /**
         * Verifies an AddTowerRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AddTowerRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AddTowerRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.AddTowerRequest;

        /**
         * Creates a plain object from an AddTowerRequest message. Also converts values to other types if specified.
         * @param message AddTowerRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.AddTowerRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AddTowerRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AddTowerRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AddTowerResponse. */
    interface IAddTowerResponse {}

    /** Represents an AddTowerResponse. */
    class AddTowerResponse implements IAddTowerResponse {
        /**
         * Constructs a new AddTowerResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.IAddTowerResponse);

        /**
         * Creates a new AddTowerResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AddTowerResponse instance
         */
        public static create(
            properties?: wtclientrpc.IAddTowerResponse
        ): wtclientrpc.AddTowerResponse;

        /**
         * Encodes the specified AddTowerResponse message. Does not implicitly {@link wtclientrpc.AddTowerResponse.verify|verify} messages.
         * @param message AddTowerResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.IAddTowerResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified AddTowerResponse message, length delimited. Does not implicitly {@link wtclientrpc.AddTowerResponse.verify|verify} messages.
         * @param message AddTowerResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.IAddTowerResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes an AddTowerResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AddTowerResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.AddTowerResponse;

        /**
         * Decodes an AddTowerResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AddTowerResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.AddTowerResponse;

        /**
         * Verifies an AddTowerResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates an AddTowerResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AddTowerResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.AddTowerResponse;

        /**
         * Creates a plain object from an AddTowerResponse message. Also converts values to other types if specified.
         * @param message AddTowerResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.AddTowerResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this AddTowerResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AddTowerResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a RemoveTowerRequest. */
    interface IRemoveTowerRequest {
        /** RemoveTowerRequest pubkey */
        pubkey?: Uint8Array | null;

        /** RemoveTowerRequest address */
        address?: string | null;
    }

    /** Represents a RemoveTowerRequest. */
    class RemoveTowerRequest implements IRemoveTowerRequest {
        /**
         * Constructs a new RemoveTowerRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.IRemoveTowerRequest);

        /** RemoveTowerRequest pubkey. */
        public pubkey: Uint8Array;

        /** RemoveTowerRequest address. */
        public address: string;

        /**
         * Creates a new RemoveTowerRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns RemoveTowerRequest instance
         */
        public static create(
            properties?: wtclientrpc.IRemoveTowerRequest
        ): wtclientrpc.RemoveTowerRequest;

        /**
         * Encodes the specified RemoveTowerRequest message. Does not implicitly {@link wtclientrpc.RemoveTowerRequest.verify|verify} messages.
         * @param message RemoveTowerRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.IRemoveTowerRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified RemoveTowerRequest message, length delimited. Does not implicitly {@link wtclientrpc.RemoveTowerRequest.verify|verify} messages.
         * @param message RemoveTowerRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.IRemoveTowerRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a RemoveTowerRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns RemoveTowerRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.RemoveTowerRequest;

        /**
         * Decodes a RemoveTowerRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns RemoveTowerRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.RemoveTowerRequest;

        /**
         * Verifies a RemoveTowerRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a RemoveTowerRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns RemoveTowerRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.RemoveTowerRequest;

        /**
         * Creates a plain object from a RemoveTowerRequest message. Also converts values to other types if specified.
         * @param message RemoveTowerRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.RemoveTowerRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this RemoveTowerRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for RemoveTowerRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a RemoveTowerResponse. */
    interface IRemoveTowerResponse {}

    /** Represents a RemoveTowerResponse. */
    class RemoveTowerResponse implements IRemoveTowerResponse {
        /**
         * Constructs a new RemoveTowerResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.IRemoveTowerResponse);

        /**
         * Creates a new RemoveTowerResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns RemoveTowerResponse instance
         */
        public static create(
            properties?: wtclientrpc.IRemoveTowerResponse
        ): wtclientrpc.RemoveTowerResponse;

        /**
         * Encodes the specified RemoveTowerResponse message. Does not implicitly {@link wtclientrpc.RemoveTowerResponse.verify|verify} messages.
         * @param message RemoveTowerResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.IRemoveTowerResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified RemoveTowerResponse message, length delimited. Does not implicitly {@link wtclientrpc.RemoveTowerResponse.verify|verify} messages.
         * @param message RemoveTowerResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.IRemoveTowerResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a RemoveTowerResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns RemoveTowerResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.RemoveTowerResponse;

        /**
         * Decodes a RemoveTowerResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns RemoveTowerResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.RemoveTowerResponse;

        /**
         * Verifies a RemoveTowerResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a RemoveTowerResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns RemoveTowerResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.RemoveTowerResponse;

        /**
         * Creates a plain object from a RemoveTowerResponse message. Also converts values to other types if specified.
         * @param message RemoveTowerResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.RemoveTowerResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this RemoveTowerResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for RemoveTowerResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a DeactivateTowerRequest. */
    interface IDeactivateTowerRequest {
        /** DeactivateTowerRequest pubkey */
        pubkey?: Uint8Array | null;
    }

    /** Represents a DeactivateTowerRequest. */
    class DeactivateTowerRequest implements IDeactivateTowerRequest {
        /**
         * Constructs a new DeactivateTowerRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.IDeactivateTowerRequest);

        /** DeactivateTowerRequest pubkey. */
        public pubkey: Uint8Array;

        /**
         * Creates a new DeactivateTowerRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DeactivateTowerRequest instance
         */
        public static create(
            properties?: wtclientrpc.IDeactivateTowerRequest
        ): wtclientrpc.DeactivateTowerRequest;

        /**
         * Encodes the specified DeactivateTowerRequest message. Does not implicitly {@link wtclientrpc.DeactivateTowerRequest.verify|verify} messages.
         * @param message DeactivateTowerRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.IDeactivateTowerRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified DeactivateTowerRequest message, length delimited. Does not implicitly {@link wtclientrpc.DeactivateTowerRequest.verify|verify} messages.
         * @param message DeactivateTowerRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.IDeactivateTowerRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a DeactivateTowerRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DeactivateTowerRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.DeactivateTowerRequest;

        /**
         * Decodes a DeactivateTowerRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DeactivateTowerRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.DeactivateTowerRequest;

        /**
         * Verifies a DeactivateTowerRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a DeactivateTowerRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DeactivateTowerRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.DeactivateTowerRequest;

        /**
         * Creates a plain object from a DeactivateTowerRequest message. Also converts values to other types if specified.
         * @param message DeactivateTowerRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.DeactivateTowerRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this DeactivateTowerRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DeactivateTowerRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a DeactivateTowerResponse. */
    interface IDeactivateTowerResponse {
        /** DeactivateTowerResponse status */
        status?: string | null;
    }

    /** Represents a DeactivateTowerResponse. */
    class DeactivateTowerResponse implements IDeactivateTowerResponse {
        /**
         * Constructs a new DeactivateTowerResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.IDeactivateTowerResponse);

        /** DeactivateTowerResponse status. */
        public status: string;

        /**
         * Creates a new DeactivateTowerResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DeactivateTowerResponse instance
         */
        public static create(
            properties?: wtclientrpc.IDeactivateTowerResponse
        ): wtclientrpc.DeactivateTowerResponse;

        /**
         * Encodes the specified DeactivateTowerResponse message. Does not implicitly {@link wtclientrpc.DeactivateTowerResponse.verify|verify} messages.
         * @param message DeactivateTowerResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.IDeactivateTowerResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified DeactivateTowerResponse message, length delimited. Does not implicitly {@link wtclientrpc.DeactivateTowerResponse.verify|verify} messages.
         * @param message DeactivateTowerResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.IDeactivateTowerResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a DeactivateTowerResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DeactivateTowerResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.DeactivateTowerResponse;

        /**
         * Decodes a DeactivateTowerResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DeactivateTowerResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.DeactivateTowerResponse;

        /**
         * Verifies a DeactivateTowerResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a DeactivateTowerResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DeactivateTowerResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.DeactivateTowerResponse;

        /**
         * Creates a plain object from a DeactivateTowerResponse message. Also converts values to other types if specified.
         * @param message DeactivateTowerResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.DeactivateTowerResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this DeactivateTowerResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DeactivateTowerResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a TerminateSessionRequest. */
    interface ITerminateSessionRequest {
        /** TerminateSessionRequest session_id */
        session_id?: Uint8Array | null;
    }

    /** Represents a TerminateSessionRequest. */
    class TerminateSessionRequest implements ITerminateSessionRequest {
        /**
         * Constructs a new TerminateSessionRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.ITerminateSessionRequest);

        /** TerminateSessionRequest session_id. */
        public session_id: Uint8Array;

        /**
         * Creates a new TerminateSessionRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TerminateSessionRequest instance
         */
        public static create(
            properties?: wtclientrpc.ITerminateSessionRequest
        ): wtclientrpc.TerminateSessionRequest;

        /**
         * Encodes the specified TerminateSessionRequest message. Does not implicitly {@link wtclientrpc.TerminateSessionRequest.verify|verify} messages.
         * @param message TerminateSessionRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.ITerminateSessionRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified TerminateSessionRequest message, length delimited. Does not implicitly {@link wtclientrpc.TerminateSessionRequest.verify|verify} messages.
         * @param message TerminateSessionRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.ITerminateSessionRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a TerminateSessionRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TerminateSessionRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.TerminateSessionRequest;

        /**
         * Decodes a TerminateSessionRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TerminateSessionRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.TerminateSessionRequest;

        /**
         * Verifies a TerminateSessionRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a TerminateSessionRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TerminateSessionRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.TerminateSessionRequest;

        /**
         * Creates a plain object from a TerminateSessionRequest message. Also converts values to other types if specified.
         * @param message TerminateSessionRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.TerminateSessionRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this TerminateSessionRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TerminateSessionRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a TerminateSessionResponse. */
    interface ITerminateSessionResponse {
        /** TerminateSessionResponse status */
        status?: string | null;
    }

    /** Represents a TerminateSessionResponse. */
    class TerminateSessionResponse implements ITerminateSessionResponse {
        /**
         * Constructs a new TerminateSessionResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.ITerminateSessionResponse);

        /** TerminateSessionResponse status. */
        public status: string;

        /**
         * Creates a new TerminateSessionResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TerminateSessionResponse instance
         */
        public static create(
            properties?: wtclientrpc.ITerminateSessionResponse
        ): wtclientrpc.TerminateSessionResponse;

        /**
         * Encodes the specified TerminateSessionResponse message. Does not implicitly {@link wtclientrpc.TerminateSessionResponse.verify|verify} messages.
         * @param message TerminateSessionResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.ITerminateSessionResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified TerminateSessionResponse message, length delimited. Does not implicitly {@link wtclientrpc.TerminateSessionResponse.verify|verify} messages.
         * @param message TerminateSessionResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.ITerminateSessionResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a TerminateSessionResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TerminateSessionResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.TerminateSessionResponse;

        /**
         * Decodes a TerminateSessionResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TerminateSessionResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.TerminateSessionResponse;

        /**
         * Verifies a TerminateSessionResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a TerminateSessionResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TerminateSessionResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.TerminateSessionResponse;

        /**
         * Creates a plain object from a TerminateSessionResponse message. Also converts values to other types if specified.
         * @param message TerminateSessionResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.TerminateSessionResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this TerminateSessionResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TerminateSessionResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GetTowerInfoRequest. */
    interface IGetTowerInfoRequest {
        /** GetTowerInfoRequest pubkey */
        pubkey?: Uint8Array | null;

        /** GetTowerInfoRequest include_sessions */
        include_sessions?: boolean | null;

        /** GetTowerInfoRequest exclude_exhausted_sessions */
        exclude_exhausted_sessions?: boolean | null;
    }

    /** Represents a GetTowerInfoRequest. */
    class GetTowerInfoRequest implements IGetTowerInfoRequest {
        /**
         * Constructs a new GetTowerInfoRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.IGetTowerInfoRequest);

        /** GetTowerInfoRequest pubkey. */
        public pubkey: Uint8Array;

        /** GetTowerInfoRequest include_sessions. */
        public include_sessions: boolean;

        /** GetTowerInfoRequest exclude_exhausted_sessions. */
        public exclude_exhausted_sessions: boolean;

        /**
         * Creates a new GetTowerInfoRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GetTowerInfoRequest instance
         */
        public static create(
            properties?: wtclientrpc.IGetTowerInfoRequest
        ): wtclientrpc.GetTowerInfoRequest;

        /**
         * Encodes the specified GetTowerInfoRequest message. Does not implicitly {@link wtclientrpc.GetTowerInfoRequest.verify|verify} messages.
         * @param message GetTowerInfoRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.IGetTowerInfoRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified GetTowerInfoRequest message, length delimited. Does not implicitly {@link wtclientrpc.GetTowerInfoRequest.verify|verify} messages.
         * @param message GetTowerInfoRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.IGetTowerInfoRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a GetTowerInfoRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GetTowerInfoRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.GetTowerInfoRequest;

        /**
         * Decodes a GetTowerInfoRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GetTowerInfoRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.GetTowerInfoRequest;

        /**
         * Verifies a GetTowerInfoRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a GetTowerInfoRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GetTowerInfoRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.GetTowerInfoRequest;

        /**
         * Creates a plain object from a GetTowerInfoRequest message. Also converts values to other types if specified.
         * @param message GetTowerInfoRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.GetTowerInfoRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this GetTowerInfoRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GetTowerInfoRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a TowerSession. */
    interface ITowerSession {
        /** TowerSession num_backups */
        num_backups?: number | null;

        /** TowerSession num_pending_backups */
        num_pending_backups?: number | null;

        /** TowerSession max_backups */
        max_backups?: number | null;

        /** TowerSession sweep_sat_per_byte */
        sweep_sat_per_byte?: number | null;

        /** TowerSession sweep_sat_per_vbyte */
        sweep_sat_per_vbyte?: number | null;

        /** TowerSession id */
        id?: Uint8Array | null;
    }

    /** Represents a TowerSession. */
    class TowerSession implements ITowerSession {
        /**
         * Constructs a new TowerSession.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.ITowerSession);

        /** TowerSession num_backups. */
        public num_backups: number;

        /** TowerSession num_pending_backups. */
        public num_pending_backups: number;

        /** TowerSession max_backups. */
        public max_backups: number;

        /** TowerSession sweep_sat_per_byte. */
        public sweep_sat_per_byte: number;

        /** TowerSession sweep_sat_per_vbyte. */
        public sweep_sat_per_vbyte: number;

        /** TowerSession id. */
        public id: Uint8Array;

        /**
         * Creates a new TowerSession instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TowerSession instance
         */
        public static create(
            properties?: wtclientrpc.ITowerSession
        ): wtclientrpc.TowerSession;

        /**
         * Encodes the specified TowerSession message. Does not implicitly {@link wtclientrpc.TowerSession.verify|verify} messages.
         * @param message TowerSession message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.ITowerSession,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified TowerSession message, length delimited. Does not implicitly {@link wtclientrpc.TowerSession.verify|verify} messages.
         * @param message TowerSession message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.ITowerSession,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a TowerSession message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TowerSession
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.TowerSession;

        /**
         * Decodes a TowerSession message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TowerSession
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.TowerSession;

        /**
         * Verifies a TowerSession message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a TowerSession message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TowerSession
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.TowerSession;

        /**
         * Creates a plain object from a TowerSession message. Also converts values to other types if specified.
         * @param message TowerSession
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.TowerSession,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this TowerSession to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TowerSession
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a Tower. */
    interface ITower {
        /** Tower pubkey */
        pubkey?: Uint8Array | null;

        /** Tower addresses */
        addresses?: string[] | null;

        /** Tower active_session_candidate */
        active_session_candidate?: boolean | null;

        /** Tower num_sessions */
        num_sessions?: number | null;

        /** Tower sessions */
        sessions?: wtclientrpc.ITowerSession[] | null;

        /** Tower session_info */
        session_info?: wtclientrpc.ITowerSessionInfo[] | null;
    }

    /** Represents a Tower. */
    class Tower implements ITower {
        /**
         * Constructs a new Tower.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.ITower);

        /** Tower pubkey. */
        public pubkey: Uint8Array;

        /** Tower addresses. */
        public addresses: string[];

        /** Tower active_session_candidate. */
        public active_session_candidate: boolean;

        /** Tower num_sessions. */
        public num_sessions: number;

        /** Tower sessions. */
        public sessions: wtclientrpc.ITowerSession[];

        /** Tower session_info. */
        public session_info: wtclientrpc.ITowerSessionInfo[];

        /**
         * Creates a new Tower instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Tower instance
         */
        public static create(
            properties?: wtclientrpc.ITower
        ): wtclientrpc.Tower;

        /**
         * Encodes the specified Tower message. Does not implicitly {@link wtclientrpc.Tower.verify|verify} messages.
         * @param message Tower message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.ITower,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified Tower message, length delimited. Does not implicitly {@link wtclientrpc.Tower.verify|verify} messages.
         * @param message Tower message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.ITower,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a Tower message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Tower
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.Tower;

        /**
         * Decodes a Tower message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Tower
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.Tower;

        /**
         * Verifies a Tower message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a Tower message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Tower
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.Tower;

        /**
         * Creates a plain object from a Tower message. Also converts values to other types if specified.
         * @param message Tower
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.Tower,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this Tower to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Tower
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a TowerSessionInfo. */
    interface ITowerSessionInfo {
        /** TowerSessionInfo active_session_candidate */
        active_session_candidate?: boolean | null;

        /** TowerSessionInfo num_sessions */
        num_sessions?: number | null;

        /** TowerSessionInfo sessions */
        sessions?: wtclientrpc.ITowerSession[] | null;

        /** TowerSessionInfo policy_type */
        policy_type?: wtclientrpc.PolicyType | null;
    }

    /** Represents a TowerSessionInfo. */
    class TowerSessionInfo implements ITowerSessionInfo {
        /**
         * Constructs a new TowerSessionInfo.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.ITowerSessionInfo);

        /** TowerSessionInfo active_session_candidate. */
        public active_session_candidate: boolean;

        /** TowerSessionInfo num_sessions. */
        public num_sessions: number;

        /** TowerSessionInfo sessions. */
        public sessions: wtclientrpc.ITowerSession[];

        /** TowerSessionInfo policy_type. */
        public policy_type: wtclientrpc.PolicyType;

        /**
         * Creates a new TowerSessionInfo instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TowerSessionInfo instance
         */
        public static create(
            properties?: wtclientrpc.ITowerSessionInfo
        ): wtclientrpc.TowerSessionInfo;

        /**
         * Encodes the specified TowerSessionInfo message. Does not implicitly {@link wtclientrpc.TowerSessionInfo.verify|verify} messages.
         * @param message TowerSessionInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.ITowerSessionInfo,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified TowerSessionInfo message, length delimited. Does not implicitly {@link wtclientrpc.TowerSessionInfo.verify|verify} messages.
         * @param message TowerSessionInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.ITowerSessionInfo,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a TowerSessionInfo message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TowerSessionInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.TowerSessionInfo;

        /**
         * Decodes a TowerSessionInfo message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TowerSessionInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.TowerSessionInfo;

        /**
         * Verifies a TowerSessionInfo message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a TowerSessionInfo message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TowerSessionInfo
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.TowerSessionInfo;

        /**
         * Creates a plain object from a TowerSessionInfo message. Also converts values to other types if specified.
         * @param message TowerSessionInfo
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.TowerSessionInfo,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this TowerSessionInfo to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TowerSessionInfo
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListTowersRequest. */
    interface IListTowersRequest {
        /** ListTowersRequest include_sessions */
        include_sessions?: boolean | null;

        /** ListTowersRequest exclude_exhausted_sessions */
        exclude_exhausted_sessions?: boolean | null;
    }

    /** Represents a ListTowersRequest. */
    class ListTowersRequest implements IListTowersRequest {
        /**
         * Constructs a new ListTowersRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.IListTowersRequest);

        /** ListTowersRequest include_sessions. */
        public include_sessions: boolean;

        /** ListTowersRequest exclude_exhausted_sessions. */
        public exclude_exhausted_sessions: boolean;

        /**
         * Creates a new ListTowersRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListTowersRequest instance
         */
        public static create(
            properties?: wtclientrpc.IListTowersRequest
        ): wtclientrpc.ListTowersRequest;

        /**
         * Encodes the specified ListTowersRequest message. Does not implicitly {@link wtclientrpc.ListTowersRequest.verify|verify} messages.
         * @param message ListTowersRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.IListTowersRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListTowersRequest message, length delimited. Does not implicitly {@link wtclientrpc.ListTowersRequest.verify|verify} messages.
         * @param message ListTowersRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.IListTowersRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListTowersRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListTowersRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.ListTowersRequest;

        /**
         * Decodes a ListTowersRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListTowersRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.ListTowersRequest;

        /**
         * Verifies a ListTowersRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListTowersRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListTowersRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.ListTowersRequest;

        /**
         * Creates a plain object from a ListTowersRequest message. Also converts values to other types if specified.
         * @param message ListTowersRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.ListTowersRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListTowersRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListTowersRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ListTowersResponse. */
    interface IListTowersResponse {
        /** ListTowersResponse towers */
        towers?: wtclientrpc.ITower[] | null;
    }

    /** Represents a ListTowersResponse. */
    class ListTowersResponse implements IListTowersResponse {
        /**
         * Constructs a new ListTowersResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.IListTowersResponse);

        /** ListTowersResponse towers. */
        public towers: wtclientrpc.ITower[];

        /**
         * Creates a new ListTowersResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ListTowersResponse instance
         */
        public static create(
            properties?: wtclientrpc.IListTowersResponse
        ): wtclientrpc.ListTowersResponse;

        /**
         * Encodes the specified ListTowersResponse message. Does not implicitly {@link wtclientrpc.ListTowersResponse.verify|verify} messages.
         * @param message ListTowersResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.IListTowersResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified ListTowersResponse message, length delimited. Does not implicitly {@link wtclientrpc.ListTowersResponse.verify|verify} messages.
         * @param message ListTowersResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.IListTowersResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a ListTowersResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ListTowersResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.ListTowersResponse;

        /**
         * Decodes a ListTowersResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ListTowersResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.ListTowersResponse;

        /**
         * Verifies a ListTowersResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a ListTowersResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ListTowersResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.ListTowersResponse;

        /**
         * Creates a plain object from a ListTowersResponse message. Also converts values to other types if specified.
         * @param message ListTowersResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.ListTowersResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this ListTowersResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ListTowersResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a StatsRequest. */
    interface IStatsRequest {}

    /** Represents a StatsRequest. */
    class StatsRequest implements IStatsRequest {
        /**
         * Constructs a new StatsRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.IStatsRequest);

        /**
         * Creates a new StatsRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StatsRequest instance
         */
        public static create(
            properties?: wtclientrpc.IStatsRequest
        ): wtclientrpc.StatsRequest;

        /**
         * Encodes the specified StatsRequest message. Does not implicitly {@link wtclientrpc.StatsRequest.verify|verify} messages.
         * @param message StatsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.IStatsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified StatsRequest message, length delimited. Does not implicitly {@link wtclientrpc.StatsRequest.verify|verify} messages.
         * @param message StatsRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.IStatsRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a StatsRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StatsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.StatsRequest;

        /**
         * Decodes a StatsRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StatsRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.StatsRequest;

        /**
         * Verifies a StatsRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a StatsRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StatsRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.StatsRequest;

        /**
         * Creates a plain object from a StatsRequest message. Also converts values to other types if specified.
         * @param message StatsRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.StatsRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this StatsRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StatsRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a StatsResponse. */
    interface IStatsResponse {
        /** StatsResponse num_backups */
        num_backups?: number | null;

        /** StatsResponse num_pending_backups */
        num_pending_backups?: number | null;

        /** StatsResponse num_failed_backups */
        num_failed_backups?: number | null;

        /** StatsResponse num_sessions_acquired */
        num_sessions_acquired?: number | null;

        /** StatsResponse num_sessions_exhausted */
        num_sessions_exhausted?: number | null;
    }

    /** Represents a StatsResponse. */
    class StatsResponse implements IStatsResponse {
        /**
         * Constructs a new StatsResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.IStatsResponse);

        /** StatsResponse num_backups. */
        public num_backups: number;

        /** StatsResponse num_pending_backups. */
        public num_pending_backups: number;

        /** StatsResponse num_failed_backups. */
        public num_failed_backups: number;

        /** StatsResponse num_sessions_acquired. */
        public num_sessions_acquired: number;

        /** StatsResponse num_sessions_exhausted. */
        public num_sessions_exhausted: number;

        /**
         * Creates a new StatsResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StatsResponse instance
         */
        public static create(
            properties?: wtclientrpc.IStatsResponse
        ): wtclientrpc.StatsResponse;

        /**
         * Encodes the specified StatsResponse message. Does not implicitly {@link wtclientrpc.StatsResponse.verify|verify} messages.
         * @param message StatsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.IStatsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified StatsResponse message, length delimited. Does not implicitly {@link wtclientrpc.StatsResponse.verify|verify} messages.
         * @param message StatsResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.IStatsResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a StatsResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StatsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.StatsResponse;

        /**
         * Decodes a StatsResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StatsResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.StatsResponse;

        /**
         * Verifies a StatsResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a StatsResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StatsResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.StatsResponse;

        /**
         * Creates a plain object from a StatsResponse message. Also converts values to other types if specified.
         * @param message StatsResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.StatsResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this StatsResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StatsResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** PolicyType enum. */
    enum PolicyType {
        LEGACY = 0,
        ANCHOR = 1,
        TAPROOT = 2
    }

    /** Properties of a PolicyRequest. */
    interface IPolicyRequest {
        /** PolicyRequest policy_type */
        policy_type?: wtclientrpc.PolicyType | null;
    }

    /** Represents a PolicyRequest. */
    class PolicyRequest implements IPolicyRequest {
        /**
         * Constructs a new PolicyRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.IPolicyRequest);

        /** PolicyRequest policy_type. */
        public policy_type: wtclientrpc.PolicyType;

        /**
         * Creates a new PolicyRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PolicyRequest instance
         */
        public static create(
            properties?: wtclientrpc.IPolicyRequest
        ): wtclientrpc.PolicyRequest;

        /**
         * Encodes the specified PolicyRequest message. Does not implicitly {@link wtclientrpc.PolicyRequest.verify|verify} messages.
         * @param message PolicyRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.IPolicyRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PolicyRequest message, length delimited. Does not implicitly {@link wtclientrpc.PolicyRequest.verify|verify} messages.
         * @param message PolicyRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.IPolicyRequest,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PolicyRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PolicyRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.PolicyRequest;

        /**
         * Decodes a PolicyRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PolicyRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.PolicyRequest;

        /**
         * Verifies a PolicyRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PolicyRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PolicyRequest
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.PolicyRequest;

        /**
         * Creates a plain object from a PolicyRequest message. Also converts values to other types if specified.
         * @param message PolicyRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.PolicyRequest,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PolicyRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PolicyRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PolicyResponse. */
    interface IPolicyResponse {
        /** PolicyResponse max_updates */
        max_updates?: number | null;

        /** PolicyResponse sweep_sat_per_byte */
        sweep_sat_per_byte?: number | null;

        /** PolicyResponse sweep_sat_per_vbyte */
        sweep_sat_per_vbyte?: number | null;
    }

    /** Represents a PolicyResponse. */
    class PolicyResponse implements IPolicyResponse {
        /**
         * Constructs a new PolicyResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: wtclientrpc.IPolicyResponse);

        /** PolicyResponse max_updates. */
        public max_updates: number;

        /** PolicyResponse sweep_sat_per_byte. */
        public sweep_sat_per_byte: number;

        /** PolicyResponse sweep_sat_per_vbyte. */
        public sweep_sat_per_vbyte: number;

        /**
         * Creates a new PolicyResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PolicyResponse instance
         */
        public static create(
            properties?: wtclientrpc.IPolicyResponse
        ): wtclientrpc.PolicyResponse;

        /**
         * Encodes the specified PolicyResponse message. Does not implicitly {@link wtclientrpc.PolicyResponse.verify|verify} messages.
         * @param message PolicyResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(
            message: wtclientrpc.IPolicyResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Encodes the specified PolicyResponse message, length delimited. Does not implicitly {@link wtclientrpc.PolicyResponse.verify|verify} messages.
         * @param message PolicyResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(
            message: wtclientrpc.IPolicyResponse,
            writer?: $protobuf.Writer
        ): $protobuf.Writer;

        /**
         * Decodes a PolicyResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PolicyResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(
            reader: $protobuf.Reader | Uint8Array,
            length?: number
        ): wtclientrpc.PolicyResponse;

        /**
         * Decodes a PolicyResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PolicyResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(
            reader: $protobuf.Reader | Uint8Array
        ): wtclientrpc.PolicyResponse;

        /**
         * Verifies a PolicyResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): string | null;

        /**
         * Creates a PolicyResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PolicyResponse
         */
        public static fromObject(object: {
            [k: string]: any;
        }): wtclientrpc.PolicyResponse;

        /**
         * Creates a plain object from a PolicyResponse message. Also converts values to other types if specified.
         * @param message PolicyResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(
            message: wtclientrpc.PolicyResponse,
            options?: $protobuf.IConversionOptions
        ): { [k: string]: any };

        /**
         * Converts this PolicyResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PolicyResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }
}
