@d8x/perpetuals-sdk 2.6.23 → 2.7.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 (263) hide show
  1. package/dist/cjs/config/defaultConfig.json +2 -2
  2. package/dist/cjs/constants.js.map +1 -1
  3. package/dist/cjs/d8XMath.d.ts +40 -29
  4. package/dist/cjs/d8XMath.js +244 -151
  5. package/dist/cjs/d8XMath.js.map +1 -1
  6. package/dist/cjs/liquidatorTool.d.ts +1 -1
  7. package/dist/cjs/liquidatorTool.js +9 -9
  8. package/dist/cjs/liquidatorTool.js.map +1 -1
  9. package/dist/cjs/main.d.ts +1 -0
  10. package/dist/cjs/main.js +15 -0
  11. package/dist/cjs/main.js.map +1 -0
  12. package/dist/cjs/marketData.d.ts +7 -11
  13. package/dist/cjs/marketData.js +31 -20
  14. package/dist/cjs/marketData.js.map +1 -1
  15. package/dist/cjs/perpetualDataHandler.d.ts +12 -12
  16. package/dist/cjs/perpetualDataHandler.js +13 -14
  17. package/dist/cjs/perpetualDataHandler.js.map +1 -1
  18. package/dist/cjs/polyMktsPxFeed.js +2 -2
  19. package/dist/cjs/polyMktsPxFeed.js.map +1 -1
  20. package/dist/cjs/priceFeeds.d.ts +1 -0
  21. package/dist/cjs/priceFeeds.js +19 -3
  22. package/dist/cjs/priceFeeds.js.map +1 -1
  23. package/dist/cjs/version.d.ts +1 -1
  24. package/dist/cjs/version.js +1 -1
  25. package/dist/esm/config/defaultConfig.json +2 -2
  26. package/dist/esm/constants.js.map +1 -1
  27. package/dist/esm/d8XMath.d.ts +40 -29
  28. package/dist/esm/d8XMath.js +241 -150
  29. package/dist/esm/d8XMath.js.map +1 -1
  30. package/dist/esm/liquidatorTool.d.ts +1 -1
  31. package/dist/esm/liquidatorTool.js +10 -10
  32. package/dist/esm/liquidatorTool.js.map +1 -1
  33. package/dist/esm/main.d.ts +1 -0
  34. package/dist/esm/main.js +13 -0
  35. package/dist/esm/main.js.map +1 -0
  36. package/dist/esm/main2.d.ts +1 -0
  37. package/dist/esm/main2.js +18 -0
  38. package/dist/esm/main2.js.map +1 -0
  39. package/dist/esm/marketData.d.ts +7 -11
  40. package/dist/esm/marketData.js +32 -21
  41. package/dist/esm/marketData.js.map +1 -1
  42. package/dist/esm/perpetualDataHandler.d.ts +12 -12
  43. package/dist/esm/perpetualDataHandler.js +13 -14
  44. package/dist/esm/perpetualDataHandler.js.map +1 -1
  45. package/dist/esm/polyMktsPxFeed.js +2 -2
  46. package/dist/esm/polyMktsPxFeed.js.map +1 -1
  47. package/dist/esm/priceFeeds.d.ts +1 -0
  48. package/dist/esm/priceFeeds.js +19 -3
  49. package/dist/esm/priceFeeds.js.map +1 -1
  50. package/dist/esm/version.d.ts +1 -1
  51. package/dist/esm/version.js +1 -1
  52. package/doc/d8x-perpetuals-sdk.md +109 -81
  53. package/doc/marketData.md +2 -10
  54. package/package.json +5 -2
  55. package/src/config/defaultConfig.json +2 -2
  56. package/src/constants.ts +0 -1
  57. package/src/d8XMath.ts +268 -167
  58. package/src/liquidatorTool.ts +16 -10
  59. package/src/marketData.ts +62 -35
  60. package/src/perpetualDataHandler.ts +28 -34
  61. package/src/polyMktsPxFeed.ts +6 -7
  62. package/src/priceFeeds.ts +20 -4
  63. package/src/version.ts +1 -1
  64. package/dist/cjs/abi/AMMPerpLogic.json +0 -580
  65. package/dist/cjs/abi/BeaconProxy.json +0 -71
  66. package/dist/cjs/abi/IPerpetualManager copy.json +0 -5599
  67. package/dist/cjs/abi/IPerpetualMarginViewLogic.json +0 -286
  68. package/dist/cjs/abi/Maintainer.json +0 -774
  69. package/dist/cjs/abi/MockToken.json +0 -347
  70. package/dist/cjs/abi/MockUSD.json +0 -413
  71. package/dist/cjs/abi/UUPSUpgradeable.json +0 -104
  72. package/dist/cjs/abi/WeETH.json +0 -310
  73. package/dist/cjs/abi-zkevm/IPerpetualManager.json +0 -5366
  74. package/dist/cjs/abi-zkevm/LimitOrderBook.json +0 -910
  75. package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +0 -236
  76. package/dist/cjs/contracts/AMMPerpLogic.d.ts +0 -303
  77. package/dist/cjs/contracts/AMMPerpLogic.js +0 -3
  78. package/dist/cjs/contracts/AMMPerpLogic.js.map +0 -1
  79. package/dist/cjs/contracts/BeaconProxy.d.ts +0 -63
  80. package/dist/cjs/contracts/BeaconProxy.js +0 -3
  81. package/dist/cjs/contracts/BeaconProxy.js.map +0 -1
  82. package/dist/cjs/contracts/IPerpetualManagerCopy.d.ts +0 -3223
  83. package/dist/cjs/contracts/IPerpetualManagerCopy.js +0 -3
  84. package/dist/cjs/contracts/IPerpetualManagerCopy.js.map +0 -1
  85. package/dist/cjs/contracts/IPerpetualMarginViewLogic.d.ts +0 -183
  86. package/dist/cjs/contracts/IPerpetualMarginViewLogic.js +0 -3
  87. package/dist/cjs/contracts/IPerpetualMarginViewLogic.js.map +0 -1
  88. package/dist/cjs/contracts/Maintainer.d.ts +0 -799
  89. package/dist/cjs/contracts/Maintainer.js +0 -3
  90. package/dist/cjs/contracts/Maintainer.js.map +0 -1
  91. package/dist/cjs/contracts/MockToken.d.ts +0 -263
  92. package/dist/cjs/contracts/MockToken.js +0 -3
  93. package/dist/cjs/contracts/MockToken.js.map +0 -1
  94. package/dist/cjs/contracts/MockUSD.d.ts +0 -186
  95. package/dist/cjs/contracts/MockUSD.js +0 -3
  96. package/dist/cjs/contracts/MockUSD.js.map +0 -1
  97. package/dist/cjs/contracts/UUPSUpgradeable.d.ts +0 -118
  98. package/dist/cjs/contracts/UUPSUpgradeable.js +0 -3
  99. package/dist/cjs/contracts/UUPSUpgradeable.js.map +0 -1
  100. package/dist/cjs/contracts/WeETH.d.ts +0 -503
  101. package/dist/cjs/contracts/WeETH.js +0 -3
  102. package/dist/cjs/contracts/WeETH.js.map +0 -1
  103. package/dist/cjs/contracts/factories/AMMPerpLogic__factory.d.ts +0 -452
  104. package/dist/cjs/contracts/factories/AMMPerpLogic__factory.js +0 -598
  105. package/dist/cjs/contracts/factories/AMMPerpLogic__factory.js.map +0 -1
  106. package/dist/cjs/contracts/factories/BeaconProxy__factory.d.ts +0 -61
  107. package/dist/cjs/contracts/factories/BeaconProxy__factory.js +0 -89
  108. package/dist/cjs/contracts/factories/BeaconProxy__factory.js.map +0 -1
  109. package/dist/cjs/contracts/factories/IPerpetualManagerCopy__factory.d.ts +0 -4358
  110. package/dist/cjs/contracts/factories/IPerpetualManagerCopy__factory.js +0 -5617
  111. package/dist/cjs/contracts/factories/IPerpetualManagerCopy__factory.js.map +0 -1
  112. package/dist/cjs/contracts/factories/IPerpetualMarginViewLogic__factory.d.ts +0 -221
  113. package/dist/cjs/contracts/factories/IPerpetualMarginViewLogic__factory.js +0 -304
  114. package/dist/cjs/contracts/factories/IPerpetualMarginViewLogic__factory.js.map +0 -1
  115. package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +0 -609
  116. package/dist/cjs/contracts/factories/Maintainer__factory.js +0 -792
  117. package/dist/cjs/contracts/factories/Maintainer__factory.js.map +0 -1
  118. package/dist/cjs/contracts/factories/MockToken__factory.d.ts +0 -273
  119. package/dist/cjs/contracts/factories/MockToken__factory.js +0 -365
  120. package/dist/cjs/contracts/factories/MockToken__factory.js.map +0 -1
  121. package/dist/cjs/contracts/factories/MockUSD__factory.d.ts +0 -320
  122. package/dist/cjs/contracts/factories/MockUSD__factory.js +0 -431
  123. package/dist/cjs/contracts/factories/MockUSD__factory.js.map +0 -1
  124. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
  125. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +0 -122
  126. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
  127. package/dist/cjs/contracts/factories/WeETH__factory.d.ts +0 -545
  128. package/dist/cjs/contracts/factories/WeETH__factory.js +0 -721
  129. package/dist/cjs/contracts/factories/WeETH__factory.js.map +0 -1
  130. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
  131. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5324
  132. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
  133. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
  134. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -254
  135. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
  136. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
  137. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +0 -928
  138. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
  139. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
  140. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +0 -456
  141. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
  142. package/dist/cjs/contracts/factories/lean0/index.d.ts +0 -4
  143. package/dist/cjs/contracts/factories/lean0/index.js +0 -15
  144. package/dist/cjs/contracts/factories/lean0/index.js.map +0 -1
  145. package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +0 -2821
  146. package/dist/cjs/contracts/lean0/IPerpetualManager.js +0 -3
  147. package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +0 -1
  148. package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +0 -533
  149. package/dist/cjs/contracts/lean0/LimitOrderBook.js +0 -3
  150. package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +0 -1
  151. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
  152. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +0 -3
  153. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
  154. package/dist/cjs/contracts/lean0/ShareToken.d.ts +0 -320
  155. package/dist/cjs/contracts/lean0/ShareToken.js +0 -3
  156. package/dist/cjs/contracts/lean0/ShareToken.js.map +0 -1
  157. package/dist/cjs/contracts/lean0/index.d.ts +0 -4
  158. package/dist/cjs/contracts/lean0/index.js +0 -3
  159. package/dist/cjs/contracts/lean0/index.js.map +0 -1
  160. package/dist/esm/abi/AMMPerpLogic.json +0 -580
  161. package/dist/esm/abi/BeaconProxy.json +0 -71
  162. package/dist/esm/abi/IPerpetualManager copy.json +0 -5599
  163. package/dist/esm/abi/IPerpetualMarginViewLogic.json +0 -286
  164. package/dist/esm/abi/Maintainer.json +0 -774
  165. package/dist/esm/abi/MockToken.json +0 -347
  166. package/dist/esm/abi/MockUSD.json +0 -413
  167. package/dist/esm/abi/UUPSUpgradeable.json +0 -104
  168. package/dist/esm/abi/WeETH.json +0 -310
  169. package/dist/esm/abi/lean0/IPerpetualManager.json +0 -5306
  170. package/dist/esm/abi/lean0/LimitOrderBook.json +0 -910
  171. package/dist/esm/abi/lean0/LimitOrderBookFactory.json +0 -236
  172. package/dist/esm/abi/lean0/ShareToken.json +0 -438
  173. package/dist/esm/abi-zkevm/IPerpetualManager.json +0 -5366
  174. package/dist/esm/abi-zkevm/LimitOrderBook.json +0 -910
  175. package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +0 -236
  176. package/dist/esm/contracts/AMMPerpLogic.d.ts +0 -303
  177. package/dist/esm/contracts/AMMPerpLogic.js +0 -2
  178. package/dist/esm/contracts/AMMPerpLogic.js.map +0 -1
  179. package/dist/esm/contracts/BeaconProxy.d.ts +0 -63
  180. package/dist/esm/contracts/BeaconProxy.js +0 -2
  181. package/dist/esm/contracts/BeaconProxy.js.map +0 -1
  182. package/dist/esm/contracts/IPerpetualManagerCopy.d.ts +0 -3223
  183. package/dist/esm/contracts/IPerpetualManagerCopy.js +0 -2
  184. package/dist/esm/contracts/IPerpetualManagerCopy.js.map +0 -1
  185. package/dist/esm/contracts/IPerpetualMarginViewLogic.d.ts +0 -183
  186. package/dist/esm/contracts/IPerpetualMarginViewLogic.js +0 -2
  187. package/dist/esm/contracts/IPerpetualMarginViewLogic.js.map +0 -1
  188. package/dist/esm/contracts/Maintainer.d.ts +0 -799
  189. package/dist/esm/contracts/Maintainer.js +0 -2
  190. package/dist/esm/contracts/Maintainer.js.map +0 -1
  191. package/dist/esm/contracts/MockToken.d.ts +0 -263
  192. package/dist/esm/contracts/MockToken.js +0 -2
  193. package/dist/esm/contracts/MockToken.js.map +0 -1
  194. package/dist/esm/contracts/MockUSD.d.ts +0 -186
  195. package/dist/esm/contracts/MockUSD.js +0 -2
  196. package/dist/esm/contracts/MockUSD.js.map +0 -1
  197. package/dist/esm/contracts/UUPSUpgradeable.d.ts +0 -118
  198. package/dist/esm/contracts/UUPSUpgradeable.js +0 -2
  199. package/dist/esm/contracts/UUPSUpgradeable.js.map +0 -1
  200. package/dist/esm/contracts/WeETH.d.ts +0 -503
  201. package/dist/esm/contracts/WeETH.js +0 -2
  202. package/dist/esm/contracts/WeETH.js.map +0 -1
  203. package/dist/esm/contracts/factories/AMMPerpLogic__factory.d.ts +0 -452
  204. package/dist/esm/contracts/factories/AMMPerpLogic__factory.js +0 -594
  205. package/dist/esm/contracts/factories/AMMPerpLogic__factory.js.map +0 -1
  206. package/dist/esm/contracts/factories/BeaconProxy__factory.d.ts +0 -61
  207. package/dist/esm/contracts/factories/BeaconProxy__factory.js +0 -85
  208. package/dist/esm/contracts/factories/BeaconProxy__factory.js.map +0 -1
  209. package/dist/esm/contracts/factories/IPerpetualManagerCopy__factory.d.ts +0 -4358
  210. package/dist/esm/contracts/factories/IPerpetualManagerCopy__factory.js +0 -5613
  211. package/dist/esm/contracts/factories/IPerpetualManagerCopy__factory.js.map +0 -1
  212. package/dist/esm/contracts/factories/IPerpetualMarginViewLogic__factory.d.ts +0 -221
  213. package/dist/esm/contracts/factories/IPerpetualMarginViewLogic__factory.js +0 -300
  214. package/dist/esm/contracts/factories/IPerpetualMarginViewLogic__factory.js.map +0 -1
  215. package/dist/esm/contracts/factories/Maintainer__factory.d.ts +0 -609
  216. package/dist/esm/contracts/factories/Maintainer__factory.js +0 -788
  217. package/dist/esm/contracts/factories/Maintainer__factory.js.map +0 -1
  218. package/dist/esm/contracts/factories/MockToken__factory.d.ts +0 -273
  219. package/dist/esm/contracts/factories/MockToken__factory.js +0 -361
  220. package/dist/esm/contracts/factories/MockToken__factory.js.map +0 -1
  221. package/dist/esm/contracts/factories/MockUSD__factory.d.ts +0 -320
  222. package/dist/esm/contracts/factories/MockUSD__factory.js +0 -427
  223. package/dist/esm/contracts/factories/MockUSD__factory.js.map +0 -1
  224. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
  225. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +0 -118
  226. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
  227. package/dist/esm/contracts/factories/WeETH__factory.d.ts +0 -545
  228. package/dist/esm/contracts/factories/WeETH__factory.js +0 -717
  229. package/dist/esm/contracts/factories/WeETH__factory.js.map +0 -1
  230. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
  231. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5320
  232. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
  233. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
  234. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -250
  235. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
  236. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
  237. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +0 -924
  238. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
  239. package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
  240. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +0 -452
  241. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
  242. package/dist/esm/contracts/factories/lean0/index.d.ts +0 -4
  243. package/dist/esm/contracts/factories/lean0/index.js +0 -8
  244. package/dist/esm/contracts/factories/lean0/index.js.map +0 -1
  245. package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +0 -2821
  246. package/dist/esm/contracts/lean0/IPerpetualManager.js +0 -2
  247. package/dist/esm/contracts/lean0/IPerpetualManager.js.map +0 -1
  248. package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +0 -533
  249. package/dist/esm/contracts/lean0/LimitOrderBook.js +0 -2
  250. package/dist/esm/contracts/lean0/LimitOrderBook.js.map +0 -1
  251. package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
  252. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +0 -2
  253. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
  254. package/dist/esm/contracts/lean0/ShareToken.d.ts +0 -320
  255. package/dist/esm/contracts/lean0/ShareToken.js +0 -2
  256. package/dist/esm/contracts/lean0/ShareToken.js.map +0 -1
  257. package/dist/esm/contracts/lean0/index.d.ts +0 -4
  258. package/dist/esm/contracts/lean0/index.js +0 -2
  259. package/dist/esm/contracts/lean0/index.js.map +0 -1
  260. package/src/contracts/IPerpetualMarginViewLogic.ts +0 -347
  261. package/src/contracts/MockUSD.ts +0 -378
  262. package/src/contracts/factories/IPerpetualMarginViewLogic__factory.ts +0 -313
  263. package/src/contracts/factories/MockUSD__factory.ts +0 -430
