@d8x/perpetuals-sdk 2.3.1 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/dist/cjs/abi/BeaconProxy.json +71 -0
  2. package/dist/cjs/abi/IPerpetualManager.json +61 -10
  3. package/dist/cjs/abi/Maintainer.json +774 -0
  4. package/dist/cjs/abi/MockToken.json +347 -0
  5. package/dist/cjs/abi/UUPSUpgradeable.json +104 -0
  6. package/dist/cjs/abi/WeETH.json +310 -0
  7. package/dist/cjs/abi-zkevm/LimitOrderBook.json +910 -0
  8. package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +236 -0
  9. package/dist/cjs/config/defaultConfig.json +1 -1
  10. package/dist/cjs/constants.d.ts +1 -0
  11. package/dist/cjs/constants.js +2 -1
  12. package/dist/cjs/constants.js.map +1 -1
  13. package/dist/cjs/contracts/BeaconProxy.d.ts +63 -0
  14. package/dist/cjs/contracts/BeaconProxy.js +3 -0
  15. package/dist/cjs/contracts/BeaconProxy.js.map +1 -0
  16. package/dist/cjs/contracts/IPerpetualManager.d.ts +38 -13
  17. package/dist/cjs/contracts/Maintainer.d.ts +799 -0
  18. package/dist/cjs/contracts/Maintainer.js +3 -0
  19. package/dist/cjs/contracts/Maintainer.js.map +1 -0
  20. package/dist/cjs/contracts/MockToken.d.ts +263 -0
  21. package/dist/cjs/contracts/MockToken.js +3 -0
  22. package/dist/cjs/contracts/MockToken.js.map +1 -0
  23. package/dist/cjs/contracts/UUPSUpgradeable.d.ts +118 -0
  24. package/dist/cjs/contracts/UUPSUpgradeable.js +3 -0
  25. package/dist/cjs/contracts/UUPSUpgradeable.js.map +1 -0
  26. package/dist/cjs/contracts/WeETH.d.ts +503 -0
  27. package/dist/cjs/contracts/WeETH.js +3 -0
  28. package/dist/cjs/contracts/WeETH.js.map +1 -0
  29. package/dist/cjs/contracts/factories/BeaconProxy__factory.d.ts +61 -0
  30. package/dist/cjs/contracts/factories/BeaconProxy__factory.js +89 -0
  31. package/dist/cjs/contracts/factories/BeaconProxy__factory.js.map +1 -0
  32. package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +46 -8
  33. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +61 -10
  34. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  35. package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +609 -0
  36. package/dist/cjs/contracts/factories/Maintainer__factory.js +792 -0
  37. package/dist/cjs/contracts/factories/Maintainer__factory.js.map +1 -0
  38. package/dist/{esm/contracts/factories/PerpStorage__factory.d.ts → cjs/contracts/factories/MockToken__factory.d.ts} +128 -115
  39. package/dist/cjs/contracts/factories/MockToken__factory.js +365 -0
  40. package/dist/cjs/contracts/factories/MockToken__factory.js.map +1 -0
  41. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +87 -0
  42. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +122 -0
  43. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +1 -0
  44. package/dist/cjs/contracts/factories/WeETH__factory.d.ts +545 -0
  45. package/dist/cjs/contracts/factories/WeETH__factory.js +721 -0
  46. package/dist/cjs/contracts/factories/WeETH__factory.js.map +1 -0
  47. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +4136 -0
  48. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +5324 -0
  49. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +1 -0
  50. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +189 -0
  51. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +254 -0
  52. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +1 -0
  53. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +715 -0
  54. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +928 -0
  55. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +1 -0
  56. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +344 -0
  57. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +456 -0
  58. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +1 -0
  59. package/dist/cjs/contracts/factories/lean0/index.d.ts +4 -0
  60. package/dist/cjs/contracts/factories/lean0/index.js +15 -0
  61. package/dist/cjs/contracts/factories/lean0/index.js.map +1 -0
  62. package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +2821 -0
  63. package/dist/cjs/contracts/lean0/IPerpetualManager.js +3 -0
  64. package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +1 -0
  65. package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +533 -0
  66. package/dist/cjs/contracts/lean0/LimitOrderBook.js +3 -0
  67. package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +1 -0
  68. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +210 -0
  69. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +3 -0
  70. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +1 -0
  71. package/dist/cjs/contracts/lean0/ShareToken.d.ts +320 -0
  72. package/dist/cjs/contracts/lean0/ShareToken.js +3 -0
  73. package/dist/cjs/contracts/lean0/ShareToken.js.map +1 -0
  74. package/dist/cjs/contracts/lean0/index.d.ts +4 -0
  75. package/dist/cjs/contracts/lean0/index.js +3 -0
  76. package/dist/cjs/contracts/lean0/index.js.map +1 -0
  77. package/dist/cjs/perpetualDataHandler.d.ts +6 -0
  78. package/dist/cjs/perpetualDataHandler.js +12 -0
  79. package/dist/cjs/perpetualDataHandler.js.map +1 -1
  80. package/dist/cjs/priceFeeds.d.ts +12 -1
  81. package/dist/cjs/priceFeeds.js +61 -18
  82. package/dist/cjs/priceFeeds.js.map +1 -1
  83. package/dist/cjs/version.d.ts +1 -1
  84. package/dist/cjs/version.js +1 -1
  85. package/dist/esm/abi/BeaconProxy.json +71 -0
  86. package/dist/esm/abi/IPerpetualManager.json +61 -10
  87. package/dist/esm/abi/Maintainer.json +774 -0
  88. package/dist/esm/abi/MockToken.json +347 -0
  89. package/dist/esm/abi/UUPSUpgradeable.json +104 -0
  90. package/dist/esm/abi/WeETH.json +310 -0
  91. package/dist/esm/abi/lean0/IPerpetualManager.json +5306 -0
  92. package/dist/esm/abi/lean0/LimitOrderBook.json +910 -0
  93. package/dist/esm/abi/lean0/LimitOrderBookFactory.json +236 -0
  94. package/dist/esm/abi/lean0/ShareToken.json +438 -0
  95. package/dist/esm/abi-zkevm/LimitOrderBook.json +910 -0
  96. package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +236 -0
  97. package/dist/esm/config/defaultConfig.json +1 -1
  98. package/dist/esm/constants.d.ts +1 -0
  99. package/dist/esm/constants.js +1 -0
  100. package/dist/esm/constants.js.map +1 -1
  101. package/dist/esm/contracts/BeaconProxy.d.ts +63 -0
  102. package/dist/esm/contracts/BeaconProxy.js +2 -0
  103. package/dist/esm/contracts/BeaconProxy.js.map +1 -0
  104. package/dist/esm/contracts/IPerpetualManager.d.ts +38 -13
  105. package/dist/esm/contracts/Maintainer.d.ts +799 -0
  106. package/dist/esm/contracts/Maintainer.js +2 -0
  107. package/dist/esm/contracts/Maintainer.js.map +1 -0
  108. package/dist/esm/contracts/MockToken.d.ts +263 -0
  109. package/dist/esm/contracts/MockToken.js +2 -0
  110. package/dist/esm/contracts/MockToken.js.map +1 -0
  111. package/dist/esm/contracts/UUPSUpgradeable.d.ts +118 -0
  112. package/dist/esm/contracts/UUPSUpgradeable.js +2 -0
  113. package/dist/esm/contracts/UUPSUpgradeable.js.map +1 -0
  114. package/dist/esm/contracts/WeETH.d.ts +503 -0
  115. package/dist/esm/contracts/WeETH.js +2 -0
  116. package/dist/esm/contracts/WeETH.js.map +1 -0
  117. package/dist/esm/contracts/factories/BeaconProxy__factory.d.ts +61 -0
  118. package/dist/esm/contracts/factories/BeaconProxy__factory.js +85 -0
  119. package/dist/esm/contracts/factories/BeaconProxy__factory.js.map +1 -0
  120. package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +46 -8
  121. package/dist/esm/contracts/factories/IPerpetualManager__factory.js +61 -10
  122. package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  123. package/dist/esm/contracts/factories/Maintainer__factory.d.ts +609 -0
  124. package/dist/esm/contracts/factories/Maintainer__factory.js +788 -0
  125. package/dist/esm/contracts/factories/Maintainer__factory.js.map +1 -0
  126. package/dist/esm/contracts/factories/MockToken__factory.d.ts +273 -0
  127. package/dist/esm/contracts/factories/{PerpStorage__factory.js → MockToken__factory.js} +139 -128
  128. package/dist/esm/contracts/factories/MockToken__factory.js.map +1 -0
  129. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +87 -0
  130. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +118 -0
  131. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +1 -0
  132. package/dist/esm/contracts/factories/WeETH__factory.d.ts +545 -0
  133. package/dist/esm/contracts/factories/WeETH__factory.js +717 -0
  134. package/dist/esm/contracts/factories/WeETH__factory.js.map +1 -0
  135. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +4136 -0
  136. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +5320 -0
  137. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +1 -0
  138. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +189 -0
  139. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +250 -0
  140. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +1 -0
  141. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +715 -0
  142. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +924 -0
  143. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +1 -0
  144. package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +344 -0
  145. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +452 -0
  146. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +1 -0
  147. package/dist/esm/contracts/factories/lean0/index.d.ts +4 -0
  148. package/dist/esm/contracts/factories/lean0/index.js +8 -0
  149. package/dist/esm/contracts/factories/lean0/index.js.map +1 -0
  150. package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +2821 -0
  151. package/dist/esm/contracts/lean0/IPerpetualManager.js +2 -0
  152. package/dist/esm/contracts/lean0/IPerpetualManager.js.map +1 -0
  153. package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +533 -0
  154. package/dist/esm/contracts/lean0/LimitOrderBook.js +2 -0
  155. package/dist/esm/contracts/lean0/LimitOrderBook.js.map +1 -0
  156. package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +210 -0
  157. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +2 -0
  158. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +1 -0
  159. package/dist/esm/contracts/lean0/ShareToken.d.ts +320 -0
  160. package/dist/esm/contracts/lean0/ShareToken.js +2 -0
  161. package/dist/esm/contracts/lean0/ShareToken.js.map +1 -0
  162. package/dist/esm/contracts/lean0/index.d.ts +4 -0
  163. package/dist/esm/contracts/lean0/index.js +2 -0
  164. package/dist/esm/contracts/lean0/index.js.map +1 -0
  165. package/dist/esm/perpetualDataHandler.d.ts +6 -0
  166. package/dist/esm/perpetualDataHandler.js +13 -1
  167. package/dist/esm/perpetualDataHandler.js.map +1 -1
  168. package/dist/esm/priceFeeds.d.ts +12 -1
  169. package/dist/esm/priceFeeds.js +61 -18
  170. package/dist/esm/priceFeeds.js.map +1 -1
  171. package/dist/esm/version.d.ts +1 -1
  172. package/dist/esm/version.js +1 -1
  173. package/package.json +1 -1
  174. package/src/abi/IPerpetualManager.json +61 -10
  175. package/src/config/defaultConfig.json +1 -1
  176. package/src/constants.ts +1 -0
  177. package/src/contracts/IPerpetualManager.ts +63 -12
  178. package/src/contracts/factories/IPerpetualManager__factory.ts +61 -10
  179. package/src/perpetualDataHandler.ts +14 -0
  180. package/src/priceFeeds.ts +67 -20
  181. package/src/version.ts +1 -1
  182. package/dist/esm/contracts/factories/PerpStorage__factory.js.map +0 -1
