@nadohq/indexer-client 0.34.0 → 0.36.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.
- package/dist/{IndexerBaseClient-DKxLMijD.cjs → IndexerBaseClient-DxlRS6pt.cjs} +30 -17
- package/dist/IndexerBaseClient-DxlRS6pt.cjs.map +1 -0
- package/dist/IndexerBaseClient.cjs +1 -1
- package/dist/IndexerBaseClient.d.cts +9 -1
- package/dist/IndexerBaseClient.d.cts.map +1 -1
- package/dist/IndexerBaseClient.d.ts +9 -1
- package/dist/IndexerBaseClient.d.ts.map +1 -1
- package/dist/IndexerBaseClient.js +30 -17
- package/dist/IndexerBaseClient.js.map +1 -1
- package/dist/IndexerClient.cjs +1 -1
- package/dist/dataMappers.cjs +1 -1
- package/dist/endpoints.cjs +6 -2
- package/dist/endpoints.cjs.map +1 -1
- package/dist/endpoints.d.cts +4 -0
- package/dist/endpoints.d.cts.map +1 -1
- package/dist/endpoints.d.ts +4 -0
- package/dist/endpoints.d.ts.map +1 -1
- package/dist/endpoints.js +6 -2
- package/dist/endpoints.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/types/IndexerServerFailureError.cjs +1 -1
- package/dist/types/indexerErrorCodes.cjs +1 -1
- package/package.json +4 -4
- package/src/IndexerBaseClient.ts +45 -17
- package/src/endpoints.ts +6 -2
- package/dist/IndexerBaseClient-DKxLMijD.cjs.map +0 -1
|
@@ -35,9 +35,12 @@ var IndexerBaseClient = class {
|
|
|
35
35
|
this.opts = opts;
|
|
36
36
|
this.axiosInstance = axios.default.create({
|
|
37
37
|
withCredentials: true,
|
|
38
|
-
validateStatus: () => true
|
|
38
|
+
validateStatus: () => true,
|
|
39
|
+
headers: (0, _nadohq_shared.getNadoClientTypeHeaders)(opts.clientType)
|
|
39
40
|
});
|
|
40
|
-
this.
|
|
41
|
+
this.v1Url = `${opts.url}/v1`;
|
|
42
|
+
this.v2Url = `${opts.url}/v2`;
|
|
43
|
+
this.rewardsUrl = `${opts.url}/rewards/v1`;
|
|
41
44
|
}
|
|
42
45
|
/**
|
|
43
46
|
* Sets the linked signer for execute requests
|
|
@@ -421,7 +424,7 @@ var IndexerBaseClient = class {
|
|
|
421
424
|
* @param params
|
|
422
425
|
*/
|
|
423
426
|
async getLeaderboard(params) {
|
|
424
|
-
return { participants: (await this.
|
|
427
|
+
return { participants: (await this.rewardsQuery("leaderboard", {
|
|
425
428
|
contest_id: params.contestId,
|
|
426
429
|
rank_type: params.rankType,
|
|
427
430
|
start: params.startCursor,
|
|
@@ -435,7 +438,7 @@ var IndexerBaseClient = class {
|
|
|
435
438
|
* @param params
|
|
436
439
|
*/
|
|
437
440
|
async getLeaderboardParticipant(params) {
|
|
438
|
-
return { participant: (0, _nadohq_shared.mapValues)((await this.
|
|
441
|
+
return { participant: (0, _nadohq_shared.mapValues)((await this.rewardsQuery("leaderboard_rank", {
|
|
439
442
|
subaccount: (0, _nadohq_shared.subaccountToHex)(params.subaccount),
|
|
440
443
|
contest_ids: params.contestIds
|
|
441
444
|
})).positions, (position) => require_dataMappers.mapIndexerLeaderboardPosition(position)) };
|
|
@@ -456,7 +459,7 @@ var IndexerBaseClient = class {
|
|
|
456
459
|
tx: (0, _nadohq_shared.getNadoEIP712Values)("leaderboard_authentication", signatureParams),
|
|
457
460
|
signature: await this.sign("leaderboard_authentication", params.verifyingAddr, params.chainId, signatureParams)
|
|
458
461
|
};
|
|
459
|
-
return { registrations: (await this.
|
|
462
|
+
return { registrations: (await this.rewardsQuery("leaderboard_register", { update_registration: updateRegistrationTx })).registrations.map(require_dataMappers.mapIndexerLeaderboardRegistration) };
|
|
460
463
|
}
|
|
461
464
|
/**
|
|
462
465
|
* Retrieves contest registrations for a subaccount. Supports batch lookup
|
|
@@ -465,7 +468,7 @@ var IndexerBaseClient = class {
|
|
|
465
468
|
* @param params - Query parameters including subaccount and contest IDs.
|
|
466
469
|
*/
|
|
467
470
|
async getLeaderboardRegistrations(params) {
|
|
468
|
-
return { registrations: (await this.
|
|
471
|
+
return { registrations: (await this.rewardsQuery("leaderboard_registrations", {
|
|
469
472
|
subaccount: (0, _nadohq_shared.subaccountToHex)(params.subaccount),
|
|
470
473
|
contest_ids: params.contestIds,
|
|
471
474
|
active: params.active
|
|
@@ -477,7 +480,7 @@ var IndexerBaseClient = class {
|
|
|
477
480
|
* @param params
|
|
478
481
|
*/
|
|
479
482
|
async getLeaderboardContests(params) {
|
|
480
|
-
return { contests: (await this.
|
|
483
|
+
return { contests: (await this.rewardsQuery("leaderboard_contests", {
|
|
481
484
|
contest_ids: params.contestIds,
|
|
482
485
|
active: params.active
|
|
483
486
|
})).contests.map(require_dataMappers.mapIndexerLeaderboardContest) };
|
|
@@ -527,7 +530,7 @@ var IndexerBaseClient = class {
|
|
|
527
530
|
* @param params
|
|
528
531
|
*/
|
|
529
532
|
async getPrivateAlphaChoice(params) {
|
|
530
|
-
const baseResponse = await this.
|
|
533
|
+
const baseResponse = await this.rewardsQuery("private_alpha_choice", { address: params.address });
|
|
531
534
|
return {
|
|
532
535
|
points: (0, _nadohq_shared.toBigNumber)(baseResponse.points),
|
|
533
536
|
feeRefund: (0, _nadohq_shared.toBigNumber)(baseResponse.fee_refund),
|
|
@@ -539,7 +542,7 @@ var IndexerBaseClient = class {
|
|
|
539
542
|
* @param params
|
|
540
543
|
*/
|
|
541
544
|
async getPoints(params) {
|
|
542
|
-
const baseResponse = await this.
|
|
545
|
+
const baseResponse = await this.rewardsQuery("nado_points", { address: params.address });
|
|
543
546
|
return {
|
|
544
547
|
pointsPerEpoch: baseResponse.points_per_epoch.map((epoch) => ({
|
|
545
548
|
epoch: epoch.epoch,
|
|
@@ -564,7 +567,7 @@ var IndexerBaseClient = class {
|
|
|
564
567
|
* @param params
|
|
565
568
|
*/
|
|
566
569
|
async getXPoints(params) {
|
|
567
|
-
const baseResponse = await this.
|
|
570
|
+
const baseResponse = await this.rewardsQuery("nado_xpoints", { address: params.address });
|
|
568
571
|
const mapQuests = (quests) => quests.map((quest) => ({
|
|
569
572
|
questType: quest.quest_type,
|
|
570
573
|
points: (0, _nadohq_shared.toBigNumber)(quest.points)
|
|
@@ -593,7 +596,7 @@ var IndexerBaseClient = class {
|
|
|
593
596
|
* @param params
|
|
594
597
|
*/
|
|
595
598
|
async getCashIncentives(params) {
|
|
596
|
-
const baseResponse = await this.
|
|
599
|
+
const baseResponse = await this.rewardsQuery("cash_incentives", { wallet_address: params.address });
|
|
597
600
|
return {
|
|
598
601
|
events: baseResponse.events.map((event) => ({
|
|
599
602
|
metadata: {
|
|
@@ -642,7 +645,7 @@ var IndexerBaseClient = class {
|
|
|
642
645
|
};
|
|
643
646
|
const tx = (0, _nadohq_shared.getNadoEIP712Values)("social_authentication", signatureParams);
|
|
644
647
|
const signature = await this.sign("social_authentication", params.verifyingAddr, params.chainId, signatureParams);
|
|
645
|
-
return { url: (await this.
|
|
648
|
+
return { url: (await this.rewardsQuery("social_connect", { update_social_account: {
|
|
646
649
|
tx,
|
|
647
650
|
signature
|
|
648
651
|
} })).url };
|
|
@@ -653,7 +656,7 @@ var IndexerBaseClient = class {
|
|
|
653
656
|
* @param params - Query parameters including the wallet address.
|
|
654
657
|
*/
|
|
655
658
|
async listSocialAccounts(params) {
|
|
656
|
-
return { accounts: (await this.
|
|
659
|
+
return { accounts: (await this.rewardsQuery("list_social_accounts", { address: params.address })).accounts.map((a) => ({
|
|
657
660
|
provider: a.provider,
|
|
658
661
|
username: a.username,
|
|
659
662
|
displayName: a.display_name,
|
|
@@ -674,7 +677,7 @@ var IndexerBaseClient = class {
|
|
|
674
677
|
};
|
|
675
678
|
const tx = (0, _nadohq_shared.getNadoEIP712Values)("social_authentication", signatureParams);
|
|
676
679
|
const signature = await this.sign("social_authentication", params.verifyingAddr, params.chainId, signatureParams);
|
|
677
|
-
return { accounts: (await this.
|
|
680
|
+
return { accounts: (await this.rewardsQuery("revoke_social_account", { update_social_account: {
|
|
678
681
|
tx,
|
|
679
682
|
signature
|
|
680
683
|
} })).accounts.map((a) => ({
|
|
@@ -705,9 +708,19 @@ var IndexerBaseClient = class {
|
|
|
705
708
|
this.checkResponseStatus(response);
|
|
706
709
|
return (0, _nadohq_shared.mapValues)(response.data, require_dataMappers.mapIndexerV2Symbols);
|
|
707
710
|
}
|
|
708
|
-
|
|
711
|
+
query(requestType, params) {
|
|
712
|
+
return this.queryWithUrl(this.v1Url, requestType, params);
|
|
713
|
+
}
|
|
714
|
+
/**
|
|
715
|
+
* Runs a query against the rewards endpoint, which serves leaderboard, points,
|
|
716
|
+
* cash incentives, private alpha, and social account queries
|
|
717
|
+
*/
|
|
718
|
+
rewardsQuery(requestType, params) {
|
|
719
|
+
return this.queryWithUrl(this.rewardsUrl, requestType, params);
|
|
720
|
+
}
|
|
721
|
+
async queryWithUrl(url, requestType, params) {
|
|
709
722
|
const reqBody = { [requestType]: params };
|
|
710
|
-
const response = await this.axiosInstance.post(
|
|
723
|
+
const response = await this.axiosInstance.post(url, reqBody);
|
|
711
724
|
this.checkResponseStatus(response);
|
|
712
725
|
return response.data;
|
|
713
726
|
}
|
|
@@ -741,4 +754,4 @@ Object.defineProperty(exports, "__toESM", {
|
|
|
741
754
|
}
|
|
742
755
|
});
|
|
743
756
|
|
|
744
|
-
//# sourceMappingURL=IndexerBaseClient-
|
|
757
|
+
//# sourceMappingURL=IndexerBaseClient-DxlRS6pt.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexerBaseClient-DxlRS6pt.cjs","names":["mapIndexerEvent","mapIndexerFundingRate","mapIndexerFundingRateHistory","mapIndexerPortfolio","mapIndexerPerpPrices","mapIndexerCandlesticks","mapIndexerServerProduct","mapIndexerEventWithTx","mapIndexerOrder","mapIndexerMatchEventBalances","mapIndexerProductPayment","mapSnapshotsIntervalToServerParams","mapIndexerMarketSnapshot","mapIndexerMakerStatistics","mapIndexerLeaderboardPosition","mapIndexerLeaderboardRegistration","mapIndexerLeaderboardContest","getValidatedHex","mapIndexerNlpSnapshot","mapIndexerV2Ticker","mapIndexerV2Symbols","WalletNotProvidedError","isIndexerServerFailureResponse","IndexerServerFailureError"],"sources":["../src/IndexerBaseClient.ts"],"sourcesContent":["import {\n EIP712LeaderboardAuthenticationParams,\n EIP712LeaderboardAuthenticationValues,\n EIP712SocialAuthenticationParams,\n getDefaultRecvTime,\n getNadoClientTypeHeaders,\n getNadoEIP712Values,\n getSignedTransactionRequest,\n getValidatedAddress,\n getValidatedHex,\n mapValues,\n nowInSeconds,\n removeDecimals,\n SignableRequestType,\n SignableRequestTypeToParams,\n SignedTx,\n subaccountFromHex,\n subaccountToHex,\n toBigInt,\n toBigNumber,\n toIntegerString,\n WalletClientWithAccount,\n WalletNotProvidedError,\n} from '@nadohq/shared';\nimport axios, { AxiosInstance, AxiosResponse } from 'axios';\nimport {\n mapIndexerCandlesticks,\n mapIndexerEvent,\n mapIndexerEventWithTx,\n mapIndexerFundingRate,\n mapIndexerFundingRateHistory,\n mapIndexerLeaderboardContest,\n mapIndexerLeaderboardPosition,\n mapIndexerLeaderboardRegistration,\n mapIndexerMakerStatistics,\n mapIndexerMarketSnapshot,\n mapIndexerMatchEventBalances,\n mapIndexerNlpSnapshot,\n mapIndexerOrder,\n mapIndexerPerpPrices,\n mapIndexerPortfolio,\n mapIndexerProductPayment,\n mapIndexerServerProduct,\n mapIndexerV2Symbols,\n mapIndexerV2Ticker,\n mapSnapshotsIntervalToServerParams,\n} from './dataMappers';\nimport {\n ConnectSocialAccountParams,\n ConnectSocialAccountResponse,\n GetIndexerBacklogResponse,\n GetIndexerCandlesticksParams,\n GetIndexerCandlesticksResponse,\n GetIndexerCashIncentivesParams,\n GetIndexerCashIncentivesResponse,\n GetIndexerEdgeCandlesticksParams,\n GetIndexerEdgeCandlesticksResponse,\n GetIndexerEdgeMarketSnapshotResponse,\n GetIndexerEdgeMarketSnapshotsParams,\n GetIndexerEventsParams,\n GetIndexerEventsResponse,\n GetIndexerFastWithdrawalSignatureParams,\n GetIndexerFastWithdrawalSignatureResponse,\n GetIndexerFundingRateHistoryParams,\n GetIndexerFundingRateHistoryResponse,\n GetIndexerFundingRateParams,\n GetIndexerFundingRateResponse,\n GetIndexerInterestFundingPaymentsParams,\n GetIndexerInterestFundingPaymentsResponse,\n GetIndexerLeaderboardContestsParams,\n GetIndexerLeaderboardContestsResponse,\n GetIndexerLeaderboardParams,\n GetIndexerLeaderboardParticipantParams,\n GetIndexerLeaderboardParticipantResponse,\n GetIndexerLeaderboardRegistrationsParams,\n GetIndexerLeaderboardRegistrationsResponse,\n GetIndexerLeaderboardResponse,\n GetIndexerLinkedSignerParams,\n GetIndexerLinkedSignerResponse,\n GetIndexerMakerStatisticsParams,\n GetIndexerMakerStatisticsResponse,\n GetIndexerMarketSnapshotsParams,\n GetIndexerMarketSnapshotsResponse,\n GetIndexerMatchEventsParams,\n GetIndexerMatchEventsResponse,\n GetIndexerMultiProductFundingRatesParams,\n GetIndexerMultiProductFundingRatesResponse,\n GetIndexerMultiProductPerpPricesParams,\n GetIndexerMultiProductPerpPricesResponse,\n GetIndexerMultiProductSnapshotsParams,\n GetIndexerMultiProductSnapshotsResponse,\n GetIndexerMultiSubaccountSnapshotsParams,\n GetIndexerMultiSubaccountSnapshotsResponse,\n GetIndexerNlpSnapshotsParams,\n GetIndexerNlpSnapshotsResponse,\n GetIndexerOraclePricesParams,\n GetIndexerOraclePricesResponse,\n GetIndexerOrdersParams,\n GetIndexerOrdersResponse,\n GetIndexerPerpPricesParams,\n GetIndexerPerpPricesResponse,\n GetIndexerPointsParams,\n GetIndexerPointsResponse,\n GetIndexerPortfolioParams,\n GetIndexerPortfolioResponse,\n GetIndexerPrivateAlphaChoiceParams,\n GetIndexerPrivateAlphaChoiceResponse,\n GetIndexerProductSnapshotsParams,\n GetIndexerProductSnapshotsResponse,\n GetIndexerQuotePriceResponse,\n GetIndexerReferralCodeParams,\n GetIndexerReferralCodeResponse,\n GetIndexerSubaccountDDAParams,\n GetIndexerSubaccountDDAResponse,\n GetIndexerV2SymbolsParams,\n GetIndexerV2SymbolsResponse,\n GetIndexerV2TickersParams,\n GetIndexerV2TickersResponse,\n GetIndexerXPointsParams,\n GetIndexerXPointsResponse,\n IndexerEventWithTx,\n IndexerMatchEvent,\n IndexerOraclePrice,\n IndexerServerEventsParams,\n IndexerServerFailureError,\n IndexerServerQueryRequestByType,\n IndexerServerQueryRequestType,\n IndexerServerQueryResponseByType,\n IndexerServerV2SymbolsResponse,\n IndexerServerV2TickersResponse,\n IndexerSnapshotBalance,\n IndexerSubaccountSnapshot,\n isIndexerServerFailureResponse,\n ListIndexerSocialAccountsParams,\n ListIndexerSocialAccountsResponse,\n ListIndexerSubaccountsParams,\n ListIndexerSubaccountsResponse,\n RegisterLeaderboardParams,\n RegisterLeaderboardResponse,\n RevokeSocialAccountParams,\n RevokeSocialAccountResponse,\n} from './types';\n\nexport interface IndexerClientOpts {\n // Server base URL, without a version segment (ex. `https://archive.prod.nado.xyz`)\n url: string;\n // Wallet Client for EIP712 signing\n walletClient?: WalletClientWithAccount;\n // Linked signer registered through the engine, if provided, execute requests will use this signer\n linkedSignerWalletClient?: WalletClientWithAccount;\n // If provided, identifies the calling client, sent as a header with every request\n clientType?: string;\n}\n\ntype IndexerQueryRequestBody = Partial<IndexerServerQueryRequestByType>;\n\n/**\n * Base client for all indexer requests\n */\nexport class IndexerBaseClient {\n readonly opts: IndexerClientOpts;\n readonly v1Url: string;\n readonly v2Url: string;\n readonly rewardsUrl: string;\n readonly axiosInstance: AxiosInstance;\n\n constructor(opts: IndexerClientOpts) {\n this.opts = opts;\n this.axiosInstance = axios.create({\n withCredentials: true,\n // We have custom logic to validate response status and create an appropriate error\n validateStatus: () => true,\n headers: getNadoClientTypeHeaders(opts.clientType),\n });\n this.v1Url = `${opts.url}/v1`;\n this.v2Url = `${opts.url}/v2`;\n this.rewardsUrl = `${opts.url}/rewards/v1`;\n }\n\n /**\n * Sets the linked signer for execute requests\n *\n * @param linkedSignerWalletClient The linkedSigner to use for all signatures. Set to null to revert to the chain signer\n */\n public setLinkedSigner(\n linkedSignerWalletClient: WalletClientWithAccount | null,\n ) {\n this.opts.linkedSignerWalletClient = linkedSignerWalletClient ?? undefined;\n }\n\n /**\n * List all subaccounts\n *\n * @param params\n */\n async listSubaccounts(\n params: ListIndexerSubaccountsParams,\n ): Promise<ListIndexerSubaccountsResponse> {\n const baseResponse = await this.query('subaccounts', params);\n\n return baseResponse.subaccounts.map((item) => {\n const subaccount = subaccountFromHex(item.subaccount);\n return {\n hexId: item.subaccount,\n createdAt: Number(item.created_at),\n isolated: item.isolated,\n ...subaccount,\n };\n });\n }\n\n /**\n * Retrieve snapshots of multiple subaccounts at multiple points in time.\n * Each snapshot is a view of the subaccount's balances at this point in time, with tracked variables for interest, funding, etc.\n *\n * @param params\n */\n async getMultiSubaccountSnapshots(\n params: GetIndexerMultiSubaccountSnapshotsParams,\n ): Promise<GetIndexerMultiSubaccountSnapshotsResponse> {\n const subaccountHexIds = params.subaccounts.map(\n ({ subaccountOwner, subaccountName }) =>\n subaccountToHex({\n subaccountOwner,\n subaccountName,\n }),\n );\n\n const baseResponse = await this.query('account_snapshots', {\n subaccounts: subaccountHexIds,\n timestamps: params.timestamps,\n isolated: params.isolated,\n });\n\n const snapshotsBySubaccount = mapValues(\n baseResponse.snapshots,\n (balanceSnapshots) => {\n const snapshotByTimestamp: Record<string, IndexerSubaccountSnapshot> =\n {};\n\n Object.entries(balanceSnapshots).forEach(([timestamp, events]) => {\n const balances: IndexerSnapshotBalance[] =\n events.map(mapIndexerEvent);\n\n snapshotByTimestamp[timestamp] = {\n timestamp: toBigNumber(timestamp),\n balances,\n };\n });\n\n return snapshotByTimestamp;\n },\n );\n\n return {\n subaccountHexIds,\n snapshots: snapshotsBySubaccount,\n };\n }\n\n /**\n * Retrieves referral code for an address\n *\n * @param params\n */\n async getReferralCode(\n params: GetIndexerReferralCodeParams,\n ): Promise<GetIndexerReferralCodeResponse> {\n const baseResponse = await this.query('referral_code', {\n subaccount: subaccountToHex({\n subaccountOwner: params.subaccount.subaccountOwner,\n subaccountName: params.subaccount.subaccountName,\n }),\n });\n\n return {\n referralCode: baseResponse.referral_code,\n };\n }\n\n /**\n * Retrieves funding rate for a product, where 1 = 100%\n * @param params\n */\n async getFundingRate(\n params: GetIndexerFundingRateParams,\n ): Promise<GetIndexerFundingRateResponse> {\n const baseResponse = await this.query('funding_rate', {\n product_id: params.productId,\n });\n\n return mapIndexerFundingRate(baseResponse);\n }\n\n /**\n * Retrieves funding rate for multiple products, where 1 = 100%\n * @param params\n */\n async getMultiProductFundingRates(\n params: GetIndexerMultiProductFundingRatesParams,\n ): Promise<GetIndexerMultiProductFundingRatesResponse> {\n const baseResponse = await this.query('funding_rates', {\n product_ids: params.productIds,\n });\n\n return mapValues(baseResponse, mapIndexerFundingRate);\n }\n\n /**\n * Retrieves a perp product's historical (realized hourly) funding rates,\n * ordered ascending by timestamp, where 1 = 100%.\n *\n * To paginate forward, pass the last entry's `timestamp + 1` as the next\n * request's `startTimeInclusive`.\n *\n * @param params\n */\n async getFundingRateHistory(\n params: GetIndexerFundingRateHistoryParams,\n ): Promise<GetIndexerFundingRateHistoryResponse> {\n const baseResponse = await this.query('funding_rate_history', {\n product_id: params.productId,\n start_time: params.startTimeInclusive,\n end_time: params.endTimeInclusive,\n limit: params.limit,\n });\n\n return baseResponse.funding_rates.map(mapIndexerFundingRateHistory);\n }\n\n /**\n * Retrieves a subaccount's account-value, PnL, traded-volume, average-trade-size,\n * and markets-traded history across all timeframes, keyed by period. The value\n * aggregates the cross-margin account plus every isolated child; the queried\n * subaccount must be cross-margin.\n *\n * Points are downsampled per timeframe, so the most recent point can be up to\n * ~20 minutes stale. For the exact live value, use the engine client's\n * `getSubaccountSummary` query instead.\n *\n * @param params\n */\n async getPortfolio(\n params: GetIndexerPortfolioParams,\n ): Promise<GetIndexerPortfolioResponse> {\n const baseResponse = await this.query('portfolio', {\n subaccount: subaccountToHex(params.subaccount),\n });\n\n return mapIndexerPortfolio(baseResponse);\n }\n\n /**\n * Retrieves latest mark/index price for a perp product\n * @param params\n */\n async getPerpPrices(\n params: GetIndexerPerpPricesParams,\n ): Promise<GetIndexerPerpPricesResponse> {\n const baseResponse = await this.query('price', {\n product_id: params.productId,\n });\n\n return mapIndexerPerpPrices(baseResponse);\n }\n\n /**\n * Retrieves latest mark/index price for multiple perp products\n * @param params\n */\n async getMultiProductPerpPrices(\n params: GetIndexerMultiProductPerpPricesParams,\n ): Promise<GetIndexerMultiProductPerpPricesResponse> {\n const baseResponse = await this.query('perp_prices', {\n product_ids: params.productIds,\n });\n\n return mapValues(baseResponse, mapIndexerPerpPrices);\n }\n\n /**\n * Retrieves latest oracle prices for provided products\n * @param params\n */\n async getOraclePrices(\n params: GetIndexerOraclePricesParams,\n ): Promise<GetIndexerOraclePricesResponse> {\n const baseResponse = await this.query('oracle_price', {\n product_ids: params.productIds,\n });\n\n return baseResponse.prices.map((price): IndexerOraclePrice => {\n return {\n oraclePrice: removeDecimals(price.oracle_price_x18),\n updateTime: toBigNumber(price.update_time),\n productId: price.product_id,\n };\n });\n }\n\n /**\n * Retrieves candlesticks for a product\n * @param params\n */\n async getCandlesticks(\n params: GetIndexerCandlesticksParams,\n ): Promise<GetIndexerCandlesticksResponse> {\n const baseResponse = await this.query('candlesticks', {\n product_id: params.productId,\n max_time: params.maxTimeInclusive,\n limit: params.limit,\n granularity: params.period,\n });\n\n return baseResponse.candlesticks.map(mapIndexerCandlesticks);\n }\n\n /**\n * Retrieves candlesticks for a product from Edge\n * @param params\n */\n async getEdgeCandlesticks(\n params: GetIndexerEdgeCandlesticksParams,\n ): Promise<GetIndexerEdgeCandlesticksResponse> {\n const baseResponse = await this.query('edge_candlesticks', {\n product_id: params.productId,\n max_time: params.maxTimeInclusive,\n limit: params.limit,\n granularity: params.period,\n });\n\n return baseResponse.candlesticks.map(mapIndexerCandlesticks);\n }\n\n /**\n * Retrieves historical snapshots for a product\n * @param params\n */\n async getProductSnapshots(\n params: GetIndexerProductSnapshotsParams,\n ): Promise<GetIndexerProductSnapshotsResponse> {\n const baseResponse = await this.query('products', {\n product_id: params.productId,\n max_time: params.maxTimestampInclusive,\n limit: params.limit,\n idx: params.startCursor,\n });\n\n return baseResponse.products.map((product) => {\n return {\n ...mapIndexerServerProduct(product.product),\n submissionIndex: product.submission_idx,\n };\n });\n }\n\n /**\n * Retrieves historical snapshots for multiple products\n * @param params\n */\n async getMultiProductSnapshots(\n params: GetIndexerMultiProductSnapshotsParams,\n ): Promise<GetIndexerMultiProductSnapshotsResponse> {\n const timestampToProductsMap = await this.query('product_snapshots', {\n product_ids: params.productIds,\n max_time: params.maxTimestampInclusive ?? [nowInSeconds()],\n });\n\n return mapValues(timestampToProductsMap, (productIdToProduct) => {\n return mapValues(productIdToProduct, (indexerProduct) => {\n return {\n ...mapIndexerServerProduct(indexerProduct.product),\n submissionIndex: indexerProduct.submission_idx,\n };\n });\n });\n }\n\n /**\n * Retrieves historical events\n *\n * @param params\n */\n async getEvents(\n params: GetIndexerEventsParams,\n ): Promise<GetIndexerEventsResponse> {\n const serverLimit = ((): IndexerServerEventsParams['limit'] | undefined => {\n if (!params.limit) {\n return;\n }\n\n if (params.limit.type === 'events') {\n return {\n raw: params.limit.value,\n };\n }\n return {\n txs: params.limit.value,\n };\n })();\n\n const baseResponse = await this.query('events', {\n subaccounts: params.subaccounts?.map((subaccount) =>\n subaccountToHex({\n subaccountOwner: subaccount.subaccountOwner,\n subaccountName: subaccount.subaccountName,\n }),\n ),\n product_ids: params.productIds,\n isolated: params.isolated,\n event_types: params.eventTypes,\n max_time: params.maxTimestampInclusive,\n desc: params.desc,\n limit: serverLimit,\n idx: params.startCursor,\n });\n\n // Keep track of the last tx index, and go to the next one if the submission_idx for the currently processed event does not match\n // txs are ordered the same as events, so this should be correct\n let lastTxIdx = 0;\n return baseResponse.events.map((event): IndexerEventWithTx => {\n if (baseResponse.txs[lastTxIdx].submission_idx !== event.submission_idx) {\n lastTxIdx += 1;\n }\n const tx = baseResponse.txs[lastTxIdx];\n return mapIndexerEventWithTx(event, tx);\n });\n }\n\n /**\n * Retrieves historical orders\n * @param params\n */\n async getOrders(\n params: GetIndexerOrdersParams,\n ): Promise<GetIndexerOrdersResponse> {\n const baseResponse = await this.query('orders', {\n subaccounts: params?.subaccounts?.map((subaccount) =>\n subaccountToHex({\n subaccountOwner: subaccount.subaccountOwner,\n subaccountName: subaccount.subaccountName,\n }),\n ),\n product_ids: params.productIds,\n trigger_types: params.triggerTypes,\n isolated: params.isolated,\n digests: params.digests,\n max_time: params.maxTimestampInclusive,\n limit: params.limit,\n idx: params.startCursor,\n });\n\n return baseResponse.orders.map(mapIndexerOrder);\n }\n\n /**\n * Gets match order events, this will return the same events as the events query, but with additional information\n * to identify the order that was matched\n *\n * @param params\n */\n async getMatchEvents(\n params: GetIndexerMatchEventsParams,\n ): Promise<GetIndexerMatchEventsResponse> {\n const baseResponse = await this.query('matches', {\n subaccounts: params?.subaccounts?.map((subaccount) =>\n subaccountToHex({\n subaccountOwner: subaccount.subaccountOwner,\n subaccountName: subaccount.subaccountName,\n }),\n ),\n product_ids: params.productIds,\n isolated: params.isolated,\n max_time: params.maxTimestampInclusive,\n limit: params.limit,\n idx: params.startCursor,\n });\n\n // Same as logic in `getEvents`\n let lastTxIdx = 0;\n return baseResponse.matches.map((matchEvent): IndexerMatchEvent => {\n if (\n baseResponse.txs[lastTxIdx].submission_idx !== matchEvent.submission_idx\n ) {\n lastTxIdx += 1;\n }\n const { tx, timestamp } = baseResponse.txs[lastTxIdx];\n\n // We use this to derive the product ID for the match\n const postBalances = mapIndexerMatchEventBalances(\n matchEvent.post_balance,\n );\n\n return {\n productId: postBalances.base.productId,\n isolated: matchEvent.isolated,\n totalFee: toBigNumber(matchEvent.fee),\n sequencerFee: toBigNumber(matchEvent.sequencer_fee),\n builderFee: toBigNumber(matchEvent.builder_fee),\n baseFilled: toBigNumber(matchEvent.base_filled),\n quoteFilled: toBigNumber(matchEvent.quote_filled),\n cumulativeFee: toBigNumber(matchEvent.cumulative_fee),\n cumulativeBaseFilled: toBigNumber(matchEvent.cumulative_base_filled),\n cumulativeQuoteFilled: toBigNumber(matchEvent.cumulative_quote_filled),\n digest: matchEvent.digest,\n order: matchEvent.order,\n submissionIndex: matchEvent.submission_idx,\n timestamp: toBigNumber(timestamp),\n preEventTrackedVars: {\n netEntryUnrealized: toBigNumber(matchEvent.net_entry_unrealized),\n netEntryCumulative: toBigNumber(matchEvent.net_entry_cumulative),\n },\n preBalances: mapIndexerMatchEventBalances(matchEvent.pre_balance),\n postBalances,\n tx,\n isTaker: matchEvent.is_taker,\n realizedPnl: toBigNumber(matchEvent.realized_pnl),\n closedAmount: toBigNumber(matchEvent.closed_amount),\n closedNetEntry: toBigNumber(matchEvent.closed_net_entry),\n margin: matchEvent.margin ? toBigNumber(matchEvent.margin) : null,\n ...subaccountFromHex(matchEvent.order.sender),\n };\n });\n }\n\n /**\n * Retrieves historical funding & interest payments.\n * NOTE: `limit` is an upperbound. If a user changes position size such that his position is 0 during each funding/interest tick,\n * then the indexer will return fewer than `limit` results per page. However, more events can be present. This means that\n * there isn't a reliable way to determine whether there is a next page. We just need to keep paginating until the next cursor is null.\n *\n * @param params\n */\n async getInterestFundingPayments(\n params: GetIndexerInterestFundingPaymentsParams,\n ): Promise<GetIndexerInterestFundingPaymentsResponse> {\n const baseResponse = await this.query('interest_and_funding', {\n subaccount: subaccountToHex({\n subaccountOwner: params.subaccount.subaccountOwner,\n subaccountName: params.subaccount.subaccountName,\n }),\n product_ids: params.productIds,\n max_time: params.maxTimestampInclusive,\n limit: params.limit,\n max_idx: params.startCursor,\n });\n\n return {\n fundingPayments: baseResponse.funding_payments.map(\n mapIndexerProductPayment,\n ),\n interestPayments: baseResponse.interest_payments.map(\n mapIndexerProductPayment,\n ),\n nextCursor: baseResponse.next_idx,\n };\n }\n\n /**\n * Gets quote (USDT) price in terms of USD\n */\n async getQuotePrice(): Promise<GetIndexerQuotePriceResponse> {\n const baseResponse = await this.query('quote_price', {});\n return {\n price: removeDecimals(baseResponse.price_x18),\n };\n }\n\n /**\n * Fetches currently registered linked signer with the remaining txs allowed for the subaccount\n */\n async getLinkedSignerWithRateLimit(\n params: GetIndexerLinkedSignerParams,\n ): Promise<GetIndexerLinkedSignerResponse> {\n const baseResponse = await this.query('linked_signer_rate_limit', {\n subaccount: subaccountToHex(params.subaccount),\n });\n return {\n totalTxLimit: toBigNumber(baseResponse.total_tx_limit),\n remainingTxs: toBigNumber(baseResponse.remaining_tx),\n signer: baseResponse.signer,\n waitTimeUntilNextTx: toBigNumber(baseResponse.wait_time),\n };\n }\n\n /**\n * Retrieve historical market snapshots\n * @param params\n */\n async getMarketSnapshots(\n params: GetIndexerMarketSnapshotsParams,\n ): Promise<GetIndexerMarketSnapshotsResponse> {\n const baseResponse = await this.query('market_snapshots', {\n interval: mapSnapshotsIntervalToServerParams(params),\n product_ids: params.productIds,\n });\n\n return baseResponse.snapshots.map(mapIndexerMarketSnapshot);\n }\n\n /**\n * Retrieve historical market snapshots from Edge\n * @param params\n */\n async getEdgeMarketSnapshots(\n params: GetIndexerEdgeMarketSnapshotsParams,\n ): Promise<GetIndexerEdgeMarketSnapshotResponse> {\n const baseResponse = await this.query('edge_market_snapshots', {\n interval: mapSnapshotsIntervalToServerParams(params),\n });\n\n return mapValues(baseResponse.snapshots, (snapshots) =>\n snapshots.map(mapIndexerMarketSnapshot),\n );\n }\n\n /**\n * Retrieve maker statistics for a given epoch\n *\n * @param params\n */\n async getMakerStatistics(\n params: GetIndexerMakerStatisticsParams,\n ): Promise<GetIndexerMakerStatisticsResponse> {\n const baseResponse = await this.query('maker_statistics', {\n product_id: params.productId,\n epoch: params.epoch,\n interval: params.interval,\n });\n\n return {\n rewardCoefficient: toBigNumber(baseResponse.reward_coefficient),\n makers: baseResponse.makers.map(mapIndexerMakerStatistics),\n };\n }\n\n /**\n * Retrieve leaderboard stats for a given contest\n *\n * @param params\n */\n async getLeaderboard(\n params: GetIndexerLeaderboardParams,\n ): Promise<GetIndexerLeaderboardResponse> {\n const baseResponse = await this.rewardsQuery('leaderboard', {\n contest_id: params.contestId,\n rank_type: params.rankType,\n start: params.startCursor,\n limit: params.limit,\n order: params.order,\n });\n\n return {\n participants: baseResponse.positions.map(mapIndexerLeaderboardPosition),\n };\n }\n\n /**\n * Retrieve leaderboard ranking of a subaccount on a given contest\n *\n * @param params\n */\n async getLeaderboardParticipant(\n params: GetIndexerLeaderboardParticipantParams,\n ): Promise<GetIndexerLeaderboardParticipantResponse> {\n const baseResponse = await this.rewardsQuery('leaderboard_rank', {\n subaccount: subaccountToHex(params.subaccount),\n contest_ids: params.contestIds,\n });\n\n return {\n participant: mapValues(baseResponse.positions, (position) =>\n mapIndexerLeaderboardPosition(position),\n ),\n };\n }\n\n /**\n * Registers a subaccount for one or more contests. Requires EIP-712 signing.\n *\n * @param params - Registration parameters including contest IDs and signing config.\n */\n async registerLeaderboard(\n params: RegisterLeaderboardParams,\n ): Promise<RegisterLeaderboardResponse> {\n const signatureParams: EIP712LeaderboardAuthenticationParams = {\n expiration: toIntegerString(params.recvTime ?? getDefaultRecvTime()),\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n contestIds: params.contestIds,\n };\n\n const tx = getNadoEIP712Values(\n 'leaderboard_authentication',\n signatureParams,\n );\n const signature = await this.sign(\n 'leaderboard_authentication',\n params.verifyingAddr,\n params.chainId,\n signatureParams,\n );\n\n const updateRegistrationTx: SignedTx<EIP712LeaderboardAuthenticationValues> =\n {\n tx,\n signature,\n };\n\n const baseResponse = await this.rewardsQuery('leaderboard_register', {\n update_registration: updateRegistrationTx,\n });\n\n return {\n registrations: baseResponse.registrations.map(\n mapIndexerLeaderboardRegistration,\n ),\n };\n }\n\n /**\n * Retrieves contest registrations for a subaccount. Supports batch lookup\n * across multiple contests with an optional active filter.\n *\n * @param params - Query parameters including subaccount and contest IDs.\n */\n async getLeaderboardRegistrations(\n params: GetIndexerLeaderboardRegistrationsParams,\n ): Promise<GetIndexerLeaderboardRegistrationsResponse> {\n const baseResponse = await this.rewardsQuery('leaderboard_registrations', {\n subaccount: subaccountToHex(params.subaccount),\n contest_ids: params.contestIds,\n active: params.active,\n });\n\n return {\n registrations: baseResponse.registrations.map(\n mapIndexerLeaderboardRegistration,\n ),\n };\n }\n\n /**\n * Retrieve metadata of provided leaderboard contests\n *\n * @param params\n */\n async getLeaderboardContests(\n params: GetIndexerLeaderboardContestsParams,\n ): Promise<GetIndexerLeaderboardContestsResponse> {\n const baseResponse = await this.rewardsQuery('leaderboard_contests', {\n contest_ids: params.contestIds,\n active: params.active,\n });\n\n return {\n contests: baseResponse.contests.map(mapIndexerLeaderboardContest),\n };\n }\n\n /**\n * Retrieve signature and tx to submit a fast withdrawal\n *\n * @param params\n */\n async getFastWithdrawalSignature(\n params: GetIndexerFastWithdrawalSignatureParams,\n ): Promise<GetIndexerFastWithdrawalSignatureResponse> {\n const baseResponse = await this.query('fast_withdrawal_signature', params);\n return {\n idx: toBigInt(baseResponse.idx),\n tx: baseResponse.tx,\n txV2: baseResponse.tx_v2,\n txBytes: getValidatedHex(baseResponse.tx_bytes),\n signatures: baseResponse.signatures.map(getValidatedHex),\n };\n }\n\n async getNlpSnapshots(\n params: GetIndexerNlpSnapshotsParams,\n ): Promise<GetIndexerNlpSnapshotsResponse> {\n const baseResponse = await this.query('nlp_snapshots', {\n interval: {\n count: params.limit,\n max_time: params.maxTimeInclusive\n ? toIntegerString(params.maxTimeInclusive)\n : undefined,\n granularity: params.granularity,\n },\n });\n\n return {\n snapshots: baseResponse.snapshots.map(mapIndexerNlpSnapshot),\n };\n }\n\n /**\n * Retrieves the subaccount's DDA (Direct Deposit Address)\n * @param params\n */\n async getSubaccountDDA(\n params: GetIndexerSubaccountDDAParams,\n ): Promise<GetIndexerSubaccountDDAResponse> {\n const baseResponse = await this.query('direct_deposit_address', {\n subaccount: subaccountToHex(params.subaccount),\n });\n\n return {\n address: getValidatedAddress(baseResponse.v1_address),\n };\n }\n\n async getSequencerBacklog(): Promise<GetIndexerBacklogResponse> {\n const baseResponse = await this.query('backlog', {});\n\n return {\n totalTxs: toBigNumber(baseResponse.total_txs),\n totalSubmissions: toBigNumber(baseResponse.total_submissions),\n backlogSize: toBigNumber(baseResponse.backlog_size),\n updatedAt: toBigNumber(baseResponse.updated_at),\n backlogEtaInSeconds: baseResponse.backlog_eta_in_seconds\n ? toBigNumber(baseResponse.backlog_eta_in_seconds)\n : null,\n txsPerSecond: baseResponse.txs_per_second\n ? toBigNumber(baseResponse.txs_per_second)\n : null,\n };\n }\n\n /**\n * Retrieves private alpha choice information for a given address\n * @param params\n */\n async getPrivateAlphaChoice(\n params: GetIndexerPrivateAlphaChoiceParams,\n ): Promise<GetIndexerPrivateAlphaChoiceResponse> {\n const baseResponse = await this.rewardsQuery('private_alpha_choice', {\n address: params.address,\n });\n\n return {\n points: toBigNumber(baseResponse.points),\n feeRefund: toBigNumber(baseResponse.fee_refund),\n nftEligibility: baseResponse.nft_eligibility,\n };\n }\n\n /**\n * Retrieves points information for a given address, including points per epoch and all-time points\n * @param params\n */\n async getPoints(\n params: GetIndexerPointsParams,\n ): Promise<GetIndexerPointsResponse> {\n const baseResponse = await this.rewardsQuery('nado_points', {\n address: params.address,\n });\n\n return {\n pointsPerEpoch: baseResponse.points_per_epoch.map((epoch) => ({\n epoch: epoch.epoch,\n description: epoch.description,\n startTime: toBigNumber(epoch.start_time),\n endTime: toBigNumber(epoch.end_time),\n totalPoints: toBigNumber(epoch.total_points),\n points: toBigNumber(epoch.points),\n rank: epoch.rank,\n tier: epoch.tier,\n })),\n allTimePoints: {\n points: toBigNumber(baseResponse.all_time_points.points),\n rank: baseResponse.all_time_points.rank,\n tier: baseResponse.all_time_points.tier,\n },\n };\n }\n\n /**\n * Retrieves xPoints information (Nado x xStocks points program) for a given address,\n * including per-epoch points, all-time points, and per-quest breakdowns.\n * @param params\n */\n async getXPoints(\n params: GetIndexerXPointsParams,\n ): Promise<GetIndexerXPointsResponse> {\n const baseResponse = await this.rewardsQuery('nado_xpoints', {\n address: params.address,\n });\n\n const mapQuests = (\n quests: typeof baseResponse.all_time_points.quests,\n ): GetIndexerXPointsResponse['allTimePoints']['quests'] =>\n quests.map((quest) => ({\n questType: quest.quest_type,\n points: toBigNumber(quest.points),\n }));\n\n return {\n pointsPerEpoch: baseResponse.points_per_epoch.map((epoch) => ({\n epoch: epoch.epoch,\n description: epoch.description,\n startTime: toBigNumber(epoch.start_time),\n endTime: toBigNumber(epoch.end_time),\n totalPoints: toBigNumber(epoch.total_points),\n rank: epoch.rank,\n quests: mapQuests(epoch.quests),\n })),\n allTimePoints: {\n totalPoints: toBigNumber(baseResponse.all_time_points.total_points),\n rank: baseResponse.all_time_points.rank,\n quests: mapQuests(baseResponse.all_time_points.quests),\n },\n };\n }\n\n /**\n * Retrieves cash incentives information for a given wallet address: per-event platform volume,\n * unlocked rewards, and `wallet.claim`, which carries the claim status plus the merkle proof when\n * that status is `claimable`.\n * @param params\n */\n async getCashIncentives(\n params: GetIndexerCashIncentivesParams,\n ): Promise<GetIndexerCashIncentivesResponse> {\n const baseResponse = await this.rewardsQuery('cash_incentives', {\n wallet_address: params.address,\n });\n\n return {\n events: baseResponse.events.map((event) => ({\n metadata: {\n eventId: event.metadata.event_id,\n description: event.metadata.description,\n epochStart: toBigNumber(event.metadata.epoch_start),\n epochEnd: toBigNumber(event.metadata.epoch_end),\n maxVolume: removeDecimals(event.metadata.max_volume),\n maxReward: removeDecimals(event.metadata.max_reward),\n minVolume: removeDecimals(event.metadata.min_volume),\n minReward: removeDecimals(event.metadata.min_reward),\n },\n platform: {\n platformVolume: removeDecimals(event.platform.platform_volume),\n unlockedReward: removeDecimals(event.platform.unlocked_reward),\n },\n wallet: {\n reward: removeDecimals(event.wallet.reward),\n claim:\n event.wallet.claim.status === 'claimable'\n ? {\n status: 'claimable',\n airdropAddress: getValidatedAddress(\n event.wallet.claim.airdrop_address,\n ),\n week: event.wallet.claim.week,\n // Kept in raw token units so it can be passed to the airdrop contract unchanged\n totalAmount: toBigNumber(event.wallet.claim.total_amount),\n proof: event.wallet.claim.proof.map(getValidatedHex),\n }\n : { status: event.wallet.claim.status },\n },\n })),\n walletSummary: {\n totalReward: removeDecimals(baseResponse.wallet_summary.total_reward),\n claimableReward: removeDecimals(\n baseResponse.wallet_summary.claimable_reward,\n ),\n },\n };\n }\n\n /**\n * Initiates a social account connection flow. Returns a URL the user must visit to complete the OAuth flow.\n * Requires EIP-712 signing.\n *\n * @param params - Connection parameters including provider and signing config.\n */\n async connectSocialAccount(\n params: ConnectSocialAccountParams,\n ): Promise<ConnectSocialAccountResponse> {\n const signatureParams: EIP712SocialAuthenticationParams = {\n expiration: toIntegerString(params.recvTime ?? getDefaultRecvTime()),\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n provider: params.provider,\n };\n\n const tx = getNadoEIP712Values('social_authentication', signatureParams);\n const signature = await this.sign(\n 'social_authentication',\n params.verifyingAddr,\n params.chainId,\n signatureParams,\n );\n\n const baseResponse = await this.rewardsQuery('social_connect', {\n update_social_account: { tx, signature },\n });\n\n return { url: baseResponse.url };\n }\n\n /**\n * Lists linked social accounts for a given address.\n *\n * @param params - Query parameters including the wallet address.\n */\n async listSocialAccounts(\n params: ListIndexerSocialAccountsParams,\n ): Promise<ListIndexerSocialAccountsResponse> {\n const baseResponse = await this.rewardsQuery('list_social_accounts', {\n address: params.address,\n });\n\n return {\n accounts: baseResponse.accounts.map((a) => ({\n provider: a.provider,\n username: a.username,\n displayName: a.display_name,\n profileImageUrl: a.profile_image_url,\n })),\n };\n }\n\n /**\n * Revokes a linked social account. Requires EIP-712 signing.\n *\n * @param params - Revocation parameters including provider and signing config.\n */\n async revokeSocialAccount(\n params: RevokeSocialAccountParams,\n ): Promise<RevokeSocialAccountResponse> {\n const signatureParams: EIP712SocialAuthenticationParams = {\n expiration: toIntegerString(params.recvTime ?? getDefaultRecvTime()),\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n provider: params.provider,\n };\n\n const tx = getNadoEIP712Values('social_authentication', signatureParams);\n const signature = await this.sign(\n 'social_authentication',\n params.verifyingAddr,\n params.chainId,\n signatureParams,\n );\n\n const baseResponse = await this.rewardsQuery('revoke_social_account', {\n update_social_account: { tx, signature },\n });\n\n return {\n accounts: baseResponse.accounts.map((a) => ({\n provider: a.provider,\n username: a.username,\n displayName: a.display_name,\n profileImageUrl: a.profile_image_url,\n })),\n };\n }\n\n /**\n * Get tickers from the v2 indexer endpoint\n * @param params\n */\n async getV2Tickers(\n params: GetIndexerV2TickersParams,\n ): Promise<GetIndexerV2TickersResponse> {\n const response =\n await this.axiosInstance.get<IndexerServerV2TickersResponse>(\n `${this.v2Url}/tickers`,\n { params },\n );\n\n this.checkResponseStatus(response);\n\n return mapValues(response.data, mapIndexerV2Ticker);\n }\n\n /**\n * Get symbols with market hours from the v2 indexer endpoint\n * @param params\n */\n async getV2Symbols(\n params?: GetIndexerV2SymbolsParams,\n ): Promise<GetIndexerV2SymbolsResponse> {\n const response =\n await this.axiosInstance.get<IndexerServerV2SymbolsResponse>(\n `${this.v2Url}/symbols`,\n {\n params: {\n product_type: params?.productType,\n product_ids: params?.productIds,\n },\n },\n );\n\n this.checkResponseStatus(response);\n\n return mapValues(response.data, mapIndexerV2Symbols);\n }\n\n protected query<TRequestType extends IndexerServerQueryRequestType>(\n requestType: TRequestType,\n params: IndexerServerQueryRequestByType[TRequestType],\n ): Promise<IndexerServerQueryResponseByType[TRequestType]> {\n return this.queryWithUrl(this.v1Url, requestType, params);\n }\n\n /**\n * Runs a query against the rewards endpoint, which serves leaderboard, points,\n * cash incentives, private alpha, and social account queries\n */\n protected rewardsQuery<TRequestType extends IndexerServerQueryRequestType>(\n requestType: TRequestType,\n params: IndexerServerQueryRequestByType[TRequestType],\n ): Promise<IndexerServerQueryResponseByType[TRequestType]> {\n return this.queryWithUrl(this.rewardsUrl, requestType, params);\n }\n\n private async queryWithUrl<\n TRequestType extends IndexerServerQueryRequestType,\n >(\n url: string,\n requestType: TRequestType,\n params: IndexerServerQueryRequestByType[TRequestType],\n ): Promise<IndexerServerQueryResponseByType[TRequestType]> {\n const reqBody: IndexerQueryRequestBody = {\n [requestType]: params,\n };\n const response = await this.axiosInstance.post<\n IndexerServerQueryResponseByType[TRequestType]\n >(url, reqBody);\n\n this.checkResponseStatus(response);\n\n return response.data;\n }\n\n protected async sign<T extends SignableRequestType>(\n requestType: T,\n verifyingContract: string,\n chainId: number,\n params: SignableRequestTypeToParams[T],\n ) {\n const walletClient =\n this.opts.linkedSignerWalletClient ?? this.opts.walletClient;\n\n if (!walletClient) {\n throw new WalletNotProvidedError();\n }\n\n return getSignedTransactionRequest({\n chainId,\n requestParams: params,\n requestType,\n walletClient,\n verifyingContract,\n });\n }\n\n private checkResponseStatus(response: AxiosResponse) {\n if (isIndexerServerFailureResponse(response.data)) {\n throw new IndexerServerFailureError(response.data, response.status);\n }\n if (response.status !== 200 || !response.data) {\n throw Error(\n `Unexpected response from server: ${response.status} ${response.statusText}`,\n );\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_IndexerBaseClient = require("./IndexerBaseClient-
|
|
2
|
+
const require_IndexerBaseClient = require("./IndexerBaseClient-DxlRS6pt.cjs");
|
|
3
3
|
exports.IndexerBaseClient = require_IndexerBaseClient.IndexerBaseClient;
|
|
@@ -6,16 +6,18 @@ import { AxiosInstance } from "axios";
|
|
|
6
6
|
//#region src/IndexerBaseClient.d.ts
|
|
7
7
|
interface IndexerClientOpts {
|
|
8
8
|
url: string;
|
|
9
|
-
v2Url?: string;
|
|
10
9
|
walletClient?: WalletClientWithAccount;
|
|
11
10
|
linkedSignerWalletClient?: WalletClientWithAccount;
|
|
11
|
+
clientType?: string;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* Base client for all indexer requests
|
|
15
15
|
*/
|
|
16
16
|
declare class IndexerBaseClient {
|
|
17
17
|
readonly opts: IndexerClientOpts;
|
|
18
|
+
readonly v1Url: string;
|
|
18
19
|
readonly v2Url: string;
|
|
20
|
+
readonly rewardsUrl: string;
|
|
19
21
|
readonly axiosInstance: AxiosInstance;
|
|
20
22
|
constructor(opts: IndexerClientOpts);
|
|
21
23
|
/**
|
|
@@ -259,6 +261,12 @@ declare class IndexerBaseClient {
|
|
|
259
261
|
*/
|
|
260
262
|
getV2Symbols(params?: GetIndexerV2SymbolsParams): Promise<GetIndexerV2SymbolsResponse>;
|
|
261
263
|
protected query<TRequestType extends IndexerServerQueryRequestType>(requestType: TRequestType, params: IndexerServerQueryRequestByType[TRequestType]): Promise<IndexerServerQueryResponseByType[TRequestType]>;
|
|
264
|
+
/**
|
|
265
|
+
* Runs a query against the rewards endpoint, which serves leaderboard, points,
|
|
266
|
+
* cash incentives, private alpha, and social account queries
|
|
267
|
+
*/
|
|
268
|
+
protected rewardsQuery<TRequestType extends IndexerServerQueryRequestType>(requestType: TRequestType, params: IndexerServerQueryRequestByType[TRequestType]): Promise<IndexerServerQueryResponseByType[TRequestType]>;
|
|
269
|
+
private queryWithUrl;
|
|
262
270
|
protected sign<T extends SignableRequestType>(requestType: T, verifyingContract: string, chainId: number, params: SignableRequestTypeToParams[T]): Promise<`0x${string}`>;
|
|
263
271
|
private checkResponseStatus;
|
|
264
272
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexerBaseClient.d.cts","names":[],"sources":["../src/src/IndexerBaseClient.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"IndexerBaseClient.d.cts","names":[],"sources":["../src/src/IndexerBaseClient.ts"],"mappings":"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"}
|
|
@@ -6,16 +6,18 @@ import { AxiosInstance } from "axios";
|
|
|
6
6
|
//#region src/IndexerBaseClient.d.ts
|
|
7
7
|
interface IndexerClientOpts {
|
|
8
8
|
url: string;
|
|
9
|
-
v2Url?: string;
|
|
10
9
|
walletClient?: WalletClientWithAccount;
|
|
11
10
|
linkedSignerWalletClient?: WalletClientWithAccount;
|
|
11
|
+
clientType?: string;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* Base client for all indexer requests
|
|
15
15
|
*/
|
|
16
16
|
declare class IndexerBaseClient {
|
|
17
17
|
readonly opts: IndexerClientOpts;
|
|
18
|
+
readonly v1Url: string;
|
|
18
19
|
readonly v2Url: string;
|
|
20
|
+
readonly rewardsUrl: string;
|
|
19
21
|
readonly axiosInstance: AxiosInstance;
|
|
20
22
|
constructor(opts: IndexerClientOpts);
|
|
21
23
|
/**
|
|
@@ -259,6 +261,12 @@ declare class IndexerBaseClient {
|
|
|
259
261
|
*/
|
|
260
262
|
getV2Symbols(params?: GetIndexerV2SymbolsParams): Promise<GetIndexerV2SymbolsResponse>;
|
|
261
263
|
protected query<TRequestType extends IndexerServerQueryRequestType>(requestType: TRequestType, params: IndexerServerQueryRequestByType[TRequestType]): Promise<IndexerServerQueryResponseByType[TRequestType]>;
|
|
264
|
+
/**
|
|
265
|
+
* Runs a query against the rewards endpoint, which serves leaderboard, points,
|
|
266
|
+
* cash incentives, private alpha, and social account queries
|
|
267
|
+
*/
|
|
268
|
+
protected rewardsQuery<TRequestType extends IndexerServerQueryRequestType>(requestType: TRequestType, params: IndexerServerQueryRequestByType[TRequestType]): Promise<IndexerServerQueryResponseByType[TRequestType]>;
|
|
269
|
+
private queryWithUrl;
|
|
262
270
|
protected sign<T extends SignableRequestType>(requestType: T, verifyingContract: string, chainId: number, params: SignableRequestTypeToParams[T]): Promise<`0x${string}`>;
|
|
263
271
|
private checkResponseStatus;
|
|
264
272
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexerBaseClient.d.ts","names":[],"sources":["../src/src/IndexerBaseClient.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"IndexerBaseClient.d.ts","names":[],"sources":["../src/src/IndexerBaseClient.ts"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { mapIndexerCandlesticks, mapIndexerEvent, mapIndexerEventWithTx, mapIndexerFundingRate, mapIndexerFundingRateHistory, mapIndexerLeaderboardContest, mapIndexerLeaderboardPosition, mapIndexerLeaderboardRegistration, mapIndexerMakerStatistics, mapIndexerMarketSnapshot, mapIndexerMatchEventBalances, mapIndexerNlpSnapshot, mapIndexerOrder, mapIndexerPerpPrices, mapIndexerPortfolio, mapIndexerProductPayment, mapIndexerServerProduct, mapIndexerV2Symbols, mapIndexerV2Ticker, mapSnapshotsIntervalToServerParams } from "./dataMappers.js";
|
|
2
2
|
import { IndexerServerFailureError } from "./types/IndexerServerFailureError.js";
|
|
3
3
|
import { isIndexerServerFailureResponse } from "./types/serverTypes.js";
|
|
4
|
-
import { WalletNotProvidedError, getDefaultRecvTime, getNadoEIP712Values, getSignedTransactionRequest, getValidatedAddress, getValidatedHex, mapValues, nowInSeconds, removeDecimals, subaccountFromHex, subaccountToHex, toBigInt, toBigNumber, toIntegerString } from "@nadohq/shared";
|
|
4
|
+
import { WalletNotProvidedError, getDefaultRecvTime, getNadoClientTypeHeaders, getNadoEIP712Values, getSignedTransactionRequest, getValidatedAddress, getValidatedHex, mapValues, nowInSeconds, removeDecimals, subaccountFromHex, subaccountToHex, toBigInt, toBigNumber, toIntegerString } from "@nadohq/shared";
|
|
5
5
|
import axios from "axios";
|
|
6
6
|
//#region src/IndexerBaseClient.ts
|
|
7
7
|
/**
|
|
@@ -12,9 +12,12 @@ var IndexerBaseClient = class {
|
|
|
12
12
|
this.opts = opts;
|
|
13
13
|
this.axiosInstance = axios.create({
|
|
14
14
|
withCredentials: true,
|
|
15
|
-
validateStatus: () => true
|
|
15
|
+
validateStatus: () => true,
|
|
16
|
+
headers: getNadoClientTypeHeaders(opts.clientType)
|
|
16
17
|
});
|
|
17
|
-
this.
|
|
18
|
+
this.v1Url = `${opts.url}/v1`;
|
|
19
|
+
this.v2Url = `${opts.url}/v2`;
|
|
20
|
+
this.rewardsUrl = `${opts.url}/rewards/v1`;
|
|
18
21
|
}
|
|
19
22
|
/**
|
|
20
23
|
* Sets the linked signer for execute requests
|
|
@@ -398,7 +401,7 @@ var IndexerBaseClient = class {
|
|
|
398
401
|
* @param params
|
|
399
402
|
*/
|
|
400
403
|
async getLeaderboard(params) {
|
|
401
|
-
return { participants: (await this.
|
|
404
|
+
return { participants: (await this.rewardsQuery("leaderboard", {
|
|
402
405
|
contest_id: params.contestId,
|
|
403
406
|
rank_type: params.rankType,
|
|
404
407
|
start: params.startCursor,
|
|
@@ -412,7 +415,7 @@ var IndexerBaseClient = class {
|
|
|
412
415
|
* @param params
|
|
413
416
|
*/
|
|
414
417
|
async getLeaderboardParticipant(params) {
|
|
415
|
-
return { participant: mapValues((await this.
|
|
418
|
+
return { participant: mapValues((await this.rewardsQuery("leaderboard_rank", {
|
|
416
419
|
subaccount: subaccountToHex(params.subaccount),
|
|
417
420
|
contest_ids: params.contestIds
|
|
418
421
|
})).positions, (position) => mapIndexerLeaderboardPosition(position)) };
|
|
@@ -433,7 +436,7 @@ var IndexerBaseClient = class {
|
|
|
433
436
|
tx: getNadoEIP712Values("leaderboard_authentication", signatureParams),
|
|
434
437
|
signature: await this.sign("leaderboard_authentication", params.verifyingAddr, params.chainId, signatureParams)
|
|
435
438
|
};
|
|
436
|
-
return { registrations: (await this.
|
|
439
|
+
return { registrations: (await this.rewardsQuery("leaderboard_register", { update_registration: updateRegistrationTx })).registrations.map(mapIndexerLeaderboardRegistration) };
|
|
437
440
|
}
|
|
438
441
|
/**
|
|
439
442
|
* Retrieves contest registrations for a subaccount. Supports batch lookup
|
|
@@ -442,7 +445,7 @@ var IndexerBaseClient = class {
|
|
|
442
445
|
* @param params - Query parameters including subaccount and contest IDs.
|
|
443
446
|
*/
|
|
444
447
|
async getLeaderboardRegistrations(params) {
|
|
445
|
-
return { registrations: (await this.
|
|
448
|
+
return { registrations: (await this.rewardsQuery("leaderboard_registrations", {
|
|
446
449
|
subaccount: subaccountToHex(params.subaccount),
|
|
447
450
|
contest_ids: params.contestIds,
|
|
448
451
|
active: params.active
|
|
@@ -454,7 +457,7 @@ var IndexerBaseClient = class {
|
|
|
454
457
|
* @param params
|
|
455
458
|
*/
|
|
456
459
|
async getLeaderboardContests(params) {
|
|
457
|
-
return { contests: (await this.
|
|
460
|
+
return { contests: (await this.rewardsQuery("leaderboard_contests", {
|
|
458
461
|
contest_ids: params.contestIds,
|
|
459
462
|
active: params.active
|
|
460
463
|
})).contests.map(mapIndexerLeaderboardContest) };
|
|
@@ -504,7 +507,7 @@ var IndexerBaseClient = class {
|
|
|
504
507
|
* @param params
|
|
505
508
|
*/
|
|
506
509
|
async getPrivateAlphaChoice(params) {
|
|
507
|
-
const baseResponse = await this.
|
|
510
|
+
const baseResponse = await this.rewardsQuery("private_alpha_choice", { address: params.address });
|
|
508
511
|
return {
|
|
509
512
|
points: toBigNumber(baseResponse.points),
|
|
510
513
|
feeRefund: toBigNumber(baseResponse.fee_refund),
|
|
@@ -516,7 +519,7 @@ var IndexerBaseClient = class {
|
|
|
516
519
|
* @param params
|
|
517
520
|
*/
|
|
518
521
|
async getPoints(params) {
|
|
519
|
-
const baseResponse = await this.
|
|
522
|
+
const baseResponse = await this.rewardsQuery("nado_points", { address: params.address });
|
|
520
523
|
return {
|
|
521
524
|
pointsPerEpoch: baseResponse.points_per_epoch.map((epoch) => ({
|
|
522
525
|
epoch: epoch.epoch,
|
|
@@ -541,7 +544,7 @@ var IndexerBaseClient = class {
|
|
|
541
544
|
* @param params
|
|
542
545
|
*/
|
|
543
546
|
async getXPoints(params) {
|
|
544
|
-
const baseResponse = await this.
|
|
547
|
+
const baseResponse = await this.rewardsQuery("nado_xpoints", { address: params.address });
|
|
545
548
|
const mapQuests = (quests) => quests.map((quest) => ({
|
|
546
549
|
questType: quest.quest_type,
|
|
547
550
|
points: toBigNumber(quest.points)
|
|
@@ -570,7 +573,7 @@ var IndexerBaseClient = class {
|
|
|
570
573
|
* @param params
|
|
571
574
|
*/
|
|
572
575
|
async getCashIncentives(params) {
|
|
573
|
-
const baseResponse = await this.
|
|
576
|
+
const baseResponse = await this.rewardsQuery("cash_incentives", { wallet_address: params.address });
|
|
574
577
|
return {
|
|
575
578
|
events: baseResponse.events.map((event) => ({
|
|
576
579
|
metadata: {
|
|
@@ -619,7 +622,7 @@ var IndexerBaseClient = class {
|
|
|
619
622
|
};
|
|
620
623
|
const tx = getNadoEIP712Values("social_authentication", signatureParams);
|
|
621
624
|
const signature = await this.sign("social_authentication", params.verifyingAddr, params.chainId, signatureParams);
|
|
622
|
-
return { url: (await this.
|
|
625
|
+
return { url: (await this.rewardsQuery("social_connect", { update_social_account: {
|
|
623
626
|
tx,
|
|
624
627
|
signature
|
|
625
628
|
} })).url };
|
|
@@ -630,7 +633,7 @@ var IndexerBaseClient = class {
|
|
|
630
633
|
* @param params - Query parameters including the wallet address.
|
|
631
634
|
*/
|
|
632
635
|
async listSocialAccounts(params) {
|
|
633
|
-
return { accounts: (await this.
|
|
636
|
+
return { accounts: (await this.rewardsQuery("list_social_accounts", { address: params.address })).accounts.map((a) => ({
|
|
634
637
|
provider: a.provider,
|
|
635
638
|
username: a.username,
|
|
636
639
|
displayName: a.display_name,
|
|
@@ -651,7 +654,7 @@ var IndexerBaseClient = class {
|
|
|
651
654
|
};
|
|
652
655
|
const tx = getNadoEIP712Values("social_authentication", signatureParams);
|
|
653
656
|
const signature = await this.sign("social_authentication", params.verifyingAddr, params.chainId, signatureParams);
|
|
654
|
-
return { accounts: (await this.
|
|
657
|
+
return { accounts: (await this.rewardsQuery("revoke_social_account", { update_social_account: {
|
|
655
658
|
tx,
|
|
656
659
|
signature
|
|
657
660
|
} })).accounts.map((a) => ({
|
|
@@ -682,9 +685,19 @@ var IndexerBaseClient = class {
|
|
|
682
685
|
this.checkResponseStatus(response);
|
|
683
686
|
return mapValues(response.data, mapIndexerV2Symbols);
|
|
684
687
|
}
|
|
685
|
-
|
|
688
|
+
query(requestType, params) {
|
|
689
|
+
return this.queryWithUrl(this.v1Url, requestType, params);
|
|
690
|
+
}
|
|
691
|
+
/**
|
|
692
|
+
* Runs a query against the rewards endpoint, which serves leaderboard, points,
|
|
693
|
+
* cash incentives, private alpha, and social account queries
|
|
694
|
+
*/
|
|
695
|
+
rewardsQuery(requestType, params) {
|
|
696
|
+
return this.queryWithUrl(this.rewardsUrl, requestType, params);
|
|
697
|
+
}
|
|
698
|
+
async queryWithUrl(url, requestType, params) {
|
|
686
699
|
const reqBody = { [requestType]: params };
|
|
687
|
-
const response = await this.axiosInstance.post(
|
|
700
|
+
const response = await this.axiosInstance.post(url, reqBody);
|
|
688
701
|
this.checkResponseStatus(response);
|
|
689
702
|
return response.data;
|
|
690
703
|
}
|