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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/dist/cjs/abi/IPerpetualManager.json +154 -4
  2. package/dist/cjs/abi/OracleFactory.json +94 -25
  3. package/dist/cjs/abi/PerpetualManagerProxy.json +212 -2
  4. package/dist/cjs/accountTrade.d.ts +3 -3
  5. package/dist/cjs/accountTrade.js +1 -1
  6. package/dist/cjs/accountTrade.js.map +1 -1
  7. package/dist/cjs/brokerTool.d.ts +5 -1
  8. package/dist/cjs/brokerTool.js +20 -7
  9. package/dist/cjs/brokerTool.js.map +1 -1
  10. package/dist/cjs/config/defaultConfig.json +0 -12
  11. package/dist/cjs/config/priceFeedConfig.json +1 -19
  12. package/dist/cjs/constants.d.ts +0 -1
  13. package/dist/cjs/constants.js +2 -3
  14. package/dist/cjs/constants.js.map +1 -1
  15. package/dist/cjs/contracts/IPerpetualManager.d.ts +93 -13
  16. package/dist/cjs/contracts/OracleFactory.d.ts +69 -20
  17. package/dist/cjs/contracts/PerpetualManagerProxy.d.ts +109 -4
  18. package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +118 -4
  19. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +154 -4
  20. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  21. package/dist/cjs/contracts/factories/OracleFactory__factory.d.ts +75 -20
  22. package/dist/cjs/contracts/factories/OracleFactory__factory.js +94 -25
  23. package/dist/cjs/contracts/factories/OracleFactory__factory.js.map +1 -1
  24. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.d.ts +159 -2
  25. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js +212 -2
  26. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
  27. package/dist/cjs/d8XMath.d.ts +59 -1
  28. package/dist/cjs/d8XMath.js +259 -3
  29. package/dist/cjs/d8XMath.js.map +1 -1
  30. package/dist/cjs/liquidatorTool.d.ts +1 -0
  31. package/dist/cjs/liquidatorTool.js +24 -7
  32. package/dist/cjs/liquidatorTool.js.map +1 -1
  33. package/dist/cjs/marketData.d.ts +45 -23
  34. package/dist/cjs/marketData.js +292 -197
  35. package/dist/cjs/marketData.js.map +1 -1
  36. package/dist/cjs/nodeSDKTypes.d.ts +24 -1
  37. package/dist/cjs/nodeSDKTypes.js.map +1 -1
  38. package/dist/cjs/orderExecutorTool.d.ts +3 -3
  39. package/dist/cjs/orderExecutorTool.js +38 -13
  40. package/dist/cjs/orderExecutorTool.js.map +1 -1
  41. package/dist/cjs/perpetualDataHandler.d.ts +28 -17
  42. package/dist/cjs/perpetualDataHandler.js +71 -45
  43. package/dist/cjs/perpetualDataHandler.js.map +1 -1
  44. package/dist/cjs/perpetualEventHandler.d.ts +1 -1
  45. package/dist/cjs/perpetualEventHandler.js +6 -7
  46. package/dist/cjs/perpetualEventHandler.js.map +1 -1
  47. package/dist/cjs/polyMktsPxFeed.d.ts +5 -3
  48. package/dist/cjs/polyMktsPxFeed.js +34 -2
  49. package/dist/cjs/polyMktsPxFeed.js.map +1 -1
  50. package/dist/cjs/priceFeeds.d.ts +6 -7
  51. package/dist/cjs/priceFeeds.js +36 -14
  52. package/dist/cjs/priceFeeds.js.map +1 -1
  53. package/dist/cjs/version.d.ts +1 -1
  54. package/dist/cjs/version.js +1 -1
  55. package/dist/cjs/writeAccessHandler.js +1 -1
  56. package/dist/cjs/writeAccessHandler.js.map +1 -1
  57. package/dist/esm/abi/IPerpetualManager.json +154 -4
  58. package/dist/esm/abi/OracleFactory.json +94 -25
  59. package/dist/esm/abi/PerpetualManagerProxy.json +212 -2
  60. package/dist/esm/accountTrade.d.ts +3 -3
  61. package/dist/esm/accountTrade.js +1 -1
  62. package/dist/esm/accountTrade.js.map +1 -1
  63. package/dist/esm/brokerTool.d.ts +5 -1
  64. package/dist/esm/brokerTool.js +21 -8
  65. package/dist/esm/brokerTool.js.map +1 -1
  66. package/dist/esm/config/defaultConfig.json +0 -12
  67. package/dist/esm/config/priceFeedConfig.json +1 -19
  68. package/dist/esm/constants.d.ts +0 -1
  69. package/dist/esm/constants.js +1 -2
  70. package/dist/esm/constants.js.map +1 -1
  71. package/dist/esm/contracts/IPerpetualManager.d.ts +93 -13
  72. package/dist/esm/contracts/OracleFactory.d.ts +69 -20
  73. package/dist/esm/contracts/PerpetualManagerProxy.d.ts +109 -4
  74. package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +118 -4
  75. package/dist/esm/contracts/factories/IPerpetualManager__factory.js +154 -4
  76. package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  77. package/dist/esm/contracts/factories/OracleFactory__factory.d.ts +75 -20
  78. package/dist/esm/contracts/factories/OracleFactory__factory.js +94 -25
  79. package/dist/esm/contracts/factories/OracleFactory__factory.js.map +1 -1
  80. package/dist/{cjs/contracts/factories/MockToken__factory.d.ts → esm/contracts/factories/PerpStorage__factory.d.ts} +115 -128
  81. package/dist/esm/contracts/factories/{MockToken__factory.js → PerpStorage__factory.js} +128 -139
  82. package/dist/esm/contracts/factories/PerpStorage__factory.js.map +1 -0
  83. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.d.ts +159 -2
  84. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js +212 -2
  85. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
  86. package/dist/esm/d8XMath.d.ts +59 -1
  87. package/dist/esm/d8XMath.js +251 -2
  88. package/dist/esm/d8XMath.js.map +1 -1
  89. package/dist/esm/liquidatorTool.d.ts +1 -0
  90. package/dist/esm/liquidatorTool.js +25 -8
  91. package/dist/esm/liquidatorTool.js.map +1 -1
  92. package/dist/esm/marketData.d.ts +45 -23
  93. package/dist/esm/marketData.js +295 -200
  94. package/dist/esm/marketData.js.map +1 -1
  95. package/dist/esm/nodeSDKTypes.d.ts +24 -1
  96. package/dist/esm/nodeSDKTypes.js.map +1 -1
  97. package/dist/esm/orderExecutorTool.d.ts +3 -3
  98. package/dist/esm/orderExecutorTool.js +38 -13
  99. package/dist/esm/orderExecutorTool.js.map +1 -1
  100. package/dist/esm/perpetualDataHandler.d.ts +28 -17
  101. package/dist/esm/perpetualDataHandler.js +74 -48
  102. package/dist/esm/perpetualDataHandler.js.map +1 -1
  103. package/dist/esm/perpetualEventHandler.d.ts +1 -1
  104. package/dist/esm/perpetualEventHandler.js +6 -7
  105. package/dist/esm/perpetualEventHandler.js.map +1 -1
  106. package/dist/esm/polyMktsPxFeed.d.ts +5 -3
  107. package/dist/esm/polyMktsPxFeed.js +34 -2
  108. package/dist/esm/polyMktsPxFeed.js.map +1 -1
  109. package/dist/esm/priceFeeds.d.ts +6 -7
  110. package/dist/esm/priceFeeds.js +36 -14
  111. package/dist/esm/priceFeeds.js.map +1 -1
  112. package/dist/esm/version.d.ts +1 -1
  113. package/dist/esm/version.js +1 -1
  114. package/dist/esm/writeAccessHandler.js +3 -3
  115. package/dist/esm/writeAccessHandler.js.map +1 -1
  116. package/doc/brokerTool.md +3 -1
  117. package/doc/d8x-perpetuals-sdk.md +804 -132
  118. package/doc/marketData.md +813 -0
  119. package/doc/perpetualDataHandler.md +76 -7
  120. package/package.json +1 -1
  121. package/src/abi/IPerpetualManager.json +154 -4
  122. package/src/abi/OracleFactory.json +523 -454
  123. package/src/abi/PerpetualManagerProxy.json +1596 -1386
  124. package/src/accountTrade.ts +3 -3
  125. package/src/brokerTool.ts +22 -8
  126. package/src/config/defaultConfig.json +0 -13
  127. package/src/config/priceFeedConfig.json +1 -19
  128. package/src/constants.ts +1 -2
  129. package/src/contracts/IPerpetualManager.ts +140 -10
  130. package/src/contracts/OracleFactory.ts +100 -26
  131. package/src/contracts/PerpetualManagerProxy.ts +192 -3
  132. package/src/contracts/factories/IPerpetualManager__factory.ts +154 -4
  133. package/src/contracts/factories/OracleFactory__factory.ts +94 -25
  134. package/src/contracts/factories/PerpetualManagerProxy__factory.ts +212 -2
  135. package/src/d8XMath.ts +327 -2
  136. package/src/liquidatorTool.ts +29 -14
  137. package/src/marketData.ts +448 -250
  138. package/src/nodeSDKTypes.ts +30 -1
  139. package/src/orderExecutorTool.ts +48 -20
  140. package/src/perpetualDataHandler.ts +108 -55
  141. package/src/perpetualEventHandler.ts +6 -7
  142. package/src/polyMktsPxFeed.ts +40 -4
  143. package/src/priceFeeds.ts +41 -17
  144. package/src/version.ts +1 -1
  145. package/src/writeAccessHandler.ts +2 -2
  146. package/dist/cjs/abi/BeaconProxy.json +0 -71
  147. package/dist/cjs/abi/Maintainer.json +0 -774
  148. package/dist/cjs/abi/MockToken.json +0 -347
  149. package/dist/cjs/abi/UUPSUpgradeable.json +0 -104
  150. package/dist/cjs/abi/WeETH.json +0 -310
  151. package/dist/cjs/abi-zkevm/LimitOrderBook.json +0 -910
  152. package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +0 -236
  153. package/dist/cjs/contracts/BeaconProxy.d.ts +0 -63
  154. package/dist/cjs/contracts/BeaconProxy.js +0 -3
  155. package/dist/cjs/contracts/BeaconProxy.js.map +0 -1
  156. package/dist/cjs/contracts/Maintainer.d.ts +0 -799
  157. package/dist/cjs/contracts/Maintainer.js +0 -3
  158. package/dist/cjs/contracts/Maintainer.js.map +0 -1
  159. package/dist/cjs/contracts/MockToken.d.ts +0 -263
  160. package/dist/cjs/contracts/MockToken.js +0 -3
  161. package/dist/cjs/contracts/MockToken.js.map +0 -1
  162. package/dist/cjs/contracts/UUPSUpgradeable.d.ts +0 -118
  163. package/dist/cjs/contracts/UUPSUpgradeable.js +0 -3
  164. package/dist/cjs/contracts/UUPSUpgradeable.js.map +0 -1
  165. package/dist/cjs/contracts/WeETH.d.ts +0 -503
  166. package/dist/cjs/contracts/WeETH.js +0 -3
  167. package/dist/cjs/contracts/WeETH.js.map +0 -1
  168. package/dist/cjs/contracts/factories/BeaconProxy__factory.d.ts +0 -61
  169. package/dist/cjs/contracts/factories/BeaconProxy__factory.js +0 -89
  170. package/dist/cjs/contracts/factories/BeaconProxy__factory.js.map +0 -1
  171. package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +0 -609
  172. package/dist/cjs/contracts/factories/Maintainer__factory.js +0 -792
  173. package/dist/cjs/contracts/factories/Maintainer__factory.js.map +0 -1
  174. package/dist/cjs/contracts/factories/MockToken__factory.js +0 -365
  175. package/dist/cjs/contracts/factories/MockToken__factory.js.map +0 -1
  176. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
  177. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +0 -122
  178. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
  179. package/dist/cjs/contracts/factories/WeETH__factory.d.ts +0 -545
  180. package/dist/cjs/contracts/factories/WeETH__factory.js +0 -721
  181. package/dist/cjs/contracts/factories/WeETH__factory.js.map +0 -1
  182. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
  183. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5324
  184. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
  185. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
  186. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -254
  187. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
  188. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
  189. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +0 -928
  190. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
  191. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
  192. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +0 -456
  193. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
  194. package/dist/cjs/contracts/factories/lean0/index.d.ts +0 -4
  195. package/dist/cjs/contracts/factories/lean0/index.js +0 -15
  196. package/dist/cjs/contracts/factories/lean0/index.js.map +0 -1
  197. package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +0 -2821
  198. package/dist/cjs/contracts/lean0/IPerpetualManager.js +0 -3
  199. package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +0 -1
  200. package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +0 -533
  201. package/dist/cjs/contracts/lean0/LimitOrderBook.js +0 -3
  202. package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +0 -1
  203. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
  204. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +0 -3
  205. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
  206. package/dist/cjs/contracts/lean0/ShareToken.d.ts +0 -320
  207. package/dist/cjs/contracts/lean0/ShareToken.js +0 -3
  208. package/dist/cjs/contracts/lean0/ShareToken.js.map +0 -1
  209. package/dist/cjs/contracts/lean0/index.d.ts +0 -4
  210. package/dist/cjs/contracts/lean0/index.js +0 -3
  211. package/dist/cjs/contracts/lean0/index.js.map +0 -1
  212. package/dist/esm/abi/BeaconProxy.json +0 -71
  213. package/dist/esm/abi/Maintainer.json +0 -774
  214. package/dist/esm/abi/MockToken.json +0 -347
  215. package/dist/esm/abi/UUPSUpgradeable.json +0 -104
  216. package/dist/esm/abi/WeETH.json +0 -310
  217. package/dist/esm/abi/lean0/IPerpetualManager.json +0 -5306
  218. package/dist/esm/abi/lean0/LimitOrderBook.json +0 -910
  219. package/dist/esm/abi/lean0/LimitOrderBookFactory.json +0 -236
  220. package/dist/esm/abi/lean0/ShareToken.json +0 -438
  221. package/dist/esm/abi-zkevm/LimitOrderBook.json +0 -910
  222. package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +0 -236
  223. package/dist/esm/contracts/BeaconProxy.d.ts +0 -63
  224. package/dist/esm/contracts/BeaconProxy.js +0 -2
  225. package/dist/esm/contracts/BeaconProxy.js.map +0 -1
  226. package/dist/esm/contracts/Maintainer.d.ts +0 -799
  227. package/dist/esm/contracts/Maintainer.js +0 -2
  228. package/dist/esm/contracts/Maintainer.js.map +0 -1
  229. package/dist/esm/contracts/MockToken.d.ts +0 -263
  230. package/dist/esm/contracts/MockToken.js +0 -2
  231. package/dist/esm/contracts/MockToken.js.map +0 -1
  232. package/dist/esm/contracts/UUPSUpgradeable.d.ts +0 -118
  233. package/dist/esm/contracts/UUPSUpgradeable.js +0 -2
  234. package/dist/esm/contracts/UUPSUpgradeable.js.map +0 -1
  235. package/dist/esm/contracts/WeETH.d.ts +0 -503
  236. package/dist/esm/contracts/WeETH.js +0 -2
  237. package/dist/esm/contracts/WeETH.js.map +0 -1
  238. package/dist/esm/contracts/factories/BeaconProxy__factory.d.ts +0 -61
  239. package/dist/esm/contracts/factories/BeaconProxy__factory.js +0 -85
  240. package/dist/esm/contracts/factories/BeaconProxy__factory.js.map +0 -1
  241. package/dist/esm/contracts/factories/Maintainer__factory.d.ts +0 -609
  242. package/dist/esm/contracts/factories/Maintainer__factory.js +0 -788
  243. package/dist/esm/contracts/factories/Maintainer__factory.js.map +0 -1
  244. package/dist/esm/contracts/factories/MockToken__factory.d.ts +0 -273
  245. package/dist/esm/contracts/factories/MockToken__factory.js.map +0 -1
  246. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
  247. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +0 -118
  248. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
  249. package/dist/esm/contracts/factories/WeETH__factory.d.ts +0 -545
  250. package/dist/esm/contracts/factories/WeETH__factory.js +0 -717
  251. package/dist/esm/contracts/factories/WeETH__factory.js.map +0 -1
  252. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
  253. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5320
  254. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
  255. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
  256. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -250
  257. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
  258. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
  259. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +0 -924
  260. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
  261. package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
  262. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +0 -452
  263. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
  264. package/dist/esm/contracts/factories/lean0/index.d.ts +0 -4
  265. package/dist/esm/contracts/factories/lean0/index.js +0 -8
  266. package/dist/esm/contracts/factories/lean0/index.js.map +0 -1
  267. package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +0 -2821
  268. package/dist/esm/contracts/lean0/IPerpetualManager.js +0 -2
  269. package/dist/esm/contracts/lean0/IPerpetualManager.js.map +0 -1
  270. package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +0 -533
  271. package/dist/esm/contracts/lean0/LimitOrderBook.js +0 -2
  272. package/dist/esm/contracts/lean0/LimitOrderBook.js.map +0 -1
  273. package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
  274. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +0 -2
  275. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
  276. package/dist/esm/contracts/lean0/ShareToken.d.ts +0 -320
  277. package/dist/esm/contracts/lean0/ShareToken.js +0 -2
  278. package/dist/esm/contracts/lean0/ShareToken.js.map +0 -1
  279. package/dist/esm/contracts/lean0/index.d.ts +0 -4
  280. package/dist/esm/contracts/lean0/index.js +0 -2
  281. package/dist/esm/contracts/lean0/index.js.map +0 -1
  282. package/src/abi-zkevm/IPerpetualManager.json +0 -5366
