@d8x/perpetuals-sdk 2.4.0 → 2.4.1

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 (169) hide show
  1. package/dist/cjs/abi/BeaconProxy.json +71 -0
  2. package/dist/cjs/abi/Maintainer.json +774 -0
  3. package/dist/cjs/abi/MockToken.json +347 -0
  4. package/dist/cjs/abi/UUPSUpgradeable.json +104 -0
  5. package/dist/cjs/abi/WeETH.json +310 -0
  6. package/dist/cjs/abi-zkevm/LimitOrderBook.json +910 -0
  7. package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +236 -0
  8. package/dist/cjs/config/defaultConfig.json +1 -1
  9. package/dist/cjs/constants.d.ts +1 -0
  10. package/dist/cjs/constants.js +2 -1
  11. package/dist/cjs/constants.js.map +1 -1
  12. package/dist/cjs/contracts/BeaconProxy.d.ts +63 -0
  13. package/dist/cjs/contracts/BeaconProxy.js +3 -0
  14. package/dist/cjs/contracts/BeaconProxy.js.map +1 -0
  15. package/dist/cjs/contracts/Maintainer.d.ts +799 -0
  16. package/dist/cjs/contracts/Maintainer.js +3 -0
  17. package/dist/cjs/contracts/Maintainer.js.map +1 -0
  18. package/dist/cjs/contracts/MockToken.d.ts +263 -0
  19. package/dist/cjs/contracts/MockToken.js +3 -0
  20. package/dist/cjs/contracts/MockToken.js.map +1 -0
  21. package/dist/cjs/contracts/UUPSUpgradeable.d.ts +118 -0
  22. package/dist/cjs/contracts/UUPSUpgradeable.js +3 -0
  23. package/dist/cjs/contracts/UUPSUpgradeable.js.map +1 -0
  24. package/dist/cjs/contracts/WeETH.d.ts +503 -0
  25. package/dist/cjs/contracts/WeETH.js +3 -0
  26. package/dist/cjs/contracts/WeETH.js.map +1 -0
  27. package/dist/cjs/contracts/factories/BeaconProxy__factory.d.ts +61 -0
  28. package/dist/cjs/contracts/factories/BeaconProxy__factory.js +89 -0
  29. package/dist/cjs/contracts/factories/BeaconProxy__factory.js.map +1 -0
  30. package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +609 -0
  31. package/dist/cjs/contracts/factories/Maintainer__factory.js +792 -0
  32. package/dist/cjs/contracts/factories/Maintainer__factory.js.map +1 -0
  33. package/dist/{esm/contracts/factories/PerpStorage__factory.d.ts → cjs/contracts/factories/MockToken__factory.d.ts} +128 -115
  34. package/dist/cjs/contracts/factories/MockToken__factory.js +365 -0
  35. package/dist/cjs/contracts/factories/MockToken__factory.js.map +1 -0
  36. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +87 -0
  37. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +122 -0
  38. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +1 -0
  39. package/dist/cjs/contracts/factories/WeETH__factory.d.ts +545 -0
  40. package/dist/cjs/contracts/factories/WeETH__factory.js +721 -0
  41. package/dist/cjs/contracts/factories/WeETH__factory.js.map +1 -0
  42. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +4136 -0
  43. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +5324 -0
  44. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +1 -0
  45. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +189 -0
  46. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +254 -0
  47. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +1 -0
  48. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +715 -0
  49. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +928 -0
  50. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +1 -0
  51. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +344 -0
  52. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +456 -0
  53. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +1 -0
  54. package/dist/cjs/contracts/factories/lean0/index.d.ts +4 -0
  55. package/dist/cjs/contracts/factories/lean0/index.js +15 -0
  56. package/dist/cjs/contracts/factories/lean0/index.js.map +1 -0
  57. package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +2821 -0
  58. package/dist/cjs/contracts/lean0/IPerpetualManager.js +3 -0
  59. package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +1 -0
  60. package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +533 -0
  61. package/dist/cjs/contracts/lean0/LimitOrderBook.js +3 -0
  62. package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +1 -0
  63. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +210 -0
  64. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +3 -0
  65. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +1 -0
  66. package/dist/cjs/contracts/lean0/ShareToken.d.ts +320 -0
  67. package/dist/cjs/contracts/lean0/ShareToken.js +3 -0
  68. package/dist/cjs/contracts/lean0/ShareToken.js.map +1 -0
  69. package/dist/cjs/contracts/lean0/index.d.ts +4 -0
  70. package/dist/cjs/contracts/lean0/index.js +3 -0
  71. package/dist/cjs/contracts/lean0/index.js.map +1 -0
  72. package/dist/cjs/perpetualDataHandler.d.ts +6 -0
  73. package/dist/cjs/perpetualDataHandler.js +12 -0
  74. package/dist/cjs/perpetualDataHandler.js.map +1 -1
  75. package/dist/cjs/priceFeeds.d.ts +12 -1
  76. package/dist/cjs/priceFeeds.js +55 -17
  77. package/dist/cjs/priceFeeds.js.map +1 -1
  78. package/dist/cjs/version.d.ts +1 -1
  79. package/dist/cjs/version.js +1 -1
  80. package/dist/esm/abi/BeaconProxy.json +71 -0
  81. package/dist/esm/abi/Maintainer.json +774 -0
  82. package/dist/esm/abi/MockToken.json +347 -0
  83. package/dist/esm/abi/UUPSUpgradeable.json +104 -0
  84. package/dist/esm/abi/WeETH.json +310 -0
  85. package/dist/esm/abi/lean0/IPerpetualManager.json +5306 -0
  86. package/dist/esm/abi/lean0/LimitOrderBook.json +910 -0
  87. package/dist/esm/abi/lean0/LimitOrderBookFactory.json +236 -0
  88. package/dist/esm/abi/lean0/ShareToken.json +438 -0
  89. package/dist/esm/abi-zkevm/LimitOrderBook.json +910 -0
  90. package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +236 -0
  91. package/dist/esm/config/defaultConfig.json +1 -1
  92. package/dist/esm/constants.d.ts +1 -0
  93. package/dist/esm/constants.js +1 -0
  94. package/dist/esm/constants.js.map +1 -1
  95. package/dist/esm/contracts/BeaconProxy.d.ts +63 -0
  96. package/dist/esm/contracts/BeaconProxy.js +2 -0
  97. package/dist/esm/contracts/BeaconProxy.js.map +1 -0
  98. package/dist/esm/contracts/Maintainer.d.ts +799 -0
  99. package/dist/esm/contracts/Maintainer.js +2 -0
  100. package/dist/esm/contracts/Maintainer.js.map +1 -0
  101. package/dist/esm/contracts/MockToken.d.ts +263 -0
  102. package/dist/esm/contracts/MockToken.js +2 -0
  103. package/dist/esm/contracts/MockToken.js.map +1 -0
  104. package/dist/esm/contracts/UUPSUpgradeable.d.ts +118 -0
  105. package/dist/esm/contracts/UUPSUpgradeable.js +2 -0
  106. package/dist/esm/contracts/UUPSUpgradeable.js.map +1 -0
  107. package/dist/esm/contracts/WeETH.d.ts +503 -0
  108. package/dist/esm/contracts/WeETH.js +2 -0
  109. package/dist/esm/contracts/WeETH.js.map +1 -0
  110. package/dist/esm/contracts/factories/BeaconProxy__factory.d.ts +61 -0
  111. package/dist/esm/contracts/factories/BeaconProxy__factory.js +85 -0
  112. package/dist/esm/contracts/factories/BeaconProxy__factory.js.map +1 -0
  113. package/dist/esm/contracts/factories/Maintainer__factory.d.ts +609 -0
  114. package/dist/esm/contracts/factories/Maintainer__factory.js +788 -0
  115. package/dist/esm/contracts/factories/Maintainer__factory.js.map +1 -0
  116. package/dist/esm/contracts/factories/MockToken__factory.d.ts +273 -0
  117. package/dist/esm/contracts/factories/{PerpStorage__factory.js → MockToken__factory.js} +139 -128
  118. package/dist/esm/contracts/factories/MockToken__factory.js.map +1 -0
  119. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +87 -0
  120. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +118 -0
  121. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +1 -0
  122. package/dist/esm/contracts/factories/WeETH__factory.d.ts +545 -0
  123. package/dist/esm/contracts/factories/WeETH__factory.js +717 -0
  124. package/dist/esm/contracts/factories/WeETH__factory.js.map +1 -0
  125. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +4136 -0
  126. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +5320 -0
  127. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +1 -0
  128. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +189 -0
  129. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +250 -0
  130. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +1 -0
  131. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +715 -0
  132. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +924 -0
  133. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +1 -0
  134. package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +344 -0
  135. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +452 -0
  136. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +1 -0
  137. package/dist/esm/contracts/factories/lean0/index.d.ts +4 -0
  138. package/dist/esm/contracts/factories/lean0/index.js +8 -0
  139. package/dist/esm/contracts/factories/lean0/index.js.map +1 -0
  140. package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +2821 -0
  141. package/dist/esm/contracts/lean0/IPerpetualManager.js +2 -0
  142. package/dist/esm/contracts/lean0/IPerpetualManager.js.map +1 -0
  143. package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +533 -0
  144. package/dist/esm/contracts/lean0/LimitOrderBook.js +2 -0
  145. package/dist/esm/contracts/lean0/LimitOrderBook.js.map +1 -0
  146. package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +210 -0
  147. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +2 -0
  148. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +1 -0
  149. package/dist/esm/contracts/lean0/ShareToken.d.ts +320 -0
  150. package/dist/esm/contracts/lean0/ShareToken.js +2 -0
  151. package/dist/esm/contracts/lean0/ShareToken.js.map +1 -0
  152. package/dist/esm/contracts/lean0/index.d.ts +4 -0
  153. package/dist/esm/contracts/lean0/index.js +2 -0
  154. package/dist/esm/contracts/lean0/index.js.map +1 -0
  155. package/dist/esm/perpetualDataHandler.d.ts +6 -0
  156. package/dist/esm/perpetualDataHandler.js +13 -1
  157. package/dist/esm/perpetualDataHandler.js.map +1 -1
  158. package/dist/esm/priceFeeds.d.ts +12 -1
  159. package/dist/esm/priceFeeds.js +55 -17
  160. package/dist/esm/priceFeeds.js.map +1 -1
  161. package/dist/esm/version.d.ts +1 -1
  162. package/dist/esm/version.js +1 -1
  163. package/package.json +1 -1
  164. package/src/config/defaultConfig.json +1 -1
  165. package/src/constants.ts +1 -0
  166. package/src/perpetualDataHandler.ts +14 -0
  167. package/src/priceFeeds.ts +61 -19
  168. package/src/version.ts +1 -1
  169. package/dist/esm/contracts/factories/PerpStorage__factory.js.map +0 -1
