@d8x/perpetuals-sdk 1.3.7 → 2.0.1-alpha

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 (286) hide show
  1. package/dist/cjs/accountTrade.d.ts +9 -9
  2. package/dist/cjs/accountTrade.js +19 -17
  3. package/dist/cjs/accountTrade.js.map +1 -1
  4. package/dist/cjs/brokerTool.d.ts +11 -12
  5. package/dist/cjs/brokerTool.js +7 -8
  6. package/dist/cjs/brokerTool.js.map +1 -1
  7. package/dist/cjs/config/priceFeedConfig.json +16 -2
  8. package/dist/cjs/config/symbolList.json +2 -1
  9. package/dist/cjs/constants.d.ts +12 -12
  10. package/dist/cjs/constants.js +14 -14
  11. package/dist/cjs/constants.js.map +1 -1
  12. package/dist/cjs/contracts/ERC20.d.ts +146 -171
  13. package/dist/cjs/contracts/IPerpetualManager.d.ts +2534 -2225
  14. package/dist/cjs/contracts/IPyth.d.ts +181 -184
  15. package/dist/cjs/contracts/LimitOrderBook.d.ts +373 -401
  16. package/dist/cjs/contracts/LimitOrderBookBeacon.d.ts +53 -104
  17. package/dist/cjs/contracts/LimitOrderBookFactory.d.ts +129 -185
  18. package/dist/cjs/contracts/MockTokenSwap.d.ts +109 -169
  19. package/dist/cjs/contracts/Multicall3.d.ts +147 -211
  20. package/dist/cjs/contracts/OnDemandOracleUpgradeable.d.ts +342 -399
  21. package/dist/cjs/contracts/OracleFactory.d.ts +258 -238
  22. package/dist/cjs/contracts/PerpetualManagerProxy.d.ts +1099 -891
  23. package/dist/cjs/contracts/RedStoneAbi.d.ts +369 -488
  24. package/dist/cjs/contracts/ShareToken.d.ts +232 -285
  25. package/dist/cjs/contracts/common.d.ts +40 -11
  26. package/dist/cjs/contracts/factories/ERC20__factory.d.ts +2 -3
  27. package/dist/cjs/contracts/factories/ERC20__factory.js +3 -3
  28. package/dist/cjs/contracts/factories/ERC20__factory.js.map +1 -1
  29. package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +2 -3
  30. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +3 -3
  31. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  32. package/dist/cjs/contracts/factories/IPyth__factory.d.ts +2 -3
  33. package/dist/cjs/contracts/factories/IPyth__factory.js +3 -3
  34. package/dist/cjs/contracts/factories/IPyth__factory.js.map +1 -1
  35. package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.d.ts +2 -3
  36. package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.js +3 -3
  37. package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.js.map +1 -1
  38. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.d.ts +2 -3
  39. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js +3 -3
  40. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
  41. package/dist/cjs/contracts/factories/LimitOrderBook__factory.d.ts +2 -3
  42. package/dist/cjs/contracts/factories/LimitOrderBook__factory.js +3 -3
  43. package/dist/cjs/contracts/factories/LimitOrderBook__factory.js.map +1 -1
  44. package/dist/cjs/contracts/factories/MockTokenSwap__factory.d.ts +2 -3
  45. package/dist/cjs/contracts/factories/MockTokenSwap__factory.js +3 -3
  46. package/dist/cjs/contracts/factories/MockTokenSwap__factory.js.map +1 -1
  47. package/dist/cjs/contracts/factories/Multicall3__factory.d.ts +11 -9
  48. package/dist/cjs/contracts/factories/Multicall3__factory.js +7 -10
  49. package/dist/cjs/contracts/factories/Multicall3__factory.js.map +1 -1
  50. package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.d.ts +2 -3
  51. package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.js +3 -3
  52. package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.js.map +1 -1
  53. package/dist/cjs/contracts/factories/OracleFactory__factory.d.ts +2 -3
  54. package/dist/cjs/contracts/factories/OracleFactory__factory.js +3 -3
  55. package/dist/cjs/contracts/factories/OracleFactory__factory.js.map +1 -1
  56. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.d.ts +2 -3
  57. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js +3 -3
  58. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
  59. package/dist/cjs/contracts/factories/RedStoneAbi__factory.d.ts +2 -3
  60. package/dist/cjs/contracts/factories/RedStoneAbi__factory.js +3 -3
  61. package/dist/cjs/contracts/factories/RedStoneAbi__factory.js.map +1 -1
  62. package/dist/cjs/contracts/factories/ShareToken__factory.d.ts +2 -3
  63. package/dist/cjs/contracts/factories/ShareToken__factory.js +3 -3
  64. package/dist/cjs/contracts/factories/ShareToken__factory.js.map +1 -1
  65. package/dist/cjs/d8XMath.d.ts +28 -16
  66. package/dist/cjs/d8XMath.js +70 -50
  67. package/dist/cjs/d8XMath.js.map +1 -1
  68. package/dist/cjs/liquidatorTool.d.ts +8 -8
  69. package/dist/cjs/liquidatorTool.js +5 -7
  70. package/dist/cjs/liquidatorTool.js.map +1 -1
  71. package/dist/cjs/liquidityProviderTool.d.ts +4 -5
  72. package/dist/cjs/liquidityProviderTool.js.map +1 -1
  73. package/dist/cjs/marketData.d.ts +27 -28
  74. package/dist/cjs/marketData.js +65 -69
  75. package/dist/cjs/marketData.js.map +1 -1
  76. package/dist/cjs/nodeSDKTypes.d.ts +35 -37
  77. package/dist/cjs/onChainPxFeed.d.ts +2 -2
  78. package/dist/cjs/onChainPxFeed.js +3 -3
  79. package/dist/cjs/onChainPxFeed.js.map +1 -1
  80. package/dist/cjs/onChainPxFeedAngle.d.ts +2 -2
  81. package/dist/cjs/onChainPxFeedAngle.js +4 -5
  82. package/dist/cjs/onChainPxFeedAngle.js.map +1 -1
  83. package/dist/cjs/onChainPxFeedRedStone.js +2 -2
  84. package/dist/cjs/onChainPxFeedRedStone.js.map +1 -1
  85. package/dist/cjs/orderExecutorTool.d.ts +7 -9
  86. package/dist/cjs/orderExecutorTool.js +52 -62
  87. package/dist/cjs/orderExecutorTool.js.map +1 -1
  88. package/dist/cjs/perpetualDataHandler.d.ts +44 -35
  89. package/dist/cjs/perpetualDataHandler.js +194 -170
  90. package/dist/cjs/perpetualDataHandler.js.map +1 -1
  91. package/dist/cjs/perpetualEventHandler.d.ts +4 -5
  92. package/dist/cjs/perpetualEventHandler.js +2 -2
  93. package/dist/cjs/perpetualEventHandler.js.map +1 -1
  94. package/dist/cjs/polyMktsPxFeed.d.ts +14 -0
  95. package/dist/cjs/polyMktsPxFeed.js +59 -0
  96. package/dist/cjs/polyMktsPxFeed.js.map +1 -0
  97. package/dist/cjs/priceFeeds.d.ts +2 -0
  98. package/dist/cjs/priceFeeds.js +44 -9
  99. package/dist/cjs/priceFeeds.js.map +1 -1
  100. package/dist/cjs/referralCodeSigner.d.ts +1 -1
  101. package/dist/cjs/referralCodeSigner.js +12 -16
  102. package/dist/cjs/referralCodeSigner.js.map +1 -1
  103. package/dist/cjs/traderDigests.d.ts +2 -1
  104. package/dist/cjs/traderDigests.js +9 -11
  105. package/dist/cjs/traderDigests.js.map +1 -1
  106. package/dist/cjs/traderInterface.d.ts +8 -9
  107. package/dist/cjs/traderInterface.js +40 -23
  108. package/dist/cjs/traderInterface.js.map +1 -1
  109. package/dist/cjs/utils.d.ts +2 -3
  110. package/dist/cjs/utils.js +1 -2
  111. package/dist/cjs/utils.js.map +1 -1
  112. package/dist/cjs/version.d.ts +1 -1
  113. package/dist/cjs/version.js +1 -1
  114. package/dist/cjs/version.js.map +1 -1
  115. package/dist/cjs/writeAccessHandler.d.ts +7 -9
  116. package/dist/cjs/writeAccessHandler.js +13 -16
  117. package/dist/cjs/writeAccessHandler.js.map +1 -1
  118. package/dist/esm/accountTrade.d.ts +9 -9
  119. package/dist/esm/accountTrade.js +19 -17
  120. package/dist/esm/accountTrade.js.map +1 -1
  121. package/dist/esm/brokerTool.d.ts +11 -12
  122. package/dist/esm/brokerTool.js +2 -3
  123. package/dist/esm/brokerTool.js.map +1 -1
  124. package/dist/esm/config/priceFeedConfig.json +16 -2
  125. package/dist/esm/config/symbolList.json +2 -1
  126. package/dist/esm/constants.d.ts +12 -12
  127. package/dist/esm/constants.js +13 -13
  128. package/dist/esm/constants.js.map +1 -1
  129. package/dist/esm/contracts/ERC20.d.ts +146 -171
  130. package/dist/esm/contracts/IPerpetualManager.d.ts +2534 -2225
  131. package/dist/esm/contracts/IPyth.d.ts +181 -184
  132. package/dist/esm/contracts/LimitOrderBook.d.ts +373 -401
  133. package/dist/esm/contracts/LimitOrderBookBeacon.d.ts +53 -104
  134. package/dist/esm/contracts/LimitOrderBookFactory.d.ts +129 -185
  135. package/dist/esm/contracts/MockTokenSwap.d.ts +109 -169
  136. package/dist/esm/contracts/Multicall3.d.ts +147 -211
  137. package/dist/esm/contracts/OnDemandOracleUpgradeable.d.ts +342 -399
  138. package/dist/esm/contracts/OracleFactory.d.ts +258 -238
  139. package/dist/esm/contracts/PerpetualManagerProxy.d.ts +1099 -891
  140. package/dist/esm/contracts/RedStoneAbi.d.ts +369 -488
  141. package/dist/esm/contracts/ShareToken.d.ts +232 -285
  142. package/dist/esm/contracts/common.d.ts +40 -11
  143. package/dist/esm/contracts/factories/ERC20__factory.d.ts +2 -3
  144. package/dist/esm/contracts/factories/ERC20__factory.js +4 -4
  145. package/dist/esm/contracts/factories/ERC20__factory.js.map +1 -1
  146. package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +2 -3
  147. package/dist/esm/contracts/factories/IPerpetualManager__factory.js +4 -4
  148. package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  149. package/dist/esm/contracts/factories/IPyth__factory.d.ts +2 -3
  150. package/dist/esm/contracts/factories/IPyth__factory.js +4 -4
  151. package/dist/esm/contracts/factories/IPyth__factory.js.map +1 -1
  152. package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.d.ts +2 -3
  153. package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.js +4 -4
  154. package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.js.map +1 -1
  155. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.d.ts +2 -3
  156. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js +4 -4
  157. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
  158. package/dist/esm/contracts/factories/LimitOrderBook__factory.d.ts +2 -3
  159. package/dist/esm/contracts/factories/LimitOrderBook__factory.js +4 -4
  160. package/dist/esm/contracts/factories/LimitOrderBook__factory.js.map +1 -1
  161. package/dist/esm/contracts/factories/MockTokenSwap__factory.d.ts +2 -3
  162. package/dist/esm/contracts/factories/MockTokenSwap__factory.js +4 -4
  163. package/dist/esm/contracts/factories/MockTokenSwap__factory.js.map +1 -1
  164. package/dist/esm/contracts/factories/Multicall3__factory.d.ts +11 -9
  165. package/dist/esm/contracts/factories/Multicall3__factory.js +8 -11
  166. package/dist/esm/contracts/factories/Multicall3__factory.js.map +1 -1
  167. package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.d.ts +2 -3
  168. package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.js +4 -4
  169. package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.js.map +1 -1
  170. package/dist/esm/contracts/factories/OracleFactory__factory.d.ts +2 -3
  171. package/dist/esm/contracts/factories/OracleFactory__factory.js +4 -4
  172. package/dist/esm/contracts/factories/OracleFactory__factory.js.map +1 -1
  173. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.d.ts +2 -3
  174. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js +4 -4
  175. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
  176. package/dist/esm/contracts/factories/RedStoneAbi__factory.d.ts +2 -3
  177. package/dist/esm/contracts/factories/RedStoneAbi__factory.js +4 -4
  178. package/dist/esm/contracts/factories/RedStoneAbi__factory.js.map +1 -1
  179. package/dist/esm/contracts/factories/ShareToken__factory.d.ts +2 -3
  180. package/dist/esm/contracts/factories/ShareToken__factory.js +4 -4
  181. package/dist/esm/contracts/factories/ShareToken__factory.js.map +1 -1
  182. package/dist/esm/d8XMath.d.ts +28 -16
  183. package/dist/esm/d8XMath.js +67 -49
  184. package/dist/esm/d8XMath.js.map +1 -1
  185. package/dist/esm/liquidatorTool.d.ts +8 -8
  186. package/dist/esm/liquidatorTool.js +5 -7
  187. package/dist/esm/liquidatorTool.js.map +1 -1
  188. package/dist/esm/liquidityProviderTool.d.ts +4 -5
  189. package/dist/esm/liquidityProviderTool.js.map +1 -1
  190. package/dist/esm/marketData.d.ts +27 -28
  191. package/dist/esm/marketData.js +55 -59
  192. package/dist/esm/marketData.js.map +1 -1
  193. package/dist/esm/nodeSDKTypes.d.ts +35 -37
  194. package/dist/esm/onChainPxFeed.d.ts +2 -2
  195. package/dist/esm/onChainPxFeed.js +3 -3
  196. package/dist/esm/onChainPxFeed.js.map +1 -1
  197. package/dist/esm/onChainPxFeedAngle.d.ts +2 -2
  198. package/dist/esm/onChainPxFeedAngle.js +2 -3
  199. package/dist/esm/onChainPxFeedAngle.js.map +1 -1
  200. package/dist/esm/onChainPxFeedRedStone.js +1 -1
  201. package/dist/esm/onChainPxFeedRedStone.js.map +1 -1
  202. package/dist/esm/orderExecutorTool.d.ts +7 -9
  203. package/dist/esm/orderExecutorTool.js +38 -48
  204. package/dist/esm/orderExecutorTool.js.map +1 -1
  205. package/dist/esm/perpetualDataHandler.d.ts +44 -35
  206. package/dist/esm/perpetualDataHandler.js +137 -113
  207. package/dist/esm/perpetualDataHandler.js.map +1 -1
  208. package/dist/esm/perpetualEventHandler.d.ts +4 -5
  209. package/dist/esm/perpetualEventHandler.js +2 -2
  210. package/dist/esm/perpetualEventHandler.js.map +1 -1
  211. package/dist/esm/polyMktsPxFeed.d.ts +14 -0
  212. package/dist/esm/polyMktsPxFeed.js +56 -0
  213. package/dist/esm/polyMktsPxFeed.js.map +1 -0
  214. package/dist/esm/priceFeeds.d.ts +2 -0
  215. package/dist/esm/priceFeeds.js +44 -9
  216. package/dist/esm/priceFeeds.js.map +1 -1
  217. package/dist/esm/referralCodeSigner.d.ts +1 -1
  218. package/dist/esm/referralCodeSigner.js +6 -10
  219. package/dist/esm/referralCodeSigner.js.map +1 -1
  220. package/dist/esm/traderDigests.d.ts +2 -1
  221. package/dist/esm/traderDigests.js +2 -4
  222. package/dist/esm/traderDigests.js.map +1 -1
  223. package/dist/esm/traderInterface.d.ts +8 -9
  224. package/dist/esm/traderInterface.js +42 -25
  225. package/dist/esm/traderInterface.js.map +1 -1
  226. package/dist/esm/utils.d.ts +2 -3
  227. package/dist/esm/utils.js +1 -2
  228. package/dist/esm/utils.js.map +1 -1
  229. package/dist/esm/version.d.ts +1 -1
  230. package/dist/esm/version.js +1 -1
  231. package/dist/esm/version.js.map +1 -1
  232. package/dist/esm/writeAccessHandler.d.ts +7 -9
  233. package/dist/esm/writeAccessHandler.js +5 -8
  234. package/dist/esm/writeAccessHandler.js.map +1 -1
  235. package/package.json +7 -17
  236. package/src/accountTrade.ts +32 -34
  237. package/src/brokerTool.ts +17 -20
  238. package/src/config/priceFeedConfig.json +16 -2
  239. package/src/config/symbolList.json +2 -1
  240. package/src/constants.ts +13 -13
  241. package/src/contracts/ERC20.ts +236 -350
  242. package/src/contracts/IPerpetualManager.ts +3359 -5050
  243. package/src/contracts/IPyth.ts +272 -409
  244. package/src/contracts/LimitOrderBook.ts +503 -779
  245. package/src/contracts/LimitOrderBookBeacon.ts +123 -171
  246. package/src/contracts/LimitOrderBookFactory.ts +263 -332
  247. package/src/contracts/MockTokenSwap.ts +237 -275
  248. package/src/contracts/Multicall3.ts +208 -374
  249. package/src/contracts/OnDemandOracleUpgradeable.ts +569 -782
  250. package/src/contracts/OracleFactory.ts +410 -538
  251. package/src/contracts/PerpetualManagerProxy.ts +1898 -1426
  252. package/src/contracts/RedStoneAbi.ts +486 -986
  253. package/src/contracts/ShareToken.ts +376 -557
  254. package/src/contracts/common.ts +108 -21
  255. package/src/contracts/factories/ERC20__factory.ts +4 -5
  256. package/src/contracts/factories/IPerpetualManager__factory.ts +4 -5
  257. package/src/contracts/factories/IPyth__factory.ts +4 -5
  258. package/src/contracts/factories/LimitOrderBookBeacon__factory.ts +5 -6
  259. package/src/contracts/factories/LimitOrderBookFactory__factory.ts +5 -6
  260. package/src/contracts/factories/LimitOrderBook__factory.ts +4 -5
  261. package/src/contracts/factories/MockTokenSwap__factory.ts +4 -5
  262. package/src/contracts/factories/Multicall3__factory.ts +21 -19
  263. package/src/contracts/factories/OnDemandOracleUpgradeable__factory.ts +5 -6
  264. package/src/contracts/factories/OracleFactory__factory.ts +4 -5
  265. package/src/contracts/factories/PerpetualManagerProxy__factory.ts +5 -6
  266. package/src/contracts/factories/RedStoneAbi__factory.ts +4 -8
  267. package/src/contracts/factories/ShareToken__factory.ts +4 -8
  268. package/src/d8XMath.ts +78 -57
  269. package/src/liquidatorTool.ts +12 -15
  270. package/src/liquidityProviderTool.ts +7 -5
  271. package/src/marketData.ts +110 -121
  272. package/src/nodeSDKTypes.ts +51 -38
  273. package/src/onChainPxFeed.ts +4 -4
  274. package/src/onChainPxFeedAngle.ts +5 -7
  275. package/src/onChainPxFeedRedStone.ts +1 -3
  276. package/src/orderExecutorTool.ts +100 -108
  277. package/src/perpetualDataHandler.ts +209 -172
  278. package/src/perpetualEventHandler.ts +16 -17
  279. package/src/polyMktsPxFeed.ts +71 -0
  280. package/src/priceFeeds.ts +46 -10
  281. package/src/referralCodeSigner.ts +6 -10
  282. package/src/traderDigests.ts +8 -5
  283. package/src/traderInterface.ts +61 -33
  284. package/src/utils.ts +3 -4
  285. package/src/version.ts +1 -1
  286. package/src/writeAccessHandler.ts +26 -17
