@d8x/perpetuals-sdk 2.6.23 → 2.7.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 (253) 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 +42 -25
  4. package/dist/cjs/d8XMath.js +188 -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/marketData.d.ts +6 -6
  10. package/dist/cjs/marketData.js +9 -12
  11. package/dist/cjs/marketData.js.map +1 -1
  12. package/dist/cjs/perpetualDataHandler.d.ts +12 -12
  13. package/dist/cjs/perpetualDataHandler.js +13 -14
  14. package/dist/cjs/perpetualDataHandler.js.map +1 -1
  15. package/dist/cjs/polyMktsPxFeed.js +2 -2
  16. package/dist/cjs/polyMktsPxFeed.js.map +1 -1
  17. package/dist/cjs/priceFeeds.d.ts +1 -0
  18. package/dist/cjs/priceFeeds.js +19 -3
  19. package/dist/cjs/priceFeeds.js.map +1 -1
  20. package/dist/cjs/version.d.ts +1 -1
  21. package/dist/cjs/version.js +1 -1
  22. package/dist/esm/config/defaultConfig.json +2 -2
  23. package/dist/esm/constants.js.map +1 -1
  24. package/dist/esm/d8XMath.d.ts +42 -25
  25. package/dist/esm/d8XMath.js +187 -150
  26. package/dist/esm/d8XMath.js.map +1 -1
  27. package/dist/esm/liquidatorTool.d.ts +1 -1
  28. package/dist/esm/liquidatorTool.js +10 -10
  29. package/dist/esm/liquidatorTool.js.map +1 -1
  30. package/dist/esm/marketData.d.ts +6 -6
  31. package/dist/esm/marketData.js +9 -12
  32. package/dist/esm/marketData.js.map +1 -1
  33. package/dist/esm/perpetualDataHandler.d.ts +12 -12
  34. package/dist/esm/perpetualDataHandler.js +13 -14
  35. package/dist/esm/perpetualDataHandler.js.map +1 -1
  36. package/dist/esm/polyMktsPxFeed.js +2 -2
  37. package/dist/esm/polyMktsPxFeed.js.map +1 -1
  38. package/dist/esm/priceFeeds.d.ts +1 -0
  39. package/dist/esm/priceFeeds.js +19 -3
  40. package/dist/esm/priceFeeds.js.map +1 -1
  41. package/dist/esm/version.d.ts +1 -1
  42. package/dist/esm/version.js +1 -1
  43. package/doc/d8x-perpetuals-sdk.md +116 -64
  44. package/package.json +1 -1
  45. package/src/config/defaultConfig.json +2 -2
  46. package/src/constants.ts +0 -1
  47. package/src/d8XMath.ts +210 -167
  48. package/src/liquidatorTool.ts +16 -10
  49. package/src/marketData.ts +33 -25
  50. package/src/perpetualDataHandler.ts +28 -34
  51. package/src/polyMktsPxFeed.ts +6 -7
  52. package/src/priceFeeds.ts +20 -4
  53. package/src/version.ts +1 -1
  54. package/dist/cjs/abi/AMMPerpLogic.json +0 -580
  55. package/dist/cjs/abi/BeaconProxy.json +0 -71
  56. package/dist/cjs/abi/IPerpetualManager copy.json +0 -5599
  57. package/dist/cjs/abi/IPerpetualMarginViewLogic.json +0 -286
  58. package/dist/cjs/abi/Maintainer.json +0 -774
  59. package/dist/cjs/abi/MockToken.json +0 -347
  60. package/dist/cjs/abi/MockUSD.json +0 -413
  61. package/dist/cjs/abi/UUPSUpgradeable.json +0 -104
  62. package/dist/cjs/abi/WeETH.json +0 -310
  63. package/dist/cjs/abi-zkevm/IPerpetualManager.json +0 -5366
  64. package/dist/cjs/abi-zkevm/LimitOrderBook.json +0 -910
  65. package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +0 -236
  66. package/dist/cjs/contracts/AMMPerpLogic.d.ts +0 -303
  67. package/dist/cjs/contracts/AMMPerpLogic.js +0 -3
  68. package/dist/cjs/contracts/AMMPerpLogic.js.map +0 -1
  69. package/dist/cjs/contracts/BeaconProxy.d.ts +0 -63
  70. package/dist/cjs/contracts/BeaconProxy.js +0 -3
  71. package/dist/cjs/contracts/BeaconProxy.js.map +0 -1
  72. package/dist/cjs/contracts/IPerpetualManagerCopy.d.ts +0 -3223
  73. package/dist/cjs/contracts/IPerpetualManagerCopy.js +0 -3
  74. package/dist/cjs/contracts/IPerpetualManagerCopy.js.map +0 -1
  75. package/dist/cjs/contracts/IPerpetualMarginViewLogic.d.ts +0 -183
  76. package/dist/cjs/contracts/IPerpetualMarginViewLogic.js +0 -3
  77. package/dist/cjs/contracts/IPerpetualMarginViewLogic.js.map +0 -1
  78. package/dist/cjs/contracts/Maintainer.d.ts +0 -799
  79. package/dist/cjs/contracts/Maintainer.js +0 -3
  80. package/dist/cjs/contracts/Maintainer.js.map +0 -1
  81. package/dist/cjs/contracts/MockToken.d.ts +0 -263
  82. package/dist/cjs/contracts/MockToken.js +0 -3
  83. package/dist/cjs/contracts/MockToken.js.map +0 -1
  84. package/dist/cjs/contracts/MockUSD.d.ts +0 -186
  85. package/dist/cjs/contracts/MockUSD.js +0 -3
  86. package/dist/cjs/contracts/MockUSD.js.map +0 -1
  87. package/dist/cjs/contracts/UUPSUpgradeable.d.ts +0 -118
  88. package/dist/cjs/contracts/UUPSUpgradeable.js +0 -3
  89. package/dist/cjs/contracts/UUPSUpgradeable.js.map +0 -1
  90. package/dist/cjs/contracts/WeETH.d.ts +0 -503
  91. package/dist/cjs/contracts/WeETH.js +0 -3
  92. package/dist/cjs/contracts/WeETH.js.map +0 -1
  93. package/dist/cjs/contracts/factories/AMMPerpLogic__factory.d.ts +0 -452
  94. package/dist/cjs/contracts/factories/AMMPerpLogic__factory.js +0 -598
  95. package/dist/cjs/contracts/factories/AMMPerpLogic__factory.js.map +0 -1
  96. package/dist/cjs/contracts/factories/BeaconProxy__factory.d.ts +0 -61
  97. package/dist/cjs/contracts/factories/BeaconProxy__factory.js +0 -89
  98. package/dist/cjs/contracts/factories/BeaconProxy__factory.js.map +0 -1
  99. package/dist/cjs/contracts/factories/IPerpetualManagerCopy__factory.d.ts +0 -4358
  100. package/dist/cjs/contracts/factories/IPerpetualManagerCopy__factory.js +0 -5617
  101. package/dist/cjs/contracts/factories/IPerpetualManagerCopy__factory.js.map +0 -1
  102. package/dist/cjs/contracts/factories/IPerpetualMarginViewLogic__factory.d.ts +0 -221
  103. package/dist/cjs/contracts/factories/IPerpetualMarginViewLogic__factory.js +0 -304
  104. package/dist/cjs/contracts/factories/IPerpetualMarginViewLogic__factory.js.map +0 -1
  105. package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +0 -609
  106. package/dist/cjs/contracts/factories/Maintainer__factory.js +0 -792
  107. package/dist/cjs/contracts/factories/Maintainer__factory.js.map +0 -1
  108. package/dist/cjs/contracts/factories/MockToken__factory.d.ts +0 -273
  109. package/dist/cjs/contracts/factories/MockToken__factory.js +0 -365
  110. package/dist/cjs/contracts/factories/MockToken__factory.js.map +0 -1
  111. package/dist/cjs/contracts/factories/MockUSD__factory.d.ts +0 -320
  112. package/dist/cjs/contracts/factories/MockUSD__factory.js +0 -431
  113. package/dist/cjs/contracts/factories/MockUSD__factory.js.map +0 -1
  114. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
  115. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +0 -122
  116. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
  117. package/dist/cjs/contracts/factories/WeETH__factory.d.ts +0 -545
  118. package/dist/cjs/contracts/factories/WeETH__factory.js +0 -721
  119. package/dist/cjs/contracts/factories/WeETH__factory.js.map +0 -1
  120. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
  121. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5324
  122. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
  123. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
  124. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -254
  125. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
  126. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
  127. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +0 -928
  128. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
  129. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
  130. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +0 -456
  131. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
  132. package/dist/cjs/contracts/factories/lean0/index.d.ts +0 -4
  133. package/dist/cjs/contracts/factories/lean0/index.js +0 -15
  134. package/dist/cjs/contracts/factories/lean0/index.js.map +0 -1
  135. package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +0 -2821
  136. package/dist/cjs/contracts/lean0/IPerpetualManager.js +0 -3
  137. package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +0 -1
  138. package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +0 -533
  139. package/dist/cjs/contracts/lean0/LimitOrderBook.js +0 -3
  140. package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +0 -1
  141. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
  142. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +0 -3
  143. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
  144. package/dist/cjs/contracts/lean0/ShareToken.d.ts +0 -320
  145. package/dist/cjs/contracts/lean0/ShareToken.js +0 -3
  146. package/dist/cjs/contracts/lean0/ShareToken.js.map +0 -1
  147. package/dist/cjs/contracts/lean0/index.d.ts +0 -4
  148. package/dist/cjs/contracts/lean0/index.js +0 -3
  149. package/dist/cjs/contracts/lean0/index.js.map +0 -1
  150. package/dist/esm/abi/AMMPerpLogic.json +0 -580
  151. package/dist/esm/abi/BeaconProxy.json +0 -71
  152. package/dist/esm/abi/IPerpetualManager copy.json +0 -5599
  153. package/dist/esm/abi/IPerpetualMarginViewLogic.json +0 -286
  154. package/dist/esm/abi/Maintainer.json +0 -774
  155. package/dist/esm/abi/MockToken.json +0 -347
  156. package/dist/esm/abi/MockUSD.json +0 -413
  157. package/dist/esm/abi/UUPSUpgradeable.json +0 -104
  158. package/dist/esm/abi/WeETH.json +0 -310
  159. package/dist/esm/abi/lean0/IPerpetualManager.json +0 -5306
  160. package/dist/esm/abi/lean0/LimitOrderBook.json +0 -910
  161. package/dist/esm/abi/lean0/LimitOrderBookFactory.json +0 -236
  162. package/dist/esm/abi/lean0/ShareToken.json +0 -438
  163. package/dist/esm/abi-zkevm/IPerpetualManager.json +0 -5366
  164. package/dist/esm/abi-zkevm/LimitOrderBook.json +0 -910
  165. package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +0 -236
  166. package/dist/esm/contracts/AMMPerpLogic.d.ts +0 -303
  167. package/dist/esm/contracts/AMMPerpLogic.js +0 -2
  168. package/dist/esm/contracts/AMMPerpLogic.js.map +0 -1
  169. package/dist/esm/contracts/BeaconProxy.d.ts +0 -63
  170. package/dist/esm/contracts/BeaconProxy.js +0 -2
  171. package/dist/esm/contracts/BeaconProxy.js.map +0 -1
  172. package/dist/esm/contracts/IPerpetualManagerCopy.d.ts +0 -3223
  173. package/dist/esm/contracts/IPerpetualManagerCopy.js +0 -2
  174. package/dist/esm/contracts/IPerpetualManagerCopy.js.map +0 -1
  175. package/dist/esm/contracts/IPerpetualMarginViewLogic.d.ts +0 -183
  176. package/dist/esm/contracts/IPerpetualMarginViewLogic.js +0 -2
  177. package/dist/esm/contracts/IPerpetualMarginViewLogic.js.map +0 -1
  178. package/dist/esm/contracts/Maintainer.d.ts +0 -799
  179. package/dist/esm/contracts/Maintainer.js +0 -2
  180. package/dist/esm/contracts/Maintainer.js.map +0 -1
  181. package/dist/esm/contracts/MockToken.d.ts +0 -263
  182. package/dist/esm/contracts/MockToken.js +0 -2
  183. package/dist/esm/contracts/MockToken.js.map +0 -1
  184. package/dist/esm/contracts/MockUSD.d.ts +0 -186
  185. package/dist/esm/contracts/MockUSD.js +0 -2
  186. package/dist/esm/contracts/MockUSD.js.map +0 -1
  187. package/dist/esm/contracts/UUPSUpgradeable.d.ts +0 -118
  188. package/dist/esm/contracts/UUPSUpgradeable.js +0 -2
  189. package/dist/esm/contracts/UUPSUpgradeable.js.map +0 -1
  190. package/dist/esm/contracts/WeETH.d.ts +0 -503
  191. package/dist/esm/contracts/WeETH.js +0 -2
  192. package/dist/esm/contracts/WeETH.js.map +0 -1
  193. package/dist/esm/contracts/factories/AMMPerpLogic__factory.d.ts +0 -452
  194. package/dist/esm/contracts/factories/AMMPerpLogic__factory.js +0 -594
  195. package/dist/esm/contracts/factories/AMMPerpLogic__factory.js.map +0 -1
  196. package/dist/esm/contracts/factories/BeaconProxy__factory.d.ts +0 -61
  197. package/dist/esm/contracts/factories/BeaconProxy__factory.js +0 -85
  198. package/dist/esm/contracts/factories/BeaconProxy__factory.js.map +0 -1
  199. package/dist/esm/contracts/factories/IPerpetualManagerCopy__factory.d.ts +0 -4358
  200. package/dist/esm/contracts/factories/IPerpetualManagerCopy__factory.js +0 -5613
  201. package/dist/esm/contracts/factories/IPerpetualManagerCopy__factory.js.map +0 -1
  202. package/dist/esm/contracts/factories/IPerpetualMarginViewLogic__factory.d.ts +0 -221
  203. package/dist/esm/contracts/factories/IPerpetualMarginViewLogic__factory.js +0 -300
  204. package/dist/esm/contracts/factories/IPerpetualMarginViewLogic__factory.js.map +0 -1
  205. package/dist/esm/contracts/factories/Maintainer__factory.d.ts +0 -609
  206. package/dist/esm/contracts/factories/Maintainer__factory.js +0 -788
  207. package/dist/esm/contracts/factories/Maintainer__factory.js.map +0 -1
  208. package/dist/esm/contracts/factories/MockToken__factory.d.ts +0 -273
  209. package/dist/esm/contracts/factories/MockToken__factory.js +0 -361
  210. package/dist/esm/contracts/factories/MockToken__factory.js.map +0 -1
  211. package/dist/esm/contracts/factories/MockUSD__factory.d.ts +0 -320
  212. package/dist/esm/contracts/factories/MockUSD__factory.js +0 -427
  213. package/dist/esm/contracts/factories/MockUSD__factory.js.map +0 -1
  214. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
  215. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +0 -118
  216. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
  217. package/dist/esm/contracts/factories/WeETH__factory.d.ts +0 -545
  218. package/dist/esm/contracts/factories/WeETH__factory.js +0 -717
  219. package/dist/esm/contracts/factories/WeETH__factory.js.map +0 -1
  220. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
  221. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5320
  222. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
  223. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
  224. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -250
  225. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
  226. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
  227. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +0 -924
  228. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
  229. package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
  230. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +0 -452
  231. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
  232. package/dist/esm/contracts/factories/lean0/index.d.ts +0 -4
  233. package/dist/esm/contracts/factories/lean0/index.js +0 -8
  234. package/dist/esm/contracts/factories/lean0/index.js.map +0 -1
  235. package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +0 -2821
  236. package/dist/esm/contracts/lean0/IPerpetualManager.js +0 -2
  237. package/dist/esm/contracts/lean0/IPerpetualManager.js.map +0 -1
  238. package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +0 -533
  239. package/dist/esm/contracts/lean0/LimitOrderBook.js +0 -2
  240. package/dist/esm/contracts/lean0/LimitOrderBook.js.map +0 -1
  241. package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
  242. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +0 -2
  243. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
  244. package/dist/esm/contracts/lean0/ShareToken.d.ts +0 -320
  245. package/dist/esm/contracts/lean0/ShareToken.js +0 -2
  246. package/dist/esm/contracts/lean0/ShareToken.js.map +0 -1
  247. package/dist/esm/contracts/lean0/index.d.ts +0 -4
  248. package/dist/esm/contracts/lean0/index.js +0 -2
  249. package/dist/esm/contracts/lean0/index.js.map +0 -1
  250. package/src/contracts/IPerpetualMarginViewLogic.ts +0 -347
  251. package/src/contracts/MockUSD.ts +0 -378
  252. package/src/contracts/factories/IPerpetualMarginViewLogic__factory.ts +0 -313
  253. package/src/contracts/factories/MockUSD__factory.ts +0 -430