package/src/priceFeeds.ts CHANGED
@@ -282,18 +282,36 @@ export default class PriceFeeds {
282
282
  }
283
283
  }
284
284
  // get all feed prices
285
- let feedPrices = await this.fetchFeedPrices(feedSymbols);
285
+ const feedResponses = await this.fetchFeedPriceResponses(feedSymbols);
286
286
  // triangulate
287
+ let feedPrices = new Map();
288
+ for (const [key, value] of feedPrices) {
289
+ feedPrices.set(key, [value[0], value[1]]);
290
+ }
287
291
  let [prices, mktClosed] = this.triangulatePricesFromFeedPrices(indexSymbols, feedPrices);
288
- return {
289
- s2: prices[0],
290
- s3: prices[1],
291
- ema: prices[0],
292
- s2MktClosed: mktClosed[0],
293
- s3MktClosed: mktClosed[1],
294
- conf: BigInt(0),
295
- predMktCLOBParams: BigInt(0),
296
- } as IdxPriceInfo;
292
+ // if low liquidity, assume base-quote is a feed
293
+ if (this.dataHandler.isLowLiquidityMarket(symbol)) {
294
+ const [, , s2Info, s2EmaInfo] = feedResponses.get(indexSymbols[0])!;
295
+ return {
296
+ s2: prices[0],
297
+ s3: prices[1],
298
+ ema: decNToFloat(s2EmaInfo?.price ?? 0n, -(s2EmaInfo?.expo ?? 1)),
299
+ s2MktClosed: mktClosed[0],
300
+ s3MktClosed: mktClosed[1],
301
+ conf: s2Info?.conf ?? 0n,
302
+ predMktCLOBParams: s2EmaInfo?.conf ?? 0n,
303
+ } as IdxPriceInfo;
304
+ } else {
305
+ return {
306
+ s2: prices[0],
307
+ s3: prices[1],
308
+ ema: prices[0],
309
+ s2MktClosed: mktClosed[0],
310
+ s3MktClosed: mktClosed[1],
311
+ conf: BigInt(0),
312
+ predMktCLOBParams: BigInt(0),
313
+ } as IdxPriceInfo;
314
+ }
297
315
  }