@@ -144,16 +144,16 @@ on-chain</p></dd>
144
144
  * [~calculateLiquidationPriceCollateralQuote(LockedInValueQC, position, cash_cc, maintenance_margin_rate, S3)](#module_d8xMath..calculateLiquidationPriceCollateralQuote) ⇒ <code>number</code>
145
145
  * [~getMarginRequiredForLeveragedTrade(targetLeverage, currentPosition, currentLockedInValue, tradeAmount, markPrice, indexPriceS2, indexPriceS3, tradePrice, feeRate)](#module_d8xMath..getMarginRequiredForLeveragedTrade) ⇒ <code>number</code>
146
146
  * [~getNewPositionLeverage(tradeAmount, marginCollateral, currentPosition, currentLockedInValue, price, indexPriceS3, markPrice)](#module_d8xMath..getNewPositionLeverage) ⇒
147
- * [~getDepositAmountForLvgTrade(pos0, b0, tradeAmnt, targetLvg, price, S3, S2Mark, isPredMkt)](#module_d8xMath..getDepositAmountForLvgTrade) ⇒ <code>number</code>
147
+ * [~getDepositAmountForLvgTrade(pos0, b0, tradeAmnt, targetLvg, price, S3, S2Mark, cmin)](#module_d8xMath..getDepositAmountForLvgTrade) ⇒ <code>number</code>
148
+ * [~getDepositAmountForPredMktLvgTrade(pos0, b0, c0, tradeAmnt, targetLvg, prob, S3, markProb, imr)](#module_d8xMath..getDepositAmountForPredMktLvgTrade) ⇒ <code>number</code>
149
+ * [~newPos](#module_d8xMath..getDepositAmountForPredMktLvgTrade..newPos)
148
150
  * [~priceToProb(px)](#module_d8xMath..priceToProb) ⇒
149
151
  * [~probToPrice(prob)](#module_d8xMath..probToPrice) ⇒
150
- * [~pmMarginThresh(pos, s2, s3, m)](#module_d8xMath..pmMarginThresh) ⇒
151
- * [~pmMaintenanceMarginRate(posSign, sm, m)](#module_d8xMath..pmMaintenanceMarginRate) ⇒
152
- * [~pmInitialMarginRate(posSign, sm, m)](#module_d8xMath..pmInitialMarginRate) ⇒
153
- * [~expectedLoss(p, m, totLong, totShort, tradeAmt, tradeMgnRate)](#module_d8xMath..expectedLoss) ⇒
154
- * [~expectedLossImpact(p, m, tradeAmt, tradeMgnRate)](#module_d8xMath..expectedLossImpact) ⇒
152
+ * [~pmMarginThresh(pos, lockedInQC, s2, s3, m)](#module_d8xMath..pmMarginThresh) ⇒
153
+ * [~pmInitialMarginRate(posSign, s0, sm, cmin)](#module_d8xMath..pmInitialMarginRate) ⇒ <code>number</code>
155
154
  * [~pmExchangeFee(prob, m, tradeAmt, tradeMgnRate)](#module_d8xMath..pmExchangeFee) ⇒
156
155
  * [~pmMarginBalance(pos, s2, s3, ell, mc)](#module_d8xMath..pmMarginBalance) ⇒
156
+ * [~pmFindLiquidationPrice(pos, s3, ell, mc, baseMarginRate, sm)](#module_d8xMath..pmFindLiquidationPrice) ⇒ <code>number</code>
157
157
  * [~excessMargin(tradeAmt, currentCashCC, currentPos, currentLockedInQC, limitPrice, Sm, S3)](#module_d8xMath..excessMargin) ⇒
158
158
  * [~pmGetDepositAmtForLvgTrade(tradeAmt, targetLvg, price, S3, S2Mark)](#module_d8xMath..pmGetDepositAmtForLvgTrade) ⇒
159
159
  * [~pmExcessCashAtLvg(tradeAmt, lvg, walletBalCC, currentCashCC, currentPosition, currentLockedInValue, slippage, S2, Sm, S3, totLong, totShort)](#module_d8xMath..pmExcessCashAtLvg) ⇒
@@ -395,7 +395,7 @@ See calculateLiquidationPriceCollateralQuantoConservative for a more conservativ
395
395
 
396
396
  <a name="module_d8xMath..getDepositAmountForLvgTrade"></a>
397
397
 
398
- ### d8xMath~getDepositAmountForLvgTrade(pos0, b0, tradeAmnt, targetLvg, price, S3, S2Mark, isPredMkt) ⇒ <code>number</code>
398
+ ### d8xMath~getDepositAmountForLvgTrade(pos0, b0, tradeAmnt, targetLvg, price, S3, S2Mark, cmin) ⇒ <code>number</code>
399
399
  <p>Determine amount to be deposited into margin account so that the given leverage
400
400
  is obtained when trading a position pos (trade amount = position)
401
401
  Does NOT include fees
@@ -413,8 +413,77 @@ Smart contract equivalent: calcMarginForTargetLeverage(..., _ignorePosBalance =
413
413
  | price | <code>number</code> | <p>price to trade amount 'tradeAmnt'</p> |
414
414
  | S3 | <code>number</code> | <p>collateral to quote conversion (=S2 if base-collateral, =1 if quote collateral, = index S3 if quanto)</p> |
415
415
  | S2Mark | <code>number</code> | <p>mark price</p> |
416
- | isPredMkt | <code>boolean</code> | <p>true if prediction market</p> |
416
+ | cmin | <code>number</code> | <p>Absolute minimum margin per contract, only for pred markets</p> |
417
417
 
418
+ <a name="module_d8xMath..getDepositAmountForPredMktLvgTrade"></a>
419
+
420
+ ### d8xMath~getDepositAmountForPredMktLvgTrade(pos0, b0, c0, tradeAmnt, targetLvg, prob, S3, markProb, imr) ⇒ <code>number</code>
421
+ <p>Determine amount to be deposited into margin account so that the given leverage
422
+ is obtained when opening a prediction market position
423
+ Does NOT include fees, but accounts for a possible non-zero current position
424
+ Smart contract equivalent: getDepositAmountForPredMktLvgPosition</p>
425
+
426
+ **Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
427
+ **Returns**: <code>number</code> - <p>Amount to be deposited to have the given leverage when trading into position pos before fees</p>
428
+
429
+ | Param | Type | Description |
430
+ | --- | --- | --- |
431
+ | pos0 | <code>number</code> | <p>current position</p> |
432
+ | b0 | <code>number</code> | <p>current balance</p> |
433
+ | c0 | <code>number</code> | <p>current available cash</p> |
434
+ | tradeAmnt | <code>number</code> | <p>amount to trade</p> |
435
+ | targetLvg | <code>number</code> | <p>target leverage</p> |
436
+ | prob | <code>number</code> | <p>prob to trade amount 'tradeAmnt'</p> |
437
+ | S3 | <code>number</code> | <p>collateral to quote conversion (=S2 if base-collateral, =1 if quote collateral, = index S3 if quanto)</p> |
438
+ | markProb | <code>number</code> | <p>mark prob</p> |
439
+ | imr | <code>number</code> | <p>minimum absolute margin per contract (fInitialMarginRate)</p> |
440
+
441
+ <a name="module_d8xMath..getDepositAmountForPredMktLvgTrade..newPos"></a>
442
+
443
+ #### getDepositAmountForPredMktLvgTrade~newPos
444
+ <p>Smart contract implementation:
445
+ // find smallest x such that:
446
+ // bal * s3 &gt;= pos value / lvg
447
+ // where:
448
+ // pos value / lvg = |pos| * R(pm, sign(pos)) * margin rate
449
+ // pos = pos0 + k
450
+ // cash = cash0 + x
451
+ // ell = ell0 + px * k
452
+ // bal * s3 = cash * s3 + pos * sm - ell
453
+ // = bal0 * s3 + x * s3 + k * (sm - px)
454
+ // subject to:
455
+ // x &gt;= 0
456
+ // cash * s3 &gt;= |pos| * min(cmin, prob(sign(pos)))
457
+ // k * (sm - px) &lt;= 0 a.s.
458
+ // (positive pnl does not contribute, i.e. ignore px better than mark)
459
+ // solution:
460
+ // bal0 * s3 + x * s3 &gt;= pos value / lvg + (k * (px - sm))<em>+ = v * s3
461
+ // --&gt;
462
+ // x &gt;= v + (cash0 - bal0)</em>+ - cash0 = v - min(bal0, cash0)
463
+ // = pos value / lvg/ s3 + (k * (px - sm))_+ / s3 - min (bal0, cash0)
464
+ // = A + B - C
465
+ // x &gt;= |pos| * min(cmin, prob(sign(pos))) / s3 - cash0
466
+ // x &gt;= 0
467
+ // init x = A = pos value / lvg / s3
468
+ int128 fNewPos = _fPosition0.add(_fTradeAmount);
469
+ int128 v = (
470
+ fNewPos &gt; 0 ? fNewPos.mul(_fMarkProb) : fNewPos.neg().mul(ONE_64x64.sub(_fMarkProb))
471
+ ).mul(_fMarginRate).div(_fS3);
472
+ // + B = max(0,k * (px - sm)) / s3
473
+ {
474
+ int128 fPnL = _fTradeAmount.mul(_fMarkProb.sub(_fTradeProb));
475
+ if (fPnL &lt; 0) {
476
+ v = v.sub(fPnL.div(_fS3)); // pnl &lt; 0 -&gt; increase v
477
+ }
478
+ }
479
+ // - C = - min(bal0, cash0) = - Equity
480
+ {
481
+ int128 equity = _fCash0CC &lt; _fBalance0 ? _fCash0CC : _fBalance0;
482
+ v = v.sub(equity); // equity can be used / must be covered if negative
483
+ }
484
+ return v &gt; 0 ? v : int128(0);</p>
485
+
486
+ **Kind**: inner constant of [<code>getDepositAmountForPredMktLvgTrade</code>](#module_d8xMath..getDepositAmountForPredMktLvgTrade)
418
487
  <a name="module_d8xMath..priceToProb"></a>
419
488
 
420
489
  ### d8xMath~priceToProb(px) ⇒
@@ -441,82 +510,34 @@ Smart contract equivalent: calcMarginForTargetLeverage(..., _ignorePosBalance =
441
510
 
442
511
  <a name="module_d8xMath..pmMarginThresh"></a>
443
512
 
444
- ### d8xMath~pmMarginThresh(pos, s2, s3, m) ⇒
513
+ ### d8xMath~pmMarginThresh(pos, lockedInQC, s2, s3, m) ⇒
445
514
  <p>Maintenance margin requirement for prediction markets</p>
446
515
 
447
516
  **Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
448
517
  **Returns**: <p>required margin balance</p>
449
518
 
450
- | Param | Default | Description |
451
- | --- | --- | --- |
452
- | pos | | <p>signed position</p> |
453
- | s2 | | <p>mark price</p> |
454
- | s3 | | <p>collateral to quote conversion</p> |
455
- | m | <code>0.18</code> | <p>base margin rate</p> |
456
-
457
- <a name="module_d8xMath..pmMaintenanceMarginRate"></a>
458
-
459
- ### d8xMath~pmMaintenanceMarginRate(posSign, sm, m) ⇒
460
- <p>Maintenance margin rate for prediction markets.</p>
461
-
462
- **Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
463
- **Returns**: <p>margin rate to be applied (Math.abs(pos) * p * tau) / s3;</p>
464
-
465
- | Param | Default | Description |
466
- | --- | --- | --- |
467
- | posSign | | <p>sign of position in base currency (can be signed position or -1, 1)</p> |
468
- | sm | | <p>mark-price (=1+p)</p> |
469
- | m | <code>0.18</code> | <p>max margin rate from fInitialMarginRate</p> |
470
-
471
- <a name="module_d8xMath..pmInitialMarginRate"></a>
472
-
473
- ### d8xMath~pmInitialMarginRate(posSign, sm, m) ⇒
474
- <p>Maintenance margin rate for prediction markets.</p>
475
-
476
- **Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
477
- **Returns**: <p>margin rate to be applied (Math.abs(pos) * p * tau) / s3;</p>
478
-
479
- | Param | Default | Description |
480
- | --- | --- | --- |
481
- | posSign | | <p>sign of position in base currency (can be signed position or -1, 1)</p> |
482
- | sm | | <p>mark-price (=1+p)</p> |
483
- | m | <code>0.2</code> | <p>max margin rate from fMaintenanceMarginRate</p> |
484
-
485
- <a name="module_d8xMath..expectedLoss"></a>
486
-
487
- ### d8xMath~expectedLoss(p, m, totLong, totShort, tradeAmt, tradeMgnRate) ⇒
488
- <p>Calculate the expected loss for a prediction market trade used for
489
- prediction market fees</p>
490
-
491
- **Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
492
- **Returns**: <p>expected loss in dollars</p>
493
-
494
519
  | Param | Description |
495
520
  | --- | --- |
496
- | p | <p>probability derived from mark price (long)</p> |
497
- | m | <p>maximal maintenance rate from which we defer the actual maintenance margin rate</p> |
498
- | totLong | <p>total long in base currency</p> |
499
- | totShort | <p>total short</p> |
500
- | tradeAmt | <p>signed trade amount, can be zero</p> |
501
- | tradeMgnRate | <p>margin rate of the trader</p> |
521
+ | pos | <p>signed position</p> |
522
+ | lockedInQC | <p>locked in value</p> |
523
+ | s2 | <p>mark price</p> |
524
+ | s3 | <p>collateral to quote conversion</p> |
525
+ | m | <p>base margin rate</p> |
502
526
 
503
- <a name="module_d8xMath..expectedLossImpact"></a>
527
+ <a name="module_d8xMath..pmInitialMarginRate"></a>
504
528
 
505
- ### d8xMath~expectedLossImpact(p, m, tradeAmt, tradeMgnRate) ⇒
506
- <p>Equivalent to
507
- const el0 = expectedLoss(prob, m, totLong, totShort, 0, 0);
508
- const el1 = expectedLoss(prob, m, totLong, totShort, tradeAmt, tradeMgnRate)
509
- const fee = (el1 - el0) / Math.abs(tradeAmt);</p>
529
+ ### d8xMath~pmInitialMarginRate(posSign, s0, sm, cmin) ⇒ <code>number</code>
530
+ <p>Initial margin rate for prediction markets.</p>
510
531
 
511
532
  **Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
512
- **Returns**: <p>dollar fee</p>
533
+ **Returns**: <code>number</code> - <p>The margin rate to be applied: <code>(Math.abs(pos) * p * tau) / s3</code></p>
513
534
 
514
535
  | Param | Description |
515
536
  | --- | --- |
516
- | p | <p>prob long probability</p> |
517
- | m | <p>max maintenance margin rate (0.18)</p> |
518
- | tradeAmt | <p>trade amount in base currency</p> |
519
- | tradeMgnRate | <p>margin rate for this trade</p> |
537
+ | posSign | <p>sign of position in base currency (can be signed position or -1, 1)</p> |
538
+ | s0 | <p>trade price</p> |
539
+ | sm | <p>mark-price (=1+p)</p> |
540
+ | cmin | <p>Absolute min margin saved as <code>fInitialMarginRate</code></p> |
520
541
 
521
542
  <a name="module_d8xMath..pmExchangeFee"></a>
522
543
 
@@ -550,6 +571,21 @@ For opening trades only</p>
550
571
  | ell | <p>locked in value</p> |
551
572
  | mc | <p>margin cash in collateral currency</p> |
552
573
 
574
+ <a name="module_d8xMath..pmFindLiquidationPrice"></a>
575
+
576
+ ### d8xMath~pmFindLiquidationPrice(pos, s3, ell, mc, baseMarginRate, sm) ⇒ <code>number</code>
577
+ **Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
578
+ **Returns**: <code>number</code> - <p>Liquidation price as a probability in the range [0, 1]</p>
579
+
580
+ | Param | Description |
581
+ | --- | --- |
582
+ | pos | <p>Signed position size</p> |
583
+ | s3 | <p>Collateral to quote conversion at spot</p> |
584
+ | ell | <p>Locked-in value</p> |
585
+ | mc | <p>Margin collateral</p> |
586
+ | baseMarginRate | <p>Maintenance margin per contract (mu_m)</p> |
587
+ | sm | <p>Mark price at entry</p> |
588
+
553
589
  <a name="module_d8xMath..excessMargin"></a>
554
590
 
555
591
  ### d8xMath~excessMargin(tradeAmt, currentCashCC, currentPos, currentLockedInQC, limitPrice, Sm, S3) ⇒
@@ -649,7 +685,7 @@ Factors in lot size and global max short/long, factors in opening/closing positi
649
685
  | short | <p>Short open OI</p> |
650
686
  | sm | <p>Mark price (&gt;1)</p> |
651
687
  | isBuy | <p>True if trade is long</p> |
652
- | mr | <p>Maintenance margin rate</p> |
688
+ | mr | <p>Margin threshold per contract for liquidation (mu_m)</p> |
653
689
 
654
690
  <a name="module_utils"></a>
655
691
 
@@ -4285,7 +4321,7 @@ No gas required for the queries here.</p>
4285
4321
  * [.fetchOnChainPerpetualStates()](#PerpetualDataHandler+fetchOnChainPerpetualStates) ⇒
4286
4322
  * [.checkHeartbeat()](#PerpetualDataHandler+checkHeartbeat) ⇒
4287
4323
  * _static_
4288
- * [.exchangeFeePrdMkts(maxMaintMgnRate, Sm, tradeAmtBC, tradeMgnRate)](#MarketData.exchangeFeePrdMkts) ⇒
4324
+ * [.exchangeFeePrdMkts()](#MarketData.exchangeFeePrdMkts) ⇒
4289
4325
 
4290
4326
  <a name="new_MarketData_new"></a>
4291
4327
 
@@ -5610,19 +5646,11 @@ main();
5610
5646
  **Returns**: <p>True if all perp states are correct</p>
5611
5647
  <a name="MarketData.exchangeFeePrdMkts"></a>
5612
5648
 
5613
- ### MarketData.exchangeFeePrdMkts(maxMaintMgnRate, Sm, tradeAmtBC, tradeMgnRate) ⇒
5649
+ ### MarketData.exchangeFeePrdMkts() ⇒
5614
5650
  <p>Fee is relative to base-currency amount (=trade amount)</p>
5615
5651
 
5616
5652
  **Kind**: static method of [<code>MarketData</code>](#MarketData)
5617
5653
  **Returns**: <p>relative exchange fee in decimals</p>
5618
-
5619
- | Param | Description |
5620
- | --- | --- |
5621
- | maxMaintMgnRate | <p>maintenance margin rate param for pred mkts</p> |
5622
- | Sm | <p>Mark price</p> |
5623
- | tradeAmtBC | <p>signed trade amount</p> |
5624
- | tradeMgnRate | <p>margin rate param from perpetual</p> |
5625
-
5626
5654
  <a name="OnChainPxFeed"></a>
5627
5655
 
5628
5656
  ## OnChainPxFeed
package/doc/marketData.md CHANGED
@@ -47,7 +47,7 @@ No gas required for the queries here.</p>
47
47
  * [.fetchPrdMktMetaData(symbol)](#MarketData+fetchPrdMktMetaData) ⇒
48
48
  * [.fetchPythMetaData(symbol)](#MarketData+fetchPythMetaData) ⇒
49
49
  * _static_
50
- * [.exchangeFeePrdMkts(maxMaintMgnRate, Sm, tradeAmtBC, tradeMgnRate)](#MarketData.exchangeFeePrdMkts) ⇒
50
+ * [.exchangeFeePrdMkts()](#MarketData.exchangeFeePrdMkts) ⇒
51
51
 
52
52
  <a name="new_MarketData_new"></a>
53
53
 
@@ -860,16 +860,8 @@ The priority is:</p>
860
860
 
861
861
  <a name="MarketData.exchangeFeePrdMkts"></a>
862
862
 
863
- ### MarketData.exchangeFeePrdMkts(maxMaintMgnRate, Sm, tradeAmtBC, tradeMgnRate) ⇒
863
+ ### MarketData.exchangeFeePrdMkts() ⇒
864
864
  <p>Fee is relative to base-currency amount (=trade amount)</p>
865
865
 
866
866
  **Kind**: static method of [<code>MarketData</code>](#MarketData)
867
867
  **Returns**: <p>relative exchange fee in decimals</p>
868
-
869
- | Param | Description |
870
- | --- | --- |
871
- | maxMaintMgnRate | <p>maintenance margin rate param for pred mkts</p> |
872
- | Sm | <p>Mark price</p> |
873
- | tradeAmtBC | <p>signed trade amount</p> |
874
- | tradeMgnRate | <p>margin rate param from perpetual</p> |
875
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@d8x/perpetuals-sdk",
3
- "version": "2.6.23",
3
+ "version": "2.7.01",
4
4
  "description": "Node TypeScript SDK for D8X Perpetual Futures",
5
5
  "author": "D8X",
6
6
  "homepage": "https://github.com/D8-X/d8x-futures-node-sdk#readme",
@@ -68,5 +68,8 @@
68
68
  "tslib": "^2.5.0",
69
69
  "typescript": "^4.9.5"
70
70
  },
71
- "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
71
+ "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e",
72
+ "resolutions": {
73
+ "jsdoc": "4.0.3"
74
+ }
72
75
  }
@@ -28,8 +28,8 @@
28
28
  {
29
29
  "name": "base_sepolia",
30
30
  "chainId": 84532,
31
- "version": 1,
32
- "proxyAddr": "0xa7868558E094E58251c6D12f407294c11522E88D",
31
+ "version": 3,
32
+ "proxyAddr": "0xfaC638d51B769D060aFC5953C41bF35595620b1c",
33
33
  "nodeURL": "https://sepolia.base.org",
34
34
  "priceFeedConfigNetwork": "mainnet",
35
35
  "shareTokenABILocation": "./abi/ShareToken.json",
package/src/constants.ts CHANGED
@@ -34,7 +34,6 @@ export const MASK_PREDICTION_MARKET = 2n;
34
34
  export const MASK_LOW_LIQUIDITY_MARKET = 4n;
35
35
  export const MASK_TRADFI_MARKET = 8n;
36
36
 
37
-
38
37
  export const ORDER_TYPE_LIMIT = "LIMIT";
39
38
  export const ORDER_TYPE_MARKET = "MARKET";
40
39
  export const ORDER_TYPE_STOP_MARKET = "STOP_MARKET";