@@ -1,7 +1,8 @@
1
1
  import { BaseContract, Contract, Interface, Network, Overrides, Provider, Signer } from "ethers";
2
2
  import { LimitOrderBook, LimitOrderBookFactory, Multicall3 } from "./contracts";
3
+ import { IPerpetualManager } from "./contracts/IPerpetualManager";
3
4
  import { IClientOrder, IPerpetualOrder } from "./contracts/LimitOrderBook";
4
- import { TypeSafeOrder, type ClientOrder, type MarginAccount, type NodeSDKConfig, type Order, type PerpetualState, type PerpetualStaticInfo, type PoolStaticInfo, type PriceFeedSubmission, type SmartContractOrder, type PerpetualData, LiquidityPoolData, SettlementConfig } from "./nodeSDKTypes";
5
+ import { TypeSafeOrder, type ClientOrder, type MarginAccount, type NodeSDKConfig, type Order, type PerpetualState, type PerpetualStaticInfo, type PoolStaticInfo, type PriceFeedSubmission, type SmartContractOrder, type PerpetualData, LiquidityPoolData, SettlementConfig, IdxPriceInfo } from "./nodeSDKTypes";
5
6
  import PriceFeeds from "./priceFeeds";
6
7
  /**
7
8
  * Parent class for MarketData and WriteAccessHandler that handles
@@ -18,7 +19,7 @@ export default class PerpetualDataHandler {
18
19
  protected symbolToTokenAddrMap: Map<string, string>;
19
20
  chainId: bigint;
20
21
  network: Network;
21
- protected proxyContract: Contract | null;
22
+ protected proxyContract: IPerpetualManager | null;
22
23
  protected proxyABI: Interface;
23
24
  protected proxyAddr: string;
24
25
  protected oraclefactoryAddr: string | undefined;
@@ -176,7 +177,7 @@ export default class PerpetualDataHandler {
176
177
  * @param {Map<string, string>} symbolList mapping of symbols to convert long-format <-> blockchain-format
177
178
  * @returns array with PerpetualStaticInfo for each perpetual
178
179
  */
