@d8x/perpetuals-sdk 2.0.13-alpha → 2.1.1-alpha2

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 (282) hide show
  1. package/dist/cjs/abi/IPerpetualManager.json +154 -4
  2. package/dist/cjs/abi/OracleFactory.json +94 -25
  3. package/dist/cjs/abi/PerpetualManagerProxy.json +212 -2
  4. package/dist/cjs/accountTrade.d.ts +3 -3
  5. package/dist/cjs/accountTrade.js +1 -1
  6. package/dist/cjs/accountTrade.js.map +1 -1
  7. package/dist/cjs/brokerTool.d.ts +5 -1
  8. package/dist/cjs/brokerTool.js +20 -7
  9. package/dist/cjs/brokerTool.js.map +1 -1
  10. package/dist/cjs/config/defaultConfig.json +0 -12
  11. package/dist/cjs/config/priceFeedConfig.json +1 -19
  12. package/dist/cjs/constants.d.ts +0 -1
  13. package/dist/cjs/constants.js +2 -3
  14. package/dist/cjs/constants.js.map +1 -1
  15. package/dist/cjs/contracts/IPerpetualManager.d.ts +93 -13
  16. package/dist/cjs/contracts/OracleFactory.d.ts +69 -20
  17. package/dist/cjs/contracts/PerpetualManagerProxy.d.ts +109 -4
  18. package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +118 -4
  19. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +154 -4
  20. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  21. package/dist/cjs/contracts/factories/OracleFactory__factory.d.ts +75 -20
  22. package/dist/cjs/contracts/factories/OracleFactory__factory.js +94 -25
  23. package/dist/cjs/contracts/factories/OracleFactory__factory.js.map +1 -1
  24. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.d.ts +159 -2
  25. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js +212 -2
  26. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
  27. package/dist/cjs/d8XMath.d.ts +59 -1
  28. package/dist/cjs/d8XMath.js +259 -3
  29. package/dist/cjs/d8XMath.js.map +1 -1
  30. package/dist/cjs/liquidatorTool.d.ts +1 -0
  31. package/dist/cjs/liquidatorTool.js +24 -7
  32. package/dist/cjs/liquidatorTool.js.map +1 -1
  33. package/dist/cjs/marketData.d.ts +45 -23
  34. package/dist/cjs/marketData.js +292 -197
  35. package/dist/cjs/marketData.js.map +1 -1
  36. package/dist/cjs/nodeSDKTypes.d.ts +24 -1
  37. package/dist/cjs/nodeSDKTypes.js.map +1 -1
  38. package/dist/cjs/orderExecutorTool.d.ts +3 -3
  39. package/dist/cjs/orderExecutorTool.js +38 -13
  40. package/dist/cjs/orderExecutorTool.js.map +1 -1
  41. package/dist/cjs/perpetualDataHandler.d.ts +28 -17
  42. package/dist/cjs/perpetualDataHandler.js +71 -45
  43. package/dist/cjs/perpetualDataHandler.js.map +1 -1
  44. package/dist/cjs/perpetualEventHandler.d.ts +1 -1
  45. package/dist/cjs/perpetualEventHandler.js +6 -7
  46. package/dist/cjs/perpetualEventHandler.js.map +1 -1
  47. package/dist/cjs/polyMktsPxFeed.d.ts +5 -3
  48. package/dist/cjs/polyMktsPxFeed.js +34 -2
  49. package/dist/cjs/polyMktsPxFeed.js.map +1 -1
  50. package/dist/cjs/priceFeeds.d.ts +6 -7
  51. package/dist/cjs/priceFeeds.js +36 -14
  52. package/dist/cjs/priceFeeds.js.map +1 -1
  53. package/dist/cjs/version.d.ts +1 -1
  54. package/dist/cjs/version.js +1 -1
  55. package/dist/cjs/writeAccessHandler.js +1 -1
  56. package/dist/cjs/writeAccessHandler.js.map +1 -1
  57. package/dist/esm/abi/IPerpetualManager.json +154 -4
  58. package/dist/esm/abi/OracleFactory.json +94 -25
  59. package/dist/esm/abi/PerpetualManagerProxy.json +212 -2
  60. package/dist/esm/accountTrade.d.ts +3 -3
  61. package/dist/esm/accountTrade.js +1 -1
  62. package/dist/esm/accountTrade.js.map +1 -1
  63. package/dist/esm/brokerTool.d.ts +5 -1
  64. package/dist/esm/brokerTool.js +21 -8
  65. package/dist/esm/brokerTool.js.map +1 -1
  66. package/dist/esm/config/defaultConfig.json +0 -12
  67. package/dist/esm/config/priceFeedConfig.json +1 -19
  68. package/dist/esm/constants.d.ts +0 -1
  69. package/dist/esm/constants.js +1 -2
  70. package/dist/esm/constants.js.map +1 -1
  71. package/dist/esm/contracts/IPerpetualManager.d.ts +93 -13
  72. package/dist/esm/contracts/OracleFactory.d.ts +69 -20
  73. package/dist/esm/contracts/PerpetualManagerProxy.d.ts +109 -4
  74. package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +118 -4
  75. package/dist/esm/contracts/factories/IPerpetualManager__factory.js +154 -4
  76. package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  77. package/dist/esm/contracts/factories/OracleFactory__factory.d.ts +75 -20
  78. package/dist/esm/contracts/factories/OracleFactory__factory.js +94 -25
  79. package/dist/esm/contracts/factories/OracleFactory__factory.js.map +1 -1
  80. package/dist/{cjs/contracts/factories/MockToken__factory.d.ts → esm/contracts/factories/PerpStorage__factory.d.ts} +115 -128
  81. package/dist/esm/contracts/factories/{MockToken__factory.js → PerpStorage__factory.js} +128 -139
  82. package/dist/esm/contracts/factories/PerpStorage__factory.js.map +1 -0
  83. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.d.ts +159 -2
  84. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js +212 -2
  85. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
  86. package/dist/esm/d8XMath.d.ts +59 -1
  87. package/dist/esm/d8XMath.js +251 -2
  88. package/dist/esm/d8XMath.js.map +1 -1
  89. package/dist/esm/liquidatorTool.d.ts +1 -0
  90. package/dist/esm/liquidatorTool.js +25 -8
  91. package/dist/esm/liquidatorTool.js.map +1 -1
  92. package/dist/esm/marketData.d.ts +45 -23
  93. package/dist/esm/marketData.js +295 -200
  94. package/dist/esm/marketData.js.map +1 -1
  95. package/dist/esm/nodeSDKTypes.d.ts +24 -1
  96. package/dist/esm/nodeSDKTypes.js.map +1 -1
  97. package/dist/esm/orderExecutorTool.d.ts +3 -3
  98. package/dist/esm/orderExecutorTool.js +38 -13
  99. package/dist/esm/orderExecutorTool.js.map +1 -1
  100. package/dist/esm/perpetualDataHandler.d.ts +28 -17
  101. package/dist/esm/perpetualDataHandler.js +74 -48
  102. package/dist/esm/perpetualDataHandler.js.map +1 -1
  103. package/dist/esm/perpetualEventHandler.d.ts +1 -1
  104. package/dist/esm/perpetualEventHandler.js +6 -7
  105. package/dist/esm/perpetualEventHandler.js.map +1 -1
  106. package/dist/esm/polyMktsPxFeed.d.ts +5 -3
  107. package/dist/esm/polyMktsPxFeed.js +34 -2
  108. package/dist/esm/polyMktsPxFeed.js.map +1 -1
  109. package/dist/esm/priceFeeds.d.ts +6 -7
  110. package/dist/esm/priceFeeds.js +36 -14
  111. package/dist/esm/priceFeeds.js.map +1 -1
  112. package/dist/esm/version.d.ts +1 -1
  113. package/dist/esm/version.js +1 -1
  114. package/dist/esm/writeAccessHandler.js +3 -3
  115. package/dist/esm/writeAccessHandler.js.map +1 -1
  116. package/doc/brokerTool.md +3 -1
  117. package/doc/d8x-perpetuals-sdk.md +804 -132
  118. package/doc/marketData.md +813 -0
  119. package/doc/perpetualDataHandler.md +76 -7
  120. package/package.json +1 -1
  121. package/src/abi/IPerpetualManager.json +154 -4
  122. package/src/abi/OracleFactory.json +523 -454
  123. package/src/abi/PerpetualManagerProxy.json +1596 -1386
  124. package/src/accountTrade.ts +3 -3
  125. package/src/brokerTool.ts +22 -8
  126. package/src/config/defaultConfig.json +0 -13
  127. package/src/config/priceFeedConfig.json +1 -19
  128. package/src/constants.ts +1 -2
  129. package/src/contracts/IPerpetualManager.ts +140 -10
  130. package/src/contracts/OracleFactory.ts +100 -26
  131. package/src/contracts/PerpetualManagerProxy.ts +192 -3
  132. package/src/contracts/factories/IPerpetualManager__factory.ts +154 -4
  133. package/src/contracts/factories/OracleFactory__factory.ts +94 -25
  134. package/src/contracts/factories/PerpetualManagerProxy__factory.ts +212 -2
  135. package/src/d8XMath.ts +327 -2
  136. package/src/liquidatorTool.ts +29 -14
  137. package/src/marketData.ts +448 -250
  138. package/src/nodeSDKTypes.ts +30 -1
  139. package/src/orderExecutorTool.ts +48 -20
  140. package/src/perpetualDataHandler.ts +108 -55
  141. package/src/perpetualEventHandler.ts +6 -7
  142. package/src/polyMktsPxFeed.ts +40 -4
  143. package/src/priceFeeds.ts +41 -17
  144. package/src/version.ts +1 -1
  145. package/src/writeAccessHandler.ts +2 -2
  146. package/dist/cjs/abi/BeaconProxy.json +0 -71
  147. package/dist/cjs/abi/Maintainer.json +0 -774
  148. package/dist/cjs/abi/MockToken.json +0 -347
  149. package/dist/cjs/abi/UUPSUpgradeable.json +0 -104
  150. package/dist/cjs/abi/WeETH.json +0 -310
  151. package/dist/cjs/abi-zkevm/LimitOrderBook.json +0 -910
  152. package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +0 -236
  153. package/dist/cjs/contracts/BeaconProxy.d.ts +0 -63
  154. package/dist/cjs/contracts/BeaconProxy.js +0 -3
  155. package/dist/cjs/contracts/BeaconProxy.js.map +0 -1
  156. package/dist/cjs/contracts/Maintainer.d.ts +0 -799
  157. package/dist/cjs/contracts/Maintainer.js +0 -3
  158. package/dist/cjs/contracts/Maintainer.js.map +0 -1
  159. package/dist/cjs/contracts/MockToken.d.ts +0 -263
  160. package/dist/cjs/contracts/MockToken.js +0 -3
  161. package/dist/cjs/contracts/MockToken.js.map +0 -1
  162. package/dist/cjs/contracts/UUPSUpgradeable.d.ts +0 -118
  163. package/dist/cjs/contracts/UUPSUpgradeable.js +0 -3
  164. package/dist/cjs/contracts/UUPSUpgradeable.js.map +0 -1
  165. package/dist/cjs/contracts/WeETH.d.ts +0 -503
  166. package/dist/cjs/contracts/WeETH.js +0 -3
  167. package/dist/cjs/contracts/WeETH.js.map +0 -1
  168. package/dist/cjs/contracts/factories/BeaconProxy__factory.d.ts +0 -61
  169. package/dist/cjs/contracts/factories/BeaconProxy__factory.js +0 -89
  170. package/dist/cjs/contracts/factories/BeaconProxy__factory.js.map +0 -1
  171. package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +0 -609
  172. package/dist/cjs/contracts/factories/Maintainer__factory.js +0 -792
  173. package/dist/cjs/contracts/factories/Maintainer__factory.js.map +0 -1
  174. package/dist/cjs/contracts/factories/MockToken__factory.js +0 -365
  175. package/dist/cjs/contracts/factories/MockToken__factory.js.map +0 -1
  176. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
  177. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +0 -122
  178. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
  179. package/dist/cjs/contracts/factories/WeETH__factory.d.ts +0 -545
  180. package/dist/cjs/contracts/factories/WeETH__factory.js +0 -721
  181. package/dist/cjs/contracts/factories/WeETH__factory.js.map +0 -1
  182. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
  183. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5324
  184. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
  185. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
  186. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -254
  187. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
  188. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
  189. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +0 -928
  190. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
  191. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
  192. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +0 -456
  193. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
  194. package/dist/cjs/contracts/factories/lean0/index.d.ts +0 -4
  195. package/dist/cjs/contracts/factories/lean0/index.js +0 -15
  196. package/dist/cjs/contracts/factories/lean0/index.js.map +0 -1
  197. package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +0 -2821
  198. package/dist/cjs/contracts/lean0/IPerpetualManager.js +0 -3
  199. package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +0 -1
  200. package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +0 -533
  201. package/dist/cjs/contracts/lean0/LimitOrderBook.js +0 -3
  202. package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +0 -1
  203. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
  204. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +0 -3
  205. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
  206. package/dist/cjs/contracts/lean0/ShareToken.d.ts +0 -320
  207. package/dist/cjs/contracts/lean0/ShareToken.js +0 -3
  208. package/dist/cjs/contracts/lean0/ShareToken.js.map +0 -1
  209. package/dist/cjs/contracts/lean0/index.d.ts +0 -4
  210. package/dist/cjs/contracts/lean0/index.js +0 -3
  211. package/dist/cjs/contracts/lean0/index.js.map +0 -1
  212. package/dist/esm/abi/BeaconProxy.json +0 -71
  213. package/dist/esm/abi/Maintainer.json +0 -774
  214. package/dist/esm/abi/MockToken.json +0 -347
  215. package/dist/esm/abi/UUPSUpgradeable.json +0 -104
  216. package/dist/esm/abi/WeETH.json +0 -310
  217. package/dist/esm/abi/lean0/IPerpetualManager.json +0 -5306
  218. package/dist/esm/abi/lean0/LimitOrderBook.json +0 -910
  219. package/dist/esm/abi/lean0/LimitOrderBookFactory.json +0 -236
  220. package/dist/esm/abi/lean0/ShareToken.json +0 -438
  221. package/dist/esm/abi-zkevm/LimitOrderBook.json +0 -910
  222. package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +0 -236
  223. package/dist/esm/contracts/BeaconProxy.d.ts +0 -63
  224. package/dist/esm/contracts/BeaconProxy.js +0 -2
  225. package/dist/esm/contracts/BeaconProxy.js.map +0 -1
  226. package/dist/esm/contracts/Maintainer.d.ts +0 -799
  227. package/dist/esm/contracts/Maintainer.js +0 -2
  228. package/dist/esm/contracts/Maintainer.js.map +0 -1
  229. package/dist/esm/contracts/MockToken.d.ts +0 -263
  230. package/dist/esm/contracts/MockToken.js +0 -2
  231. package/dist/esm/contracts/MockToken.js.map +0 -1
  232. package/dist/esm/contracts/UUPSUpgradeable.d.ts +0 -118
  233. package/dist/esm/contracts/UUPSUpgradeable.js +0 -2
  234. package/dist/esm/contracts/UUPSUpgradeable.js.map +0 -1
  235. package/dist/esm/contracts/WeETH.d.ts +0 -503
  236. package/dist/esm/contracts/WeETH.js +0 -2
  237. package/dist/esm/contracts/WeETH.js.map +0 -1
  238. package/dist/esm/contracts/factories/BeaconProxy__factory.d.ts +0 -61
  239. package/dist/esm/contracts/factories/BeaconProxy__factory.js +0 -85
  240. package/dist/esm/contracts/factories/BeaconProxy__factory.js.map +0 -1
  241. package/dist/esm/contracts/factories/Maintainer__factory.d.ts +0 -609
  242. package/dist/esm/contracts/factories/Maintainer__factory.js +0 -788
  243. package/dist/esm/contracts/factories/Maintainer__factory.js.map +0 -1
  244. package/dist/esm/contracts/factories/MockToken__factory.d.ts +0 -273
  245. package/dist/esm/contracts/factories/MockToken__factory.js.map +0 -1
  246. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
  247. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +0 -118
  248. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
  249. package/dist/esm/contracts/factories/WeETH__factory.d.ts +0 -545
  250. package/dist/esm/contracts/factories/WeETH__factory.js +0 -717
  251. package/dist/esm/contracts/factories/WeETH__factory.js.map +0 -1
  252. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
  253. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5320
  254. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
  255. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
  256. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -250
  257. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
  258. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
  259. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +0 -924
  260. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
  261. package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
  262. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +0 -452
  263. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
  264. package/dist/esm/contracts/factories/lean0/index.d.ts +0 -4
  265. package/dist/esm/contracts/factories/lean0/index.js +0 -8
  266. package/dist/esm/contracts/factories/lean0/index.js.map +0 -1
  267. package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +0 -2821
  268. package/dist/esm/contracts/lean0/IPerpetualManager.js +0 -2
  269. package/dist/esm/contracts/lean0/IPerpetualManager.js.map +0 -1
  270. package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +0 -533
  271. package/dist/esm/contracts/lean0/LimitOrderBook.js +0 -2
  272. package/dist/esm/contracts/lean0/LimitOrderBook.js.map +0 -1
  273. package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
  274. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +0 -2
  275. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
  276. package/dist/esm/contracts/lean0/ShareToken.d.ts +0 -320
  277. package/dist/esm/contracts/lean0/ShareToken.js +0 -2
  278. package/dist/esm/contracts/lean0/ShareToken.js.map +0 -1
  279. package/dist/esm/contracts/lean0/index.d.ts +0 -4
  280. package/dist/esm/contracts/lean0/index.js +0 -2
  281. package/dist/esm/contracts/lean0/index.js.map +0 -1
  282. package/src/abi-zkevm/IPerpetualManager.json +0 -5366