@@ -3,14 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const abi_1 = require("@ethersproject/abi");
7
- const abstract_signer_1 = require("@ethersproject/abstract-signer");
8
- const bignumber_1 = require("@ethersproject/bignumber");
9
- const constants_1 = require("@ethersproject/constants");
10
- const contracts_1 = require("@ethersproject/contracts");
11
- const providers_1 = require("@ethersproject/providers");
12
- const constants_2 = require("./constants");
13
- const contracts_2 = require("./contracts");
6
+ const ethers_1 = require("ethers");
7
+ const constants_1 = require("./constants");
8
+ const contracts_1 = require("./contracts");
14
9
  const d8XMath_1 = require("./d8XMath");
15
10
  const priceFeeds_1 = __importDefault(require("./priceFeeds"));
16
11
  const utils_1 = require("./utils");
@@ -40,14 +35,15 @@ class PerpetualDataHandler {
40
35
  this.symbolToTokenAddrMap = new Map();
41
36
  this.perpetualIdToSymbol = new Map();
42
37
  this.nestedPerpetualIDs = new Array();
43
- this.chainId = config.chainId;
38
+ this.chainId = BigInt(config.chainId);
39
+ this.network = new ethers_1.Network(config.name || "", this.chainId);
44
40
  this.proxyAddr = config.proxyAddr;
45
41
  this.nodeURL = config.nodeURL;
46
42
  this.proxyABI = config.proxyABI;
47
43
  this.lobFactoryABI = config.lobFactoryABI;
48
44
  this.lobABI = config.lobABI;
49
45
  this.shareTokenABI = config.shareTokenABI;
50
- this.symbolList = constants_2.SYMBOL_LIST;
46
+ this.symbolList = constants_1.SYMBOL_LIST;
51
47
  this.priceFeedGetter = new priceFeeds_1.default(this, config.priceFeedConfigNetwork);
52
48
  }