179
- static getPerpetualStaticInfo(_proxyContract: Contract, nestedPerpetualIDs: Array<Array<number>>, symbolList: Map<string, string>, overrides?: Overrides): Promise<Array<PerpetualStaticInfo>>;
180
+ static getPerpetualStaticInfo(_proxyContract: IPerpetualManager, nestedPerpetualIDs: Array<Array<number>>, symbolList: Map<string, string>, overrides?: Overrides): Promise<Array<PerpetualStaticInfo>>;
180
181
  /**
181
182
  * Breaks up an array of nested arrays into chunks of a specified size.
182
183
  * @param {number} chunkSize The size of each chunk.
@@ -192,7 +193,7 @@ export default class PerpetualDataHandler {
192
193
  * @param overrides optional
193
194
  * @returns array of PerpetualData converted into decimals
194
195
  */
195
- static _getLiquidityPools(fromIdx: number, toIdx: number, _proxyContract: Contract, _symbolList: Map<string, string>, overrides?: Overrides): Promise<LiquidityPoolData[]>;
196
+ static _getLiquidityPools(fromIdx: number, toIdx: number, _proxyContract: IPerpetualManager, _symbolList: Map<string, string>, overrides?: Overrides): Promise<LiquidityPoolData[]>;
196
197
  /**
197
198
  * Query perpetuals
198
199
  * @param ids perpetual ids
@@ -201,25 +202,25 @@ export default class PerpetualDataHandler {
201
202
  * @param overrides optional
202
203
  * @returns array of PerpetualData converted into decimals
203
204
  */
