@d8x/perpetuals-sdk 1.3.6 → 2.0.0-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 (271) 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/constants.d.ts +11 -12
  8. package/dist/cjs/constants.js +12 -13
  9. package/dist/cjs/constants.js.map +1 -1
  10. package/dist/cjs/contracts/ERC20.d.ts +146 -171
  11. package/dist/cjs/contracts/IPerpetualManager.d.ts +2534 -2225
  12. package/dist/cjs/contracts/IPyth.d.ts +181 -184
  13. package/dist/cjs/contracts/LimitOrderBook.d.ts +373 -401
  14. package/dist/cjs/contracts/LimitOrderBookBeacon.d.ts +53 -104
  15. package/dist/cjs/contracts/LimitOrderBookFactory.d.ts +129 -185
  16. package/dist/cjs/contracts/MockTokenSwap.d.ts +109 -169
  17. package/dist/cjs/contracts/Multicall3.d.ts +147 -211
  18. package/dist/cjs/contracts/OnDemandOracleUpgradeable.d.ts +342 -399
  19. package/dist/cjs/contracts/OracleFactory.d.ts +258 -238
  20. package/dist/cjs/contracts/PerpetualManagerProxy.d.ts +1099 -891
  21. package/dist/cjs/contracts/RedStoneAbi.d.ts +369 -488
  22. package/dist/cjs/contracts/ShareToken.d.ts +232 -285
  23. package/dist/cjs/contracts/common.d.ts +40 -11
  24. package/dist/cjs/contracts/factories/ERC20__factory.d.ts +2 -3
  25. package/dist/cjs/contracts/factories/ERC20__factory.js +3 -3
  26. package/dist/cjs/contracts/factories/ERC20__factory.js.map +1 -1
  27. package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +2 -3
  28. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +3 -3
  29. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  30. package/dist/cjs/contracts/factories/IPyth__factory.d.ts +2 -3
  31. package/dist/cjs/contracts/factories/IPyth__factory.js +3 -3
  32. package/dist/cjs/contracts/factories/IPyth__factory.js.map +1 -1
  33. package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.d.ts +2 -3
  34. package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.js +3 -3
  35. package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.js.map +1 -1
  36. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.d.ts +2 -3
  37. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js +3 -3
  38. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
  39. package/dist/cjs/contracts/factories/LimitOrderBook__factory.d.ts +2 -3
  40. package/dist/cjs/contracts/factories/LimitOrderBook__factory.js +3 -3
  41. package/dist/cjs/contracts/factories/LimitOrderBook__factory.js.map +1 -1
  42. package/dist/cjs/contracts/factories/MockTokenSwap__factory.d.ts +2 -3
  43. package/dist/cjs/contracts/factories/MockTokenSwap__factory.js +3 -3
  44. package/dist/cjs/contracts/factories/MockTokenSwap__factory.js.map +1 -1
  45. package/dist/cjs/contracts/factories/Multicall3__factory.d.ts +11 -9
  46. package/dist/cjs/contracts/factories/Multicall3__factory.js +7 -10
  47. package/dist/cjs/contracts/factories/Multicall3__factory.js.map +1 -1
  48. package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.d.ts +2 -3
  49. package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.js +3 -3
  50. package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.js.map +1 -1
  51. package/dist/cjs/contracts/factories/OracleFactory__factory.d.ts +2 -3
  52. package/dist/cjs/contracts/factories/OracleFactory__factory.js +3 -3
  53. package/dist/cjs/contracts/factories/OracleFactory__factory.js.map +1 -1
  54. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.d.ts +2 -3
  55. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js +3 -3
  56. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
  57. package/dist/cjs/contracts/factories/RedStoneAbi__factory.d.ts +2 -3
  58. package/dist/cjs/contracts/factories/RedStoneAbi__factory.js +3 -3
  59. package/dist/cjs/contracts/factories/RedStoneAbi__factory.js.map +1 -1
  60. package/dist/cjs/contracts/factories/ShareToken__factory.d.ts +2 -3
  61. package/dist/cjs/contracts/factories/ShareToken__factory.js +3 -3
  62. package/dist/cjs/contracts/factories/ShareToken__factory.js.map +1 -1
  63. package/dist/cjs/d8XMath.d.ts +16 -16
  64. package/dist/cjs/d8XMath.js +48 -49
  65. package/dist/cjs/d8XMath.js.map +1 -1
  66. package/dist/cjs/liquidatorTool.d.ts +8 -8
  67. package/dist/cjs/liquidatorTool.js +5 -7
  68. package/dist/cjs/liquidatorTool.js.map +1 -1
  69. package/dist/cjs/liquidityProviderTool.d.ts +4 -5
  70. package/dist/cjs/liquidityProviderTool.js.map +1 -1
  71. package/dist/cjs/marketData.d.ts +27 -28
  72. package/dist/cjs/marketData.js +65 -69
  73. package/dist/cjs/marketData.js.map +1 -1
  74. package/dist/cjs/nodeSDKTypes.d.ts +35 -37
  75. package/dist/cjs/onChainPxFeed.d.ts +2 -2
  76. package/dist/cjs/onChainPxFeed.js +3 -3
  77. package/dist/cjs/onChainPxFeed.js.map +1 -1
  78. package/dist/cjs/onChainPxFeedAngle.d.ts +2 -2
  79. package/dist/cjs/onChainPxFeedAngle.js +4 -5
  80. package/dist/cjs/onChainPxFeedAngle.js.map +1 -1
  81. package/dist/cjs/onChainPxFeedRedStone.js +2 -2
  82. package/dist/cjs/onChainPxFeedRedStone.js.map +1 -1
  83. package/dist/cjs/orderExecutorTool.d.ts +7 -9
  84. package/dist/cjs/orderExecutorTool.js +54 -63
  85. package/dist/cjs/orderExecutorTool.js.map +1 -1
  86. package/dist/cjs/perpetualDataHandler.d.ts +38 -35
  87. package/dist/cjs/perpetualDataHandler.js +173 -167
  88. package/dist/cjs/perpetualDataHandler.js.map +1 -1
  89. package/dist/cjs/perpetualEventHandler.d.ts +4 -5
  90. package/dist/cjs/perpetualEventHandler.js +2 -2
  91. package/dist/cjs/perpetualEventHandler.js.map +1 -1
  92. package/dist/cjs/priceFeeds.js +2 -3
  93. package/dist/cjs/priceFeeds.js.map +1 -1
  94. package/dist/cjs/referralCodeSigner.d.ts +1 -1
  95. package/dist/cjs/referralCodeSigner.js +12 -16
  96. package/dist/cjs/referralCodeSigner.js.map +1 -1
  97. package/dist/cjs/traderDigests.d.ts +2 -1
  98. package/dist/cjs/traderDigests.js +9 -11
  99. package/dist/cjs/traderDigests.js.map +1 -1
  100. package/dist/cjs/traderInterface.d.ts +8 -9
  101. package/dist/cjs/traderInterface.js +26 -23
  102. package/dist/cjs/traderInterface.js.map +1 -1
  103. package/dist/cjs/utils.d.ts +2 -3
  104. package/dist/cjs/utils.js +1 -2
  105. package/dist/cjs/utils.js.map +1 -1
  106. package/dist/cjs/version.d.ts +1 -1
  107. package/dist/cjs/version.js +1 -1
  108. package/dist/cjs/version.js.map +1 -1
  109. package/dist/cjs/writeAccessHandler.d.ts +7 -9
  110. package/dist/cjs/writeAccessHandler.js +13 -16
  111. package/dist/cjs/writeAccessHandler.js.map +1 -1
  112. package/dist/esm/accountTrade.d.ts +9 -9
  113. package/dist/esm/accountTrade.js +19 -17
  114. package/dist/esm/accountTrade.js.map +1 -1
  115. package/dist/esm/brokerTool.d.ts +11 -12
  116. package/dist/esm/brokerTool.js +2 -3
  117. package/dist/esm/brokerTool.js.map +1 -1
  118. package/dist/esm/constants.d.ts +11 -12
  119. package/dist/esm/constants.js +12 -13
  120. package/dist/esm/constants.js.map +1 -1
  121. package/dist/esm/contracts/ERC20.d.ts +146 -171
  122. package/dist/esm/contracts/IPerpetualManager.d.ts +2534 -2225
  123. package/dist/esm/contracts/IPyth.d.ts +181 -184
  124. package/dist/esm/contracts/LimitOrderBook.d.ts +373 -401
  125. package/dist/esm/contracts/LimitOrderBookBeacon.d.ts +53 -104
  126. package/dist/esm/contracts/LimitOrderBookFactory.d.ts +129 -185
  127. package/dist/esm/contracts/MockTokenSwap.d.ts +109 -169
  128. package/dist/esm/contracts/Multicall3.d.ts +147 -211
  129. package/dist/esm/contracts/OnDemandOracleUpgradeable.d.ts +342 -399
  130. package/dist/esm/contracts/OracleFactory.d.ts +258 -238
  131. package/dist/esm/contracts/PerpetualManagerProxy.d.ts +1099 -891
  132. package/dist/esm/contracts/RedStoneAbi.d.ts +369 -488
  133. package/dist/esm/contracts/ShareToken.d.ts +232 -285
  134. package/dist/esm/contracts/common.d.ts +40 -11
  135. package/dist/esm/contracts/factories/ERC20__factory.d.ts +2 -3
  136. package/dist/esm/contracts/factories/ERC20__factory.js +4 -4
  137. package/dist/esm/contracts/factories/ERC20__factory.js.map +1 -1
  138. package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +2 -3
  139. package/dist/esm/contracts/factories/IPerpetualManager__factory.js +4 -4
  140. package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  141. package/dist/esm/contracts/factories/IPyth__factory.d.ts +2 -3
  142. package/dist/esm/contracts/factories/IPyth__factory.js +4 -4
  143. package/dist/esm/contracts/factories/IPyth__factory.js.map +1 -1
  144. package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.d.ts +2 -3
  145. package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.js +4 -4
  146. package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.js.map +1 -1
  147. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.d.ts +2 -3
  148. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js +4 -4
  149. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
  150. package/dist/esm/contracts/factories/LimitOrderBook__factory.d.ts +2 -3
  151. package/dist/esm/contracts/factories/LimitOrderBook__factory.js +4 -4
  152. package/dist/esm/contracts/factories/LimitOrderBook__factory.js.map +1 -1
  153. package/dist/esm/contracts/factories/MockTokenSwap__factory.d.ts +2 -3
  154. package/dist/esm/contracts/factories/MockTokenSwap__factory.js +4 -4
  155. package/dist/esm/contracts/factories/MockTokenSwap__factory.js.map +1 -1
  156. package/dist/esm/contracts/factories/Multicall3__factory.d.ts +11 -9
  157. package/dist/esm/contracts/factories/Multicall3__factory.js +8 -11
  158. package/dist/esm/contracts/factories/Multicall3__factory.js.map +1 -1
  159. package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.d.ts +2 -3
  160. package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.js +4 -4
  161. package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.js.map +1 -1
  162. package/dist/esm/contracts/factories/OracleFactory__factory.d.ts +2 -3
  163. package/dist/esm/contracts/factories/OracleFactory__factory.js +4 -4
  164. package/dist/esm/contracts/factories/OracleFactory__factory.js.map +1 -1
  165. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.d.ts +2 -3
  166. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js +4 -4
  167. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
  168. package/dist/esm/contracts/factories/RedStoneAbi__factory.d.ts +2 -3
  169. package/dist/esm/contracts/factories/RedStoneAbi__factory.js +4 -4
  170. package/dist/esm/contracts/factories/RedStoneAbi__factory.js.map +1 -1
  171. package/dist/esm/contracts/factories/ShareToken__factory.d.ts +2 -3
  172. package/dist/esm/contracts/factories/ShareToken__factory.js +4 -4
  173. package/dist/esm/contracts/factories/ShareToken__factory.js.map +1 -1
  174. package/dist/esm/d8XMath.d.ts +16 -16
  175. package/dist/esm/d8XMath.js +48 -49
  176. package/dist/esm/d8XMath.js.map +1 -1
  177. package/dist/esm/liquidatorTool.d.ts +8 -8
  178. package/dist/esm/liquidatorTool.js +5 -7
  179. package/dist/esm/liquidatorTool.js.map +1 -1
  180. package/dist/esm/liquidityProviderTool.d.ts +4 -5
  181. package/dist/esm/liquidityProviderTool.js.map +1 -1
  182. package/dist/esm/marketData.d.ts +27 -28
  183. package/dist/esm/marketData.js +55 -59
  184. package/dist/esm/marketData.js.map +1 -1
  185. package/dist/esm/nodeSDKTypes.d.ts +35 -37
  186. package/dist/esm/onChainPxFeed.d.ts +2 -2
  187. package/dist/esm/onChainPxFeed.js +3 -3
  188. package/dist/esm/onChainPxFeed.js.map +1 -1
  189. package/dist/esm/onChainPxFeedAngle.d.ts +2 -2
  190. package/dist/esm/onChainPxFeedAngle.js +2 -3
  191. package/dist/esm/onChainPxFeedAngle.js.map +1 -1
  192. package/dist/esm/onChainPxFeedRedStone.js +1 -1
  193. package/dist/esm/onChainPxFeedRedStone.js.map +1 -1
  194. package/dist/esm/orderExecutorTool.d.ts +7 -9
  195. package/dist/esm/orderExecutorTool.js +40 -49
  196. package/dist/esm/orderExecutorTool.js.map +1 -1
  197. package/dist/esm/perpetualDataHandler.d.ts +38 -35
  198. package/dist/esm/perpetualDataHandler.js +114 -108
  199. package/dist/esm/perpetualDataHandler.js.map +1 -1
  200. package/dist/esm/perpetualEventHandler.d.ts +4 -5
  201. package/dist/esm/perpetualEventHandler.js +2 -2
  202. package/dist/esm/perpetualEventHandler.js.map +1 -1
  203. package/dist/esm/priceFeeds.js +2 -3
  204. package/dist/esm/priceFeeds.js.map +1 -1
  205. package/dist/esm/referralCodeSigner.d.ts +1 -1
  206. package/dist/esm/referralCodeSigner.js +6 -10
  207. package/dist/esm/referralCodeSigner.js.map +1 -1
  208. package/dist/esm/traderDigests.d.ts +2 -1
  209. package/dist/esm/traderDigests.js +2 -4
  210. package/dist/esm/traderDigests.js.map +1 -1
  211. package/dist/esm/traderInterface.d.ts +8 -9
  212. package/dist/esm/traderInterface.js +26 -23
  213. package/dist/esm/traderInterface.js.map +1 -1
  214. package/dist/esm/utils.d.ts +2 -3
  215. package/dist/esm/utils.js +1 -2
  216. package/dist/esm/utils.js.map +1 -1
  217. package/dist/esm/version.d.ts +1 -1
  218. package/dist/esm/version.js +1 -1
  219. package/dist/esm/version.js.map +1 -1
  220. package/dist/esm/writeAccessHandler.d.ts +7 -9
  221. package/dist/esm/writeAccessHandler.js +5 -8
  222. package/dist/esm/writeAccessHandler.js.map +1 -1
  223. package/package.json +7 -17
  224. package/src/accountTrade.ts +32 -34
  225. package/src/brokerTool.ts +17 -20
  226. package/src/constants.ts +12 -13
  227. package/src/contracts/ERC20.ts +236 -350
  228. package/src/contracts/IPerpetualManager.ts +3359 -5050
  229. package/src/contracts/IPyth.ts +272 -409
  230. package/src/contracts/LimitOrderBook.ts +503 -779
  231. package/src/contracts/LimitOrderBookBeacon.ts +123 -171
  232. package/src/contracts/LimitOrderBookFactory.ts +263 -332
  233. package/src/contracts/MockTokenSwap.ts +237 -275
  234. package/src/contracts/Multicall3.ts +208 -374
  235. package/src/contracts/OnDemandOracleUpgradeable.ts +569 -782
  236. package/src/contracts/OracleFactory.ts +410 -538
  237. package/src/contracts/PerpetualManagerProxy.ts +1898 -1426
  238. package/src/contracts/RedStoneAbi.ts +486 -986
  239. package/src/contracts/ShareToken.ts +376 -557
  240. package/src/contracts/common.ts +108 -21
  241. package/src/contracts/factories/ERC20__factory.ts +4 -5
  242. package/src/contracts/factories/IPerpetualManager__factory.ts +4 -5
  243. package/src/contracts/factories/IPyth__factory.ts +4 -5
  244. package/src/contracts/factories/LimitOrderBookBeacon__factory.ts +5 -6
  245. package/src/contracts/factories/LimitOrderBookFactory__factory.ts +5 -6
  246. package/src/contracts/factories/LimitOrderBook__factory.ts +4 -5
  247. package/src/contracts/factories/MockTokenSwap__factory.ts +4 -5
  248. package/src/contracts/factories/Multicall3__factory.ts +21 -19
  249. package/src/contracts/factories/OnDemandOracleUpgradeable__factory.ts +5 -6
  250. package/src/contracts/factories/OracleFactory__factory.ts +4 -5
  251. package/src/contracts/factories/PerpetualManagerProxy__factory.ts +5 -6
  252. package/src/contracts/factories/RedStoneAbi__factory.ts +4 -8
  253. package/src/contracts/factories/ShareToken__factory.ts +4 -8
  254. package/src/d8XMath.ts +57 -57
  255. package/src/liquidatorTool.ts +12 -15
  256. package/src/liquidityProviderTool.ts +7 -5
  257. package/src/marketData.ts +110 -121
  258. package/src/nodeSDKTypes.ts +51 -38
  259. package/src/onChainPxFeed.ts +4 -4
  260. package/src/onChainPxFeedAngle.ts +5 -7
  261. package/src/onChainPxFeedRedStone.ts +1 -3
  262. package/src/orderExecutorTool.ts +102 -109
  263. package/src/perpetualDataHandler.ts +181 -167
  264. package/src/perpetualEventHandler.ts +16 -17
  265. package/src/priceFeeds.ts +2 -3
  266. package/src/referralCodeSigner.ts +6 -10
  267. package/src/traderDigests.ts +8 -5
  268. package/src/traderInterface.ts +45 -31
  269. package/src/utils.ts +3 -4
  270. package/src/version.ts +1 -1
  271. 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,12 +467,12 @@ 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),