53
49
  async initContractsAndData(signerOrProvider, overrides) {
@@ -55,11 +51,11 @@ class PerpetualDataHandler {
55
51
  // check network
56
52
  let network;
57
53
  try {
58
- if (signerOrProvider instanceof abstract_signer_1.Signer) {
54
+ if (signerOrProvider.provider) {
59
55
  network = await signerOrProvider.provider.getNetwork();
60
56
  }
61
57
  else {
62
- network = await signerOrProvider.getNetwork();
58
+ throw new Error("Signer has no provider"); // TODO: check
63
59
  }
64
60
  }
65
61
  catch (error) {
@@ -69,8 +65,8 @@ class PerpetualDataHandler {
69
65
  if (network.chainId !== this.chainId) {
70
66
  throw new Error(`Provider: chain id ${network.chainId} does not match config (${this.chainId})`);
71
67
  }
72
- this.proxyContract = new contracts_1.Contract(this.proxyAddr, this.config.proxyABI, signerOrProvider);
73
- this.multicall = contracts_2.Multicall3__factory.connect(this.config.multicall ?? constants_2.MULTICALL_ADDRESS, this.signerOrProvider);
68
+ this.proxyContract = new ethers_1.Contract(this.proxyAddr, this.config.proxyABI, signerOrProvider);
69
+ this.multicall = contracts_1.Multicall3__factory.connect(this.config.multicall ?? constants_1.MULTICALL_ADDRESS, this.signerOrProvider);
74
70
  await this._fillSymbolMaps(overrides);
75
71
  }
76
72
  /**
@@ -78,14 +74,22 @@ class PerpetualDataHandler {
78
74
  * @param symbol symbol of the form ETH-USD-MATIC
79
75
  * @returns order book contract for the perpetual
80
76
  */
81
- getOrderBookContract(symbol, provider) {
77
+ getOrderBookContract(symbol, signerOrProvider) {
82
78
  let orderBookAddr = this.symbolToPerpStaticInfo.get(symbol)?.limitOrderBookAddr;
83
- if (orderBookAddr == "" || orderBookAddr == undefined || this.signerOrProvider == null) {
79
+ if (orderBookAddr == "" || orderBookAddr == undefined) {
84
80
  throw Error(`no limit order book found for ${symbol} or no signer`);
85
81
  }
86
- let lobContract = contracts_2.LimitOrderBook__factory.connect(orderBookAddr, provider ?? this.signerOrProvider);
82
+ let lobContract = contracts_1.LimitOrderBook__factory.connect(orderBookAddr, signerOrProvider ?? this.signerOrProvider);
87
83
  return lobContract;
88
84
  }
85
+ /**
86
+ * Returns the order-book contract for the symbol if found or fails
87
+ * @param symbol symbol of the form ETH-USD-MATIC
88
+ * @returns order book contract for the perpetual
89
+ */
90
+ getOrderBookAddress(symbol) {
91
+ return this.symbolToPerpStaticInfo.get(symbol)?.limitOrderBookAddr;
92
+ }
89
93
  /**
90
94
  * Get perpetuals for the given ids from onchain
91
95
  * @param ids perpetual ids
@@ -123,7 +127,7 @@ class PerpetualDataHandler {
123
127
  const tokenOverrides = require("./config/tokenOverrides.json");
124
128
  let poolInfo = await PerpetualDataHandler.getPoolStaticInfo(this.proxyContract, overrides);
125
129
  this.nestedPerpetualIDs = poolInfo.nestedPerpetualIDs;
126
- const IERC20 = new abi_1.Interface(constants_2.ERC20_ABI);
130
+ const IERC20 = contracts_1.ERC20__factory.createInterface();
127
131
  const proxyCalls = poolInfo.poolMarginTokenAddr.map((tokenAddr) => ({
128
132
  target: tokenAddr,
129
133
  allowFailure: false,
@@ -140,7 +144,7 @@ class PerpetualDataHandler {
140
144
  callData: this.proxyContract.interface.encodeFunctionData("getOracleFactory"),
141
145
  });
142
146
  // multicall
143
- const encodedResults = await this.multicall.callStatic.aggregate3(proxyCalls, overrides || {});
147
+ const encodedResults = await this.multicall.aggregate3.staticCall(proxyCalls, overrides || {});
144
148
  // decimals
145
149
  for (let j = 0; j < poolInfo.nestedPerpetualIDs.length; j++) {
146
150
  const decimals = IERC20.decodeFunctionResult("decimals", encodedResults[j].returnData)[0];
@@ -148,26 +152,26 @@ class PerpetualDataHandler {
148
152
  poolId: j + 1,
149
153
  poolMarginSymbol: "",
150
154
  poolMarginTokenAddr: poolInfo.poolMarginTokenAddr[j],
151
- poolMarginTokenDecimals: decimals,
155
+ poolMarginTokenDecimals: Number(decimals),
152
156
  poolSettleSymbol: "",
153
157
  poolSettleTokenAddr: poolInfo.poolMarginTokenAddr[j],
154
- poolSettleTokenDecimals: decimals,
158
+ poolSettleTokenDecimals: Number(decimals),
155
159
  shareTokenAddr: poolInfo.poolShareTokenAddr[j],
156
160
  oracleFactoryAddr: poolInfo.oracleFactory,
157
- isRunning: poolInfo.poolShareTokenAddr[j] != constants_1.AddressZero,
161
+ isRunning: poolInfo.poolShareTokenAddr[j] != ethers_1.ZeroAddress,
158
162
  MgnToSettleTriangulation: ["*", "1"], // correct later
159
163
  };
160
164
  this.poolStaticInfos.push(info);
161
165
  }
162
166
  //pyth
163
- const oracle = contracts_2.OracleFactory__factory.connect(poolInfo.oracleFactory, this.signerOrProvider);
167
+ const oracle = contracts_1.OracleFactory__factory.connect(poolInfo.oracleFactory, this.signerOrProvider);
164
168
  this.pythAddr = await oracle.pyth();
165
- if (this.pythAddr == constants_2.ZERO_ADDRESS) {
169
+ if (this.pythAddr == constants_1.ZERO_ADDRESS) {
166
170
  this.pythAddr = await oracle.onDemandFeed();
167
171
  }
168
172
  // order book factory
169
173
  this.lobFactoryAddr = this.proxyContract.interface.decodeFunctionResult("getOrderBookFactoryAddress", encodedResults[encodedResults.length - 2].returnData)[0];
170
- this.lobFactoryContract = contracts_2.LimitOrderBookFactory__factory.connect(this.lobFactoryAddr, this.signerOrProvider);
174
+ this.lobFactoryContract = contracts_1.LimitOrderBookFactory__factory.connect(this.lobFactoryAddr, this.signerOrProvider);
171
175
  // oracle factory
172
176
  this.oraclefactoryAddr = this.proxyContract.interface.decodeFunctionResult("getOracleFactory", encodedResults[encodedResults.length - 1].returnData)[0];
173
177
  let perpStaticInfos = await PerpetualDataHandler.getPerpetualStaticInfo(this.proxyContract, this.nestedPerpetualIDs, this.symbolList, overrides);
@@ -194,10 +198,10 @@ class PerpetualDataHandler {
194
198
  const base3 = perp.S3Symbol.split("-")[0];
195
199
  // we find out the pool currency by looking at all perpetuals
196
200
  // from the perpetual.
197
- if (perp.collateralCurrencyType == constants_2.COLLATERAL_CURRENCY_BASE) {
201
+ if (perp.collateralCurrencyType == constants_1.COLLATERAL_CURRENCY_BASE) {
198
202
  poolCCY = base;
199
203
  }
200
- else if (perp.collateralCurrencyType == constants_2.COLLATERAL_CURRENCY_QUOTE) {
204
+ else if (perp.collateralCurrencyType == constants_1.COLLATERAL_CURRENCY_QUOTE) {
201
205
  poolCCY = quote;
202
206
  }
203
207
  else {
@@ -250,14 +254,12 @@ class PerpetualDataHandler {
250
254
  currPoolId = poolId;
251
255
  // We only assume the flag to be correct
252
256
  // in the first perpetual of the pool
253
- const flag = perpStaticInfos[j].perpFlags == undefined
254
- ? bignumber_1.BigNumber.from(0)
255
- : bignumber_1.BigNumber.from(perpStaticInfos[j].perpFlags.toString());
257
+ const flag = perpStaticInfos[j].perpFlags == undefined ? 0n : BigInt(perpStaticInfos[j].perpFlags.toString());
256
258
  // find settlement setting for this flag
257
259
  let s = undefined;
258
260
  for (let j = 0; j < this.settlementConfig.length; j++) {
259
- const masked = flag.and(bignumber_1.BigNumber.from(this.settlementConfig[j].perpFlags.toString()));
260
- if (!masked.isZero()) {
261
+ const masked = flag & BigInt(this.settlementConfig[j].perpFlags.toString());
262
+ if (masked != 0n) {
261
263
  s = this.settlementConfig[j];
262
264
  break;
263
265
  }
@@ -456,7 +458,7 @@ class PerpetualDataHandler {
456
458
  // query blockchain in chunks
457
459
  const infoArr = new Array();
458
460
  for (let k = 0; k < ids.length; k++) {
459
- let perpInfos = await _proxyContract.getPerpetualStaticInfo(ids[k], overrides || {});
461
+ let perpInfos = (await _proxyContract.getPerpetualStaticInfo(ids[k], overrides || {}));
460
462
  for (let j = 0; j < perpInfos.length; j++) {
461
463
  let base = (0, utils_1.contractSymbolToSymbol)(perpInfos[j].S2BaseCCY, symbolList);
462
464
  let quote = (0, utils_1.contractSymbolToSymbol)(perpInfos[j].S2QuoteCCY, symbolList);
@@ -465,19 +467,19 @@ class PerpetualDataHandler {
465
467
  let sym2 = base + "-" + quote;
466
468
  let sym3 = base3 == "" ? "" : base3 + "-" + quote3;
467
469
  let info = {
468
- id: perpInfos[j].id,
469
- poolId: Math.floor(perpInfos[j].id / 100000),
470
+ id: Number(perpInfos[j].id),
471
+ poolId: Math.floor(Number(perpInfos[j].id) / 100000),
470
472
  limitOrderBookAddr: perpInfos[j].limitOrderBookAddr,
471
473
  initialMarginRate: (0, d8XMath_1.ABDK29ToFloat)(perpInfos[j].fInitialMarginRate),
472
474
  maintenanceMarginRate: (0, d8XMath_1.ABDK29ToFloat)(perpInfos[j].fMaintenanceMarginRate),
473
- collateralCurrencyType: perpInfos[j].collCurrencyType,
475
+ collateralCurrencyType: Number(perpInfos[j].collCurrencyType),
474
476
  S2Symbol: sym2,
475
477
  S3Symbol: sym3,
476
478
  lotSizeBC: (0, d8XMath_1.ABK64x64ToFloat)(perpInfos[j].fLotSizeBC),
477
479
  referralRebate: (0, d8XMath_1.ABK64x64ToFloat)(perpInfos[j].fReferralRebateCC),
478
480
  priceIds: perpInfos[j].priceIds,
479
481
  isPyth: perpInfos[j].isPyth,
480
- perpFlags: perpInfos[j].perpFlags,
482
+ perpFlags: BigInt(perpInfos[j].perpFlags.toString()),
481
483
  };
482
484
  infoArr.push(info);
483
485
  }
@@ -528,22 +530,22 @@ class PerpetualDataHandler {
528
530
  isRunning: orig.isRunning,
529
531
  iPerpetualCount: Number(orig.iPerpetualCount),
530
532
  id: Number(orig.id),
531
- fCeilPnLShare: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fCeilPnLShare)),
533
+ fCeilPnLShare: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fCeilPnLShare)),
532
534
  marginTokenDecimals: Number(orig.marginTokenDecimals),
533
535
  iTargetPoolSizeUpdateTime: Number(orig.iTargetPoolSizeUpdateTime),
534
536
  marginTokenAddress: orig.marginTokenAddress,
535
537
  prevAnchor: Number(orig.prevAnchor),
536
- fRedemptionRate: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fRedemptionRate)),
538
+ fRedemptionRate: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fRedemptionRate)),
537
539
  shareTokenAddress: orig.shareTokenAddress,
538
- fPnLparticipantsCashCC: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fPnLparticipantsCashCC)),
539
- fTargetAMMFundSize: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fTargetAMMFundSize)),
540
- fDefaultFundCashCC: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fDefaultFundCashCC)),
541
- fTargetDFSize: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fTargetDFSize)),
542
- fBrokerCollateralLotSize: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fBrokerCollateralLotSize)),
543
- prevTokenAmount: (0, d8XMath_1.dec18ToFloat)(bignumber_1.BigNumber.from(orig.prevTokenAmount)),
544
- nextTokenAmount: (0, d8XMath_1.dec18ToFloat)(bignumber_1.BigNumber.from(orig.nextTokenAmount)),
545
- totalSupplyShareToken: (0, d8XMath_1.dec18ToFloat)(bignumber_1.BigNumber.from(orig.totalSupplyShareToken)),
546
- fBrokerFundCashCC: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fBrokerFundCashCC)), // state: amount of cash in broker fund
540
+ fPnLparticipantsCashCC: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fPnLparticipantsCashCC)),
541
+ fTargetAMMFundSize: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fTargetAMMFundSize)),
542
+ fDefaultFundCashCC: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fDefaultFundCashCC)),
543
+ fTargetDFSize: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fTargetDFSize)),
544
+ fBrokerCollateralLotSize: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fBrokerCollateralLotSize)),
545
+ prevTokenAmount: (0, d8XMath_1.dec18ToFloat)(BigInt(orig.prevTokenAmount)),
546
+ nextTokenAmount: (0, d8XMath_1.dec18ToFloat)(BigInt(orig.nextTokenAmount)),
547
+ totalSupplyShareToken: (0, d8XMath_1.dec18ToFloat)(BigInt(orig.totalSupplyShareToken)),
548
+ fBrokerFundCashCC: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fBrokerFundCashCC)), // state: amount of cash in broker fund
547
549
  };
548
550
  p.push(v);
549
551
  }
@@ -558,6 +560,7 @@ class PerpetualDataHandler {
558
560
  * @returns array of PerpetualData converted into decimals
559
561
  */
560
562
  static async _getPerpetuals(ids, _proxyContract, _symbolList, overrides) {
563
+ // TODO: can't be type safe here because proxyContract's abi is not static across chains (zkevm is the exception)
561
564
  const rawPerps = await _proxyContract.getPerpetuals(ids, overrides || {});
562
565
  let p = new Array();
563
566
  for (let k = 0; k < rawPerps.length; k++) {
@@ -570,7 +573,7 @@ class PerpetualDataHandler {
570
573
  iLastFundingTime: Number(orig.iLastFundingTime),
571
574
  fDFCoverNRate: (0, d8XMath_1.ABDK29ToFloat)(Number(orig.fDFCoverNRate)),
572
575
  fMaintenanceMarginRate: (0, d8XMath_1.ABDK29ToFloat)(Number(orig.fMaintenanceMarginRate)),
573
- perpetualState: constants_2.PERP_STATE_STR[Number(orig.state)],
576
+ perpetualState: constants_1.PERP_STATE_STR[Number(orig.state)],
574
577
  eCollateralCurrency: Number(orig.eCollateralCurrency),
575
578
  S2BaseCCY: (0, utils_1.contractSymbolToSymbol)((0, utils_1.fromBytes4)(Buffer.from(orig.S2BaseCCY.toString())), _symbolList),
576
579
  S2QuoteCCY: (0, utils_1.contractSymbolToSymbol)((0, utils_1.fromBytes4)(Buffer.from(orig.S2QuoteCCY.toString())), _symbolList),
@@ -581,44 +584,41 @@ class PerpetualDataHandler {
581
584
  fSigma3: (0, d8XMath_1.ABDK29ToFloat)(Number(orig.fSigma3)),
582
585
  fRho23: (0, d8XMath_1.ABDK29ToFloat)(Number(orig.fRho23)),
583
586
  liquidationPenaltyRateBps: Number(orig.liquidationPenaltyRateTbps) / 10,
584
- currentMarkPremiumRatePrice: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.currentMarkPremiumRate.fPrice)),
587
+ currentMarkPremiumRatePrice: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.currentMarkPremiumRate.fPrice)),
585
588
  currentMarkPremiumRateTime: Number(orig.currentMarkPremiumRate.time),
586
- premiumRatesEMA: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.premiumRatesEMA)),
587
- fUnitAccumulatedFunding: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fUnitAccumulatedFunding)),
588
- fOpenInterest: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fOpenInterest)),
589
- fTargetAMMFundSize: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fTargetAMMFundSize)),
590
- fCurrentTraderExposureEMA: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fCurrentTraderExposureEMA)),
591
- fCurrentFundingRate: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fCurrentFundingRate)),
592
- fLotSizeBC: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fLotSizeBC)),
593
- fReferralRebateCC: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fReferralRebateCC)),
594
- fTargetDFSize: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fTargetDFSize)),
595
- fkStar: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fkStar)),
596
- fAMMTargetDD: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fAMMTargetDD)),
589
+ premiumRatesEMA: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.premiumRatesEMA)),
590
+ fUnitAccumulatedFunding: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fUnitAccumulatedFunding)),
591
+ fOpenInterest: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fOpenInterest)),
592
+ fTargetAMMFundSize: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fTargetAMMFundSize)),
593
+ fCurrentTraderExposureEMA: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fCurrentTraderExposureEMA)),
594
+ fCurrentFundingRate: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fCurrentFundingRate)),
595
+ fLotSizeBC: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fLotSizeBC)),
596
+ fReferralRebateCC: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fReferralRebateCC)),
597
+ fTargetDFSize: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fTargetDFSize)),
598
+ fkStar: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fkStar)),
599
+ fAMMTargetDD: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fAMMTargetDD)),
597
600
  perpFlags: Number(orig.perpFlags?.toString()),
