@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
@@ -331,30 +331,100 @@ export function getNewPositionLeverage(tradeAmount, marginCollateral, currentPos
331
331
  * @param {number} price - price to trade amount 'tradeAmnt'
332
332
  * @param {number} S3 - collateral to quote conversion (=S2 if base-collateral, =1 if quote collateral, = index S3 if quanto)
333
333
  * @param {number} S2Mark - mark price
334
- * @param {boolean} isPredMkt - true if prediction market
334
+ * @param {number} cmin - Absolute minimum margin per contract, only for pred markets
335
335
  * @returns {number} Amount to be deposited to have the given leverage when trading into position pos before fees
336
336
  */
337
- export function getDepositAmountForLvgTrade(pos0, b0, tradeAmnt, targetLvg, price, S3, S2Mark, isPredMkt) {
338
- let pnl = (tradeAmnt * (S2Mark - price)) / S3;
339
- let S2MarkBefore = S2Mark;
340
- if (isPredMkt) {
341
- // adjust mark price to 'probability'
342
- S2Mark = S2Mark - 1;
343
- S2MarkBefore = S2Mark;
344
- if (pos0 < 0) {
345
- S2MarkBefore = 1 - S2Mark;
346
- }
347
- if (pos0 + tradeAmnt < 0) {
348
- S2Mark = 1 - S2Mark;
337
+ export function getDepositAmountForLvgTrade(pos0, b0, tradeAmnt, targetLvg, price, S3, S2Mark, cmin) {
338
+ if (cmin && cmin > 0) {
339
+ // TODO: c0?
340
+ if (b0 != 0) {
341
+ console.log("b0 != 0");
349
342
  }
343
+ return getDepositAmountForPredMktLvgTrade(pos0, b0, 0, tradeAmnt, targetLvg, price - 1, S3, S2Mark - 1, cmin);
350
344
  }
345
+ let pnl = (tradeAmnt * (S2Mark - price)) / S3;
351
346
  if (targetLvg == 0) {
352
347
  // use current leverage
353
- targetLvg = (Math.abs(pos0) * S2MarkBefore) / S3 / b0;
348
+ targetLvg = (Math.abs(pos0) * S2Mark) / S3 / b0;
354
349
  }
355
350
  let b = (Math.abs(pos0 + tradeAmnt) * S2Mark) / S3 / targetLvg;
356
351
  return -(b0 + pnl - b);
357
352
  }
353
+ /**
354
+ * Determine amount to be deposited into margin account so that the given leverage
355
+ * is obtained when opening a prediction market position
356
+ * Does NOT include fees, but accounts for a possible non-zero current position
357
+ * Smart contract equivalent: getDepositAmountForPredMktLvgPosition
358
+ * @param {number} pos0 - current position
359
+ * @param {number} b0 - current balance
360
+ * @param {number} c0 - current available cash
361
+ * @param {number} tradeAmnt - amount to trade
362
+ * @param {number} targetLvg - target leverage
363
+ * @param {number} prob - prob to trade amount 'tradeAmnt'
364
+ * @param {number} S3 - collateral to quote conversion (=S2 if base-collateral, =1 if quote collateral, = index S3 if quanto)
365
+ * @param {number} markProb - mark prob
366
+ * @param {number} imr - minimum absolute margin per contract (fInitialMarginRate)
367
+ * @returns {number} Amount to be deposited to have the given leverage when trading into position pos before fees
368
+ */
369
+ export function getDepositAmountForPredMktLvgTrade(pos0, b0, c0, tradeAmnt, targetLvg, prob, S3, markProb, imr) {
370
+ /**
371
+ * Smart contract implementation:
372
+ // find smallest x such that:
373
+ // bal * s3 >= pos value / lvg
374
+ // where:
375
+ // pos value / lvg = |pos| * R(pm, sign(pos)) * margin rate
376
+ // pos = pos0 + k
377
+ // cash = cash0 + x
378
+ // ell = ell0 + px * k
379
+ // bal * s3 = cash * s3 + pos * sm - ell
380
+ // = bal0 * s3 + x * s3 + k * (sm - px)
381
+
382
+ // subject to:
383
+ // x >= 0
384
+ // cash * s3 >= |pos| * min(cmin, prob(sign(pos)))
385
+ // k * (sm - px) <= 0 a.s.
386
+ // (positive pnl does not contribute, i.e. ignore px better than mark)
387
+
388
+ // solution:
389
+ // bal0 * s3 + x * s3 >= pos value / lvg + (k * (px - sm))_+ = v * s3
390
+ // -->
391
+ // x >= v + (cash0 - bal0)_+ - cash0 = v - min(bal0, cash0)
392
+ // = pos value / lvg/ s3 + (k * (px - sm))_+ / s3 - min (bal0, cash0)
393
+ // = A + B - C
394
+ // x >= |pos| * min(cmin, prob(sign(pos))) / s3 - cash0
395
+ // x >= 0
396
+
397
+ // init x = A = pos value / lvg / s3
398
+ int128 fNewPos = _fPosition0.add(_fTradeAmount);
399
+ int128 v = (
400
+ fNewPos > 0 ? fNewPos.mul(_fMarkProb) : fNewPos.neg().mul(ONE_64x64.sub(_fMarkProb))
401
+ ).mul(_fMarginRate).div(_fS3);
402
+ // + B = max(0,k * (px - sm)) / s3
403
+ {
404
+ int128 fPnL = _fTradeAmount.mul(_fMarkProb.sub(_fTradeProb));
405
+ if (fPnL < 0) {
406
+ v = v.sub(fPnL.div(_fS3)); // pnl < 0 -> increase v
407
+ }
408
+ }
409
+ // - C = - min(bal0, cash0) = - Equity
410
+ {
411
+ int128 equity = _fCash0CC < _fBalance0 ? _fCash0CC : _fBalance0;
412
+ v = v.sub(equity); // equity can be used / must be covered if negative
413
+ }
414
+ return v > 0 ? v : int128(0);
415
+ */
416
+ const newPos = pos0 + tradeAmnt;
417
+ const posProb = newPos > 0 ? markProb : 1 - markProb; // R(pm, sign(new pos))
418
+ const maxLvg = pmMaxLeverage(newPos, markProb, imr);
419
+ targetLvg = targetLvg > maxLvg ? maxLvg : targetLvg;
420
+ const posValue = (Math.abs(newPos) * posProb) / S3;
421
+ const tradeLoss = Math.max(0, tradeAmnt * (prob - markProb)) / S3;
422
+ const curEquity = Math.min(c0, b0);
423
+ return Math.max(posValue / targetLvg + tradeLoss - curEquity, 0);
424
+ }
425
+ function pmMaxLeverage(posSign, markProb, minMarginPerCtrct) {
426
+ return Math.round(100 * (posSign > 0 ? markProb / minMarginPerCtrct : (1 - markProb) / minMarginPerCtrct)) / 100;
427
+ }
358
428
  /**
359
429
  * Convert a perpetual price to probability (predtictive markets)
360
430
  * @param px Perpetual price
@@ -369,7 +439,7 @@ export function priceToProb(px) {
369
439
  * @returns Perpetual price
370
440
  */
371
441
  export function probToPrice(prob) {
372
- return 1 + prob;
442
+ return Math.max(1, Math.min(2, 1 + prob));
373
443
  }
374
444
  // shannon entropy
375
445
  export function entropy(prob) {
@@ -381,109 +451,56 @@ export function entropy(prob) {
381
451
  /**
382
452
  * Maintenance margin requirement for prediction markets
383
453
  * @param pos signed position
454
+ * @param lockedInQC locked in value
384
455
  * @param s2 mark price
385
456
  * @param s3 collateral to quote conversion
386
457
  * @param m base margin rate
387
458
  * @returns required margin balance
388
459
  */
389
- function pmMarginThresh(pos, s2, s3, m = 0.18) {
390
- let p = s2 - 1;
391
- if (pos < 0) {
392
- p = 1 - p;
393
- }
394
- const h = entropy(p);
395
- const tau = m + (0.4 - m) * h;
396
- return (Math.abs(pos) * p * tau) / s3;
460
+ function pmMarginThresh(pos, lockedInQC, s2, s3, m) {
461
+ return (pmMaintenanceMarginRate(pos, lockedInQC, s2, m) * Math.abs(pos)) / s3;
397
462
  }
398
463
  /**
399
464
  * Maintenance margin rate for prediction markets.
400
- * @param posSign sign of position in base currency (can be signed position or -1, 1)
465
+ * @param position signed position in base currency
466
+ * @param lockedInQC locked in value, p or 1-p times number of contracts
401
467
  * @param sm mark-price (=1+p)
402
- * @param m max margin rate from fInitialMarginRate
403
- * @returns margin rate to be applied (Math.abs(pos) * p * tau) / s3;
404
- */
405
- export function pmMaintenanceMarginRate(posSign, sm, m = 0.18) {
406
- let p = sm - 1;
407
- if (posSign < 0) {
408
- p = 1 - p;
468
+ * @param m absolute maintenance buffer per contract (mu_m, fMaintenanceMarginRate)
469
+ * @returns {number} The margin rate to be applied: (Math.abs(pos) * p * tau) / s3
470
+ */
471
+ export function pmMaintenanceMarginRate(position, lockedInQC, sm, m) {
472
+ let pm = sm - 1;
473
+ let entryP = position == 0 ? pm : Math.abs(lockedInQC / position) - 1;
474
+ if (position < 0) {
475
+ pm = 1 - pm;
476
+ entryP = 1 - entryP;
409
477
  }
410
- const h = entropy(p);
411
- return m + (0.4 - m) * h;
478
+ const L = Math.max(entryP - pm, 0);
479
+ const balAtLiq = Math.min(m + L, entryP) * Math.abs(position) + position * sm - lockedInQC;
480
+ return balAtLiq / (Math.abs(position) * pm);
412
481
  }
413
482
  /**
414
- * Maintenance margin rate for prediction markets.
483
+ * Initial margin rate for prediction markets.
415
484
  * @param posSign sign of position in base currency (can be signed position or -1, 1)
485
+ * @param s0 trade price
416
486
  * @param sm mark-price (=1+p)
417
- * @param m max margin rate from fMaintenanceMarginRate
418
- * @returns margin rate to be applied (Math.abs(pos) * p * tau) / s3;
487
+ * @param cmin Absolute min margin saved as `fInitialMarginRate`
488
+ * @returns {number} The margin rate to be applied: `(Math.abs(pos) * p * tau) / s3`
419
489
  */
420
- export function pmInitialMarginRate(posSign, sm, m = 0.2) {
421
- let p = sm - 1;
490
+ export function pmInitialMarginRate(posSign, s0, sm, cmin) {
491
+ let pm = sm - 1;
492
+ let p0 = s0 - 1;
422
493
  if (posSign < 0) {
423
- p = 1 - p;
494
+ pm = 1 - pm; // R(p_mark, sign(pos))
495
+ p0 = 1 - p0; // R(p_entry, sign(pos))
424
496
  }
425
- const h = entropy(p);
426
- return m + (0.5 - m) * h;
427
- }
428
- /**
429
- * Calculate the expected loss for a prediction market trade used for
430
- * prediction market fees
431
- * @param p probability derived from mark price (long)
432
- * @param m maximal maintenance rate from which we defer the actual maintenance margin rate
433
- * @param totLong total long in base currency
434
- * @param totShort total short
435
- * @param tradeAmt signed trade amount, can be zero
436
- * @param tradeMgnRate margin rate of the trader
437
- * @returns expected loss in dollars
438
- */
439
- export function expectedLoss(p, m, totLong, totShort, tradeAmt, tradeMgnRate) {
440
- // maintenance margin rate
441
- m = (0.4 - m) * entropy(p) + m;
442
- let dlm = 0;
443
- let dl = 0;
444
- let dsm = 0;
445
- let ds = 0;
446
- if (tradeAmt > 0) {
447
- dlm = p * tradeAmt * tradeMgnRate;
448
- dl = tradeAmt;
449
- }
450
- else if (tradeAmt < 0) {
451
- dsm = (1 - p) * Math.abs(tradeAmt) * tradeMgnRate;
452
- ds = Math.abs(tradeAmt);
453
- }
454
- const a = dl + totLong - m * totShort - dsm;
455
- const b = ds + totShort - m * totLong - dlm;
456
- return p * (1 - p) * Math.max(0, a + b);
457
- }
458
- /**
459
- * Equivalent to
460
- * const el0 = expectedLoss(prob, m, totLong, totShort, 0, 0);
461
- * const el1 = expectedLoss(prob, m, totLong, totShort, tradeAmt, tradeMgnRate)
462
- * const fee = (el1 - el0) / Math.abs(tradeAmt);
463
- * @param p prob long probability
464
- * @param m max maintenance margin rate (0.18)
465
- * @param tradeAmt trade amount in base currency
466
- * @param tradeMgnRate margin rate for this trade
467
- * @returns dollar fee
468
- */
469
- function expectedLossImpact(p, m, tradeAmt, tradeMgnRate) {
470
- m = (0.4 - m) * entropy(p) + m;
471
- let dlm = 0;
472
- let dl = 0;
473
- let dsm = 0;
474
- let ds = 0;
475
- if (tradeAmt > 0) {
476
- dlm = p * tradeAmt * tradeMgnRate;
477
- dl = tradeAmt;
478
- }
479
- else if (tradeAmt < 0) {
480
- dsm = (1 - p) * Math.abs(tradeAmt) * tradeMgnRate;
481
- ds = Math.abs(tradeAmt);
482
- }
483
- //long: p * (1 - p) max(0, dl-dlm) = p * (1 - p) max(0, tradeAmt - p * tradeAmt * tradeMgnRate)
484
- const a = dl - dsm;
485
- const b = ds - dlm;
486
- return p * (1 - p) * Math.max(0, a + b);
497
+ // mu0 = max(Rm/lvg, min(Rm, cmin))
498
+ // balance = (mu0 * |k| + k *(sm - s0)) / s3
499
+ // pos value = |k| * Rm / s3
500
+ // at max init lvg: Rm/lvg = min(cmin, Rm)
501
+ // --> margin rate = (mu0 + Rm - R0) / Rm
502
+ const mu0 = Math.min(pm, cmin) + Math.max(0, p0 - pm);
503
+ return (mu0 + pm - p0) / pm;
487
504
  }
488
505
  /**
489
506
  * Exchange fee as a rate for prediction markets
@@ -495,13 +512,12 @@ function expectedLossImpact(p, m, tradeAmt, tradeMgnRate) {
495
512
  * @returns dollar fee relative to tradeAmt
496
513
  */
497
514
  export function pmExchangeFee(prob, m, tradeAmt, tradeMgnRate) {
498
- /*
499
- equivalent:
500
- const el0 = expectedLoss(prob, m, totLong, totShort, 0, 0);
501
- const el1 = expectedLoss(prob, m, totLong, totShort, tradeAmt, tradeMgnRate);
502
- const fee = (el1 - el0) / Math.abs(tradeAmt);
503
- */
504
- let fee = expectedLossImpact(prob, m, tradeAmt, tradeMgnRate) / Math.abs(tradeAmt);
515
+ // TODO: port contract logic here
516
+ const [kappa, es] = [0, 0];
517
+ prob = tradeAmt > 0 ? prob : 1 - prob;
518
+ let fee = prob * (1 - kappa);
519
+ const scaledLvg = prob * tradeMgnRate * (1 - fee);
520
+ fee = fee * (1 - prob) - scaledLvg + es;
505
521
  return Math.max(fee, 0.001);
506
522
  }
507
523
  /**
@@ -517,27 +533,39 @@ export function pmMarginBalance(pos, s2, s3, ell, mc) {
517
533
  return (pos * s2) / s3 - ell / s3 + mc;
518
534
  }
519
535
  export function pmExcessBalance(pos, s2, s3, ell, mc, m) {
520
- return pmMarginBalance(pos, s2, s3, ell, mc) - pmMarginThresh(pos, s2, s3, m);
521
- }
522
- // finds the liquidation price for prediction markets
523
- // using Newton's algorithm
524
- export function pmFindLiquidationPrice(pos, s3, ell, mc, baseMarginRate, s2Start = 0.5) {
525
- const delta_s = 0.01;
526
- let s = 100;
527
- let s_new = s2Start;
528
- while (Math.abs(s_new - s) > 0.01) {
529
- s = s_new;
530
- const f = Math.pow(pmExcessBalance(pos, s, s3, ell, mc, baseMarginRate), 2);
531
- const ds = (Math.pow(pmExcessBalance(pos, s + delta_s, s3, ell, mc, baseMarginRate), 2) - f) / delta_s;
532
- s_new = s - f / ds;
533
- if (s_new < 1) {
534
- return 1;
535
- }
536
- if (s_new > 2) {
537
- return 2;
538
- }
536
+ return pmMarginBalance(pos, s2, s3, ell, mc) - pmMarginThresh(pos, ell, s2, s3, m);
537
+ }
538
+ /**
539
+ *
540
+ * @param pos Signed position size
541
+ * @param s3 Collateral to quote conversion at spot
542
+ * @param ell Locked-in value
543
+ * @param mc Margin collateral
544
+ * @param baseMarginRate Maintenance margin per contract (mu_m)
545
+ * @param sm Mark price at entry
546
+ * @returns {number} Liquidation price as a probability in the range [0, 1]
547
+ */
548
+ export function pmFindLiquidationPrice(pos, s3, ell, mc, baseMarginRate) {
549
+ // liq <--> (A) c / |k| < R0 && (B) E < |k| * mu_m
550
+ // if not (A), return 0 (long) or 1 (short) [no liq]
551
+ // else, solve for pm:
552
+ // E = c - |k| max(0, s * (p0 - pm)) = |k| * mu_m
553
+ // if c/|k| < mu_m:
554
+ // any number would do --> return 1 (long) or 0 (short)
555
+ // else:
556
+ // pm = p0 - s * (c/|k| - mu_m)
557
+ const p0 = Math.abs(ell / pos) - 1;
558
+ const R0 = pos > 0 ? p0 : 1 - p0;
559
+ const excessPerCtrct = (mc * s3) / Math.abs(pos) - baseMarginRate; // c/|k| - mu_m, mu_m < CMINUS
560
+ if (mc * s3 > R0 * Math.abs(pos)) {
561
+ // c > |k| R(p0, s) --> no liquidation
562
+ return probToPrice(pos > 0 ? 0.0001 : 0.9999);
563
+ }
564
+ if (excessPerCtrct < 0) {
565
+ // already underwater
566
+ return probToPrice(pos > 0 ? 0.9999 : 0.0001);
539
567
  }
540
- return s;
568
+ return probToPrice(pos > 0 ? p0 - excessPerCtrct : p0 + excessPerCtrct);
541
569
  }
542
570
  /**
543
571
  * Calculate the excess margin defined as
@@ -581,19 +609,22 @@ function excessMargin(tradeAmt, currentCashCC, currentPos, currentLockedInQC, li
581
609
  * @returns deposit amount
582
610
  */
583
611
  function pmGetDepositAmtForLvgTrade(tradeAmt, targetLvg, price, S3, S2Mark) {
584
- const pnl = (tradeAmt * (S2Mark - price)) / S3;
585
- let p = S2Mark - 1;
586
- if (tradeAmt < 0) {
587
- p = 1 - p;
588
- }
589
- const b = (Math.abs(tradeAmt) * p) / S3 / targetLvg;
590
- const amt = -(pnl - b);
591
- // check:
592
- //bal = amt+pnl
593
- //pos_val = (np.abs(trade_amt) * p) / S3
594
- //lvg = pos_val/bal
595
- //assert(np.abs(lvg-targetLvg)<0.1)
596
- return amt;
612
+ const cmin = 0.05;
613
+ // refer to main contract function for this:
614
+ return getDepositAmountForPredMktLvgTrade(0, 0, 0, tradeAmt, targetLvg, price - 1, S3, S2Mark - 1, cmin);
615
+ // const pnl = (tradeAmt * (S2Mark - price)) / S3;
616
+ // let p = S2Mark - 1;
617
+ // if (tradeAmt < 0) {
618
+ // p = 1 - p;
619
+ // }
620
+ // const b = (Math.abs(tradeAmt) * p) / S3 / targetLvg;
621
+ // const amt = -(pnl - b);
622
+ // // check:
623
+ // //bal = amt+pnl
624
+ // //pos_val = (np.abs(trade_amt) * p) / S3
625
+ // //lvg = pos_val/bal
626
+ // //assert(np.abs(lvg-targetLvg)<0.1)
627
+ // return amt;
597
628
  }
598
629
  /**
599
630
  * Internal function to calculate cash over initial margin rate
@@ -613,16 +644,19 @@ function pmGetDepositAmtForLvgTrade(tradeAmt, targetLvg, price, S3, S2Mark) {
613
644
  * @returns excess cash
614
645
  */
615
646
  function pmExcessCashAtLvg(tradeAmt, lvg, walletBalCC, currentCashCC, currentPosition, currentLockedInValue, slippage, S2, Sm, S3) {
647
+ const cmin = 0.05;
648
+ const mu_m = 0.01;
649
+ const maxLvg = pmMaxLeverage(currentPosition + tradeAmt, Sm - 1, cmin);
650
+ lvg = lvg < maxLvg ? lvg : maxLvg;
616
651
  //determine deposit amount for given leverage
617
652
  const limitPrice = S2 * (1 + Math.sign(tradeAmt) * slippage);
618
653
  const depositFromWallet = pmGetDepositAmtForLvgTrade(tradeAmt, lvg, limitPrice, S3, Sm);
619
- const m0 = 0.18;
620
654
  //leverage fee
621
655
  let p0 = Sm - 1;
622
656
  if (tradeAmt < 0) {
623
657
  p0 = 2 - Sm; //=1-(Sm-1)
624
658
  }
625
- const feeCc = (Math.abs(tradeAmt) * pmExchangeFee(p0, m0, tradeAmt, 1 / lvg)) / S3;
659
+ const feeCc = (Math.abs(tradeAmt) * pmExchangeFee(p0, mu_m, tradeAmt, 1 / lvg)) / S3;
626
660
  //excess cash
627
661
  let exc = walletBalCC - depositFromWallet - feeCc;
628
662
  if (exc < 0) {
@@ -631,12 +665,13 @@ function pmExcessCashAtLvg(tradeAmt, lvg, walletBalCC, currentCashCC, currentPos
631
665
  // margin balance
632
666
  let pos = currentPosition + tradeAmt;
633
667
  let p = Sm - 1;
668
+ let entryP = limitPrice - 1;
634
669
  if (pos < 0) {
635
- p = 2 - Sm;
670
+ p = 1 - Sm;
671
+ entryP = 1 - entryP;
636
672
  }
637
- const h = entropy(p);
638
- const tau = m0 + (0.5 - m0) * h;
639
- const thresh = Math.abs(pos) * p * tau;
673
+ const mu0 = p / lvg + Math.max(0, entryP - p);
674
+ const thresh = Math.abs(pos) * mu0;
640
675
  const b0 = depositFromWallet +
641
676
  currentCashCC +
642
677
  Math.abs(currentPosition) * Sm -
@@ -748,13 +783,15 @@ export function pmFindMaxPersonalTradeSizeAtLeverage(dir, lvg, walletBalCC, slip
748
783
  * @param short Short open OI
749
784
  * @param sm Mark price (>1)
750
785
  * @param isBuy True if trade is long
751
- * @param mr Maintenance margin rate
786
+ * @param mr Margin threshold per contract for liquidation (mu_m)
752
787
  */
753
788
  export function pmMaxSignedOpenTradeSize(long, short, sm, isBuy, mr, ammFundsQC) {
754
- if (sm < 1) {
789
+ if (sm <= 1 || sm >= 2) {
790
+ // closed
755
791
  return 0;
756
792
  }
757
- const m = pmMaintenanceMarginRate(isBuy ? 1 : -1, sm, mr);
793
+ const counterPos = isBuy ? -short : long;
794
+ const m = pmMaintenanceMarginRate(counterPos, counterPos * sm, sm, mr);
758
795
  let p = !isBuy ? sm - 1 : 2 - sm;
759
796
  p = p < 0.01 ? 0.01 : p > 0.99 ? 0.99 : p; // same cap as contract
760
797
  return isBuy ? (ammFundsQC + m * p * short) / p - long : -(ammFundsQC + m * p * long) / p + short;
@@ -1 +1 @@
1
- {"version":3,"file":"d8XMath.js","sourceRoot":"","sources":["../../src/d8XMath.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElD;;GAEG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,CAAkB;IAC9C,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,CAAkB;IAChD,IAAI,OAAO,CAAC,IAAI,QAAQ,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;KACpB;IACD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC;IACzB,IAAI,KAAK,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,8CAA8C;IACtE,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAChC,IAAI,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;IACpC,0BAA0B;IAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC/D,OAAO,UAAU,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,CAAe,EAAE,MAAoB;IAC/D,sCAAsC;IACtC,MAAM,QAAQ,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,kDAAkD;IAC1F,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACd,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC;IACxB,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC;IAC/B,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;IAChD,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC/D,OAAO,UAAU,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,CAAe;IAC1C,uCAAuC;IACvC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACd,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC;IACxB,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC;IAC/B,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;IACpC,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC/D,OAAO,UAAU,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,CAAS;IACvC,0CAA0C;IAC1C,6CAA6C;IAC7C,IAAI,CAAC,KAAK,CAAC,EAAE;QACX,OAAO,EAAE,CAAC;KACX;IACD,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChB,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/B,IAAI,KAAK,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,6CAA6C;IACrE,IAAI,OAAO,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC;IACzC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,yBAAyB;IACzB,IAAI,CAAC,KAAK,CAAC,EAAE;QACX,OAAO,EAAE,CAAC;KACX;IACD,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChB,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;IAC9B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,QAAgB;IACrD,yBAAyB;IACzB,IAAI,CAAC,KAAK,CAAC,EAAE;QACX,OAAO,EAAE,CAAC;KACX;IACD,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChB,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,OAAO,GAAG,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7C,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,SAAiB;IAC1D,IAAI,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,WAAW,IAAI,CAAC,EAAE;QACpB,OAAO,CAAC,CAAC;KACV;IACD,IAAI,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpD,wBAAwB;IACxB,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,IAAI,GAAG,EAAE;QACf,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxE,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KACtD;IACD,oBAAoB;IACpB,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,IAAI,GAAG,EAAE;QACf,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxE,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KACtD;IAED,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAS,EAAE,GAAW,EAAE,YAAoB,CAAC;IAC5E,yBAAyB;IACzB,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC;IACvE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC;IAEhD,kCAAkC;IAClC,IAAI,MAAM,GAAG,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACpD,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,CAAS;IAC3C,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,CAAS;IAC3C,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uCAAuC,CACrD,eAAuB,EACvB,QAAgB,EAChB,OAAe,EACf,uBAA+B;IAE/B,yCAAyC;IACzC,kDAAkD;IAClD,qCAAqC;IACrC,OAAO,eAAe,GAAG,CAAC,QAAQ,GAAG,uBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,CAAC;AAC/F,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qDAAqD,CACnE,eAAuB,EACvB,QAAgB,EAChB,OAAe,EACf,uBAA+B,EAC/B,EAAU,EACV,EAAU;IAEV,iEAAiE;IACjE,iDAAiD;IACjD,qFAAqF;IACrF,kGAAkG;IAClG,IAAI,SAAS,GAAG,CAAC,eAAe,GAAG,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5E,IAAI,WAAW,GAAG,uBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;IACtH,OAAO,SAAS,GAAG,WAAW,CAAC;AACjC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yCAAyC,CACvD,eAAuB,EACvB,QAAgB,EAChB,OAAe,EACf,uBAA+B,EAC/B,EAAU,EACV,EAAU;IAEV,iEAAiE;IACjE,iDAAiD;IACjD,sDAAsD;IACtD,8DAA8D;IAC9D,IAAI,SAAS,GAAG,CAAC,eAAe,GAAG,OAAO,GAAG,EAAE,CAAC;IAChD,IAAI,WAAW,GAAG,uBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;IAC1E,OAAO,SAAS,GAAG,WAAW,CAAC;AACjC,CAAC;AACD;;;;;;;;GAQG;AACH,MAAM,UAAU,wCAAwC,CACtD,eAAuB,EACvB,QAAgB,EAChB,OAAe,EACf,uBAA+B;IAE/B,6CAA6C;IAC7C,uCAAuC;IACvC,IAAI,SAAS,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC;IAC3C,IAAI,WAAW,GAAG,uBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;IAC1E,OAAO,SAAS,GAAG,WAAW,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kCAAkC,CAChD,cAAkC,EAClC,eAAuB,EACvB,oBAA4B,EAC5B,WAAmB,EACnB,SAAiB,EACjB,YAAoB,EACpB,YAAoB,EACpB,UAAkB,EAClB,OAAe;IAEf,0BAA0B;IAC1B,gJAAgJ;IAChJ,4GAA4G;IAC5G,IAAI,SAAS,GACX,eAAe,IAAI,CAAC,IAAI,eAAe,GAAG,WAAW,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACtH,IAAI,MAAM,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,GAAG,YAAY,CAAC;IAC7E,IAAI,YAAY,GAAG,MAAM,CAAC;IAE1B,IAAI,CAAC,SAAS,EAAE;QACd,IAAI,cAAc,IAAI,SAAS,IAAI,cAAc,IAAI,CAAC,EAAE;YACtD,MAAM,KAAK,CAAC,4CAA4C,CAAC,CAAC;SAC3D;QACD,+DAA+D;QAC/D,IAAI,KAAK,GAAG,eAAe,GAAG,SAAS,GAAG,oBAAoB,GAAG,WAAW,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;QACxG,YAAY;YACV,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC,GAAG,cAAc,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC;KAC9G;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,gBAAwB,EACxB,eAAuB,EACvB,oBAA4B,EAC5B,SAAiB,EACjB,UAAkB,EAClB,iBAAyB,EACzB,OAAe,EACf,SAAiB,EACjB,YAAoB,EACpB,YAAoB;IAEpB,gCAAgC;IAChC,gJAAgJ;IAChJ,iEAAiE;IACjE,IAAI,SAAS,GACX,gBAAgB,GAAG,YAAY;QAC/B,eAAe,GAAG,SAAS;QAC3B,oBAAoB;QACpB,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,SAAS,GAAG,iBAAiB,CAAC;IAC5D,IAAI,WAAW,GACb,SAAS,GAAG,iBAAiB,GAAG,OAAO,GAAG,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC;IAC7G,OAAO,eAAe,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAmB,EACnB,gBAAwB,EACxB,eAAuB,EACvB,oBAA4B,EAC5B,KAAa,EACb,YAAoB,EACpB,SAAiB;IAEjB,IAAI,WAAW,GAAG,WAAW,GAAG,eAAe,CAAC;IAChD,IAAI,KAAK,GAAG,eAAe,GAAG,SAAS,GAAG,oBAAoB,GAAG,WAAW,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;IACnG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,gBAAgB,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC;AACzF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAY,EACZ,EAAU,EACV,SAAiB,EACjB,SAAiB,EACjB,KAAa,EACb,EAAU,EACV,MAAc,EACd,SAAkB;IAElB,IAAI,GAAG,GAAG,CAAC,SAAS,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;IAC9C,IAAI,YAAY,GAAG,MAAM,CAAC;IAC1B,IAAI,SAAS,EAAE;QACb,qCAAqC;QACrC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;QACpB,YAAY,GAAG,MAAM,CAAC;QACtB,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC;SAC3B;QACD,IAAI,IAAI,GAAG,SAAS,GAAG,CAAC,EAAE;YACxB,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;SACrB;KACF;IACD,IAAI,SAAS,IAAI,CAAC,EAAE;QAClB,uBAAuB;QACvB,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;KACvD;IACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAC/D,OAAO,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,OAAO,EAAE,GAAG,CAAC,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,CAAC,GAAG,IAAI,CAAC;AAClB,CAAC;AAED,kBAAkB;AAClB,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,EAAE;QACpC,OAAO,CAAC,CAAC;KACV;IACD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACpE,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,GAAW,EAAE,EAAU,EAAE,EAAU,EAAE,IAAwB,IAAI;IACvF,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACf,IAAI,GAAG,GAAG,CAAC,EAAE;QACX,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACX;IACD,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe,EAAE,EAAU,EAAE,IAAwB,IAAI;IAC/F,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,EAAE;QACf,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACX;IACD,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,EAAU,EAAE,IAAwB,GAAG;IAC1F,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,EAAE;QACf,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACX;IACD,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAC1B,CAAS,EACT,CAAS,EACT,OAAe,EACf,QAAgB,EAChB,QAAgB,EAChB,YAAoB;IAEpB,0BAA0B;IAC1B,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,QAAQ,GAAG,CAAC,EAAE;QAChB,GAAG,GAAG,CAAC,GAAG,QAAQ,GAAG,YAAY,CAAC;QAClC,EAAE,GAAG,QAAQ,CAAC;KACf;SAAM,IAAI,QAAQ,GAAG,CAAC,EAAE;QACvB,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;QAClD,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KACzB;IACD,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAC;IAC5C,MAAM,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,CAAC,GAAG,OAAO,GAAG,GAAG,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,kBAAkB,CAAC,CAAS,EAAE,CAAS,EAAE,QAAgB,EAAE,YAAoB;IACtF,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,QAAQ,GAAG,CAAC,EAAE;QAChB,GAAG,GAAG,CAAC,GAAG,QAAQ,GAAG,YAAY,CAAC;QAClC,EAAE,GAAG,QAAQ,CAAC;KACf;SAAM,IAAI,QAAQ,GAAG,CAAC,EAAE;QACvB,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;QAClD,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KACzB;IACD,+FAA+F;IAC/F,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;IACnB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,CAAS,EAAE,QAAgB,EAAE,YAAoB;IAC3F;;;;;MAKE;IACF,IAAI,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnF,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,EAAU,EAAE,EAAU,EAAE,GAAW,EAAE,EAAU;IAC1F,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,GAAW,EACX,EAAU,EACV,EAAU,EACV,GAAW,EACX,EAAU,EACV,CAAqB;IAErB,OAAO,eAAe,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,qDAAqD;AACrD,2BAA2B;AAC3B,MAAM,UAAU,sBAAsB,CACpC,GAAW,EACX,EAAU,EACV,GAAW,EACX,EAAU,EACV,cAAkC,EAClC,UAA8B,GAAG;IAEjC,MAAM,OAAO,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,GAAG,GAAG,CAAC;IACZ,IAAI,KAAK,GAAG,OAAO,CAAC;IAEpB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE;QACjC,CAAC,GAAG,KAAK,CAAC;QACV,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;QACvG,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAEnB,IAAI,KAAK,GAAG,CAAC,EAAE;YACb,OAAO,CAAC,CAAC;SACV;QACD,IAAI,KAAK,GAAG,CAAC,EAAE;YACb,OAAO,CAAC,CAAC;SACV;KACF;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,YAAY,CACnB,QAAgB,EAChB,aAAqB,EACrB,UAAkB,EAClB,iBAAyB,EACzB,UAAkB,EAClB,EAAU,EACV,EAAU;IAEV,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,6BAA6B;IAC7C,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,yBAAyB;IACzC,MAAM,GAAG,GAAG,UAAU,GAAG,QAAQ,CAAC;IAClC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACf,IAAI,GAAG,GAAG,CAAC,EAAE;QACX,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW;KACxB;IACD,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACvC,MAAM,EAAE,GAAG,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;IACrH,gCAAgC;IAChC,gCAAgC;IAChC,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IAEvD,2BAA2B;IAC3B,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;AACxC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,0BAA0B,CACjC,QAAgB,EAChB,SAAiB,EACjB,KAAa,EACb,EAAU,EACV,MAAc;IAEd,MAAM,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/C,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;IACnB,IAAI,QAAQ,GAAG,CAAC,EAAE;QAChB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACX;IACD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACpD,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACvB,SAAS;IACT,eAAe;IACf,wCAAwC;IACxC,mBAAmB;IACnB,mCAAmC;IACnC,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,iBAAiB,CACxB,QAAgB,EAChB,GAAW,EACX,WAAmB,EACnB,aAAqB,EACrB,eAAuB,EACvB,oBAA4B,EAC5B,QAAgB,EAChB,EAAU,EACV,EAAU,EACV,EAAU;IAEV,6CAA6C;IAC7C,MAAM,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC7D,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACxF,MAAM,EAAE,GAAG,IAAI,CAAC;IAChB,cAAc;IACd,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAChB,IAAI,QAAQ,GAAG,CAAC,EAAE;QAChB,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW;KACzB;IACD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAEnF,aAAa;IACb,IAAI,GAAG,GAAG,WAAW,GAAG,iBAAiB,GAAG,KAAK,CAAC;IAClD,IAAI,GAAG,GAAG,CAAC,EAAE;QACX,OAAO,GAAG,CAAC;KACZ;IACD,iBAAiB;IACjB,IAAI,GAAG,GAAG,eAAe,GAAG,QAAQ,CAAC;IACrC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACf,IAAI,GAAG,GAAG,CAAC,EAAE;QACX,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;KACZ;IACD,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACvC,MAAM,EAAE,GACN,iBAAiB;QACjB,aAAa;QACb,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE;QAC9B,oBAAoB;QACpB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;IAC5C,uBAAuB;IACvB,2BAA2B;IAC3B,oCAAoC;IACpC,2BAA2B;IAC3B,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC;IAClC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAChB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,oCAAoC,CAClD,GAAW,EACX,GAAW,EACX,WAAmB,EACnB,QAAgB,EAChB,eAAuB,EACvB,aAAqB,EACrB,oBAA4B,EAC5B,EAAU,EACV,EAAU,EACV,EAAU,EACV,YAAoB;IAEpB,IAAI,GAAG,GAAG,CAAC,EAAE;QACX,GAAG,GAAG,CAAC,CAAC,CAAC;KACV;SAAM;QACL,GAAG,GAAG,CAAC,CAAC;KACT;IACD,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,gBAAgB;IAClC,MAAM,EAAE,GAAG,iBAAiB,CAC1B,GAAG,GAAG,MAAM,EACZ,GAAG,EACH,WAAW,EACX,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,QAAQ,EACR,EAAE,EACF,EAAE,EACF,EAAE,CACH,CAAC;IACF,IAAI,EAAE,GAAG,CAAC,EAAE;QACV,oBAAoB;QACpB,OAAO,CAAC,CAAC;KACV;IACD,sCAAsC;IACtC,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;IAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACjB,OAAO,IAAI,EAAE;QACX,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE;YAC5C,CAAC,GAAG,IAAI,CAAC;YACT,MAAM,CAAC,GACL,iBAAiB,CACf,CAAC,EACD,GAAG,EACH,WAAW,EACX,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,QAAQ,EACR,EAAE,EACF,EAAE,EACF,EAAE,CACH,IAAI,CAAC,CAAC;YACT,MAAM,EAAE,GACN,iBAAiB,CACf,CAAC,GAAG,MAAM,EACV,GAAG,EACH,WAAW,EACX,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,QAAQ,EACR,EAAE,EACF,EAAE,EACF,EAAE,CACH,IAAI,CAAC,CAAC;YACT,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;YAC3B,IAAI,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;aAChD;iBAAM;gBACL,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;aACnB;YACD,KAAK,IAAI,CAAC,CAAC;SACZ;QACD,IAAI,KAAK,GAAG,GAAG,EAAE;YACf,MAAM;SACP;QACD,2BAA2B;QAC3B,4BAA4B;QAC5B,IAAI,GAAG,GAAG,CAAC,EAAE;YACX,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC;SACzD;aAAM;YACL,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,eAAe,CAAC,CAAC;SACpE;KACF;IACD,+BAA+B;IAC/B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAChE,QAAQ;IACR,kCAAkC;IAClC,oCAAoC;IACpC,iDAAiD;IACjD,sEAAsE;IACtE,oDAAoD;IACpD,oFAAoF;IACpF,0FAA0F;IAC1F,mGAAmG;IACnG,qFAAqF;IACrF,4BAA4B;IAC5B,gCAAgC;IAEhC,qDAAqD;IACrD,sBAAsB;IACtB,2CAA2C;IAC3C,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9D,KAAK;IACL,yCAAyC;IACzC,gDAAgD;IAChD,gGAAgG;IAChG,MAAM,YAAY,GAAG,eAAe,IAAI,CAAC,IAAI,eAAe,GAAG,GAAG,GAAG,CAAC,CAAC;IACvE,IAAI,YAAY,EAAE;QAChB,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;KAClE;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAY,EACZ,KAAa,EACb,EAAU,EACV,KAAc,EACd,EAAU,EACV,UAAkB;IAElB,IAAI,EAAE,GAAG,CAAC,EAAE;QACV,OAAO,CAAC,CAAC;KACV;IACD,MAAM,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB;IAClE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACpG,CAAC"}
1
+ {"version":3,"file":"d8XMath.js","sourceRoot":"","sources":["../../src/d8XMath.ts"],"names":[],"mappings":"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"}
@@ -88,7 +88,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
88
88
  * False means that the trader's position can be liquidated.
89
89
  */
90
90
  isMaintenanceMarginSafe(symbol: string, traderAddr: string, indexPrices?: [number, number], overrides?: Overrides): Promise<boolean>;
91
- static maintenanceMarginPredMkts(maintMgnRateBase: number, pos: number, s3: number, markPx: number): number;
91
+ static maintenanceMarginPredMkts(maintMgnRateBase: number, pos: number, s3: number, markPx: number, ell: number): number;
92
92
  /**
93
93
  * Total number of active accounts for this symbol, i.e. accounts with positions that are currently open.
94
94
  * @param {string} symbol Symbol of the form ETH-USD-MATIC.
@@ -1,6 +1,6 @@
1
1
  import { JsonRpcProvider } from "ethers";
2
2
  import { IPyth__factory } from "./contracts/factories";
3
- import { ABK64x64ToFloat, entropy, floatToABK64x64 } from "./d8XMath";
3
+ import { ABK64x64ToFloat, floatToABK64x64 } from "./d8XMath";
4
4
  import WriteAccessHandler from "./writeAccessHandler";
5
5
  /**
6
6
  * Functions to liquidate traders. This class requires a private key
@@ -243,8 +243,10 @@ export default class LiquidatorTool extends WriteAccessHandler {
243
243
  let threshold;
244
244
  if (this.isPredictionMarket(symbol)) {
245
245
  const idx_markPrice = 8;
246
+ const idx_lockedInValue = 5;
246
247
  const markPrice = ABK64x64ToFloat(traderState[idx_markPrice]);
247
- threshold = LiquidatorTool.maintenanceMarginPredMkts(maintMgnRate, pos, coll2quote, markPrice);
248
+ const ell = ABK64x64ToFloat(traderState[idx_lockedInValue]);
249
+ threshold = LiquidatorTool.maintenanceMarginPredMkts(maintMgnRate, pos, coll2quote, markPrice, ell);
248
250
  }
249
251
  else {
250
252
  const base2collateral = indexPrices[0] / coll2quote;
@@ -252,14 +254,12 @@ export default class LiquidatorTool extends WriteAccessHandler {
252
254
  }
253
255
  return marginbalance >= threshold;
254
256
  }
255
- static maintenanceMarginPredMkts(maintMgnRateBase, pos, s3, markPx) {
256
- let p = markPx - 1;
257
- // p: price = 1+prob
258
- if (pos < 0) {
259
- p = 1 - p;
260
- }
261
- const tau = maintMgnRateBase + (0.4 - maintMgnRateBase) * entropy(p);
262
- return (Math.abs(pos) * p * tau) / s3;
257
+ static maintenanceMarginPredMkts(maintMgnRateBase, pos, s3, markPx, ell) {
258
+ const s = pos > 0 ? 1 : -1; // pos is
259
+ const R = pos == 0 ? markPx - 1 : s > 0 ? Math.abs(ell / pos) - 1 : 2 - Math.abs(ell / pos);
260
+ const Rm = s > 0 ? markPx - 1 : 2 - markPx;
261
+ const L = Math.max(0, s * (R - Rm));
262
+ return (Math.abs(pos) * Math.min(maintMgnRateBase + L, R)) / s3; // liquidated if E < that
263
263
  }
264
264
  /**
265
265
  * Total number of active accounts for this symbol, i.e. accounts with positions that are currently open.
@@ -1 +1 @@
1
- {"version":3,"file":"liquidatorTool.js","sourceRoot":"","sources":["../../src/liquidatorTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"liquidatorTool.js","sourceRoot":"","sources":["../../src/liquidatorTool.ts"],"names":[],"mappings":"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"}