@@ -1401,6 +1401,30 @@
1401
1401
  "stateMutability": "view",
1402
1402
  "type": "function"
1403
1403
  },
1404
+ {
1405
+ "inputs": [
1406
+ {
1407
+ "internalType": "uint8",
1408
+ "name": "_id",
1409
+ "type": "uint8"
1410
+ },
1411
+ {
1412
+ "internalType": "uint256",
1413
+ "name": "_bulkSize",
1414
+ "type": "uint256"
1415
+ }
1416
+ ],
1417
+ "name": "clearTradersInPool",
1418
+ "outputs": [
1419
+ {
1420
+ "internalType": "bool",
1421
+ "name": "",
1422
+ "type": "bool"
1423
+ }
1424
+ ],
1425
+ "stateMutability": "nonpayable",
1426
+ "type": "function"
1427
+ },
1404
1428
  {
1405
1429
  "inputs": [
1406
1430
  {
@@ -4265,16 +4289,6 @@
4265
4289
  "name": "_fm",
4266
4290
  "type": "int128"
4267
4291
  },
4268
- {
4269
- "internalType": "int128",
4270
- "name": "_fTotLong",
4271
- "type": "int128"
4272
- },
4273
- {
4274
- "internalType": "int128",
4275
- "name": "_fTotShort",
4276
- "type": "int128"
4277
- },
4278
4292
  {
4279
4293
  "internalType": "int128",
4280
4294
  "name": "_fTradeAmt",
@@ -4545,6 +4559,19 @@
4545
4559
  "stateMutability": "nonpayable",
4546
4560
  "type": "function"
4547
4561
  },
4562
+ {
4563
+ "inputs": [
4564
+ {
4565
+ "internalType": "uint24",
4566
+ "name": "_iPerpetualId",
4567
+ "type": "uint24"
4568
+ }
4569
+ ],
4570
+ "name": "resetMarkPremium",
4571
+ "outputs": [],
4572
+ "stateMutability": "nonpayable",
4573
+ "type": "function"
4574
+ },
4548
4575
  {
4549
4576
  "inputs": [
4550
4577
  {
@@ -4999,6 +5026,30 @@
4999
5026
  "stateMutability": "nonpayable",
5000
5027
  "type": "function"
5001
5028
  },
5029
+ {
5030
+ "inputs": [
5031
+ {
5032
+ "internalType": "uint24",
5033
+ "name": "_perpetualID",
5034
+ "type": "uint24"
5035
+ },
5036
+ {
5037
+ "internalType": "uint256",
5038
+ "name": "_bulkSize",
5039
+ "type": "uint256"
5040
+ }
5041
+ ],
5042
+ "name": "settleTraders",
5043
+ "outputs": [
5044
+ {
5045
+ "internalType": "uint256",
5046
+ "name": "_settled",
5047
+ "type": "uint256"
5048
+ }
5049
+ ],
5050
+ "stateMutability": "nonpayable",
5051
+ "type": "function"
5052
+ },
5002
5053
  {
5003
5054
  "inputs": [
5004
5055
  {
@@ -110,7 +110,7 @@
110
110
  "version": 1,
111
111
  "proxyAddr": "0xf922A26375967130aeaB637cB3eE59f498CB2d24",
112
112
  "nodeURL": "https://bartio.rpc.berachain.com",
113
- "priceFeedConfigNetwork": "mainnet",
113
+ "priceFeedConfigNetwork": "odin",
114
114
  "shareTokenABILocation": "./abi/ShareToken.json",
115
115
  "proxyABILocation": "./abi/IPerpetualManager.json",
116
116
  "limitOrderBookFactoryABILocation": "./abi/LimitOrderBookFactory.json",
package/src/constants.ts CHANGED
@@ -31,6 +31,7 @@ export const MASK_MARKET_ORDER = BigInt("0x40000000");
31
31
  export const MASK_STOP_ORDER = BigInt("0x20000000");
32
32
  export const MASK_KEEP_POS_LEVERAGE = BigInt("0x08000000");
33
33
  export const MASK_PREDICTION_MARKET = 2n;
34
+ export const MASK_LOW_LIQUIDITY_MARKET = 4n;
34
35
 
35
36
  export const ORDER_TYPE_LIMIT = "LIMIT";
36
37
  export const ORDER_TYPE_MARKET = "MARKET";
@@ -432,6 +432,7 @@ export interface IPerpetualManagerInterface extends Interface {
432
432
  | "calculateDefaultFundSize"
433
433
  | "calculatePerpetualPrice"
434
434
  | "calculateRiskNeutralPD"
435
+ | "clearTradersInPool"
435
436
  | "countActivePerpAccounts"
436
437
  | "createLiquidityPool"
437
438
  | "createPerpetual"
@@ -514,6 +515,7 @@ export interface IPerpetualManagerInterface extends Interface {
514
515
  | "queryPerpetualPrice"
515
516
  | "rebalance"
516
517
  | "reduceMarginCollateral"
518
+ | "resetMarkPremium"
517
519
  | "runLiquidityPool"
518
520
  | "setAMMPerpLogic"
519
521
  | "setBlockDelay"
@@ -540,6 +542,7 @@ export interface IPerpetualManagerInterface extends Interface {
540
542
  | "setUtilityTokenAddr"
541
543
  | "settle"
542
544
  | "settleNextTraderInPool"
545
+ | "settleTraders"
543
546
  | "splitProtocolFee"
544
547
  | "togglePerpEmergencyState"
545
548
  | "tradeViaOrderBook"
@@ -650,6 +653,10 @@ export interface IPerpetualManagerInterface extends Interface {
650
653
  boolean
651
654
  ]
652
655
  ): string;
656
+ encodeFunctionData(
657
+ functionFragment: "clearTradersInPool",
658
+ values: [BigNumberish, BigNumberish]
659
+ ): string;
653
660
  encodeFunctionData(
654
661
  functionFragment: "countActivePerpAccounts",
655
662
  values: [BigNumberish]
@@ -999,14 +1006,7 @@ export interface IPerpetualManagerInterface extends Interface {
999
1006
  ): string;
1000
1007
  encodeFunctionData(
1001
1008
  functionFragment: "prdMktsLvgFee",
1002
- values: [
1003
- BigNumberish,
1004
- BigNumberish,
1005
- BigNumberish,
1006
- BigNumberish,
1007
- BigNumberish,
1008
- BigNumberish
1009
- ]
1009
+ values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish]
1010
1010
  ): string;
1011
1011
  encodeFunctionData(
1012
1012
  functionFragment: "preTrade",
@@ -1042,6 +1042,10 @@ export interface IPerpetualManagerInterface extends Interface {
1042
1042
  functionFragment: "reduceMarginCollateral",
1043
1043
  values: [BigNumberish, AddressLike, BigNumberish]
1044
1044
  ): string;
1045
+ encodeFunctionData(
1046
+ functionFragment: "resetMarkPremium",
1047
+ values: [BigNumberish]
1048
+ ): string;
1045
1049
  encodeFunctionData(
1046
1050
  functionFragment: "runLiquidityPool",
1047
1051
  values: [BigNumberish]
@@ -1150,6 +1154,10 @@ export interface IPerpetualManagerInterface extends Interface {
1150
1154
  functionFragment: "settleNextTraderInPool",
1151
1155
  values: [BigNumberish]
1152
1156
  ): string;
1157
+ encodeFunctionData(
1158
+ functionFragment: "settleTraders",
1159
+ values: [BigNumberish, BigNumberish]
1160
+ ): string;
1153
1161
  encodeFunctionData(
1154
1162
  functionFragment: "splitProtocolFee",
1155
1163
  values: [BigNumberish]
@@ -1261,6 +1269,10 @@ export interface IPerpetualManagerInterface extends Interface {
1261
1269
  functionFragment: "calculateRiskNeutralPD",
1262
1270
  data: BytesLike
1263
1271
  ): Result;
1272
+ decodeFunctionResult(
1273
+ functionFragment: "clearTradersInPool",
1274
+ data: BytesLike
1275
+ ): Result;
1264
1276
  decodeFunctionResult(
1265
1277
  functionFragment: "countActivePerpAccounts",
1266
1278
  data: BytesLike
@@ -1574,6 +1586,10 @@ export interface IPerpetualManagerInterface extends Interface {
1574
1586
  functionFragment: "reduceMarginCollateral",
1575
1587
  data: BytesLike
1576
1588
  ): Result;
1589
+ decodeFunctionResult(
1590
+ functionFragment: "resetMarkPremium",
1591
+ data: BytesLike
1592
+ ): Result;
1577
1593
  decodeFunctionResult(
1578
1594
  functionFragment: "runLiquidityPool",
1579
1595
  data: BytesLike
@@ -1675,6 +1691,10 @@ export interface IPerpetualManagerInterface extends Interface {
1675
1691
  functionFragment: "settleNextTraderInPool",
1676
1692
  data: BytesLike
1677
1693
  ): Result;
1694
+ decodeFunctionResult(
1695
+ functionFragment: "settleTraders",
1696
+ data: BytesLike
1697
+ ): Result;
1678
1698
  decodeFunctionResult(
1679
1699
  functionFragment: "splitProtocolFee",
1680
1700
  data: BytesLike
@@ -2675,6 +2695,12 @@ export interface IPerpetualManager extends BaseContract {
2675
2695
  "view"
2676
2696
  >;
2677
2697
 
2698
+ clearTradersInPool: TypedContractMethod<
2699
+ [_id: BigNumberish, _bulkSize: BigNumberish],
2700
+ [boolean],
2701
+ "nonpayable"
2702
+ >;
2703
+
2678
2704
  countActivePerpAccounts: TypedContractMethod<
2679
2705
  [_perpetualId: BigNumberish],
2680
2706
  [bigint],
@@ -3176,8 +3202,6 @@ export interface IPerpetualManager extends BaseContract {
3176
3202
  [
3177
3203
  _fPx: BigNumberish,
3178
3204
  _fm: BigNumberish,
3179
- _fTotLong: BigNumberish,
3180
- _fTotShort: BigNumberish,
3181
3205
  _fTradeAmt: BigNumberish,
3182
3206
  _fMgnRate: BigNumberish
3183
3207
  ],
@@ -3237,6 +3261,12 @@ export interface IPerpetualManager extends BaseContract {
3237
3261
  "nonpayable"
3238
3262
  >;
3239
3263
 
3264
+ resetMarkPremium: TypedContractMethod<
3265
+ [_iPerpetualId: BigNumberish],
3266
+ [void],
3267
+ "nonpayable"
3268
+ >;
3269
+
3240
3270
  runLiquidityPool: TypedContractMethod<
3241
3271
  [_liqPoolID: BigNumberish],
3242
3272
  [void],
@@ -3412,6 +3442,12 @@ export interface IPerpetualManager extends BaseContract {
3412
3442
  "nonpayable"
3413
3443
  >;
3414
3444
 
3445
+ settleTraders: TypedContractMethod<
3446
+ [_perpetualID: BigNumberish, _bulkSize: BigNumberish],
3447
+ [bigint],
3448
+ "nonpayable"
3449
+ >;
3450
+
3415
3451
  splitProtocolFee: TypedContractMethod<
3416
3452
  [fee: BigNumberish],
3417
3453
  [[bigint, bigint]],
@@ -3614,6 +3650,13 @@ export interface IPerpetualManager extends BaseContract {
3614
3650
  [[bigint, bigint]],
3615
3651
  "view"
3616
3652
  >;
3653
+ getFunction(
3654
+ nameOrSignature: "clearTradersInPool"
3655
+ ): TypedContractMethod<
3656
+ [_id: BigNumberish, _bulkSize: BigNumberish],
3657
+ [boolean],
3658
+ "nonpayable"
3659
+ >;
3617
3660
  getFunction(
3618
3661
  nameOrSignature: "countActivePerpAccounts"
3619
3662
  ): TypedContractMethod<[_perpetualId: BigNumberish], [bigint], "view">;
@@ -4135,8 +4178,6 @@ export interface IPerpetualManager extends BaseContract {
4135
4178
  [
4136
4179
  _fPx: BigNumberish,
4137
4180
  _fm: BigNumberish,
4138
- _fTotLong: BigNumberish,
4139
- _fTotShort: BigNumberish,
4140
4181
  _fTradeAmt: BigNumberish,
4141
4182
  _fMgnRate: BigNumberish
4142
4183
  ],
@@ -4198,6 +4239,9 @@ export interface IPerpetualManager extends BaseContract {
4198
4239
  [void],
4199
4240
  "nonpayable"
4200
4241
  >;
4242
+ getFunction(
4243
+ nameOrSignature: "resetMarkPremium"
4244
+ ): TypedContractMethod<[_iPerpetualId: BigNumberish], [void], "nonpayable">;
4201
4245
  getFunction(
4202
4246
  nameOrSignature: "runLiquidityPool"
4203
4247
  ): TypedContractMethod<[_liqPoolID: BigNumberish], [void], "nonpayable">;
@@ -4363,6 +4407,13 @@ export interface IPerpetualManager extends BaseContract {
4363
4407
  getFunction(
4364
4408
  nameOrSignature: "settleNextTraderInPool"
4365
4409
  ): TypedContractMethod<[_id: BigNumberish], [boolean], "nonpayable">;
4410
+ getFunction(
4411
+ nameOrSignature: "settleTraders"
4412
+ ): TypedContractMethod<
4413
+ [_perpetualID: BigNumberish, _bulkSize: BigNumberish],
4414
+ [bigint],
4415
+ "nonpayable"
4416
+ >;
4366
4417
  getFunction(
4367
4418
  nameOrSignature: "splitProtocolFee"
4368
4419
  ): TypedContractMethod<[fee: BigNumberish], [[bigint, bigint]], "view">;
@@ -1411,6 +1411,30 @@ const _abi = [
1411
1411
  stateMutability: "view",
1412
1412
  type: "function",
1413
1413
  },
1414
+ {
1415
+ inputs: [
1416
+ {
1417
+ internalType: "uint8",
1418
+ name: "_id",
1419
+ type: "uint8",
1420
+ },
1421
+ {
1422
+ internalType: "uint256",
1423
+ name: "_bulkSize",
1424
+ type: "uint256",
1425
+ },
1426
+ ],
1427
+ name: "clearTradersInPool",
1428
+ outputs: [
1429
+ {
1430
+ internalType: "bool",
1431
+ name: "",
1432
+ type: "bool",
1433
+ },
1434
+ ],
1435
+ stateMutability: "nonpayable",
1436
+ type: "function",
1437
+ },
1414
1438
  {
1415
1439
  inputs: [
1416
1440
  {
@@ -4275,16 +4299,6 @@ const _abi = [
4275
4299
  name: "_fm",
4276
4300
  type: "int128",
4277
4301
  },
4278
- {
4279
- internalType: "int128",
4280
- name: "_fTotLong",
4281
- type: "int128",
4282
- },
4283
- {
4284
- internalType: "int128",
4285
- name: "_fTotShort",
4286
- type: "int128",
4287
- },
4288
4302
  {
4289
4303
  internalType: "int128",
4290
4304
  name: "_fTradeAmt",
@@ -4555,6 +4569,19 @@ const _abi = [
4555
4569
  stateMutability: "nonpayable",
4556
4570
  type: "function",
4557
4571
  },
4572
+ {
4573
+ inputs: [
4574
+ {
4575
+ internalType: "uint24",
4576
+ name: "_iPerpetualId",
4577
+ type: "uint24",
4578
+ },
4579
+ ],
4580
+ name: "resetMarkPremium",
4581
+ outputs: [],
4582
+ stateMutability: "nonpayable",
4583
+ type: "function",
4584
+ },
4558
4585
  {
4559
4586
  inputs: [
4560
4587
  {
@@ -5009,6 +5036,30 @@ const _abi = [
5009
5036
  stateMutability: "nonpayable",
5010
5037
  type: "function",
5011
5038
  },
5039
+ {
5040
+ inputs: [
5041
+ {
5042
+ internalType: "uint24",
5043
+ name: "_perpetualID",
5044
+ type: "uint24",
5045
+ },
5046
+ {
5047
+ internalType: "uint256",
5048
+ name: "_bulkSize",
5049
+ type: "uint256",
5050
+ },
5051
+ ],
5052
+ name: "settleTraders",
5053
+ outputs: [
5054
+ {
5055
+ internalType: "uint256",
5056
+ name: "_settled",
5057
+ type: "uint256",
5058
+ },
5059
+ ],
5060
+ stateMutability: "nonpayable",
5061
+ type: "function",
5062
+ },
5012
5063
  {
5013
5064
  inputs: [
5014
5065
  {
@@ -19,6 +19,7 @@ import {
19
19
  MASK_CLOSE_ONLY,
20
20
  MASK_KEEP_POS_LEVERAGE,
21
21
  MASK_LIMIT_ORDER,
22
+ MASK_LOW_LIQUIDITY_MARKET,
22
23
  MASK_MARKET_ORDER,
23
24
  MASK_PREDICTION_MARKET,
24
25
  MASK_STOP_ORDER,
@@ -2057,6 +2058,19 @@ export default class PerpetualDataHandler {
2057
2058
  return PerpetualDataHandler.isPredictionMarketStatic(staticInfo);
2058
2059
  }
2059
2060
 
2061
+ /**
2062
+ * Determines whether a given perpetual represents a low-liquidity market
2063
+ * @param symbol perpetual symbol of the form DIRAC-HONEY-USDC
2064
+ * @returns True if this is a low-liquidity market
2065
+ */
2066
+ public isLowLiquidityMarket(symbol: string): boolean {
2067
+ let staticInfo = this.symbolToPerpStaticInfo.get(symbol);
2068
+ if (staticInfo == undefined) {
2069
+ throw new Error(`Perpetual with symbol ${symbol} not found. Check symbol or use createProxyInstance().`);
2070
+ }
2071
+ return containsFlag(staticInfo.perpFlags, MASK_LOW_LIQUIDITY_MARKET);
2072
+ }
2073
+
2060
2074
  /**
2061
2075
  * Determines whether a given perpetual represents a prediction market
2062
2076
  * @param staticInfo Perpetual static info
package/src/priceFeeds.ts CHANGED
@@ -231,6 +231,11 @@ export default class PriceFeeds {
231
231
  if (!key.includes(":ema")) {
232
232
  continue;
233
233
  }
234
+ // only report ema if corresponding symbol is requested
235
+ const keyNoEma = key.substring(0, key.length - 5);
236
+ if (!symbols.includes(keyNoEma)) {
237
+ continue;
238
+ }
234
239
  let p = feedPrices.get(key);
235
240
  symMap.set(key, p!);
236
241
  }
@@ -277,18 +282,36 @@ export default class PriceFeeds {
277
282
  }
278
283
  }
279
284
  // get all feed prices
280
- let feedPrices = await this.fetchFeedPrices(feedSymbols);
285
+ const feedResponses = await this.fetchFeedPriceResponses(feedSymbols);
281
286
  // triangulate
287
+ let feedPrices = new Map();
288
+ for (const [key, value] of feedPrices) {
289
+ feedPrices.set(key, [value[0], value[1]]);
290
+ }
282
291
  let [prices, mktClosed] = this.triangulatePricesFromFeedPrices(indexSymbols, feedPrices);
283
- return {
284
- s2: prices[0],
285
- s3: prices[1],
286
- ema: prices[0],
287
- s2MktClosed: mktClosed[0],
288
- s3MktClosed: mktClosed[1],
289
- conf: BigInt(0),
290
- predMktCLOBParams: BigInt(0),
291
- } as IdxPriceInfo;
292
+ // if low liquidity, assume base-quote is a feed
293
+ if (this.dataHandler.isLowLiquidityMarket(symbol)) {
294
+ const [, , s2Info, s2EmaInfo] = feedResponses.get(indexSymbols[0])!;
295
+ return {
296
+ s2: prices[0],
297
+ s3: prices[1],
298
+ ema: decNToFloat(s2EmaInfo?.price ?? 0n, -(s2EmaInfo?.expo ?? 1)),
299
+ s2MktClosed: mktClosed[0],
300
+ s3MktClosed: mktClosed[1],
301
+ conf: s2Info?.conf ?? 0n,
302
+ predMktCLOBParams: s2EmaInfo?.conf ?? 0n,
303
+ } as IdxPriceInfo;
304
+ } else {
305
+ return {
306
+ s2: prices[0],
307
+ s3: prices[1],
308
+ ema: prices[0],
309
+ s2MktClosed: mktClosed[0],
310
+ s3MktClosed: mktClosed[1],
311
+ conf: BigInt(0),
312
+ predMktCLOBParams: BigInt(0),
313
+ } as IdxPriceInfo;
314
+ }
292
315
  }
293
316
 
294
317
  /**
@@ -303,6 +326,17 @@ export default class PriceFeeds {
303
326
  * <symbol>:ema for each polymarket symbol that maps to the ema price
304
327
  */
305
328
  public async fetchFeedPrices(symbols?: string[]): Promise<Map<string, [number, boolean]>> {
329
+ const resps = await this.fetchFeedPriceResponses(symbols);
330
+ const result = new Map();
331
+ for (const [key, value] of resps) {
332
+ result.set(key, [value[0], value[1]]);
333
+ }
334
+ return result;
335
+ }
336
+
337
+ public async fetchFeedPriceResponses(
338
+ symbols?: string[]
339
+ ): Promise<Map<string, [number, boolean, PriceFeedFormat | undefined, PriceFeedFormat | undefined]>> {
306
340
  if (this.config == undefined) {
307
341
  throw Error("init() required");
308
342
  }
@@ -327,7 +361,7 @@ export default class PriceFeeds {
327
361
  polyMktSyms.push(currFeed.symbol);
328
362
  continue;
329
363
  }
330
- const apiFormat = { pyth: this.PYTH, odin: this.PYTH }[currFeed.type];
364
+ const apiFormat = { pyth: this.PYTH, odin: this.PYTH, "low-liq": this.PYTH }[currFeed.type];
331
365
  if (apiFormat === undefined) {
332
366
  throw new Error(`API format for ${currFeed} unknown.`);
333
367
  }
@@ -345,23 +379,23 @@ export default class PriceFeeds {
345
379
  }
346
380
  let onChainPromise = this.queryOnChainPxFeeds(onChainSyms);
347
381
  let polyMktsPromise = this.queryPolyMktsPxFeeds(polyMktSyms);
348
- let resultPrices = new Map<string, [number, boolean]>();
382
+ let resultPrices = new Map<string, [number, boolean, PriceFeedFormat | undefined, PriceFeedFormat | undefined]>();
349
383
  for (let k = 0; k < queries.length; k++) {
350
384
  if (queries[k] == undefined) {
351
385
  continue;
352
386
  }
353
- let [, pxInfo]: [string[], PriceFeedFormat[]] = await this.fetchPriceQuery(queries[k] + suffixes[k]);
387
+ const { price: pxInfo, emaPrice } = await this.fetchFullPriceQuery(queries[k] + suffixes[k]);
354
388
  let tsSecNow = Math.round(Date.now() / 1000);
355
389
  for (let j = 0; j < pxInfo.length; j++) {
356
390
  let price = decNToFloat(BigInt(pxInfo[j].price), -pxInfo[j].expo);
357
391
  let isMarketClosed = tsSecNow - pxInfo[j].publish_time > this.THRESHOLD_MARKET_CLOSED_SEC;
358
- resultPrices.set(symbolsOfEndpoint[k][j], [price, isMarketClosed]);
392
+ resultPrices.set(symbolsOfEndpoint[k][j], [price, isMarketClosed, pxInfo[j], emaPrice[j]]);
359
393
  }
360
394
  }
361
395
  let onChPxs = await onChainPromise;
362
396
  for (let k = 0; k < onChainSyms.length; k++) {
363
397
  let sym = onChainSyms[k];
364
- resultPrices.set(sym, [onChPxs[k], false]);
398
+ resultPrices.set(sym, [onChPxs[k], false, undefined, undefined]);
365
399
  }
366
400
  let polyPxs = await polyMktsPromise;
367
401
  for (let k = 0; k < polyPxs.length; k++) {
@@ -369,8 +403,8 @@ export default class PriceFeeds {
369
403
  if (polyPxs[k] == undefined) {
370
404
  continue;
371
405
  }
372
- resultPrices.set(sym, [polyPxs[k]!.s2, polyPxs[k]!.s2MktClosed]);
373
- resultPrices.set(sym + ":ema", [polyPxs[k]!.ema, polyPxs[k]!.s2MktClosed]);
406
+ resultPrices.set(sym, [polyPxs[k]!.s2, polyPxs[k]!.s2MktClosed, undefined, undefined]);
407
+ resultPrices.set(sym + ":ema", [polyPxs[k]!.ema, polyPxs[k]!.s2MktClosed, undefined, undefined]);
374
408
  }
375
409
  return resultPrices;
376
410
  }
@@ -595,9 +629,21 @@ export default class PriceFeeds {
595
629
  /**
596
630
  * Queries the REST endpoint and returns parsed price data
597
631
  * @param query query price-info from endpoint
598
- * @returns vaa and price info
632
+ * @returns array of vaa and price info
599
633
  */
600
634
  public async fetchPriceQuery(query: string): Promise<[string[], PriceFeedFormat[]]> {
635
+ const fullResp = await this.fetchFullPriceQuery(query);
636
+ return [fullResp.updateData, fullResp.price];
637
+ }
638
+
639
+ /**
640
+ * Queries the REST endpoint and returns parsed price data
641
+ * @param query query price-info from endpoint
642
+ * @returns object with vaa and price info (both spot and ema)
643
+ */
644
+ public async fetchFullPriceQuery(
645
+ query: string
646
+ ): Promise<{ updateData: string[]; price: PriceFeedFormat[]; emaPrice: PriceFeedFormat[] }> {
601
647
  let values: PythV2LatestPriceFeed;
602
648
  const cached = this.cache.get(query);
603
649
  const tsNow = Date.now() / 1_000;
@@ -615,6 +661,7 @@ export default class PriceFeeds {
615
661
  }
616
662
  const priceFeedUpdates = new Array<string>();
617
663
  const px = new Array<PriceFeedFormat>();
664
+ const emaPx = new Array<PriceFeedFormat>();
618
665
  for (let k = 0; k < values.parsed.length; k++) {
619
666
  // pyth v2 only provides one compressed vaa when querying multiple prices.
620
667
  // contracts can only use separate ones. In case we get only one vaa,
@@ -622,9 +669,9 @@ export default class PriceFeeds {
622
669
  const idx = k % values.binary.data.length;
623
670
  priceFeedUpdates.push("0x" + Buffer.from(values.binary.data[idx], "base64").toString("hex"));
624
671
  px.push(values.parsed[k].price as PriceFeedFormat);
672
+ emaPx.push(values.parsed[k].ema_price as PriceFeedFormat);
625
673
  }
626
-
627
- return [priceFeedUpdates, px];
674
+ return { updateData: priceFeedUpdates, price: px, emaPrice: emaPx };
628
675
  }
629
676
 
630
677
  /**
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const D8X_SDK_VERSION = "2.3.1";
1
+ export const D8X_SDK_VERSION = "2.4.1";
@@ -1 +0,0 @@
1
- {"version":3,"file":"PerpStorage__factory.js","sourceRoot":"","sources":["../../../../src/contracts/factories/PerpStorage__factory.ts"],"names":[],"mappings":"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"}