@d8x/perpetuals-sdk 1.2.1 → 1.3.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 (205) hide show
  1. package/dist/cjs/abi/IPerpetualManager.json +7 -2
  2. package/dist/cjs/config/priceFeedConfig.json +12 -6
  3. package/dist/cjs/config/priceFeedOnChain.json +11 -0
  4. package/dist/cjs/config/settlement.json +12 -0
  5. package/dist/cjs/contracts/IPerpetualManager.d.ts +6 -3
  6. package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +6 -2
  7. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +7 -2
  8. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  9. package/dist/cjs/marketData.d.ts +2 -1
  10. package/dist/cjs/marketData.js +18 -8
  11. package/dist/cjs/marketData.js.map +1 -1
  12. package/dist/cjs/nodeSDKTypes.d.ts +21 -2
  13. package/dist/cjs/onChainPxFactory.js +8 -2
  14. package/dist/cjs/onChainPxFactory.js.map +1 -1
  15. package/dist/cjs/onChainPxFeed.d.ts +9 -13
  16. package/dist/cjs/onChainPxFeed.js +8 -45
  17. package/dist/cjs/onChainPxFeed.js.map +1 -1
  18. package/dist/cjs/onChainPxFeedAngle.d.ts +18 -0
  19. package/dist/cjs/onChainPxFeedAngle.js +74 -0
  20. package/dist/cjs/onChainPxFeedAngle.js.map +1 -0
  21. package/dist/cjs/onChainPxFeedRedStone.d.ts +13 -0
  22. package/dist/cjs/onChainPxFeedRedStone.js +52 -0
  23. package/dist/cjs/onChainPxFeedRedStone.js.map +1 -0
  24. package/dist/cjs/perpetualDataHandler.d.ts +31 -3
  25. package/dist/cjs/perpetualDataHandler.js +118 -7
  26. package/dist/cjs/perpetualDataHandler.js.map +1 -1
  27. package/dist/cjs/version.d.ts +1 -1
  28. package/dist/cjs/version.js +1 -1
  29. package/dist/esm/abi/IPerpetualManager.json +7 -2
  30. package/dist/esm/config/priceFeedConfig.json +12 -6
  31. package/dist/esm/config/priceFeedOnChain.json +11 -0
  32. package/dist/esm/config/settlement.json +12 -0
  33. package/dist/esm/contracts/IPerpetualManager.d.ts +6 -3
  34. package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +6 -2
  35. package/dist/esm/contracts/factories/IPerpetualManager__factory.js +7 -2
  36. package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  37. package/dist/{cjs/contracts/factories/MockToken__factory.d.ts → esm/contracts/factories/PerpStorage__factory.d.ts} +115 -128
  38. package/dist/esm/contracts/factories/{MockToken__factory.js → PerpStorage__factory.js} +128 -139
  39. package/dist/esm/contracts/factories/PerpStorage__factory.js.map +1 -0
  40. package/dist/esm/marketData.d.ts +2 -1
  41. package/dist/esm/marketData.js +18 -8
  42. package/dist/esm/marketData.js.map +1 -1
  43. package/dist/esm/nodeSDKTypes.d.ts +21 -2
  44. package/dist/esm/onChainPxFactory.js +8 -2
  45. package/dist/esm/onChainPxFactory.js.map +1 -1
  46. package/dist/esm/onChainPxFeed.d.ts +9 -13
  47. package/dist/esm/onChainPxFeed.js +8 -45
  48. package/dist/esm/onChainPxFeed.js.map +1 -1
  49. package/dist/esm/onChainPxFeedAngle.d.ts +18 -0
  50. package/dist/esm/onChainPxFeedAngle.js +66 -0
  51. package/dist/esm/onChainPxFeedAngle.js.map +1 -0
  52. package/dist/esm/onChainPxFeedRedStone.d.ts +13 -0
  53. package/dist/esm/onChainPxFeedRedStone.js +46 -0
  54. package/dist/esm/onChainPxFeedRedStone.js.map +1 -0
  55. package/dist/esm/perpetualDataHandler.d.ts +31 -3
  56. package/dist/esm/perpetualDataHandler.js +118 -7
  57. package/dist/esm/perpetualDataHandler.js.map +1 -1
  58. package/dist/esm/version.d.ts +1 -1
  59. package/dist/esm/version.js +1 -1
  60. package/doc/d8x-perpetuals-sdk.md +550 -20
  61. package/doc/marketData.md +2 -1
  62. package/doc/perpetualDataHandler.md +53 -2
  63. package/package.json +1 -1
  64. package/src/abi/IPerpetualManager.json +5263 -5258
  65. package/src/config/priceFeedConfig.json +12 -6
  66. package/src/config/priceFeedOnChain.json +11 -0
  67. package/src/config/settlement.json +12 -0
  68. package/src/contracts/IPerpetualManager.ts +6 -3
  69. package/src/contracts/factories/IPerpetualManager__factory.ts +7 -2
  70. package/src/marketData.ts +18 -9
  71. package/src/nodeSDKTypes.ts +23 -2
  72. package/src/onChainPxFactory.ts +7 -1
  73. package/src/onChainPxFeed.ts +16 -55
  74. package/src/onChainPxFeedAngle.ts +74 -0
  75. package/src/onChainPxFeedRedStone.ts +55 -0
  76. package/src/perpetualDataHandler.ts +125 -9
  77. package/src/version.ts +1 -1
  78. package/dist/cjs/abi/Maintainer.json +0 -774
  79. package/dist/cjs/abi/MockToken.json +0 -347
  80. package/dist/cjs/abi/UUPSUpgradeable.json +0 -104
  81. package/dist/cjs/abi/WeETH.json +0 -310
  82. package/dist/cjs/abi-zkevm/LimitOrderBook.json +0 -910
  83. package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +0 -236
  84. package/dist/cjs/contracts/Maintainer.d.ts +0 -799
  85. package/dist/cjs/contracts/Maintainer.js +0 -3
  86. package/dist/cjs/contracts/Maintainer.js.map +0 -1
  87. package/dist/cjs/contracts/MockToken.d.ts +0 -263
  88. package/dist/cjs/contracts/MockToken.js +0 -3
  89. package/dist/cjs/contracts/MockToken.js.map +0 -1
  90. package/dist/cjs/contracts/UUPSUpgradeable.d.ts +0 -118
  91. package/dist/cjs/contracts/UUPSUpgradeable.js +0 -3
  92. package/dist/cjs/contracts/UUPSUpgradeable.js.map +0 -1
  93. package/dist/cjs/contracts/WeETH.d.ts +0 -503
  94. package/dist/cjs/contracts/WeETH.js +0 -3
  95. package/dist/cjs/contracts/WeETH.js.map +0 -1
  96. package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +0 -609
  97. package/dist/cjs/contracts/factories/Maintainer__factory.js +0 -792
  98. package/dist/cjs/contracts/factories/Maintainer__factory.js.map +0 -1
  99. package/dist/cjs/contracts/factories/MockToken__factory.js +0 -365
  100. package/dist/cjs/contracts/factories/MockToken__factory.js.map +0 -1
  101. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
  102. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +0 -122
  103. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
  104. package/dist/cjs/contracts/factories/WeETH__factory.d.ts +0 -545
  105. package/dist/cjs/contracts/factories/WeETH__factory.js +0 -721
  106. package/dist/cjs/contracts/factories/WeETH__factory.js.map +0 -1
  107. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
  108. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5324
  109. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
  110. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
  111. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -254
  112. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
  113. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
  114. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +0 -928
  115. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
  116. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
  117. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +0 -456
  118. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
  119. package/dist/cjs/contracts/factories/lean0/index.d.ts +0 -4
  120. package/dist/cjs/contracts/factories/lean0/index.js +0 -15
  121. package/dist/cjs/contracts/factories/lean0/index.js.map +0 -1
  122. package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +0 -2821
  123. package/dist/cjs/contracts/lean0/IPerpetualManager.js +0 -3
  124. package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +0 -1
  125. package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +0 -533
  126. package/dist/cjs/contracts/lean0/LimitOrderBook.js +0 -3
  127. package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +0 -1
  128. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
  129. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +0 -3
  130. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
  131. package/dist/cjs/contracts/lean0/ShareToken.d.ts +0 -320
  132. package/dist/cjs/contracts/lean0/ShareToken.js +0 -3
  133. package/dist/cjs/contracts/lean0/ShareToken.js.map +0 -1
  134. package/dist/cjs/contracts/lean0/index.d.ts +0 -4
  135. package/dist/cjs/contracts/lean0/index.js +0 -3
  136. package/dist/cjs/contracts/lean0/index.js.map +0 -1
  137. package/dist/esm/abi/Maintainer.json +0 -774
  138. package/dist/esm/abi/MockToken.json +0 -347
  139. package/dist/esm/abi/UUPSUpgradeable.json +0 -104
  140. package/dist/esm/abi/WeETH.json +0 -310
  141. package/dist/esm/abi/lean0/IPerpetualManager.json +0 -5306
  142. package/dist/esm/abi/lean0/LimitOrderBook.json +0 -910
  143. package/dist/esm/abi/lean0/LimitOrderBookFactory.json +0 -236
  144. package/dist/esm/abi/lean0/ShareToken.json +0 -438
  145. package/dist/esm/abi-zkevm/LimitOrderBook.json +0 -910
  146. package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +0 -236
  147. package/dist/esm/contracts/Maintainer.d.ts +0 -799
  148. package/dist/esm/contracts/Maintainer.js +0 -2
  149. package/dist/esm/contracts/Maintainer.js.map +0 -1
  150. package/dist/esm/contracts/MockToken.d.ts +0 -263
  151. package/dist/esm/contracts/MockToken.js +0 -2
  152. package/dist/esm/contracts/MockToken.js.map +0 -1
  153. package/dist/esm/contracts/UUPSUpgradeable.d.ts +0 -118
  154. package/dist/esm/contracts/UUPSUpgradeable.js +0 -2
  155. package/dist/esm/contracts/UUPSUpgradeable.js.map +0 -1
  156. package/dist/esm/contracts/WeETH.d.ts +0 -503
  157. package/dist/esm/contracts/WeETH.js +0 -2
  158. package/dist/esm/contracts/WeETH.js.map +0 -1
  159. package/dist/esm/contracts/factories/Maintainer__factory.d.ts +0 -609
  160. package/dist/esm/contracts/factories/Maintainer__factory.js +0 -788
  161. package/dist/esm/contracts/factories/Maintainer__factory.js.map +0 -1
  162. package/dist/esm/contracts/factories/MockToken__factory.d.ts +0 -273
  163. package/dist/esm/contracts/factories/MockToken__factory.js.map +0 -1
  164. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
  165. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +0 -118
  166. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
  167. package/dist/esm/contracts/factories/WeETH__factory.d.ts +0 -545
  168. package/dist/esm/contracts/factories/WeETH__factory.js +0 -717
  169. package/dist/esm/contracts/factories/WeETH__factory.js.map +0 -1
  170. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
  171. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5320
  172. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
  173. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
  174. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -250
  175. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
  176. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
  177. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +0 -924
  178. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
  179. package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
  180. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +0 -452
  181. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
  182. package/dist/esm/contracts/factories/lean0/index.d.ts +0 -4
  183. package/dist/esm/contracts/factories/lean0/index.js +0 -8
  184. package/dist/esm/contracts/factories/lean0/index.js.map +0 -1
  185. package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +0 -2821
  186. package/dist/esm/contracts/lean0/IPerpetualManager.js +0 -2
  187. package/dist/esm/contracts/lean0/IPerpetualManager.js.map +0 -1
  188. package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +0 -533
  189. package/dist/esm/contracts/lean0/LimitOrderBook.js +0 -2
  190. package/dist/esm/contracts/lean0/LimitOrderBook.js.map +0 -1
  191. package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
  192. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +0 -2
  193. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
  194. package/dist/esm/contracts/lean0/ShareToken.d.ts +0 -320
  195. package/dist/esm/contracts/lean0/ShareToken.js +0 -2
  196. package/dist/esm/contracts/lean0/ShareToken.js.map +0 -1
  197. package/dist/esm/contracts/lean0/index.d.ts +0 -4
  198. package/dist/esm/contracts/lean0/index.js +0 -2
  199. package/dist/esm/contracts/lean0/index.js.map +0 -1
  200. package/src/contracts/MockToken.ts +0 -581
  201. package/src/contracts/UUPSUpgradeable.ts +0 -228
  202. package/src/contracts/WeETH.ts +0 -1104
  203. package/src/contracts/factories/MockToken__factory.ts +0 -368
  204. package/src/contracts/factories/UUPSUpgradeable__factory.ts +0 -128
  205. package/src/contracts/factories/WeETH__factory.ts +0 -721