204
- static _getPerpetuals(ids: number[], _proxyContract: Contract, _symbolList: Map<string, string>, overrides?: Overrides): Promise<PerpetualData[]>;
205
- static getPoolStaticInfo(_proxyContract: Contract, overrides?: Overrides): Promise<{
205
+ static _getPerpetuals(ids: number[], _proxyContract: IPerpetualManager, _symbolList: Map<string, string>, overrides?: Overrides): Promise<PerpetualData[]>;
206
+ static getPoolStaticInfo(_proxyContract: IPerpetualManager, overrides?: Overrides): Promise<{
206
207
  nestedPerpetualIDs: Array<Array<number>>;
207
208
  poolShareTokenAddr: Array<string>;
208
209
  poolMarginTokenAddr: Array<string>;
209
210
  oracleFactory: string;
210
211
  }>;
211
- static buildMarginAccountFromState(symbol: string, traderState: bigint[], symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _pxS2S3: [number, number]): MarginAccount;
212
+ static buildMarginAccountFromState(symbol: string, traderState: bigint[], symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, pxInfo: IdxPriceInfo, isPredMkt: boolean): MarginAccount;
212
213
  /**
213
214
  * Get trader state from the blockchain and parse into a human-readable margin account
214
215
  * @param traderAddr Trader address
215
216
  * @param symbol Perpetual symbol
216
217
  * @param symbolToPerpStaticInfo Symbol to perp static info mapping
217
218
  * @param _proxyContract Proxy contract instance
218
- * @param _pxS2S3 Prices [S2, S3]
219
+ * @param _pxInfo index price info
219
220
  * @param overrides Optional overrides for eth_call
220
221
  * @returns A Margin account
221
222
  */
222
- static getMarginAccount(traderAddr: string, symbol: string, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _proxyContract: Contract, _pxS2S3: [number, number], overrides?: Overrides): Promise<MarginAccount>;
223
+ static getMarginAccount(traderAddr: string, symbol: string, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _proxyContract: Contract, _pxInfo: IdxPriceInfo, isPredMkt: boolean, overrides?: Overrides): Promise<MarginAccount>;
223
224
  /**
224
225
  * All the orders in the order book for a given symbol that are currently open.
225
226
  * @param {string} symbol Symbol of the form ETH-USD-MATIC.
@@ -297,14 +298,24 @@ export default class PerpetualDataHandler {
297
298
  * @param symbolToPerpStaticInfo Symbol to perp static info mapping
298
299
  * @param _multicall Multicall3 contract instance
299
300
  * @param _proxyContract Proxy contract instance
300
- * @param _pxS2S3s List of price pairs, [[S2, S3] (1st perp), [S2, S3] (2nd perp), ... ]
301
+ * @param _pxInfo List of price info
301
302
  * @param overrides Optional eth_call overrides
302
303
  * @returns List of margin accounts
303
304
  */
304
- static getMarginAccounts(traderAddrs: string[], symbols: string[], symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _multicall: Multicall3, _proxyContract: Contract, _pxS2S3s: number[][], overrides?: Overrides): Promise<MarginAccount[]>;
305
- protected static _queryPerpetualPrice(symbol: string, tradeAmount: number, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _proxyContract: Contract, indexPrices: [number, number], overrides?: Overrides): Promise<number>;
306
- protected static _queryPerpetualMarkPrice(symbol: string, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _proxyContract: Contract, indexPrices: [number, number], overrides?: Overrides): Promise<number>;
307
- protected static _queryPerpetualState(symbol: string, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _proxyContract: Contract, _multicall: Multicall3, indexPrices: [number, number, boolean, boolean], overrides?: Overrides): Promise<PerpetualState>;
305
+ static getMarginAccounts(traderAddrs: string[], symbols: string[], symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _multicall: Multicall3, _proxyContract: Contract, _pxInfo: IdxPriceInfo[], isPredMkt: boolean[], overrides?: Overrides): Promise<MarginAccount[]>;
306
+ protected static _queryPerpetualPrice(symbol: string, tradeAmount: number, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _proxyContract: IPerpetualManager, indexPrices: [number, number], conf: bigint, params: bigint, overrides?: Overrides): Promise<number>;
307
+ /**
308
+ *
309
+ * @param symbol perpetual symbol of the form BTC-USDC-USDC
310
+ * @param symbolToPerpStaticInfo mapping
311
+ * @param _proxyContract contract instance
312
+ * @param indexPrices IdxPriceInfo
313
+ * @param isPredMkt true if prediction market perpetual
314
+ * @param overrides
315
+ * @returns mark price
316
+ */
317
+ protected static _queryPerpetualMarkPrice(symbol: string, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _proxyContract: IPerpetualManager, indexPrices: IdxPriceInfo, isPredMkt: boolean, overrides?: Overrides): Promise<number>;
318
+ protected static _queryPerpetualState(symbol: string, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _proxyContract: IPerpetualManager, _multicall: Multicall3, indexPrices: IdxPriceInfo, overrides?: Overrides): Promise<PerpetualState>;
308
319
  /**
309
320
  * Calculate long and short exposures from open interest and long/short
310
321
  * @param oi open interest
@@ -312,7 +323,7 @@ export default class PerpetualDataHandler {
312
323
  * @returns long, short exposure
313
324
  */
314
325
  protected static _oiAndAmmPosToLongShort(oi: bigint, ammPos: bigint): [bigint, bigint];
315
- protected static _parseAMMState(symbol: string, ammState: bigint[], longShort: [bigint, bigint], indexPrices: [number, number, boolean, boolean], symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>): PerpetualState;
326
+ protected static _parseAMMState(symbol: string, ammState: bigint[], longShort: [bigint, bigint], indexPrices: IdxPriceInfo, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>): PerpetualState;
316
327
  /**
317
328
  * Liquidation price
318
329
  * @param symbol symbol of the form BTC-USD-MATIC
@@ -321,7 +332,7 @@ export default class PerpetualDataHandler {
321
332
  * @param symbolToPerpStaticInfo mapping symbol->PerpStaticInfo
322
333
  * @returns liquidation mark-price, corresponding collateral/quote conversion
323
334
  */
324
- protected static _calculateLiquidationPrice(symbol: string, traderState: bigint[], S2: number, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>): [number, number, number, number, number];
335
+ protected static _calculateLiquidationPrice(symbol: string, traderState: bigint[], S2: number, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, isPredMarket: boolean): [number, number, number, number, number];
325
336
  /**
326
337
  * Finds the perpetual id for a symbol of the form
327
338
  * <base>-<quote>-<collateral>. The function first converts the
@@ -484,5 +495,5 @@ export default class PerpetualDataHandler {
484
495
  * @param staticInfo Perpetual static info
485
496
  * @returns True if this is a prediction market
486
497
  */
487
- static isPredictionMarket(staticInfo: PerpetualStaticInfo): boolean;
498
+ static isPredictionMarketStatic(staticInfo: PerpetualStaticInfo): boolean;
488
499
  }
