@nadohq/indexer-client 0.15.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/dist/CandlestickPeriod-1DtcEiOb.d.ts +15 -0
  2. package/dist/CandlestickPeriod-1DtcEiOb.d.ts.map +1 -0
  3. package/dist/CandlestickPeriod-D3_IoSev.d.cts +15 -0
  4. package/dist/CandlestickPeriod-D3_IoSev.d.cts.map +1 -0
  5. package/dist/IndexerBaseClient-3KfzA2ph.cjs +639 -0
  6. package/dist/IndexerBaseClient-3KfzA2ph.cjs.map +1 -0
  7. package/dist/IndexerBaseClient.cjs +3 -788
  8. package/dist/IndexerBaseClient.d.cts +223 -229
  9. package/dist/IndexerBaseClient.d.cts.map +1 -0
  10. package/dist/IndexerBaseClient.d.ts +223 -229
  11. package/dist/IndexerBaseClient.d.ts.map +1 -0
  12. package/dist/IndexerBaseClient.js +601 -783
  13. package/dist/IndexerBaseClient.js.map +1 -1
  14. package/dist/IndexerClient.cjs +275 -381
  15. package/dist/IndexerClient.cjs.map +1 -1
  16. package/dist/IndexerClient.d.cts +32 -43
  17. package/dist/IndexerClient.d.cts.map +1 -0
  18. package/dist/IndexerClient.d.ts +32 -43
  19. package/dist/IndexerClient.d.ts.map +1 -0
  20. package/dist/IndexerClient.js +273 -362
  21. package/dist/IndexerClient.js.map +1 -1
  22. package/dist/IndexerEventType-B-uXsf-a.d.cts +5 -0
  23. package/dist/IndexerEventType-B-uXsf-a.d.cts.map +1 -0
  24. package/dist/IndexerEventType-DCLkSlgR.d.ts +5 -0
  25. package/dist/IndexerEventType-DCLkSlgR.d.ts.map +1 -0
  26. package/dist/IndexerLeaderboardType-Ck12QVWR.d.cts +13 -0
  27. package/dist/IndexerLeaderboardType-Ck12QVWR.d.cts.map +1 -0
  28. package/dist/IndexerLeaderboardType-DAKw2tfI.d.ts +13 -0
  29. package/dist/IndexerLeaderboardType-DAKw2tfI.d.ts.map +1 -0
  30. package/dist/NadoTx-CWCklgY4.d.ts +50 -0
  31. package/dist/NadoTx-CWCklgY4.d.ts.map +1 -0
  32. package/dist/NadoTx-MYNIlXyq.d.cts +50 -0
  33. package/dist/NadoTx-MYNIlXyq.d.cts.map +1 -0
  34. package/dist/clientTypes-BpxOUu1q.d.ts +709 -0
  35. package/dist/clientTypes-BpxOUu1q.d.ts.map +1 -0
  36. package/dist/clientTypes-BsJ2yIC4.d.cts +709 -0
  37. package/dist/clientTypes-BsJ2yIC4.d.cts.map +1 -0
  38. package/dist/collateralEventType-CzH_2iTV.d.ts +5 -0
  39. package/dist/collateralEventType-CzH_2iTV.d.ts.map +1 -0
  40. package/dist/collateralEventType-DIm6Te7F.d.cts +5 -0
  41. package/dist/collateralEventType-DIm6Te7F.d.cts.map +1 -0
  42. package/dist/dataMappers.cjs +269 -346
  43. package/dist/dataMappers.cjs.map +1 -1
  44. package/dist/dataMappers.d.cts +7 -12
  45. package/dist/dataMappers.d.cts.map +1 -0
  46. package/dist/dataMappers.d.ts +7 -12
  47. package/dist/dataMappers.d.ts.map +1 -0
  48. package/dist/dataMappers.js +248 -314
  49. package/dist/dataMappers.js.map +1 -1
  50. package/dist/endpoints.cjs +8 -32
  51. package/dist/endpoints.cjs.map +1 -1
  52. package/dist/endpoints.d.cts +4 -2
  53. package/dist/endpoints.d.cts.map +1 -0
  54. package/dist/endpoints.d.ts +4 -2
  55. package/dist/endpoints.d.ts.map +1 -0
  56. package/dist/endpoints.js +8 -8
  57. package/dist/endpoints.js.map +1 -1
  58. package/dist/index-D6CnpA_r.d.cts +1 -0
  59. package/dist/index-DhI2LvVQ.d.ts +1 -0
  60. package/dist/index.cjs +15 -33
  61. package/dist/index.d.cts +14 -18
  62. package/dist/index.d.ts +14 -18
  63. package/dist/index.js +8 -7
  64. package/dist/indexerBalanceValue-4AuNuTAc.d.cts +32 -0
  65. package/dist/indexerBalanceValue-4AuNuTAc.d.cts.map +1 -0
  66. package/dist/indexerBalanceValue-B0OggI67.d.ts +32 -0
  67. package/dist/indexerBalanceValue-B0OggI67.d.ts.map +1 -0
  68. package/dist/paginatedEventsTypes-DtGDU-kI.d.cts +110 -0
  69. package/dist/paginatedEventsTypes-DtGDU-kI.d.cts.map +1 -0
  70. package/dist/paginatedEventsTypes-RwXoQrEa.d.ts +110 -0
  71. package/dist/paginatedEventsTypes-RwXoQrEa.d.ts.map +1 -0
  72. package/dist/serverModelTypes-CM2g040o.d.cts +262 -0
  73. package/dist/serverModelTypes-CM2g040o.d.cts.map +1 -0
  74. package/dist/serverModelTypes-DPHMUSZe.d.ts +262 -0
  75. package/dist/serverModelTypes-DPHMUSZe.d.ts.map +1 -0
  76. package/dist/serverTypes-BMSNh2GK.d.cts +452 -0
  77. package/dist/serverTypes-BMSNh2GK.d.cts.map +1 -0
  78. package/dist/serverTypes-c8IABU73.d.ts +452 -0
  79. package/dist/serverTypes-c8IABU73.d.ts.map +1 -0
  80. package/dist/types/CandlestickPeriod.cjs +16 -40
  81. package/dist/types/CandlestickPeriod.cjs.map +1 -1
  82. package/dist/types/CandlestickPeriod.d.cts +2 -13
  83. package/dist/types/CandlestickPeriod.d.ts +2 -13
  84. package/dist/types/CandlestickPeriod.js +16 -16
  85. package/dist/types/CandlestickPeriod.js.map +1 -1
  86. package/dist/types/IndexerEventType.cjs +0 -19
  87. package/dist/types/IndexerEventType.d.cts +2 -3
  88. package/dist/types/IndexerEventType.d.ts +2 -3
  89. package/dist/types/IndexerEventType.js +1 -1
  90. package/dist/types/IndexerLeaderboardType.cjs +0 -19
  91. package/dist/types/IndexerLeaderboardType.d.cts +2 -11
  92. package/dist/types/IndexerLeaderboardType.d.ts +2 -11
  93. package/dist/types/IndexerLeaderboardType.js +1 -1
  94. package/dist/types/NadoTx.cjs +0 -19
  95. package/dist/types/NadoTx.d.cts +2 -48
  96. package/dist/types/NadoTx.d.ts +2 -48
  97. package/dist/types/NadoTx.js +1 -1
  98. package/dist/types/clientTypes.cjs +0 -19
  99. package/dist/types/clientTypes.d.cts +2 -709
  100. package/dist/types/clientTypes.d.ts +2 -709
  101. package/dist/types/clientTypes.js +1 -1
  102. package/dist/types/collateralEventType.cjs +0 -19
  103. package/dist/types/collateralEventType.d.cts +2 -3
  104. package/dist/types/collateralEventType.d.ts +2 -3
  105. package/dist/types/collateralEventType.js +1 -1
  106. package/dist/types/index.cjs +3 -41
  107. package/dist/types/index.d.cts +10 -13
  108. package/dist/types/index.d.ts +10 -13
  109. package/dist/types/index.js +2 -11
  110. package/dist/types/paginatedEventsTypes.cjs +0 -19
  111. package/dist/types/paginatedEventsTypes.d.cts +2 -115
  112. package/dist/types/paginatedEventsTypes.d.ts +2 -115
  113. package/dist/types/paginatedEventsTypes.js +1 -1
  114. package/dist/types/serverModelTypes.cjs +0 -19
  115. package/dist/types/serverModelTypes.d.cts +2 -260
  116. package/dist/types/serverModelTypes.d.ts +2 -260
  117. package/dist/types/serverModelTypes.js +1 -1
  118. package/dist/types/serverTypes.cjs +0 -19
  119. package/dist/types/serverTypes.d.cts +2 -451
  120. package/dist/types/serverTypes.d.ts +2 -451
  121. package/dist/types/serverTypes.js +1 -1
  122. package/dist/utils/index.cjs +5 -25
  123. package/dist/utils/index.d.cts +2 -12
  124. package/dist/utils/index.d.ts +2 -12
  125. package/dist/utils/index.js +2 -3
  126. package/dist/utils/indexerBalanceValue.cjs +32 -36
  127. package/dist/utils/indexerBalanceValue.cjs.map +1 -1
  128. package/dist/utils/indexerBalanceValue.d.cts +2 -39
  129. package/dist/utils/indexerBalanceValue.d.ts +2 -39
  130. package/dist/utils/indexerBalanceValue.js +29 -9
  131. package/dist/utils/indexerBalanceValue.js.map +1 -1
  132. package/package.json +10 -10
  133. package/dist/IndexerBaseClient.cjs.map +0 -1
  134. package/dist/index.cjs.map +0 -1
  135. package/dist/index.js.map +0 -1
  136. package/dist/types/IndexerEventType.cjs.map +0 -1
  137. package/dist/types/IndexerEventType.js.map +0 -1
  138. package/dist/types/IndexerLeaderboardType.cjs.map +0 -1
  139. package/dist/types/IndexerLeaderboardType.js.map +0 -1
  140. package/dist/types/NadoTx.cjs.map +0 -1
  141. package/dist/types/NadoTx.js.map +0 -1
  142. package/dist/types/clientTypes.cjs.map +0 -1
  143. package/dist/types/clientTypes.js.map +0 -1
  144. package/dist/types/collateralEventType.cjs.map +0 -1
  145. package/dist/types/collateralEventType.js.map +0 -1
  146. package/dist/types/index.cjs.map +0 -1
  147. package/dist/types/index.js.map +0 -1
  148. package/dist/types/paginatedEventsTypes.cjs.map +0 -1
  149. package/dist/types/paginatedEventsTypes.js.map +0 -1
  150. package/dist/types/serverModelTypes.cjs.map +0 -1
  151. package/dist/types/serverModelTypes.js.map +0 -1
  152. package/dist/types/serverTypes.cjs.map +0 -1
  153. package/dist/types/serverTypes.js.map +0 -1
  154. package/dist/utils/index.cjs.map +0 -1
  155. package/dist/utils/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/IndexerClient.ts"],"sourcesContent":["import {\n NLP_PRODUCT_ID,\n ProductEngineType,\n QUOTE_PRODUCT_ID,\n subaccountFromHex,\n toBigNumber,\n toIntegerString,\n} from '@nadohq/shared';\nimport BigNumber from 'bignumber.js';\n\nimport { IndexerBaseClient } from './IndexerBaseClient';\nimport {\n BaseIndexerPaginatedEvent,\n CollateralEventType,\n GetIndexerPaginatedInterestFundingPaymentsResponse,\n GetIndexerPaginatedLeaderboardParams,\n GetIndexerPaginatedLeaderboardResponse,\n GetIndexerPaginatedOrdersParams,\n GetIndexerPaginatedOrdersResponse,\n GetIndexerSubaccountCollateralEventsParams,\n GetIndexerSubaccountCollateralEventsResponse,\n GetIndexerSubaccountInterestFundingPaymentsParams,\n GetIndexerSubaccountLiquidationEventsParams,\n GetIndexerSubaccountLiquidationEventsResponse,\n GetIndexerSubaccountMatchEventParams,\n GetIndexerSubaccountMatchEventsResponse,\n GetIndexerSubaccountNlpEventsParams,\n GetIndexerSubaccountNlpEventsResponse,\n GetIndexerSubaccountSettlementEventsParams,\n GetIndexerSubaccountSettlementEventsResponse,\n IndexerCollateralEvent,\n IndexerEventPerpStateSnapshot,\n IndexerEventSpotStateSnapshot,\n IndexerEventWithTx,\n IndexerLiquidationEvent,\n IndexerNlpEvent,\n IndexerSettlementEvent,\n NadoLiquidateSubaccountTx,\n PaginatedIndexerEventsResponse,\n} from './types';\n\n/**\n * Indexer client providing paginated queries for historical data from the Nado indexer service\n */\nexport class IndexerClient extends IndexerBaseClient {\n async getPaginatedSubaccountMatchEvents(\n params: GetIndexerSubaccountMatchEventParams,\n ): Promise<GetIndexerSubaccountMatchEventsResponse> {\n const {\n startCursor,\n maxTimestampInclusive,\n limit: requestedLimit,\n subaccountName,\n subaccountOwner,\n isolated,\n productIds,\n } = params;\n\n const limit = requestedLimit + 1;\n const events = await this.getMatchEvents({\n startCursor,\n maxTimestampInclusive,\n limit,\n subaccounts: [{ subaccountName, subaccountOwner }],\n productIds,\n isolated,\n });\n\n return this.getPaginationEventsResponse(events, requestedLimit);\n }\n\n async getPaginatedSubaccountNlpEvents(\n params: GetIndexerSubaccountNlpEventsParams,\n ): Promise<GetIndexerSubaccountNlpEventsResponse> {\n const {\n startCursor,\n maxTimestampInclusive,\n limit: requestedLimit,\n subaccountName,\n subaccountOwner,\n } = params;\n\n // There are 2 events per mint/burn for spot - one associated with the NLP product & the other with the primary quote\n const limit = requestedLimit + 1;\n const baseResponse = await this.getEvents({\n startCursor,\n maxTimestampInclusive,\n eventTypes: ['mint_nlp', 'burn_nlp'],\n limit: {\n type: 'txs',\n value: limit,\n },\n subaccounts: [{ subaccountName, subaccountOwner }],\n });\n\n // Now aggregate results by the submission index, use map to maintain insertion order\n const eventsBySubmissionIdx = new Map<string, IndexerNlpEvent>();\n\n baseResponse.forEach((event) => {\n const mappedEvent = (() => {\n const existingEvent = eventsBySubmissionIdx.get(event.submissionIndex);\n if (existingEvent) {\n return existingEvent;\n }\n\n const newEvent: IndexerNlpEvent = {\n nlpDelta: toBigNumber(0),\n primaryQuoteDelta: toBigNumber(0),\n timestamp: event.timestamp,\n submissionIndex: event.submissionIndex,\n tx: event.tx,\n ...subaccountFromHex(event.subaccount),\n };\n eventsBySubmissionIdx.set(event.submissionIndex, newEvent);\n\n return newEvent;\n })();\n\n const balanceDelta = event.state.postBalance.amount.minus(\n event.state.preBalance.amount,\n );\n\n const productId = event.state.market.productId;\n if (productId === QUOTE_PRODUCT_ID) {\n mappedEvent.primaryQuoteDelta = balanceDelta;\n } else if (productId === NLP_PRODUCT_ID) {\n mappedEvent.nlpDelta = balanceDelta;\n } else {\n throw Error(`Invalid product ID for NLP event ${productId}`);\n }\n });\n\n // Force cast to get rid of the `Partial`\n const events = Array.from(eventsBySubmissionIdx.values());\n return this.getPaginationEventsResponse(events, requestedLimit);\n }\n\n async getPaginatedSubaccountCollateralEvents(\n params: GetIndexerSubaccountCollateralEventsParams,\n ): Promise<GetIndexerSubaccountCollateralEventsResponse> {\n const {\n startCursor,\n maxTimestampInclusive,\n limit: requestedLimit,\n subaccountName,\n subaccountOwner,\n eventTypes,\n isolated,\n } = params;\n\n const limit = requestedLimit + 1;\n const baseResponse = await this.getEvents({\n startCursor,\n maxTimestampInclusive,\n eventTypes: eventTypes ?? [\n 'deposit_collateral',\n 'withdraw_collateral',\n 'transfer_quote',\n ],\n limit: {\n type: 'txs',\n value: limit,\n },\n subaccounts: [{ subaccountName, subaccountOwner }],\n isolated,\n });\n\n const events = baseResponse.map((event): IndexerCollateralEvent => {\n if (event.state.type !== ProductEngineType.SPOT) {\n throw Error('Incorrect event state for collateral event');\n }\n\n return {\n timestamp: event.timestamp,\n // This cast is safe as the query param restricts to collateral events\n eventType: event.eventType as CollateralEventType,\n submissionIndex: event.submissionIndex,\n snapshot: event.state,\n amount: event.state.postBalance.amount.minus(\n event.state.preBalance.amount,\n ),\n newAmount: event.state.postBalance.amount,\n tx: event.tx,\n ...subaccountFromHex(event.subaccount),\n };\n });\n\n return this.getPaginationEventsResponse(events, requestedLimit);\n }\n\n async getPaginatedSubaccountOrders(\n params: GetIndexerPaginatedOrdersParams,\n ): Promise<GetIndexerPaginatedOrdersResponse> {\n const {\n startCursor,\n maxTimestampInclusive,\n limit: requestedLimit,\n subaccountName,\n subaccountOwner,\n productIds,\n triggerTypes,\n isolated,\n } = params;\n\n const limit = requestedLimit + 1;\n const baseResponse = await this.getOrders({\n startCursor,\n maxTimestampInclusive,\n subaccounts: [{ subaccountName, subaccountOwner }],\n limit,\n productIds,\n triggerTypes,\n isolated,\n });\n\n // Same pagination meta logic as events, but duplicate for now as this return type is slightly different\n const truncatedOrders = baseResponse.slice(0, requestedLimit);\n const hasMore = baseResponse.length > truncatedOrders.length;\n return {\n meta: {\n hasMore,\n nextCursor: baseResponse[truncatedOrders.length]?.submissionIndex,\n },\n orders: truncatedOrders,\n };\n }\n\n async getPaginatedSubaccountSettlementEvents(\n params: GetIndexerSubaccountSettlementEventsParams,\n ): Promise<GetIndexerSubaccountSettlementEventsResponse> {\n const {\n startCursor,\n maxTimestampInclusive,\n limit: requestedLimit,\n subaccountName,\n subaccountOwner,\n } = params;\n\n // Each settlement has a quote & perp balance change, so 2 events per settlement tx\n const limit = requestedLimit + 1;\n const baseResponse = await this.getEvents({\n startCursor,\n maxTimestampInclusive,\n eventTypes: ['settle_pnl'],\n limit: {\n type: 'txs',\n value: limit,\n },\n subaccounts: [{ subaccountName, subaccountOwner }],\n });\n\n const events = baseResponse\n .map((event): IndexerSettlementEvent | undefined => {\n if (event.state.market.productId === QUOTE_PRODUCT_ID) {\n return;\n }\n if (event.state.type !== ProductEngineType.PERP) {\n throw Error('Incorrect event state for settlement event');\n }\n\n return {\n timestamp: event.timestamp,\n submissionIndex: event.submissionIndex,\n snapshot: event.state,\n // Spot quote delta = -vQuote delta\n quoteDelta: event.state.preBalance.vQuoteBalance.minus(\n event.state.postBalance.vQuoteBalance,\n ),\n isolated: event.isolated,\n tx: event.tx,\n ...subaccountFromHex(event.subaccount),\n };\n })\n .filter((event): event is IndexerSettlementEvent => !!event);\n\n return this.getPaginationEventsResponse(events, requestedLimit);\n }\n\n async getPaginatedSubaccountLiquidationEvents(\n params: GetIndexerSubaccountLiquidationEventsParams,\n ): Promise<GetIndexerSubaccountLiquidationEventsResponse> {\n const {\n startCursor,\n maxTimestampInclusive,\n limit: requestedLimit,\n subaccountName,\n subaccountOwner,\n productIds,\n } = params;\n\n // There is 1 event emitted per product, including quote\n // However, if the balance change is 0, then the liquidation did not touch the product\n // A tx operates on a given health group, so only a spot & its associated perp can be actually liquidated within a single tx\n // with an associated quote balance change\n const limit = requestedLimit + 1;\n const baseResponse = await this.getEvents({\n startCursor,\n maxTimestampInclusive,\n eventTypes: ['liquidate_subaccount'],\n limit: {\n type: 'txs',\n value: limit,\n },\n subaccounts: [{ subaccountName, subaccountOwner }],\n productIds,\n });\n\n // Now aggregate results by the submission index, use map to maintain insertion order\n const eventsBySubmissionIdx = new Map<\n string,\n Partial<IndexerLiquidationEvent>\n >();\n\n const productIdsSet = productIds ? new Set(productIds) : undefined;\n baseResponse.forEach((event) => {\n // even though we're querying for a specific set of product IDs\n // backend will have events that are associated with every product\n // because they generate a single event per product for each liquidation\n // as a result, we need to filter out events that are not relevant to the requested product IDs\n if (\n productIdsSet &&\n !productIdsSet.has(\n // product_id can also encode a health group for spread liquidation, but we ignore\n // this case for now\n (event.tx as NadoLiquidateSubaccountTx).liquidate_subaccount\n .product_id,\n )\n ) {\n return;\n }\n\n const mappedEvent = (() => {\n const existingEvent = eventsBySubmissionIdx.get(event.submissionIndex);\n if (existingEvent) {\n return existingEvent;\n }\n\n const newEvent: Partial<IndexerLiquidationEvent> = {\n perp: undefined,\n spot: undefined,\n quote: undefined,\n timestamp: event.timestamp,\n submissionIndex: event.submissionIndex,\n };\n\n return newEvent;\n })();\n\n // The original balance is the negated delta\n const balanceDelta = event.state.postBalance.amount.minus(\n event.state.preBalance.amount,\n );\n\n // Event without balance change - not part of this liq\n // However, we could have zero balance changes for the quote product if this was a partial liquidation\n if (\n balanceDelta.isZero() &&\n event.state.market.productId !== QUOTE_PRODUCT_ID\n ) {\n return;\n }\n\n if (event.state.type === ProductEngineType.PERP) {\n mappedEvent.perp = {\n amountLiquidated: balanceDelta.negated(),\n // This cast is safe because we're checking for event.state.type\n indexerEvent:\n event as IndexerEventWithTx<IndexerEventPerpStateSnapshot>,\n };\n } else if (event.state.market.productId === QUOTE_PRODUCT_ID) {\n mappedEvent.quote = {\n balanceDelta,\n indexerEvent:\n event as IndexerEventWithTx<IndexerEventSpotStateSnapshot>,\n };\n } else {\n mappedEvent.spot = {\n amountLiquidated: balanceDelta.negated(),\n indexerEvent:\n event as IndexerEventWithTx<IndexerEventSpotStateSnapshot>,\n };\n }\n\n eventsBySubmissionIdx.set(event.submissionIndex, mappedEvent);\n });\n\n // Force cast to get rid of the `Partial`\n const events = Array.from(\n eventsBySubmissionIdx.values(),\n ) as IndexerLiquidationEvent[];\n return this.getPaginationEventsResponse(events, requestedLimit);\n }\n\n /**\n * Get all interest funding payments for a given subaccount with the standard pagination response\n * This is a simple wrapper over the underlying `getInterestFundingPayments` function. Very little\n * additional processing is needed because the endpoint is well structured for pagination\n *\n * @param params\n */\n async getPaginatedSubaccountInterestFundingPayments(\n params: GetIndexerSubaccountInterestFundingPaymentsParams,\n ): Promise<GetIndexerPaginatedInterestFundingPaymentsResponse> {\n const {\n limit,\n productIds,\n startCursor,\n maxTimestampInclusive,\n subaccountName,\n subaccountOwner,\n } = params;\n const baseResponse = await this.getInterestFundingPayments({\n limit,\n productIds,\n startCursor,\n maxTimestampInclusive,\n subaccount: {\n subaccountName,\n subaccountOwner,\n },\n });\n\n return {\n ...baseResponse,\n meta: {\n hasMore: baseResponse.nextCursor != null,\n nextCursor: baseResponse.nextCursor ?? undefined,\n },\n };\n }\n\n /**\n * Paginated leaderboard query that paginates on rank number.\n *\n * @param params\n */\n async getPaginatedLeaderboard(\n params: GetIndexerPaginatedLeaderboardParams,\n ): Promise<GetIndexerPaginatedLeaderboardResponse> {\n const requestedLimit = params.limit;\n\n const baseResponse = await this.getLeaderboard({\n contestId: params.contestId,\n rankType: params.rankType,\n // Query for 1 more result for proper pagination\n limit: requestedLimit + 1,\n // Start cursor is the next rank number\n startCursor: params.startCursor,\n });\n\n const overflowParticipant = baseResponse.participants[requestedLimit];\n let nextCursor: BigNumber | undefined;\n if (overflowParticipant) {\n // If rankType specified, use it directly. Otherwise it's a single-track\n // contest so grab the rank from the only track present.\n const trackData = (\n params.rankType\n ? overflowParticipant.tracks[params.rankType]\n : Object.values(overflowParticipant.tracks)[0]\n )!;\n nextCursor = trackData.rank;\n }\n\n return {\n ...baseResponse,\n // Truncate the response to the requested limit\n participants: baseResponse.participants.slice(0, requestedLimit),\n meta: {\n hasMore: baseResponse.participants.length > requestedLimit,\n nextCursor:\n nextCursor !== undefined ? toIntegerString(nextCursor) : undefined,\n },\n };\n }\n\n /**\n * A util function to generate the standard pagination response for events\n * @param events\n * @param requestedLimit given by consumers of the SDK\n * @private\n */\n private getPaginationEventsResponse<T extends BaseIndexerPaginatedEvent>(\n events: T[],\n requestedLimit: number,\n ): PaginatedIndexerEventsResponse<T> {\n const truncatedEvents = events.slice(0, requestedLimit);\n const hasMore = events.length > truncatedEvents.length;\n\n return {\n events: truncatedEvents,\n meta: {\n hasMore,\n // We want the NEXT available cursor, so we use the first event after the truncation cutoff\n // If len(events) === len(truncatedEvents), there are no more entries and this is undefined\n nextCursor: events[truncatedEvents.length]?.submissionIndex,\n },\n };\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"file":"IndexerClient.cjs","names":["IndexerBaseClient","QUOTE_PRODUCT_ID","NLP_PRODUCT_ID","ProductEngineType"],"sources":["../src/IndexerClient.ts"],"sourcesContent":["import {\n NLP_PRODUCT_ID,\n ProductEngineType,\n QUOTE_PRODUCT_ID,\n subaccountFromHex,\n toBigNumber,\n toIntegerString,\n} from '@nadohq/shared';\nimport BigNumber from 'bignumber.js';\n\nimport { IndexerBaseClient } from './IndexerBaseClient';\nimport {\n BaseIndexerPaginatedEvent,\n CollateralEventType,\n GetIndexerPaginatedInterestFundingPaymentsResponse,\n GetIndexerPaginatedLeaderboardParams,\n GetIndexerPaginatedLeaderboardResponse,\n GetIndexerPaginatedOrdersParams,\n GetIndexerPaginatedOrdersResponse,\n GetIndexerSubaccountCollateralEventsParams,\n GetIndexerSubaccountCollateralEventsResponse,\n GetIndexerSubaccountInterestFundingPaymentsParams,\n GetIndexerSubaccountLiquidationEventsParams,\n GetIndexerSubaccountLiquidationEventsResponse,\n GetIndexerSubaccountMatchEventParams,\n GetIndexerSubaccountMatchEventsResponse,\n GetIndexerSubaccountNlpEventsParams,\n GetIndexerSubaccountNlpEventsResponse,\n GetIndexerSubaccountSettlementEventsParams,\n GetIndexerSubaccountSettlementEventsResponse,\n IndexerCollateralEvent,\n IndexerEventPerpStateSnapshot,\n IndexerEventSpotStateSnapshot,\n IndexerEventWithTx,\n IndexerLiquidationEvent,\n IndexerNlpEvent,\n IndexerSettlementEvent,\n NadoLiquidateSubaccountTx,\n PaginatedIndexerEventsResponse,\n} from './types';\n\n/**\n * Indexer client providing paginated queries for historical data from the Nado indexer service\n */\nexport class IndexerClient extends IndexerBaseClient {\n async getPaginatedSubaccountMatchEvents(\n params: GetIndexerSubaccountMatchEventParams,\n ): Promise<GetIndexerSubaccountMatchEventsResponse> {\n const {\n startCursor,\n maxTimestampInclusive,\n limit: requestedLimit,\n subaccountName,\n subaccountOwner,\n isolated,\n productIds,\n } = params;\n\n const limit = requestedLimit + 1;\n const events = await this.getMatchEvents({\n startCursor,\n maxTimestampInclusive,\n limit,\n subaccounts: [{ subaccountName, subaccountOwner }],\n productIds,\n isolated,\n });\n\n return this.getPaginationEventsResponse(events, requestedLimit);\n }\n\n async getPaginatedSubaccountNlpEvents(\n params: GetIndexerSubaccountNlpEventsParams,\n ): Promise<GetIndexerSubaccountNlpEventsResponse> {\n const {\n startCursor,\n maxTimestampInclusive,\n limit: requestedLimit,\n subaccountName,\n subaccountOwner,\n } = params;\n\n // There are 2 events per mint/burn for spot - one associated with the NLP product & the other with the primary quote\n const limit = requestedLimit + 1;\n const baseResponse = await this.getEvents({\n startCursor,\n maxTimestampInclusive,\n eventTypes: ['mint_nlp', 'burn_nlp'],\n limit: {\n type: 'txs',\n value: limit,\n },\n subaccounts: [{ subaccountName, subaccountOwner }],\n });\n\n // Now aggregate results by the submission index, use map to maintain insertion order\n const eventsBySubmissionIdx = new Map<string, IndexerNlpEvent>();\n\n baseResponse.forEach((event) => {\n const mappedEvent = (() => {\n const existingEvent = eventsBySubmissionIdx.get(event.submissionIndex);\n if (existingEvent) {\n return existingEvent;\n }\n\n const newEvent: IndexerNlpEvent = {\n nlpDelta: toBigNumber(0),\n primaryQuoteDelta: toBigNumber(0),\n timestamp: event.timestamp,\n submissionIndex: event.submissionIndex,\n tx: event.tx,\n ...subaccountFromHex(event.subaccount),\n };\n eventsBySubmissionIdx.set(event.submissionIndex, newEvent);\n\n return newEvent;\n })();\n\n const balanceDelta = event.state.postBalance.amount.minus(\n event.state.preBalance.amount,\n );\n\n const productId = event.state.market.productId;\n if (productId === QUOTE_PRODUCT_ID) {\n mappedEvent.primaryQuoteDelta = balanceDelta;\n } else if (productId === NLP_PRODUCT_ID) {\n mappedEvent.nlpDelta = balanceDelta;\n } else {\n throw Error(`Invalid product ID for NLP event ${productId}`);\n }\n });\n\n // Force cast to get rid of the `Partial`\n const events = Array.from(eventsBySubmissionIdx.values());\n return this.getPaginationEventsResponse(events, requestedLimit);\n }\n\n async getPaginatedSubaccountCollateralEvents(\n params: GetIndexerSubaccountCollateralEventsParams,\n ): Promise<GetIndexerSubaccountCollateralEventsResponse> {\n const {\n startCursor,\n maxTimestampInclusive,\n limit: requestedLimit,\n subaccountName,\n subaccountOwner,\n eventTypes,\n isolated,\n } = params;\n\n const limit = requestedLimit + 1;\n const baseResponse = await this.getEvents({\n startCursor,\n maxTimestampInclusive,\n eventTypes: eventTypes ?? [\n 'deposit_collateral',\n 'withdraw_collateral',\n 'transfer_quote',\n ],\n limit: {\n type: 'txs',\n value: limit,\n },\n subaccounts: [{ subaccountName, subaccountOwner }],\n isolated,\n });\n\n const events = baseResponse.map((event): IndexerCollateralEvent => {\n if (event.state.type !== ProductEngineType.SPOT) {\n throw Error('Incorrect event state for collateral event');\n }\n\n return {\n timestamp: event.timestamp,\n // This cast is safe as the query param restricts to collateral events\n eventType: event.eventType as CollateralEventType,\n submissionIndex: event.submissionIndex,\n snapshot: event.state,\n amount: event.state.postBalance.amount.minus(\n event.state.preBalance.amount,\n ),\n newAmount: event.state.postBalance.amount,\n tx: event.tx,\n ...subaccountFromHex(event.subaccount),\n };\n });\n\n return this.getPaginationEventsResponse(events, requestedLimit);\n }\n\n async getPaginatedSubaccountOrders(\n params: GetIndexerPaginatedOrdersParams,\n ): Promise<GetIndexerPaginatedOrdersResponse> {\n const {\n startCursor,\n maxTimestampInclusive,\n limit: requestedLimit,\n subaccountName,\n subaccountOwner,\n productIds,\n triggerTypes,\n isolated,\n } = params;\n\n const limit = requestedLimit + 1;\n const baseResponse = await this.getOrders({\n startCursor,\n maxTimestampInclusive,\n subaccounts: [{ subaccountName, subaccountOwner }],\n limit,\n productIds,\n triggerTypes,\n isolated,\n });\n\n // Same pagination meta logic as events, but duplicate for now as this return type is slightly different\n const truncatedOrders = baseResponse.slice(0, requestedLimit);\n const hasMore = baseResponse.length > truncatedOrders.length;\n return {\n meta: {\n hasMore,\n nextCursor: baseResponse[truncatedOrders.length]?.submissionIndex,\n },\n orders: truncatedOrders,\n };\n }\n\n async getPaginatedSubaccountSettlementEvents(\n params: GetIndexerSubaccountSettlementEventsParams,\n ): Promise<GetIndexerSubaccountSettlementEventsResponse> {\n const {\n startCursor,\n maxTimestampInclusive,\n limit: requestedLimit,\n subaccountName,\n subaccountOwner,\n } = params;\n\n // Each settlement has a quote & perp balance change, so 2 events per settlement tx\n const limit = requestedLimit + 1;\n const baseResponse = await this.getEvents({\n startCursor,\n maxTimestampInclusive,\n eventTypes: ['settle_pnl'],\n limit: {\n type: 'txs',\n value: limit,\n },\n subaccounts: [{ subaccountName, subaccountOwner }],\n });\n\n const events = baseResponse\n .map((event): IndexerSettlementEvent | undefined => {\n if (event.state.market.productId === QUOTE_PRODUCT_ID) {\n return;\n }\n if (event.state.type !== ProductEngineType.PERP) {\n throw Error('Incorrect event state for settlement event');\n }\n\n return {\n timestamp: event.timestamp,\n submissionIndex: event.submissionIndex,\n snapshot: event.state,\n // Spot quote delta = -vQuote delta\n quoteDelta: event.state.preBalance.vQuoteBalance.minus(\n event.state.postBalance.vQuoteBalance,\n ),\n isolated: event.isolated,\n tx: event.tx,\n ...subaccountFromHex(event.subaccount),\n };\n })\n .filter((event): event is IndexerSettlementEvent => !!event);\n\n return this.getPaginationEventsResponse(events, requestedLimit);\n }\n\n async getPaginatedSubaccountLiquidationEvents(\n params: GetIndexerSubaccountLiquidationEventsParams,\n ): Promise<GetIndexerSubaccountLiquidationEventsResponse> {\n const {\n startCursor,\n maxTimestampInclusive,\n limit: requestedLimit,\n subaccountName,\n subaccountOwner,\n productIds,\n } = params;\n\n // There is 1 event emitted per product, including quote\n // However, if the balance change is 0, then the liquidation did not touch the product\n // A tx operates on a given health group, so only a spot & its associated perp can be actually liquidated within a single tx\n // with an associated quote balance change\n const limit = requestedLimit + 1;\n const baseResponse = await this.getEvents({\n startCursor,\n maxTimestampInclusive,\n eventTypes: ['liquidate_subaccount'],\n limit: {\n type: 'txs',\n value: limit,\n },\n subaccounts: [{ subaccountName, subaccountOwner }],\n productIds,\n });\n\n // Now aggregate results by the submission index, use map to maintain insertion order\n const eventsBySubmissionIdx = new Map<\n string,\n Partial<IndexerLiquidationEvent>\n >();\n\n const productIdsSet = productIds ? new Set(productIds) : undefined;\n baseResponse.forEach((event) => {\n // even though we're querying for a specific set of product IDs\n // backend will have events that are associated with every product\n // because they generate a single event per product for each liquidation\n // as a result, we need to filter out events that are not relevant to the requested product IDs\n if (\n productIdsSet &&\n !productIdsSet.has(\n // product_id can also encode a health group for spread liquidation, but we ignore\n // this case for now\n (event.tx as NadoLiquidateSubaccountTx).liquidate_subaccount\n .product_id,\n )\n ) {\n return;\n }\n\n const mappedEvent = (() => {\n const existingEvent = eventsBySubmissionIdx.get(event.submissionIndex);\n if (existingEvent) {\n return existingEvent;\n }\n\n const newEvent: Partial<IndexerLiquidationEvent> = {\n perp: undefined,\n spot: undefined,\n quote: undefined,\n timestamp: event.timestamp,\n submissionIndex: event.submissionIndex,\n };\n\n return newEvent;\n })();\n\n // The original balance is the negated delta\n const balanceDelta = event.state.postBalance.amount.minus(\n event.state.preBalance.amount,\n );\n\n // Event without balance change - not part of this liq\n // However, we could have zero balance changes for the quote product if this was a partial liquidation\n if (\n balanceDelta.isZero() &&\n event.state.market.productId !== QUOTE_PRODUCT_ID\n ) {\n return;\n }\n\n if (event.state.type === ProductEngineType.PERP) {\n mappedEvent.perp = {\n amountLiquidated: balanceDelta.negated(),\n // This cast is safe because we're checking for event.state.type\n indexerEvent:\n event as IndexerEventWithTx<IndexerEventPerpStateSnapshot>,\n };\n } else if (event.state.market.productId === QUOTE_PRODUCT_ID) {\n mappedEvent.quote = {\n balanceDelta,\n indexerEvent:\n event as IndexerEventWithTx<IndexerEventSpotStateSnapshot>,\n };\n } else {\n mappedEvent.spot = {\n amountLiquidated: balanceDelta.negated(),\n indexerEvent:\n event as IndexerEventWithTx<IndexerEventSpotStateSnapshot>,\n };\n }\n\n eventsBySubmissionIdx.set(event.submissionIndex, mappedEvent);\n });\n\n // Force cast to get rid of the `Partial`\n const events = Array.from(\n eventsBySubmissionIdx.values(),\n ) as IndexerLiquidationEvent[];\n return this.getPaginationEventsResponse(events, requestedLimit);\n }\n\n /**\n * Get all interest funding payments for a given subaccount with the standard pagination response\n * This is a simple wrapper over the underlying `getInterestFundingPayments` function. Very little\n * additional processing is needed because the endpoint is well structured for pagination\n *\n * @param params\n */\n async getPaginatedSubaccountInterestFundingPayments(\n params: GetIndexerSubaccountInterestFundingPaymentsParams,\n ): Promise<GetIndexerPaginatedInterestFundingPaymentsResponse> {\n const {\n limit,\n productIds,\n startCursor,\n maxTimestampInclusive,\n subaccountName,\n subaccountOwner,\n } = params;\n const baseResponse = await this.getInterestFundingPayments({\n limit,\n productIds,\n startCursor,\n maxTimestampInclusive,\n subaccount: {\n subaccountName,\n subaccountOwner,\n },\n });\n\n return {\n ...baseResponse,\n meta: {\n hasMore: baseResponse.nextCursor != null,\n nextCursor: baseResponse.nextCursor ?? undefined,\n },\n };\n }\n\n /**\n * Paginated leaderboard query that paginates on rank number.\n *\n * @param params\n */\n async getPaginatedLeaderboard(\n params: GetIndexerPaginatedLeaderboardParams,\n ): Promise<GetIndexerPaginatedLeaderboardResponse> {\n const requestedLimit = params.limit;\n\n const baseResponse = await this.getLeaderboard({\n contestId: params.contestId,\n rankType: params.rankType,\n // Query for 1 more result for proper pagination\n limit: requestedLimit + 1,\n // Start cursor is the next rank number\n startCursor: params.startCursor,\n });\n\n const overflowParticipant = baseResponse.participants[requestedLimit];\n let nextCursor: BigNumber | undefined;\n if (overflowParticipant) {\n // If rankType specified, use it directly. Otherwise it's a single-track\n // contest so grab the rank from the only track present.\n const trackData = (\n params.rankType\n ? overflowParticipant.tracks[params.rankType]\n : Object.values(overflowParticipant.tracks)[0]\n )!;\n nextCursor = trackData.rank;\n }\n\n return {\n ...baseResponse,\n // Truncate the response to the requested limit\n participants: baseResponse.participants.slice(0, requestedLimit),\n meta: {\n hasMore: baseResponse.participants.length > requestedLimit,\n nextCursor:\n nextCursor !== undefined ? toIntegerString(nextCursor) : undefined,\n },\n };\n }\n\n /**\n * A util function to generate the standard pagination response for events\n * @param events\n * @param requestedLimit given by consumers of the SDK\n * @private\n */\n private getPaginationEventsResponse<T extends BaseIndexerPaginatedEvent>(\n events: T[],\n requestedLimit: number,\n ): PaginatedIndexerEventsResponse<T> {\n const truncatedEvents = events.slice(0, requestedLimit);\n const hasMore = events.length > truncatedEvents.length;\n\n return {\n events: truncatedEvents,\n meta: {\n hasMore,\n // We want the NEXT available cursor, so we use the first event after the truncation cutoff\n // If len(events) === len(truncatedEvents), there are no more entries and this is undefined\n nextCursor: events[truncatedEvents.length]?.submissionIndex,\n },\n };\n }\n}\n"],"mappings":"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"}
@@ -1,50 +1,39 @@
1
- import { IndexerBaseClient } from './IndexerBaseClient.cjs';
2
- import { GetIndexerSubaccountMatchEventParams, GetIndexerSubaccountMatchEventsResponse, GetIndexerSubaccountNlpEventsParams, GetIndexerSubaccountNlpEventsResponse, GetIndexerSubaccountCollateralEventsParams, GetIndexerSubaccountCollateralEventsResponse, GetIndexerPaginatedOrdersParams, GetIndexerPaginatedOrdersResponse, GetIndexerSubaccountSettlementEventsParams, GetIndexerSubaccountSettlementEventsResponse, GetIndexerSubaccountLiquidationEventsParams, GetIndexerSubaccountLiquidationEventsResponse, GetIndexerSubaccountInterestFundingPaymentsParams, GetIndexerPaginatedInterestFundingPaymentsResponse, GetIndexerPaginatedLeaderboardParams, GetIndexerPaginatedLeaderboardResponse } from './types/paginatedEventsTypes.cjs';
3
- import '@nadohq/shared';
4
- import 'axios';
5
- import './types/clientTypes.cjs';
6
- import 'bignumber.js';
7
- import 'viem';
8
- import './types/CandlestickPeriod.cjs';
9
- import './types/IndexerEventType.cjs';
10
- import './types/IndexerLeaderboardType.cjs';
11
- import './types/NadoTx.cjs';
12
- import './types/serverTypes.cjs';
13
- import './types/serverModelTypes.cjs';
14
- import '@nadohq/engine-client';
15
- import './types/collateralEventType.cjs';
1
+ import { _ as GetIndexerSubaccountSettlementEventsResponse, a as GetIndexerPaginatedOrdersParams, c as GetIndexerSubaccountCollateralEventsResponse, d as GetIndexerSubaccountLiquidationEventsResponse, f as GetIndexerSubaccountMatchEventParams, g as GetIndexerSubaccountSettlementEventsParams, h as GetIndexerSubaccountNlpEventsResponse, i as GetIndexerPaginatedLeaderboardResponse, l as GetIndexerSubaccountInterestFundingPaymentsParams, m as GetIndexerSubaccountNlpEventsParams, n as GetIndexerPaginatedInterestFundingPaymentsResponse, o as GetIndexerPaginatedOrdersResponse, p as GetIndexerSubaccountMatchEventsResponse, r as GetIndexerPaginatedLeaderboardParams, s as GetIndexerSubaccountCollateralEventsParams, u as GetIndexerSubaccountLiquidationEventsParams } from "./paginatedEventsTypes-DtGDU-kI.cjs";
2
+ import { IndexerBaseClient } from "./IndexerBaseClient.cjs";
16
3
 
4
+ //#region src/IndexerClient.d.ts
17
5
  /**
18
6
  * Indexer client providing paginated queries for historical data from the Nado indexer service
19
7
  */
20
8
  declare class IndexerClient extends IndexerBaseClient {
21
- getPaginatedSubaccountMatchEvents(params: GetIndexerSubaccountMatchEventParams): Promise<GetIndexerSubaccountMatchEventsResponse>;
22
- getPaginatedSubaccountNlpEvents(params: GetIndexerSubaccountNlpEventsParams): Promise<GetIndexerSubaccountNlpEventsResponse>;
23
- getPaginatedSubaccountCollateralEvents(params: GetIndexerSubaccountCollateralEventsParams): Promise<GetIndexerSubaccountCollateralEventsResponse>;
24
- getPaginatedSubaccountOrders(params: GetIndexerPaginatedOrdersParams): Promise<GetIndexerPaginatedOrdersResponse>;
25
- getPaginatedSubaccountSettlementEvents(params: GetIndexerSubaccountSettlementEventsParams): Promise<GetIndexerSubaccountSettlementEventsResponse>;
26
- getPaginatedSubaccountLiquidationEvents(params: GetIndexerSubaccountLiquidationEventsParams): Promise<GetIndexerSubaccountLiquidationEventsResponse>;
27
- /**
28
- * Get all interest funding payments for a given subaccount with the standard pagination response
29
- * This is a simple wrapper over the underlying `getInterestFundingPayments` function. Very little
30
- * additional processing is needed because the endpoint is well structured for pagination
31
- *
32
- * @param params
33
- */
34
- getPaginatedSubaccountInterestFundingPayments(params: GetIndexerSubaccountInterestFundingPaymentsParams): Promise<GetIndexerPaginatedInterestFundingPaymentsResponse>;
35
- /**
36
- * Paginated leaderboard query that paginates on rank number.
37
- *
38
- * @param params
39
- */
40
- getPaginatedLeaderboard(params: GetIndexerPaginatedLeaderboardParams): Promise<GetIndexerPaginatedLeaderboardResponse>;
41
- /**
42
- * A util function to generate the standard pagination response for events
43
- * @param events
44
- * @param requestedLimit given by consumers of the SDK
45
- * @private
46
- */
47
- private getPaginationEventsResponse;
9
+ getPaginatedSubaccountMatchEvents(params: GetIndexerSubaccountMatchEventParams): Promise<GetIndexerSubaccountMatchEventsResponse>;
10
+ getPaginatedSubaccountNlpEvents(params: GetIndexerSubaccountNlpEventsParams): Promise<GetIndexerSubaccountNlpEventsResponse>;
11
+ getPaginatedSubaccountCollateralEvents(params: GetIndexerSubaccountCollateralEventsParams): Promise<GetIndexerSubaccountCollateralEventsResponse>;
12
+ getPaginatedSubaccountOrders(params: GetIndexerPaginatedOrdersParams): Promise<GetIndexerPaginatedOrdersResponse>;
13
+ getPaginatedSubaccountSettlementEvents(params: GetIndexerSubaccountSettlementEventsParams): Promise<GetIndexerSubaccountSettlementEventsResponse>;
14
+ getPaginatedSubaccountLiquidationEvents(params: GetIndexerSubaccountLiquidationEventsParams): Promise<GetIndexerSubaccountLiquidationEventsResponse>;
15
+ /**
16
+ * Get all interest funding payments for a given subaccount with the standard pagination response
17
+ * This is a simple wrapper over the underlying `getInterestFundingPayments` function. Very little
18
+ * additional processing is needed because the endpoint is well structured for pagination
19
+ *
20
+ * @param params
21
+ */
22
+ getPaginatedSubaccountInterestFundingPayments(params: GetIndexerSubaccountInterestFundingPaymentsParams): Promise<GetIndexerPaginatedInterestFundingPaymentsResponse>;
23
+ /**
24
+ * Paginated leaderboard query that paginates on rank number.
25
+ *
26
+ * @param params
27
+ */
28
+ getPaginatedLeaderboard(params: GetIndexerPaginatedLeaderboardParams): Promise<GetIndexerPaginatedLeaderboardResponse>;
29
+ /**
30
+ * A util function to generate the standard pagination response for events
31
+ * @param events
32
+ * @param requestedLimit given by consumers of the SDK
33
+ * @private
34
+ */
35
+ private getPaginationEventsResponse;
48
36
  }
49
-
37
+ //#endregion
50
38
  export { IndexerClient };
39
+ //# sourceMappingURL=IndexerClient.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexerClient.d.cts","names":[],"sources":["../src/src/IndexerClient.ts"],"mappings":";;;;;;;cA4Ca,aAAA,SAAsB,iBAAA;EAC3B,iCAAA,CACJ,MAAA,EAAQ,oCAAA,GACP,OAAA,CAAQ,uCAAA;EAwBL,+BAAA,CACJ,MAAA,EAAQ,mCAAA,GACP,OAAA,CAAQ,qCAAA;EAgEL,sCAAA,CACJ,MAAA,EAAQ,0CAAA,GACP,OAAA,CAAQ,4CAAA;EAmDL,4BAAA,CACJ,MAAA,EAAQ,+BAAA,GACP,OAAA,CAAQ,iCAAA;EAmCL,sCAAA,CACJ,MAAA,EAAQ,0CAAA,GACP,OAAA,CAAQ,4CAAA;EAiDL,uCAAA,CACJ,MAAA,EAAQ,2CAAA,GACP,OAAA,CAAQ,6CAAA;EA/MA;;;;;;;EAuUL,6CAAA,CACJ,MAAA,EAAQ,iDAAA,GACP,OAAA,CAAQ,kDAAA;EA9KD;;;;;EAgNJ,uBAAA,CACJ,MAAA,EAAQ,oCAAA,GACP,OAAA,CAAQ,sCAAA;EArCD;;;;;;EAAA,QAgFF,2BAAA;AAAA"}
@@ -1,50 +1,39 @@
1
- import { IndexerBaseClient } from './IndexerBaseClient.js';
2
- import { GetIndexerSubaccountMatchEventParams, GetIndexerSubaccountMatchEventsResponse, GetIndexerSubaccountNlpEventsParams, GetIndexerSubaccountNlpEventsResponse, GetIndexerSubaccountCollateralEventsParams, GetIndexerSubaccountCollateralEventsResponse, GetIndexerPaginatedOrdersParams, GetIndexerPaginatedOrdersResponse, GetIndexerSubaccountSettlementEventsParams, GetIndexerSubaccountSettlementEventsResponse, GetIndexerSubaccountLiquidationEventsParams, GetIndexerSubaccountLiquidationEventsResponse, GetIndexerSubaccountInterestFundingPaymentsParams, GetIndexerPaginatedInterestFundingPaymentsResponse, GetIndexerPaginatedLeaderboardParams, GetIndexerPaginatedLeaderboardResponse } from './types/paginatedEventsTypes.js';
3
- import '@nadohq/shared';
4
- import 'axios';
5
- import './types/clientTypes.js';
6
- import 'bignumber.js';
7
- import 'viem';
8
- import './types/CandlestickPeriod.js';
9
- import './types/IndexerEventType.js';
10
- import './types/IndexerLeaderboardType.js';
11
- import './types/NadoTx.js';
12
- import './types/serverTypes.js';
13
- import './types/serverModelTypes.js';
14
- import '@nadohq/engine-client';
15
- import './types/collateralEventType.js';
1
+ import { _ as GetIndexerSubaccountSettlementEventsResponse, a as GetIndexerPaginatedOrdersParams, c as GetIndexerSubaccountCollateralEventsResponse, d as GetIndexerSubaccountLiquidationEventsResponse, f as GetIndexerSubaccountMatchEventParams, g as GetIndexerSubaccountSettlementEventsParams, h as GetIndexerSubaccountNlpEventsResponse, i as GetIndexerPaginatedLeaderboardResponse, l as GetIndexerSubaccountInterestFundingPaymentsParams, m as GetIndexerSubaccountNlpEventsParams, n as GetIndexerPaginatedInterestFundingPaymentsResponse, o as GetIndexerPaginatedOrdersResponse, p as GetIndexerSubaccountMatchEventsResponse, r as GetIndexerPaginatedLeaderboardParams, s as GetIndexerSubaccountCollateralEventsParams, u as GetIndexerSubaccountLiquidationEventsParams } from "./paginatedEventsTypes-RwXoQrEa.js";
2
+ import { IndexerBaseClient } from "./IndexerBaseClient.js";
16
3
 
4
+ //#region src/IndexerClient.d.ts
17
5
  /**
18
6
  * Indexer client providing paginated queries for historical data from the Nado indexer service
19
7
  */
20
8
  declare class IndexerClient extends IndexerBaseClient {
21
- getPaginatedSubaccountMatchEvents(params: GetIndexerSubaccountMatchEventParams): Promise<GetIndexerSubaccountMatchEventsResponse>;
22
- getPaginatedSubaccountNlpEvents(params: GetIndexerSubaccountNlpEventsParams): Promise<GetIndexerSubaccountNlpEventsResponse>;
23
- getPaginatedSubaccountCollateralEvents(params: GetIndexerSubaccountCollateralEventsParams): Promise<GetIndexerSubaccountCollateralEventsResponse>;
24
- getPaginatedSubaccountOrders(params: GetIndexerPaginatedOrdersParams): Promise<GetIndexerPaginatedOrdersResponse>;
25
- getPaginatedSubaccountSettlementEvents(params: GetIndexerSubaccountSettlementEventsParams): Promise<GetIndexerSubaccountSettlementEventsResponse>;
26
- getPaginatedSubaccountLiquidationEvents(params: GetIndexerSubaccountLiquidationEventsParams): Promise<GetIndexerSubaccountLiquidationEventsResponse>;
27
- /**
28
- * Get all interest funding payments for a given subaccount with the standard pagination response
29
- * This is a simple wrapper over the underlying `getInterestFundingPayments` function. Very little
30
- * additional processing is needed because the endpoint is well structured for pagination
31
- *
32
- * @param params
33
- */
34
- getPaginatedSubaccountInterestFundingPayments(params: GetIndexerSubaccountInterestFundingPaymentsParams): Promise<GetIndexerPaginatedInterestFundingPaymentsResponse>;
35
- /**
36
- * Paginated leaderboard query that paginates on rank number.
37
- *
38
- * @param params
39
- */
40
- getPaginatedLeaderboard(params: GetIndexerPaginatedLeaderboardParams): Promise<GetIndexerPaginatedLeaderboardResponse>;
41
- /**
42
- * A util function to generate the standard pagination response for events
43
- * @param events
44
- * @param requestedLimit given by consumers of the SDK
45
- * @private
46
- */
47
- private getPaginationEventsResponse;
9
+ getPaginatedSubaccountMatchEvents(params: GetIndexerSubaccountMatchEventParams): Promise<GetIndexerSubaccountMatchEventsResponse>;
10
+ getPaginatedSubaccountNlpEvents(params: GetIndexerSubaccountNlpEventsParams): Promise<GetIndexerSubaccountNlpEventsResponse>;
11
+ getPaginatedSubaccountCollateralEvents(params: GetIndexerSubaccountCollateralEventsParams): Promise<GetIndexerSubaccountCollateralEventsResponse>;
12
+ getPaginatedSubaccountOrders(params: GetIndexerPaginatedOrdersParams): Promise<GetIndexerPaginatedOrdersResponse>;
13
+ getPaginatedSubaccountSettlementEvents(params: GetIndexerSubaccountSettlementEventsParams): Promise<GetIndexerSubaccountSettlementEventsResponse>;
14
+ getPaginatedSubaccountLiquidationEvents(params: GetIndexerSubaccountLiquidationEventsParams): Promise<GetIndexerSubaccountLiquidationEventsResponse>;
15
+ /**
16
+ * Get all interest funding payments for a given subaccount with the standard pagination response
17
+ * This is a simple wrapper over the underlying `getInterestFundingPayments` function. Very little
18
+ * additional processing is needed because the endpoint is well structured for pagination
19
+ *
20
+ * @param params
21
+ */
22
+ getPaginatedSubaccountInterestFundingPayments(params: GetIndexerSubaccountInterestFundingPaymentsParams): Promise<GetIndexerPaginatedInterestFundingPaymentsResponse>;
23
+ /**
24
+ * Paginated leaderboard query that paginates on rank number.
25
+ *
26
+ * @param params
27
+ */
28
+ getPaginatedLeaderboard(params: GetIndexerPaginatedLeaderboardParams): Promise<GetIndexerPaginatedLeaderboardResponse>;
29
+ /**
30
+ * A util function to generate the standard pagination response for events
31
+ * @param events
32
+ * @param requestedLimit given by consumers of the SDK
33
+ * @private
34
+ */
35
+ private getPaginationEventsResponse;
48
36
  }
49
-
37
+ //#endregion
50
38
  export { IndexerClient };
39
+ //# sourceMappingURL=IndexerClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexerClient.d.ts","names":[],"sources":["../src/src/IndexerClient.ts"],"mappings":";;;;;;;cA4Ca,aAAA,SAAsB,iBAAA;EAC3B,iCAAA,CACJ,MAAA,EAAQ,oCAAA,GACP,OAAA,CAAQ,uCAAA;EAwBL,+BAAA,CACJ,MAAA,EAAQ,mCAAA,GACP,OAAA,CAAQ,qCAAA;EAgEL,sCAAA,CACJ,MAAA,EAAQ,0CAAA,GACP,OAAA,CAAQ,4CAAA;EAmDL,4BAAA,CACJ,MAAA,EAAQ,+BAAA,GACP,OAAA,CAAQ,iCAAA;EAmCL,sCAAA,CACJ,MAAA,EAAQ,0CAAA,GACP,OAAA,CAAQ,4CAAA;EAiDL,uCAAA,CACJ,MAAA,EAAQ,2CAAA,GACP,OAAA,CAAQ,6CAAA;EA/MA;;;;;;;EAuUL,6CAAA,CACJ,MAAA,EAAQ,iDAAA,GACP,OAAA,CAAQ,kDAAA;EA9KD;;;;;EAgNJ,uBAAA,CACJ,MAAA,EAAQ,oCAAA,GACP,OAAA,CAAQ,sCAAA;EArCD;;;;;;EAAA,QAgFF,2BAAA;AAAA"}