@nadohq/indexer-client 0.6.0 → 0.8.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 (38) hide show
  1. package/dist/IndexerBaseClient.cjs +102 -27
  2. package/dist/IndexerBaseClient.cjs.map +1 -1
  3. package/dist/IndexerBaseClient.d.cts +29 -7
  4. package/dist/IndexerBaseClient.d.ts +29 -7
  5. package/dist/IndexerBaseClient.js +102 -27
  6. package/dist/IndexerBaseClient.js.map +1 -1
  7. package/dist/IndexerClient.cjs +6 -1
  8. package/dist/IndexerClient.cjs.map +1 -1
  9. package/dist/IndexerClient.js +6 -1
  10. package/dist/IndexerClient.js.map +1 -1
  11. package/dist/dataMappers.cjs +26 -12
  12. package/dist/dataMappers.cjs.map +1 -1
  13. package/dist/dataMappers.js +26 -12
  14. package/dist/dataMappers.js.map +1 -1
  15. package/dist/index.d.cts +3 -3
  16. package/dist/index.d.ts +3 -3
  17. package/dist/types/IndexerLeaderboardType.cjs.map +1 -1
  18. package/dist/types/IndexerLeaderboardType.d.cts +9 -1
  19. package/dist/types/IndexerLeaderboardType.d.ts +9 -1
  20. package/dist/types/clientTypes.cjs.map +1 -1
  21. package/dist/types/clientTypes.d.cts +64 -18
  22. package/dist/types/clientTypes.d.ts +64 -18
  23. package/dist/types/index.d.cts +3 -3
  24. package/dist/types/index.d.ts +3 -3
  25. package/dist/types/serverModelTypes.cjs.map +1 -1
  26. package/dist/types/serverModelTypes.d.cts +25 -10
  27. package/dist/types/serverModelTypes.d.ts +25 -10
  28. package/dist/types/serverTypes.cjs.map +1 -1
  29. package/dist/types/serverTypes.d.cts +38 -11
  30. package/dist/types/serverTypes.d.ts +38 -11
  31. package/package.json +4 -4
  32. package/src/IndexerBaseClient.ts +132 -36
  33. package/src/IndexerClient.ts +13 -5
  34. package/src/dataMappers.ts +26 -10
  35. package/src/types/IndexerLeaderboardType.ts +14 -2
  36. package/src/types/clientTypes.ts +78 -30
  37. package/src/types/serverModelTypes.ts +29 -9
  38. package/src/types/serverTypes.ts +46 -10
@@ -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';\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 // Next cursor is the rank number of the (requestedLimit+1)th item\n const nextCursor =\n params.rankType === 'pnl'\n ? baseResponse.participants[requestedLimit]?.pnlRank\n : baseResponse.participants[requestedLimit]?.roiRank;\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,"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":[]}
@@ -203,16 +203,23 @@ function mapIndexerMakerStatistics(maker) {
203
203
  };
204
204
  }
205
205
  function mapIndexerLeaderboardPosition(position) {
206
+ const tracks = (0, import_shared.mapValues)(position.tracks, (trackData) => ({
207
+ value: (0, import_shared.toBigNumber)(trackData.value),
208
+ rank: (0, import_shared.toBigNumber)(trackData.rank),
209
+ qualificationStatus: trackData.qualification_status
210
+ }));
206
211
  return {
207
212
  subaccount: (0, import_shared.subaccountFromHex)(position.subaccount),
208
213
  contestId: position.contest_id,
209
- pnl: (0, import_shared.toBigNumber)(position.pnl),
210
- pnlRank: (0, import_shared.toBigNumber)(position.pnl_rank),
211
- percentRoi: (0, import_shared.toBigNumber)(position.roi),
212
- roiRank: (0, import_shared.toBigNumber)(position.roi_rank),
213
214
  accountValue: (0, import_shared.toBigNumber)(position.account_value),
214
- volume: position.volume ? (0, import_shared.toBigNumber)(position.volume) : void 0,
215
- updateTime: (0, import_shared.toBigNumber)(position.update_time)
215
+ updateTime: (0, import_shared.toBigNumber)(position.update_time),
216
+ tracks,
217
+ socialAccounts: position.social_accounts.map((account) => ({
218
+ provider: account.provider,
219
+ username: account.username,
220
+ displayName: account.display_name,
221
+ profileImageUrl: account.profile_image_url
222
+ }))
216
223
  };
217
224
  }
218
225
  function mapIndexerLeaderboardRegistration(registration) {
@@ -223,17 +230,24 @@ function mapIndexerLeaderboardRegistration(registration) {
223
230
  };
224
231
  }
225
232
  function mapIndexerLeaderboardContest(contest) {
233
+ const startTime = (0, import_shared.toBigNumber)(contest.start_time);
234
+ const endTime = (0, import_shared.toBigNumber)(contest.end_time);
226
235
  return {
227
236
  contestId: contest.contest_id,
228
- startTime: (0, import_shared.toBigNumber)(contest.start_time),
229
- endTime: (0, import_shared.toBigNumber)(contest.end_time),
230
- period: (0, import_shared.toBigNumber)(contest.threshold),
237
+ startTime,
238
+ endTime,
231
239
  totalParticipants: (0, import_shared.toBigNumber)(contest.count),
232
- minRequiredAccountValue: (0, import_shared.toBigNumber)(contest.threshold),
233
- minRequiredVolume: (0, import_shared.toBigNumber)(contest.volume_threshold),
234
240
  requiredProductIds: contest.product_ids,
235
241
  active: contest.active,
236
- lastUpdated: (0, import_shared.toBigNumber)(contest.last_updated)
242
+ lastUpdated: (0, import_shared.toBigNumber)(contest.last_updated),
243
+ title: contest.title,
244
+ description: contest.description,
245
+ tracks: contest.tracks.map((track) => ({
246
+ trackId: track.track_id,
247
+ rankType: track.rank_type,
248
+ sortOrder: track.sort_order,
249
+ minRequiredAccountValue: (0, import_shared.toBigNumber)(track.threshold)
250
+ }))
237
251
  };
238
252
  }