598
- fMinimalTraderExposureEMA: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fMinimalTraderExposureEMA)),
599
- fMinimalAMMExposureEMA: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fMinimalAMMExposureEMA)),
600
- fSettlementS3PriceData: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fSettlementS3PriceData)),
601
- fSettlementS2PriceData: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fSettlementS2PriceData)),
602
- fTotalMarginBalance: (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fTotalMarginBalance)),
601
+ fMinimalTraderExposureEMA: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fMinimalTraderExposureEMA)),
602
+ fMinimalAMMExposureEMA: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fMinimalAMMExposureEMA)),
603
+ fSettlementS3PriceData: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fSettlementS3PriceData)),
604
+ fSettlementS2PriceData: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fSettlementS2PriceData)),
605
+ fTotalMarginBalance: (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fTotalMarginBalance)),
603
606
  fMarkPriceEMALambda: (0, d8XMath_1.ABK64x64ToFloat)(Number(orig.fMarkPriceEMALambda)),
604
607
  fFundingRateClamp: (0, d8XMath_1.ABK64x64ToFloat)(Number(orig.fFundingRateClamp)),
605
608
  fMaximalTradeSizeBumpUp: (0, d8XMath_1.ABK64x64ToFloat)(Number(orig.fMaximalTradeSizeBumpUp)),