298
316
 
299
317
  /**
@@ -308,6 +326,17 @@ export default class PriceFeeds {
308
326
  * <symbol>:ema for each polymarket symbol that maps to the ema price
309
327
  */
310
328
  public async fetchFeedPrices(symbols?: string[]): Promise<Map<string, [number, boolean]>> {
329
+ const resps = await this.fetchFeedPriceResponses(symbols);
330
+ const result = new Map();
331
+ for (const [key, value] of resps) {
332
+ result.set(key, [value[0], value[1]]);
333
+ }
334
+ return result;
335
+ }
336
+
337
+ public async fetchFeedPriceResponses(
338
+ symbols?: string[]
339
+ ): Promise<Map<string, [number, boolean, PriceFeedFormat | undefined, PriceFeedFormat | undefined]>> {
311
340
  if (this.config == undefined) {
312
341
  throw Error("init() required");
313
342
  }
@@ -350,23 +379,23 @@ export default class PriceFeeds {
350
379
  }
351
380
  let onChainPromise = this.queryOnChainPxFeeds(onChainSyms);
352
381
  let polyMktsPromise = this.queryPolyMktsPxFeeds(polyMktSyms);
353
- let resultPrices = new Map<string, [number, boolean]>();
382
+ let resultPrices = new Map<string, [number, boolean, PriceFeedFormat | undefined, PriceFeedFormat | undefined]>();
354
383
  for (let k = 0; k < queries.length; k++) {
355
384
  if (queries[k] == undefined) {
356
385
  continue;
357
386
  }
358
- let [, pxInfo]: [string[], PriceFeedFormat[]] = await this.fetchPriceQuery(queries[k] + suffixes[k]);
387
+ const { price: pxInfo, emaPrice } = await this.fetchFullPriceQuery(queries[k] + suffixes[k]);
359
388
  let tsSecNow = Math.round(Date.now() / 1000);
360
389
  for (let j = 0; j < pxInfo.length; j++) {
361
390
  let price = decNToFloat(BigInt(pxInfo[j].price), -pxInfo[j].expo);
362
391
  let isMarketClosed = tsSecNow - pxInfo[j].publish_time > this.THRESHOLD_MARKET_CLOSED_SEC;
363
- resultPrices.set(symbolsOfEndpoint[k][j], [price, isMarketClosed]);
392
+ resultPrices.set(symbolsOfEndpoint[k][j], [price, isMarketClosed, pxInfo[j], emaPrice[j]]);
364
393
  }
365
394
  }
366
395
  let onChPxs = await onChainPromise;
367
396
  for (let k = 0; k < onChainSyms.length; k++) {
368
397
  let sym = onChainSyms[k];
369
- resultPrices.set(sym, [onChPxs[k], false]);
398
+ resultPrices.set(sym, [onChPxs[k], false, undefined, undefined]);
370
399
  }
371
400
  let polyPxs = await polyMktsPromise;
372
401
  for (let k = 0; k < polyPxs.length; k++) {
@@ -374,8 +403,8 @@ export default class PriceFeeds {
374
403
  if (polyPxs[k] == undefined) {
375
404
  continue;
376
405
  }
377
- resultPrices.set(sym, [polyPxs[k]!.s2, polyPxs[k]!.s2MktClosed]);
378
- resultPrices.set(sym + ":ema", [polyPxs[k]!.ema, polyPxs[k]!.s2MktClosed]);
406
+ resultPrices.set(sym, [polyPxs[k]!.s2, polyPxs[k]!.s2MktClosed, undefined, undefined]);
407
+ resultPrices.set(sym + ":ema", [polyPxs[k]!.ema, polyPxs[k]!.s2MktClosed, undefined, undefined]);
379
408
  }
380
409
  return resultPrices;
381
410
  }
@@ -600,9 +629,21 @@ export default class PriceFeeds {
600
629
  /**
601
630
  * Queries the REST endpoint and returns parsed price data
602
631
  * @param query query price-info from endpoint
603
- * @returns vaa and price info
632
+ * @returns array of vaa and price info
604
633
  */
605
634
  public async fetchPriceQuery(query: string): Promise<[string[], PriceFeedFormat[]]> {
635
+ const fullResp = await this.fetchFullPriceQuery(query);
636
+ return [fullResp.updateData, fullResp.price];
637
+ }
638
+
639
+ /**
640
+ * Queries the REST endpoint and returns parsed price data
641
+ * @param query query price-info from endpoint
642
+ * @returns object with vaa and price info (both spot and ema)
643
+ */
644
+ public async fetchFullPriceQuery(
645
+ query: string
646
+ ): Promise<{ updateData: string[]; price: PriceFeedFormat[]; emaPrice: PriceFeedFormat[] }> {
606
647
  let values: PythV2LatestPriceFeed;
607
648
  const cached = this.cache.get(query);
608
649
  const tsNow = Date.now() / 1_000;
@@ -620,6 +661,7 @@ export default class PriceFeeds {
620
661
  }
621
662
  const priceFeedUpdates = new Array<string>();
622
663
  const px = new Array<PriceFeedFormat>();
664
+ const emaPx = new Array<PriceFeedFormat>();
623
665
  for (let k = 0; k < values.parsed.length; k++) {
624
666
  // pyth v2 only provides one compressed vaa when querying multiple prices.
625
667
  // contracts can only use separate ones. In case we get only one vaa,
@@ -627,9 +669,9 @@ export default class PriceFeeds {
627
669
  const idx = k % values.binary.data.length;
628
670
  priceFeedUpdates.push("0x" + Buffer.from(values.binary.data[idx], "base64").toString("hex"));
629
671
  px.push(values.parsed[k].price as PriceFeedFormat);
672
+ emaPx.push(values.parsed[k].ema_price as PriceFeedFormat);
630
673
  }
631
-
632
- return [priceFeedUpdates, px];
674
+ return { updateData: priceFeedUpdates, price: px, emaPrice: emaPx };
633
675
  }
634
676
 
635
677
  /**
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const D8X_SDK_VERSION = "2.4.0";
1
+ export const D8X_SDK_VERSION = "2.4.1";
@@ -1 +0,0 @@
1
- {"version":3,"file":"PerpStorage__factory.js","sourceRoot":"","sources":["../../../../src/contracts/factories/PerpStorage__factory.ts"],"names":[],"mappings":"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"}