@@ -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,24 +1027,24 @@ 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
+ let 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
+ let side = order.fAmount > 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
+ let 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
+ let fStopPrice = BigInt(order.fTriggerPrice);
1047
+ if (fStopPrice == 0n || fStopPrice == constants_1.MAX_64x64) {
1046
1048
  stopPrice = undefined;
1047
1049
  }
1048
1050
  else {
@@ -1051,13 +1053,13 @@ class PerpetualDataHandler {
1051
1053
  let userOrder = {
1052
1054
  symbol: symbol,
1053
1055
  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),
1056
+ type: PerpetualDataHandler._flagToOrderType(BigInt(order.flags), BigInt(order.fLimitPrice)),
1057
+ quantity: Math.abs((0, d8XMath_1.ABK64x64ToFloat)(BigInt(order.fAmount))),
1058
+ reduceOnly: (0, utils_1.containsFlag)(BigInt(order.flags), constants_1.MASK_CLOSE_ONLY),
1057
1059
  limitPrice: limitPrice,
1058
- keepPositionLvg: (0, utils_1.containsFlag)(bignumber_1.BigNumber.from(order.flags), constants_2.MASK_KEEP_POS_LEVERAGE),
1060
+ keepPositionLvg: (0, utils_1.containsFlag)(BigInt(order.flags), constants_1.MASK_KEEP_POS_LEVERAGE),
1059
1061
  brokerFeeTbps: order.brokerFeeTbps == 0 ? undefined : Number(order.brokerFeeTbps),
1060
- brokerAddr: order.brokerAddr == constants_2.ZERO_ADDRESS ? undefined : order.brokerAddr,
1062
+ brokerAddr: order.brokerAddr == constants_1.ZERO_ADDRESS ? undefined : order.brokerAddr.toString(),
1061
1063
  brokerSignature: order.brokerSignature == "0x" ? undefined : order.brokerSignature,
1062
1064
  stopPrice: stopPrice,
1063
1065
  leverage: Number(order.leverageTDR) / 100,
@@ -1082,17 +1084,17 @@ class PerpetualDataHandler {
1082
1084
  PerpetualDataHandler.checkOrder(order, perpStaticInfo);
1083
1085
  // translate order
1084
1086
  let flags = PerpetualDataHandler._orderTypeToFlag(order);
1085
- let brokerSig = order.brokerSignature == undefined ? [] : order.brokerSignature;
1087
+ let brokerSig = order.brokerSignature == undefined ? "0x" : order.brokerSignature;
1086
1088
  let perpetualId = PerpetualDataHandler.symbolToPerpetualId(order.symbol, perpStaticInfo);
1087
1089
  let fAmount;
1088
- if (order.side == constants_2.BUY_SIDE) {
1090
+ if (order.side == constants_1.BUY_SIDE) {
1089
1091
  fAmount = (0, d8XMath_1.floatToABK64x64)(Math.abs(order.quantity));
1090
1092
  }
1091
- else if (order.side == constants_2.SELL_SIDE) {
1093
+ else if (order.side == constants_1.SELL_SIDE) {
1092
1094
  fAmount = (0, d8XMath_1.floatToABK64x64)(-Math.abs(order.quantity));
1093
1095
  }
1094
1096
  else {
1095
- throw Error(`invalid side in order spec, use ${constants_2.BUY_SIDE} or ${constants_2.SELL_SIDE}`);
1097
+ throw Error(`invalid side in order spec, use ${constants_1.BUY_SIDE} or ${constants_1.SELL_SIDE}`);
1096
1098
  }
1097
1099
  let fLimitPrice;
1098
1100
  if (order.limitPrice == undefined) {
@@ -1100,20 +1102,20 @@ class PerpetualDataHandler {
1100
1102
  // the trade to go through
1101
1103
  // Also: stop orders always have limits set, so even for this case
1102
1104
  // 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);
1105
+ fLimitPrice = order.side == constants_1.BUY_SIDE ? constants_1.MAX_64x64 : BigInt(0);
1104
1106
  }
1105
1107
  else {
1106
1108
  fLimitPrice = (0, d8XMath_1.floatToABK64x64)(order.limitPrice);
1107
1109
  }
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 iDeadline = order.deadline == undefined ? Date.now() / 1000 + constants_1.ORDER_MAX_DURATION_SEC : order.deadline;
1111
+ let fTriggerPrice = order.stopPrice == undefined ? BigInt(0) : (0, d8XMath_1.floatToABK64x64)(order.stopPrice);
1110
1112
  let smOrder = {
1111
1113
  flags: flags,
1112
1114
  iPerpetualId: perpetualId,
1113
1115
  brokerFeeTbps: order.brokerFeeTbps == undefined ? 0 : order.brokerFeeTbps,
1114
1116
  traderAddr: traderAddr,
1115
- brokerAddr: order.brokerAddr == undefined ? constants_2.ZERO_ADDRESS : order.brokerAddr,
1116
- executorAddr: constants_2.ZERO_ADDRESS,
1117
+ brokerAddr: order.brokerAddr == undefined ? constants_1.ZERO_ADDRESS : order.brokerAddr,
1118
+ executorAddr: constants_1.ZERO_ADDRESS,
1117
1119
  brokerSignature: brokerSig,
1118
1120
  fAmount: fAmount,
1119
1121
  fLimitPrice: fLimitPrice,
@@ -1146,9 +1148,9 @@ class PerpetualDataHandler {
1146
1148
  leverageTDR: scOrder.leverageTDR,
1147
1149
  iDeadline: scOrder.iDeadline,
1148
1150
  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,
1151
+ parentChildDigest1: parentChildIds ? parentChildIds[0] : constants_1.ZERO_ORDER_ID,
1152
+ parentChildDigest2: parentChildIds ? parentChildIds[1] : constants_1.ZERO_ORDER_ID,
1153
+ callbackTarget: constants_1.ZERO_ADDRESS,
1152
1154
  };
1153
1155
  }
1154
1156
  /**
@@ -1182,28 +1184,29 @@ class PerpetualDataHandler {
1182
1184
  executionTimestamp: obOrder.executionTimestamp,
1183
1185
  };
1184
1186
  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) {
1187
+ if (obOrder.parentChildDigest1.toString() != constants_1.ZERO_ORDER_ID ||
1188
+ obOrder.parentChildDigest2.toString() != constants_1.ZERO_ORDER_ID) {
1187
1189
  order.parentChildOrderIds = [obOrder.parentChildDigest1.toString(), obOrder.parentChildDigest2.toString()];
1188
1190
  }
1189
1191
  return order;
1190
1192
  }
1191
1193
  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);
1194
+ // TODO: check
1195
+ let flag = BigInt(orderFlags);
1196
+ let isLimit = (0, utils_1.containsFlag)(flag, constants_1.MASK_LIMIT_ORDER);
1197
+ let hasLimit = BigInt(orderLimitPrice) != 0n || BigInt(orderLimitPrice) != constants_1.MAX_64x64;
1198
+ let isStop = (0, utils_1.containsFlag)(flag, constants_1.MASK_STOP_ORDER);
1196
1199
  if (isStop && hasLimit) {
1197
- return constants_2.ORDER_TYPE_STOP_LIMIT;
1200
+ return constants_1.ORDER_TYPE_STOP_LIMIT;
1198
1201
  }
1199
1202
  else if (isStop && !hasLimit) {
1200
- return constants_2.ORDER_TYPE_STOP_MARKET;
1203
+ return constants_1.ORDER_TYPE_STOP_MARKET;
1201
1204
  }
1202
1205
  else if (isLimit && !isStop) {
1203
- return constants_2.ORDER_TYPE_LIMIT;
1206
+ return constants_1.ORDER_TYPE_LIMIT;
1204
1207
  }
1205
1208
  else {
1206
- return constants_2.ORDER_TYPE_MARKET;
1209
+ return constants_1.ORDER_TYPE_MARKET;
1207
1210
  }
1208
1211
  }
1209
1212
  /**
@@ -1216,38 +1219,38 @@ class PerpetualDataHandler {
1216
1219
  let flag;
1217
1220
  order.type = order.type.toUpperCase();
1218
1221
  switch (order.type) {
1219
- case constants_2.ORDER_TYPE_LIMIT:
1220
- flag = constants_2.MASK_LIMIT_ORDER;
1222
+ case constants_1.ORDER_TYPE_LIMIT:
1223
+ flag = constants_1.MASK_LIMIT_ORDER;
1221
1224
  break;
1222
- case constants_2.ORDER_TYPE_MARKET:
1223
- flag = constants_2.MASK_MARKET_ORDER;
1225
+ case constants_1.ORDER_TYPE_MARKET:
1226
+ flag = constants_1.MASK_MARKET_ORDER;
1224
1227
  break;
1225
- case constants_2.ORDER_TYPE_STOP_MARKET:
1226
- flag = constants_2.MASK_STOP_ORDER;
1228
+ case constants_1.ORDER_TYPE_STOP_MARKET:
1229
+ flag = constants_1.MASK_STOP_ORDER;
1227
1230
  break;
1228
- case constants_2.ORDER_TYPE_STOP_LIMIT:
1229
- flag = constants_2.MASK_STOP_ORDER;
1231
+ case constants_1.ORDER_TYPE_STOP_LIMIT:
1232
+ flag = constants_1.MASK_STOP_ORDER;
1230
1233
  break;
1231
1234
  default: {
1232
1235
  throw Error(`Order type ${order.type} not found.`);
1233
1236
  }
1234
1237
  }
1235
1238
  if (order.keepPositionLvg != undefined && order.keepPositionLvg) {
1236
- flag = (0, utils_1.combineFlags)(flag, constants_2.MASK_KEEP_POS_LEVERAGE);
1239
+ flag = (0, utils_1.combineFlags)(flag, constants_1.MASK_KEEP_POS_LEVERAGE);
1237
1240
  }
1238
1241
  if (order.reduceOnly != undefined && order.reduceOnly) {
1239
- flag = (0, utils_1.combineFlags)(flag, constants_2.MASK_CLOSE_ONLY);
1242
+ flag = (0, utils_1.combineFlags)(flag, constants_1.MASK_CLOSE_ONLY);
1240
1243
  }
1241
- if ((order.type == constants_2.ORDER_TYPE_LIMIT || order.type == constants_2.ORDER_TYPE_STOP_LIMIT) && order.limitPrice == undefined) {
1244
+ if ((order.type == constants_1.ORDER_TYPE_LIMIT || order.type == constants_1.ORDER_TYPE_STOP_LIMIT) && order.limitPrice == undefined) {
1242
1245
  throw Error(`Order type ${order.type} requires limit price.`);
1243
1246
  }
1244
- if ((order.type == constants_2.ORDER_TYPE_STOP_MARKET || order.type == constants_2.ORDER_TYPE_STOP_LIMIT) && order.stopPrice == undefined) {
1247
+ if ((order.type == constants_1.ORDER_TYPE_STOP_MARKET || order.type == constants_1.ORDER_TYPE_STOP_LIMIT) && order.stopPrice == undefined) {
1245
1248
  throw Error(`Order type ${order.type} requires trigger price.`);
1246
1249
  }
1247
- if ((order.type == constants_2.ORDER_TYPE_MARKET || order.type == constants_2.ORDER_TYPE_LIMIT) && order.stopPrice != undefined) {
1250
+ if ((order.type == constants_1.ORDER_TYPE_MARKET || order.type == constants_1.ORDER_TYPE_LIMIT) && order.stopPrice != undefined) {
1248
1251
  throw Error(`Order type ${order.type} has no trigger price.`);
1249
1252
  }
1250
- if (order.type != constants_2.ORDER_TYPE_STOP_LIMIT && order.type != constants_2.ORDER_TYPE_STOP_MARKET && order.stopPrice != undefined) {
1253
+ if (order.type != constants_1.ORDER_TYPE_STOP_LIMIT && order.type != constants_1.ORDER_TYPE_STOP_MARKET && order.stopPrice != undefined) {
1251
1254
  throw Error(`Order type ${order.type} has no trigger price.`);
1252
1255
  }
1253
1256
  return flag;
@@ -1300,7 +1303,7 @@ class PerpetualDataHandler {
1300
1303
  * @returns NodeSDKConfig
1301
1304
  */
1302
1305
  static getConfigByName(name, version) {
1303
- let configFile = constants_2.DEFAULT_CONFIG.filter((c) => c.name == name);
1306
+ let configFile = constants_1.DEFAULT_CONFIG.filter((c) => c.name == name);
1304
1307
  if (configFile.length == 0) {
1305
1308
  throw Error(`No SDK config found with name ${name}.`);
1306
1309
  }
@@ -1337,7 +1340,7 @@ class PerpetualDataHandler {
1337
1340
  * @returns NodeSDKConfig
1338
1341
  */
1339
1342
  static getConfigByChainId(chainId, version) {
1340
- let configFile = constants_2.DEFAULT_CONFIG.filter((c) => c.chainId == chainId);
1343
+ let configFile = constants_1.DEFAULT_CONFIG.filter((c) => c.chainId == chainId);
1341
1344
  if (configFile.length == 0) {
1342
1345
  throw Error(`No SDK config found for chain ID ${chainId}.`);
1343
1346
  }
@@ -1370,7 +1373,7 @@ class PerpetualDataHandler {
1370
1373
  * main();
1371
1374
  */
1372
1375
  static getAvailableConfigs() {
1373
- let configFile = constants_2.DEFAULT_CONFIG;
1376
+ let configFile = constants_1.DEFAULT_CONFIG;
1374
1377
  let ids = new Set();
1375
1378
  for (let k = 0; k < configFile.length; k++) {
1376
1379
  const el = configFile[k].chainId.toString() + "; " + configFile[k].name;
@@ -1379,13 +1382,13 @@ class PerpetualDataHandler {
1379
1382
  return ids;
1380
1383
  }
1381
1384
  /**
1382
- * Get the ABI of a function in a given contract
1385
+ * Get the ABI of a function in a given contract. Undefined if it doesn't exist.
1383
1386
  * @param contract A contract instance, e.g. this.proxyContract
1384
1387
  * @param functionName Name of the function whose ABI we want
1385
1388
  * @returns Function ABI as a single JSON string
1386
1389
  */
1387
1390
  static _getABIFromContract(contract, functionName) {
1388
- return contract.interface.getFunction(functionName).format(abi_1.FormatTypes.full);
1391
+ return contract.interface.getFunction(functionName)?.format("full");
1389
1392
  }
1390
1393
  /**
1391
1394
  * Gets the pool index (starting at 0 in exchangeInfo, not ID!) corresponding to a given symbol.
@@ -1503,9 +1506,12 @@ class PerpetualDataHandler {
1503
1506
  static checkOrder(order,
1504
1507
  // traderAccount: MarginAccount,
1505
1508
  perpStaticInfo) {
1509
+ if (!perpStaticInfo.has(order.symbol)) {
1510
+ throw new Error(`Perpetual not found for symbol ${order.symbol}`);
1511
+ }
1506
1512
  // 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}`);
1513
+ if (order.side != constants_1.BUY_SIDE && order.side != constants_1.SELL_SIDE) {
1514
+ throw Error(`order side must be ${constants_1.BUY_SIDE} or ${constants_1.SELL_SIDE}`);
1509
1515
  }
1510
1516
  // check amount
1511
1517
  let lotSize = perpStaticInfo.get(order.symbol).lotSizeBC;
@@ -1519,7 +1525,7 @@ class PerpetualDataHandler {
1519
1525
  throw Error(`trade amount too small: ${order.quantity} ${perpStaticInfo.get(order.symbol).S2Symbol}`);
1520
1526
  }
1521
1527
  // check limit price
1522
- if (order.side == constants_2.BUY_SIDE && order.limitPrice != undefined && order.limitPrice <= 0) {
1528
+ if (order.side == constants_1.BUY_SIDE && order.limitPrice != undefined && order.limitPrice <= 0) {
1523
1529
  throw Error(`invalid limit price for buy order: ${order.limitPrice}`);
1524
1530
  }
1525
1531
  // broker fee
@@ -1539,14 +1545,14 @@ class PerpetualDataHandler {
1539
1545
  static fromClientOrderToTypeSafeOrder(order) {
1540
1546
  return {
1541
1547
  iPerpetualId: +order.iPerpetualId.toString(),
1542
- fLimitPrice: BigInt(bignumber_1.BigNumber.from(order.fLimitPrice).toString()),
1548
+ fLimitPrice: order.fLimitPrice,
1543
1549
  leverageTDR: +order.leverageTDR.toString(),
1544
1550
  executionTimestamp: +order.executionTimestamp.toString(),
1545
- flags: BigInt(bignumber_1.BigNumber.from(order.flags).toString()),
1551
+ flags: BigInt(order.flags),
1546
1552
  iDeadline: +order.iDeadline.toString(),
1547
1553
  brokerAddr: order.brokerAddr,
1548
- fTriggerPrice: BigInt(bignumber_1.BigNumber.from(order.fTriggerPrice).toString()),
1549
- fAmount: BigInt(bignumber_1.BigNumber.from(order.fAmount).toString()),
1554
+ fTriggerPrice: order.fTriggerPrice,
1555
+ fAmount: order.fAmount,
1550
1556
  parentChildDigest1: order.parentChildDigest1,
1551
1557
  traderAddr: order.traderAddr,
1552
1558
  parentChildDigest2: order.parentChildDigest2,