@@ -65,7 +65,7 @@ class PerpetualDataHandler {
65
65
  if (network.chainId !== this.chainId) {
66
66
  throw new Error(`Provider: chain id ${network.chainId} does not match config (${this.chainId})`);
67
67
  }
68
- this.proxyContract = new ethers_1.Contract(this.proxyAddr, this.config.proxyABI, signerOrProvider);
68
+ this.proxyContract = contracts_1.IPerpetualManager__factory.connect(this.proxyAddr, signerOrProvider);
69
69
  this.multicall = contracts_1.Multicall3__factory.connect(this.config.multicall ?? constants_1.MULTICALL_ADDRESS, this.signerOrProvider);
70
70
  await this._fillSymbolMaps(overrides);
71
71
  }
@@ -651,7 +651,7 @@ class PerpetualDataHandler {
651
651
  oracleFactory: oracleFactory,
652
652
  };
653
653
  }
654
- static buildMarginAccountFromState(symbol, traderState, symbolToPerpStaticInfo, _pxS2S3) {
654
+ static buildMarginAccountFromState(symbol, traderState, symbolToPerpStaticInfo, pxInfo, isPredMkt) {
655
655
  const idx_cash = 3;
656
656
  const idx_notional = 4;
657
657
  const idx_locked_in = 5;
@@ -662,7 +662,7 @@ class PerpetualDataHandler {
662
662
  let cash = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_cash]);
663
663
  let S2Liq = 0, S3Liq = 0, tau = Infinity, pnl = 0, unpaidFundingCC = 0, fLockedIn = BigInt(0), side = constants_1.CLOSED_SIDE, entryPrice = 0;
664
664
  if (!isEmpty) {
665
- [S2Liq, S3Liq, tau, pnl, unpaidFundingCC] = PerpetualDataHandler._calculateLiquidationPrice(symbol, traderState, _pxS2S3[0], symbolToPerpStaticInfo);
665
+ [S2Liq, S3Liq, tau, pnl, unpaidFundingCC] = PerpetualDataHandler._calculateLiquidationPrice(symbol, traderState, pxInfo.s2, symbolToPerpStaticInfo, isPredMkt);
666
666
  fLockedIn = traderState[idx_locked_in];
667
667
  side = traderState[idx_notional] > 0n ? constants_1.BUY_SIDE : constants_1.SELL_SIDE;
668
668
  entryPrice = Math.abs((0, d8XMath_1.ABK64x64ToFloat)((0, d8XMath_1.div64x64)(fLockedIn, traderState[idx_notional])));
@@ -689,17 +689,17 @@ class PerpetualDataHandler {
689
689
  * @param symbol Perpetual symbol
690
690
  * @param symbolToPerpStaticInfo Symbol to perp static info mapping
691
691
  * @param _proxyContract Proxy contract instance
692
- * @param _pxS2S3 Prices [S2, S3]
692
+ * @param _pxInfo index price info
693
693
  * @param overrides Optional overrides for eth_call
694
694
  * @returns A Margin account
695
695
  */
696
- static async getMarginAccount(traderAddr, symbol, symbolToPerpStaticInfo, _proxyContract, _pxS2S3, overrides) {
696
+ static async getMarginAccount(traderAddr, symbol, symbolToPerpStaticInfo, _proxyContract, _pxInfo, isPredMkt, overrides) {
697
697
  let perpId = Number(symbol);
698
698
  if (isNaN(perpId)) {
699
699
  perpId = PerpetualDataHandler.symbolToPerpetualId(symbol, symbolToPerpStaticInfo);
700
700
  }
701
- let traderState = await _proxyContract.getTraderState(perpId, traderAddr, _pxS2S3.map((x) => (0, d8XMath_1.floatToABK64x64)(x)), overrides || {});
702
- return PerpetualDataHandler.buildMarginAccountFromState(symbol, traderState, symbolToPerpStaticInfo, _pxS2S3);
701
+ let traderState = await _proxyContract.getTraderState(perpId, traderAddr, [_pxInfo.ema, _pxInfo.s3 ?? 0].map((x) => (0, d8XMath_1.floatToABK64x64)(x)), overrides || {});
702
+ return PerpetualDataHandler.buildMarginAccountFromState(symbol, traderState, symbolToPerpStaticInfo, _pxInfo, isPredMkt);
703
703
  }
704
704
  /**
705
705
  * All the orders in the order book for a given symbol that are currently open.
@@ -853,15 +853,15 @@ class PerpetualDataHandler {
853
853
  * @param symbolToPerpStaticInfo Symbol to perp static info mapping
854
854
  * @param _multicall Multicall3 contract instance
855
855
  * @param _proxyContract Proxy contract instance
856
- * @param _pxS2S3s List of price pairs, [[S2, S3] (1st perp), [S2, S3] (2nd perp), ... ]
856
+ * @param _pxInfo List of price info
857
857
  * @param overrides Optional eth_call overrides
858
858
  * @returns List of margin accounts
859
859
  */
860
- static async getMarginAccounts(traderAddrs, symbols, symbolToPerpStaticInfo, _multicall, _proxyContract, _pxS2S3s, overrides) {
860
+ static async getMarginAccounts(traderAddrs, symbols, symbolToPerpStaticInfo, _multicall, _proxyContract, _pxInfo, isPredMkt, overrides) {
861
861
  if (traderAddrs.length != symbols.length ||
862
- traderAddrs.length != _pxS2S3s.length ||
863
- symbols.length != _pxS2S3s.length) {
864
- throw new Error("traderAddr, symbol and pxS2S3 should all have the same length");
862
+ traderAddrs.length != _pxInfo.length ||
863
+ symbols.length != _pxInfo.length) {
864
+ throw new Error("traderAddr, symbol and _pxInfo should all have the same length");
865
865
  }
866
866
  const proxyCalls = traderAddrs.map((_addr, i) => ({
867
867
  target: _proxyContract.target,
@@ -869,7 +869,7 @@ class PerpetualDataHandler {
869
869
  callData: _proxyContract.interface.encodeFunctionData("getTraderState", [
870
870
  PerpetualDataHandler.symbolToPerpetualId(symbols[i], symbolToPerpStaticInfo),
871
871
  _addr,
872
- _pxS2S3s[i].map((x) => (0, d8XMath_1.floatToABK64x64)(x)),
872
+ [_pxInfo[i].ema, _pxInfo[i].s3 ?? 0].map((x) => (0, d8XMath_1.floatToABK64x64)(x)),
873
873
  ]),
874
874
  }));
875
875
  const encodedResults = await _multicall.aggregate3.staticCall(proxyCalls, overrides || {});
@@ -878,33 +878,42 @@ class PerpetualDataHandler {
878
878
  throw new Error(`Failed to get perp info for ${symbols[i]}`);
879
879
  return _proxyContract.interface.decodeFunctionResult("getTraderState", returnData)[0];
880
880
  });
881
- return traderStates.map((traderState, i) => PerpetualDataHandler.buildMarginAccountFromState(symbols[i], traderState, symbolToPerpStaticInfo, [
882
- _pxS2S3s[i][0],
883
- _pxS2S3s[i][1],
884
- ]));
881
+ return traderStates.map((traderState, i) => PerpetualDataHandler.buildMarginAccountFromState(symbols[i], traderState, symbolToPerpStaticInfo, _pxInfo[i], isPredMkt[i]));
885
882
  }
886
- static async _queryPerpetualPrice(symbol, tradeAmount, symbolToPerpStaticInfo, _proxyContract, indexPrices, overrides) {
883
+ static async _queryPerpetualPrice(symbol, tradeAmount, symbolToPerpStaticInfo, _proxyContract, indexPrices, conf, params, overrides) {
887
884
  let perpId = PerpetualDataHandler.symbolToPerpetualId(symbol, symbolToPerpStaticInfo);
888
885
  let fIndexPrices = indexPrices.map((x) => (0, d8XMath_1.floatToABK64x64)(x == undefined || Number.isNaN(x) ? 0 : x));
889
- let fPrice = await _proxyContract.queryPerpetualPrice(perpId, (0, d8XMath_1.floatToABK64x64)(tradeAmount), fIndexPrices, overrides || {});
886
+ let fPrice = await _proxyContract.queryPerpetualPrice(perpId, (0, d8XMath_1.floatToABK64x64)(tradeAmount), fIndexPrices, conf, params, overrides || {});
890
887
  return (0, d8XMath_1.ABK64x64ToFloat)(fPrice);
891
888
  }
892
- static async _queryPerpetualMarkPrice(symbol, symbolToPerpStaticInfo, _proxyContract, indexPrices, overrides) {
889
+ /**
890
+ *
891
+ * @param symbol perpetual symbol of the form BTC-USDC-USDC
892
+ * @param symbolToPerpStaticInfo mapping
893
+ * @param _proxyContract contract instance
894
+ * @param indexPrices IdxPriceInfo
895
+ * @param isPredMkt true if prediction market perpetual
896
+ * @param overrides
897
+ * @returns mark price
898
+ */
899
+ static async _queryPerpetualMarkPrice(symbol, symbolToPerpStaticInfo, _proxyContract, indexPrices, isPredMkt, overrides) {
893
900
  let perpId = PerpetualDataHandler.symbolToPerpetualId(symbol, symbolToPerpStaticInfo);
894
- let [S2, S3] = indexPrices.map((x) => (0, d8XMath_1.floatToABK64x64)(x == undefined || Number.isNaN(x) ? 0 : x));
901
+ let [S2, S3] = [indexPrices.s2, indexPrices.s3].map((x) => (0, d8XMath_1.floatToABK64x64)(x == undefined || Number.isNaN(x) ? 0 : x));
895
902
  let ammState = await _proxyContract.getAMMState(perpId, [S2, S3], overrides || {});
896
903
  // ammState[6] == S2 == indexPrices[0] up to rounding errors (indexPrices is most accurate)
897
- return indexPrices[0] * (1 + (0, d8XMath_1.ABK64x64ToFloat)(ammState[8]));
904
+ if (isPredMkt) {
905
+ return indexPrices.ema + (0, d8XMath_1.ABK64x64ToFloat)(ammState[8]);
906
+ }
907
+ return indexPrices.s2 * (1 + (0, d8XMath_1.ABK64x64ToFloat)(ammState[8]));
898
908
  }
899
909
  static async _queryPerpetualState(symbol, symbolToPerpStaticInfo, _proxyContract, _multicall, indexPrices, overrides) {
900
910
  let perpId = PerpetualDataHandler.symbolToPerpetualId(symbol, symbolToPerpStaticInfo);
901
911
  let staticInfo = symbolToPerpStaticInfo.get(symbol);
902
- let [S2, S3] = [indexPrices[0], indexPrices[1]];
903
912
  if (staticInfo.collateralCurrencyType == constants_1.CollaterlCCY.BASE) {
904
- S3 = S2;
913
+ indexPrices.s3 = indexPrices.s2;
905
914
  }
906
915
  else if (staticInfo.collateralCurrencyType == constants_1.CollaterlCCY.QUOTE) {
907
- S3 = 1;
916
+ indexPrices.s3 = 1;
908
917
  }
909
918
  // multicall
910
919
  const proxyCalls = [
@@ -913,7 +922,7 @@ class PerpetualDataHandler {
913
922
  allowFailure: false,
914
923
  callData: _proxyContract.interface.encodeFunctionData("getAMMState", [
915
924
  perpId,
916
- [S2, S3].map(d8XMath_1.floatToABK64x64),
925
+ [indexPrices.s2, indexPrices.s3 ?? 0].map(d8XMath_1.floatToABK64x64),
917
926
  ]),
918
927
  },
919
928
  {
@@ -951,26 +960,36 @@ class PerpetualDataHandler {
951
960
  let perpId = PerpetualDataHandler.symbolToPerpetualId(symbol, symbolToPerpStaticInfo);
952
961
  let staticInfo = symbolToPerpStaticInfo.get(symbol);
953
962
  let ccy = symbol.split("-");
954
- let [S2, S3] = [indexPrices[0], indexPrices[1]];
963
+ let [S2, S3] = [indexPrices.s2, indexPrices.s3];
955
964
  if (staticInfo.collateralCurrencyType == constants_1.CollaterlCCY.BASE) {
956
965
  S3 = S2;
957
966
  }
958
967
  else if (staticInfo.collateralCurrencyType == constants_1.CollaterlCCY.QUOTE) {
959
968
  S3 = 1;
960
969
  }
961
- let markPrice = S2 * (1 + (0, d8XMath_1.ABK64x64ToFloat)(ammState[8]));
970
+ const isPred = PerpetualDataHandler.isPredictionMarketStatic(staticInfo);
971
+ let markPrice;
972
+ if (isPred) {
973
+ // ema + premium
974
+ markPrice = indexPrices.ema + (0, d8XMath_1.ABK64x64ToFloat)(ammState[8]);
975
+ }
976
+ else {
977
+ // S2 * (1+premium)
978
+ markPrice = indexPrices.s2 * (1 + (0, d8XMath_1.ABK64x64ToFloat)(ammState[8]));
979
+ }
962
980
  let state = {
963
981
  id: perpId,
964
982
  state: constants_1.PERP_STATE_STR[Number(ammState[13])],
965
983
  baseCurrency: ccy[0],
966
984
  quoteCurrency: ccy[1],
967
985
  indexPrice: S2,
968
- collToQuoteIndexPrice: S3,
986
+ collToQuoteIndexPrice: S3 ?? (ccy[0] === ccy[1] ? S2 : 1),
987
+ markPremium: (0, d8XMath_1.ABK64x64ToFloat)(ammState[8]),
969
988
  markPrice: markPrice,
970
989
  midPrice: (0, d8XMath_1.ABK64x64ToFloat)(ammState[10]),
971
990
  currentFundingRateBps: (0, d8XMath_1.ABK64x64ToFloat)(ammState[14]) * 1e4,
972
991
  openInterestBC: (0, d8XMath_1.ABK64x64ToFloat)(ammState[11]),
973
- isMarketClosed: indexPrices[2] || indexPrices[3],
992
+ isMarketClosed: indexPrices.s2MktClosed || (indexPrices.s3MktClosed !== undefined && indexPrices.s3MktClosed),
974
993
  longBC: (0, d8XMath_1.ABK64x64ToFloat)(longShort[0]),
975
994
  shortBC: (0, d8XMath_1.ABK64x64ToFloat)(longShort[1]),
976
995
  };
@@ -984,7 +1003,7 @@ class PerpetualDataHandler {
984
1003
  * @param symbolToPerpStaticInfo mapping symbol->PerpStaticInfo
985
1004
  * @returns liquidation mark-price, corresponding collateral/quote conversion
986
1005
  */
987
- static _calculateLiquidationPrice(symbol, traderState, S2, symbolToPerpStaticInfo) {
1006
+ static _calculateLiquidationPrice(symbol, traderState, S2, symbolToPerpStaticInfo, isPredMarket) {
988
1007
  const idx_availableCashCC = 2;
989
1008
  const idx_cash = 3;
990
1009
  const idx_notional = 4;
@@ -998,13 +1017,21 @@ class PerpetualDataHandler {
998
1017
  if (perpInfo == undefined) {
999
1018
  throw new Error(`no info for perpetual ${symbol}`);
1000
1019
  }
1001
- let tau = perpInfo.maintenanceMarginRate;
1002
- let lockedInValueQC = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_locked_in]);
1003
- let position = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_notional]);
1004
- let cashCC = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_availableCashCC]);
1005
- let Sm = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_mark_price]);
1006
- let unpaidFundingCC = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_availableCashCC] - traderState[idx_cash]);
1020
+ const tau = perpInfo.maintenanceMarginRate;
1021
+ const lockedInValueQC = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_locked_in]);
1022
+ const position = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_notional]);
1023
+ const cashCC = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_availableCashCC]);
1024
+ const Sm = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_mark_price]);
1025
+ const unpaidFundingCC = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_availableCashCC] - traderState[idx_cash]);
1007
1026
  let unpaidFunding = unpaidFundingCC;