239
253
  function mapIndexerCandlesticks(candlestick) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/dataMappers.ts"],"sourcesContent":["import {\n mapEngineServerPerpProduct,\n mapEngineServerSpotProduct,\n} from '@nadohq/engine-client';\nimport {\n getRecvTimeFromOrderNonce,\n mapValues,\n Market,\n PerpMarket,\n ProductEngineType,\n removeDecimals,\n SpotMarket,\n subaccountFromHex,\n toBigNumber,\n toIntegerString,\n unpackOrderAppendix,\n} from '@nadohq/shared';\nimport {\n Candlestick,\n IndexerEvent,\n IndexerEventWithTx,\n IndexerFundingRate,\n IndexerLeaderboardContest,\n IndexerLeaderboardParticipant,\n IndexerLeaderboardRegistration,\n IndexerMaker,\n IndexerMarketSnapshot,\n IndexerMatchEventBalances,\n IndexerNlpSnapshot,\n IndexerOrder,\n IndexerPerpBalance,\n IndexerPerpPrices,\n IndexerProductPayment,\n IndexerServerBalance,\n IndexerServerCandlestick,\n IndexerServerEvent,\n IndexerServerFundingRate,\n IndexerServerLeaderboardContest,\n IndexerServerLeaderboardPosition,\n IndexerServerLeaderboardRegistration,\n IndexerServerMaker,\n IndexerServerMarketSnapshot,\n IndexerServerMatchEventBalances,\n IndexerServerNlpSnapshot,\n IndexerServerOrder,\n IndexerServerPerpPrices,\n IndexerServerProduct,\n IndexerServerProductPayment,\n IndexerServerSnapshotsInterval,\n IndexerServerTx,\n IndexerServerV2MarketHours,\n IndexerServerV2Symbol,\n IndexerServerV2TickerResponse,\n IndexerSnapshotsIntervalParams,\n IndexerSpotBalance,\n IndexerV2MarketHours,\n IndexerV2Symbol,\n IndexerV2TickerResponse,\n IndexerV2TradingStatus,\n} from './types';\n\nexport function mapSnapshotsIntervalToServerParams(\n params: IndexerSnapshotsIntervalParams,\n): IndexerServerSnapshotsInterval {\n return {\n count: params.limit,\n max_time: params.maxTimeInclusive\n ? toIntegerString(params.maxTimeInclusive)\n : undefined,\n granularity: params.granularity,\n };\n}\n\nexport function mapIndexerServerProduct(product: IndexerServerProduct): Market {\n if ('spot' in product) {\n return mapEngineServerSpotProduct(product.spot);\n }\n return mapEngineServerPerpProduct(product.perp);\n}\n\nexport function mapIndexerServerBalance(\n balance: IndexerServerBalance,\n): IndexerSpotBalance | IndexerPerpBalance {\n if ('spot' in balance) {\n return {\n amount: toBigNumber(balance.spot.balance.amount),\n productId: balance.spot.product_id,\n type: ProductEngineType.SPOT,\n };\n }\n return {\n amount: toBigNumber(balance.perp.balance.amount),\n productId: balance.perp.product_id,\n type: ProductEngineType.PERP,\n vQuoteBalance: toBigNumber(balance.perp.balance.v_quote_balance),\n };\n}\n\nexport function mapIndexerOrder(order: IndexerServerOrder): IndexerOrder {\n const appendix = unpackOrderAppendix(order.appendix);\n return {\n amount: toBigNumber(order.amount),\n digest: order.digest,\n expiration: Number(order.expiration),\n appendix,\n nonce: toBigNumber(order.nonce),\n isolated: order.isolated,\n recvTimeSeconds: getRecvTimeFromOrderNonce(order.nonce) / 1000,\n price: removeDecimals(order.price_x18),\n productId: order.product_id,\n subaccount: order.subaccount,\n submissionIndex: order.submission_idx,\n lastFillSubmissionIndex: order.last_fill_submission_idx,\n baseFilled: toBigNumber(order.base_filled),\n quoteFilled: toBigNumber(order.quote_filled),\n totalFee: toBigNumber(order.fee),\n builderFee: toBigNumber(order.builder_fee),\n realizedPnl: toBigNumber(order.realized_pnl),\n closedAmount: toBigNumber(order.closed_amount),\n closedNetEntry: toBigNumber(order.closed_net_entry),\n preCloseMargin: order.closed_margin\n ? toBigNumber(order.closed_margin)\n : null,\n firstFillTimestamp: toBigNumber(order.first_fill_timestamp),\n lastFillTimestamp: toBigNumber(order.last_fill_timestamp),\n preBalances: mapIndexerMatchEventBalances(order.pre_balance),\n postBalances: mapIndexerMatchEventBalances(order.post_balance),\n };\n}\n\nexport function mapIndexerEvent(event: IndexerServerEvent): IndexerEvent {\n const eventState: IndexerEvent['state'] = (() => {\n // Assume backend data is consistent\n if ('spot' in event.pre_balance) {\n return {\n type: ProductEngineType.SPOT,\n market: mapIndexerServerProduct(event.product) as SpotMarket,\n preBalance: mapIndexerServerBalance(\n event.pre_balance,\n ) as IndexerSpotBalance,\n postBalance: mapIndexerServerBalance(\n event.post_balance,\n ) as IndexerSpotBalance,\n };\n }\n return {\n type: ProductEngineType.PERP,\n market: mapIndexerServerProduct(event.product) as PerpMarket,\n preBalance: mapIndexerServerBalance(\n event.pre_balance,\n ) as IndexerPerpBalance,\n postBalance: mapIndexerServerBalance(\n event.post_balance,\n ) as IndexerPerpBalance,\n };\n })();\n\n return {\n eventType: event.event_type,\n productId: event.product_id,\n isolated: event.isolated,\n isolatedProductId: event.isolated_product_id,\n state: eventState,\n subaccount: event.subaccount,\n submissionIndex: event.submission_idx,\n trackedVars: {\n netEntryCumulative: toBigNumber(event.net_entry_cumulative),\n netEntryUnrealized: toBigNumber(event.net_entry_unrealized),\n netFundingCumulative: toBigNumber(event.net_funding_cumulative),\n netFundingUnrealized: toBigNumber(event.net_funding_unrealized),\n netInterestCumulative: toBigNumber(event.net_interest_cumulative),\n netInterestUnrealized: toBigNumber(event.net_interest_unrealized),\n quoteVolumeCumulative: toBigNumber(event.quote_volume_cumulative),\n },\n };\n}\n\nexport function mapIndexerEventWithTx(\n event: IndexerServerEvent,\n tx: IndexerServerTx,\n): IndexerEventWithTx {\n return {\n timestamp: toBigNumber(tx.timestamp),\n tx: tx.tx,\n ...mapIndexerEvent(event),\n };\n}\n\nexport function mapIndexerMatchEventBalances(\n eventBalances: IndexerServerMatchEventBalances,\n): IndexerMatchEventBalances {\n return {\n base: mapIndexerServerBalance(eventBalances.base),\n quote: eventBalances.quote\n ? (mapIndexerServerBalance(eventBalances.quote) as IndexerSpotBalance)\n : undefined,\n };\n}\n\nexport function mapIndexerProductPayment(\n payment: IndexerServerProductPayment,\n): IndexerProductPayment {\n return {\n submissionIndex: payment.idx,\n timestamp: toBigNumber(payment.timestamp),\n paymentAmount: toBigNumber(payment.amount),\n balanceAmount: toBigNumber(payment.balance_amount),\n annualPaymentRate: removeDecimals(payment.rate_x18),\n oraclePrice: removeDecimals(payment.oracle_price_x18),\n isolated: payment.isolated,\n productId: payment.product_id,\n isolatedProductId: payment.isolated_product_id,\n };\n}\n\nexport function mapIndexerPerpPrices(\n perpPrices: IndexerServerPerpPrices,\n): IndexerPerpPrices {\n return {\n indexPrice: removeDecimals(perpPrices.index_price_x18),\n markPrice: removeDecimals(perpPrices.mark_price_x18),\n updateTime: toBigNumber(perpPrices.update_time),\n productId: perpPrices.product_id,\n };\n}\n\nexport function mapIndexerFundingRate(\n fundingRate: IndexerServerFundingRate,\n): IndexerFundingRate {\n return {\n fundingRate: removeDecimals(fundingRate.funding_rate_x18),\n updateTime: toBigNumber(fundingRate.update_time),\n productId: fundingRate.product_id,\n };\n}\n\nexport function mapIndexerMakerStatistics(\n maker: IndexerServerMaker,\n): IndexerMaker {\n return {\n address: maker.address,\n snapshots: maker.data.map((makerData) => {\n return {\n timestamp: toBigNumber(makerData.timestamp),\n makerFee: toBigNumber(makerData.maker_fee),\n uptime: toBigNumber(makerData.uptime),\n sumQMin: toBigNumber(makerData.sum_q_min),\n qScore: toBigNumber(makerData.q_score),\n makerShare: toBigNumber(makerData.maker_share),\n expectedMakerReward: toBigNumber(makerData.expected_maker_reward),\n };\n }),\n };\n}\n\nexport function mapIndexerLeaderboardPosition(\n position: IndexerServerLeaderboardPosition,\n): IndexerLeaderboardParticipant {\n return {\n subaccount: subaccountFromHex(position.subaccount),\n contestId: position.contest_id,\n pnl: toBigNumber(position.pnl),\n pnlRank: toBigNumber(position.pnl_rank),\n percentRoi: toBigNumber(position.roi),\n roiRank: toBigNumber(position.roi_rank),\n accountValue: toBigNumber(position.account_value),\n volume: position.volume ? toBigNumber(position.volume) : undefined,\n updateTime: toBigNumber(position.update_time),\n };\n}\n\nexport function mapIndexerLeaderboardRegistration(\n registration: IndexerServerLeaderboardRegistration,\n): IndexerLeaderboardRegistration {\n return {\n subaccount: subaccountFromHex(registration.subaccount),\n contestId: registration.contest_id,\n updateTime: toBigNumber(registration.update_time),\n };\n}\n\nexport function mapIndexerLeaderboardContest(\n contest: IndexerServerLeaderboardContest,\n): IndexerLeaderboardContest {\n return {\n contestId: contest.contest_id,\n startTime: toBigNumber(contest.start_time),\n endTime: toBigNumber(contest.end_time),\n period: toBigNumber(contest.threshold),\n totalParticipants: toBigNumber(contest.count),\n minRequiredAccountValue: toBigNumber(contest.threshold),\n minRequiredVolume: toBigNumber(contest.volume_threshold),\n requiredProductIds: contest.product_ids,\n active: contest.active,\n lastUpdated: toBigNumber(contest.last_updated),\n };\n}\n\nexport function mapIndexerCandlesticks(\n candlestick: IndexerServerCandlestick,\n): Candlestick {\n return {\n close: removeDecimals(candlestick.close_x18),\n high: removeDecimals(candlestick.high_x18),\n low: removeDecimals(candlestick.low_x18),\n open: removeDecimals(candlestick.open_x18),\n time: toBigNumber(candlestick.timestamp),\n volume: toBigNumber(candlestick.volume),\n };\n}\n\nexport function mapIndexerMarketSnapshot(\n snapshot: IndexerServerMarketSnapshot,\n): IndexerMarketSnapshot {\n return {\n timestamp: toBigNumber(snapshot.timestamp),\n cumulativeUsers: toBigNumber(snapshot.cumulative_users),\n dailyActiveUsers: toBigNumber(snapshot.daily_active_users),\n tvl: toBigNumber(snapshot.tvl),\n borrowRates: mapValues(snapshot.borrow_rates, (value) =>\n removeDecimals(value),\n ),\n cumulativeLiquidationAmounts: mapValues(\n snapshot.cumulative_liquidation_amounts,\n toBigNumber,\n ),\n cumulativeMakerFees: mapValues(snapshot.cumulative_maker_fees, toBigNumber),\n cumulativeSequencerFees: mapValues(\n snapshot.cumulative_sequencer_fees,\n toBigNumber,\n ),\n cumulativeTakerFees: mapValues(snapshot.cumulative_taker_fees, toBigNumber),\n cumulativeTrades: mapValues(snapshot.cumulative_trades, toBigNumber),\n cumulativeVolumes: mapValues(snapshot.cumulative_volumes, toBigNumber),\n depositRates: mapValues(snapshot.deposit_rates, (value) =>\n removeDecimals(value),\n ),\n fundingRates: mapValues(snapshot.funding_rates, (value) =>\n removeDecimals(value),\n ),\n openInterestsQuote: mapValues(snapshot.open_interests, toBigNumber),\n totalBorrows: mapValues(snapshot.total_borrows, toBigNumber),\n totalDeposits: mapValues(snapshot.total_deposits, toBigNumber),\n cumulativeTradeSizes: mapValues(\n snapshot.cumulative_trade_sizes,\n toBigNumber,\n ),\n cumulativeInflows: mapValues(snapshot.cumulative_inflows, toBigNumber),\n cumulativeOutflows: mapValues(snapshot.cumulative_outflows, toBigNumber),\n oraclePrices: mapValues(snapshot.oracle_prices, (value) =>\n removeDecimals(value),\n ),\n };\n}\n\nexport function mapIndexerNlpSnapshot(\n snapshot: IndexerServerNlpSnapshot,\n): IndexerNlpSnapshot {\n return {\n submissionIndex: snapshot.submission_idx,\n timestamp: toBigNumber(snapshot.timestamp),\n cumulativeBurnAmountQuote: toBigNumber(snapshot.cumulative_burn_quote),\n cumulativeMintAmountQuote: toBigNumber(snapshot.cumulative_mint_quote),\n cumulativePnl: toBigNumber(snapshot.cumulative_pnl),\n cumulativeTrades: toBigNumber(snapshot.cumulative_trades),\n cumulativeVolume: toBigNumber(snapshot.cumulative_volume),\n depositors: toBigNumber(snapshot.depositors),\n oraclePrice: removeDecimals(snapshot.oracle_price_x18),\n tvl: toBigNumber(snapshot.tvl),\n };\n}\n\nexport function mapIndexerV2Ticker(\n ticker: IndexerServerV2TickerResponse,\n): IndexerV2TickerResponse {\n return {\n productId: ticker.product_id,\n tickerId: ticker.ticker_id,\n baseCurrency: ticker.base_currency,\n quoteCurrency: ticker.quote_currency,\n lastPrice: ticker.last_price,\n baseVolume: ticker.base_volume,\n quoteVolume: ticker.quote_volume,\n priceChangePercent24h: ticker.price_change_percent_24h,\n };\n}\n\nexport function mapIndexerV2MarketHours(\n hours: IndexerServerV2MarketHours,\n): IndexerV2MarketHours {\n return {\n isOpen: hours.is_open,\n reason: hours.reason,\n nextClose: hours.next_close,\n nextOpen: hours.next_open,\n };\n}\n\nexport function mapIndexerV2Symbols(\n symbol: IndexerServerV2Symbol,\n): IndexerV2Symbol {\n return {\n type: symbol.type,\n productId: symbol.product_id,\n symbol: symbol.symbol,\n priceIncrement: removeDecimals(symbol.price_increment_x18),\n sizeIncrement: symbol.size_increment,\n minSize: symbol.min_size,\n makerFeeRate: removeDecimals(symbol.maker_fee_rate_x18),\n takerFeeRate: removeDecimals(symbol.taker_fee_rate_x18),\n longWeightInitial: removeDecimals(symbol.long_weight_initial_x18),\n longWeightMaintenance: removeDecimals(symbol.long_weight_maintenance_x18),\n maxOpenInterest: symbol.max_open_interest_x18\n ? removeDecimals(symbol.max_open_interest_x18)\n : null,\n tradingStatus: symbol.trading_status as IndexerV2TradingStatus,\n isolatedOnly: symbol.isolated_only,\n marketHours: symbol.market_hours\n ? mapIndexerV2MarketHours(symbol.market_hours)\n : null,\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/dataMappers.ts"],"sourcesContent":["import {\n mapEngineServerPerpProduct,\n mapEngineServerSpotProduct,\n} from '@nadohq/engine-client';\nimport {\n getRecvTimeFromOrderNonce,\n mapValues,\n Market,\n PerpMarket,\n ProductEngineType,\n removeDecimals,\n SpotMarket,\n subaccountFromHex,\n toBigNumber,\n toIntegerString,\n unpackOrderAppendix,\n} from '@nadohq/shared';\nimport {\n Candlestick,\n IndexerEvent,\n IndexerEventWithTx,\n IndexerFundingRate,\n IndexerLeaderboardContest,\n IndexerLeaderboardParticipant,\n IndexerLeaderboardRegistration,\n IndexerMaker,\n IndexerMarketSnapshot,\n IndexerMatchEventBalances,\n IndexerNlpSnapshot,\n IndexerOrder,\n IndexerPerpBalance,\n IndexerPerpPrices,\n IndexerProductPayment,\n IndexerServerBalance,\n IndexerServerCandlestick,\n IndexerServerEvent,\n IndexerServerFundingRate,\n IndexerServerLeaderboardContest,\n IndexerServerLeaderboardPosition,\n IndexerServerLeaderboardRegistration,\n IndexerServerMaker,\n IndexerServerMarketSnapshot,\n IndexerServerMatchEventBalances,\n IndexerServerNlpSnapshot,\n IndexerServerOrder,\n IndexerServerPerpPrices,\n IndexerServerProduct,\n IndexerServerProductPayment,\n IndexerServerSnapshotsInterval,\n IndexerServerTx,\n IndexerServerV2MarketHours,\n IndexerServerV2Symbol,\n IndexerServerV2TickerResponse,\n IndexerSnapshotsIntervalParams,\n IndexerSpotBalance,\n IndexerV2MarketHours,\n IndexerV2Symbol,\n IndexerV2TickerResponse,\n IndexerV2TradingStatus,\n} from './types';\n\nexport function mapSnapshotsIntervalToServerParams(\n params: IndexerSnapshotsIntervalParams,\n): IndexerServerSnapshotsInterval {\n return {\n count: params.limit,\n max_time: params.maxTimeInclusive\n ? toIntegerString(params.maxTimeInclusive)\n : undefined,\n granularity: params.granularity,\n };\n}\n\nexport function mapIndexerServerProduct(product: IndexerServerProduct): Market {\n if ('spot' in product) {\n return mapEngineServerSpotProduct(product.spot);\n }\n return mapEngineServerPerpProduct(product.perp);\n}\n\nexport function mapIndexerServerBalance(\n balance: IndexerServerBalance,\n): IndexerSpotBalance | IndexerPerpBalance {\n if ('spot' in balance) {\n return {\n amount: toBigNumber(balance.spot.balance.amount),\n productId: balance.spot.product_id,\n type: ProductEngineType.SPOT,\n };\n }\n return {\n amount: toBigNumber(balance.perp.balance.amount),\n productId: balance.perp.product_id,\n type: ProductEngineType.PERP,\n vQuoteBalance: toBigNumber(balance.perp.balance.v_quote_balance),\n };\n}\n\nexport function mapIndexerOrder(order: IndexerServerOrder): IndexerOrder {\n const appendix = unpackOrderAppendix(order.appendix);\n return {\n amount: toBigNumber(order.amount),\n digest: order.digest,\n expiration: Number(order.expiration),\n appendix,\n nonce: toBigNumber(order.nonce),\n isolated: order.isolated,\n recvTimeSeconds: getRecvTimeFromOrderNonce(order.nonce) / 1000,\n price: removeDecimals(order.price_x18),\n productId: order.product_id,\n subaccount: order.subaccount,\n submissionIndex: order.submission_idx,\n lastFillSubmissionIndex: order.last_fill_submission_idx,\n baseFilled: toBigNumber(order.base_filled),\n quoteFilled: toBigNumber(order.quote_filled),\n totalFee: toBigNumber(order.fee),\n builderFee: toBigNumber(order.builder_fee),\n realizedPnl: toBigNumber(order.realized_pnl),\n closedAmount: toBigNumber(order.closed_amount),\n closedNetEntry: toBigNumber(order.closed_net_entry),\n preCloseMargin: order.closed_margin\n ? toBigNumber(order.closed_margin)\n : null,\n firstFillTimestamp: toBigNumber(order.first_fill_timestamp),\n lastFillTimestamp: toBigNumber(order.last_fill_timestamp),\n preBalances: mapIndexerMatchEventBalances(order.pre_balance),\n postBalances: mapIndexerMatchEventBalances(order.post_balance),\n };\n}\n\nexport function mapIndexerEvent(event: IndexerServerEvent): IndexerEvent {\n const eventState: IndexerEvent['state'] = (() => {\n // Assume backend data is consistent\n if ('spot' in event.pre_balance) {\n return {\n type: ProductEngineType.SPOT,\n market: mapIndexerServerProduct(event.product) as SpotMarket,\n preBalance: mapIndexerServerBalance(\n event.pre_balance,\n ) as IndexerSpotBalance,\n postBalance: mapIndexerServerBalance(\n event.post_balance,\n ) as IndexerSpotBalance,\n };\n }\n return {\n type: ProductEngineType.PERP,\n market: mapIndexerServerProduct(event.product) as PerpMarket,\n preBalance: mapIndexerServerBalance(\n event.pre_balance,\n ) as IndexerPerpBalance,\n postBalance: mapIndexerServerBalance(\n event.post_balance,\n ) as IndexerPerpBalance,\n };\n })();\n\n return {\n eventType: event.event_type,\n productId: event.product_id,\n isolated: event.isolated,\n isolatedProductId: event.isolated_product_id,\n state: eventState,\n subaccount: event.subaccount,\n submissionIndex: event.submission_idx,\n trackedVars: {\n netEntryCumulative: toBigNumber(event.net_entry_cumulative),\n netEntryUnrealized: toBigNumber(event.net_entry_unrealized),\n netFundingCumulative: toBigNumber(event.net_funding_cumulative),\n netFundingUnrealized: toBigNumber(event.net_funding_unrealized),\n netInterestCumulative: toBigNumber(event.net_interest_cumulative),\n netInterestUnrealized: toBigNumber(event.net_interest_unrealized),\n quoteVolumeCumulative: toBigNumber(event.quote_volume_cumulative),\n },\n };\n}\n\nexport function mapIndexerEventWithTx(\n event: IndexerServerEvent,\n tx: IndexerServerTx,\n): IndexerEventWithTx {\n return {\n timestamp: toBigNumber(tx.timestamp),\n tx: tx.tx,\n ...mapIndexerEvent(event),\n };\n}\n\nexport function mapIndexerMatchEventBalances(\n eventBalances: IndexerServerMatchEventBalances,\n): IndexerMatchEventBalances {\n return {\n base: mapIndexerServerBalance(eventBalances.base),\n quote: eventBalances.quote\n ? (mapIndexerServerBalance(eventBalances.quote) as IndexerSpotBalance)\n : undefined,\n };\n}\n\nexport function mapIndexerProductPayment(\n payment: IndexerServerProductPayment,\n): IndexerProductPayment {\n return {\n submissionIndex: payment.idx,\n timestamp: toBigNumber(payment.timestamp),\n paymentAmount: toBigNumber(payment.amount),\n balanceAmount: toBigNumber(payment.balance_amount),\n annualPaymentRate: removeDecimals(payment.rate_x18),\n oraclePrice: removeDecimals(payment.oracle_price_x18),\n isolated: payment.isolated,\n productId: payment.product_id,\n isolatedProductId: payment.isolated_product_id,\n };\n}\n\nexport function mapIndexerPerpPrices(\n perpPrices: IndexerServerPerpPrices,\n): IndexerPerpPrices {\n return {\n indexPrice: removeDecimals(perpPrices.index_price_x18),\n markPrice: removeDecimals(perpPrices.mark_price_x18),\n updateTime: toBigNumber(perpPrices.update_time),\n productId: perpPrices.product_id,\n };\n}\n\nexport function mapIndexerFundingRate(\n fundingRate: IndexerServerFundingRate,\n): IndexerFundingRate {\n return {\n fundingRate: removeDecimals(fundingRate.funding_rate_x18),\n updateTime: toBigNumber(fundingRate.update_time),\n productId: fundingRate.product_id,\n };\n}\n\nexport function mapIndexerMakerStatistics(\n maker: IndexerServerMaker,\n): IndexerMaker {\n return {\n address: maker.address,\n snapshots: maker.data.map((makerData) => {\n return {\n timestamp: toBigNumber(makerData.timestamp),\n makerFee: toBigNumber(makerData.maker_fee),\n uptime: toBigNumber(makerData.uptime),\n sumQMin: toBigNumber(makerData.sum_q_min),\n qScore: toBigNumber(makerData.q_score),\n makerShare: toBigNumber(makerData.maker_share),\n expectedMakerReward: toBigNumber(makerData.expected_maker_reward),\n };\n }),\n };\n}\n\nexport function mapIndexerLeaderboardPosition(\n position: IndexerServerLeaderboardPosition,\n): IndexerLeaderboardParticipant {\n const tracks = mapValues(position.tracks, (trackData) => ({\n value: toBigNumber(trackData.value),\n rank: toBigNumber(trackData.rank),\n qualificationStatus: trackData.qualification_status,\n }));\n\n return {\n subaccount: subaccountFromHex(position.subaccount),\n contestId: position.contest_id,\n accountValue: toBigNumber(position.account_value),\n updateTime: toBigNumber(position.update_time),\n tracks,\n socialAccounts: position.social_accounts.map((account) => ({\n provider: account.provider,\n username: account.username,\n displayName: account.display_name,\n profileImageUrl: account.profile_image_url,\n })),\n };\n}\n\nexport function mapIndexerLeaderboardRegistration(\n registration: IndexerServerLeaderboardRegistration,\n): IndexerLeaderboardRegistration {\n return {\n subaccount: subaccountFromHex(registration.subaccount),\n contestId: registration.contest_id,\n updateTime: toBigNumber(registration.update_time),\n };\n}\n\nexport function mapIndexerLeaderboardContest(\n contest: IndexerServerLeaderboardContest,\n): IndexerLeaderboardContest {\n const startTime = toBigNumber(contest.start_time);\n const endTime = toBigNumber(contest.end_time);\n\n return {\n contestId: contest.contest_id,\n startTime,\n endTime,\n totalParticipants: toBigNumber(contest.count),\n requiredProductIds: contest.product_ids,\n active: contest.active,\n lastUpdated: toBigNumber(contest.last_updated),\n title: contest.title,\n description: contest.description,\n tracks: contest.tracks.map((track) => ({\n trackId: track.track_id,\n rankType: track.rank_type,\n sortOrder: track.sort_order,\n minRequiredAccountValue: toBigNumber(track.threshold),\n })),\n };\n}\n\nexport function mapIndexerCandlesticks(\n candlestick: IndexerServerCandlestick,\n): Candlestick {\n return {\n close: removeDecimals(candlestick.close_x18),\n high: removeDecimals(candlestick.high_x18),\n low: removeDecimals(candlestick.low_x18),\n open: removeDecimals(candlestick.open_x18),\n time: toBigNumber(candlestick.timestamp),\n volume: toBigNumber(candlestick.volume),\n };\n}\n\nexport function mapIndexerMarketSnapshot(\n snapshot: IndexerServerMarketSnapshot,\n): IndexerMarketSnapshot {\n return {\n timestamp: toBigNumber(snapshot.timestamp),\n cumulativeUsers: toBigNumber(snapshot.cumulative_users),\n dailyActiveUsers: toBigNumber(snapshot.daily_active_users),\n tvl: toBigNumber(snapshot.tvl),\n borrowRates: mapValues(snapshot.borrow_rates, (value) =>\n removeDecimals(value),\n ),\n cumulativeLiquidationAmounts: mapValues(\n snapshot.cumulative_liquidation_amounts,\n toBigNumber,\n ),\n cumulativeMakerFees: mapValues(snapshot.cumulative_maker_fees, toBigNumber),\n cumulativeSequencerFees: mapValues(\n snapshot.cumulative_sequencer_fees,\n toBigNumber,\n ),\n cumulativeTakerFees: mapValues(snapshot.cumulative_taker_fees, toBigNumber),\n cumulativeTrades: mapValues(snapshot.cumulative_trades, toBigNumber),\n cumulativeVolumes: mapValues(snapshot.cumulative_volumes, toBigNumber),\n depositRates: mapValues(snapshot.deposit_rates, (value) =>\n removeDecimals(value),\n ),\n fundingRates: mapValues(snapshot.funding_rates, (value) =>\n removeDecimals(value),\n ),\n openInterestsQuote: mapValues(snapshot.open_interests, toBigNumber),\n totalBorrows: mapValues(snapshot.total_borrows, toBigNumber),\n totalDeposits: mapValues(snapshot.total_deposits, toBigNumber),\n cumulativeTradeSizes: mapValues(\n snapshot.cumulative_trade_sizes,\n toBigNumber,\n ),\n cumulativeInflows: mapValues(snapshot.cumulative_inflows, toBigNumber),\n cumulativeOutflows: mapValues(snapshot.cumulative_outflows, toBigNumber),\n oraclePrices: mapValues(snapshot.oracle_prices, (value) =>\n removeDecimals(value),\n ),\n };\n}\n\nexport function mapIndexerNlpSnapshot(\n snapshot: IndexerServerNlpSnapshot,\n): IndexerNlpSnapshot {\n return {\n submissionIndex: snapshot.submission_idx,\n timestamp: toBigNumber(snapshot.timestamp),\n cumulativeBurnAmountQuote: toBigNumber(snapshot.cumulative_burn_quote),\n cumulativeMintAmountQuote: toBigNumber(snapshot.cumulative_mint_quote),\n cumulativePnl: toBigNumber(snapshot.cumulative_pnl),\n cumulativeTrades: toBigNumber(snapshot.cumulative_trades),\n cumulativeVolume: toBigNumber(snapshot.cumulative_volume),\n depositors: toBigNumber(snapshot.depositors),\n oraclePrice: removeDecimals(snapshot.oracle_price_x18),\n tvl: toBigNumber(snapshot.tvl),\n };\n}\n\nexport function mapIndexerV2Ticker(\n ticker: IndexerServerV2TickerResponse,\n): IndexerV2TickerResponse {\n return {\n productId: ticker.product_id,\n tickerId: ticker.ticker_id,\n baseCurrency: ticker.base_currency,\n quoteCurrency: ticker.quote_currency,\n lastPrice: ticker.last_price,\n baseVolume: ticker.base_volume,\n quoteVolume: ticker.quote_volume,\n priceChangePercent24h: ticker.price_change_percent_24h,\n };\n}\n\nexport function mapIndexerV2MarketHours(\n hours: IndexerServerV2MarketHours,\n): IndexerV2MarketHours {\n return {\n isOpen: hours.is_open,\n reason: hours.reason,\n nextClose: hours.next_close,\n nextOpen: hours.next_open,\n };\n}\n\nexport function mapIndexerV2Symbols(\n symbol: IndexerServerV2Symbol,\n): IndexerV2Symbol {\n return {\n type: symbol.type,\n productId: symbol.product_id,\n symbol: symbol.symbol,\n priceIncrement: removeDecimals(symbol.price_increment_x18),\n sizeIncrement: symbol.size_increment,\n minSize: symbol.min_size,\n makerFeeRate: removeDecimals(symbol.maker_fee_rate_x18),\n takerFeeRate: removeDecimals(symbol.taker_fee_rate_x18),\n longWeightInitial: removeDecimals(symbol.long_weight_initial_x18),\n longWeightMaintenance: removeDecimals(symbol.long_weight_maintenance_x18),\n maxOpenInterest: symbol.max_open_interest_x18\n ? removeDecimals(symbol.max_open_interest_x18)\n : null,\n tradingStatus: symbol.trading_status as IndexerV2TradingStatus,\n isolatedOnly: symbol.isolated_only,\n marketHours: symbol.market_hours\n ? mapIndexerV2MarketHours(symbol.market_hours)\n : null,\n };\n}\n"],"mappings":"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","names":[]}
@@ -172,16 +172,23 @@ function mapIndexerMakerStatistics(maker) {
172
172
  };
173
173
  }
174
174
  function mapIndexerLeaderboardPosition(position) {
175
+ const tracks = mapValues(position.tracks, (trackData) => ({
176
+ value: toBigNumber(trackData.value),
177
+ rank: toBigNumber(trackData.rank),
178
+ qualificationStatus: trackData.qualification_status
179
+ }));
175
180
  return {
176
181
  subaccount: subaccountFromHex(position.subaccount),
177
182
  contestId: position.contest_id,
178
- pnl: toBigNumber(position.pnl),
179
- pnlRank: toBigNumber(position.pnl_rank),
180
- percentRoi: toBigNumber(position.roi),
181
- roiRank: toBigNumber(position.roi_rank),
182
183
  accountValue: toBigNumber(position.account_value),
183
- volume: position.volume ? toBigNumber(position.volume) : void 0,
184
- updateTime: toBigNumber(position.update_time)
184
+ updateTime: toBigNumber(position.update_time),
185
+ tracks,
186
+ socialAccounts: position.social_accounts.map((account) => ({
187
+ provider: account.provider,
188
+ username: account.username,
189
+ displayName: account.display_name,
190
+ profileImageUrl: account.profile_image_url
191
+ }))
185
192
  };
186
193
  }
187
194
  function mapIndexerLeaderboardRegistration(registration) {
@@ -192,17 +199,24 @@ function mapIndexerLeaderboardRegistration(registration) {
192
199
  };
193
200
  }
194
201
  function mapIndexerLeaderboardContest(contest) {
202
+ const startTime = toBigNumber(contest.start_time);
203
+ const endTime = toBigNumber(contest.end_time);
195
204
  return {
196
205
  contestId: contest.contest_id,
197
- startTime: toBigNumber(contest.start_time),
198
- endTime: toBigNumber(contest.end_time),
199
- period: toBigNumber(contest.threshold),
206
+ startTime,
207
+ endTime,
200
208
  totalParticipants: toBigNumber(contest.count),
201
- minRequiredAccountValue: toBigNumber(contest.threshold),
202
- minRequiredVolume: toBigNumber(contest.volume_threshold),
203
209
  requiredProductIds: contest.product_ids,
204
210
  active: contest.active,
205
- lastUpdated: toBigNumber(contest.last_updated)
211
+ lastUpdated: toBigNumber(contest.last_updated),
212
+ title: contest.title,
213
+ description: contest.description,
214
+ tracks: contest.tracks.map((track) => ({
215
+ trackId: track.track_id,
216
+ rankType: track.rank_type,
217
+ sortOrder: track.sort_order,
218
+ minRequiredAccountValue: toBigNumber(track.threshold)
219
+ }))
206
220
  };
207
221
  }
208
222
  function mapIndexerCandlesticks(candlestick) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/dataMappers.ts"],"sourcesContent":["import {\n mapEngineServerPerpProduct,\n mapEngineServerSpotProduct,\n} from '@nadohq/engine-client';\nimport {\n getRecvTimeFromOrderNonce,\n mapValues,\n Market,\n PerpMarket,\n ProductEngineType,\n removeDecimals,\n SpotMarket,\n subaccountFromHex,\n toBigNumber,\n toIntegerString,\n unpackOrderAppendix,\n} from '@nadohq/shared';\nimport {\n Candlestick,\n IndexerEvent,\n IndexerEventWithTx,\n IndexerFundingRate,\n IndexerLeaderboardContest,\n IndexerLeaderboardParticipant,\n IndexerLeaderboardRegistration,\n IndexerMaker,\n IndexerMarketSnapshot,\n IndexerMatchEventBalances,\n IndexerNlpSnapshot,\n IndexerOrder,\n IndexerPerpBalance,\n IndexerPerpPrices,\n IndexerProductPayment,\n IndexerServerBalance,\n IndexerServerCandlestick,\n IndexerServerEvent,\n IndexerServerFundingRate,\n IndexerServerLeaderboardContest,\n IndexerServerLeaderboardPosition,\n IndexerServerLeaderboardRegistration,\n IndexerServerMaker,\n IndexerServerMarketSnapshot,\n IndexerServerMatchEventBalances,\n IndexerServerNlpSnapshot,\n IndexerServerOrder,\n IndexerServerPerpPrices,\n IndexerServerProduct,\n IndexerServerProductPayment,\n IndexerServerSnapshotsInterval,\n IndexerServerTx,\n IndexerServerV2MarketHours,\n IndexerServerV2Symbol,\n IndexerServerV2TickerResponse,\n IndexerSnapshotsIntervalParams,\n IndexerSpotBalance,\n IndexerV2MarketHours,\n IndexerV2Symbol,\n IndexerV2TickerResponse,\n IndexerV2TradingStatus,\n} from './types';\n\nexport function mapSnapshotsIntervalToServerParams(\n params: IndexerSnapshotsIntervalParams,\n): IndexerServerSnapshotsInterval {\n return {\n count: params.limit,\n max_time: params.maxTimeInclusive\n ? toIntegerString(params.maxTimeInclusive)\n : undefined,\n granularity: params.granularity,\n };\n}\n\nexport function mapIndexerServerProduct(product: IndexerServerProduct): Market {\n if ('spot' in product) {\n return mapEngineServerSpotProduct(product.spot);\n }\n return mapEngineServerPerpProduct(product.perp);\n}\n\nexport function mapIndexerServerBalance(\n balance: IndexerServerBalance,\n): IndexerSpotBalance | IndexerPerpBalance {\n if ('spot' in balance) {\n return {\n amount: toBigNumber(balance.spot.balance.amount),\n productId: balance.spot.product_id,\n type: ProductEngineType.SPOT,\n };\n }\n return {\n amount: toBigNumber(balance.perp.balance.amount),\n productId: balance.perp.product_id,\n type: ProductEngineType.PERP,\n vQuoteBalance: toBigNumber(balance.perp.balance.v_quote_balance),\n };\n}\n\nexport function mapIndexerOrder(order: IndexerServerOrder): IndexerOrder {\n const appendix = unpackOrderAppendix(order.appendix);\n return {\n amount: toBigNumber(order.amount),\n digest: order.digest,\n expiration: Number(order.expiration),\n appendix,\n nonce: toBigNumber(order.nonce),\n isolated: order.isolated,\n recvTimeSeconds: getRecvTimeFromOrderNonce(order.nonce) / 1000,\n price: removeDecimals(order.price_x18),\n productId: order.product_id,\n subaccount: order.subaccount,\n submissionIndex: order.submission_idx,\n lastFillSubmissionIndex: order.last_fill_submission_idx,\n baseFilled: toBigNumber(order.base_filled),\n quoteFilled: toBigNumber(order.quote_filled),\n totalFee: toBigNumber(order.fee),\n builderFee: toBigNumber(order.builder_fee),\n realizedPnl: toBigNumber(order.realized_pnl),\n closedAmount: toBigNumber(order.closed_amount),\n closedNetEntry: toBigNumber(order.closed_net_entry),\n preCloseMargin: order.closed_margin\n ? toBigNumber(order.closed_margin)\n : null,\n firstFillTimestamp: toBigNumber(order.first_fill_timestamp),\n lastFillTimestamp: toBigNumber(order.last_fill_timestamp),\n preBalances: mapIndexerMatchEventBalances(order.pre_balance),\n postBalances: mapIndexerMatchEventBalances(order.post_balance),\n };\n}\n\nexport function mapIndexerEvent(event: IndexerServerEvent): IndexerEvent {\n const eventState: IndexerEvent['state'] = (() => {\n // Assume backend data is consistent\n if ('spot' in event.pre_balance) {\n return {\n type: ProductEngineType.SPOT,\n market: mapIndexerServerProduct(event.product) as SpotMarket,\n preBalance: mapIndexerServerBalance(\n event.pre_balance,\n ) as IndexerSpotBalance,\n postBalance: mapIndexerServerBalance(\n event.post_balance,\n ) as IndexerSpotBalance,\n };\n }\n return {\n type: ProductEngineType.PERP,\n market: mapIndexerServerProduct(event.product) as PerpMarket,\n preBalance: mapIndexerServerBalance(\n event.pre_balance,\n ) as IndexerPerpBalance,\n postBalance: mapIndexerServerBalance(\n event.post_balance,\n ) as IndexerPerpBalance,\n };\n })();\n\n return {\n eventType: event.event_type,\n productId: event.product_id,\n isolated: event.isolated,\n isolatedProductId: event.isolated_product_id,\n state: eventState,\n subaccount: event.subaccount,\n submissionIndex: event.submission_idx,\n trackedVars: {\n netEntryCumulative: toBigNumber(event.net_entry_cumulative),\n netEntryUnrealized: toBigNumber(event.net_entry_unrealized),\n netFundingCumulative: toBigNumber(event.net_funding_cumulative),\n netFundingUnrealized: toBigNumber(event.net_funding_unrealized),\n netInterestCumulative: toBigNumber(event.net_interest_cumulative),\n netInterestUnrealized: toBigNumber(event.net_interest_unrealized),\n quoteVolumeCumulative: toBigNumber(event.quote_volume_cumulative),\n },\n };\n}\n\nexport function mapIndexerEventWithTx(\n event: IndexerServerEvent,\n tx: IndexerServerTx,\n): IndexerEventWithTx {\n return {\n timestamp: toBigNumber(tx.timestamp),\n tx: tx.tx,\n ...mapIndexerEvent(event),\n };\n}\n\nexport function mapIndexerMatchEventBalances(\n eventBalances: IndexerServerMatchEventBalances,\n): IndexerMatchEventBalances {\n return {\n base: mapIndexerServerBalance(eventBalances.base),\n quote: eventBalances.quote\n ? (mapIndexerServerBalance(eventBalances.quote) as IndexerSpotBalance)\n : undefined,\n };\n}\n\nexport function mapIndexerProductPayment(\n payment: IndexerServerProductPayment,\n): IndexerProductPayment {\n return {\n submissionIndex: payment.idx,\n timestamp: toBigNumber(payment.timestamp),\n paymentAmount: toBigNumber(payment.amount),\n balanceAmount: toBigNumber(payment.balance_amount),\n annualPaymentRate: removeDecimals(payment.rate_x18),\n oraclePrice: removeDecimals(payment.oracle_price_x18),\n isolated: payment.isolated,\n productId: payment.product_id,\n isolatedProductId: payment.isolated_product_id,\n };\n}\n\nexport function mapIndexerPerpPrices(\n perpPrices: IndexerServerPerpPrices,\n): IndexerPerpPrices {\n return {\n indexPrice: removeDecimals(perpPrices.index_price_x18),\n markPrice: removeDecimals(perpPrices.mark_price_x18),\n updateTime: toBigNumber(perpPrices.update_time),\n productId: perpPrices.product_id,\n };\n}\n\nexport function mapIndexerFundingRate(\n fundingRate: IndexerServerFundingRate,\n): IndexerFundingRate {\n return {\n fundingRate: removeDecimals(fundingRate.funding_rate_x18),\n updateTime: toBigNumber(fundingRate.update_time),\n productId: fundingRate.product_id,\n };\n}\n\nexport function mapIndexerMakerStatistics(\n maker: IndexerServerMaker,\n): IndexerMaker {\n return {\n address: maker.address,\n snapshots: maker.data.map((makerData) => {\n return {\n timestamp: toBigNumber(makerData.timestamp),\n makerFee: toBigNumber(makerData.maker_fee),\n uptime: toBigNumber(makerData.uptime),\n sumQMin: toBigNumber(makerData.sum_q_min),\n qScore: toBigNumber(makerData.q_score),\n makerShare: toBigNumber(makerData.maker_share),\n expectedMakerReward: toBigNumber(makerData.expected_maker_reward),\n };\n }),\n };\n}\n\nexport function mapIndexerLeaderboardPosition(\n position: IndexerServerLeaderboardPosition,\n): IndexerLeaderboardParticipant {\n return {\n subaccount: subaccountFromHex(position.subaccount),\n contestId: position.contest_id,\n pnl: toBigNumber(position.pnl),\n pnlRank: toBigNumber(position.pnl_rank),\n percentRoi: toBigNumber(position.roi),\n roiRank: toBigNumber(position.roi_rank),\n accountValue: toBigNumber(position.account_value),\n volume: position.volume ? toBigNumber(position.volume) : undefined,\n updateTime: toBigNumber(position.update_time),\n };\n}\n\nexport function mapIndexerLeaderboardRegistration(\n registration: IndexerServerLeaderboardRegistration,\n): IndexerLeaderboardRegistration {\n return {\n subaccount: subaccountFromHex(registration.subaccount),\n contestId: registration.contest_id,\n updateTime: toBigNumber(registration.update_time),\n };\n}\n\nexport function mapIndexerLeaderboardContest(\n contest: IndexerServerLeaderboardContest,\n): IndexerLeaderboardContest {\n return {\n contestId: contest.contest_id,\n startTime: toBigNumber(contest.start_time),\n endTime: toBigNumber(contest.end_time),\n period: toBigNumber(contest.threshold),\n totalParticipants: toBigNumber(contest.count),\n minRequiredAccountValue: toBigNumber(contest.threshold),\n minRequiredVolume: toBigNumber(contest.volume_threshold),\n requiredProductIds: contest.product_ids,\n active: contest.active,\n lastUpdated: toBigNumber(contest.last_updated),\n };\n}\n\nexport function mapIndexerCandlesticks(\n candlestick: IndexerServerCandlestick,\n): Candlestick {\n return {\n close: removeDecimals(candlestick.close_x18),\n high: removeDecimals(candlestick.high_x18),\n low: removeDecimals(candlestick.low_x18),\n open: removeDecimals(candlestick.open_x18),\n time: toBigNumber(candlestick.timestamp),\n volume: toBigNumber(candlestick.volume),\n };\n}\n\nexport function mapIndexerMarketSnapshot(\n snapshot: IndexerServerMarketSnapshot,\n): IndexerMarketSnapshot {\n return {\n timestamp: toBigNumber(snapshot.timestamp),\n cumulativeUsers: toBigNumber(snapshot.cumulative_users),\n dailyActiveUsers: toBigNumber(snapshot.daily_active_users),\n tvl: toBigNumber(snapshot.tvl),\n borrowRates: mapValues(snapshot.borrow_rates, (value) =>\n removeDecimals(value),\n ),\n cumulativeLiquidationAmounts: mapValues(\n snapshot.cumulative_liquidation_amounts,\n toBigNumber,\n ),\n cumulativeMakerFees: mapValues(snapshot.cumulative_maker_fees, toBigNumber),\n cumulativeSequencerFees: mapValues(\n snapshot.cumulative_sequencer_fees,\n toBigNumber,\n ),\n cumulativeTakerFees: mapValues(snapshot.cumulative_taker_fees, toBigNumber),\n cumulativeTrades: mapValues(snapshot.cumulative_trades, toBigNumber),\n cumulativeVolumes: mapValues(snapshot.cumulative_volumes, toBigNumber),\n depositRates: mapValues(snapshot.deposit_rates, (value) =>\n removeDecimals(value),\n ),\n fundingRates: mapValues(snapshot.funding_rates, (value) =>\n removeDecimals(value),\n ),\n openInterestsQuote: mapValues(snapshot.open_interests, toBigNumber),\n totalBorrows: mapValues(snapshot.total_borrows, toBigNumber),\n totalDeposits: mapValues(snapshot.total_deposits, toBigNumber),\n cumulativeTradeSizes: mapValues(\n snapshot.cumulative_trade_sizes,\n toBigNumber,\n ),\n cumulativeInflows: mapValues(snapshot.cumulative_inflows, toBigNumber),\n cumulativeOutflows: mapValues(snapshot.cumulative_outflows, toBigNumber),\n oraclePrices: mapValues(snapshot.oracle_prices, (value) =>\n removeDecimals(value),\n ),\n };\n}\n\nexport function mapIndexerNlpSnapshot(\n snapshot: IndexerServerNlpSnapshot,\n): IndexerNlpSnapshot {\n return {\n submissionIndex: snapshot.submission_idx,\n timestamp: toBigNumber(snapshot.timestamp),\n cumulativeBurnAmountQuote: toBigNumber(snapshot.cumulative_burn_quote),\n cumulativeMintAmountQuote: toBigNumber(snapshot.cumulative_mint_quote),\n cumulativePnl: toBigNumber(snapshot.cumulative_pnl),\n cumulativeTrades: toBigNumber(snapshot.cumulative_trades),\n cumulativeVolume: toBigNumber(snapshot.cumulative_volume),\n depositors: toBigNumber(snapshot.depositors),\n oraclePrice: removeDecimals(snapshot.oracle_price_x18),\n tvl: toBigNumber(snapshot.tvl),\n };\n}\n\nexport function mapIndexerV2Ticker(\n ticker: IndexerServerV2TickerResponse,\n): IndexerV2TickerResponse {\n return {\n productId: ticker.product_id,\n tickerId: ticker.ticker_id,\n baseCurrency: ticker.base_currency,\n quoteCurrency: ticker.quote_currency,\n lastPrice: ticker.last_price,\n baseVolume: ticker.base_volume,\n quoteVolume: ticker.quote_volume,\n priceChangePercent24h: ticker.price_change_percent_24h,\n };\n}\n\nexport function mapIndexerV2MarketHours(\n hours: IndexerServerV2MarketHours,\n): IndexerV2MarketHours {\n return {\n isOpen: hours.is_open,\n reason: hours.reason,\n nextClose: hours.next_close,\n nextOpen: hours.next_open,\n };\n}\n\nexport function mapIndexerV2Symbols(\n symbol: IndexerServerV2Symbol,\n): IndexerV2Symbol {\n return {\n type: symbol.type,\n productId: symbol.product_id,\n symbol: symbol.symbol,\n priceIncrement: removeDecimals(symbol.price_increment_x18),\n sizeIncrement: symbol.size_increment,\n minSize: symbol.min_size,\n makerFeeRate: removeDecimals(symbol.maker_fee_rate_x18),\n takerFeeRate: removeDecimals(symbol.taker_fee_rate_x18),\n longWeightInitial: removeDecimals(symbol.long_weight_initial_x18),\n longWeightMaintenance: removeDecimals(symbol.long_weight_maintenance_x18),\n maxOpenInterest: symbol.max_open_interest_x18\n ? removeDecimals(symbol.max_open_interest_x18)\n : null,\n tradingStatus: symbol.trading_status as IndexerV2TradingStatus,\n isolatedOnly: symbol.isolated_only,\n marketHours: symbol.market_hours\n ? mapIndexerV2MarketHours(symbol.market_hours)\n : null,\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/dataMappers.ts"],"sourcesContent":["import {\n mapEngineServerPerpProduct,\n mapEngineServerSpotProduct,\n} from '@nadohq/engine-client';\nimport {\n getRecvTimeFromOrderNonce,\n mapValues,\n Market,\n PerpMarket,\n ProductEngineType,\n removeDecimals,\n SpotMarket,\n subaccountFromHex,\n toBigNumber,\n toIntegerString,\n unpackOrderAppendix,\n} from '@nadohq/shared';\nimport {\n Candlestick,\n IndexerEvent,\n IndexerEventWithTx,\n IndexerFundingRate,\n IndexerLeaderboardContest,\n IndexerLeaderboardParticipant,\n IndexerLeaderboardRegistration,\n IndexerMaker,\n IndexerMarketSnapshot,\n IndexerMatchEventBalances,\n IndexerNlpSnapshot,\n IndexerOrder,\n IndexerPerpBalance,\n IndexerPerpPrices,\n IndexerProductPayment,\n IndexerServerBalance,\n IndexerServerCandlestick,\n IndexerServerEvent,\n IndexerServerFundingRate,\n IndexerServerLeaderboardContest,\n IndexerServerLeaderboardPosition,\n IndexerServerLeaderboardRegistration,\n IndexerServerMaker,\n IndexerServerMarketSnapshot,\n IndexerServerMatchEventBalances,\n IndexerServerNlpSnapshot,\n IndexerServerOrder,\n IndexerServerPerpPrices,\n IndexerServerProduct,\n IndexerServerProductPayment,\n IndexerServerSnapshotsInterval,\n IndexerServerTx,\n IndexerServerV2MarketHours,\n IndexerServerV2Symbol,\n IndexerServerV2TickerResponse,\n IndexerSnapshotsIntervalParams,\n IndexerSpotBalance,\n IndexerV2MarketHours,\n IndexerV2Symbol,\n IndexerV2TickerResponse,\n IndexerV2TradingStatus,\n} from './types';\n\nexport function mapSnapshotsIntervalToServerParams(\n params: IndexerSnapshotsIntervalParams,\n): IndexerServerSnapshotsInterval {\n return {\n count: params.limit,\n max_time: params.maxTimeInclusive\n ? toIntegerString(params.maxTimeInclusive)\n : undefined,\n granularity: params.granularity,\n };\n}\n\nexport function mapIndexerServerProduct(product: IndexerServerProduct): Market {\n if ('spot' in product) {\n return mapEngineServerSpotProduct(product.spot);\n }\n return mapEngineServerPerpProduct(product.perp);\n}\n\nexport function mapIndexerServerBalance(\n balance: IndexerServerBalance,\n): IndexerSpotBalance | IndexerPerpBalance {\n if ('spot' in balance) {\n return {\n amount: toBigNumber(balance.spot.balance.amount),\n productId: balance.spot.product_id,\n type: ProductEngineType.SPOT,\n };\n }\n return {\n amount: toBigNumber(balance.perp.balance.amount),\n productId: balance.perp.product_id,\n type: ProductEngineType.PERP,\n vQuoteBalance: toBigNumber(balance.perp.balance.v_quote_balance),\n };\n}\n\nexport function mapIndexerOrder(order: IndexerServerOrder): IndexerOrder {\n const appendix = unpackOrderAppendix(order.appendix);\n return {\n amount: toBigNumber(order.amount),\n digest: order.digest,\n expiration: Number(order.expiration),\n appendix,\n nonce: toBigNumber(order.nonce),\n isolated: order.isolated,\n recvTimeSeconds: getRecvTimeFromOrderNonce(order.nonce) / 1000,\n price: removeDecimals(order.price_x18),\n productId: order.product_id,\n subaccount: order.subaccount,\n submissionIndex: order.submission_idx,\n lastFillSubmissionIndex: order.last_fill_submission_idx,\n baseFilled: toBigNumber(order.base_filled),\n quoteFilled: toBigNumber(order.quote_filled),\n totalFee: toBigNumber(order.fee),\n builderFee: toBigNumber(order.builder_fee),\n realizedPnl: toBigNumber(order.realized_pnl),\n closedAmount: toBigNumber(order.closed_amount),\n closedNetEntry: toBigNumber(order.closed_net_entry),\n preCloseMargin: order.closed_margin\n ? toBigNumber(order.closed_margin)\n : null,\n firstFillTimestamp: toBigNumber(order.first_fill_timestamp),\n lastFillTimestamp: toBigNumber(order.last_fill_timestamp),\n preBalances: mapIndexerMatchEventBalances(order.pre_balance),\n postBalances: mapIndexerMatchEventBalances(order.post_balance),\n };\n}\n\nexport function mapIndexerEvent(event: IndexerServerEvent): IndexerEvent {\n const eventState: IndexerEvent['state'] = (() => {\n // Assume backend data is consistent\n if ('spot' in event.pre_balance) {\n return {\n type: ProductEngineType.SPOT,\n market: mapIndexerServerProduct(event.product) as SpotMarket,\n preBalance: mapIndexerServerBalance(\n event.pre_balance,\n ) as IndexerSpotBalance,\n postBalance: mapIndexerServerBalance(\n event.post_balance,\n ) as IndexerSpotBalance,\n };\n }\n return {\n type: ProductEngineType.PERP,\n market: mapIndexerServerProduct(event.product) as PerpMarket,\n preBalance: mapIndexerServerBalance(\n event.pre_balance,\n ) as IndexerPerpBalance,\n postBalance: mapIndexerServerBalance(\n event.post_balance,\n ) as IndexerPerpBalance,\n };\n })();\n\n return {\n eventType: event.event_type,\n productId: event.product_id,\n isolated: event.isolated,\n isolatedProductId: event.isolated_product_id,\n state: eventState,\n subaccount: event.subaccount,\n submissionIndex: event.submission_idx,\n trackedVars: {\n netEntryCumulative: toBigNumber(event.net_entry_cumulative),\n netEntryUnrealized: toBigNumber(event.net_entry_unrealized),\n netFundingCumulative: toBigNumber(event.net_funding_cumulative),\n netFundingUnrealized: toBigNumber(event.net_funding_unrealized),\n netInterestCumulative: toBigNumber(event.net_interest_cumulative),\n netInterestUnrealized: toBigNumber(event.net_interest_unrealized),\n quoteVolumeCumulative: toBigNumber(event.quote_volume_cumulative),\n },\n };\n}\n\nexport function mapIndexerEventWithTx(\n event: IndexerServerEvent,\n tx: IndexerServerTx,\n): IndexerEventWithTx {\n return {\n timestamp: toBigNumber(tx.timestamp),\n tx: tx.tx,\n ...mapIndexerEvent(event),\n };\n}\n\nexport function mapIndexerMatchEventBalances(\n eventBalances: IndexerServerMatchEventBalances,\n): IndexerMatchEventBalances {\n return {\n base: mapIndexerServerBalance(eventBalances.base),\n quote: eventBalances.quote\n ? (mapIndexerServerBalance(eventBalances.quote) as IndexerSpotBalance)\n : undefined,\n };\n}\n\nexport function mapIndexerProductPayment(\n payment: IndexerServerProductPayment,\n): IndexerProductPayment {\n return {\n submissionIndex: payment.idx,\n timestamp: toBigNumber(payment.timestamp),\n paymentAmount: toBigNumber(payment.amount),\n balanceAmount: toBigNumber(payment.balance_amount),\n annualPaymentRate: removeDecimals(payment.rate_x18),\n oraclePrice: removeDecimals(payment.oracle_price_x18),\n isolated: payment.isolated,\n productId: payment.product_id,\n isolatedProductId: payment.isolated_product_id,\n };\n}\n\nexport function mapIndexerPerpPrices(\n perpPrices: IndexerServerPerpPrices,\n): IndexerPerpPrices {\n return {\n indexPrice: removeDecimals(perpPrices.index_price_x18),\n markPrice: removeDecimals(perpPrices.mark_price_x18),\n updateTime: toBigNumber(perpPrices.update_time),\n productId: perpPrices.product_id,\n };\n}\n\nexport function mapIndexerFundingRate(\n fundingRate: IndexerServerFundingRate,\n): IndexerFundingRate {\n return {\n fundingRate: removeDecimals(fundingRate.funding_rate_x18),\n updateTime: toBigNumber(fundingRate.update_time),\n productId: fundingRate.product_id,\n };\n}\n\nexport function mapIndexerMakerStatistics(\n maker: IndexerServerMaker,\n): IndexerMaker {\n return {\n address: maker.address,\n snapshots: maker.data.map((makerData) => {\n return {\n timestamp: toBigNumber(makerData.timestamp),\n makerFee: toBigNumber(makerData.maker_fee),\n uptime: toBigNumber(makerData.uptime),\n sumQMin: toBigNumber(makerData.sum_q_min),\n qScore: toBigNumber(makerData.q_score),\n makerShare: toBigNumber(makerData.maker_share),\n expectedMakerReward: toBigNumber(makerData.expected_maker_reward),\n };\n }),\n };\n}\n\nexport function mapIndexerLeaderboardPosition(\n position: IndexerServerLeaderboardPosition,\n): IndexerLeaderboardParticipant {\n const tracks = mapValues(position.tracks, (trackData) => ({\n value: toBigNumber(trackData.value),\n rank: toBigNumber(trackData.rank),\n qualificationStatus: trackData.qualification_status,\n }));\n\n return {\n subaccount: subaccountFromHex(position.subaccount),\n contestId: position.contest_id,\n accountValue: toBigNumber(position.account_value),\n updateTime: toBigNumber(position.update_time),\n tracks,\n socialAccounts: position.social_accounts.map((account) => ({\n provider: account.provider,\n username: account.username,\n displayName: account.display_name,\n profileImageUrl: account.profile_image_url,\n })),\n };\n}\n\nexport function mapIndexerLeaderboardRegistration(\n registration: IndexerServerLeaderboardRegistration,\n): IndexerLeaderboardRegistration {\n return {\n subaccount: subaccountFromHex(registration.subaccount),\n contestId: registration.contest_id,\n updateTime: toBigNumber(registration.update_time),\n };\n}\n\nexport function mapIndexerLeaderboardContest(\n contest: IndexerServerLeaderboardContest,\n): IndexerLeaderboardContest {\n const startTime = toBigNumber(contest.start_time);\n const endTime = toBigNumber(contest.end_time);\n\n return {\n contestId: contest.contest_id,\n startTime,\n endTime,\n totalParticipants: toBigNumber(contest.count),\n requiredProductIds: contest.product_ids,\n active: contest.active,\n lastUpdated: toBigNumber(contest.last_updated),\n title: contest.title,\n description: contest.description,\n tracks: contest.tracks.map((track) => ({\n trackId: track.track_id,\n rankType: track.rank_type,\n sortOrder: track.sort_order,\n minRequiredAccountValue: toBigNumber(track.threshold),\n })),\n };\n}\n\nexport function mapIndexerCandlesticks(\n candlestick: IndexerServerCandlestick,\n): Candlestick {\n return {\n close: removeDecimals(candlestick.close_x18),\n high: removeDecimals(candlestick.high_x18),\n low: removeDecimals(candlestick.low_x18),\n open: removeDecimals(candlestick.open_x18),\n time: toBigNumber(candlestick.timestamp),\n volume: toBigNumber(candlestick.volume),\n };\n}\n\nexport function mapIndexerMarketSnapshot(\n snapshot: IndexerServerMarketSnapshot,\n): IndexerMarketSnapshot {\n return {\n timestamp: toBigNumber(snapshot.timestamp),\n cumulativeUsers: toBigNumber(snapshot.cumulative_users),\n dailyActiveUsers: toBigNumber(snapshot.daily_active_users),\n tvl: toBigNumber(snapshot.tvl),\n borrowRates: mapValues(snapshot.borrow_rates, (value) =>\n removeDecimals(value),\n ),\n cumulativeLiquidationAmounts: mapValues(\n snapshot.cumulative_liquidation_amounts,\n toBigNumber,\n ),\n cumulativeMakerFees: mapValues(snapshot.cumulative_maker_fees, toBigNumber),\n cumulativeSequencerFees: mapValues(\n snapshot.cumulative_sequencer_fees,\n toBigNumber,\n ),\n cumulativeTakerFees: mapValues(snapshot.cumulative_taker_fees, toBigNumber),\n cumulativeTrades: mapValues(snapshot.cumulative_trades, toBigNumber),\n cumulativeVolumes: mapValues(snapshot.cumulative_volumes, toBigNumber),\n depositRates: mapValues(snapshot.deposit_rates, (value) =>\n removeDecimals(value),\n ),\n fundingRates: mapValues(snapshot.funding_rates, (value) =>\n removeDecimals(value),\n ),\n openInterestsQuote: mapValues(snapshot.open_interests, toBigNumber),\n totalBorrows: mapValues(snapshot.total_borrows, toBigNumber),\n totalDeposits: mapValues(snapshot.total_deposits, toBigNumber),\n cumulativeTradeSizes: mapValues(\n snapshot.cumulative_trade_sizes,\n toBigNumber,\n ),\n cumulativeInflows: mapValues(snapshot.cumulative_inflows, toBigNumber),\n cumulativeOutflows: mapValues(snapshot.cumulative_outflows, toBigNumber),\n oraclePrices: mapValues(snapshot.oracle_prices, (value) =>\n removeDecimals(value),\n ),\n };\n}\n\nexport function mapIndexerNlpSnapshot(\n snapshot: IndexerServerNlpSnapshot,\n): IndexerNlpSnapshot {\n return {\n submissionIndex: snapshot.submission_idx,\n timestamp: toBigNumber(snapshot.timestamp),\n cumulativeBurnAmountQuote: toBigNumber(snapshot.cumulative_burn_quote),\n cumulativeMintAmountQuote: toBigNumber(snapshot.cumulative_mint_quote),\n cumulativePnl: toBigNumber(snapshot.cumulative_pnl),\n cumulativeTrades: toBigNumber(snapshot.cumulative_trades),\n cumulativeVolume: toBigNumber(snapshot.cumulative_volume),\n depositors: toBigNumber(snapshot.depositors),\n oraclePrice: removeDecimals(snapshot.oracle_price_x18),\n tvl: toBigNumber(snapshot.tvl),\n };\n}\n\nexport function mapIndexerV2Ticker(\n ticker: IndexerServerV2TickerResponse,\n): IndexerV2TickerResponse {\n return {\n productId: ticker.product_id,\n tickerId: ticker.ticker_id,\n baseCurrency: ticker.base_currency,\n quoteCurrency: ticker.quote_currency,\n lastPrice: ticker.last_price,\n baseVolume: ticker.base_volume,\n quoteVolume: ticker.quote_volume,\n priceChangePercent24h: ticker.price_change_percent_24h,\n };\n}\n\nexport function mapIndexerV2MarketHours(\n hours: IndexerServerV2MarketHours,\n): IndexerV2MarketHours {\n return {\n isOpen: hours.is_open,\n reason: hours.reason,\n nextClose: hours.next_close,\n nextOpen: hours.next_open,\n };\n}\n\nexport function mapIndexerV2Symbols(\n symbol: IndexerServerV2Symbol,\n): IndexerV2Symbol {\n return {\n type: symbol.type,\n productId: symbol.product_id,\n symbol: symbol.symbol,\n priceIncrement: removeDecimals(symbol.price_increment_x18),\n sizeIncrement: symbol.size_increment,\n minSize: symbol.min_size,\n makerFeeRate: removeDecimals(symbol.maker_fee_rate_x18),\n takerFeeRate: removeDecimals(symbol.taker_fee_rate_x18),\n longWeightInitial: removeDecimals(symbol.long_weight_initial_x18),\n longWeightMaintenance: removeDecimals(symbol.long_weight_maintenance_x18),\n maxOpenInterest: symbol.max_open_interest_x18\n ? removeDecimals(symbol.max_open_interest_x18)\n : null,\n tradingStatus: symbol.trading_status as IndexerV2TradingStatus,\n isolatedOnly: symbol.isolated_only,\n marketHours: symbol.market_hours\n ? mapIndexerV2MarketHours(symbol.market_hours)\n : null,\n };\n}\n"],"mappings":"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","names":[]}
package/dist/index.d.cts CHANGED
@@ -2,14 +2,14 @@ export { INDEXER_CLIENT_ENDPOINTS } from './endpoints.cjs';
2
2
  export { IndexerBaseClient, IndexerClientOpts } from './IndexerBaseClient.cjs';
3
3
  export { IndexerClient } from './IndexerClient.cjs';
4
4
  export { CandlestickPeriod } from './types/CandlestickPeriod.cjs';
5
- export { Candlestick, GetIndexerBacklogResponse, GetIndexerCandlesticksParams, GetIndexerCandlesticksResponse, GetIndexerEdgeCandlesticksParams, GetIndexerEdgeCandlesticksResponse, GetIndexerEdgeMarketSnapshotResponse, GetIndexerEdgeMarketSnapshotsParams, GetIndexerEventsLimitType, GetIndexerEventsParams, GetIndexerEventsResponse, GetIndexerFastWithdrawalSignatureParams, GetIndexerFastWithdrawalSignatureResponse, GetIndexerFundingRateParams, GetIndexerFundingRateResponse, GetIndexerInterestFundingPaymentsParams, GetIndexerInterestFundingPaymentsResponse, GetIndexerLeaderboardContestsParams, GetIndexerLeaderboardContestsResponse, GetIndexerLeaderboardParams, GetIndexerLeaderboardParticipantParams, GetIndexerLeaderboardParticipantResponse, GetIndexerLeaderboardRegistrationParams, GetIndexerLeaderboardRegistrationResponse, GetIndexerLeaderboardResponse, GetIndexerLinkedSignerParams, GetIndexerLinkedSignerResponse, GetIndexerMakerStatisticsParams, GetIndexerMakerStatisticsResponse, GetIndexerMarketSnapshotsParams, GetIndexerMarketSnapshotsResponse, GetIndexerMatchEventsParams, GetIndexerMatchEventsResponse, GetIndexerMultiProductFundingRatesParams, GetIndexerMultiProductFundingRatesResponse, GetIndexerMultiProductPerpPricesParams, GetIndexerMultiProductPerpPricesResponse, GetIndexerMultiProductSnapshotsParams, GetIndexerMultiProductSnapshotsResponse, GetIndexerMultiSubaccountSnapshotsParams, GetIndexerMultiSubaccountSnapshotsResponse, GetIndexerNlpSnapshotsParams, GetIndexerNlpSnapshotsResponse, GetIndexerOraclePricesParams, GetIndexerOraclePricesResponse, GetIndexerOrdersParams, GetIndexerOrdersResponse, GetIndexerPerpPricesParams, GetIndexerPerpPricesResponse, GetIndexerPointsParams, GetIndexerPointsResponse, GetIndexerPrivateAlphaChoiceParams, GetIndexerPrivateAlphaChoiceResponse, GetIndexerProductSnapshotsParams, GetIndexerProductSnapshotsResponse, GetIndexerQuotePriceResponse, GetIndexerReferralCodeParams, GetIndexerReferralCodeResponse, GetIndexerSubaccountDDAParams, GetIndexerSubaccountDDAResponse, GetIndexerV2SymbolsParams, GetIndexerV2SymbolsResponse, GetIndexerV2TickersParams, GetIndexerV2TickersResponse, IndexerAllTimePoints, IndexerBalanceTrackedVars, IndexerEvent, IndexerEventBalanceStateSnapshot, IndexerEventPerpStateSnapshot, IndexerEventSpotStateSnapshot, IndexerEventWithTx, IndexerFundingRate, IndexerLeaderboardContest, IndexerLeaderboardParticipant, IndexerLeaderboardRegistration, IndexerMaker, IndexerMakerSnapshot, IndexerMarketSnapshot, IndexerMatchEvent, IndexerMatchEventBalances, IndexerNlpSnapshot, IndexerOraclePrice, IndexerOrder, IndexerPerpBalance, IndexerPerpPrices, IndexerPointsEpoch, IndexerProductPayment, IndexerProductSnapshot, IndexerSnapshotBalance, IndexerSnapshotsIntervalParams, IndexerSpotBalance, IndexerSubaccountSnapshot, IndexerV2MarketHours, IndexerV2Symbol, IndexerV2TickerResponse, IndexerV2TradingStatus, ListIndexerSubaccountsParams, ListIndexerSubaccountsResponse, TickerMarketType, UpdateIndexerLeaderboardRegistrationParams, UpdateIndexerLeaderboardRegistrationResponse } from './types/clientTypes.cjs';
5
+ export { Candlestick, ConnectSocialAccountParams, ConnectSocialAccountResponse, GetIndexerBacklogResponse, GetIndexerCandlesticksParams, GetIndexerCandlesticksResponse, GetIndexerEdgeCandlesticksParams, GetIndexerEdgeCandlesticksResponse, GetIndexerEdgeMarketSnapshotResponse, GetIndexerEdgeMarketSnapshotsParams, GetIndexerEventsLimitType, GetIndexerEventsParams, GetIndexerEventsResponse, GetIndexerFastWithdrawalSignatureParams, GetIndexerFastWithdrawalSignatureResponse, GetIndexerFundingRateParams, GetIndexerFundingRateResponse, GetIndexerInterestFundingPaymentsParams, GetIndexerInterestFundingPaymentsResponse, GetIndexerLeaderboardContestsParams, GetIndexerLeaderboardContestsResponse, GetIndexerLeaderboardParams, GetIndexerLeaderboardParticipantParams, GetIndexerLeaderboardParticipantResponse, GetIndexerLeaderboardRegistrationsParams, GetIndexerLeaderboardRegistrationsResponse, GetIndexerLeaderboardResponse, GetIndexerLinkedSignerParams, GetIndexerLinkedSignerResponse, GetIndexerMakerStatisticsParams, GetIndexerMakerStatisticsResponse, GetIndexerMarketSnapshotsParams, GetIndexerMarketSnapshotsResponse, GetIndexerMatchEventsParams, GetIndexerMatchEventsResponse, GetIndexerMultiProductFundingRatesParams, GetIndexerMultiProductFundingRatesResponse, GetIndexerMultiProductPerpPricesParams, GetIndexerMultiProductPerpPricesResponse, GetIndexerMultiProductSnapshotsParams, GetIndexerMultiProductSnapshotsResponse, GetIndexerMultiSubaccountSnapshotsParams, GetIndexerMultiSubaccountSnapshotsResponse, GetIndexerNlpSnapshotsParams, GetIndexerNlpSnapshotsResponse, GetIndexerOraclePricesParams, GetIndexerOraclePricesResponse, GetIndexerOrdersParams, GetIndexerOrdersResponse, GetIndexerPerpPricesParams, GetIndexerPerpPricesResponse, GetIndexerPointsParams, GetIndexerPointsResponse, GetIndexerPrivateAlphaChoiceParams, GetIndexerPrivateAlphaChoiceResponse, GetIndexerProductSnapshotsParams, GetIndexerProductSnapshotsResponse, GetIndexerQuotePriceResponse, GetIndexerReferralCodeParams, GetIndexerReferralCodeResponse, GetIndexerSubaccountDDAParams, GetIndexerSubaccountDDAResponse, GetIndexerV2SymbolsParams, GetIndexerV2SymbolsResponse, GetIndexerV2TickersParams, GetIndexerV2TickersResponse, IndexerAllTimePoints, IndexerBalanceTrackedVars, IndexerEvent, IndexerEventBalanceStateSnapshot, IndexerEventPerpStateSnapshot, IndexerEventSpotStateSnapshot, IndexerEventWithTx, IndexerFundingRate, IndexerLeaderboardContest, IndexerLeaderboardContestTrack, IndexerLeaderboardParticipant, IndexerLeaderboardRegistration, IndexerLeaderboardTrackPosition, IndexerMaker, IndexerMakerSnapshot, IndexerMarketSnapshot, IndexerMatchEvent, IndexerMatchEventBalances, IndexerNlpSnapshot, IndexerOraclePrice, IndexerOrder, IndexerPerpBalance, IndexerPerpPrices, IndexerPointsEpoch, IndexerProductPayment, IndexerProductSnapshot, IndexerSnapshotBalance, IndexerSnapshotsIntervalParams, IndexerSocialAccountInfo, IndexerSpotBalance, IndexerSubaccountSnapshot, IndexerV2MarketHours, IndexerV2Symbol, IndexerV2TickerResponse, IndexerV2TradingStatus, ListIndexerSocialAccountsParams, ListIndexerSocialAccountsResponse, ListIndexerSubaccountsParams, ListIndexerSubaccountsResponse, RegisterLeaderboardParams, RegisterLeaderboardResponse, RevokeSocialAccountParams, RevokeSocialAccountResponse, TickerMarketType } from './types/clientTypes.cjs';
6
6
  export { CollateralEventType } from './types/collateralEventType.cjs';
7
7
  export { IndexerEventType } from './types/IndexerEventType.cjs';
8
8
  export { IndexerLeaderboardRankType } from './types/IndexerLeaderboardType.cjs';
9
9
  export { NadoDepositCollateralTx, NadoLiquidateSubaccountTx, NadoMatchOrdersRfqTx, NadoMatchOrdersTx, NadoTransferQuoteTx, NadoTx, NadoWithdrawCollateralTx } from './types/NadoTx.cjs';
10
10
  export { BaseIndexerPaginatedEvent, GetIndexerPaginatedInterestFundingPaymentsResponse, GetIndexerPaginatedLeaderboardParams, GetIndexerPaginatedLeaderboardResponse, GetIndexerPaginatedOrdersParams, GetIndexerPaginatedOrdersResponse, GetIndexerSubaccountCollateralEventsParams, GetIndexerSubaccountCollateralEventsResponse, GetIndexerSubaccountInterestFundingPaymentsParams, GetIndexerSubaccountLiquidationEventsParams, GetIndexerSubaccountLiquidationEventsResponse, GetIndexerSubaccountMatchEventParams, GetIndexerSubaccountMatchEventsResponse, GetIndexerSubaccountNlpEventsParams, GetIndexerSubaccountNlpEventsResponse, GetIndexerSubaccountSettlementEventsParams, GetIndexerSubaccountSettlementEventsResponse, IndexerCollateralEvent, IndexerLiquidationEvent, IndexerNlpEvent, IndexerPaginationMeta, IndexerPaginationParams, IndexerSettlementEvent, PaginatedIndexerEventsResponse, WithPaginationMeta } from './types/paginatedEventsTypes.cjs';
11
- export { IndexerServerBalance, IndexerServerCandlestick, IndexerServerEvent, IndexerServerLeaderboardContest, IndexerServerLeaderboardPosition, IndexerServerLeaderboardRegistration, IndexerServerMaker, IndexerServerMakerData, IndexerServerMarketSnapshot, IndexerServerMarketSnapshotInterval, IndexerServerMatchEvent, IndexerServerMatchEventBalances, IndexerServerNlpSnapshot, IndexerServerOraclePrice, IndexerServerOrder, IndexerServerProduct, IndexerServerProductPayment, IndexerServerProductSnapshot, IndexerServerSnapshotsInterval, IndexerServerTx } from './types/serverModelTypes.cjs';
12
- export { IndexerEdgeServerCandlesticksParams, IndexerEdgeServerCandlesticksResponse, IndexerEdgeServerMarketSnapshotsParams, IndexerEdgeServerMarketSnapshotsResponse, IndexerServerAllTimePoints, IndexerServerBacklogResponse, IndexerServerCandlesticksParams, IndexerServerCandlesticksResponse, IndexerServerDDAQueryParams, IndexerServerDDAResponse, IndexerServerEventsParams, IndexerServerEventsResponse, IndexerServerFastWithdrawalSignatureParams, IndexerServerFastWithdrawalSignatureResponse, IndexerServerFundingRate, IndexerServerFundingRateParams, IndexerServerFundingRateResponse, IndexerServerFundingRatesParams, IndexerServerFundingRatesResponse, IndexerServerInterestFundingParams, IndexerServerInterestFundingResponse, IndexerServerLeaderboardContestsParams, IndexerServerLeaderboardContestsResponse, IndexerServerLeaderboardParams, IndexerServerLeaderboardRankParams, IndexerServerLeaderboardRankResponse, IndexerServerLeaderboardRegistrationParams, IndexerServerLeaderboardRegistrationResponse, IndexerServerLeaderboardResponse, IndexerServerLinkedSignerParams, IndexerServerLinkedSignerResponse, IndexerServerListSubaccountsParams, IndexerServerListSubaccountsResponse, IndexerServerMakerStatisticsParams, IndexerServerMakerStatisticsResponse, IndexerServerMarketSnapshotsParams, IndexerServerMarketSnapshotsResponse, IndexerServerMatchEventsParams, IndexerServerMatchEventsResponse, IndexerServerMultiProductsParams, IndexerServerMultiProductsResponse, IndexerServerMultiSubaccountSnapshotsParams, IndexerServerMultiSubaccountSnapshotsResponse, IndexerServerNlpSnapshotsParams, IndexerServerNlpSnapshotsResponse, IndexerServerOraclePricesParams, IndexerServerOraclePricesResponse, IndexerServerOrdersParams, IndexerServerOrdersResponse, IndexerServerPerpPrices, IndexerServerPerpPricesParams, IndexerServerPerpPricesResponse, IndexerServerPointsEpoch, IndexerServerPointsParams, IndexerServerPointsResponse, IndexerServerPriceParams, IndexerServerPriceResponse, IndexerServerPrivateAlphaChoiceParams, IndexerServerPrivateAlphaChoiceResponse, IndexerServerProductsParams, IndexerServerProductsResponse, IndexerServerQueryRequestByType, IndexerServerQueryRequestType, IndexerServerQueryResponseByType, IndexerServerQuotePriceResponse, IndexerServerReferralCodeParams, IndexerServerReferralCodeResponse, IndexerServerTriggerTypeFilter, IndexerServerV2MarketHours, IndexerServerV2Symbol, IndexerServerV2SymbolsResponse, IndexerServerV2TickerResponse, IndexerServerV2TickersResponse } from './types/serverTypes.cjs';
11
+ export { IndexerServerBalance, IndexerServerCandlestick, IndexerServerEvent, IndexerServerLeaderboardContest, IndexerServerLeaderboardContestTrack, IndexerServerLeaderboardPosition, IndexerServerLeaderboardRegistration, IndexerServerLeaderboardTrackPosition, IndexerServerMaker, IndexerServerMakerData, IndexerServerMarketSnapshot, IndexerServerMarketSnapshotInterval, IndexerServerMatchEvent, IndexerServerMatchEventBalances, IndexerServerNlpSnapshot, IndexerServerOraclePrice, IndexerServerOrder, IndexerServerProduct, IndexerServerProductPayment, IndexerServerProductSnapshot, IndexerServerSnapshotsInterval, IndexerServerSocialAccount, IndexerServerTx } from './types/serverModelTypes.cjs';
12
+ export { IndexerEdgeServerCandlesticksParams, IndexerEdgeServerCandlesticksResponse, IndexerEdgeServerMarketSnapshotsParams, IndexerEdgeServerMarketSnapshotsResponse, IndexerServerAllTimePoints, IndexerServerBacklogResponse, IndexerServerCandlesticksParams, IndexerServerCandlesticksResponse, IndexerServerDDAQueryParams, IndexerServerDDAResponse, IndexerServerEventsParams, IndexerServerEventsResponse, IndexerServerFastWithdrawalSignatureParams, IndexerServerFastWithdrawalSignatureResponse, IndexerServerFundingRate, IndexerServerFundingRateParams, IndexerServerFundingRateResponse, IndexerServerFundingRatesParams, IndexerServerFundingRatesResponse, IndexerServerInterestFundingParams, IndexerServerInterestFundingResponse, IndexerServerLeaderboardContestsParams, IndexerServerLeaderboardContestsResponse, IndexerServerLeaderboardParams, IndexerServerLeaderboardRankParams, IndexerServerLeaderboardRankResponse, IndexerServerLeaderboardRegisterParams, IndexerServerLeaderboardRegisterResponse, IndexerServerLeaderboardRegistrationsParams, IndexerServerLeaderboardRegistrationsResponse, IndexerServerLeaderboardResponse, IndexerServerLinkedSignerParams, IndexerServerLinkedSignerResponse, IndexerServerListSocialAccountsParams, IndexerServerListSubaccountsParams, IndexerServerListSubaccountsResponse, IndexerServerMakerStatisticsParams, IndexerServerMakerStatisticsResponse, IndexerServerMarketSnapshotsParams, IndexerServerMarketSnapshotsResponse, IndexerServerMatchEventsParams, IndexerServerMatchEventsResponse, IndexerServerMultiProductsParams, IndexerServerMultiProductsResponse, IndexerServerMultiSubaccountSnapshotsParams, IndexerServerMultiSubaccountSnapshotsResponse, IndexerServerNlpSnapshotsParams, IndexerServerNlpSnapshotsResponse, IndexerServerOraclePricesParams, IndexerServerOraclePricesResponse, IndexerServerOrdersParams, IndexerServerOrdersResponse, IndexerServerPerpPrices, IndexerServerPerpPricesParams, IndexerServerPerpPricesResponse, IndexerServerPointsEpoch, IndexerServerPointsParams, IndexerServerPointsResponse, IndexerServerPriceParams, IndexerServerPriceResponse, IndexerServerPrivateAlphaChoiceParams, IndexerServerPrivateAlphaChoiceResponse, IndexerServerProductsParams, IndexerServerProductsResponse, IndexerServerQueryRequestByType, IndexerServerQueryRequestType, IndexerServerQueryResponseByType, IndexerServerQuotePriceResponse, IndexerServerReferralCodeParams, IndexerServerReferralCodeResponse, IndexerServerRevokeSocialAccountParams, IndexerServerSocialAccountsResponse, IndexerServerSocialConnectParams, IndexerServerSocialConnectResponse, IndexerServerTriggerTypeFilter, IndexerServerV2MarketHours, IndexerServerV2Symbol, IndexerServerV2SymbolsResponse, IndexerServerV2TickerResponse, IndexerServerV2TickersResponse } from './types/serverTypes.cjs';
13
13
  export { calcIndexerPerpBalanceNotionalValue, calcIndexerPerpBalanceValue, calcIndexerSpotBalanceValue } from './utils/indexerBalanceValue.cjs';
14
14
  import '@nadohq/shared';
15
15
  import 'axios';
package/dist/index.d.ts CHANGED
@@ -2,14 +2,14 @@ export { INDEXER_CLIENT_ENDPOINTS } from './endpoints.js';
2
2
  export { IndexerBaseClient, IndexerClientOpts } from './IndexerBaseClient.js';
3
3
  export { IndexerClient } from './IndexerClient.js';
4
4
  export { CandlestickPeriod } from './types/CandlestickPeriod.js';
5
- export { Candlestick, GetIndexerBacklogResponse, GetIndexerCandlesticksParams, GetIndexerCandlesticksResponse, GetIndexerEdgeCandlesticksParams, GetIndexerEdgeCandlesticksResponse, GetIndexerEdgeMarketSnapshotResponse, GetIndexerEdgeMarketSnapshotsParams, GetIndexerEventsLimitType, GetIndexerEventsParams, GetIndexerEventsResponse, GetIndexerFastWithdrawalSignatureParams, GetIndexerFastWithdrawalSignatureResponse, GetIndexerFundingRateParams, GetIndexerFundingRateResponse, GetIndexerInterestFundingPaymentsParams, GetIndexerInterestFundingPaymentsResponse, GetIndexerLeaderboardContestsParams, GetIndexerLeaderboardContestsResponse, GetIndexerLeaderboardParams, GetIndexerLeaderboardParticipantParams, GetIndexerLeaderboardParticipantResponse, GetIndexerLeaderboardRegistrationParams, GetIndexerLeaderboardRegistrationResponse, GetIndexerLeaderboardResponse, GetIndexerLinkedSignerParams, GetIndexerLinkedSignerResponse, GetIndexerMakerStatisticsParams, GetIndexerMakerStatisticsResponse, GetIndexerMarketSnapshotsParams, GetIndexerMarketSnapshotsResponse, GetIndexerMatchEventsParams, GetIndexerMatchEventsResponse, GetIndexerMultiProductFundingRatesParams, GetIndexerMultiProductFundingRatesResponse, GetIndexerMultiProductPerpPricesParams, GetIndexerMultiProductPerpPricesResponse, GetIndexerMultiProductSnapshotsParams, GetIndexerMultiProductSnapshotsResponse, GetIndexerMultiSubaccountSnapshotsParams, GetIndexerMultiSubaccountSnapshotsResponse, GetIndexerNlpSnapshotsParams, GetIndexerNlpSnapshotsResponse, GetIndexerOraclePricesParams, GetIndexerOraclePricesResponse, GetIndexerOrdersParams, GetIndexerOrdersResponse, GetIndexerPerpPricesParams, GetIndexerPerpPricesResponse, GetIndexerPointsParams, GetIndexerPointsResponse, GetIndexerPrivateAlphaChoiceParams, GetIndexerPrivateAlphaChoiceResponse, GetIndexerProductSnapshotsParams, GetIndexerProductSnapshotsResponse, GetIndexerQuotePriceResponse, GetIndexerReferralCodeParams, GetIndexerReferralCodeResponse, GetIndexerSubaccountDDAParams, GetIndexerSubaccountDDAResponse, GetIndexerV2SymbolsParams, GetIndexerV2SymbolsResponse, GetIndexerV2TickersParams, GetIndexerV2TickersResponse, IndexerAllTimePoints, IndexerBalanceTrackedVars, IndexerEvent, IndexerEventBalanceStateSnapshot, IndexerEventPerpStateSnapshot, IndexerEventSpotStateSnapshot, IndexerEventWithTx, IndexerFundingRate, IndexerLeaderboardContest, IndexerLeaderboardParticipant, IndexerLeaderboardRegistration, IndexerMaker, IndexerMakerSnapshot, IndexerMarketSnapshot, IndexerMatchEvent, IndexerMatchEventBalances, IndexerNlpSnapshot, IndexerOraclePrice, IndexerOrder, IndexerPerpBalance, IndexerPerpPrices, IndexerPointsEpoch, IndexerProductPayment, IndexerProductSnapshot, IndexerSnapshotBalance, IndexerSnapshotsIntervalParams, IndexerSpotBalance, IndexerSubaccountSnapshot, IndexerV2MarketHours, IndexerV2Symbol, IndexerV2TickerResponse, IndexerV2TradingStatus, ListIndexerSubaccountsParams, ListIndexerSubaccountsResponse, TickerMarketType, UpdateIndexerLeaderboardRegistrationParams, UpdateIndexerLeaderboardRegistrationResponse } from './types/clientTypes.js';
5
+ export { Candlestick, ConnectSocialAccountParams, ConnectSocialAccountResponse, GetIndexerBacklogResponse, GetIndexerCandlesticksParams, GetIndexerCandlesticksResponse, GetIndexerEdgeCandlesticksParams, GetIndexerEdgeCandlesticksResponse, GetIndexerEdgeMarketSnapshotResponse, GetIndexerEdgeMarketSnapshotsParams, GetIndexerEventsLimitType, GetIndexerEventsParams, GetIndexerEventsResponse, GetIndexerFastWithdrawalSignatureParams, GetIndexerFastWithdrawalSignatureResponse, GetIndexerFundingRateParams, GetIndexerFundingRateResponse, GetIndexerInterestFundingPaymentsParams, GetIndexerInterestFundingPaymentsResponse, GetIndexerLeaderboardContestsParams, GetIndexerLeaderboardContestsResponse, GetIndexerLeaderboardParams, GetIndexerLeaderboardParticipantParams, GetIndexerLeaderboardParticipantResponse, GetIndexerLeaderboardRegistrationsParams, GetIndexerLeaderboardRegistrationsResponse, GetIndexerLeaderboardResponse, GetIndexerLinkedSignerParams, GetIndexerLinkedSignerResponse, GetIndexerMakerStatisticsParams, GetIndexerMakerStatisticsResponse, GetIndexerMarketSnapshotsParams, GetIndexerMarketSnapshotsResponse, GetIndexerMatchEventsParams, GetIndexerMatchEventsResponse, GetIndexerMultiProductFundingRatesParams, GetIndexerMultiProductFundingRatesResponse, GetIndexerMultiProductPerpPricesParams, GetIndexerMultiProductPerpPricesResponse, GetIndexerMultiProductSnapshotsParams, GetIndexerMultiProductSnapshotsResponse, GetIndexerMultiSubaccountSnapshotsParams, GetIndexerMultiSubaccountSnapshotsResponse, GetIndexerNlpSnapshotsParams, GetIndexerNlpSnapshotsResponse, GetIndexerOraclePricesParams, GetIndexerOraclePricesResponse, GetIndexerOrdersParams, GetIndexerOrdersResponse, GetIndexerPerpPricesParams, GetIndexerPerpPricesResponse, GetIndexerPointsParams, GetIndexerPointsResponse, GetIndexerPrivateAlphaChoiceParams, GetIndexerPrivateAlphaChoiceResponse, GetIndexerProductSnapshotsParams, GetIndexerProductSnapshotsResponse, GetIndexerQuotePriceResponse, GetIndexerReferralCodeParams, GetIndexerReferralCodeResponse, GetIndexerSubaccountDDAParams, GetIndexerSubaccountDDAResponse, GetIndexerV2SymbolsParams, GetIndexerV2SymbolsResponse, GetIndexerV2TickersParams, GetIndexerV2TickersResponse, IndexerAllTimePoints, IndexerBalanceTrackedVars, IndexerEvent, IndexerEventBalanceStateSnapshot, IndexerEventPerpStateSnapshot, IndexerEventSpotStateSnapshot, IndexerEventWithTx, IndexerFundingRate, IndexerLeaderboardContest, IndexerLeaderboardContestTrack, IndexerLeaderboardParticipant, IndexerLeaderboardRegistration, IndexerLeaderboardTrackPosition, IndexerMaker, IndexerMakerSnapshot, IndexerMarketSnapshot, IndexerMatchEvent, IndexerMatchEventBalances, IndexerNlpSnapshot, IndexerOraclePrice, IndexerOrder, IndexerPerpBalance, IndexerPerpPrices, IndexerPointsEpoch, IndexerProductPayment, IndexerProductSnapshot, IndexerSnapshotBalance, IndexerSnapshotsIntervalParams, IndexerSocialAccountInfo, IndexerSpotBalance, IndexerSubaccountSnapshot, IndexerV2MarketHours, IndexerV2Symbol, IndexerV2TickerResponse, IndexerV2TradingStatus, ListIndexerSocialAccountsParams, ListIndexerSocialAccountsResponse, ListIndexerSubaccountsParams, ListIndexerSubaccountsResponse, RegisterLeaderboardParams, RegisterLeaderboardResponse, RevokeSocialAccountParams, RevokeSocialAccountResponse, TickerMarketType } from './types/clientTypes.js';
6
6
  export { CollateralEventType } from './types/collateralEventType.js';
7
7
  export { IndexerEventType } from './types/IndexerEventType.js';
8
8
  export { IndexerLeaderboardRankType } from './types/IndexerLeaderboardType.js';
9
9
  export { NadoDepositCollateralTx, NadoLiquidateSubaccountTx, NadoMatchOrdersRfqTx, NadoMatchOrdersTx, NadoTransferQuoteTx, NadoTx, NadoWithdrawCollateralTx } from './types/NadoTx.js';
10
10
  export { BaseIndexerPaginatedEvent, GetIndexerPaginatedInterestFundingPaymentsResponse, GetIndexerPaginatedLeaderboardParams, GetIndexerPaginatedLeaderboardResponse, GetIndexerPaginatedOrdersParams, GetIndexerPaginatedOrdersResponse, GetIndexerSubaccountCollateralEventsParams, GetIndexerSubaccountCollateralEventsResponse, GetIndexerSubaccountInterestFundingPaymentsParams, GetIndexerSubaccountLiquidationEventsParams, GetIndexerSubaccountLiquidationEventsResponse, GetIndexerSubaccountMatchEventParams, GetIndexerSubaccountMatchEventsResponse, GetIndexerSubaccountNlpEventsParams, GetIndexerSubaccountNlpEventsResponse, GetIndexerSubaccountSettlementEventsParams, GetIndexerSubaccountSettlementEventsResponse, IndexerCollateralEvent, IndexerLiquidationEvent, IndexerNlpEvent, IndexerPaginationMeta, IndexerPaginationParams, IndexerSettlementEvent, PaginatedIndexerEventsResponse, WithPaginationMeta } from './types/paginatedEventsTypes.js';
11
- export { IndexerServerBalance, IndexerServerCandlestick, IndexerServerEvent, IndexerServerLeaderboardContest, IndexerServerLeaderboardPosition, IndexerServerLeaderboardRegistration, IndexerServerMaker, IndexerServerMakerData, IndexerServerMarketSnapshot, IndexerServerMarketSnapshotInterval, IndexerServerMatchEvent, IndexerServerMatchEventBalances, IndexerServerNlpSnapshot, IndexerServerOraclePrice, IndexerServerOrder, IndexerServerProduct, IndexerServerProductPayment, IndexerServerProductSnapshot, IndexerServerSnapshotsInterval, IndexerServerTx } from './types/serverModelTypes.js';
12
- export { IndexerEdgeServerCandlesticksParams, IndexerEdgeServerCandlesticksResponse, IndexerEdgeServerMarketSnapshotsParams, IndexerEdgeServerMarketSnapshotsResponse, IndexerServerAllTimePoints, IndexerServerBacklogResponse, IndexerServerCandlesticksParams, IndexerServerCandlesticksResponse, IndexerServerDDAQueryParams, IndexerServerDDAResponse, IndexerServerEventsParams, IndexerServerEventsResponse, IndexerServerFastWithdrawalSignatureParams, IndexerServerFastWithdrawalSignatureResponse, IndexerServerFundingRate, IndexerServerFundingRateParams, IndexerServerFundingRateResponse, IndexerServerFundingRatesParams, IndexerServerFundingRatesResponse, IndexerServerInterestFundingParams, IndexerServerInterestFundingResponse, IndexerServerLeaderboardContestsParams, IndexerServerLeaderboardContestsResponse, IndexerServerLeaderboardParams, IndexerServerLeaderboardRankParams, IndexerServerLeaderboardRankResponse, IndexerServerLeaderboardRegistrationParams, IndexerServerLeaderboardRegistrationResponse, IndexerServerLeaderboardResponse, IndexerServerLinkedSignerParams, IndexerServerLinkedSignerResponse, IndexerServerListSubaccountsParams, IndexerServerListSubaccountsResponse, IndexerServerMakerStatisticsParams, IndexerServerMakerStatisticsResponse, IndexerServerMarketSnapshotsParams, IndexerServerMarketSnapshotsResponse, IndexerServerMatchEventsParams, IndexerServerMatchEventsResponse, IndexerServerMultiProductsParams, IndexerServerMultiProductsResponse, IndexerServerMultiSubaccountSnapshotsParams, IndexerServerMultiSubaccountSnapshotsResponse, IndexerServerNlpSnapshotsParams, IndexerServerNlpSnapshotsResponse, IndexerServerOraclePricesParams, IndexerServerOraclePricesResponse, IndexerServerOrdersParams, IndexerServerOrdersResponse, IndexerServerPerpPrices, IndexerServerPerpPricesParams, IndexerServerPerpPricesResponse, IndexerServerPointsEpoch, IndexerServerPointsParams, IndexerServerPointsResponse, IndexerServerPriceParams, IndexerServerPriceResponse, IndexerServerPrivateAlphaChoiceParams, IndexerServerPrivateAlphaChoiceResponse, IndexerServerProductsParams, IndexerServerProductsResponse, IndexerServerQueryRequestByType, IndexerServerQueryRequestType, IndexerServerQueryResponseByType, IndexerServerQuotePriceResponse, IndexerServerReferralCodeParams, IndexerServerReferralCodeResponse, IndexerServerTriggerTypeFilter, IndexerServerV2MarketHours, IndexerServerV2Symbol, IndexerServerV2SymbolsResponse, IndexerServerV2TickerResponse, IndexerServerV2TickersResponse } from './types/serverTypes.js';
11
+ export { IndexerServerBalance, IndexerServerCandlestick, IndexerServerEvent, IndexerServerLeaderboardContest, IndexerServerLeaderboardContestTrack, IndexerServerLeaderboardPosition, IndexerServerLeaderboardRegistration, IndexerServerLeaderboardTrackPosition, IndexerServerMaker, IndexerServerMakerData, IndexerServerMarketSnapshot, IndexerServerMarketSnapshotInterval, IndexerServerMatchEvent, IndexerServerMatchEventBalances, IndexerServerNlpSnapshot, IndexerServerOraclePrice, IndexerServerOrder, IndexerServerProduct, IndexerServerProductPayment, IndexerServerProductSnapshot, IndexerServerSnapshotsInterval, IndexerServerSocialAccount, IndexerServerTx } from './types/serverModelTypes.js';
12
+ export { IndexerEdgeServerCandlesticksParams, IndexerEdgeServerCandlesticksResponse, IndexerEdgeServerMarketSnapshotsParams, IndexerEdgeServerMarketSnapshotsResponse, IndexerServerAllTimePoints, IndexerServerBacklogResponse, IndexerServerCandlesticksParams, IndexerServerCandlesticksResponse, IndexerServerDDAQueryParams, IndexerServerDDAResponse, IndexerServerEventsParams, IndexerServerEventsResponse, IndexerServerFastWithdrawalSignatureParams, IndexerServerFastWithdrawalSignatureResponse, IndexerServerFundingRate, IndexerServerFundingRateParams, IndexerServerFundingRateResponse, IndexerServerFundingRatesParams, IndexerServerFundingRatesResponse, IndexerServerInterestFundingParams, IndexerServerInterestFundingResponse, IndexerServerLeaderboardContestsParams, IndexerServerLeaderboardContestsResponse, IndexerServerLeaderboardParams, IndexerServerLeaderboardRankParams, IndexerServerLeaderboardRankResponse, IndexerServerLeaderboardRegisterParams, IndexerServerLeaderboardRegisterResponse, IndexerServerLeaderboardRegistrationsParams, IndexerServerLeaderboardRegistrationsResponse, IndexerServerLeaderboardResponse, IndexerServerLinkedSignerParams, IndexerServerLinkedSignerResponse, IndexerServerListSocialAccountsParams, IndexerServerListSubaccountsParams, IndexerServerListSubaccountsResponse, IndexerServerMakerStatisticsParams, IndexerServerMakerStatisticsResponse, IndexerServerMarketSnapshotsParams, IndexerServerMarketSnapshotsResponse, IndexerServerMatchEventsParams, IndexerServerMatchEventsResponse, IndexerServerMultiProductsParams, IndexerServerMultiProductsResponse, IndexerServerMultiSubaccountSnapshotsParams, IndexerServerMultiSubaccountSnapshotsResponse, IndexerServerNlpSnapshotsParams, IndexerServerNlpSnapshotsResponse, IndexerServerOraclePricesParams, IndexerServerOraclePricesResponse, IndexerServerOrdersParams, IndexerServerOrdersResponse, IndexerServerPerpPrices, IndexerServerPerpPricesParams, IndexerServerPerpPricesResponse, IndexerServerPointsEpoch, IndexerServerPointsParams, IndexerServerPointsResponse, IndexerServerPriceParams, IndexerServerPriceResponse, IndexerServerPrivateAlphaChoiceParams, IndexerServerPrivateAlphaChoiceResponse, IndexerServerProductsParams, IndexerServerProductsResponse, IndexerServerQueryRequestByType, IndexerServerQueryRequestType, IndexerServerQueryResponseByType, IndexerServerQuotePriceResponse, IndexerServerReferralCodeParams, IndexerServerReferralCodeResponse, IndexerServerRevokeSocialAccountParams, IndexerServerSocialAccountsResponse, IndexerServerSocialConnectParams, IndexerServerSocialConnectResponse, IndexerServerTriggerTypeFilter, IndexerServerV2MarketHours, IndexerServerV2Symbol, IndexerServerV2SymbolsResponse, IndexerServerV2TickerResponse, IndexerServerV2TickersResponse } from './types/serverTypes.js';
13
13
  export { calcIndexerPerpBalanceNotionalValue, calcIndexerPerpBalanceValue, calcIndexerSpotBalanceValue } from './utils/indexerBalanceValue.js';
14
14
  import '@nadohq/shared';
15
15
  import 'axios';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/IndexerLeaderboardType.ts"],"sourcesContent":["// `pnl` ranks by the absolute pnl value, whereas `roi` ranks by the % roi value\nexport type IndexerLeaderboardRankType = 'pnl' | 'roi';\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../src/types/IndexerLeaderboardType.ts"],"sourcesContent":["/**\n * Leaderboard ranking metric.\n * - `pnl` ranks by absolute PnL value\n * - `roi` ranks by percentage ROI value\n * - `volume` ranks by trading volume\n * - `liquidation` ranks by liquidation count\n * - `balance` ranks by spot balance\n */\nexport type IndexerLeaderboardRankType =\n | 'pnl'\n | 'roi'\n | 'volume'\n | 'liquidation'\n | 'balance';\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -1,3 +1,11 @@
1
- type IndexerLeaderboardRankType = 'pnl' | 'roi';
1
+ /**
2
+ * Leaderboard ranking metric.
3
+ * - `pnl` ranks by absolute PnL value
4
+ * - `roi` ranks by percentage ROI value
5
+ * - `volume` ranks by trading volume
6
+ * - `liquidation` ranks by liquidation count
7
+ * - `balance` ranks by spot balance
8
+ */
9
+ type IndexerLeaderboardRankType = 'pnl' | 'roi' | 'volume' | 'liquidation' | 'balance';
2
10
 
3
11
  export type { IndexerLeaderboardRankType };
@@ -1,3 +1,11 @@
1
- type IndexerLeaderboardRankType = 'pnl' | 'roi';
1
+ /**
2
+ * Leaderboard ranking metric.
3
+ * - `pnl` ranks by absolute PnL value
4
+ * - `roi` ranks by percentage ROI value
5
+ * - `volume` ranks by trading volume
6
+ * - `liquidation` ranks by liquidation count
7
+ * - `balance` ranks by spot balance
8
+ */
9
+ type IndexerLeaderboardRankType = 'pnl' | 'roi' | 'volume' | 'liquidation' | 'balance';
2
10
 
3
11
  export type { IndexerLeaderboardRankType };