<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema elementFormDefault="qualified" version="1.0" targetNamespace="http://lightningj.org/xsd/lndjapi_1_0" xmlns="http://lightningj.org/xsd/lndjapi_1_0" xmlns:verrpc="http://lightningj.org/xsd/verrpc_1_0" xmlns:chainnotifier="http://lightningj.org/xsd/chainnotifier_1_0" xmlns:autopilot="http://lightningj.org/xsd/autopilot_1_0" xmlns:peers="http://lightningj.org/xsd/peers_1_0" xmlns:chainkit="http://lightningj.org/xsd/chainkit_1_0" xmlns:watchtower="http://lightningj.org/xsd/watchtower_1_0" xmlns:walletkit="http://lightningj.org/xsd/walletkit_1_0" xmlns:router="http://lightningj.org/xsd/router_1_0" xmlns:dev="http://lightningj.org/xsd/dev_1_0" xmlns:invoices="http://lightningj.org/xsd/invoices_1_0" xmlns:tns="http://lightningj.org/xsd/lndjapi_1_0" xmlns:wtclient="http://lightningj.org/xsd/wtclient_1_0" xmlns:stateservice="http://lightningj.org/xsd/stateservice_1_0" xmlns:neutrino="http://lightningj.org/xsd/neutrino_1_0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:walletunlocker="http://lightningj.org/xsd/walletunlocker_1_0" xmlns:signer="http://lightningj.org/xsd/signer_1_0">

  <xs:element name="AMP" type="AMPType"/>

  <xs:element name="AMPInvoiceState" type="AMPInvoiceStateType"/>

  <xs:element name="AMPRecord" type="AMPRecordType"/>

  <xs:element name="AbandonChannelRequest" type="AbandonChannelRequestType"/>

  <xs:element name="AbandonChannelResponse" type="AbandonChannelResponseType"/>

  <xs:element name="AddInvoiceResponse" type="AddInvoiceResponseType"/>

  <xs:element name="AliasMap" type="AliasMapType"/>

  <xs:element name="Amount" type="AmountType"/>

  <xs:element name="BakeMacaroonRequest" type="BakeMacaroonRequestType"/>

  <xs:element name="BakeMacaroonResponse" type="BakeMacaroonResponseType"/>

  <xs:element name="BatchOpenChannel" type="BatchOpenChannelType"/>

  <xs:element name="BatchOpenChannelRequest" type="BatchOpenChannelRequestType"/>

  <xs:element name="BatchOpenChannelResponse" type="BatchOpenChannelResponseType"/>

  <xs:element name="Chain" type="ChainType"/>

  <xs:element name="ChanBackupExportRequest" type="ChanBackupExportRequestType"/>

  <xs:element name="ChanBackupSnapshot" type="ChanBackupSnapshotType"/>

  <xs:element name="ChanInfoRequest" type="ChanInfoRequestType"/>

  <xs:element name="ChanPointShim" type="ChanPointShimType"/>

  <xs:element name="Channel" type="ChannelType"/>

  <xs:element name="ChannelAcceptRequest" type="ChannelAcceptRequestType"/>

  <xs:element name="ChannelAcceptResponse" type="ChannelAcceptResponseType"/>

  <xs:element name="ChannelBackup" type="ChannelBackupType"/>

  <xs:element name="ChannelBackupSubscription" type="ChannelBackupSubscriptionType"/>

  <xs:element name="ChannelBackups" type="ChannelBackupsType"/>

  <xs:element name="ChannelBalanceRequest" type="ChannelBalanceRequestType"/>

  <xs:element name="ChannelBalanceResponse" type="ChannelBalanceResponseType"/>

  <xs:element name="ChannelCloseSummary" type="ChannelCloseSummaryType"/>

  <xs:element name="ChannelCloseUpdate" type="ChannelCloseUpdateType"/>

  <xs:element name="ChannelConstraints" type="ChannelConstraintsType"/>

  <xs:element name="ChannelEdge" type="ChannelEdgeType"/>

  <xs:element name="ChannelEdgeUpdate" type="ChannelEdgeUpdateType"/>

  <xs:element name="ChannelEventSubscription" type="ChannelEventSubscriptionType"/>

  <xs:element name="ChannelEventUpdate" type="ChannelEventUpdateType"/>

  <xs:element name="ChannelFeeReport" type="ChannelFeeReportType"/>

  <xs:element name="ChannelGraph" type="ChannelGraphType"/>

  <xs:element name="ChannelGraphRequest" type="ChannelGraphRequestType"/>

  <xs:element name="ChannelOpenUpdate" type="ChannelOpenUpdateType"/>

  <xs:element name="ChannelPoint" type="ChannelPointType"/>

  <xs:element name="ChannelUpdate" type="ChannelUpdateType"/>

  <xs:element name="CheckMacPermRequest" type="CheckMacPermRequestType"/>

  <xs:element name="CheckMacPermResponse" type="CheckMacPermResponseType"/>

  <xs:element name="CloseChannelRequest" type="CloseChannelRequestType"/>

  <xs:element name="CloseStatusUpdate" type="CloseStatusUpdateType"/>

  <xs:element name="ClosedChannelUpdate" type="ClosedChannelUpdateType"/>

  <xs:element name="ClosedChannelsRequest" type="ClosedChannelsRequestType"/>

  <xs:element name="ClosedChannelsResponse" type="ClosedChannelsResponseType"/>

  <xs:element name="ConfirmationUpdate" type="ConfirmationUpdateType"/>

  <xs:element name="ConnectPeerRequest" type="ConnectPeerRequestType"/>

  <xs:element name="ConnectPeerResponse" type="ConnectPeerResponseType"/>

  <xs:element name="CustomMessage" type="CustomMessageType"/>

  <xs:element name="DebugLevelRequest" type="DebugLevelRequestType"/>

  <xs:element name="DebugLevelResponse" type="DebugLevelResponseType"/>

  <xs:element name="DeleteAllPaymentsRequest" type="DeleteAllPaymentsRequestType"/>

  <xs:element name="DeleteAllPaymentsResponse" type="DeleteAllPaymentsResponseType"/>

  <xs:element name="DeleteMacaroonIDRequest" type="DeleteMacaroonIDRequestType"/>

  <xs:element name="DeleteMacaroonIDResponse" type="DeleteMacaroonIDResponseType"/>

  <xs:element name="DeletePaymentRequest" type="DeletePaymentRequestType"/>

  <xs:element name="DeletePaymentResponse" type="DeletePaymentResponseType"/>

  <xs:element name="DisconnectPeerRequest" type="DisconnectPeerRequestType"/>

  <xs:element name="DisconnectPeerResponse" type="DisconnectPeerResponseType"/>

  <xs:element name="EdgeLocator" type="EdgeLocatorType"/>

  <xs:element name="EstimateFeeRequest" type="EstimateFeeRequestType"/>

  <xs:element name="EstimateFeeResponse" type="EstimateFeeResponseType"/>

  <xs:element name="ExportChannelBackupRequest" type="ExportChannelBackupRequestType"/>

  <xs:element name="FailedUpdate" type="FailedUpdateType"/>

  <xs:element name="Failure" type="FailureType"/>

  <xs:element name="Feature" type="FeatureType"/>

  <xs:element name="FeeLimit" type="FeeLimitType"/>

  <xs:element name="FeeReportRequest" type="FeeReportRequestType"/>

  <xs:element name="FeeReportResponse" type="FeeReportResponseType"/>

  <xs:element name="FloatMetric" type="FloatMetricType"/>

  <xs:element name="ForwardingEvent" type="ForwardingEventType"/>

  <xs:element name="ForwardingHistoryRequest" type="ForwardingHistoryRequestType"/>

  <xs:element name="ForwardingHistoryResponse" type="ForwardingHistoryResponseType"/>

  <xs:element name="FundingPsbtFinalize" type="FundingPsbtFinalizeType"/>

  <xs:element name="FundingPsbtVerify" type="FundingPsbtVerifyType"/>

  <xs:element name="FundingShim" type="FundingShimType"/>

  <xs:element name="FundingShimCancel" type="FundingShimCancelType"/>

  <xs:element name="FundingStateStepResp" type="FundingStateStepRespType"/>

  <xs:element name="FundingTransitionMsg" type="FundingTransitionMsgType"/>

  <xs:element name="GetInfoRequest" type="GetInfoRequestType"/>

  <xs:element name="GetInfoResponse" type="GetInfoResponseType"/>

  <xs:element name="GetRecoveryInfoRequest" type="GetRecoveryInfoRequestType"/>

  <xs:element name="GetRecoveryInfoResponse" type="GetRecoveryInfoResponseType"/>

  <xs:element name="GetTransactionsRequest" type="GetTransactionsRequestType"/>

  <xs:element name="GraphTopologySubscription" type="GraphTopologySubscriptionType"/>

  <xs:element name="GraphTopologyUpdate" type="GraphTopologyUpdateType"/>

  <xs:element name="HTLC" type="HTLCType"/>

  <xs:element name="HTLCAttempt" type="HTLCAttemptType"/>

  <xs:element name="Hop" type="HopType"/>

  <xs:element name="HopHint" type="HopHintType"/>

  <xs:element name="InterceptFeedback" type="InterceptFeedbackType"/>

  <xs:element name="Invoice" type="InvoiceType"/>

  <xs:element name="InvoiceHTLC" type="InvoiceHTLCType"/>

  <xs:element name="InvoiceSubscription" type="InvoiceSubscriptionType"/>

  <xs:element name="KeyDescriptor" type="KeyDescriptorType"/>

  <xs:element name="KeyLocator" type="KeyLocatorType"/>

  <xs:element name="LightningAddress" type="LightningAddressType"/>

  <xs:element name="LightningNode" type="LightningNodeType"/>

  <xs:element name="ListAliasesRequest" type="ListAliasesRequestType"/>

  <xs:element name="ListAliasesResponse" type="ListAliasesResponseType"/>

  <xs:element name="ListChannelsRequest" type="ListChannelsRequestType"/>

  <xs:element name="ListChannelsResponse" type="ListChannelsResponseType"/>

  <xs:element name="ListInvoiceRequest" type="ListInvoiceRequestType"/>

  <xs:element name="ListInvoiceResponse" type="ListInvoiceResponseType"/>

  <xs:element name="ListMacaroonIDsRequest" type="ListMacaroonIDsRequestType"/>

  <xs:element name="ListMacaroonIDsResponse" type="ListMacaroonIDsResponseType"/>

  <xs:element name="ListPaymentsRequest" type="ListPaymentsRequestType"/>

  <xs:element name="ListPaymentsResponse" type="ListPaymentsResponseType"/>

  <xs:element name="ListPeersRequest" type="ListPeersRequestType"/>

  <xs:element name="ListPeersResponse" type="ListPeersResponseType"/>

  <xs:element name="ListPermissionsRequest" type="ListPermissionsRequestType"/>

  <xs:element name="ListPermissionsResponse" type="ListPermissionsResponseType"/>

  <xs:element name="ListUnspentRequest" type="ListUnspentRequestType"/>

  <xs:element name="ListUnspentResponse" type="ListUnspentResponseType"/>

  <xs:element name="LookupHtlcResolutionRequest" type="LookupHtlcResolutionRequestType"/>

  <xs:element name="LookupHtlcResolutionResponse" type="LookupHtlcResolutionResponseType"/>

  <xs:element name="MPPRecord" type="MPPRecordType"/>

  <xs:element name="MacaroonId" type="MacaroonIdType"/>

  <xs:element name="MacaroonPermission" type="MacaroonPermissionType"/>

  <xs:element name="MacaroonPermissionList" type="MacaroonPermissionListType"/>

  <xs:element name="MiddlewareRegistration" type="MiddlewareRegistrationType"/>

  <xs:element name="MultiChanBackup" type="MultiChanBackupType"/>

  <xs:element name="NetworkInfo" type="NetworkInfoType"/>

  <xs:element name="NetworkInfoRequest" type="NetworkInfoRequestType"/>

  <xs:element name="NewAddressRequest" type="NewAddressRequestType"/>

  <xs:element name="NewAddressResponse" type="NewAddressResponseType"/>

  <xs:element name="NodeAddress" type="NodeAddressType"/>

  <xs:element name="NodeInfo" type="NodeInfoType"/>

  <xs:element name="NodeInfoRequest" type="NodeInfoRequestType"/>

  <xs:element name="NodeMetricsRequest" type="NodeMetricsRequestType"/>

  <xs:element name="NodeMetricsResponse" type="NodeMetricsResponseType"/>

  <xs:element name="NodePair" type="NodePairType"/>

  <xs:element name="NodeUpdate" type="NodeUpdateType"/>

  <xs:element name="Op" type="OpType"/>

  <xs:element name="OpenChannelRequest" type="OpenChannelRequestType"/>

  <xs:element name="OpenStatusUpdate" type="OpenStatusUpdateType"/>

  <xs:element name="OutPoint" type="OutPointType"/>

  <xs:element name="OutputDetail" type="OutputDetailType"/>

  <xs:element name="PayReq" type="PayReqType"/>

  <xs:element name="PayReqString" type="PayReqStringType"/>

  <xs:element name="Payment" type="PaymentType"/>

  <xs:element name="PaymentHash" type="PaymentHashType"/>

  <xs:element name="Peer" type="PeerType"/>

  <xs:element name="PeerEvent" type="PeerEventType"/>

  <xs:element name="PeerEventSubscription" type="PeerEventSubscriptionType"/>

  <xs:element name="PendingChannelsRequest" type="PendingChannelsRequestType"/>

  <xs:element name="PendingChannelsResponse" type="PendingChannelsResponseType"/>

  <xs:element name="PendingHTLC" type="PendingHTLCType"/>

  <xs:element name="PendingUpdate" type="PendingUpdateType"/>

  <xs:element name="PolicyUpdateRequest" type="PolicyUpdateRequestType"/>

  <xs:element name="PolicyUpdateResponse" type="PolicyUpdateResponseType"/>

  <xs:element name="PreviousOutPoint" type="PreviousOutPointType"/>

  <xs:element name="PsbtShim" type="PsbtShimType"/>

  <xs:element name="QueryRoutesRequest" type="QueryRoutesRequestType"/>

  <xs:element name="QueryRoutesResponse" type="QueryRoutesResponseType"/>

  <xs:element name="RPCMessage" type="RPCMessageType"/>

  <xs:element name="RPCMiddlewareRequest" type="RPCMiddlewareRequestType"/>

  <xs:element name="RPCMiddlewareResponse" type="RPCMiddlewareResponseType"/>

  <xs:element name="ReadyForPsbtFunding" type="ReadyForPsbtFundingType"/>

  <xs:element name="Resolution" type="ResolutionType"/>

  <xs:element name="RestoreBackupResponse" type="RestoreBackupResponseType"/>

  <xs:element name="RestoreChanBackupRequest" type="RestoreChanBackupRequestType"/>

  <xs:element name="Route" type="RouteType"/>

  <xs:element name="RouteHint" type="RouteHintType"/>

  <xs:element name="RoutingPolicy" type="RoutingPolicyType"/>

  <xs:element name="SendCoinsRequest" type="SendCoinsRequestType"/>

  <xs:element name="SendCoinsResponse" type="SendCoinsResponseType"/>

  <xs:element name="SendCustomMessageRequest" type="SendCustomMessageRequestType"/>

  <xs:element name="SendCustomMessageResponse" type="SendCustomMessageResponseType"/>

  <xs:element name="SendManyRequest" type="SendManyRequestType"/>

  <xs:element name="SendManyResponse" type="SendManyResponseType"/>

  <xs:element name="SendRequest" type="SendRequestType"/>

  <xs:element name="SendResponse" type="SendResponseType"/>

  <xs:element name="SendToRouteRequest" type="SendToRouteRequestType"/>

  <xs:element name="SetID" type="SetIDType"/>

  <xs:element name="SignMessageRequest" type="SignMessageRequestType"/>

  <xs:element name="SignMessageResponse" type="SignMessageResponseType"/>

  <xs:element name="StopRequest" type="StopRequestType"/>

  <xs:element name="StopResponse" type="StopResponseType"/>

  <xs:element name="StreamAuth" type="StreamAuthType"/>

  <xs:element name="SubscribeCustomMessagesRequest" type="SubscribeCustomMessagesRequestType"/>

  <xs:element name="TimestampedError" type="TimestampedErrorType"/>

  <xs:element name="Transaction" type="TransactionType"/>

  <xs:element name="TransactionDetails" type="TransactionDetailsType"/>

  <xs:element name="Utxo" type="UtxoType"/>

  <xs:element name="VerifyChanBackupResponse" type="VerifyChanBackupResponseType"/>

  <xs:element name="VerifyMessageRequest" type="VerifyMessageRequestType"/>

  <xs:element name="VerifyMessageResponse" type="VerifyMessageResponseType"/>

  <xs:element name="WalletAccountBalance" type="WalletAccountBalanceType"/>

  <xs:element name="WalletBalanceRequest" type="WalletBalanceRequestType"/>

  <xs:element name="WalletBalanceResponse" type="WalletBalanceResponseType"/>

  <xs:complexType name="LookupHtlcResolutionRequestType">
    <xs:sequence>
      <xs:element name="chanId" type="xs:long"/>
      <xs:element name="htlcIndex" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="LookupHtlcResolutionResponseType">
    <xs:sequence>
      <xs:element name="settled" type="xs:boolean"/>
      <xs:element name="offchain" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SubscribeCustomMessagesRequestType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="CustomMessageType">
    <xs:sequence>
      <xs:element name="peer" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="type" type="xs:int"/>
      <xs:element name="data" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SendCustomMessageRequestType">
    <xs:sequence>
      <xs:element name="peer" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="type" type="xs:int"/>
      <xs:element name="data" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SendCustomMessageResponseType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="UtxoType">
    <xs:sequence>
      <xs:element name="addressType" type="addressType" minOccurs="0"/>
      <xs:element name="address" type="xs:string" minOccurs="0"/>
      <xs:element name="amountSat" type="xs:long"/>
      <xs:element name="pkScript" type="xs:string" minOccurs="0"/>
      <xs:element name="outpoint" type="OutPointType" minOccurs="0"/>
      <xs:element name="confirmations" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="OutPointType">
    <xs:sequence>
      <xs:element name="txidBytes" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="txidStr" type="xs:string" minOccurs="0"/>
      <xs:element name="outputIndex" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="OutputDetailType">
    <xs:sequence>
      <xs:element name="outputType" type="outputScriptType" minOccurs="0"/>
      <xs:element name="address" type="xs:string" minOccurs="0"/>
      <xs:element name="pkScript" type="xs:string" minOccurs="0"/>
      <xs:element name="outputIndex" type="xs:long"/>
      <xs:element name="amount" type="xs:long"/>
      <xs:element name="isOurAddress" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="TransactionType">
    <xs:sequence>
      <xs:element name="txHash" type="xs:string" minOccurs="0"/>
      <xs:element name="amount" type="xs:long"/>
      <xs:element name="numConfirmations" type="xs:int"/>
      <xs:element name="blockHash" type="xs:string" minOccurs="0"/>
      <xs:element name="blockHeight" type="xs:int"/>
      <xs:element name="timeStamp" type="xs:long"/>
      <xs:element name="totalFees" type="xs:long"/>
      <xs:element name="dest_addresses" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="destAddresses" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="output_details" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="OutputDetail" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="rawTxHex" type="xs:string" minOccurs="0"/>
      <xs:element name="label" type="xs:string" minOccurs="0"/>
      <xs:element name="previous_outpoints" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="PreviousOutPoint" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PreviousOutPointType">
    <xs:sequence>
      <xs:element name="outpoint" type="xs:string" minOccurs="0"/>
      <xs:element name="isOurOutput" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="GetTransactionsRequestType">
    <xs:sequence>
      <xs:element name="startHeight" type="xs:int"/>
      <xs:element name="endHeight" type="xs:int"/>
      <xs:element name="account" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="TransactionDetailsType">
    <xs:sequence>
      <xs:element name="transactions" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="Transaction" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FeeLimitType">
    <xs:sequence>
      <xs:element name="fixed" type="xs:long"/>
      <xs:element name="fixedMsat" type="xs:long"/>
      <xs:element name="percent" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SendRequestType">
    <xs:sequence>
      <xs:element name="dest" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="destString" type="xs:string" minOccurs="0"/>
      <xs:element name="amt" type="xs:long"/>
      <xs:element name="amtMsat" type="xs:long"/>
      <xs:element name="paymentHash" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="paymentHashString" type="xs:string" minOccurs="0"/>
      <xs:element name="paymentRequest" type="xs:string" minOccurs="0"/>
      <xs:element name="finalCltvDelta" type="xs:int"/>
      <xs:element name="feeLimit" type="FeeLimitType" minOccurs="0"/>
      <xs:element name="outgoingChanId" type="xs:long"/>
      <xs:element name="lastHopPubkey" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="cltvLimit" type="xs:int"/>
      <xs:element name="destCustomRecordsEntries" type="SendRequestDestCustomRecordsEntriesType" minOccurs="0"/>
      <xs:element name="allowSelfPayment" type="xs:boolean"/>
      <xs:element name="destFeatures" type="featureBit" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="paymentAddr" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SendRequestDestCustomRecordsEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="SendRequestDestCustomRecordsEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SendRequestDestCustomRecordsEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:long"/>
      <xs:element name="value" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SendResponseType">
    <xs:sequence>
      <xs:element name="paymentError" type="xs:string" minOccurs="0"/>
      <xs:element name="paymentPreimage" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="paymentRoute" type="RouteType" minOccurs="0"/>
      <xs:element name="paymentHash" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RouteType">
    <xs:sequence>
      <xs:element name="totalTimeLock" type="xs:int"/>
      <xs:element name="totalFees" type="xs:long"/>
      <xs:element name="totalAmt" type="xs:long"/>
      <xs:element name="hops" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="Hop" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="totalFeesMsat" type="xs:long"/>
      <xs:element name="totalAmtMsat" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="HopType">
    <xs:sequence>
      <xs:element name="chanId" type="xs:long"/>
      <xs:element name="chanCapacity" type="xs:long"/>
      <xs:element name="amtToForward" type="xs:long"/>
      <xs:element name="fee" type="xs:long"/>
      <xs:element name="expiry" type="xs:int"/>
      <xs:element name="amtToForwardMsat" type="xs:long"/>
      <xs:element name="feeMsat" type="xs:long"/>
      <xs:element name="pubKey" type="xs:string" minOccurs="0"/>
      <xs:element name="tlvPayload" type="xs:boolean"/>
      <xs:element name="mppRecord" type="MPPRecordType" minOccurs="0"/>
      <xs:element name="ampRecord" type="AMPRecordType" minOccurs="0"/>
      <xs:element name="customRecordsEntries" type="HopCustomRecordsEntriesType" minOccurs="0"/>
      <xs:element name="metadata" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="MPPRecordType">
    <xs:sequence>
      <xs:element name="paymentAddr" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="totalAmtMsat" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AMPRecordType">
    <xs:sequence>
      <xs:element name="rootShare" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="setId" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="childIndex" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="HopCustomRecordsEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="HopCustomRecordsEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="HopCustomRecordsEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:long"/>
      <xs:element name="value" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SendToRouteRequestType">
    <xs:sequence>
      <xs:element name="paymentHash" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="paymentHashString" type="xs:string" minOccurs="0"/>
      <xs:element name="route" type="RouteType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelAcceptRequestType">
    <xs:sequence>
      <xs:element name="nodePubkey" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="chainHash" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="pendingChanId" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="fundingAmt" type="xs:long"/>
      <xs:element name="pushAmt" type="xs:long"/>
      <xs:element name="dustLimit" type="xs:long"/>
      <xs:element name="maxValueInFlight" type="xs:long"/>
      <xs:element name="channelReserve" type="xs:long"/>
      <xs:element name="minHtlc" type="xs:long"/>
      <xs:element name="feePerKw" type="xs:long"/>
      <xs:element name="csvDelay" type="xs:int"/>
      <xs:element name="maxAcceptedHtlcs" type="xs:int"/>
      <xs:element name="channelFlags" type="xs:int"/>
      <xs:element name="commitmentType" type="commitmentType" minOccurs="0"/>
      <xs:element name="wantsZeroConf" type="xs:boolean"/>
      <xs:element name="wantsScidAlias" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelAcceptResponseType">
    <xs:sequence>
      <xs:element name="accept" type="xs:boolean"/>
      <xs:element name="pendingChanId" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="error" type="xs:string" minOccurs="0"/>
      <xs:element name="upfrontShutdown" type="xs:string" minOccurs="0"/>
      <xs:element name="csvDelay" type="xs:int"/>
      <xs:element name="reserveSat" type="xs:long"/>
      <xs:element name="inFlightMaxMsat" type="xs:long"/>
      <xs:element name="maxHtlcCount" type="xs:int"/>
      <xs:element name="minHtlcIn" type="xs:long"/>
      <xs:element name="minAcceptDepth" type="xs:int"/>
      <xs:element name="zeroConf" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelPointType">
    <xs:sequence>
      <xs:element name="fundingTxidBytes" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="fundingTxidStr" type="xs:string" minOccurs="0"/>
      <xs:element name="outputIndex" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="LightningAddressType">
    <xs:sequence>
      <xs:element name="pubkey" type="xs:string" minOccurs="0"/>
      <xs:element name="host" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="EstimateFeeRequestType">
    <xs:sequence>
      <xs:element name="addrToAmountEntries" type="EstimateFeeRequestAddrToAmountEntriesType" minOccurs="0"/>
      <xs:element name="targetConf" type="xs:int"/>
      <xs:element name="minConfs" type="xs:int"/>
      <xs:element name="spendUnconfirmed" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="EstimateFeeRequestAddrToAmountEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="EstimateFeeRequestAddrToAmountEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="EstimateFeeRequestAddrToAmountEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:string" minOccurs="0"/>
      <xs:element name="value" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="EstimateFeeResponseType">
    <xs:sequence>
      <xs:element name="feeSat" type="xs:long"/>
      <xs:element name="feerateSatPerByte" type="xs:long"/>
      <xs:element name="satPerVbyte" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SendManyRequestType">
    <xs:sequence>
      <xs:element name="addrToAmountEntries" type="SendManyRequestAddrToAmountEntriesType" minOccurs="0"/>
      <xs:element name="targetConf" type="xs:int"/>
      <xs:element name="satPerVbyte" type="xs:long"/>
      <xs:element name="satPerByte" type="xs:long"/>
      <xs:element name="label" type="xs:string" minOccurs="0"/>
      <xs:element name="minConfs" type="xs:int"/>
      <xs:element name="spendUnconfirmed" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SendManyRequestAddrToAmountEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="SendManyRequestAddrToAmountEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SendManyRequestAddrToAmountEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:string" minOccurs="0"/>
      <xs:element name="value" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SendManyResponseType">
    <xs:sequence>
      <xs:element name="txid" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SendCoinsRequestType">
    <xs:sequence>
      <xs:element name="addr" type="xs:string" minOccurs="0"/>
      <xs:element name="amount" type="xs:long"/>
      <xs:element name="targetConf" type="xs:int"/>
      <xs:element name="satPerVbyte" type="xs:long"/>
      <xs:element name="satPerByte" type="xs:long"/>
      <xs:element name="sendAll" type="xs:boolean"/>
      <xs:element name="label" type="xs:string" minOccurs="0"/>
      <xs:element name="minConfs" type="xs:int"/>
      <xs:element name="spendUnconfirmed" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SendCoinsResponseType">
    <xs:sequence>
      <xs:element name="txid" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListUnspentRequestType">
    <xs:sequence>
      <xs:element name="minConfs" type="xs:int"/>
      <xs:element name="maxConfs" type="xs:int"/>
      <xs:element name="account" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListUnspentResponseType">
    <xs:sequence>
      <xs:element name="utxos" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="Utxo" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NewAddressRequestType">
    <xs:sequence>
      <xs:element name="type" type="addressType" minOccurs="0"/>
      <xs:element name="account" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NewAddressResponseType">
    <xs:sequence>
      <xs:element name="address" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SignMessageRequestType">
    <xs:sequence>
      <xs:element name="msg" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="singleHash" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SignMessageResponseType">
    <xs:sequence>
      <xs:element name="signature" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="VerifyMessageRequestType">
    <xs:sequence>
      <xs:element name="msg" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="signature" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="VerifyMessageResponseType">
    <xs:sequence>
      <xs:element name="valid" type="xs:boolean"/>
      <xs:element name="pubkey" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ConnectPeerRequestType">
    <xs:sequence>
      <xs:element name="addr" type="LightningAddressType" minOccurs="0"/>
      <xs:element name="perm" type="xs:boolean"/>
      <xs:element name="timeout" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ConnectPeerResponseType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="DisconnectPeerRequestType">
    <xs:sequence>
      <xs:element name="pubKey" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DisconnectPeerResponseType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="HTLCType">
    <xs:sequence>
      <xs:element name="incoming" type="xs:boolean"/>
      <xs:element name="amount" type="xs:long"/>
      <xs:element name="hashLock" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="expirationHeight" type="xs:int"/>
      <xs:element name="htlcIndex" type="xs:long"/>
      <xs:element name="forwardingChannel" type="xs:long"/>
      <xs:element name="forwardingHtlcIndex" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelConstraintsType">
    <xs:sequence>
      <xs:element name="csvDelay" type="xs:int"/>
      <xs:element name="chanReserveSat" type="xs:long"/>
      <xs:element name="dustLimitSat" type="xs:long"/>
      <xs:element name="maxPendingAmtMsat" type="xs:long"/>
      <xs:element name="minHtlcMsat" type="xs:long"/>
      <xs:element name="maxAcceptedHtlcs" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelType">
    <xs:sequence>
      <xs:element name="active" type="xs:boolean"/>
      <xs:element name="remotePubkey" type="xs:string" minOccurs="0"/>
      <xs:element name="channelPoint" type="xs:string" minOccurs="0"/>
      <xs:element name="chanId" type="xs:long"/>
      <xs:element name="capacity" type="xs:long"/>
      <xs:element name="localBalance" type="xs:long"/>
      <xs:element name="remoteBalance" type="xs:long"/>
      <xs:element name="commitFee" type="xs:long"/>
      <xs:element name="commitWeight" type="xs:long"/>
      <xs:element name="feePerKw" type="xs:long"/>
      <xs:element name="unsettledBalance" type="xs:long"/>
      <xs:element name="totalSatoshisSent" type="xs:long"/>
      <xs:element name="totalSatoshisReceived" type="xs:long"/>
      <xs:element name="numUpdates" type="xs:long"/>
      <xs:element name="pending_htlcs" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="HTLC" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="csvDelay" type="xs:int"/>
      <xs:element name="private" type="xs:boolean"/>
      <xs:element name="initiator" type="xs:boolean"/>
      <xs:element name="chanStatusFlags" type="xs:string" minOccurs="0"/>
      <xs:element name="localChanReserveSat" type="xs:long"/>
      <xs:element name="remoteChanReserveSat" type="xs:long"/>
      <xs:element name="staticRemoteKey" type="xs:boolean"/>
      <xs:element name="commitmentType" type="commitmentType" minOccurs="0"/>
      <xs:element name="lifetime" type="xs:long"/>
      <xs:element name="uptime" type="xs:long"/>
      <xs:element name="closeAddress" type="xs:string" minOccurs="0"/>
      <xs:element name="pushAmountSat" type="xs:long"/>
      <xs:element name="thawHeight" type="xs:int"/>
      <xs:element name="localConstraints" type="ChannelConstraintsType" minOccurs="0"/>
      <xs:element name="remoteConstraints" type="ChannelConstraintsType" minOccurs="0"/>
      <xs:element name="alias_scids" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="aliasScids" type="xs:long" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="zeroConf" type="xs:boolean"/>
      <xs:element name="zeroConfConfirmedScid" type="xs:long"/>
      <xs:element name="peerAlias" type="xs:string" minOccurs="0"/>
      <xs:element name="peerScidAlias" type="xs:long"/>
      <xs:element name="memo" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListChannelsRequestType">
    <xs:sequence>
      <xs:element name="activeOnly" type="xs:boolean"/>
      <xs:element name="inactiveOnly" type="xs:boolean"/>
      <xs:element name="publicOnly" type="xs:boolean"/>
      <xs:element name="privateOnly" type="xs:boolean"/>
      <xs:element name="peer" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="peerAliasLookup" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListChannelsResponseType">
    <xs:sequence>
      <xs:element name="channels" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="Channel" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AliasMapType">
    <xs:sequence>
      <xs:element name="baseScid" type="xs:long"/>
      <xs:element name="aliases" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="aliases" type="xs:long" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListAliasesRequestType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="ListAliasesResponseType">
    <xs:sequence>
      <xs:element name="alias_maps" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="AliasMap" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelCloseSummaryType">
    <xs:sequence>
      <xs:element name="channelPoint" type="xs:string" minOccurs="0"/>
      <xs:element name="chanId" type="xs:long"/>
      <xs:element name="chainHash" type="xs:string" minOccurs="0"/>
      <xs:element name="closingTxHash" type="xs:string" minOccurs="0"/>
      <xs:element name="remotePubkey" type="xs:string" minOccurs="0"/>
      <xs:element name="capacity" type="xs:long"/>
      <xs:element name="closeHeight" type="xs:int"/>
      <xs:element name="settledBalance" type="xs:long"/>
      <xs:element name="timeLockedBalance" type="xs:long"/>
      <xs:element name="closeType" type="closureType" minOccurs="0"/>
      <xs:element name="openInitiator" type="initiator" minOccurs="0"/>
      <xs:element name="closeInitiator" type="initiator" minOccurs="0"/>
      <xs:element name="resolutions" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="Resolution" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="alias_scids" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="aliasScids" type="xs:long" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="zeroConfConfirmedScid" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ResolutionType">
    <xs:sequence>
      <xs:element name="resolutionType" type="resolutionType" minOccurs="0"/>
      <xs:element name="outcome" type="resolutionOutcome" minOccurs="0"/>
      <xs:element name="outpoint" type="OutPointType" minOccurs="0"/>
      <xs:element name="amountSat" type="xs:long"/>
      <xs:element name="sweepTxid" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ClosedChannelsRequestType">
    <xs:sequence>
      <xs:element name="cooperative" type="xs:boolean"/>
      <xs:element name="localForce" type="xs:boolean"/>
      <xs:element name="remoteForce" type="xs:boolean"/>
      <xs:element name="breach" type="xs:boolean"/>
      <xs:element name="fundingCanceled" type="xs:boolean"/>
      <xs:element name="abandoned" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ClosedChannelsResponseType">
    <xs:sequence>
      <xs:element name="channels" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="ChannelCloseSummary" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PeerType">
    <xs:sequence>
      <xs:element name="pubKey" type="xs:string" minOccurs="0"/>
      <xs:element name="address" type="xs:string" minOccurs="0"/>
      <xs:element name="bytesSent" type="xs:long"/>
      <xs:element name="bytesRecv" type="xs:long"/>
      <xs:element name="satSent" type="xs:long"/>
      <xs:element name="satRecv" type="xs:long"/>
      <xs:element name="inbound" type="xs:boolean"/>
      <xs:element name="pingTime" type="xs:long"/>
      <xs:element name="syncType" type="syncType" minOccurs="0"/>
      <xs:element name="featuresEntries" type="PeerFeaturesEntriesType" minOccurs="0"/>
      <xs:element name="errors" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="TimestampedError" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="flapCount" type="xs:int"/>
      <xs:element name="lastFlapNs" type="xs:long"/>
      <xs:element name="lastPingPayload" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PeerFeaturesEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="PeerFeaturesEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PeerFeaturesEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:int"/>
      <xs:element name="value" type="FeatureType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FeatureType">
    <xs:sequence>
      <xs:element name="name" type="xs:string" minOccurs="0"/>
      <xs:element name="isRequired" type="xs:boolean"/>
      <xs:element name="isKnown" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="TimestampedErrorType">
    <xs:sequence>
      <xs:element name="timestamp" type="xs:long"/>
      <xs:element name="error" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListPeersRequestType">
    <xs:sequence>
      <xs:element name="latestError" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListPeersResponseType">
    <xs:sequence>
      <xs:element name="peers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="Peer" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PeerEventSubscriptionType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="PeerEventType">
    <xs:sequence>
      <xs:element name="pubKey" type="xs:string" minOccurs="0"/>
      <xs:element name="type" type="eventType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="GetInfoRequestType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="GetInfoResponseType">
    <xs:sequence>
      <xs:element name="version" type="xs:string" minOccurs="0"/>
      <xs:element name="commitHash" type="xs:string" minOccurs="0"/>
      <xs:element name="identityPubkey" type="xs:string" minOccurs="0"/>
      <xs:element name="alias" type="xs:string" minOccurs="0"/>
      <xs:element name="color" type="xs:string" minOccurs="0"/>
      <xs:element name="numPendingChannels" type="xs:int"/>
      <xs:element name="numActiveChannels" type="xs:int"/>
      <xs:element name="numInactiveChannels" type="xs:int"/>
      <xs:element name="numPeers" type="xs:int"/>
      <xs:element name="blockHeight" type="xs:int"/>
      <xs:element name="blockHash" type="xs:string" minOccurs="0"/>
      <xs:element name="bestHeaderTimestamp" type="xs:long"/>
      <xs:element name="syncedToChain" type="xs:boolean"/>
      <xs:element name="syncedToGraph" type="xs:boolean"/>
      <xs:element name="testnet" type="xs:boolean"/>
      <xs:element name="chains" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="Chain" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="uris" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="uris" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="featuresEntries" type="GetInfoResponseFeaturesEntriesType" minOccurs="0"/>
      <xs:element name="requireHtlcInterceptor" type="xs:boolean"/>
      <xs:element name="storeFinalHtlcResolutions" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChainType">
    <xs:sequence>
      <xs:element name="chain" type="xs:string" minOccurs="0"/>
      <xs:element name="network" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="GetInfoResponseFeaturesEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="GetInfoResponseFeaturesEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="GetInfoResponseFeaturesEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:int"/>
      <xs:element name="value" type="FeatureType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="GetRecoveryInfoRequestType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="GetRecoveryInfoResponseType">
    <xs:sequence>
      <xs:element name="recoveryMode" type="xs:boolean"/>
      <xs:element name="recoveryFinished" type="xs:boolean"/>
      <xs:element name="progress" type="xs:double"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ConfirmationUpdateType">
    <xs:sequence>
      <xs:element name="blockSha" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="blockHeight" type="xs:int"/>
      <xs:element name="numConfsLeft" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelOpenUpdateType">
    <xs:sequence>
      <xs:element name="channelPoint" type="ChannelPointType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelCloseUpdateType">
    <xs:sequence>
      <xs:element name="closingTxid" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="success" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="CloseChannelRequestType">
    <xs:sequence>
      <xs:element name="channelPoint" type="ChannelPointType" minOccurs="0"/>
      <xs:element name="force" type="xs:boolean"/>
      <xs:element name="targetConf" type="xs:int"/>
      <xs:element name="satPerByte" type="xs:long"/>
      <xs:element name="deliveryAddress" type="xs:string" minOccurs="0"/>
      <xs:element name="satPerVbyte" type="xs:long"/>
      <xs:element name="maxFeePerVbyte" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="CloseStatusUpdateType">
    <xs:sequence>
      <xs:element name="closePending" type="PendingUpdateType" minOccurs="0"/>
      <xs:element name="chanClose" type="ChannelCloseUpdateType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PendingUpdateType">
    <xs:sequence>
      <xs:element name="txid" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="outputIndex" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ReadyForPsbtFundingType">
    <xs:sequence>
      <xs:element name="fundingAddress" type="xs:string" minOccurs="0"/>
      <xs:element name="fundingAmount" type="xs:long"/>
      <xs:element name="psbt" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="BatchOpenChannelRequestType">
    <xs:sequence>
      <xs:element name="channels" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="BatchOpenChannel" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="targetConf" type="xs:int"/>
      <xs:element name="satPerVbyte" type="xs:long"/>
      <xs:element name="minConfs" type="xs:int"/>
      <xs:element name="spendUnconfirmed" type="xs:boolean"/>
      <xs:element name="label" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="BatchOpenChannelType">
    <xs:sequence>
      <xs:element name="nodePubkey" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="localFundingAmount" type="xs:long"/>
      <xs:element name="pushSat" type="xs:long"/>
      <xs:element name="private" type="xs:boolean"/>
      <xs:element name="minHtlcMsat" type="xs:long"/>
      <xs:element name="remoteCsvDelay" type="xs:int"/>
      <xs:element name="closeAddress" type="xs:string" minOccurs="0"/>
      <xs:element name="pendingChanId" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="commitmentType" type="commitmentType" minOccurs="0"/>
      <xs:element name="remoteMaxValueInFlightMsat" type="xs:long"/>
      <xs:element name="remoteMaxHtlcs" type="xs:int"/>
      <xs:element name="maxLocalCsv" type="xs:int"/>
      <xs:element name="zeroConf" type="xs:boolean"/>
      <xs:element name="scidAlias" type="xs:boolean"/>
      <xs:element name="baseFee" type="xs:long"/>
      <xs:element name="feeRate" type="xs:long"/>
      <xs:element name="useBaseFee" type="xs:boolean"/>
      <xs:element name="useFeeRate" type="xs:boolean"/>
      <xs:element name="remoteChanReserveSat" type="xs:long"/>
      <xs:element name="memo" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="BatchOpenChannelResponseType">
    <xs:sequence>
      <xs:element name="pending_channels" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="PendingUpdate" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="OpenChannelRequestType">
    <xs:sequence>
      <xs:element name="satPerVbyte" type="xs:long"/>
      <xs:element name="nodePubkey" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="nodePubkeyString" type="xs:string" minOccurs="0"/>
      <xs:element name="localFundingAmount" type="xs:long"/>
      <xs:element name="pushSat" type="xs:long"/>
      <xs:element name="targetConf" type="xs:int"/>
      <xs:element name="satPerByte" type="xs:long"/>
      <xs:element name="private" type="xs:boolean"/>
      <xs:element name="minHtlcMsat" type="xs:long"/>
      <xs:element name="remoteCsvDelay" type="xs:int"/>
      <xs:element name="minConfs" type="xs:int"/>
      <xs:element name="spendUnconfirmed" type="xs:boolean"/>
      <xs:element name="closeAddress" type="xs:string" minOccurs="0"/>
      <xs:element name="fundingShim" type="FundingShimType" minOccurs="0"/>
      <xs:element name="remoteMaxValueInFlightMsat" type="xs:long"/>
      <xs:element name="remoteMaxHtlcs" type="xs:int"/>
      <xs:element name="maxLocalCsv" type="xs:int"/>
      <xs:element name="commitmentType" type="commitmentType" minOccurs="0"/>
      <xs:element name="zeroConf" type="xs:boolean"/>
      <xs:element name="scidAlias" type="xs:boolean"/>
      <xs:element name="baseFee" type="xs:long"/>
      <xs:element name="feeRate" type="xs:long"/>
      <xs:element name="useBaseFee" type="xs:boolean"/>
      <xs:element name="useFeeRate" type="xs:boolean"/>
      <xs:element name="remoteChanReserveSat" type="xs:long"/>
      <xs:element name="fundMax" type="xs:boolean"/>
      <xs:element name="memo" type="xs:string" minOccurs="0"/>
      <xs:element name="outpoints" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="OutPoint" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FundingShimType">
    <xs:sequence>
      <xs:element name="chanPointShim" type="ChanPointShimType" minOccurs="0"/>
      <xs:element name="psbtShim" type="PsbtShimType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChanPointShimType">
    <xs:sequence>
      <xs:element name="amt" type="xs:long"/>
      <xs:element name="chanPoint" type="ChannelPointType" minOccurs="0"/>
      <xs:element name="localKey" type="KeyDescriptorType" minOccurs="0"/>
      <xs:element name="remoteKey" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="pendingChanId" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="thawHeight" type="xs:int"/>
      <xs:element name="musig2" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="KeyDescriptorType">
    <xs:sequence>
      <xs:element name="rawKeyBytes" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="keyLoc" type="KeyLocatorType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="KeyLocatorType">
    <xs:sequence>
      <xs:element name="keyFamily" type="xs:int"/>
      <xs:element name="keyIndex" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PsbtShimType">
    <xs:sequence>
      <xs:element name="pendingChanId" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="basePsbt" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="noPublish" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="OpenStatusUpdateType">
    <xs:sequence>
      <xs:element name="chanPending" type="PendingUpdateType" minOccurs="0"/>
      <xs:element name="chanOpen" type="ChannelOpenUpdateType" minOccurs="0"/>
      <xs:element name="psbtFund" type="ReadyForPsbtFundingType" minOccurs="0"/>
      <xs:element name="pendingChanId" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FundingShimCancelType">
    <xs:sequence>
      <xs:element name="pendingChanId" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FundingPsbtVerifyType">
    <xs:sequence>
      <xs:element name="fundedPsbt" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="pendingChanId" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="skipFinalize" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FundingPsbtFinalizeType">
    <xs:sequence>
      <xs:element name="signedPsbt" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="pendingChanId" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="finalRawTx" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FundingTransitionMsgType">
    <xs:sequence>
      <xs:element name="shimRegister" type="FundingShimType" minOccurs="0"/>
      <xs:element name="shimCancel" type="FundingShimCancelType" minOccurs="0"/>
      <xs:element name="psbtVerify" type="FundingPsbtVerifyType" minOccurs="0"/>
      <xs:element name="psbtFinalize" type="FundingPsbtFinalizeType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FundingStateStepRespType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="PendingHTLCType">
    <xs:sequence>
      <xs:element name="incoming" type="xs:boolean"/>
      <xs:element name="amount" type="xs:long"/>
      <xs:element name="outpoint" type="xs:string" minOccurs="0"/>
      <xs:element name="maturityHeight" type="xs:int"/>
      <xs:element name="blocksTilMaturity" type="xs:int"/>
      <xs:element name="stage" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PendingChannelsRequestType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="PendingChannelsResponseType">
    <xs:sequence>
      <xs:element name="totalLimboBalance" type="xs:long"/>
      <xs:element name="pending_open_channels" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="PendingOpenChannel" type="PendingChannelsResponsePendingOpenChannelType" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="pending_closing_channels" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ClosedChannel" type="PendingChannelsResponseClosedChannelType" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="pending_force_closing_channels" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ForceClosedChannel" type="PendingChannelsResponseForceClosedChannelType" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="waiting_close_channels" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="WaitingCloseChannel" type="PendingChannelsResponseWaitingCloseChannelType" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PendingChannelsResponsePendingOpenChannelType">
    <xs:sequence>
      <xs:element name="channel" type="PendingChannelsResponsePendingChannelType" minOccurs="0"/>
      <xs:element name="commitFee" type="xs:long"/>
      <xs:element name="commitWeight" type="xs:long"/>
      <xs:element name="feePerKw" type="xs:long"/>
      <xs:element name="fundingExpiryBlocks" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PendingChannelsResponsePendingChannelType">
    <xs:sequence>
      <xs:element name="remoteNodePub" type="xs:string" minOccurs="0"/>
      <xs:element name="channelPoint" type="xs:string" minOccurs="0"/>
      <xs:element name="capacity" type="xs:long"/>
      <xs:element name="localBalance" type="xs:long"/>
      <xs:element name="remoteBalance" type="xs:long"/>
      <xs:element name="localChanReserveSat" type="xs:long"/>
      <xs:element name="remoteChanReserveSat" type="xs:long"/>
      <xs:element name="initiator" type="initiator" minOccurs="0"/>
      <xs:element name="commitmentType" type="commitmentType" minOccurs="0"/>
      <xs:element name="numForwardingPackages" type="xs:long"/>
      <xs:element name="chanStatusFlags" type="xs:string" minOccurs="0"/>
      <xs:element name="private" type="xs:boolean"/>
      <xs:element name="memo" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PendingChannelsResponseClosedChannelType">
    <xs:sequence>
      <xs:element name="channel" type="PendingChannelsResponsePendingChannelType" minOccurs="0"/>
      <xs:element name="closingTxid" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PendingChannelsResponseForceClosedChannelType">
    <xs:sequence>
      <xs:element name="channel" type="PendingChannelsResponsePendingChannelType" minOccurs="0"/>
      <xs:element name="closingTxid" type="xs:string" minOccurs="0"/>
      <xs:element name="limboBalance" type="xs:long"/>
      <xs:element name="maturityHeight" type="xs:int"/>
      <xs:element name="blocksTilMaturity" type="xs:int"/>
      <xs:element name="recoveredBalance" type="xs:long"/>
      <xs:element name="pending_htlcs" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="PendingHTLC" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="anchor" type="anchorState" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PendingChannelsResponseWaitingCloseChannelType">
    <xs:sequence>
      <xs:element name="channel" type="PendingChannelsResponsePendingChannelType" minOccurs="0"/>
      <xs:element name="limboBalance" type="xs:long"/>
      <xs:element name="commitments" type="PendingChannelsResponseCommitmentsType" minOccurs="0"/>
      <xs:element name="closingTxid" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PendingChannelsResponseCommitmentsType">
    <xs:sequence>
      <xs:element name="localTxid" type="xs:string" minOccurs="0"/>
      <xs:element name="remoteTxid" type="xs:string" minOccurs="0"/>
      <xs:element name="remotePendingTxid" type="xs:string" minOccurs="0"/>
      <xs:element name="localCommitFeeSat" type="xs:long"/>
      <xs:element name="remoteCommitFeeSat" type="xs:long"/>
      <xs:element name="remotePendingCommitFeeSat" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelEventSubscriptionType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="ChannelEventUpdateType">
    <xs:sequence>
      <xs:element name="openChannel" type="ChannelType" minOccurs="0"/>
      <xs:element name="closedChannel" type="ChannelCloseSummaryType" minOccurs="0"/>
      <xs:element name="activeChannel" type="ChannelPointType" minOccurs="0"/>
      <xs:element name="inactiveChannel" type="ChannelPointType" minOccurs="0"/>
      <xs:element name="pendingOpenChannel" type="PendingUpdateType" minOccurs="0"/>
      <xs:element name="fullyResolvedChannel" type="ChannelPointType" minOccurs="0"/>
      <xs:element name="type" type="updateType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="WalletAccountBalanceType">
    <xs:sequence>
      <xs:element name="confirmedBalance" type="xs:long"/>
      <xs:element name="unconfirmedBalance" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="WalletBalanceRequestType">
    <xs:sequence>
      <xs:element name="account" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="WalletBalanceResponseType">
    <xs:sequence>
      <xs:element name="totalBalance" type="xs:long"/>
      <xs:element name="confirmedBalance" type="xs:long"/>
      <xs:element name="unconfirmedBalance" type="xs:long"/>
      <xs:element name="lockedBalance" type="xs:long"/>
      <xs:element name="reservedBalanceAnchorChan" type="xs:long"/>
      <xs:element name="accountBalanceEntries" type="WalletBalanceResponseAccountBalanceEntriesType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="WalletBalanceResponseAccountBalanceEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="WalletBalanceResponseAccountBalanceEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="WalletBalanceResponseAccountBalanceEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:string" minOccurs="0"/>
      <xs:element name="value" type="WalletAccountBalanceType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AmountType">
    <xs:sequence>
      <xs:element name="sat" type="xs:long"/>
      <xs:element name="msat" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelBalanceRequestType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="ChannelBalanceResponseType">
    <xs:sequence>
      <xs:element name="balance" type="xs:long"/>
      <xs:element name="pendingOpenBalance" type="xs:long"/>
      <xs:element name="localBalance" type="AmountType" minOccurs="0"/>
      <xs:element name="remoteBalance" type="AmountType" minOccurs="0"/>
      <xs:element name="unsettledLocalBalance" type="AmountType" minOccurs="0"/>
      <xs:element name="unsettledRemoteBalance" type="AmountType" minOccurs="0"/>
      <xs:element name="pendingOpenLocalBalance" type="AmountType" minOccurs="0"/>
      <xs:element name="pendingOpenRemoteBalance" type="AmountType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="QueryRoutesRequestType">
    <xs:sequence>
      <xs:element name="pubKey" type="xs:string" minOccurs="0"/>
      <xs:element name="amt" type="xs:long"/>
      <xs:element name="amtMsat" type="xs:long"/>
      <xs:element name="finalCltvDelta" type="xs:int"/>
      <xs:element name="feeLimit" type="FeeLimitType" minOccurs="0"/>
      <xs:element name="ignored_nodes" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ignoredNodes" type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ignored_edges" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="EdgeLocator" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="sourcePubKey" type="xs:string" minOccurs="0"/>
      <xs:element name="useMissionControl" type="xs:boolean"/>
      <xs:element name="ignored_pairs" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="NodePair" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="cltvLimit" type="xs:int"/>
      <xs:element name="destCustomRecordsEntries" type="QueryRoutesRequestDestCustomRecordsEntriesType" minOccurs="0"/>
      <xs:element name="outgoingChanId" type="xs:long"/>
      <xs:element name="lastHopPubkey" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="route_hints" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="RouteHint" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="destFeatures" type="featureBit" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="timePref" type="xs:double"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="EdgeLocatorType">
    <xs:sequence>
      <xs:element name="channelId" type="xs:long"/>
      <xs:element name="directionReverse" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NodePairType">
    <xs:sequence>
      <xs:element name="from" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="to" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="QueryRoutesRequestDestCustomRecordsEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="QueryRoutesRequestDestCustomRecordsEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="QueryRoutesRequestDestCustomRecordsEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:long"/>
      <xs:element name="value" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RouteHintType">
    <xs:sequence>
      <xs:element name="hop_hints" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="HopHint" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="HopHintType">
    <xs:sequence>
      <xs:element name="nodeId" type="xs:string" minOccurs="0"/>
      <xs:element name="chanId" type="xs:long"/>
      <xs:element name="feeBaseMsat" type="xs:int"/>
      <xs:element name="feeProportionalMillionths" type="xs:int"/>
      <xs:element name="cltvExpiryDelta" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="QueryRoutesResponseType">
    <xs:sequence>
      <xs:element name="routes" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="Route" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="successProb" type="xs:double"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NodeInfoRequestType">
    <xs:sequence>
      <xs:element name="pubKey" type="xs:string" minOccurs="0"/>
      <xs:element name="includeChannels" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NodeInfoType">
    <xs:sequence>
      <xs:element name="node" type="LightningNodeType" minOccurs="0"/>
      <xs:element name="numChannels" type="xs:int"/>
      <xs:element name="totalCapacity" type="xs:long"/>
      <xs:element name="channels" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="ChannelEdge" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="LightningNodeType">
    <xs:sequence>
      <xs:element name="lastUpdate" type="xs:int"/>
      <xs:element name="pubKey" type="xs:string" minOccurs="0"/>
      <xs:element name="alias" type="xs:string" minOccurs="0"/>
      <xs:element name="addresses" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="NodeAddress" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="color" type="xs:string" minOccurs="0"/>
      <xs:element name="featuresEntries" type="LightningNodeFeaturesEntriesType" minOccurs="0"/>
      <xs:element name="customRecordsEntries" type="LightningNodeCustomRecordsEntriesType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NodeAddressType">
    <xs:sequence>
      <xs:element name="network" type="xs:string" minOccurs="0"/>
      <xs:element name="addr" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="LightningNodeFeaturesEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="LightningNodeFeaturesEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="LightningNodeFeaturesEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:int"/>
      <xs:element name="value" type="FeatureType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="LightningNodeCustomRecordsEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="LightningNodeCustomRecordsEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="LightningNodeCustomRecordsEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:long"/>
      <xs:element name="value" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelEdgeType">
    <xs:sequence>
      <xs:element name="channelId" type="xs:long"/>
      <xs:element name="chanPoint" type="xs:string" minOccurs="0"/>
      <xs:element name="lastUpdate" type="xs:int"/>
      <xs:element name="node1Pub" type="xs:string" minOccurs="0"/>
      <xs:element name="node2Pub" type="xs:string" minOccurs="0"/>
      <xs:element name="capacity" type="xs:long"/>
      <xs:element name="node1Policy" type="RoutingPolicyType" minOccurs="0"/>
      <xs:element name="node2Policy" type="RoutingPolicyType" minOccurs="0"/>
      <xs:element name="customRecordsEntries" type="ChannelEdgeCustomRecordsEntriesType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RoutingPolicyType">
    <xs:sequence>
      <xs:element name="timeLockDelta" type="xs:int"/>
      <xs:element name="minHtlc" type="xs:long"/>
      <xs:element name="feeBaseMsat" type="xs:long"/>
      <xs:element name="feeRateMilliMsat" type="xs:long"/>
      <xs:element name="disabled" type="xs:boolean"/>
      <xs:element name="maxHtlcMsat" type="xs:long"/>
      <xs:element name="lastUpdate" type="xs:int"/>
      <xs:element name="customRecordsEntries" type="RoutingPolicyCustomRecordsEntriesType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RoutingPolicyCustomRecordsEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="RoutingPolicyCustomRecordsEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RoutingPolicyCustomRecordsEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:long"/>
      <xs:element name="value" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelEdgeCustomRecordsEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="ChannelEdgeCustomRecordsEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelEdgeCustomRecordsEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:long"/>
      <xs:element name="value" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelGraphRequestType">
    <xs:sequence>
      <xs:element name="includeUnannounced" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelGraphType">
    <xs:sequence>
      <xs:element name="nodes" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="LightningNode" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="edges" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="ChannelEdge" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NodeMetricsRequestType">
    <xs:sequence>
      <xs:element name="types" type="nodeMetricType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NodeMetricsResponseType">
    <xs:sequence>
      <xs:element name="betweennessCentralityEntries" type="NodeMetricsResponseBetweennessCentralityEntriesType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NodeMetricsResponseBetweennessCentralityEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="NodeMetricsResponseBetweennessCentralityEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NodeMetricsResponseBetweennessCentralityEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:string" minOccurs="0"/>
      <xs:element name="value" type="FloatMetricType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FloatMetricType">
    <xs:sequence>
      <xs:element name="value" type="xs:double"/>
      <xs:element name="normalizedValue" type="xs:double"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChanInfoRequestType">
    <xs:sequence>
      <xs:element name="chanId" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NetworkInfoRequestType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="NetworkInfoType">
    <xs:sequence>
      <xs:element name="graphDiameter" type="xs:int"/>
      <xs:element name="avgOutDegree" type="xs:double"/>
      <xs:element name="maxOutDegree" type="xs:int"/>
      <xs:element name="numNodes" type="xs:int"/>
      <xs:element name="numChannels" type="xs:int"/>
      <xs:element name="totalNetworkCapacity" type="xs:long"/>
      <xs:element name="avgChannelSize" type="xs:double"/>
      <xs:element name="minChannelSize" type="xs:long"/>
      <xs:element name="maxChannelSize" type="xs:long"/>
      <xs:element name="medianChannelSizeSat" type="xs:long"/>
      <xs:element name="numZombieChans" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="StopRequestType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="StopResponseType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="GraphTopologySubscriptionType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="GraphTopologyUpdateType">
    <xs:sequence>
      <xs:element name="node_updates" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="NodeUpdate" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="channel_updates" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="ChannelEdgeUpdate" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="closed_chans" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="ClosedChannelUpdate" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NodeUpdateType">
    <xs:sequence>
      <xs:element name="addresses" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="addresses" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="identityKey" type="xs:string" minOccurs="0"/>
      <xs:element name="globalFeatures" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="alias" type="xs:string" minOccurs="0"/>
      <xs:element name="color" type="xs:string" minOccurs="0"/>
      <xs:element name="node_addresses" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="NodeAddress" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="featuresEntries" type="NodeUpdateFeaturesEntriesType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NodeUpdateFeaturesEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="NodeUpdateFeaturesEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NodeUpdateFeaturesEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:int"/>
      <xs:element name="value" type="FeatureType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelEdgeUpdateType">
    <xs:sequence>
      <xs:element name="chanId" type="xs:long"/>
      <xs:element name="chanPoint" type="ChannelPointType" minOccurs="0"/>
      <xs:element name="capacity" type="xs:long"/>
      <xs:element name="routingPolicy" type="RoutingPolicyType" minOccurs="0"/>
      <xs:element name="advertisingNode" type="xs:string" minOccurs="0"/>
      <xs:element name="connectingNode" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ClosedChannelUpdateType">
    <xs:sequence>
      <xs:element name="chanId" type="xs:long"/>
      <xs:element name="capacity" type="xs:long"/>
      <xs:element name="closedHeight" type="xs:int"/>
      <xs:element name="chanPoint" type="ChannelPointType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SetIDType">
    <xs:sequence>
      <xs:element name="setId" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AMPInvoiceStateType">
    <xs:sequence>
      <xs:element name="state" type="invoiceHTLCState" minOccurs="0"/>
      <xs:element name="settleIndex" type="xs:long"/>
      <xs:element name="settleTime" type="xs:long"/>
      <xs:element name="amtPaidMsat" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="InvoiceType">
    <xs:sequence>
      <xs:element name="memo" type="xs:string" minOccurs="0"/>
      <xs:element name="RPreimage" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="RHash" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="value" type="xs:long"/>
      <xs:element name="valueMsat" type="xs:long"/>
      <xs:element name="settled" type="xs:boolean"/>
      <xs:element name="creationDate" type="xs:long"/>
      <xs:element name="settleDate" type="xs:long"/>
      <xs:element name="paymentRequest" type="xs:string" minOccurs="0"/>
      <xs:element name="descriptionHash" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="expiry" type="xs:long"/>
      <xs:element name="fallbackAddr" type="xs:string" minOccurs="0"/>
      <xs:element name="cltvExpiry" type="xs:long"/>
      <xs:element name="route_hints" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="RouteHint" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="private" type="xs:boolean"/>
      <xs:element name="addIndex" type="xs:long"/>
      <xs:element name="settleIndex" type="xs:long"/>
      <xs:element name="amtPaid" type="xs:long"/>
      <xs:element name="amtPaidSat" type="xs:long"/>
      <xs:element name="amtPaidMsat" type="xs:long"/>
      <xs:element name="state" type="invoiceState" minOccurs="0"/>
      <xs:element name="htlcs" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="InvoiceHTLC" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="featuresEntries" type="InvoiceFeaturesEntriesType" minOccurs="0"/>
      <xs:element name="isKeysend" type="xs:boolean"/>
      <xs:element name="paymentAddr" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="isAmp" type="xs:boolean"/>
      <xs:element name="ampInvoiceStateEntries" type="InvoiceAmpInvoiceStateEntriesType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="InvoiceHTLCType">
    <xs:sequence>
      <xs:element name="chanId" type="xs:long"/>
      <xs:element name="htlcIndex" type="xs:long"/>
      <xs:element name="amtMsat" type="xs:long"/>
      <xs:element name="acceptHeight" type="xs:int"/>
      <xs:element name="acceptTime" type="xs:long"/>
      <xs:element name="resolveTime" type="xs:long"/>
      <xs:element name="expiryHeight" type="xs:int"/>
      <xs:element name="state" type="invoiceHTLCState" minOccurs="0"/>
      <xs:element name="customRecordsEntries" type="InvoiceHTLCCustomRecordsEntriesType" minOccurs="0"/>
      <xs:element name="mppTotalAmtMsat" type="xs:long"/>
      <xs:element name="amp" type="AMPType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="InvoiceHTLCCustomRecordsEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="InvoiceHTLCCustomRecordsEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="InvoiceHTLCCustomRecordsEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:long"/>
      <xs:element name="value" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AMPType">
    <xs:sequence>
      <xs:element name="rootShare" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="setId" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="childIndex" type="xs:int"/>
      <xs:element name="hash" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="preimage" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="InvoiceFeaturesEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="InvoiceFeaturesEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="InvoiceFeaturesEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:int"/>
      <xs:element name="value" type="FeatureType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="InvoiceAmpInvoiceStateEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="InvoiceAmpInvoiceStateEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="InvoiceAmpInvoiceStateEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:string" minOccurs="0"/>
      <xs:element name="value" type="AMPInvoiceStateType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AddInvoiceResponseType">
    <xs:sequence>
      <xs:element name="RHash" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="paymentRequest" type="xs:string" minOccurs="0"/>
      <xs:element name="addIndex" type="xs:long"/>
      <xs:element name="paymentAddr" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PaymentHashType">
    <xs:sequence>
      <xs:element name="RHashStr" type="xs:string" minOccurs="0"/>
      <xs:element name="RHash" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListInvoiceRequestType">
    <xs:sequence>
      <xs:element name="pendingOnly" type="xs:boolean"/>
      <xs:element name="indexOffset" type="xs:long"/>
      <xs:element name="numMaxInvoices" type="xs:long"/>
      <xs:element name="reversed" type="xs:boolean"/>
      <xs:element name="creationDateStart" type="xs:long"/>
      <xs:element name="creationDateEnd" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListInvoiceResponseType">
    <xs:sequence>
      <xs:element name="invoices" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="Invoice" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="lastIndexOffset" type="xs:long"/>
      <xs:element name="firstIndexOffset" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="InvoiceSubscriptionType">
    <xs:sequence>
      <xs:element name="addIndex" type="xs:long"/>
      <xs:element name="settleIndex" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PaymentType">
    <xs:sequence>
      <xs:element name="paymentHash" type="xs:string" minOccurs="0"/>
      <xs:element name="value" type="xs:long"/>
      <xs:element name="creationDate" type="xs:long"/>
      <xs:element name="fee" type="xs:long"/>
      <xs:element name="paymentPreimage" type="xs:string" minOccurs="0"/>
      <xs:element name="valueSat" type="xs:long"/>
      <xs:element name="valueMsat" type="xs:long"/>
      <xs:element name="paymentRequest" type="xs:string" minOccurs="0"/>
      <xs:element name="status" type="paymentStatus" minOccurs="0"/>
      <xs:element name="feeSat" type="xs:long"/>
      <xs:element name="feeMsat" type="xs:long"/>
      <xs:element name="creationTimeNs" type="xs:long"/>
      <xs:element name="htlcs" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="HTLCAttempt" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="paymentIndex" type="xs:long"/>
      <xs:element name="failureReason" type="paymentFailureReason" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="HTLCAttemptType">
    <xs:sequence>
      <xs:element name="attemptId" type="xs:long"/>
      <xs:element name="status" type="htlcStatus" minOccurs="0"/>
      <xs:element name="route" type="RouteType" minOccurs="0"/>
      <xs:element name="attemptTimeNs" type="xs:long"/>
      <xs:element name="resolveTimeNs" type="xs:long"/>
      <xs:element name="failure" type="FailureType" minOccurs="0"/>
      <xs:element name="preimage" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FailureType">
    <xs:sequence>
      <xs:element name="code" type="failureCode" minOccurs="0"/>
      <xs:element name="channelUpdate" type="ChannelUpdateType" minOccurs="0"/>
      <xs:element name="htlcMsat" type="xs:long"/>
      <xs:element name="onionSha256" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="cltvExpiry" type="xs:int"/>
      <xs:element name="flags" type="xs:int"/>
      <xs:element name="failureSourceIndex" type="xs:int"/>
      <xs:element name="height" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelUpdateType">
    <xs:sequence>
      <xs:element name="signature" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="chainHash" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="chanId" type="xs:long"/>
      <xs:element name="timestamp" type="xs:int"/>
      <xs:element name="messageFlags" type="xs:int"/>
      <xs:element name="channelFlags" type="xs:int"/>
      <xs:element name="timeLockDelta" type="xs:int"/>
      <xs:element name="htlcMinimumMsat" type="xs:long"/>
      <xs:element name="baseFee" type="xs:int"/>
      <xs:element name="feeRate" type="xs:int"/>
      <xs:element name="htlcMaximumMsat" type="xs:long"/>
      <xs:element name="extraOpaqueData" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListPaymentsRequestType">
    <xs:sequence>
      <xs:element name="includeIncomplete" type="xs:boolean"/>
      <xs:element name="indexOffset" type="xs:long"/>
      <xs:element name="maxPayments" type="xs:long"/>
      <xs:element name="reversed" type="xs:boolean"/>
      <xs:element name="countTotalPayments" type="xs:boolean"/>
      <xs:element name="creationDateStart" type="xs:long"/>
      <xs:element name="creationDateEnd" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListPaymentsResponseType">
    <xs:sequence>
      <xs:element name="payments" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="Payment" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="firstIndexOffset" type="xs:long"/>
      <xs:element name="lastIndexOffset" type="xs:long"/>
      <xs:element name="totalNumPayments" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DeletePaymentRequestType">
    <xs:sequence>
      <xs:element name="paymentHash" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="failedHtlcsOnly" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DeleteAllPaymentsRequestType">
    <xs:sequence>
      <xs:element name="failedPaymentsOnly" type="xs:boolean"/>
      <xs:element name="failedHtlcsOnly" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DeletePaymentResponseType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="DeleteAllPaymentsResponseType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="AbandonChannelRequestType">
    <xs:sequence>
      <xs:element name="channelPoint" type="ChannelPointType" minOccurs="0"/>
      <xs:element name="pendingFundingShimOnly" type="xs:boolean"/>
      <xs:element name="IKnowWhatIAmDoing" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AbandonChannelResponseType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="DebugLevelRequestType">
    <xs:sequence>
      <xs:element name="show" type="xs:boolean"/>
      <xs:element name="levelSpec" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DebugLevelResponseType">
    <xs:sequence>
      <xs:element name="subSystems" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PayReqStringType">
    <xs:sequence>
      <xs:element name="payReq" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PayReqType">
    <xs:sequence>
      <xs:element name="destination" type="xs:string" minOccurs="0"/>
      <xs:element name="paymentHash" type="xs:string" minOccurs="0"/>
      <xs:element name="numSatoshis" type="xs:long"/>
      <xs:element name="timestamp" type="xs:long"/>
      <xs:element name="expiry" type="xs:long"/>
      <xs:element name="description" type="xs:string" minOccurs="0"/>
      <xs:element name="descriptionHash" type="xs:string" minOccurs="0"/>
      <xs:element name="fallbackAddr" type="xs:string" minOccurs="0"/>
      <xs:element name="cltvExpiry" type="xs:long"/>
      <xs:element name="route_hints" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="RouteHint" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="paymentAddr" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="numMsat" type="xs:long"/>
      <xs:element name="featuresEntries" type="PayReqFeaturesEntriesType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PayReqFeaturesEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="PayReqFeaturesEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PayReqFeaturesEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:int"/>
      <xs:element name="value" type="FeatureType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FeeReportRequestType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="ChannelFeeReportType">
    <xs:sequence>
      <xs:element name="chanId" type="xs:long"/>
      <xs:element name="channelPoint" type="xs:string" minOccurs="0"/>
      <xs:element name="baseFeeMsat" type="xs:long"/>
      <xs:element name="feePerMil" type="xs:long"/>
      <xs:element name="feeRate" type="xs:double"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FeeReportResponseType">
    <xs:sequence>
      <xs:element name="channel_fees" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="ChannelFeeReport" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="dayFeeSum" type="xs:long"/>
      <xs:element name="weekFeeSum" type="xs:long"/>
      <xs:element name="monthFeeSum" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PolicyUpdateRequestType">
    <xs:sequence>
      <xs:element name="global" type="xs:boolean"/>
      <xs:element name="chanPoint" type="ChannelPointType" minOccurs="0"/>
      <xs:element name="baseFeeMsat" type="xs:long"/>
      <xs:element name="feeRate" type="xs:double"/>
      <xs:element name="feeRatePpm" type="xs:int"/>
      <xs:element name="timeLockDelta" type="xs:int"/>
      <xs:element name="maxHtlcMsat" type="xs:long"/>
      <xs:element name="minHtlcMsat" type="xs:long"/>
      <xs:element name="minHtlcMsatSpecified" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FailedUpdateType">
    <xs:sequence>
      <xs:element name="outpoint" type="OutPointType" minOccurs="0"/>
      <xs:element name="reason" type="updateFailure" minOccurs="0"/>
      <xs:element name="updateError" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PolicyUpdateResponseType">
    <xs:sequence>
      <xs:element name="failed_updates" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="FailedUpdate" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ForwardingHistoryRequestType">
    <xs:sequence>
      <xs:element name="startTime" type="xs:long"/>
      <xs:element name="endTime" type="xs:long"/>
      <xs:element name="indexOffset" type="xs:int"/>
      <xs:element name="numMaxEvents" type="xs:int"/>
      <xs:element name="peerAliasLookup" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ForwardingEventType">
    <xs:sequence>
      <xs:element name="timestamp" type="xs:long"/>
      <xs:element name="chanIdIn" type="xs:long"/>
      <xs:element name="chanIdOut" type="xs:long"/>
      <xs:element name="amtIn" type="xs:long"/>
      <xs:element name="amtOut" type="xs:long"/>
      <xs:element name="fee" type="xs:long"/>
      <xs:element name="feeMsat" type="xs:long"/>
      <xs:element name="amtInMsat" type="xs:long"/>
      <xs:element name="amtOutMsat" type="xs:long"/>
      <xs:element name="timestampNs" type="xs:long"/>
      <xs:element name="peerAliasIn" type="xs:string" minOccurs="0"/>
      <xs:element name="peerAliasOut" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ForwardingHistoryResponseType">
    <xs:sequence>
      <xs:element name="forwarding_events" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="ForwardingEvent" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="lastOffsetIndex" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ExportChannelBackupRequestType">
    <xs:sequence>
      <xs:element name="chanPoint" type="ChannelPointType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelBackupType">
    <xs:sequence>
      <xs:element name="chanPoint" type="ChannelPointType" minOccurs="0"/>
      <xs:element name="chanBackup" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="MultiChanBackupType">
    <xs:sequence>
      <xs:element name="chan_points" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="ChannelPoint" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="multiChanBackup" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChanBackupExportRequestType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="ChanBackupSnapshotType">
    <xs:sequence>
      <xs:element name="singleChanBackups" type="ChannelBackupsType" minOccurs="0"/>
      <xs:element name="multiChanBackup" type="MultiChanBackupType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ChannelBackupsType">
    <xs:sequence>
      <xs:element name="chan_backups" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="ChannelBackup" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RestoreChanBackupRequestType">
    <xs:sequence>
      <xs:element name="chanBackups" type="ChannelBackupsType" minOccurs="0"/>
      <xs:element name="multiChanBackup" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RestoreBackupResponseType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="ChannelBackupSubscriptionType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="VerifyChanBackupResponseType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="MacaroonPermissionType">
    <xs:sequence>
      <xs:element name="entity" type="xs:string" minOccurs="0"/>
      <xs:element name="action" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="BakeMacaroonRequestType">
    <xs:sequence>
      <xs:element name="permissions" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="MacaroonPermission" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="rootKeyId" type="xs:long"/>
      <xs:element name="allowExternalPermissions" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="BakeMacaroonResponseType">
    <xs:sequence>
      <xs:element name="macaroon" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListMacaroonIDsRequestType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="ListMacaroonIDsResponseType">
    <xs:sequence>
      <xs:element name="root_key_ids" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="rootKeyIds" type="xs:long" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DeleteMacaroonIDRequestType">
    <xs:sequence>
      <xs:element name="rootKeyId" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DeleteMacaroonIDResponseType">
    <xs:sequence>
      <xs:element name="deleted" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="MacaroonPermissionListType">
    <xs:sequence>
      <xs:element name="permissions" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="MacaroonPermission" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListPermissionsRequestType">
    <xs:all/>
  </xs:complexType>

  <xs:complexType name="ListPermissionsResponseType">
    <xs:sequence>
      <xs:element name="methodPermissionsEntries" type="ListPermissionsResponseMethodPermissionsEntriesType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListPermissionsResponseMethodPermissionsEntriesType">
    <xs:sequence>
      <xs:element name="entry" type="ListPermissionsResponseMethodPermissionsEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListPermissionsResponseMethodPermissionsEntryType">
    <xs:sequence>
      <xs:element name="key" type="xs:string" minOccurs="0"/>
      <xs:element name="value" type="MacaroonPermissionListType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="MacaroonIdType">
    <xs:sequence>
      <xs:element name="nonce" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="storageId" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="ops" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="Op" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="OpType">
    <xs:sequence>
      <xs:element name="entity" type="xs:string" minOccurs="0"/>
      <xs:element name="actions" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="actions" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="CheckMacPermRequestType">
    <xs:sequence>
      <xs:element name="macaroon" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="permissions" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="MacaroonPermission" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="fullMethod" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="CheckMacPermResponseType">
    <xs:sequence>
      <xs:element name="valid" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RPCMiddlewareRequestType">
    <xs:sequence>
      <xs:element name="requestId" type="xs:long"/>
      <xs:element name="rawMacaroon" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="customCaveatCondition" type="xs:string" minOccurs="0"/>
      <xs:element name="streamAuth" type="StreamAuthType" minOccurs="0"/>
      <xs:element name="request" type="RPCMessageType" minOccurs="0"/>
      <xs:element name="response" type="RPCMessageType" minOccurs="0"/>
      <xs:element name="regComplete" type="xs:boolean"/>
      <xs:element name="msgId" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="StreamAuthType">
    <xs:sequence>
      <xs:element name="methodFullUri" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RPCMessageType">
    <xs:sequence>
      <xs:element name="methodFullUri" type="xs:string" minOccurs="0"/>
      <xs:element name="streamRpc" type="xs:boolean"/>
      <xs:element name="typeName" type="xs:string" minOccurs="0"/>
      <xs:element name="serialized" type="xs:base64Binary" minOccurs="0"/>
      <xs:element name="isError" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RPCMiddlewareResponseType">
    <xs:sequence>
      <xs:element name="refMsgId" type="xs:long"/>
      <xs:element name="register" type="MiddlewareRegistrationType" minOccurs="0"/>
      <xs:element name="feedback" type="InterceptFeedbackType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="MiddlewareRegistrationType">
    <xs:sequence>
      <xs:element name="middlewareName" type="xs:string" minOccurs="0"/>
      <xs:element name="customMacaroonCaveatName" type="xs:string" minOccurs="0"/>
      <xs:element name="readOnlyMode" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="InterceptFeedbackType">
    <xs:sequence>
      <xs:element name="error" type="xs:string" minOccurs="0"/>
      <xs:element name="replaceResponse" type="xs:boolean"/>
      <xs:element name="replacementSerialized" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="addressType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="WITNESS_PUBKEY_HASH"/>
      <xs:enumeration value="NESTED_PUBKEY_HASH"/>
      <xs:enumeration value="UNUSED_WITNESS_PUBKEY_HASH"/>
      <xs:enumeration value="UNUSED_NESTED_PUBKEY_HASH"/>
      <xs:enumeration value="TAPROOT_PUBKEY"/>
      <xs:enumeration value="UNUSED_TAPROOT_PUBKEY"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="outputScriptType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="SCRIPT_TYPE_PUBKEY_HASH"/>
      <xs:enumeration value="SCRIPT_TYPE_SCRIPT_HASH"/>
      <xs:enumeration value="SCRIPT_TYPE_WITNESS_V0_PUBKEY_HASH"/>
      <xs:enumeration value="SCRIPT_TYPE_WITNESS_V0_SCRIPT_HASH"/>
      <xs:enumeration value="SCRIPT_TYPE_PUBKEY"/>
      <xs:enumeration value="SCRIPT_TYPE_MULTISIG"/>
      <xs:enumeration value="SCRIPT_TYPE_NULLDATA"/>
      <xs:enumeration value="SCRIPT_TYPE_NON_STANDARD"/>
      <xs:enumeration value="SCRIPT_TYPE_WITNESS_UNKNOWN"/>
      <xs:enumeration value="SCRIPT_TYPE_WITNESS_V1_TAPROOT"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="featureBit">
    <xs:restriction base="xs:string">
      <xs:enumeration value="DATALOSS_PROTECT_REQ"/>
      <xs:enumeration value="DATALOSS_PROTECT_OPT"/>
      <xs:enumeration value="INITIAL_ROUING_SYNC"/>
      <xs:enumeration value="UPFRONT_SHUTDOWN_SCRIPT_REQ"/>
      <xs:enumeration value="UPFRONT_SHUTDOWN_SCRIPT_OPT"/>
      <xs:enumeration value="GOSSIP_QUERIES_REQ"/>
      <xs:enumeration value="GOSSIP_QUERIES_OPT"/>
      <xs:enumeration value="TLV_ONION_REQ"/>
      <xs:enumeration value="TLV_ONION_OPT"/>
      <xs:enumeration value="EXT_GOSSIP_QUERIES_REQ"/>
      <xs:enumeration value="EXT_GOSSIP_QUERIES_OPT"/>
      <xs:enumeration value="STATIC_REMOTE_KEY_REQ"/>
      <xs:enumeration value="STATIC_REMOTE_KEY_OPT"/>
      <xs:enumeration value="PAYMENT_ADDR_REQ"/>
      <xs:enumeration value="PAYMENT_ADDR_OPT"/>
      <xs:enumeration value="MPP_REQ"/>
      <xs:enumeration value="MPP_OPT"/>
      <xs:enumeration value="WUMBO_CHANNELS_REQ"/>
      <xs:enumeration value="WUMBO_CHANNELS_OPT"/>
      <xs:enumeration value="ANCHORS_REQ"/>
      <xs:enumeration value="ANCHORS_OPT"/>
      <xs:enumeration value="ANCHORS_ZERO_FEE_HTLC_REQ"/>
      <xs:enumeration value="ANCHORS_ZERO_FEE_HTLC_OPT"/>
      <xs:enumeration value="AMP_REQ"/>
      <xs:enumeration value="AMP_OPT"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="commitmentType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="UNKNOWN_COMMITMENT_TYPE"/>
      <xs:enumeration value="LEGACY"/>
      <xs:enumeration value="STATIC_REMOTE_KEY"/>
      <xs:enumeration value="ANCHORS"/>
      <xs:enumeration value="SCRIPT_ENFORCED_LEASE"/>
      <xs:enumeration value="SIMPLE_TAPROOT"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="closureType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="COOPERATIVE_CLOSE"/>
      <xs:enumeration value="LOCAL_FORCE_CLOSE"/>
      <xs:enumeration value="REMOTE_FORCE_CLOSE"/>
      <xs:enumeration value="BREACH_CLOSE"/>
      <xs:enumeration value="FUNDING_CANCELED"/>
      <xs:enumeration value="ABANDONED"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="initiator">
    <xs:restriction base="xs:string">
      <xs:enumeration value="INITIATOR_UNKNOWN"/>
      <xs:enumeration value="INITIATOR_LOCAL"/>
      <xs:enumeration value="INITIATOR_REMOTE"/>
      <xs:enumeration value="INITIATOR_BOTH"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="resolutionType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="TYPE_UNKNOWN"/>
      <xs:enumeration value="ANCHOR"/>
      <xs:enumeration value="INCOMING_HTLC"/>
      <xs:enumeration value="OUTGOING_HTLC"/>
      <xs:enumeration value="COMMIT"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="resolutionOutcome">
    <xs:restriction base="xs:string">
      <xs:enumeration value="OUTCOME_UNKNOWN"/>
      <xs:enumeration value="CLAIMED"/>
      <xs:enumeration value="UNCLAIMED"/>
      <xs:enumeration value="ABANDONED"/>
      <xs:enumeration value="FIRST_STAGE"/>
      <xs:enumeration value="TIMEOUT"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="syncType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="UNKNOWN_SYNC"/>
      <xs:enumeration value="ACTIVE_SYNC"/>
      <xs:enumeration value="PASSIVE_SYNC"/>
      <xs:enumeration value="PINNED_SYNC"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="eventType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="PEER_ONLINE"/>
      <xs:enumeration value="PEER_OFFLINE"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="anchorState">
    <xs:restriction base="xs:string">
      <xs:enumeration value="LIMBO"/>
      <xs:enumeration value="RECOVERED"/>
      <xs:enumeration value="LOST"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="updateType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="OPEN_CHANNEL"/>
      <xs:enumeration value="CLOSED_CHANNEL"/>
      <xs:enumeration value="ACTIVE_CHANNEL"/>
      <xs:enumeration value="INACTIVE_CHANNEL"/>
      <xs:enumeration value="PENDING_OPEN_CHANNEL"/>
      <xs:enumeration value="FULLY_RESOLVED_CHANNEL"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="nodeMetricType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="UNKNOWN"/>
      <xs:enumeration value="BETWEENNESS_CENTRALITY"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="invoiceHTLCState">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ACCEPTED"/>
      <xs:enumeration value="SETTLED"/>
      <xs:enumeration value="CANCELED"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="invoiceState">
    <xs:restriction base="xs:string">
      <xs:enumeration value="OPEN"/>
      <xs:enumeration value="SETTLED"/>
      <xs:enumeration value="CANCELED"/>
      <xs:enumeration value="ACCEPTED"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="paymentStatus">
    <xs:restriction base="xs:string">
      <xs:enumeration value="UNKNOWN"/>
      <xs:enumeration value="IN_FLIGHT"/>
      <xs:enumeration value="SUCCEEDED"/>
      <xs:enumeration value="FAILED"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="htlcStatus">
    <xs:restriction base="xs:string">
      <xs:enumeration value="IN_FLIGHT"/>
      <xs:enumeration value="SUCCEEDED"/>
      <xs:enumeration value="FAILED"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="failureCode">
    <xs:restriction base="xs:string">
      <xs:enumeration value="RESERVED"/>
      <xs:enumeration value="INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS"/>
      <xs:enumeration value="INCORRECT_PAYMENT_AMOUNT"/>
      <xs:enumeration value="FINAL_INCORRECT_CLTV_EXPIRY"/>
      <xs:enumeration value="FINAL_INCORRECT_HTLC_AMOUNT"/>
      <xs:enumeration value="FINAL_EXPIRY_TOO_SOON"/>
      <xs:enumeration value="INVALID_REALM"/>
      <xs:enumeration value="EXPIRY_TOO_SOON"/>
      <xs:enumeration value="INVALID_ONION_VERSION"/>
      <xs:enumeration value="INVALID_ONION_HMAC"/>
      <xs:enumeration value="INVALID_ONION_KEY"/>
      <xs:enumeration value="AMOUNT_BELOW_MINIMUM"/>
      <xs:enumeration value="FEE_INSUFFICIENT"/>
      <xs:enumeration value="INCORRECT_CLTV_EXPIRY"/>
      <xs:enumeration value="CHANNEL_DISABLED"/>
      <xs:enumeration value="TEMPORARY_CHANNEL_FAILURE"/>
      <xs:enumeration value="REQUIRED_NODE_FEATURE_MISSING"/>
      <xs:enumeration value="REQUIRED_CHANNEL_FEATURE_MISSING"/>
      <xs:enumeration value="UNKNOWN_NEXT_PEER"/>
      <xs:enumeration value="TEMPORARY_NODE_FAILURE"/>
      <xs:enumeration value="PERMANENT_NODE_FAILURE"/>
      <xs:enumeration value="PERMANENT_CHANNEL_FAILURE"/>
      <xs:enumeration value="EXPIRY_TOO_FAR"/>
      <xs:enumeration value="MPP_TIMEOUT"/>
      <xs:enumeration value="INVALID_ONION_PAYLOAD"/>
      <xs:enumeration value="INTERNAL_FAILURE"/>
      <xs:enumeration value="UNKNOWN_FAILURE"/>
      <xs:enumeration value="UNREADABLE_FAILURE"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="paymentFailureReason">
    <xs:restriction base="xs:string">
      <xs:enumeration value="FAILURE_REASON_NONE"/>
      <xs:enumeration value="FAILURE_REASON_TIMEOUT"/>
      <xs:enumeration value="FAILURE_REASON_NO_ROUTE"/>
      <xs:enumeration value="FAILURE_REASON_ERROR"/>
      <xs:enumeration value="FAILURE_REASON_INCORRECT_PAYMENT_DETAILS"/>
      <xs:enumeration value="FAILURE_REASON_INSUFFICIENT_BALANCE"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="updateFailure">
    <xs:restriction base="xs:string">
      <xs:enumeration value="UPDATE_FAILURE_UNKNOWN"/>
      <xs:enumeration value="UPDATE_FAILURE_PENDING"/>
      <xs:enumeration value="UPDATE_FAILURE_NOT_FOUND"/>
      <xs:enumeration value="UPDATE_FAILURE_INTERNAL_ERR"/>
      <xs:enumeration value="UPDATE_FAILURE_INVALID_PARAMETER"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