1027
+ if (isPredMarket) {
1028
+ const S2Liq = (0, d8XMath_1.pmFindLiquidationPrice)(position, S3Liq, lockedInValueQC, cashCC, tau, S2);
1029
+ let pnl = position * Sm - lockedInValueQC + unpaidFunding / S3Liq;
1030
+ // liquidation margin rate
1031
+ const tauLiq = (0, d8XMath_1.pmMaintenanceMarginRate)(position, S2Liq, tau);
1032
+ return [S2Liq, S3Liq, tauLiq, pnl, unpaidFundingCC];
1033
+ }
1034
+ // regular perpetuals:
1008
1035
  if (perpInfo.collateralCurrencyType == constants_1.CollaterlCCY.BASE) {
1009
1036
  S2Liq = (0, d8XMath_1.calculateLiquidationPriceCollateralBase)(lockedInValueQC, position, cashCC, tau);
1010
1037
  S3Liq = S2Liq;
@@ -1092,7 +1119,7 @@ class PerpetualDataHandler {
1092
1119
  }
1093
1120
  // adjust prices for market type
1094
1121
  const sInfo = symbolToPerpInfoMap.get(symbol);
1095
- if (PerpetualDataHandler.isPredictionMarket(sInfo)) {
1122
+ if (PerpetualDataHandler.isPredictionMarketStatic(sInfo)) {
1096
1123
  limitPrice = limitPrice !== undefined && limitPrice !== 0 ? (0, d8XMath_1.priceToProb)(limitPrice) : limitPrice;
1097
1124
  stopPrice = stopPrice !== undefined && stopPrice !== 0 ? (0, d8XMath_1.priceToProb)(stopPrice) : stopPrice;
1098
1125
  }
@@ -1111,9 +1138,9 @@ class PerpetualDataHandler {
1111
1138
  leverage: Number(order.leverageTDR) / 100,
1112
1139
  deadline: Number(order.iDeadline),
1113
1140
  executionTimestamp: Number(order.executionTimestamp),
1114
- submittedTimestamp: order["submittedTimestamp"] ? Number(order["submittedTimestamp"]) : undefined,
1115
- parentChildOrderIds: order["parentChildDigest1"] && order["parentChildDigest2"]
1116
- ? [order["parentChildDigest1"].toString(), order["parentChildDigest2"].toString()]
1141
+ submittedTimestamp: "submittedTimestamp" in order ? Number(order.submittedTimestamp) : undefined,
1142
+ parentChildOrderIds: "parentChildDigest1" && "parentChildDigest2" in order
1143
+ ? [order.parentChildDigest1.toString(), order.parentChildDigest2.toString()]
1117
1144
  : undefined,
1118
1145
  };
1119
1146
  return userOrder;
@@ -1142,7 +1169,7 @@ class PerpetualDataHandler {
1142
1169
  else {
1143
1170
  throw Error(`invalid side in order spec, use ${constants_1.BUY_SIDE} or ${constants_1.SELL_SIDE}`);
1144
1171
  }
1145
- const isPred = PerpetualDataHandler.isPredictionMarket(perpStaticInfo.get(order.symbol));
1172
+ const isPred = PerpetualDataHandler.isPredictionMarketStatic(perpStaticInfo.get(order.symbol));
1146
1173
  let fLimitPrice;
1147
1174
  if (order.limitPrice == undefined) {
1148
1175
  // we need to set the limit price to infinity or zero for
@@ -1617,15 +1644,14 @@ class PerpetualDataHandler {
1617
1644
  if (staticInfo == undefined) {
1618
1645
  throw new Error(`Perpetual with symbol ${symbol} not found. Check symbol or use createProxyInstance().`);
1619
1646
  }
1620
- return PerpetualDataHandler.isPredictionMarket(staticInfo);
1647
+ return PerpetualDataHandler.isPredictionMarketStatic(staticInfo);
1621
1648
  }
1622
1649
  /**
1623
1650
  * Determines whether a given perpetual represents a prediction market
1624
1651
  * @param staticInfo Perpetual static info
1625
1652
  * @returns True if this is a prediction market
1626
1653
  */
1627
- static isPredictionMarket(staticInfo) {
1628
- // return true; // for testing
1654
+ static isPredictionMarketStatic(staticInfo) {
1629
1655
  return (0, utils_1.containsFlag)(staticInfo.perpFlags, constants_1.MASK_PREDICTION_MARKET);
1630
1656
  }
1631
1657
  }