@decibeltrade/sdk 0.3.0 → 0.4.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 (138) hide show
  1. package/dist/abi/json/netna.json +795 -280
  2. package/dist/abi/json/testnet.json +734 -507
  3. package/dist/admin.d.ts +43 -5
  4. package/dist/admin.d.ts.map +1 -1
  5. package/dist/admin.js +114 -11
  6. package/dist/base.d.ts +1 -6
  7. package/dist/base.d.ts.map +1 -1
  8. package/dist/base.js +13 -23
  9. package/dist/constants.d.ts +12 -4
  10. package/dist/constants.d.ts.map +1 -1
  11. package/dist/constants.js +40 -7
  12. package/dist/fee-pay.d.ts +3 -3
  13. package/dist/fee-pay.d.ts.map +1 -1
  14. package/dist/fee-pay.js +26 -49
  15. package/dist/gas/gas-price-manager.d.ts.map +1 -1
  16. package/dist/gas/gas-price-manager.js +3 -1
  17. package/dist/read/account-overview/account-overview.reader.d.ts +2 -0
  18. package/dist/read/account-overview/account-overview.reader.d.ts.map +1 -1
  19. package/dist/read/account-overview/account-overview.types.d.ts +4 -0
  20. package/dist/read/account-overview/account-overview.types.d.ts.map +1 -1
  21. package/dist/read/account-overview/account-overview.types.js +5 -0
  22. package/dist/read/action-utils.d.ts +12 -0
  23. package/dist/read/action-utils.d.ts.map +1 -0
  24. package/dist/read/action-utils.js +13 -0
  25. package/dist/read/base-reader.d.ts +1 -0
  26. package/dist/read/base-reader.d.ts.map +1 -1
  27. package/dist/read/base-reader.js +15 -0
  28. package/dist/read/base-reader.test.d.ts +2 -0
  29. package/dist/read/base-reader.test.d.ts.map +1 -0
  30. package/dist/read/base-reader.test.js +68 -0
  31. package/dist/read/global-points-stats/global-points-stats.reader.d.ts +9 -0
  32. package/dist/read/global-points-stats/global-points-stats.reader.d.ts.map +1 -0
  33. package/dist/read/global-points-stats/global-points-stats.reader.js +12 -0
  34. package/dist/read/global-points-stats/global-points-stats.types.d.ts +9 -0
  35. package/dist/read/global-points-stats/global-points-stats.types.d.ts.map +1 -0
  36. package/dist/read/global-points-stats/global-points-stats.types.js +5 -0
  37. package/dist/read/index.d.ts +15 -0
  38. package/dist/read/index.d.ts.map +1 -1
  39. package/dist/read/index.js +27 -3
  40. package/dist/read/market-depth/market-depth.reader.d.ts +1 -17
  41. package/dist/read/market-depth/market-depth.reader.d.ts.map +1 -1
  42. package/dist/read/market-depth/market-depth.reader.js +18 -20
  43. package/dist/read/market-depth/market-depth.types.d.ts +5 -2
  44. package/dist/read/market-depth/market-depth.types.d.ts.map +1 -1
  45. package/dist/read/market-depth/market-depth.types.js +4 -1
  46. package/dist/read/market-trades/market-trades.reader.d.ts +0 -1
  47. package/dist/read/market-trades/market-trades.reader.d.ts.map +1 -1
  48. package/dist/read/market-trades/market-trades.types.d.ts +0 -3
  49. package/dist/read/market-trades/market-trades.types.d.ts.map +1 -1
  50. package/dist/read/market-trades/market-trades.types.js +0 -1
  51. package/dist/read/points-leaderboard/points-leaderboard.reader.d.ts +21 -0
  52. package/dist/read/points-leaderboard/points-leaderboard.reader.d.ts.map +1 -0
  53. package/dist/read/points-leaderboard/points-leaderboard.reader.js +23 -0
  54. package/dist/read/points-leaderboard/points-leaderboard.types.d.ts +30 -0
  55. package/dist/read/points-leaderboard/points-leaderboard.types.d.ts.map +1 -0
  56. package/dist/read/points-leaderboard/points-leaderboard.types.js +11 -0
  57. package/dist/read/portfolio-chart/portfolio-chart.types.d.ts +1 -1
  58. package/dist/read/portfolio-chart/portfolio-chart.types.d.ts.map +1 -1
  59. package/dist/read/referrals/referrals.reader.d.ts +98 -0
  60. package/dist/read/referrals/referrals.reader.d.ts.map +1 -0
  61. package/dist/read/referrals/referrals.reader.js +92 -0
  62. package/dist/read/referrals/referrals.types.d.ts +136 -0
  63. package/dist/read/referrals/referrals.types.d.ts.map +1 -0
  64. package/dist/read/referrals/referrals.types.js +85 -0
  65. package/dist/read/streaks/streaks.reader.d.ts +19 -0
  66. package/dist/read/streaks/streaks.reader.d.ts.map +1 -0
  67. package/dist/read/streaks/streaks.reader.js +19 -0
  68. package/dist/read/streaks/streaks.types.d.ts +17 -0
  69. package/dist/read/streaks/streaks.types.d.ts.map +1 -0
  70. package/dist/read/streaks/streaks.types.js +10 -0
  71. package/dist/read/tier/tier.reader.d.ts +21 -0
  72. package/dist/read/tier/tier.reader.d.ts.map +1 -0
  73. package/dist/read/tier/tier.reader.js +19 -0
  74. package/dist/read/tier/tier.types.d.ts +25 -0
  75. package/dist/read/tier/tier.types.d.ts.map +1 -0
  76. package/dist/read/tier/tier.types.js +13 -0
  77. package/dist/read/trading-amps/trading-amps.reader.d.ts +18 -0
  78. package/dist/read/trading-amps/trading-amps.reader.d.ts.map +1 -0
  79. package/dist/read/trading-amps/trading-amps.reader.js +23 -0
  80. package/dist/read/trading-amps/trading-amps.types.d.ts +25 -0
  81. package/dist/read/trading-amps/trading-amps.types.d.ts.map +1 -0
  82. package/dist/read/trading-amps/trading-amps.types.js +10 -0
  83. package/dist/read/trading-points/trading-points.reader.d.ts +18 -0
  84. package/dist/read/trading-points/trading-points.reader.d.ts.map +1 -0
  85. package/dist/read/trading-points/trading-points.reader.js +19 -0
  86. package/dist/read/trading-points/trading-points.types.d.ts +21 -0
  87. package/dist/read/trading-points/trading-points.types.d.ts.map +1 -0
  88. package/dist/read/trading-points/trading-points.types.js +10 -0
  89. package/dist/read/types.d.ts +7 -0
  90. package/dist/read/types.d.ts.map +1 -1
  91. package/dist/read/types.js +7 -0
  92. package/dist/read/user-funding-history/user-funding-history.reader.d.ts +1 -2
  93. package/dist/read/user-funding-history/user-funding-history.reader.d.ts.map +1 -1
  94. package/dist/read/user-funding-history/user-funding-history.types.d.ts +8 -4
  95. package/dist/read/user-funding-history/user-funding-history.types.d.ts.map +1 -1
  96. package/dist/read/user-funding-history/user-funding-history.types.js +1 -2
  97. package/dist/read/user-notifications/user-notifications.types.d.ts +1 -2
  98. package/dist/read/user-notifications/user-notifications.types.d.ts.map +1 -1
  99. package/dist/read/user-open-orders/user-open-orders.reader.d.ts +1 -2
  100. package/dist/read/user-open-orders/user-open-orders.reader.d.ts.map +1 -1
  101. package/dist/read/user-open-orders/user-open-orders.reader.js +1 -1
  102. package/dist/read/user-open-orders/user-open-orders.types.d.ts +3 -6
  103. package/dist/read/user-open-orders/user-open-orders.types.d.ts.map +1 -1
  104. package/dist/read/user-open-orders/user-open-orders.types.js +1 -2
  105. package/dist/read/user-order-history/user-order-history.reader.d.ts +1 -2
  106. package/dist/read/user-order-history/user-order-history.reader.d.ts.map +1 -1
  107. package/dist/read/user-order-history/user-order-history.reader.js +1 -1
  108. package/dist/read/user-order-history/user-order-history.types.d.ts +3 -6
  109. package/dist/read/user-order-history/user-order-history.types.d.ts.map +1 -1
  110. package/dist/read/user-order-history/user-order-history.types.js +1 -2
  111. package/dist/read/user-positions/user-positions.reader.d.ts +1 -0
  112. package/dist/read/user-positions/user-positions.reader.d.ts.map +1 -1
  113. package/dist/read/user-positions/user-positions.types.d.ts +220 -10
  114. package/dist/read/user-positions/user-positions.types.d.ts.map +1 -1
  115. package/dist/read/user-positions/user-positions.types.js +1 -0
  116. package/dist/read/user-trade-history/user-trade-history.reader.d.ts +5 -2
  117. package/dist/read/user-trade-history/user-trade-history.reader.d.ts.map +1 -1
  118. package/dist/read/user-trade-history/user-trade-history.types.d.ts +36 -9
  119. package/dist/read/user-trade-history/user-trade-history.types.d.ts.map +1 -1
  120. package/dist/read/user-trade-history/user-trade-history.types.js +4 -1
  121. package/dist/read/vaults/vaults.reader.d.ts +6 -4
  122. package/dist/read/vaults/vaults.reader.d.ts.map +1 -1
  123. package/dist/read/vaults/vaults.reader.js +4 -0
  124. package/dist/read/vaults/vaults.types.d.ts +30 -12
  125. package/dist/read/vaults/vaults.types.d.ts.map +1 -1
  126. package/dist/read/vaults/vaults.types.js +20 -3
  127. package/dist/read/ws-subscription.d.ts +1 -1
  128. package/dist/read/ws-subscription.d.ts.map +1 -1
  129. package/dist/read/ws-subscription.js +9 -1
  130. package/dist/release-config.d.ts +5 -2
  131. package/dist/release-config.d.ts.map +1 -1
  132. package/dist/release-config.js +15 -5
  133. package/dist/tsconfig.tsbuildinfo +1 -1
  134. package/dist/write.d.ts +12 -0
  135. package/dist/write.d.ts.map +1 -1
  136. package/dist/write.js +24 -7
  137. package/package.json +1 -1
  138. package/readme.md +7 -48