@@ -175,7 +175,7 @@ export default class PerpetualEventHandler {
175
175
  perp.state = perpState.state;
176
176
  perp.indexPrice = perpState.indexPrice;
177
177
  perp.collToQuoteIndexPrice = perpState.collToQuoteIndexPrice;
178
- perp.markPrice = perpState.markPrice;
178
+ perp.markPremium = perpState.markPremium;
179
179
  perp.midPrice = perpState.midPrice;
180
180
  perp.currentFundingRateBps = perpState.currentFundingRateBps;
181
181
  perp.openInterestBC = perpState.openInterestBC;
@@ -197,7 +197,7 @@ export default class PerpetualEventHandler {
197
197
  fMarkPricePremium: bigint,
198
198
  fSpotIndexPrice: bigint
199
199
  ): void {
200
- let [newMidPrice, newMarkPrice, newIndexPrice] = PerpetualEventHandler.ConvertUpdateMarkPrice(
200
+ let [newMidPrice, newMarkPricePrem, newIndexPrice] = PerpetualEventHandler.ConvertUpdateMarkPrice(
201
201
  fMidPricePremium,
202
202
  fMarkPricePremium,
203
203
  fSpotIndexPrice
@@ -207,7 +207,7 @@ export default class PerpetualEventHandler {
207
207
  return;
208
208
  }
209
209
  perpetual.midPrice = newMidPrice;
210
- perpetual.markPrice = newMarkPrice;
210
+ perpetual.markPremium = newMarkPricePrem;
211
211
  perpetual.indexPrice = newIndexPrice;
212
212
  }
213
213
 
@@ -436,18 +436,17 @@ export default class PerpetualEventHandler {
436
436
  * )
437
437
  * @param fMarkPricePremium premium rate in ABDK format
438
438
  * @param fSpotIndexPrice spot index price in ABDK format
439
- * @returns mark price and spot index in float
439
+ * @returns midPrice, markPricePremium, indexPrice in float
440
440
  */
441
441
  private static ConvertUpdateMarkPrice(
442
442
  fMidPricePremium: bigint,
443
443
  fMarkPricePremium: bigint,
444
444
  fSpotIndexPrice: bigint
445
445
  ): [number, number, number] {
446
- let fMarkPrice = mul64x64(fSpotIndexPrice, ONE_64x64 + fMarkPricePremium);
447
446
  let fMidPrice = mul64x64(fSpotIndexPrice, ONE_64x64 + fMidPricePremium);
448
447
  let midPrice = ABK64x64ToFloat(fMidPrice);
449
- let markPrice = ABK64x64ToFloat(fMarkPrice);
448
+ let markPricePremium = ABK64x64ToFloat(fMarkPricePremium);
450
449
  let indexPrice = ABK64x64ToFloat(fSpotIndexPrice);
451
- return [midPrice, markPrice, indexPrice];
450
+ return [midPrice, markPricePremium, indexPrice];
452
451
  }
453
452
  }
@@ -1,5 +1,5 @@
1
1
  import { probToPrice } from "./d8XMath";
2
- import type { PriceFeedConfig } from "./nodeSDKTypes";
2
+ import type { PriceFeedConfig, PriceFeedJson, PredMktPriceInfo } from "./nodeSDKTypes";
3
3
 
4
4
  interface PolyConfig {
5
5
  sym: string;
@@ -14,9 +14,21 @@ interface PolyConfig {
14
14
  */
15
15
  export default class PolyMktsPxFeed {
16
16
  private ids: Map<string, PolyConfig>;
17
+ private oracleEndpoint: string;
17
18
 
18
19
  constructor(config: PriceFeedConfig) {
19
20
  this.ids = new Map<string, PolyConfig>();
21
+ this.oracleEndpoint = "";
22
+ for (let k = 0; k < config.endpoints.length; k++) {
23
+ if (config.endpoints[k].type == "polymarket") {
24
+ let endp = config.endpoints[k].writeEndpoints;
25
+ this.oracleEndpoint = endp[Math.floor(Math.random() * endp.length)];
26
+ break;
27
+ }
28
+ }
29
+ if (this.oracleEndpoint == "") {
30
+ throw Error("no polymarkets write endpoint defined in priceFeedConfig");
31
+ }
20
32
  for (let k = 0; k < config.ids.length; k++) {
21
33
  if (config.ids[k].type == "polymarket") {
22
34
  const sym = config.ids[k].symbol;
@@ -29,21 +41,45 @@ export default class PolyMktsPxFeed {
29
41
  this.ids.set(sym, el);
30
42
  }
31
43
  }
44
+
45
+ this.oracleEndpoint = this.oracleEndpoint.replace(/\/$/, "") + "/v2/updates/price/latest?encoding=base64&ids[]=";
32
46
  }
33
47
 
34
48
  public isPolyMktsSym(sym: string) {
35
49
  return this.ids.get(sym) == undefined;
36
50
  }
37
51
 
38
- public async fetchPriceForSym(sym: string): Promise<number> {
52
+ // returns index price, ema price, conf in tbps, parameters for order book
53
+ public async fetchPriceForSym(sym: string): Promise<PredMktPriceInfo> {
39
54
  const mkt = this.ids.get(sym);
40
55
  if (mkt == undefined) {
41
56
  throw new Error(`symbol not in polymarket universe: ${sym}`);
42
57
  }
43
- return this.fetchPrice(mkt.idDec);
58
+ return this.fetchPrice(mkt.id);
59
+ }
60
+
61
+ // fetch price of the form 1+p from oracle, also fetches ema
62
+ public async fetchPrice(tokenIdHex: string): Promise<PredMktPriceInfo> {
63
+ const query = this.oracleEndpoint + tokenIdHex;
64
+ let response = await fetch(query);
65
+ if (response.status !== 200) {
66
+ throw new Error(`unexpected status code: ${response.status}`);
67
+ }
68
+ if (!response.ok) {
69
+ throw new Error(`failed to fetch posts (${response.status}): ${response.statusText} ${query}`);
70
+ }
71
+ const data = await response.json();
72
+ const emaObj = data.parsed[0].ema_price as PriceFeedJson;
73
+ const pxObj = data.parsed[0].price as PriceFeedJson;
74
+
75
+ const px = Number(pxObj.price) * Math.pow(10, pxObj.expo);
76
+ const ema = Number(emaObj.price) * Math.pow(10, emaObj.expo);
77
+ const params = BigInt(emaObj.conf);
78
+ const conf = BigInt(pxObj.conf);
79
+ return { s2: px, ema: ema, s2MktClosed: false, conf: conf, predMktCLOBParams: params } as PredMktPriceInfo;
44
80
  }
45
81
 
46
- public async fetchPrice(tokenIdDec: string): Promise<number> {
82
+ public async fetchPriceFromAPI(tokenIdDec: string): Promise<number> {
47
83
  const query = "https://clob.polymarket.com/midpoint?token_id=" + tokenIdDec;
48
84
  let response = await fetch(query);
49
85
  if (response.status !== 200) {
package/src/priceFeeds.ts CHANGED
@@ -7,6 +7,8 @@ import type {
7
7
  PriceFeedFormat,
8
8
  PriceFeedSubmission,
9
9
  PythV2LatestPriceFeed,
10
+ IdxPriceInfo,
11
+ PredMktPriceInfo,
10
12
  } from "./nodeSDKTypes";
11
13
  import PerpetualDataHandler from "./perpetualDataHandler";
12
14
  import Triangulator from "./triangulator";
@@ -41,7 +43,7 @@ export default class PriceFeeds {
41
43
  constructor(dataHandler: PerpetualDataHandler, priceFeedConfigNetwork: string) {
42
44
  let configs = require("./config/priceFeedConfig.json") as PriceFeedConfig[];
43
45
  this.config = PriceFeeds._selectConfig(configs, priceFeedConfigNetwork);
44
- this.polyMktsPxFeed = new PolyMktsPxFeed(this.config);
46
+
45
47
  // if SDK config contains custom price feed endpoints, these override the
46
48
  // public/default ones
47
49
  if (dataHandler.config.priceFeedEndpoints && dataHandler.config.priceFeedEndpoints.length > 0) {
@@ -66,7 +68,7 @@ export default class PriceFeeds {
66
68
  if (this.writeFeedEndpoints.length == 0) {
67
69
  throw new Error("PriceFeeds: no writeEndpoints provided in config");
68
70
  }
69
-
71
+ this.polyMktsPxFeed = new PolyMktsPxFeed(this.config);
70
72
  this.dataHandler = dataHandler;
71
73
  this.triangulations = new Map<string, [string[], boolean[]]>();
72
74
  }
@@ -200,10 +202,25 @@ export default class PriceFeeds {
200
202
  /**
201
203
  * Get index prices and market closed information for the given perpetual
202
204
  * @param symbol perpetual symbol such as ETH-USD-MATIC
203
- * @returns Index prices and market closed information
205
+ * @returns Index prices and market closed information; for prediction markets also
206
+ * ema, confidence, and order book parameters.
204
207
  */
205
- public async fetchPricesForPerpetual(symbol: string): Promise<{ idxPrices: number[]; mktClosed: boolean[] }> {
208
+ public async fetchPricesForPerpetual(symbol: string): Promise<IdxPriceInfo> {
206
209
  let indexSymbols = this.dataHandler.getIndexSymbols(symbol).filter((x) => x != "");
210
+ if (this.dataHandler.isPredictionMarket(symbol)) {
211
+ let priceObj = await this.polyMktsPxFeed.fetchPriceForSym(indexSymbols[0]);
212
+ const s3map = await this.fetchFeedPrices([indexSymbols[1]]);
213
+ const s3 = s3map.get(indexSymbols[1])!;
214
+ return {
215
+ s2: priceObj.s2,
216
+ s3: s3[0],
217
+ ema: priceObj.ema,
218
+ s2MktClosed: priceObj.s2MktClosed,
219
+ s3MktClosed: s3[1],
220
+ conf: priceObj.conf,
221
+ predMktCLOBParams: priceObj.predMktCLOBParams,
222
+ } as IdxPriceInfo;
223
+ }
207
224
  // determine relevant price feeds
208
225
  let feedSymbols = new Array<string>();
209
226
  for (let sym of indexSymbols) {
@@ -222,12 +239,15 @@ export default class PriceFeeds {
222
239
  let feedPrices = await this.fetchFeedPrices(feedSymbols);
223
240
  // triangulate
224
241
  let [prices, mktClosed] = this.triangulatePricesFromFeedPrices(indexSymbols, feedPrices);
225
- // ensure we return an array of 2 in all cases
226
- if (prices.length == 1) {
227
- prices.push(0);
228
- mktClosed.push(false);
229
- }
230
- return { idxPrices: prices, mktClosed: mktClosed };
242
+ return {
243
+ s2: prices[0],
244
+ s3: prices[1],
245
+ ema: prices[0],
246
+ s2MktClosed: mktClosed[0],
247
+ s3MktClosed: mktClosed[1],
248
+ conf: BigInt(0),
249
+ predMktCLOBParams: BigInt(0),
250
+ } as IdxPriceInfo;
231
251
  }
232
252
 
233
253
  /**
@@ -238,7 +258,8 @@ export default class PriceFeeds {
238
258
  * endpoints are used
239
259
  * @param symbols array of feed-price symbols (e.g., [btc-usd, eth-usd]) or
240
260
  * undefined
241
- * @returns mapping symbol-> [price, isMarketClosed]
261
+ * @returns mapping symbol-> [price, isMarketClosed], also has an entry
262
+ * <symbol>:ema for each polymarket symbol that maps to the ema price
242
263
  */
243
264
  public async fetchFeedPrices(symbols?: string[]): Promise<Map<string, [number, boolean]>> {
244
265
  let queries = new Array<string>(this.feedEndpoints.length);
@@ -301,10 +322,11 @@ export default class PriceFeeds {
301
322
  let polyPxs = await polyMktsPromise;
302
323
  for (let k = 0; k < polyPxs.length; k++) {
303
324
  let sym = polyMktSyms[k];
304
- if (polyPxs[k] == -1) {
325
+ if (polyPxs[k] == undefined) {
305
326
  continue;
306
327
  }
307
- resultPrices.set(sym, [polyPxs[k], false]);
328
+ resultPrices.set(sym, [polyPxs[k]!.s2, polyPxs[k]!.s2MktClosed]);
329
+ resultPrices.set(sym + ":ema", [polyPxs[k]!.ema, polyPxs[k]!.s2MktClosed]);
308
330
  }
309
331
  return resultPrices;
310
332
  }
@@ -320,15 +342,17 @@ export default class PriceFeeds {
320
342
  return prices;
321
343
  }
322
344
 
345
+ // returns an array with two values per symbol: price, ema
323
346
  private async queryPolyMktsPxFeeds(symbols: string[]) {
324
- let prices: number[] = new Array<number>();
347
+ let prices = new Array<PredMktPriceInfo | undefined>();
325
348
  for (let k = 0; k < symbols.length; k++) {
326
349
  try {
327
- let price = await this.polyMktsPxFeed.fetchPriceForSym(symbols[k]);
328
- prices.push(price);
350
+ let info = await this.polyMktsPxFeed.fetchPriceForSym(symbols[k]);
351
+ prices.push(info);
329
352
  } catch (error) {
330
353
  console.log("fetchPriceForSym failed for " + symbols[k]);
331
- prices.push(-1);
354
+ console.log(error);
355
+ prices.push(undefined);
332
356
  }
333
357
  if (k > 0) {
334
358
  await sleep(0.25);
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const D8X_SDK_VERSION = "2.0.13-alpha";
1
+ export const D8X_SDK_VERSION = "2.1.1-alpha2";
@@ -9,7 +9,7 @@ import {
9
9
  Wallet,
10
10
  } from "ethers";
11
11
  import { MAX_UINT_256, MULTICALL_ADDRESS } from "./constants";
12
- import { ERC20__factory, MockTokenSwap__factory, Multicall3__factory } from "./contracts";
12
+ import { ERC20__factory, IPerpetualManager__factory, MockTokenSwap__factory, Multicall3__factory } from "./contracts";
13
13
  import { PayableOverrides } from "./contracts/common";
14
14
  import { floatToDecN } from "./d8XMath";
15
15
  import MarketData from "./marketData";
@@ -66,7 +66,7 @@ export default class WriteAccessHandler extends PerpetualDataHandler {
66
66
  const mktData = providerOrMarketData;
67
67
  this.nodeURL = mktData.config.nodeURL;
68
68
  this.provider = new JsonRpcProvider(mktData.config.nodeURL, mktData.network, { staticNetwork: true });
69
- this.proxyContract = new Contract(mktData.getProxyAddress(), this.config.proxyABI!, this.provider);
69
+ this.proxyContract = IPerpetualManager__factory.connect(mktData.getProxyAddress(), this.provider);
70
70
  this.multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, this.provider);
71
71
  ({
72
72
  nestedPerpetualIDs: this.nestedPerpetualIDs,
@@ -1,71 +0,0 @@
1
- [
2
- {
3
- "inputs": [
4
- {
5
- "internalType": "address",
6
- "name": "beacon",
7
- "type": "address"
8
- },
9
- {
10
- "internalType": "bytes",
11
- "name": "data",
12
- "type": "bytes"
13
- }
14
- ],
15
- "stateMutability": "payable",
16
- "type": "constructor"
17
- },
18
- {
19
- "anonymous": false,
20
- "inputs": [
21
- {
22
- "indexed": false,
23
- "internalType": "address",
24
- "name": "previousAdmin",
25
- "type": "address"
26
- },
27
- {
28
- "indexed": false,
29
- "internalType": "address",
30
- "name": "newAdmin",
31
- "type": "address"
32
- }
33
- ],
34
- "name": "AdminChanged",
35
- "type": "event"
36
- },
37
- {
38
- "anonymous": false,
39
- "inputs": [
40
- {
41
- "indexed": true,
42
- "internalType": "address",
43
- "name": "beacon",
44
- "type": "address"
45
- }
46
- ],
47
- "name": "BeaconUpgraded",
48
- "type": "event"
49
- },
50
- {
51
- "anonymous": false,
52
- "inputs": [
53
- {
54
- "indexed": true,
55
- "internalType": "address",
56
- "name": "implementation",
57
- "type": "address"
58
- }
59
- ],
60
- "name": "Upgraded",
61
- "type": "event"
62
- },
63
- {
64
- "stateMutability": "payable",
65
- "type": "fallback"
66
- },
67
- {
68
- "stateMutability": "payable",
69
- "type": "receive"
70
- }
71
- ]