606
609
  iLastTargetPoolSizeTime: Number(orig.iLastTargetPoolSizeTime),
607
610
  fStressReturnS3: [
608
- (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fStressReturnS3[0])),
609
- (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fStressReturnS3[1])),
610
- ],
611
- fDFLambda: [
612
- (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fDFLambda[0])),
613
- (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fDFLambda[1])),
611
+ (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fStressReturnS3[0])),
612
+ (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fStressReturnS3[1])),
614
613
  ],
614
+ fDFLambda: [(0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fDFLambda[0])), (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fDFLambda[1]))],
615
615
  fCurrentAMMExposureEMA: [
616
- (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fCurrentAMMExposureEMA[0])),
617
- (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fCurrentAMMExposureEMA[1])),
616
+ (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fCurrentAMMExposureEMA[0])),
617
+ (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fCurrentAMMExposureEMA[1])),
618
618
  ],
619
619
  fStressReturnS2: [
620
- (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fStressReturnS2[0])),
621
- (0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(orig.fStressReturnS2[1])),
620
+ (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fStressReturnS2[0])),
621
+ (0, d8XMath_1.ABK64x64ToFloat)(BigInt(orig.fStressReturnS2[1])),
622
622
  ], // parameter: negative and positive stress returns for base-quote asset
623
623
  };
624
624
  p.push(v);
@@ -634,9 +634,11 @@ class PerpetualDataHandler {
634
634
  let poolMarginTokenAddr = [];
635
635
  let oracleFactory = "";
636
636
  while (lenReceived == len) {
637
- let res = await _proxyContract.getPoolStaticInfo(idxFrom, idxFrom + len - 1, overrides || {});
637
+ const res = (await _proxyContract.getPoolStaticInfo(idxFrom, idxFrom + len - 1, overrides || {}));
638
638
  lenReceived = res.length;
639
- nestedPerpetualIDs = nestedPerpetualIDs.concat(res[0]);
639
+ const nestedIds = res[0].map((ids) => ids.map((id) => Number(id)));
640
+ nestedPerpetualIDs = nestedPerpetualIDs.concat(nestedIds);
641
+ // TODO: this looks like a bug if num pools > 10 --- concat?
640
642
  poolShareTokenAddr = res[1];
641
643
  poolMarginTokenAddr = res[2];
642
644
  oracleFactory = res[3];
@@ -656,22 +658,22 @@ class PerpetualDataHandler {
656
658
  const idx_mark_price = 8;
657
659
  const idx_lvg = 7;
658
660
  const idx_s3 = 9;
659
- let isEmpty = traderState[idx_notional].eq(0);
661
+ let isEmpty = traderState[idx_notional] == 0n;
660
662
  let cash = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_cash]);
661
- let S2Liq = 0, S3Liq = 0, tau = Infinity, pnl = 0, unpaidFundingCC = 0, fLockedIn = bignumber_1.BigNumber.from(0), side = constants_2.CLOSED_SIDE, entryPrice = 0;
663
+ let S2Liq = 0, S3Liq = 0, tau = Infinity, pnl = 0, unpaidFundingCC = 0, fLockedIn = BigInt(0), side = constants_1.CLOSED_SIDE, entryPrice = 0;
662
664
  if (!isEmpty) {
663
665
  [S2Liq, S3Liq, tau, pnl, unpaidFundingCC] = PerpetualDataHandler._calculateLiquidationPrice(symbol, traderState, _pxS2S3[0], symbolToPerpStaticInfo);
664
666
  fLockedIn = traderState[idx_locked_in];
665
- side = traderState[idx_notional].gt(0) ? constants_2.BUY_SIDE : constants_2.SELL_SIDE;
666
- entryPrice = (0, d8XMath_1.ABK64x64ToFloat)((0, d8XMath_1.div64x64)(fLockedIn, traderState[idx_notional]).abs());
667
+ side = traderState[idx_notional] > 0n ? constants_1.BUY_SIDE : constants_1.SELL_SIDE;
668
+ entryPrice = Math.abs((0, d8XMath_1.ABK64x64ToFloat)((0, d8XMath_1.div64x64)(fLockedIn, traderState[idx_notional])));
667
669
  }
668
670
  let mgn = {
669
671
  symbol: symbol,
670
- positionNotionalBaseCCY: isEmpty ? 0 : (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_notional].abs()),
671
- side: isEmpty ? constants_2.CLOSED_SIDE : side,
672
+ positionNotionalBaseCCY: isEmpty ? 0 : Math.abs((0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_notional])),
673
+ side: isEmpty ? constants_1.CLOSED_SIDE : side,
672
674
  entryPrice: isEmpty ? 0 : entryPrice,
673
675
  leverage: isEmpty ? 0 : (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_lvg]),
674
- markPrice: (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_mark_price].abs()),
676
+ markPrice: Math.abs((0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_mark_price])),
675
677
  unrealizedPnlQuoteCCY: isEmpty ? 0 : pnl,
676
678
  unrealizedFundingCollateralCCY: isEmpty ? 0 : unpaidFundingCC,
677
679
  collateralCC: cash,
@@ -731,7 +733,7 @@ class PerpetualDataHandler {
731
733
  break;
732
734
  }
733
735
  const curIds = new Set(orderBundles[1]);