@@ -144,16 +144,17 @@ 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
+ * [~pmMaintenanceMarginRate(position, lockedInQC, sm, m)](#module_d8xMath..pmMaintenanceMarginRate) ⇒ <code>number</code>
154
+ * [~pmInitialMarginRate(posSign, s0, sm, cmin)](#module_d8xMath..pmInitialMarginRate) ⇒ <code>number</code>
155
155
  * [~pmExchangeFee(prob, m, tradeAmt, tradeMgnRate)](#module_d8xMath..pmExchangeFee) ⇒
156
156
  * [~pmMarginBalance(pos, s2, s3, ell, mc)](#module_d8xMath..pmMarginBalance) ⇒
157
+ * [~pmFindLiquidationPrice(pos, s3, ell, mc, baseMarginRate, sm)](#module_d8xMath..pmFindLiquidationPrice) ⇒ <code>number</code>
157
158
  * [~excessMargin(tradeAmt, currentCashCC, currentPos, currentLockedInQC, limitPrice, Sm, S3)](#module_d8xMath..excessMargin) ⇒
158
159
  * [~pmGetDepositAmtForLvgTrade(tradeAmt, targetLvg, price, S3, S2Mark)](#module_d8xMath..pmGetDepositAmtForLvgTrade) ⇒
159
160
  * [~pmExcessCashAtLvg(tradeAmt, lvg, walletBalCC, currentCashCC, currentPosition, currentLockedInValue, slippage, S2, Sm, S3, totLong, totShort)](#module_d8xMath..pmExcessCashAtLvg) ⇒
@@ -395,7 +396,7 @@ See calculateLiquidationPriceCollateralQuantoConservative for a more conservativ
395
396
 
396
397
  <a name="module_d8xMath..getDepositAmountForLvgTrade"></a>
397
398
 
398
- ### d8xMath~getDepositAmountForLvgTrade(pos0, b0, tradeAmnt, targetLvg, price, S3, S2Mark, isPredMkt) ⇒ <code>number</code>
399
+ ### d8xMath~getDepositAmountForLvgTrade(pos0, b0, tradeAmnt, targetLvg, price, S3, S2Mark, cmin) ⇒ <code>number</code>
399
400
  <p>Determine amount to be deposited into margin account so that the given leverage
400
401
  is obtained when trading a position pos (trade amount = position)
401
402
  Does NOT include fees
@@ -413,8 +414,77 @@ Smart contract equivalent: calcMarginForTargetLeverage(..., _ignorePosBalance =
413
414
  | price | <code>number</code> | <p>price to trade amount 'tradeAmnt'</p> |
414
415
  | S3 | <code>number</code> | <p>collateral to quote conversion (=S2 if base-collateral, =1 if quote collateral, = index S3 if quanto)</p> |
415
416
  | S2Mark | <code>number</code> | <p>mark price</p> |
416
- | isPredMkt | <code>boolean</code> | <p>true if prediction market</p> |
417
+ | cmin | <code>number</code> | <p>Absolute minimum margin per contract, only for pred markets</p> |
417
418
 
419
+ <a name="module_d8xMath..getDepositAmountForPredMktLvgTrade"></a>
420
+
421
+ ### d8xMath~getDepositAmountForPredMktLvgTrade(pos0, b0, c0, tradeAmnt, targetLvg, prob, S3, markProb, imr) ⇒ <code>number</code>
422
+ <p>Determine amount to be deposited into margin account so that the given leverage
423
+ is obtained when opening a prediction market position
424
+ Does NOT include fees, but accounts for a possible non-zero current position
425
+ Smart contract equivalent: getDepositAmountForPredMktLvgPosition</p>
426
+
427
+ **Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
428
+ **Returns**: <code>number</code> - <p>Amount to be deposited to have the given leverage when trading into position pos before fees</p>
429
+
430
+ | Param | Type | Description |
431
+ | --- | --- | --- |
432
+ | pos0 | <code>number</code> | <p>current position</p> |
433
+ | b0 | <code>number</code> | <p>current balance</p> |
434
+ | c0 | <code>number</code> | <p>current available cash</p> |
435
+ | tradeAmnt | <code>number</code> | <p>amount to trade</p> |
436
+ | targetLvg | <code>number</code> | <p>target leverage</p> |
437
+ | prob | <code>number</code> | <p>prob to trade amount 'tradeAmnt'</p> |
438
+ | S3 | <code>number</code> | <p>collateral to quote conversion (=S2 if base-collateral, =1 if quote collateral, = index S3 if quanto)</p> |
439
+ | markProb | <code>number</code> | <p>mark prob</p> |
440
+ | imr | <code>number</code> | <p>minimum absolute margin per contract (fInitialMarginRate)</p> |
441
+
442
+ <a name="module_d8xMath..getDepositAmountForPredMktLvgTrade..newPos"></a>
443
+
444
+ #### getDepositAmountForPredMktLvgTrade~newPos
445
+ <p>Smart contract implementation:
446
+ // find smallest x such that:
447
+ // bal * s3 &gt;= pos value / lvg
448
+ // where:
449
+ // pos value / lvg = |pos| * R(pm, sign(pos)) * margin rate
450
+ // pos = pos0 + k
451
+ // cash = cash0 + x
452
+ // ell = ell0 + px * k
453
+ // bal * s3 = cash * s3 + pos * sm - ell
454
+ // = bal0 * s3 + x * s3 + k * (sm - px)
455
+ // subject to:
456
+ // x &gt;= 0
457
+ // cash * s3 &gt;= |pos| * min(cmin, prob(sign(pos)))
458
+ // k * (sm - px) &lt;= 0 a.s.
459
+ // (positive pnl does not contribute, i.e. ignore px better than mark)
460
+ // solution:
461
+ // bal0 * s3 + x * s3 &gt;= pos value / lvg + (k * (px - sm))<em>+ = v * s3
462
+ // --&gt;
463
+ // x &gt;= v + (cash0 - bal0)</em>+ - cash0 = v - min(bal0, cash0)
464
+ // = pos value / lvg/ s3 + (k * (px - sm))_+ / s3 - min (bal0, cash0)
465
+ // = A + B - C
466
+ // x &gt;= |pos| * min(cmin, prob(sign(pos))) / s3 - cash0
467
+ // x &gt;= 0
468
+ // init x = A = pos value / lvg / s3
469
+ int128 fNewPos = _fPosition0.add(_fTradeAmount);
470
+ int128 v = (
471
+ fNewPos &gt; 0 ? fNewPos.mul(_fMarkProb) : fNewPos.neg().mul(ONE_64x64.sub(_fMarkProb))
472
+ ).mul(_fMarginRate).div(_fS3);
473
+ // + B = max(0,k * (px - sm)) / s3
474
+ {
475
+ int128 fPnL = _fTradeAmount.mul(_fMarkProb.sub(_fTradeProb));
476
+ if (fPnL &lt; 0) {
477
+ v = v.sub(fPnL.div(_fS3)); // pnl &lt; 0 -&gt; increase v
478
+ }
479
+ }
480
+ // - C = - min(bal0, cash0) = - Equity
481
+ {
482
+ int128 equity = _fCash0CC &lt; _fBalance0 ? _fCash0CC : _fBalance0;
483
+ v = v.sub(equity); // equity can be used / must be covered if negative
484
+ }
485
+ return v &gt; 0 ? v : int128(0);</p>
486
+
487
+ **Kind**: inner constant of [<code>getDepositAmountForPredMktLvgTrade</code>](#module_d8xMath..getDepositAmountForPredMktLvgTrade)
418
488
  <a name="module_d8xMath..priceToProb"></a>
419
489
 
420
490
  ### d8xMath~priceToProb(px) ⇒
@@ -441,82 +511,49 @@ Smart contract equivalent: calcMarginForTargetLeverage(..., _ignorePosBalance =
441
511
 
442
512
  <a name="module_d8xMath..pmMarginThresh"></a>
443
513
 
444
- ### d8xMath~pmMarginThresh(pos, s2, s3, m) ⇒
514
+ ### d8xMath~pmMarginThresh(pos, lockedInQC, s2, s3, m) ⇒
445
515
  <p>Maintenance margin requirement for prediction markets</p>
446
516
 
447
517
  **Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
448
518
  **Returns**: <p>required margin balance</p>
449
519
 
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> |
520
+ | Param | Description |
521
+ | --- | --- |
522
+ | pos | <p>signed position</p> |
523
+ | lockedInQC | <p>locked in value</p> |
524
+ | s2 | <p>mark price</p> |
525
+ | s3 | <p>collateral to quote conversion</p> |
526
+ | m | <p>base margin rate</p> |
456
527
 
457
528
  <a name="module_d8xMath..pmMaintenanceMarginRate"></a>
458
529
 
459
- ### d8xMath~pmMaintenanceMarginRate(posSign, sm, m) ⇒
530
+ ### d8xMath~pmMaintenanceMarginRate(position, lockedInQC, sm, m) ⇒ <code>number</code>
460
531
  <p>Maintenance margin rate for prediction markets.</p>
461
532
 
462
533
  **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>
534
+ **Returns**: <code>number</code> - <p>The margin rate to be applied: (Math.abs(pos) * p * tau) / s3</p>
493
535
 
494
536
  | Param | Description |
495
537
  | --- | --- |
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> |
538
+ | position | <p>signed position in base currency</p> |
539
+ | lockedInQC | <p>locked in value, p or 1-p times number of contracts</p> |
540
+ | sm | <p>mark-price (=1+p)</p> |
541
+ | m | <p>absolute maintenance buffer per contract (mu_m, fMaintenanceMarginRate)</p> |
502
542
 
503
- <a name="module_d8xMath..expectedLossImpact"></a>
543
+ <a name="module_d8xMath..pmInitialMarginRate"></a>
504
544
 
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>
545
+ ### d8xMath~pmInitialMarginRate(posSign, s0, sm, cmin) ⇒ <code>number</code>
546
+ <p>Initial margin rate for prediction markets.</p>
510
547
 
511
548
  **Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
512
- **Returns**: <p>dollar fee</p>
549
+ **Returns**: <code>number</code> - <p>The margin rate to be applied: <code>(Math.abs(pos) * p * tau) / s3</code></p>
513
550
 
514
551
  | Param | Description |
515
552
  | --- | --- |
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> |
553
+ | posSign | <p>sign of position in base currency (can be signed position or -1, 1)</p> |
554
+ | s0 | <p>trade price</p> |
555
+ | sm | <p>mark-price (=1+p)</p> |
556
+ | cmin | <p>Absolute min margin saved as <code>fInitialMarginRate</code></p> |
520
557
 
521
558
  <a name="module_d8xMath..pmExchangeFee"></a>
522
559
 
@@ -550,6 +587,21 @@ For opening trades only</p>
550
587
  | ell | <p>locked in value</p> |
551
588
  | mc | <p>margin cash in collateral currency</p> |
552
589
 
590
+ <a name="module_d8xMath..pmFindLiquidationPrice"></a>
591
+
592
+ ### d8xMath~pmFindLiquidationPrice(pos, s3, ell, mc, baseMarginRate, sm) ⇒ <code>number</code>
593
+ **Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
594
+ **Returns**: <code>number</code> - <p>Liquidation price as a probability in the range [0, 1]</p>
595
+
596
+ | Param | Description |
597
+ | --- | --- |
598
+ | pos | <p>Signed position size</p> |
599
+ | s3 | <p>Collateral to quote conversion at spot</p> |
600
+ | ell | <p>Locked-in value</p> |
601
+ | mc | <p>Margin collateral</p> |
602
+ | baseMarginRate | <p>Maintenance margin per contract (mu_m)</p> |
603
+ | sm | <p>Mark price at entry</p> |
604
+
553
605
  <a name="module_d8xMath..excessMargin"></a>
554
606
 
555
607
  ### d8xMath~excessMargin(tradeAmt, currentCashCC, currentPos, currentLockedInQC, limitPrice, Sm, S3) ⇒
@@ -649,7 +701,7 @@ Factors in lot size and global max short/long, factors in opening/closing positi
649
701
  | short | <p>Short open OI</p> |
650
702
  | sm | <p>Mark price (&gt;1)</p> |
651
703
  | isBuy | <p>True if trade is long</p> |
652
- | mr | <p>Maintenance margin rate</p> |
704
+ | mr | <p>Margin threshold per contract for liquidation (mu_m)</p> |
653
705
 
654
706
  <a name="module_utils"></a>
655
707
 
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.00",
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",
@@ -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";