@@ -67,6 +67,8 @@ import {
67
67
  type SmartContractOrder,
68
68
  type PerpetualData,
69
69
  LiquidityPoolData,
70
+ SettlementConfig,
71
+ SettlementCcyItem,
70
72
  } from "./nodeSDKTypes";
71
73
  import PriceFeeds from "./priceFeeds";
72
74
  import {
@@ -91,7 +93,7 @@ export default class PerpetualDataHandler {
91
93
  protected perpetualIdToSymbol: Map<number, string>; // maps unique perpetual id to symbol of the form BTC-USD-MATIC
92
94
  protected poolStaticInfos: Array<PoolStaticInfo>;
93
95
  protected symbolList: Map<string, string>; //mapping 4-digit symbol <-> long format
94
-
96
+ protected settlementConfig: SettlementConfig;
95
97
  // config
96
98
  public config: NodeSDKConfig;
97
99
  //map margin token of the form MATIC or ETH or USDC into
@@ -132,6 +134,7 @@ export default class PerpetualDataHandler {
132
134
  * PerpetualDataHandler.readSDKConfig.
133
135
  */
134
136
  public constructor(config: NodeSDKConfig) {
137
+ this.settlementConfig = require("./config/settlement.json") as SettlementConfig;
135
138
  this.config = config;
136
139
  this.symbolToPerpStaticInfo = new Map<string, PerpetualStaticInfo>();
137
140
  this.poolStaticInfos = new Array<PoolStaticInfo>();
@@ -240,7 +243,7 @@ export default class PerpetualDataHandler {
240
243
 
241
244
  const proxyCalls: Multicall3.Call3Struct[] = poolInfo.poolMarginTokenAddr.map((tokenAddr) => ({
242
245
  target: tokenAddr,
243
- allowFailure: true,
246
+ allowFailure: false,
244
247
  callData: IERC20.encodeFunctionData("decimals"),
245
248
  }));
246
249
  proxyCalls.push({
@@ -259,18 +262,19 @@ export default class PerpetualDataHandler {
259
262
 
260
263
  // decimals
261
264
  for (let j = 0; j < poolInfo.nestedPerpetualIDs.length; j++) {
262
- const decimals =
263
- poolInfo.poolMarginTokenAddr[j] == ZERO_ADDRESS
264
- ? undefined
265
- : (IERC20.decodeFunctionResult("decimals", encodedResults[j].returnData)[0] as number);
265
+ const decimals = IERC20.decodeFunctionResult("decimals", encodedResults[j].returnData)[0] as number;
266
266
  let info: PoolStaticInfo = {
267
267
  poolId: j + 1,
268
268
  poolMarginSymbol: "", //fill later
269
269
  poolMarginTokenAddr: poolInfo.poolMarginTokenAddr[j],
270
270
  poolMarginTokenDecimals: decimals,
271
+ poolSettleSymbol: "", //fill later
272
+ poolSettleTokenAddr: poolInfo.poolMarginTokenAddr[j], //correct later
273
+ poolSettleTokenDecimals: decimals, //correct later
271
274
  shareTokenAddr: poolInfo.poolShareTokenAddr[j],
272
275
  oracleFactoryAddr: poolInfo.oracleFactory,
273
276
  isRunning: poolInfo.poolShareTokenAddr[j] != AddressZero,
277
+ MgnToSettleTriangulation: ["*", "1"], // correct later
274
278
  };
275
279
  this.poolStaticInfos.push(info);
276
280
  }
@@ -351,6 +355,9 @@ export default class PerpetualDataHandler {
351
355
  this.symbolToTokenAddrMap.set(effectivePoolCCY, this.poolStaticInfos[perp.poolId - 1].poolMarginTokenAddr);
352
356
  this.symbolToPerpStaticInfo.set(currentSymbol3, perpStaticInfos[j]);
353
357
  }
358
+
359
+ // handle settlement token.
360
+ this.initSettlementToken(perpStaticInfos);
354
361
  // pre-calculate all triangulation paths so we can easily get from
355
362
  // the prices of price-feeds to the index price required, e.g.
356
363
  // BTC-USDC : BTC-USD / USDC-USD
@@ -363,6 +370,47 @@ export default class PerpetualDataHandler {
363
370
  }
364
371
  }
365
372
 
373
+ /**
374
+ * Initializes settlement currency for all pools by
375
+ * completing this.poolStaticInfos with settlement currency info
376
+ * @param perpStaticInfos PerpetualStaticInfo array from contract call
377
+ */
378
+ private initSettlementToken(perpStaticInfos: PerpetualStaticInfo[]) {
379
+ let currPoolId = -1;
380
+ for (let j = 0; j < perpStaticInfos.length; j++) {
381
+ const poolId = perpStaticInfos[j].poolId;
382
+ if (poolId == currPoolId) {
383
+ continue;
384
+ }
385
+ currPoolId = poolId;
386
+ // We only assume the flag to be correct
387
+ // in the first perpetual of the pool
388
+ const flag = BigNumber.from(perpStaticInfos[j].perpFlags.toString());
389
+ // find settlement setting for this flag
390
+ let s: SettlementCcyItem | undefined = undefined;
391
+ for (let j = 0; j < this.settlementConfig.length; j++) {
392
+ const masked = flag.and(BigNumber.from(this.settlementConfig[j].perpFlags.toString()));
393
+ if (!masked.isZero()) {
394
+ s = this.settlementConfig[j];
395
+ break;
396
+ }
397
+ }
398
+ if (s == undefined) {
399
+ // no setting for given flag, settlement token = margin token
400
+ this.poolStaticInfos[poolId - 1].poolSettleSymbol = this.poolStaticInfos[poolId - 1].poolMarginSymbol;
401
+ this.poolStaticInfos[poolId - 1].poolSettleTokenAddr = this.poolStaticInfos[poolId - 1].poolMarginTokenAddr;
402
+ this.poolStaticInfos[poolId - 1].poolSettleTokenDecimals =
403
+ this.poolStaticInfos[poolId - 1].poolMarginTokenDecimals;
404
+ this.poolStaticInfos[poolId - 1].MgnToSettleTriangulation = ["*", "1"];
405
+ } else {
406
+ this.poolStaticInfos[poolId - 1].poolSettleSymbol = s.settleCCY;
407
+ this.poolStaticInfos[poolId - 1].poolSettleTokenAddr = s.settleCCYAddr;
408
+ this.poolStaticInfos[poolId - 1].poolSettleTokenDecimals = s.settleTokenDecimals;
409
+ this.poolStaticInfos[poolId - 1].MgnToSettleTriangulation = s.triangulation;
410
+ }
411
+ }
412
+ }
413
+
366
414
  /**
367
415
  * Utility function to export mapping and re-use in other objects.
368
416
  * @ignore
@@ -460,6 +508,34 @@ export default class PerpetualDataHandler {
460
508
  return await this.priceFeedGetter.fetchLatestFeedPriceInfoForPerpetual(symbol);
461
509
  }
462
510
 
511
+ /**
512
+ * fetchCollateralToSettlementConversion returns the price which converts the collateral
513
+ * currency into settlement currency. For example if BTC-USD-STUSD has settlement currency
514
+ * USDC, we get
515
+ * let px = fetchCollateralToSettlementConversion("BTC-USD-STUSD")
516
+ * valueInUSDC = collateralInSTUSD * px
517
+ * @param symbol either perpetual symbol of the form BTC-USD-MATIC or just collateral token
518
+ */
519
+ public async fetchCollateralToSettlementConversion(symbol: string): Promise<number> {
520
+ let j = this.getPoolStaticInfoIndexFromSymbol(symbol);
521
+ if (this.poolStaticInfos[j].poolMarginSymbol == this.poolStaticInfos[j].poolSettleSymbol) {
522
+ // settlement currency = collateral currency
523
+ return 1;
524
+ }
525
+ const triang = this.poolStaticInfos[j].MgnToSettleTriangulation;
526
+ let v = 1;
527
+ for (let k = 0; k < triang.length; k = k + 2) {
528
+ const sym = triang[k + 1];
529
+ const pxMap = await this.priceFeedGetter.fetchFeedPrices([sym]);
530
+ const vpxinfo = pxMap.get(sym);
531
+ if (vpxinfo == undefined) {
532
+ throw Error(`price ${sym} not available`);
533
+ }
534
+ v = triang[k] == "*" ? v * vpxinfo[0] : v / vpxinfo[0];
535
+ }
536
+ return v;
537
+ }
538
+
463
539
  /**
464
540
  * Get list of required pyth price source IDs for given perpetual
465
541
  * @param symbol perpetual symbol, e.g., BTC-USD-MATIC
@@ -555,6 +631,8 @@ export default class PerpetualDataHandler {
555
631
  lotSizeBC: ABK64x64ToFloat(perpInfos[j].fLotSizeBC),
556
632
  referralRebate: ABK64x64ToFloat(perpInfos[j].fReferralRebateCC),
557
633
  priceIds: perpInfos[j].priceIds,
634
+ isPyth: perpInfos[j].isPyth,
635
+ perpFlags: perpInfos[j].perpFlags,
558
636
  };
559
637
  infoArr.push(info);
560
638
  }
@@ -692,7 +770,7 @@ export default class PerpetualDataHandler {
692
770
  fTargetDFSize: ABK64x64ToFloat(BigNumber.from(orig.fTargetDFSize)), // target default fund size
693
771
  fkStar: ABK64x64ToFloat(BigNumber.from(orig.fkStar)), // signed trade size that minimizes the AMM risk
694
772
  fAMMTargetDD: ABK64x64ToFloat(BigNumber.from(orig.fAMMTargetDD)), // parameter: target distance to default (=inverse of default probability)
695
- fAMMMinSizeCC: ABK64x64ToFloat(BigNumber.from(orig.fAMMMinSizeCC)), // parameter: minimal size of AMM pool, regardless of current exposure
773
+ perpFlags: Number(orig.perpFlags?.toString()), // flags for perpetual
696
774
  fMinimalTraderExposureEMA: ABK64x64ToFloat(BigNumber.from(orig.fMinimalTraderExposureEMA)), // parameter: minimal value for fCurrentTraderExposureEMA that we don't want to undershoot
697
775
  fMinimalAMMExposureEMA: ABK64x64ToFloat(BigNumber.from(orig.fMinimalAMMExposureEMA)), // parameter: minimal abs value for fCurrentAMMExposureEMA that we don't want to undershoot
698
776
  fSettlementS3PriceData: ABK64x64ToFloat(BigNumber.from(orig.fSettlementS3PriceData)), //quanto index
@@ -1645,7 +1723,7 @@ export default class PerpetualDataHandler {
1645
1723
  /**
1646
1724
  *
1647
1725
  * @param symbol Symbol of the form USDC
1648
- * @returns Address of the corresponding token
1726
+ * @returns Address of the corresponding margin token
1649
1727
  */
1650
1728
  public getMarginTokenFromSymbol(symbol: string): string | undefined {
1651
1729
  let pools = this.poolStaticInfos!;
@@ -1661,10 +1739,29 @@ export default class PerpetualDataHandler {
1661
1739
  return undefined;
1662
1740
  }
1663
1741
 
1742
+ /**
1743
+ *
1744
+ * @param symbol Symbol of the form ETH-USD-WEETH
1745
+ * @returns Address of the corresponding settlement token
1746
+ */
1747
+ public getSettlementTokenFromSymbol(symbol: string): string | undefined {
1748
+ let pools = this.poolStaticInfos!;
1749
+ let poolId = PerpetualDataHandler._getPoolIdFromSymbol(symbol, this.poolStaticInfos);
1750
+ let k = 0;
1751
+ while (k < pools.length) {
1752
+ if (pools[k].poolId == poolId) {
1753
+ // pool found
1754
+ return pools[k].poolSettleTokenAddr;
1755
+ }
1756
+ k++;
1757
+ }
1758
+ return undefined;
1759
+ }
1760
+
1664
1761
  /**
1665
1762
  *
1666
1763
  * @param symbol Symbol of the form USDC
1667
- * @returns Decimals of the corresponding token
1764
+ * @returns Decimals of the corresponding margin token
1668
1765
  */
1669
1766
  public getMarginTokenDecimalsFromSymbol(symbol: string): number | undefined {
1670
1767
  let pools = this.poolStaticInfos!;
@@ -1680,6 +1777,25 @@ export default class PerpetualDataHandler {
1680
1777
  return undefined;
1681
1778
  }
1682
1779
 
1780
+ /**
1781
+ *
1782
+ * @param symbol Symbol of the form ETH-USD-WEETH
1783
+ * @returns Decimals of the corresponding settlement token
1784
+ */
1785
+ public getSettlementTokenDecimalsFromSymbol(symbol: string): number | undefined {
1786
+ let pools = this.poolStaticInfos!;
1787
+ let poolId = PerpetualDataHandler._getPoolIdFromSymbol(symbol, this.poolStaticInfos);
1788
+ let k = 0;
1789
+ while (k < pools.length) {
1790
+ if (pools[k].poolId == poolId) {
1791
+ // pool found
1792
+ return pools[k].poolSettleTokenDecimals;
1793
+ }
1794
+ k++;
1795
+ }
1796
+ return undefined;
1797
+ }
1798
+
1683
1799
  /**
1684
1800
  * Get ABI for LimitOrderBook, Proxy, or Share Pool Token
1685
1801
  * @param contract name of contract: proxy|lob|sharetoken
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const D8X_SDK_VERSION = "1.2.1";
1
+ export const D8X_SDK_VERSION = "1.3.0";