package/dist/fee-pay.js CHANGED
@@ -1,62 +1,39 @@
1
1
  import { GasStationClient } from "@aptos-labs/gas-station-client";
2
2
  import { TransactionResponseType, } from "@aptos-labs/ts-sdk";
3
3
  /**
4
- * Submit a transaction with fee payer support.
5
- * Uses GasStationClient when gasStationApiKey is provided, otherwise falls back to legacy gasStationUrl.
4
+ * Submit a transaction with Gas Station fee sponsorship.
5
+ * Requires `gasStationApiKey` in the config.
6
6
  *
7
- * @param config The Decibel configuration
7
+ * @param config The Decibel configuration (must include gasStationApiKey)
8
8
  * @param transaction The transaction to submit
9
9
  * @param senderAuthenticator The sender's authenticator
10
10
  * @returns A promise that resolves to the pending transaction response
11
11
  */
12
12
  export async function submitFeePaidTransaction(config, transaction, senderAuthenticator) {
13
- // Use GasStationClient when API key is provided
14
- if (config.gasStationApiKey) {
15
- const gasStationClient = new GasStationClient({
16
- network: config.network,
17
- apiKey: config.gasStationApiKey,
18
- // Use gasStationUrl as base URL for custom networks like netna
19
- ...(config.gasStationUrl && { baseUrl: config.gasStationUrl }),
20
- });
21
- const { transactionHash } = await gasStationClient.signAndSubmitTransaction({
22
- transaction,
23
- senderAuthenticator,
24
- });
25
- // Build PendingTransactionResponse from SimpleTransaction.rawTransaction
26
- const rawTxn = transaction.rawTransaction;
27
- return {
28
- type: TransactionResponseType.Pending,
29
- hash: transactionHash,
30
- sender: rawTxn.sender.toString(),
31
- sequence_number: rawTxn.sequence_number.toString(),
32
- max_gas_amount: rawTxn.max_gas_amount.toString(),
33
- gas_unit_price: rawTxn.gas_unit_price.toString(),
34
- expiration_timestamp_secs: rawTxn.expiration_timestamp_secs.toString(),
35
- // Payload not available from gas station response
36
- payload: {},
37
- };
13
+ if (!config.gasStationApiKey) {
14
+ throw new Error("gasStationApiKey is required for fee-paid transactions");
38
15
  }
39
- // Legacy: use custom fee payer service via gasStationUrl (for local dev with self-hosted fee payer)
40
- const gasStationUrl = config.gasStationUrl;
41
- if (!gasStationUrl) {
42
- throw new Error("Either gasStationApiKey or gasStationUrl must be provided");
43
- }
44
- const signatureBcs = Array.from(senderAuthenticator.bcsToBytes());
45
- const transactionBcs = Array.from(transaction.rawTransaction.bcsToBytes());
46
- const body = JSON.stringify({
47
- signature: signatureBcs,
48
- transaction: transactionBcs,
16
+ const gasStationClient = new GasStationClient({
17
+ network: config.network,
18
+ apiKey: config.gasStationApiKey,
19
+ // Use gasStationUrl as base URL for custom networks like netna
20
+ ...(config.gasStationUrl && { baseUrl: config.gasStationUrl }),
49
21
  });
50
- const response = await fetch(gasStationUrl + "/transactions", {
51
- method: "POST",
52
- headers: {
53
- "Content-Type": "application/json",
54
- },
55
- body,
22
+ const { transactionHash } = await gasStationClient.signAndSubmitTransaction({
23
+ transaction,
24
+ senderAuthenticator,
56
25
  });
57
- if (!response.ok) {
58
- throw new Error(`HTTP error! status: ${response.status}`);
59
- }
60
- // TODO(bl): Error handling
61
- return (await response.json());
26
+ // Build PendingTransactionResponse from SimpleTransaction.rawTransaction
27
+ const rawTxn = transaction.rawTransaction;
28
+ return {
29
+ type: TransactionResponseType.Pending,
30
+ hash: transactionHash,
31
+ sender: rawTxn.sender.toString(),
32
+ sequence_number: rawTxn.sequence_number.toString(),
33
+ max_gas_amount: rawTxn.max_gas_amount.toString(),
34
+ gas_unit_price: rawTxn.gas_unit_price.toString(),
35
+ expiration_timestamp_secs: rawTxn.expiration_timestamp_secs.toString(),
36
+ // Payload not available from gas station response
37
+ payload: {},
38
+ };
62
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gas-price-manager.d.ts","sourceRoot":"","sources":["../../src/gas/gas-price-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,sBAAsB;IAYhE,WAAW,IAAI,MAAM,GAAG,SAAS;IAQjC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBjC,OAAO;IAIP;;OAEG;IACH,OAAO,IAAI,IAAI;IAST,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAMhD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;CAmB7C"}
1
+ {"version":3,"file":"gas-price-manager.d.ts","sourceRoot":"","sources":["../../src/gas/gas-price-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,sBAAsB;IAchE,WAAW,IAAI,MAAM,GAAG,SAAS;IAQjC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBjC,OAAO;IAIP;;OAEG;IACH,OAAO,IAAI,IAAI;IAST,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAMhD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;CAmB7C"}
@@ -10,7 +10,9 @@ export class GasPriceManager {
10
10
  this.aptos = new Aptos(new AptosConfig({
11
11
  network: config.network,
12
12
  fullnode: config.fullnodeUrl,
13
- clientConfig: { API_KEY: opts?.nodeApiKey },
13
+ clientConfig: config.additionalHeaders
14
+ ? { HEADERS: config.additionalHeaders }
15
+ : { API_KEY: opts?.nodeApiKey },
14
16
  }));
15
17
  this.refreshIntervalMs = opts?.refreshIntervalMs ?? 60_000; // default to 1 minute
16
18
  this.multiplier = opts?.multiplier ?? 2; // default to 2x multilier to ensure we have enough gas for the transactipon
@@ -29,6 +29,8 @@ export declare class AccountOverviewReader extends BaseReader {
29
29
  liquidation_fees_paid: number | null;
30
30
  liquidation_losses: number | null;
31
31
  net_deposits?: number | null | undefined;
32
+ margin_deficit?: number | undefined;
33
+ vault_equity?: number | null | undefined;
32
34
  }>;
33
35
  /**
34
36
  * Subscribe to account overview
@@ -1 +1 @@
1
- {"version":3,"file":"account-overview.reader.d.ts","sourceRoot":"","sources":["../../../src/read/account-overview/account-overview.reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EACL,0BAA0B,EAE1B,wBAAwB,EAEzB,MAAM,0BAA0B,CAAC;AAElC,qBAAa,qBAAsB,SAAQ,UAAU;IACnD;;;;OAIG;IACG,SAAS,CAAC,EACd,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,kBAAkB,GACnB,EAAE,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;IAgB7B;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,IAAI;CAKlF"}
1
+ {"version":3,"file":"account-overview.reader.d.ts","sourceRoot":"","sources":["../../../src/read/account-overview/account-overview.reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EACL,0BAA0B,EAE1B,wBAAwB,EAEzB,MAAM,0BAA0B,CAAC;AAElC,qBAAa,qBAAsB,SAAQ,UAAU;IACnD;;;;OAIG;IACG,SAAS,CAAC,EACd,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,kBAAkB,GACnB,EAAE,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;IAgB7B;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,IAAI;CAKlF"}
@@ -32,9 +32,11 @@ export declare const AccountOverviewSchema: z.ZodObject<{
32
32
  total_margin: z.ZodNumber;
33
33
  usdc_cross_withdrawable_balance: z.ZodNumber;
34
34
  usdc_isolated_withdrawable_balance: z.ZodNumber;
35
+ margin_deficit: z.ZodOptional<z.ZodNumber>;
35
36
  realized_pnl: z.ZodNullable<z.ZodNumber>;
36
37
  liquidation_fees_paid: z.ZodNullable<z.ZodNumber>;
37
38
  liquidation_losses: z.ZodNullable<z.ZodNumber>;
39
+ vault_equity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
38
40
  }, z.core.$strip>;
39
41
  export declare const AccountOverviewWsMessageSchema: z.ZodObject<{
40
42
  account_overview: z.ZodObject<{
@@ -56,9 +58,11 @@ export declare const AccountOverviewWsMessageSchema: z.ZodObject<{
56
58
  total_margin: z.ZodNumber;
57
59
  usdc_cross_withdrawable_balance: z.ZodNumber;
58
60
  usdc_isolated_withdrawable_balance: z.ZodNumber;
61
+ margin_deficit: z.ZodOptional<z.ZodNumber>;
59
62
  realized_pnl: z.ZodNullable<z.ZodNumber>;
60
63
  liquidation_fees_paid: z.ZodNullable<z.ZodNumber>;
61
64
  liquidation_losses: z.ZodNullable<z.ZodNumber>;
65
+ vault_equity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
62
66
  }, z.core.$strip>;
63
67
  }, z.core.$strip>;
64
68
  export type AccountOverview = z.infer<typeof AccountOverviewSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"account-overview.types.d.ts","sourceRoot":"","sources":["../../../src/read/account-overview/account-overview.types.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,WAAW,0BAA2B,SAAQ,eAAe;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE5E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;iBAwBhC,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;iBAEzC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC"}
1
+ {"version":3,"file":"account-overview.types.d.ts","sourceRoot":"","sources":["../../../src/read/account-overview/account-overview.types.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,WAAW,0BAA2B,SAAQ,eAAe;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE5E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;iBA6BhC,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;iBAEzC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC"}
@@ -26,9 +26,14 @@ export const AccountOverviewSchema = z.object({
26
26
  total_margin: z.number(),
27
27
  usdc_cross_withdrawable_balance: z.number(),
28
28
  usdc_isolated_withdrawable_balance: z.number(),
29
+ /** Cross-margin deficit: 0 when healthy, negative when the account has a margin hole.
30
+ * When negative, new deposits partially fill this deficit before becoming available to trade. */
31
+ margin_deficit: z.number().optional(), // TODO: Remove optional once back-end is deployed
29
32
  realized_pnl: z.number().nullable(),
30
33
  liquidation_fees_paid: z.number().nullable(),
31
34
  liquidation_losses: z.number().nullable(),
35
+ /** Total USDC value of vault shares held by this account. NULL when not yet available via WebSocket. */
36
+ vault_equity: z.number().nullable().optional(), // TODO: Remove optional once back-end is deployed
32
37
  });
33
38
  export const AccountOverviewWsMessageSchema = z.object({
34
39
  account_overview: AccountOverviewSchema.omit({ volume: true }),
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Extracts the position direction from a trade action.
3
+ *
4
+ * @param action - The trade action (e.g., "CloseLong", "OpenShort")
5
+ * @returns The position direction: "Long" or "Short"
6
+ *
7
+ * @example
8
+ * getPositionDirection("CloseLong") // returns "Long"
9
+ * getPositionDirection("OpenShort") // returns "Short"
10
+ */
11
+ export declare function getPositionDirection(action: string): "Long" | "Short";
12
+ //# sourceMappingURL=action-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-utils.d.ts","sourceRoot":"","sources":["../../src/read/action-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAErE"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Extracts the position direction from a trade action.
3
+ *
4
+ * @param action - The trade action (e.g., "CloseLong", "OpenShort")
5
+ * @returns The position direction: "Long" or "Short"
6
+ *
7
+ * @example
8
+ * getPositionDirection("CloseLong") // returns "Long"
9
+ * getPositionDirection("OpenShort") // returns "Short"
10
+ */
11
+ export function getPositionDirection(action) {
12
+ return action.includes("Long") ? "Long" : "Short";
13
+ }
@@ -6,6 +6,7 @@ export interface BaseRequestArgs {
6
6
  export declare class BaseReader {
7
7
  protected readonly deps: DecibelReaderDeps;
8
8
  constructor(deps: DecibelReaderDeps);
9
+ private mergeHeaders;
9
10
  protected getRequest<TResponseData>(args: Omit<GetRequestArgs<TResponseData>, "apiKey">): Promise<{
10
11
  data: TResponseData;
11
12
  status: number;
@@ -1 +1 @@
1
- {"version":3,"file":"base-reader.d.ts","sourceRoot":"","sources":["../../src/read/base-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,YAAY,EAEZ,cAAc,EAEd,gBAAgB,EAEhB,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,qBAAa,UAAU;IACT,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB;gBAAvB,IAAI,EAAE,iBAAiB;cAEtC,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;;;;;cAO7E,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;;;;;cAO/E,YAAY,CAAC,aAAa,EACxC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;;;;;CAOxD"}
1
+ {"version":3,"file":"base-reader.d.ts","sourceRoot":"","sources":["../../src/read/base-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,YAAY,EAEZ,cAAc,EAEd,gBAAgB,EAEhB,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,qBAAa,UAAU;IACT,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB;gBAAvB,IAAI,EAAE,iBAAiB;IAEtD,OAAO,CAAC,YAAY;cAYJ,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;;;;;cAQ7E,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;;;;;cAQ/E,YAAY,CAAC,aAAa,EACxC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;;;;;CAQxD"}
@@ -4,21 +4,36 @@ export class BaseReader {
4
4
  constructor(deps) {
5
5
  this.deps = deps;
6
6
  }
7
+ mergeHeaders(options) {
8
+ const extra = this.deps.config.additionalHeaders;
9
+ if (!extra)
10
+ return options;
11
+ return {
12
+ ...options,
13
+ headers: {
14
+ ...extra,
15
+ ...options?.headers,
16
+ },
17
+ };
18
+ }
7
19
  async getRequest(args) {
8
20
  return baseGetRequest({
9
21
  ...args,
22
+ options: this.mergeHeaders(args.options),
10
23
  apiKey: this.deps.apiKey,
11
24
  });
12
25
  }
13
26
  async postRequest(args) {
14
27
  return basePostRequest({
15
28
  ...args,
29
+ options: this.mergeHeaders(args.options),
16
30
  apiKey: this.deps.apiKey,
17
31
  });
18
32
  }
19
33
  async patchRequest(args) {
20
34
  return basePatchRequest({
21
35
  ...args,
36
+ options: this.mergeHeaders(args.options),
22
37
  apiKey: this.deps.apiKey,
23
38
  });
24
39
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=base-reader.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-reader.test.d.ts","sourceRoot":"","sources":["../../src/read/base-reader.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,68 @@
1
+ import { Network } from "@aptos-labs/ts-sdk";
2
+ import { describe, expect, it, vi } from "vitest";
3
+ import { z } from "zod/v4";
4
+ import { DEFAULT_COMPAT_VERSION } from "../release-config";
5
+ import { BaseReader } from "./base-reader";
6
+ // Expose protected methods for testing
7
+ class TestableReader extends BaseReader {
8
+ async doGet(url) {
9
+ return this.getRequest({ schema: z.unknown(), url });
10
+ }
11
+ }
12
+ function createMockDeps(additionalHeaders) {
13
+ const mockConfig = {
14
+ network: Network.TESTNET,
15
+ fullnodeUrl: "https://testnet.aptoslabs.com/v1",
16
+ tradingHttpUrl: "https://api.testnet.example.com",
17
+ tradingWsUrl: "wss://ws.testnet.example.com",
18
+ deployment: {
19
+ package: "0x0000000000000000000000000000000000000000000000000000000000000123",
20
+ usdc: "0x0000000000000000000000000000000000000000000000000000000000000456",
21
+ testc: "0x0000000000000000000000000000000000000000000000000000000000000789",
22
+ perpEngineGlobal: "0x0000000000000000000000000000000000000000000000000000000000000abc",
23
+ },
24
+ compatVersion: DEFAULT_COMPAT_VERSION,
25
+ additionalHeaders,
26
+ };
27
+ return {
28
+ aptos: {},
29
+ ws: {},
30
+ config: mockConfig,
31
+ apiKey: additionalHeaders ? undefined : "test-api-key",
32
+ };
33
+ }
34
+ describe("BaseReader - additionalHeaders", () => {
35
+ it("should not inject headers when additionalHeaders is undefined", async () => {
36
+ const deps = createMockDeps();
37
+ const reader = new TestableReader(deps);
38
+ const fetchSpy = vi
39
+ .spyOn(globalThis, "fetch")
40
+ .mockResolvedValue(new Response(JSON.stringify({ ok: true }), { status: 200 }));
41
+ await reader.doGet("https://api.example.com/test");
42
+ const calledInit = fetchSpy.mock.calls[0]?.[1];
43
+ const headers = calledInit?.headers;
44
+ expect(headers.get("Authorization")).toBe("Bearer test-api-key");
45
+ expect(headers.get("x-internal-organization-id")).toBeNull();
46
+ fetchSpy.mockRestore();
47
+ });
48
+ it("should inject additionalHeaders into requests", async () => {
49
+ const deps = createMockDeps({
50
+ "x-internal-organization-id": "org-1",
51
+ "x-internal-project-id": "proj-1",
52
+ "x-internal-application-id": "app-1",
53
+ });
54
+ const reader = new TestableReader(deps);
55
+ const fetchSpy = vi
56
+ .spyOn(globalThis, "fetch")
57
+ .mockResolvedValue(new Response(JSON.stringify({ ok: true }), { status: 200 }));
58
+ await reader.doGet("https://api.example.com/test");
59
+ const calledInit = fetchSpy.mock.calls[0]?.[1];
60
+ const headers = calledInit?.headers;
61
+ expect(headers.get("x-internal-organization-id")).toBe("org-1");
62
+ expect(headers.get("x-internal-project-id")).toBe("proj-1");
63
+ expect(headers.get("x-internal-application-id")).toBe("app-1");
64
+ // apiKey is undefined when additionalHeaders is set
65
+ expect(headers.get("Authorization")).toBeNull();
66
+ fetchSpy.mockRestore();
67
+ });
68
+ });
@@ -0,0 +1,9 @@
1
+ import { BaseReader } from "../base-reader";
2
+ import { GlobalPointsStatsRequestArgs } from "./global-points-stats.types";
3
+ export declare class GlobalPointsStatsReader extends BaseReader {
4
+ get({ fetchOptions }?: GlobalPointsStatsRequestArgs): Promise<{
5
+ total_users: number;
6
+ total_amps_distributed: number;
7
+ }>;
8
+ }
9
+ //# sourceMappingURL=global-points-stats.reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-points-stats.reader.d.ts","sourceRoot":"","sources":["../../../src/read/global-points-stats/global-points-stats.reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAA2B,MAAM,6BAA6B,CAAC;AAEpG,qBAAa,uBAAwB,SAAQ,UAAU;IAC/C,GAAG,CAAC,EAAE,YAAY,EAAE,GAAE,4BAAiC;;;;CAS9D"}
@@ -0,0 +1,12 @@
1
+ import { BaseReader } from "../base-reader";
2
+ import { GlobalPointsStatsSchema } from "./global-points-stats.types";
3
+ export class GlobalPointsStatsReader extends BaseReader {
4
+ async get({ fetchOptions } = {}) {
5
+ const response = await this.getRequest({
6
+ schema: GlobalPointsStatsSchema,
7
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/points/global`,
8
+ options: fetchOptions,
9
+ });
10
+ return response.data;
11
+ }
12
+ }
@@ -0,0 +1,9 @@
1
+ import { z } from "zod/v4";
2
+ import { BaseRequestArgs } from "../base-reader";
3
+ export type GlobalPointsStatsRequestArgs = BaseRequestArgs;
4
+ export declare const GlobalPointsStatsSchema: z.ZodObject<{
5
+ total_users: z.ZodNumber;
6
+ total_amps_distributed: z.ZodNumber;
7
+ }, z.core.$strip>;
8
+ export type GlobalPointsStats = z.infer<typeof GlobalPointsStatsSchema>;
9
+ //# sourceMappingURL=global-points-stats.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-points-stats.types.d.ts","sourceRoot":"","sources":["../../../src/read/global-points-stats/global-points-stats.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,MAAM,4BAA4B,GAAG,eAAe,CAAC;AAE3D,eAAO,MAAM,uBAAuB;;;iBAGlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { z } from "zod/v4";
2
+ export const GlobalPointsStatsSchema = z.object({
3
+ total_users: z.number(),
4
+ total_amps_distributed: z.number(),
5
+ });
@@ -4,13 +4,20 @@ import { DecibelConfig, DecibelReaderDeps } from "../constants";
4
4
  import { AccountOverviewReader } from "./account-overview/account-overview.reader";
5
5
  import { CandlesticksReader } from "./candlesticks/candlesticks.reader";
6
6
  import { DelegationsReader } from "./delegations/delegations.reader";
7
+ import { GlobalPointsStatsReader } from "./global-points-stats/global-points-stats.reader";
7
8
  import { LeaderboardReader } from "./leaderboard/leaderboard.reader";
8
9
  import { MarketContextsReader } from "./market-contexts/market-contexts.reader";
9
10
  import { MarketDepthReader } from "./market-depth/market-depth.reader";
10
11
  import { MarketPricesReader } from "./market-prices/market-prices.reader";
11
12
  import { MarketTradesReader } from "./market-trades/market-trades.reader";
12
13
  import { MarketsReader } from "./markets/markets.reader";
14
+ import { PointsLeaderboardReader } from "./points-leaderboard/points-leaderboard.reader";
13
15
  import { PortfolioChartReader } from "./portfolio-chart/portfolio-chart.reader";
16
+ import { ReferralsReader } from "./referrals/referrals.reader";
17
+ import { StreaksReader } from "./streaks/streaks.reader";
18
+ import { TierReader } from "./tier/tier.reader";
19
+ import { TradingAmpsReader } from "./trading-amps/trading-amps.reader";
20
+ import { TradingPointsReader } from "./trading-points/trading-points.reader";
14
21
  import { UserActiveTwapsReader } from "./user-active-twaps/user-active-twaps.reader";
15
22
  import { UserBulkOrdersReader } from "./user-bulk-orders/user-bulk-orders.reader";
16
23
  import { UserFundHistoryReader } from "./user-fund-history/user-fund-history.reader";
@@ -23,6 +30,7 @@ import { UserSubaccountsReader } from "./user-subaccounts/user-subaccounts.reade
23
30
  import { UserTradeHistoryReader } from "./user-trade-history/user-trade-history.reader";
24
31
  import { UserTwapHistoryReader } from "./user-twap-history/user-twap-history.reader";
25
32
  import { VaultsReader } from "./vaults/vaults.reader";
33
+ export * from "./action-utils";
26
34
  export * from "./types";
27
35
  interface Cache {
28
36
  usdcDecimals?: number;
@@ -50,9 +58,16 @@ export declare class DecibelReadDex {
50
58
  readonly userTwapHistory: UserTwapHistoryReader;
51
59
  readonly portfolioChart: PortfolioChartReader;
52
60
  readonly leaderboard: LeaderboardReader;
61
+ readonly pointsLeaderboard: PointsLeaderboardReader;
53
62
  readonly vaults: VaultsReader;
54
63
  readonly delegations: DelegationsReader;
55
64
  readonly userNotifications: UserNotificationsReader;
65
+ readonly tradingPoints: TradingPointsReader;
66
+ readonly streaks: StreaksReader;
67
+ readonly tradingAmps: TradingAmpsReader;
68
+ readonly tier: TierReader;
69
+ readonly globalPointsStats: GlobalPointsStatsReader;
70
+ readonly referrals: ReferralsReader;
56
71
  constructor(config: DecibelConfig, opts?: {
57
72
  nodeApiKey?: string;
58
73
  onWsError?: (error: ErrorEvent) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/read/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/read/index.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,20 @@ import { Aptos, AptosConfig, createObjectAddress } from "@aptos-labs/ts-sdk";
2
2
  import { AccountOverviewReader } from "./account-overview/account-overview.reader";
3
3
  import { CandlesticksReader } from "./candlesticks/candlesticks.reader";
4
4
  import { DelegationsReader } from "./delegations/delegations.reader";
5
+ import { GlobalPointsStatsReader } from "./global-points-stats/global-points-stats.reader";
5
6
  import { LeaderboardReader } from "./leaderboard/leaderboard.reader";
6
7
  import { MarketContextsReader } from "./market-contexts/market-contexts.reader";
7
8
  import { MarketDepthReader } from "./market-depth/market-depth.reader";
8
9
  import { MarketPricesReader } from "./market-prices/market-prices.reader";
9
10
  import { MarketTradesReader } from "./market-trades/market-trades.reader";
10
11
  import { MarketsReader } from "./markets/markets.reader";
12
+ import { PointsLeaderboardReader } from "./points-leaderboard/points-leaderboard.reader";
11
13
  import { PortfolioChartReader } from "./portfolio-chart/portfolio-chart.reader";
14
+ import { ReferralsReader } from "./referrals/referrals.reader";
15
+ import { StreaksReader } from "./streaks/streaks.reader";
16
+ import { TierReader } from "./tier/tier.reader";
17
+ import { TradingAmpsReader } from "./trading-amps/trading-amps.reader";
18
+ import { TradingPointsReader } from "./trading-points/trading-points.reader";
12
19
  import { CrossedPosition } from "./types";
13
20
  import { UserActiveTwapsReader } from "./user-active-twaps/user-active-twaps.reader";
14
21
  import { UserBulkOrdersReader } from "./user-bulk-orders/user-bulk-orders.reader";
@@ -23,6 +30,7 @@ import { UserTradeHistoryReader } from "./user-trade-history/user-trade-history.
23
30
  import { UserTwapHistoryReader } from "./user-twap-history/user-twap-history.reader";
24
31
  import { VaultsReader } from "./vaults/vaults.reader";
25
32
  import { DecibelWsSubscription } from "./ws-subscription";
33
+ export * from "./action-utils";
26
34
  export * from "./types";
27
35
  export class DecibelReadDex {
28
36
  config;
@@ -47,21 +55,30 @@ export class DecibelReadDex {
47
55
  userTwapHistory;
48
56
  portfolioChart;
49
57
  leaderboard;
58
+ pointsLeaderboard;
50
59
  vaults;
51
60
  delegations;
52
61
  userNotifications;
62
+ tradingPoints;
63
+ streaks;
64
+ tradingAmps;
65
+ tier;
66
+ globalPointsStats;
67
+ referrals;
53
68
  constructor(config, opts) {
54
69
  this.config = config;
55
70
  const aptosConfig = new AptosConfig({
56
71
  network: config.network,
57
72
  fullnode: config.fullnodeUrl,
58
- clientConfig: { API_KEY: opts?.nodeApiKey },
73
+ clientConfig: config.additionalHeaders
74
+ ? { HEADERS: config.additionalHeaders }
75
+ : { API_KEY: opts?.nodeApiKey },
59
76
  });
60
77
  this.deps = {
61
78
  aptos: new Aptos(aptosConfig),
62
79
  ws: new DecibelWsSubscription(config, opts?.nodeApiKey, opts?.onWsError),
63
80
  config: this.config,
64
- apiKey: opts?.nodeApiKey,
81
+ apiKey: config.additionalHeaders ? undefined : opts?.nodeApiKey,
65
82
  };
66
83
  this.cache = {};
67
84
  this.accountOverview = new AccountOverviewReader(this.deps);
@@ -83,9 +100,16 @@ export class DecibelReadDex {
83
100
  this.candlesticks = new CandlesticksReader(this.deps);
84
101
  this.portfolioChart = new PortfolioChartReader(this.deps);
85
102
  this.leaderboard = new LeaderboardReader(this.deps);
103
+ this.pointsLeaderboard = new PointsLeaderboardReader(this.deps);
86
104
  this.vaults = new VaultsReader(this.deps);
87
105
  this.delegations = new DelegationsReader(this.deps);
88
106
  this.userNotifications = new UserNotificationsReader(this.deps);
107
+ this.tradingPoints = new TradingPointsReader(this.deps);
108
+ this.streaks = new StreaksReader(this.deps);
109
+ this.tradingAmps = new TradingAmpsReader(this.deps);
110
+ this.tier = new TierReader(this.deps);
111
+ this.globalPointsStats = new GlobalPointsStatsReader(this.deps);
112
+ this.referrals = new ReferralsReader(this.deps);
89
113
  }
90
114
  async globalPerpEngineState() {
91
115
  try {
@@ -218,7 +242,7 @@ export class DecibelReadDex {
218
242
  async accountBalance(addr) {
219
243
  const balance = await this.deps.aptos.view({
220
244
  payload: {
221
- function: `${this.config.deployment.package}::perp_engine::get_account_balance_fungible_signed`,
245
+ function: `${this.config.deployment.package}::perp_engine::get_cross_total_collateral_value`,
222
246
  typeArguments: [],
223
247
  functionArguments: [addr],
224
248
  },
@@ -1,22 +1,6 @@
1
1
  import { BaseReader } from "../base-reader";
2
- import { MarketDepth, MarketDepthAggregationSize, MarketDepthRequestArgs } from "./market-depth.types";
2
+ import { MarketDepth, MarketDepthAggregationSize } from "./market-depth.types";
3
3
  export declare class MarketDepthReader extends BaseReader {
4
- /**
5
- * Get the market depth data for a given market
6
- * @param marketName The name of the market to get market depth for
7
- * @returns The market depth data for the given market
8
- */
9
- getByName({ marketName, limit, fetchOptions }: MarketDepthRequestArgs): Promise<{
10
- market: string;
11
- bids: {
12
- price: number;
13
- size: number;
14
- }[];
15
- asks: {
16
- price: number;
17
- size: number;
18
- }[];
19
- }>;
20
4
  /**
21
5
  * Subscribe to market depth updates for a given market ID
22
6
  * @param marketName The name of the market to subscribe to
@@ -1 +1 @@
1
- {"version":3,"file":"market-depth.reader.d.ts","sourceRoot":"","sources":["../../../src/read/market-depth/market-depth.reader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EACL,WAAW,EACX,0BAA0B,EAC1B,sBAAsB,EAEvB,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C;;;;OAIG;IACG,SAAS,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,sBAAsB;;;;;;;;;;;IAiB3E;;;;;OAKG;IACH,eAAe,CACb,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,0BAA0B,EAC3C,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI;IAQrC,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,GAAE,0BAA8B;IAO3F,mBAAmB;CAGpB"}
1
+ {"version":3,"file":"market-depth.reader.d.ts","sourceRoot":"","sources":["../../../src/read/market-depth/market-depth.reader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,0BAA0B,EAAqB,MAAM,sBAAsB,CAAC;AAElG,qBAAa,iBAAkB,SAAQ,UAAU;IAmB/C;;;;;OAKG;IACH,eAAe,CACb,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,0BAA0B,EAC3C,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI;IAQrC,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,GAAE,0BAA8B;IAO3F,mBAAmB;CAGpB"}
@@ -1,26 +1,24 @@
1
1
  import { getMarketAddr } from "../../utils";
2
2
  import { BaseReader } from "../base-reader";
3
- import { MarketDepthSchema, } from "./market-depth.types";
3
+ import { MarketDepthSchema } from "./market-depth.types";
4
4
  export class MarketDepthReader extends BaseReader {
5
- /**
6
- * Get the market depth data for a given market
7
- * @param marketName The name of the market to get market depth for
8
- * @returns The market depth data for the given market
9
- */
10
- async getByName({ marketName, limit, fetchOptions }) {
11
- const marketAddr = getMarketAddr(marketName, this.deps.config.deployment.perpEngineGlobal);
12
- const queryParams = new URLSearchParams({ market: marketAddr.toString() });
13
- if (limit !== undefined) {
14
- queryParams.set("limit", limit.toString());
15
- }
16
- const response = await this.getRequest({
17
- schema: MarketDepthSchema,
18
- url: `${this.deps.config.tradingHttpUrl}/api/v1/depth`,
19
- queryParams,
20
- options: fetchOptions,
21
- });
22
- return response.data;
23
- }
5
+ // TODO: either reintroduce the /depth endpoint or fully delete this method
6
+ // async getByName({ marketName, limit, fetchOptions }: MarketDepthRequestArgs) {
7
+ // const marketAddr = getMarketAddr(marketName, this.deps.config.deployment.perpEngineGlobal);
8
+ // const queryParams = new URLSearchParams({ market: marketAddr.toString() });
9
+ // if (limit !== undefined) {
10
+ // queryParams.set("limit", limit.toString());
11
+ // }
12
+ //
13
+ // const response = await this.getRequest({
14
+ // schema: MarketDepthSchema,
15
+ // url: `${this.deps.config.tradingHttpUrl}/api/v1/depth`,
16
+ // queryParams,
17
+ // options: fetchOptions,
18
+ // });
19
+ //
20
+ // return response.data;
21
+ // }
24
22
  /**
25
23
  * Subscribe to market depth updates for a given market ID
26
24
  * @param marketName The name of the market to subscribe to