734
- for (let k = 0; k < res[0].length && res[2][k] !== constants_2.ZERO_ADDRESS; k++) {
736
+ for (let k = 0; k < res[0].length && res[2][k] !== constants_1.ZERO_ADDRESS; k++) {
735
737
  if (!curIds.has(res[1][k])) {
736
738
  orderBundles[0].push(res[0][k]);
737
739
  orderBundles[1].push(res[1][k]);
@@ -771,7 +773,7 @@ class PerpetualDataHandler {
771
773
  if (overrides) {
772
774
  ({ rpcURL, ...overrides } = overrides);
773
775
  }
774
- const provider = new providers_1.StaticJsonRpcProvider(rpcURL ?? this.nodeURL);
776
+ const provider = new ethers_1.JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, {});
775
777
  const orderBookSC = this.getOrderBookContract(symbol).connect(provider);
776
778
  let numOrders = await orderBookSC.orderCount(overrides || {});
777
779
  return Number(numOrders);
@@ -807,22 +809,22 @@ class PerpetualDataHandler {
807
809
  if (overrides) {
808
810
  ({ rpcURL, ...overrides } = overrides);
809
811
  }
810
- const provider = new providers_1.StaticJsonRpcProvider(rpcURL ?? this.nodeURL);
812
+ const provider = new ethers_1.JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
811
813
  const orderBookSC = this.getOrderBookContract(symbol).connect(provider);
812
- const multicall = contracts_2.Multicall3__factory.connect(this.config.multicall ?? constants_2.MULTICALL_ADDRESS, provider);
813
- if (typeof startAfter === "undefined") {
814
- startAfter = constants_2.ZERO_ORDER_ID;
814
+ const multicall = contracts_1.Multicall3__factory.connect(this.config.multicall ?? constants_1.MULTICALL_ADDRESS, provider);
815
+ if (startAfter == undefined) {
816
+ startAfter = constants_1.ZERO_ORDER_ID;
815
817
  }
816
818
  else if (typeof startAfter === "string") {
817
819
  startAfter = 0; // TODO: fix
818
820
  }
819
821
  // first get client orders (incl. dependency info)
820
- let [orders, orderIds] = await orderBookSC.pollRange(startAfter, bignumber_1.BigNumber.from(numElements), overrides || {});
822
+ let [orders, orderIds] = await orderBookSC.pollRange(startAfter, numElements, overrides || {});
821
823
  let userFriendlyOrders = new Array();
822
824
  let traderAddr = [];
823
825
  let orderIdsOut = [];
824
826
  let k = 0;
825
- while (k < numElements && k < orders.length && orders[k].traderAddr !== constants_2.ZERO_ADDRESS) {
827
+ while (k < numElements && k < orders.length && orders[k].traderAddr !== constants_1.ZERO_ADDRESS) {
826
828
  userFriendlyOrders.push(PerpetualDataHandler.fromClientOrder(orders[k], this.symbolToPerpStaticInfo));
827
829
  orderIdsOut.push(orderIds[k]);
828
830
  traderAddr.push(orders[k].traderAddr);
@@ -830,11 +832,11 @@ class PerpetualDataHandler {
830
832
  }
831
833
  // then get perp orders (incl. submitted ts info)
832
834
  const multicalls = orderIdsOut.map((id) => ({
833
- target: orderBookSC.address,
835
+ target: orderBookSC.target,
834
836
  allowFailure: true,
835
837
  callData: orderBookSC.interface.encodeFunctionData("orderOfDigest", [id]),
836
838
  }));
837
- const encodedResults = await multicall.callStatic.aggregate3(multicalls, overrides || {});
839
+ const encodedResults = await multicall.aggregate3.staticCall(multicalls, overrides || {});
838
840
  // order status
839
841
  encodedResults.map((res, k) => {
840
842
  if (res.success) {
@@ -862,7 +864,7 @@ class PerpetualDataHandler {
862
864
  throw new Error("traderAddr, symbol and pxS2S3 should all have the same length");
863
865
  }
864
866
  const proxyCalls = traderAddrs.map((_addr, i) => ({
865
- target: _proxyContract.address,
867
+ target: _proxyContract.target,
866
868
  allowFailure: true,
867
869
  callData: _proxyContract.interface.encodeFunctionData("getTraderState", [
868
870
  PerpetualDataHandler.symbolToPerpetualId(symbols[i], symbolToPerpStaticInfo),
@@ -870,7 +872,7 @@ class PerpetualDataHandler {
870
872
  _pxS2S3s[i].map((x) => (0, d8XMath_1.floatToABK64x64)(x)),
871
873
  ]),
872
874
  }));
873
- const encodedResults = await _multicall.callStatic.aggregate3(proxyCalls, overrides || {});
875
+ const encodedResults = await _multicall.aggregate3.staticCall(proxyCalls, overrides || {});
874
876
  const traderStates = encodedResults.map(({ success, returnData }, i) => {
875
877
  if (!success)
876
878
  throw new Error(`Failed to get perp info for ${symbols[i]}`);
@@ -898,10 +900,10 @@ class PerpetualDataHandler {
898
900
  let perpId = PerpetualDataHandler.symbolToPerpetualId(symbol, symbolToPerpStaticInfo);
899
901
  let staticInfo = symbolToPerpStaticInfo.get(symbol);
900
902
  let [S2, S3] = [indexPrices[0], indexPrices[1]];
901
- if (staticInfo.collateralCurrencyType == constants_2.CollaterlCCY.BASE) {
903
+ if (staticInfo.collateralCurrencyType == constants_1.CollaterlCCY.BASE) {
902
904
  S3 = S2;
903
905
  }
904
- else if (staticInfo.collateralCurrencyType == constants_2.CollaterlCCY.QUOTE) {
906
+ else if (staticInfo.collateralCurrencyType == constants_1.CollaterlCCY.QUOTE) {
905
907
  S3 = 1;
906
908
  }
907
909
  let ammState = await _proxyContract.getAMMState(perpId, [S2, S3].map(d8XMath_1.floatToABK64x64), overrides || {});
@@ -912,16 +914,16 @@ class PerpetualDataHandler {
912
914
  let staticInfo = symbolToPerpStaticInfo.get(symbol);
913
915
  let ccy = symbol.split("-");
914
916
  let [S2, S3] = [indexPrices[0], indexPrices[1]];
915
- if (staticInfo.collateralCurrencyType == constants_2.CollaterlCCY.BASE) {
917
+ if (staticInfo.collateralCurrencyType == constants_1.CollaterlCCY.BASE) {
916
918
  S3 = S2;
917
919
  }
918
- else if (staticInfo.collateralCurrencyType == constants_2.CollaterlCCY.QUOTE) {
920
+ else if (staticInfo.collateralCurrencyType == constants_1.CollaterlCCY.QUOTE) {
919
921
  S3 = 1;
920
922
  }
921
923
  let markPrice = S2 * (1 + (0, d8XMath_1.ABK64x64ToFloat)(ammState[8]));
922
924
  let state = {
923
925
  id: perpId,
924
- state: constants_2.PERP_STATE_STR[ammState[13].toNumber()],
926
+ state: constants_1.PERP_STATE_STR[Number(ammState[13])],
925
927
  baseCurrency: ccy[0],
926
928
  quoteCurrency: ccy[1],
927
929
  indexPrice: S2,
@@ -961,14 +963,14 @@ class PerpetualDataHandler {
961
963
  let position = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_notional]);
962
964
  let cashCC = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_availableCashCC]);
963
965
  let Sm = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_mark_price]);
964
- let unpaidFundingCC = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_availableCashCC].sub(traderState[idx_cash]));
966
+ let unpaidFundingCC = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_availableCashCC] - traderState[idx_cash]);
965
967
  let unpaidFunding = unpaidFundingCC;
966
- if (perpInfo.collateralCurrencyType == constants_2.CollaterlCCY.BASE) {
968
+ if (perpInfo.collateralCurrencyType == constants_1.CollaterlCCY.BASE) {
967
969
  S2Liq = (0, d8XMath_1.calculateLiquidationPriceCollateralBase)(lockedInValueQC, position, cashCC, tau);
968
970
  S3Liq = S2Liq;
969
971
  unpaidFunding = unpaidFunding / S2;
970
972
  }
971
- else if (perpInfo.collateralCurrencyType == constants_2.CollaterlCCY.QUANTO) {
973
+ else if (perpInfo.collateralCurrencyType == constants_1.CollaterlCCY.QUANTO) {
972
974
  let S3 = S3Liq;
973
975
  S3Liq = S3;
974
976
  S2Liq = (0, d8XMath_1.calculateLiquidationPriceCollateralQuanto)(lockedInValueQC, position, cashCC, tau, S3, Sm);
@@ -1025,39 +1027,45 @@ class PerpetualDataHandler {
1025
1027
  }
1026
1028
  static fromSmartContractOrder(order, symbolToPerpInfoMap) {
1027
1029
  // find symbol of perpetual id
1028
- let symbol = PerpetualDataHandler._getByValue(symbolToPerpInfoMap, order.iPerpetualId, "id");
1030
+ const symbol = PerpetualDataHandler._getByValue(symbolToPerpInfoMap, Number(order.iPerpetualId), "id");
1029
1031
  if (symbol == undefined) {
1030
- throw Error(`Perpetual id ${order.iPerpetualId} not found. Check with marketData.exchangeInfo().`);
1032
+ throw new Error(`Perpetual id ${order.iPerpetualId} not found. Check with marketData.exchangeInfo().`);
1031
1033
  }
1032
- let side = order.fAmount > bignumber_1.BigNumber.from(0) ? constants_2.BUY_SIDE : constants_2.SELL_SIDE;
1034
+ const side = BigInt(order.fAmount.toString()) > BigInt(0) ? constants_1.BUY_SIDE : constants_1.SELL_SIDE;
1033
1035
  let limitPrice, stopPrice;
1034
- let fLimitPrice = bignumber_1.BigNumber.from(order.fLimitPrice);
1035
- if (fLimitPrice.eq(0)) {
1036
- limitPrice = side == constants_2.BUY_SIDE ? undefined : 0;
1036
+ const fLimitPrice = BigInt(order.fLimitPrice);
1037
+ if (fLimitPrice == 0n) {
1038
+ limitPrice = side == constants_1.BUY_SIDE ? undefined : 0;
1037
1039
  }
1038
- else if (fLimitPrice.eq(constants_2.MAX_64x64)) {
1039
- limitPrice = side == constants_2.BUY_SIDE ? Infinity : undefined;
1040
+ else if (fLimitPrice == constants_1.MAX_64x64) {
1041
+ limitPrice = side == constants_1.BUY_SIDE ? Infinity : undefined;
1040
1042
  }
1041
1043
  else {
1042
1044
  limitPrice = (0, d8XMath_1.ABK64x64ToFloat)(fLimitPrice);
1043
1045
  }
1044
- let fStopPrice = bignumber_1.BigNumber.from(order.fTriggerPrice);
1045
- if (fStopPrice.eq(0) || fStopPrice.eq(constants_2.MAX_64x64)) {
1046
+ const fStopPrice = BigInt(order.fTriggerPrice);
1047
+ if (fStopPrice == 0n || fStopPrice == constants_1.MAX_64x64) {
1046
1048
  stopPrice = undefined;
1047
1049
  }
1048
1050
  else {
1049
1051
  stopPrice = (0, d8XMath_1.ABK64x64ToFloat)(fStopPrice);
1050
1052
  }
1053
+ // adjust prices for market type
1054
+ const sInfo = symbolToPerpInfoMap.get(symbol);
1055
+ if (PerpetualDataHandler.isPredictiveMarket(sInfo)) {
1056
+ limitPrice = limitPrice !== undefined && limitPrice !== 0 ? (0, d8XMath_1.priceToProb)(limitPrice) : limitPrice;
1057
+ stopPrice = stopPrice !== undefined && stopPrice !== 0 ? (0, d8XMath_1.priceToProb)(stopPrice) : stopPrice;
1058
+ }
1051
1059
  let userOrder = {
1052
1060
  symbol: symbol,
1053
1061
  side: side,
1054
- type: PerpetualDataHandler._flagToOrderType(bignumber_1.BigNumber.from(order.flags), bignumber_1.BigNumber.from(order.fLimitPrice)),
1055
- quantity: Math.abs((0, d8XMath_1.ABK64x64ToFloat)(bignumber_1.BigNumber.from(order.fAmount))),
1056
- reduceOnly: (0, utils_1.containsFlag)(bignumber_1.BigNumber.from(order.flags), constants_2.MASK_CLOSE_ONLY),
1062
+ type: PerpetualDataHandler._flagToOrderType(BigInt(order.flags), BigInt(order.fLimitPrice)),
1063
+ quantity: Math.abs((0, d8XMath_1.ABK64x64ToFloat)(BigInt(order.fAmount))),
1064
+ reduceOnly: (0, utils_1.containsFlag)(BigInt(order.flags), constants_1.MASK_CLOSE_ONLY),
1057
1065
  limitPrice: limitPrice,
1058
- keepPositionLvg: (0, utils_1.containsFlag)(bignumber_1.BigNumber.from(order.flags), constants_2.MASK_KEEP_POS_LEVERAGE),
1066
+ keepPositionLvg: (0, utils_1.containsFlag)(BigInt(order.flags), constants_1.MASK_KEEP_POS_LEVERAGE),
1059
1067
  brokerFeeTbps: order.brokerFeeTbps == 0 ? undefined : Number(order.brokerFeeTbps),
1060
- brokerAddr: order.brokerAddr == constants_2.ZERO_ADDRESS ? undefined : order.brokerAddr,
1068
+ brokerAddr: order.brokerAddr == constants_1.ZERO_ADDRESS ? undefined : order.brokerAddr.toString(),
1061
1069
  brokerSignature: order.brokerSignature == "0x" ? undefined : order.brokerSignature,
1062
1070
  stopPrice: stopPrice,
1063
1071
  leverage: Number(order.leverageTDR) / 100,
@@ -1082,38 +1090,41 @@ class PerpetualDataHandler {
1082
1090
  PerpetualDataHandler.checkOrder(order, perpStaticInfo);
1083
1091
  // translate order
1084
1092
  let flags = PerpetualDataHandler._orderTypeToFlag(order);
1085
- let brokerSig = order.brokerSignature == undefined ? [] : order.brokerSignature;
1093
+ let brokerSig = order.brokerSignature == undefined ? "0x" : order.brokerSignature;
1086
1094
  let perpetualId = PerpetualDataHandler.symbolToPerpetualId(order.symbol, perpStaticInfo);
1087
1095
  let fAmount;
1088
- if (order.side == constants_2.BUY_SIDE) {
1096
+ if (order.side == constants_1.BUY_SIDE) {
1089
1097
  fAmount = (0, d8XMath_1.floatToABK64x64)(Math.abs(order.quantity));
1090
1098
  }
1091
- else if (order.side == constants_2.SELL_SIDE) {
1099
+ else if (order.side == constants_1.SELL_SIDE) {
1092
1100
  fAmount = (0, d8XMath_1.floatToABK64x64)(-Math.abs(order.quantity));
1093
1101
  }
1094
1102
  else {
1095
- throw Error(`invalid side in order spec, use ${constants_2.BUY_SIDE} or ${constants_2.SELL_SIDE}`);
1103
+ throw Error(`invalid side in order spec, use ${constants_1.BUY_SIDE} or ${constants_1.SELL_SIDE}`);
1096
1104
  }
1105
+ const isPred = PerpetualDataHandler.isPredictiveMarket(perpStaticInfo.get(order.symbol));
1097
1106
  let fLimitPrice;
1098
1107
  if (order.limitPrice == undefined) {
1099
1108
  // we need to set the limit price to infinity or zero for
1100
1109
  // the trade to go through
1101
1110
  // Also: stop orders always have limits set, so even for this case
1102
1111
  // we set the limit to 0 or infinity
1103
- fLimitPrice = order.side == constants_2.BUY_SIDE ? constants_2.MAX_64x64 : bignumber_1.BigNumber.from(0);
1112
+ fLimitPrice = order.side == constants_1.BUY_SIDE ? constants_1.MAX_64x64 : BigInt(0);
1104
1113
  }
1105
1114
  else {
1106
- fLimitPrice = (0, d8XMath_1.floatToABK64x64)(order.limitPrice);
1115
+ fLimitPrice = (0, d8XMath_1.floatToABK64x64)(isPred ? (0, d8XMath_1.probToPrice)(order.limitPrice) : order.limitPrice);
1107
1116
  }
1108
- let iDeadline = order.deadline == undefined ? Date.now() / 1000 + constants_2.ORDER_MAX_DURATION_SEC : order.deadline;
1109
- let fTriggerPrice = order.stopPrice == undefined ? bignumber_1.BigNumber.from(0) : (0, d8XMath_1.floatToABK64x64)(order.stopPrice);
1110
- let smOrder = {
1117
+ const iDeadline = order.deadline == undefined ? Date.now() / 1000 + constants_1.ORDER_MAX_DURATION_SEC : order.deadline;
1118
+ const fTriggerPrice = order.stopPrice == undefined
1119
+ ? BigInt(0)
1120
+ : (0, d8XMath_1.floatToABK64x64)(isPred ? (0, d8XMath_1.probToPrice)(order.stopPrice) : order.stopPrice);
1121
+ const smOrder = {
1111
1122
  flags: flags,
1112
1123
  iPerpetualId: perpetualId,
1113
1124
  brokerFeeTbps: order.brokerFeeTbps == undefined ? 0 : order.brokerFeeTbps,
1114
1125
  traderAddr: traderAddr,
1115
- brokerAddr: order.brokerAddr == undefined ? constants_2.ZERO_ADDRESS : order.brokerAddr,
1116
- executorAddr: constants_2.ZERO_ADDRESS,
1126
+ brokerAddr: order.brokerAddr == undefined ? constants_1.ZERO_ADDRESS : order.brokerAddr,
1127
+ executorAddr: constants_1.ZERO_ADDRESS,
1117
1128
  brokerSignature: brokerSig,
1118
1129
  fAmount: fAmount,
1119
1130
  fLimitPrice: fLimitPrice,
@@ -1146,9 +1157,9 @@ class PerpetualDataHandler {
1146
1157
  leverageTDR: scOrder.leverageTDR,
1147
1158
  iDeadline: scOrder.iDeadline,
1148
1159
  executionTimestamp: scOrder.executionTimestamp,
1149
- parentChildDigest1: parentChildIds ? parentChildIds[0] : constants_2.ZERO_ORDER_ID,
1150
- parentChildDigest2: parentChildIds ? parentChildIds[1] : constants_2.ZERO_ORDER_ID,
1151
- callbackTarget: constants_2.ZERO_ADDRESS,
1160
+ parentChildDigest1: parentChildIds ? parentChildIds[0] : constants_1.ZERO_ORDER_ID,
1161
+ parentChildDigest2: parentChildIds ? parentChildIds[1] : constants_1.ZERO_ORDER_ID,
1162
+ callbackTarget: constants_1.ZERO_ADDRESS,
1152
1163
  };
1153
1164
  }
1154
1165
  /**
@@ -1182,28 +1193,29 @@ class PerpetualDataHandler {
1182
1193
  executionTimestamp: obOrder.executionTimestamp,
1183
1194
  };
1184
1195
  const order = PerpetualDataHandler.fromSmartContractOrder(scOrder, perpStaticInfo);
1185
- if (obOrder.parentChildDigest1.toString() != constants_2.ZERO_ORDER_ID ||
1186
- obOrder.parentChildDigest2.toString() != constants_2.ZERO_ORDER_ID) {
1196
+ if (obOrder.parentChildDigest1.toString() != constants_1.ZERO_ORDER_ID ||
1197
+ obOrder.parentChildDigest2.toString() != constants_1.ZERO_ORDER_ID) {
1187
1198
  order.parentChildOrderIds = [obOrder.parentChildDigest1.toString(), obOrder.parentChildDigest2.toString()];
1188
1199
  }
1189
1200
  return order;
1190
1201
  }
1191
1202
  static _flagToOrderType(orderFlags, orderLimitPrice) {
1192
- let flag = bignumber_1.BigNumber.from(orderFlags);
1193
- let isLimit = (0, utils_1.containsFlag)(flag, constants_2.MASK_LIMIT_ORDER);
1194
- let hasLimit = !bignumber_1.BigNumber.from(orderLimitPrice).eq(0) || !bignumber_1.BigNumber.from(orderLimitPrice).eq(constants_2.MAX_64x64);
1195
- let isStop = (0, utils_1.containsFlag)(flag, constants_2.MASK_STOP_ORDER);
1203
+ // TODO: check
1204
+ let flag = BigInt(orderFlags);
1205
+ let isLimit = (0, utils_1.containsFlag)(flag, constants_1.MASK_LIMIT_ORDER);
1206
+ let hasLimit = BigInt(orderLimitPrice) != 0n || BigInt(orderLimitPrice) != constants_1.MAX_64x64;
1207
+ let isStop = (0, utils_1.containsFlag)(flag, constants_1.MASK_STOP_ORDER);
1196
1208
  if (isStop && hasLimit) {
1197
- return constants_2.ORDER_TYPE_STOP_LIMIT;
1209
+ return constants_1.ORDER_TYPE_STOP_LIMIT;
1198
1210
  }
1199
1211
  else if (isStop && !hasLimit) {
1200
- return constants_2.ORDER_TYPE_STOP_MARKET;
1212
+ return constants_1.ORDER_TYPE_STOP_MARKET;
1201
1213
  }
1202
1214
  else if (isLimit && !isStop) {
1203
- return constants_2.ORDER_TYPE_LIMIT;
1215
+ return constants_1.ORDER_TYPE_LIMIT;
1204
1216
  }
1205
1217
  else {
1206
- return constants_2.ORDER_TYPE_MARKET;
1218
+ return constants_1.ORDER_TYPE_MARKET;
1207
1219
  }
1208
1220
  }
1209
1221
  /**
@@ -1216,38 +1228,38 @@ class PerpetualDataHandler {
1216
1228
  let flag;
1217
1229
  order.type = order.type.toUpperCase();
1218
1230
  switch (order.type) {
1219
- case constants_2.ORDER_TYPE_LIMIT:
1220
- flag = constants_2.MASK_LIMIT_ORDER;
1231
+ case constants_1.ORDER_TYPE_LIMIT:
1232
+ flag = constants_1.MASK_LIMIT_ORDER;
1221
1233
  break;
1222
- case constants_2.ORDER_TYPE_MARKET:
1223
- flag = constants_2.MASK_MARKET_ORDER;
1234
+ case constants_1.ORDER_TYPE_MARKET:
1235
+ flag = constants_1.MASK_MARKET_ORDER;
1224
1236
  break;
1225
- case constants_2.ORDER_TYPE_STOP_MARKET:
1226
- flag = constants_2.MASK_STOP_ORDER;
1237
+ case constants_1.ORDER_TYPE_STOP_MARKET:
1238
+ flag = constants_1.MASK_STOP_ORDER;
1227
1239
  break;
1228
- case constants_2.ORDER_TYPE_STOP_LIMIT:
1229
- flag = constants_2.MASK_STOP_ORDER;
1240
+ case constants_1.ORDER_TYPE_STOP_LIMIT:
1241
+ flag = constants_1.MASK_STOP_ORDER;
1230
1242
  break;
1231
1243
  default: {
1232
1244
  throw Error(`Order type ${order.type} not found.`);
1233
1245
  }
1234
1246
  }
1235
1247
  if (order.keepPositionLvg != undefined && order.keepPositionLvg) {
1236
- flag = (0, utils_1.combineFlags)(flag, constants_2.MASK_KEEP_POS_LEVERAGE);
1248
+ flag = (0, utils_1.combineFlags)(flag, constants_1.MASK_KEEP_POS_LEVERAGE);
1237
1249
  }
1238
1250
  if (order.reduceOnly != undefined && order.reduceOnly) {
1239
- flag = (0, utils_1.combineFlags)(flag, constants_2.MASK_CLOSE_ONLY);
1251
+ flag = (0, utils_1.combineFlags)(flag, constants_1.MASK_CLOSE_ONLY);
1240
1252
  }
1241
- if ((order.type == constants_2.ORDER_TYPE_LIMIT || order.type == constants_2.ORDER_TYPE_STOP_LIMIT) && order.limitPrice == undefined) {
1253
+ if ((order.type == constants_1.ORDER_TYPE_LIMIT || order.type == constants_1.ORDER_TYPE_STOP_LIMIT) && order.limitPrice == undefined) {
1242
1254
  throw Error(`Order type ${order.type} requires limit price.`);
1243
1255
  }
1244
- if ((order.type == constants_2.ORDER_TYPE_STOP_MARKET || order.type == constants_2.ORDER_TYPE_STOP_LIMIT) && order.stopPrice == undefined) {
1256
+ if ((order.type == constants_1.ORDER_TYPE_STOP_MARKET || order.type == constants_1.ORDER_TYPE_STOP_LIMIT) && order.stopPrice == undefined) {
1245
1257
  throw Error(`Order type ${order.type} requires trigger price.`);
1246
1258
  }
1247
- if ((order.type == constants_2.ORDER_TYPE_MARKET || order.type == constants_2.ORDER_TYPE_LIMIT) && order.stopPrice != undefined) {
1259
+ if ((order.type == constants_1.ORDER_TYPE_MARKET || order.type == constants_1.ORDER_TYPE_LIMIT) && order.stopPrice != undefined) {
1248
1260
  throw Error(`Order type ${order.type} has no trigger price.`);
1249
1261
  }
1250
- if (order.type != constants_2.ORDER_TYPE_STOP_LIMIT && order.type != constants_2.ORDER_TYPE_STOP_MARKET && order.stopPrice != undefined) {
1262
+ if (order.type != constants_1.ORDER_TYPE_STOP_LIMIT && order.type != constants_1.ORDER_TYPE_STOP_MARKET && order.stopPrice != undefined) {
1251
1263
  throw Error(`Order type ${order.type} has no trigger price.`);
1252
1264
  }
1253
1265
  return flag;
@@ -1300,7 +1312,7 @@ class PerpetualDataHandler {
1300
1312
  * @returns NodeSDKConfig
1301
1313
  */
1302
1314
  static getConfigByName(name, version) {
1303
- let configFile = constants_2.DEFAULT_CONFIG.filter((c) => c.name == name);
1315
+ let configFile = constants_1.DEFAULT_CONFIG.filter((c) => c.name == name);
1304
1316
  if (configFile.length == 0) {
1305
1317
  throw Error(`No SDK config found with name ${name}.`);
1306
1318
  }
@@ -1337,7 +1349,7 @@ class PerpetualDataHandler {
1337
1349
  * @returns NodeSDKConfig
1338
1350
  */
1339
1351
  static getConfigByChainId(chainId, version) {
1340
- let configFile = constants_2.DEFAULT_CONFIG.filter((c) => c.chainId == chainId);
1352
+ let configFile = constants_1.DEFAULT_CONFIG.filter((c) => c.chainId == chainId);
1341
1353
  if (configFile.length == 0) {
1342
1354
  throw Error(`No SDK config found for chain ID ${chainId}.`);
1343
1355
  }
@@ -1370,7 +1382,7 @@ class PerpetualDataHandler {
1370
1382
  * main();
1371
1383
  */
1372
1384
  static getAvailableConfigs() {
1373
- let configFile = constants_2.DEFAULT_CONFIG;
1385
+ let configFile = constants_1.DEFAULT_CONFIG;
1374
1386
  let ids = new Set();
1375
1387
  for (let k = 0; k < configFile.length; k++) {
1376
1388
  const el = configFile[k].chainId.toString() + "; " + configFile[k].name;
@@ -1379,13 +1391,13 @@ class PerpetualDataHandler {
1379
1391
  return ids;
1380
1392
  }
1381
1393
  /**
1382
- * Get the ABI of a function in a given contract
1394
+ * Get the ABI of a function in a given contract. Undefined if it doesn't exist.
1383
1395
  * @param contract A contract instance, e.g. this.proxyContract
1384
1396
  * @param functionName Name of the function whose ABI we want
1385
1397
  * @returns Function ABI as a single JSON string
1386
1398
  */
1387
1399
  static _getABIFromContract(contract, functionName) {
1388
- return contract.interface.getFunction(functionName).format(abi_1.FormatTypes.full);
1400
+ return contract.interface.getFunction(functionName)?.format("full");
1389
1401
  }
1390
1402
  /**
1391
1403
  * Gets the pool index (starting at 0 in exchangeInfo, not ID!) corresponding to a given symbol.
@@ -1503,9 +1515,12 @@ class PerpetualDataHandler {
1503
1515
  static checkOrder(order,
1504
1516
  // traderAccount: MarginAccount,
1505
1517
  perpStaticInfo) {
1518
+ if (!perpStaticInfo.has(order.symbol)) {
1519
+ throw new Error(`Perpetual not found for symbol ${order.symbol}`);
1520
+ }
1506
1521
  // check side
1507
- if (order.side != constants_2.BUY_SIDE && order.side != constants_2.SELL_SIDE) {
1508
- throw Error(`order side must be ${constants_2.BUY_SIDE} or ${constants_2.SELL_SIDE}`);
1522
+ if (order.side != constants_1.BUY_SIDE && order.side != constants_1.SELL_SIDE) {
1523
+ throw Error(`order side must be ${constants_1.BUY_SIDE} or ${constants_1.SELL_SIDE}`);
1509
1524
  }
1510
1525
  // check amount
1511
1526
  let lotSize = perpStaticInfo.get(order.symbol).lotSizeBC;
@@ -1519,7 +1534,7 @@ class PerpetualDataHandler {
1519
1534
  throw Error(`trade amount too small: ${order.quantity} ${perpStaticInfo.get(order.symbol).S2Symbol}`);
1520
1535
  }
1521
1536
  // check limit price
1522
- if (order.side == constants_2.BUY_SIDE && order.limitPrice != undefined && order.limitPrice <= 0) {
1537
+ if (order.side == constants_1.BUY_SIDE && order.limitPrice != undefined && order.limitPrice <= 0) {
1523
1538
  throw Error(`invalid limit price for buy order: ${order.limitPrice}`);
1524
1539
  }
1525
1540
  // broker fee
@@ -1539,14 +1554,14 @@ class PerpetualDataHandler {
1539
1554
  static fromClientOrderToTypeSafeOrder(order) {
1540
1555
  return {
1541
1556
  iPerpetualId: +order.iPerpetualId.toString(),
1542
- fLimitPrice: BigInt(bignumber_1.BigNumber.from(order.fLimitPrice).toString()),
1557
+ fLimitPrice: order.fLimitPrice,
1543
1558
  leverageTDR: +order.leverageTDR.toString(),
1544
1559
  executionTimestamp: +order.executionTimestamp.toString(),
1545
- flags: BigInt(bignumber_1.BigNumber.from(order.flags).toString()),
1560
+ flags: BigInt(order.flags),
1546
1561
  iDeadline: +order.iDeadline.toString(),
1547
1562
  brokerAddr: order.brokerAddr,
1548
- fTriggerPrice: BigInt(bignumber_1.BigNumber.from(order.fTriggerPrice).toString()),
1549
- fAmount: BigInt(bignumber_1.BigNumber.from(order.fAmount).toString()),
1563
+ fTriggerPrice: order.fTriggerPrice,
1564
+ fAmount: order.fAmount,
1550
1565
  parentChildDigest1: order.parentChildDigest1,
1551
1566
  traderAddr: order.traderAddr,
1552
1567
  parentChildDigest2: order.parentChildDigest2,
@@ -1555,6 +1570,15 @@ class PerpetualDataHandler {
1555
1570
  callbackTarget: order.callbackTarget,
1556
1571
  };
1557
1572
  }
1573
+ /**
1574
+ * Determines whether a given perpetual represents a predictive market
1575
+ * @param staticInfo Perpetual static info
1576
+ * @returns True if this is a predictive market
1577
+ */
1578
+ static isPredictiveMarket(staticInfo) {
1579
+ // return true; // for testing
1580
+ return (0, utils_1.containsFlag)(staticInfo.perpFlags, constants_1.MASK_PREDICTIVE_MARKET);
1581
+ }
1558
1582
  }
1559
1583
  exports.default = PerpetualDataHandler;
1560
1584
  //# sourceMappingURL=perpetualDataHandler.js.map