@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
@@ -1,10 +1,6 @@
1
- import { Interface } from "@ethersproject/abi";
2
- import { BigNumber } from "@ethersproject/bignumber";
3
- import { Contract } from "@ethersproject/contracts";
4
- import { Provider, StaticJsonRpcProvider } from "@ethersproject/providers";
5
- import { formatUnits } from "@ethersproject/units";
1
+ import { Contract, formatUnits, Interface, JsonRpcProvider } from "ethers";
6
2
  import { BUY_SIDE, CLOSED_SIDE, COLLATERAL_CURRENCY_BASE, COLLATERAL_CURRENCY_QUANTO, CollaterlCCY, ERC20_ABI, MULTICALL_ADDRESS, ORDER_TYPE_MARKET, PERP_STATE_STR, SELL_SIDE, ZERO_ADDRESS, ZERO_ORDER_ID, } from "./constants";
7
- import { ERC20__factory, LimitOrderBook__factory, Multicall3__factory, } from "./contracts";
3
+ import { ERC20__factory, Multicall3__factory, } from "./contracts";
8
4
  import { ABK64x64ToFloat, calculateLiquidationPriceCollateralBase, calculateLiquidationPriceCollateralQuanto, calculateLiquidationPriceCollateralQuote, dec18ToFloat, decNToFloat, floatToABK64x64, getDepositAmountForLvgTrade, getMaxSignedPositionSize, } from "./d8XMath";
9
5
  import PerpetualDataHandler from "./perpetualDataHandler";
10
6
  import { contractSymbolToSymbol, toBytes4 } from "./utils";
@@ -43,14 +39,14 @@ export default class MarketData extends PerpetualDataHandler {
43
39
  * @param providerOrMarketData optional provider or existing market data instance
44
40
  */
45
41
  async createProxyInstance(providerOrMarketData, overrides) {
46
- if (providerOrMarketData == undefined || Provider.isProvider(providerOrMarketData)) {
47
- this.provider = providerOrMarketData ?? new StaticJsonRpcProvider(this.nodeURL);
42
+ if (providerOrMarketData == undefined || !("createProxyInstance" in providerOrMarketData)) {
43
+ this.provider = providerOrMarketData ?? new JsonRpcProvider(this.nodeURL);
48
44
  await this.initContractsAndData(this.provider, overrides);
49
45
  }
50
46
  else {
51
47
  const mktData = providerOrMarketData;
52
48
  this.nodeURL = mktData.config.nodeURL;
53
- this.provider = new StaticJsonRpcProvider(mktData.config.nodeURL);
49
+ this.provider = new JsonRpcProvider(mktData.config.nodeURL, mktData.network, { staticNetwork: true });
54
50
  this.proxyContract = new Contract(mktData.getProxyAddress(), this.config.proxyABI, this.provider);
55
51
  this.multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, this.provider);
56
52
  ({
@@ -72,7 +68,7 @@ export default class MarketData extends PerpetualDataHandler {
72
68
  if (this.proxyContract == null) {
73
69
  throw Error("no proxy contract initialized. Use createProxyInstance().");
74
70
  }
75
- return this.proxyContract.address;
71
+ return this.proxyContract.target.toString();
76
72
  }
77
73
  /**
78
74
  * Get the pre-computed triangulations
@@ -139,7 +135,7 @@ export default class MarketData extends PerpetualDataHandler {
139
135
  if (overrides) {
140
136
  ({ rpcURL, ...overrides } = overrides);
141
137
  }
142
- const provider = new StaticJsonRpcProvider(rpcURL ?? this.nodeURL);
138
+ const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
143
139
  return await MarketData._exchangeInfo(new Contract(this.proxyAddr, this.config.proxyABI, provider), Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, provider), this.poolStaticInfos, this.symbolToPerpStaticInfo, this.perpetualIdToSymbol, this.nestedPerpetualIDs, this.symbolList, this.priceFeedGetter, this.oraclefactoryAddr, // not undefined if proxy contract was initialized
144
140
  overrides);
145
141
  }
@@ -180,7 +176,7 @@ export default class MarketData extends PerpetualDataHandler {
180
176
  if (overrides) {
181
177
  ({ rpcURL, ...overrides } = overrides);
182
178
  }
183
- const provider = new StaticJsonRpcProvider(rpcURL ?? this.nodeURL);
179
+ const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
184
180
  if (symbols.length < 1) {
185
181
  throw new Error(`No perpetuals found for symbol ${symbol}`);
186
182
  }
@@ -202,7 +198,7 @@ export default class MarketData extends PerpetualDataHandler {
202
198
  */
203
199
  async _openOrdersOfPerpetual(traderAddr, symbol, provider, overrides) {
204
200
  // open orders requested only for given symbol
205
- const orderBookContract = LimitOrderBook__factory.connect(this.getOrderBookContract(symbol).address, provider);
201
+ const orderBookContract = this.getOrderBookContract(symbol, provider);
206
202
  const orders = await MarketData.openOrdersOnOrderBook(traderAddr, orderBookContract, this.symbolToPerpStaticInfo, overrides);
207
203
  const digests = await MarketData.orderIdsOfTrader(traderAddr, orderBookContract, overrides);
208
204
  return { orders: orders, orderIds: digests };
@@ -218,7 +214,7 @@ export default class MarketData extends PerpetualDataHandler {
218
214
  // filter by perpetuals with valid order book
219
215
  symbols = symbols.filter((symbol) => this.symbolToPerpStaticInfo.get(symbol)?.limitOrderBookAddr !== ZERO_ADDRESS);
220
216
  // open orders requested only for given symbol
221
- const orderBookContracts = symbols.map((symbol) => LimitOrderBook__factory.connect(this.getOrderBookContract(symbol).address, provider));
217
+ const orderBookContracts = symbols.map((symbol) => this.getOrderBookContract(symbol, provider), this);
222
218
  const multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, provider);
223
219
  const { orders, digests } = await MarketData._openOrdersOnOrderBooks(traderAddr, orderBookContracts, multicall, this.symbolToPerpStaticInfo, overrides);
224
220
  return symbols.map((_symbol, i) => ({ orders: orders[i], orderIds: digests[i] }));
@@ -263,7 +259,7 @@ export default class MarketData extends PerpetualDataHandler {
263
259
  if (overrides) {
264
260
  ({ rpcURL, ...overrides } = overrides);
265
261
  }
266
- const provider = new StaticJsonRpcProvider(rpcURL ?? this.nodeURL);
262
+ const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
267
263
  if (symbols.length < 1) {
268
264
  throw new Error(`No perpetuals found for symbol ${symbol}`);
269
265
  }
@@ -366,19 +362,19 @@ export default class MarketData extends PerpetualDataHandler {
366
362
  const proxyCalls = [
367
363
  // 0: traderState
368
364
  {
369
- target: this.proxyContract.address,
365
+ target: this.proxyContract.target,
370
366
  allowFailure: true,
371
367
  callData: this.proxyContract.interface.encodeFunctionData("getTraderState", [perpId, traderAddr, fS2S3]),
372
368
  },
373
369
  // 1: ammState
374
370
  {
375
- target: this.proxyContract.address,
371
+ target: this.proxyContract.target,
376
372
  allowFailure: true,
377
373
  callData: this.proxyContract.interface.encodeFunctionData("getAMMState", [perpId, fS2S3]),
378
374
  },
379
375
  // 2: exchangeFee
380
376
  {
381
- target: this.proxyContract.address,
377
+ target: this.proxyContract.target,
382
378
  allowFailure: false,
383
379
  callData: this.proxyContract.interface.encodeFunctionData("queryExchangeFee", [
384
380
  poolId,
@@ -388,7 +384,7 @@ export default class MarketData extends PerpetualDataHandler {
388
384
  },
389
385
  // 3: perpetual price
390
386
  {
391
- target: this.proxyContract.address,
387
+ target: this.proxyContract.target,
392
388
  allowFailure: true,
393
389
  callData: this.proxyContract.interface.encodeFunctionData("queryPerpetualPrice", [
394
390
  perpId,
@@ -398,31 +394,27 @@ export default class MarketData extends PerpetualDataHandler {
398
394
  },
399
395
  // 4: max long pos
400
396
  {
401
- target: this.proxyContract.address,
397
+ target: this.proxyContract.target,
402
398
  allowFailure: false,
403
399
  callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
404
400
  perpId,
405
- account
406
- ? floatToABK64x64(account.positionNotionalBaseCCY * (account.side === BUY_SIDE ? 1 : -1))
407
- : BigNumber.from(0),
401
+ account ? floatToABK64x64(account.positionNotionalBaseCCY * (account.side === BUY_SIDE ? 1 : -1)) : 0n,
408
402
  true,
409
403
  ]),
410
404
  },
411
405
  // 5: max short pos
412
406
  {
413
- target: this.proxyContract.address,
407
+ target: this.proxyContract.target,
414
408
  allowFailure: false,
415
409
  callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
416
410
  perpId,
417
- account
418
- ? floatToABK64x64(account.positionNotionalBaseCCY * (account.side === BUY_SIDE ? 1 : -1))
419
- : BigNumber.from(0),
411
+ account ? floatToABK64x64(account.positionNotionalBaseCCY * (account.side === BUY_SIDE ? 1 : -1)) : 0n,
420
412
  false,
421
413
  ]),
422
414
  },
423
415
  ];
424
416
  // multicall
425
- const encodedResults = await this.multicall.callStatic.aggregate3(proxyCalls, (overrides || {}));
417
+ const encodedResults = await this.multicall.aggregate3.staticCall(proxyCalls, (overrides || {}));
426
418
  // positionRisk to apply this trade on: if not given, defaults to the current trader's position
427
419
  if (!account) {
428
420
  let traderState;
@@ -504,8 +496,8 @@ export default class MarketData extends PerpetualDataHandler {
504
496
  // max sell
505
497
  const fMaxShort = this.proxyContract.interface.decodeFunctionResult("getMaxSignedOpenTradeSizeForPos", encodedResults[5].returnData)[0];
506
498
  const maxShortTrade = account.side == SELL_SIDE
507
- ? Math.max(0, ABK64x64ToFloat(fMaxShort.abs()) - (accountGiven ? 0 : Math.abs(account.positionNotionalBaseCCY)))
508
- : ABK64x64ToFloat(fMaxShort.abs()) + Math.abs(account.positionNotionalBaseCCY);
499
+ ? Math.max(0, Math.abs(ABK64x64ToFloat(fMaxShort)) - (accountGiven ? 0 : Math.abs(account.positionNotionalBaseCCY)))
500
+ : Math.abs(ABK64x64ToFloat(fMaxShort)) + Math.abs(account.positionNotionalBaseCCY);
509
501
  // Current state:
510
502
  let lotSizeBC = MarketData._getLotSize(order.symbol, this.symbolToPerpStaticInfo);
511
503
  // Too small, no change to account
@@ -529,7 +521,7 @@ export default class MarketData extends PerpetualDataHandler {
529
521
  let newSide = newPositionBC > 0 ? BUY_SIDE : newPositionBC < 0 ? SELL_SIDE : CLOSED_SIDE;
530
522
  if (tradingFeeTbps === undefined) {
531
523
  // use usual input if not overriden
532
- tradingFeeTbps = exchangeFeeTbps + (order.brokerFeeTbps ?? 0);
524
+ tradingFeeTbps = Number(exchangeFeeTbps) + (order.brokerFeeTbps ?? 0);
533
525
  }
534
526
  let tradingFeeCC = (Math.abs(tradeAmountBC) * tradingFeeTbps * 1e-5 * S2) / S3;
535
527
  let referralFeeCC = this.symbolToPerpStaticInfo.get(account.symbol).referralRebate;
@@ -904,7 +896,7 @@ export default class MarketData extends PerpetualDataHandler {
904
896
  const proxyCalls = [
905
897
  // 0: traderState
906
898
  {
907
- target: this.proxyContract.address,
899
+ target: this.proxyContract.target,
908
900
  allowFailure: false,
909
901
  callData: this.proxyContract.interface.encodeFunctionData("getTraderState", [perpId, traderAddr, fS2S3]),
910
902
  },
@@ -916,7 +908,7 @@ export default class MarketData extends PerpetualDataHandler {
916
908
  },
917
909
  // 2: exchange fee
918
910
  {
919
- target: this.proxyContract.address,
911
+ target: this.proxyContract.target,
920
912
  allowFailure: false,
921
913
  callData: this.proxyContract.interface.encodeFunctionData("queryExchangeFee", [
922
914
  poolId,
@@ -926,7 +918,7 @@ export default class MarketData extends PerpetualDataHandler {
926
918
  },
927
919
  ];
928
920
  // multicall
929
- const encodedResults = await this.multicall.callStatic.aggregate3(proxyCalls, overrides || {});
921
+ const encodedResults = await this.multicall.aggregate3.staticCall(proxyCalls, overrides || {});
930
922
  // position risk
931
923
  const idxNotional = 4;
932
924
  const traderState = this.proxyContract.interface.decodeFunctionResult("getTraderState", encodedResults[0].returnData)[0];
@@ -935,14 +927,14 @@ export default class MarketData extends PerpetualDataHandler {
935
927
  indexPriceInfo[1],
936
928
  ]);
937
929
  // fee rate
938
- const feeRate = 1e-5 *
939
- this.proxyContract.interface.decodeFunctionResult("queryExchangeFee", encodedResults[2].returnData)[0];
930
+ const feeRateTbps = this.proxyContract.interface.decodeFunctionResult("queryExchangeFee", encodedResults[2].returnData)[0];
931
+ const feeRate = 1e-5 * Number(feeRateTbps);
940
932
  // Max based on margin requirements:
941
933
  const walletBalance = decNToFloat(IERC20.decodeFunctionResult("balanceOf", encodedResults[1].returnData)[0], poolInfo.poolSettleTokenDecimals);
942
934
  const proxyCalls2 = [
943
935
  // 0: max long
944
936
  {
945
- target: this.proxyContract.address,
937
+ target: this.proxyContract.target,
946
938
  allowFailure: false,
947
939
  callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
948
940
  perpId,
@@ -952,7 +944,7 @@ export default class MarketData extends PerpetualDataHandler {
952
944
  },
953
945
  // 1: max short
954
946
  {
955
- target: this.proxyContract.address,
947
+ target: this.proxyContract.target,
956
948
  allowFailure: false,
957
949
  callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
958
950
  perpId,
@@ -962,7 +954,7 @@ export default class MarketData extends PerpetualDataHandler {
962
954
  },
963
955
  ];
964
956
  // multicall
965
- const encodedResults2 = await this.multicall.callStatic.aggregate3(proxyCalls2, overrides || {});
957
+ const encodedResults2 = await this.multicall.aggregate3.staticCall(proxyCalls2, overrides || {});
966
958
  // Max based on perp:
967
959
  // max buy
968
960
  const maxLongOrderPerp = ABK64x64ToFloat(this.proxyContract.interface.decodeFunctionResult("getMaxSignedOpenTradeSizeForPos", encodedResults2[0].returnData)[0]);
@@ -1010,7 +1002,7 @@ export default class MarketData extends PerpetualDataHandler {
1010
1002
  async maxSignedPosition(side, symbol, overrides) {
1011
1003
  let perpId = this.getPerpIdFromSymbol(symbol);
1012
1004
  let isBuy = side == BUY_SIDE;
1013
- let maxSignedPos = await this.proxyContract.getMaxSignedOpenTradeSizeForPos(perpId, BigNumber.from(0), isBuy, overrides || {});
1005
+ let maxSignedPos = await this.proxyContract.getMaxSignedOpenTradeSizeForPos(perpId, 0n, isBuy, overrides || {});
1014
1006
  return ABK64x64ToFloat(maxSignedPos);
1015
1007
  }
1016
1008
  /**
@@ -1066,7 +1058,7 @@ export default class MarketData extends PerpetualDataHandler {
1066
1058
  throw Error("no proxy contract initialized. Use createProxyInstance().");
1067
1059
  }
1068
1060
  const orderBookContract = this.getOrderBookContract(symbol);
1069
- const status = (await orderBookContract.getOrderStatus(orderId, overrides || {}));
1061
+ const status = Number(await orderBookContract.getOrderStatus(orderId, overrides || {}));
1070
1062
  return status;
1071
1063
  }
1072
1064
  /**
@@ -1095,12 +1087,12 @@ export default class MarketData extends PerpetualDataHandler {
1095
1087
  }
1096
1088
  const orderBookContract = this.getOrderBookContract(symbol);
1097
1089
  const statusCalls = orderId.map((id) => ({
1098
- target: orderBookContract.address,
1090
+ target: orderBookContract.target,
1099
1091
  allowFailure: false,
1100
1092
  callData: orderBookContract.interface.encodeFunctionData("getOrderStatus", [id]),
1101
1093
  }));
1102
1094
  // multicall
1103
- const encodedResults = await this.multicall.callStatic.aggregate3(statusCalls, overrides || {});
1095
+ const encodedResults = await this.multicall.aggregate3.staticCall(statusCalls, overrides || {});
1104
1096
  // order status
1105
1097
  return encodedResults.map((encodedResult) => orderBookContract.interface.decodeFunctionResult("getOrderStatus", encodedResult.returnData)[0]);
1106
1098
  }
@@ -1306,17 +1298,17 @@ export default class MarketData extends PerpetualDataHandler {
1306
1298
  const contracts = orderBookContracts.filter((_c, i) => haveMoreOrders[i]);
1307
1299
  // prepare calls
1308
1300
  const ordersCalls = contracts.map((c, i) => ({
1309
- target: c.address,
1301
+ target: c.target,
1310
1302
  allowFailure: true,
1311
1303
  callData: c.interface.encodeFunctionData("getOrders", [traderAddr, from[i], bulkSize]),
1312
1304
  }));
1313
1305
  const digestsCalls = contracts.map((c, i) => ({
1314
- target: c.address,
1306
+ target: c.target,
1315
1307
  allowFailure: true,
1316
1308
  callData: c.interface.encodeFunctionData("limitDigestsOfTrader", [traderAddr, from[i], bulkSize]),
1317
1309
  }));
1318
1310
  // call
1319
- const encodedResults = await multicall.callStatic.aggregate3(ordersCalls.concat(digestsCalls), overrides || {});
1311
+ const encodedResults = await multicall.aggregate3.staticCall(ordersCalls.concat(digestsCalls), overrides || {});
1320
1312
  const encodedOrders = encodedResults.slice(0, ordersCalls.length);
1321
1313
  const encodedDigests = encodedResults.slice(ordersCalls.length);
1322
1314
  // parse
@@ -1324,19 +1316,19 @@ export default class MarketData extends PerpetualDataHandler {
1324
1316
  .slice(0, ordersCalls.length)
1325
1317
  .map(({ success, returnData }, i) => {
1326
1318
  if (!success)
1327
- throw new Error(`Failed to get orders for order book ${contracts[i].address}`);
1319
+ throw new Error(`Failed to get orders for order book ${contracts[i].target}`);
1328
1320
  return contracts[i].interface.decodeFunctionResult("getOrders", returnData)[0];
1329
1321
  });
1330
1322
  const allDigests = encodedDigests.map(({ success, returnData }, i) => {
1331
1323
  if (!success)
1332
- throw new Error(`Failed to get orders for order book ${contracts[i].address}`);
1324
+ throw new Error(`Failed to get orders for order book ${contracts[i].target}`);
1333
1325
  return contracts[i].interface.decodeFunctionResult("limitDigestsOfTrader", returnData)[0];
1334
1326
  });
1335
1327
  // arrange
1336
1328
  for (let j = 0; j < contracts.length; j++) {
1337
1329
  let orders = allOrders[j].filter((o) => o.traderAddr != ZERO_ADDRESS);
1338
1330
  let digests = allDigests[j].filter((d) => d != ZERO_ORDER_ID);
1339
- let i = orderBookContracts.findIndex((c) => c.address == contracts[j].address);
1331
+ let i = orderBookContracts.findIndex((c) => c.target == contracts[j].target);
1340
1332
  let k = 0;
1341
1333
  while (k < orders.length && orders[k].traderAddr != ZERO_ADDRESS) {
1342
1334
  userFriendlyOrders[i].push(PerpetualDataHandler.fromClientOrder(orders[k], symbolToPerpStaticInfo));
@@ -1360,7 +1352,7 @@ export default class MarketData extends PerpetualDataHandler {
1360
1352
  let digestsRaw = await orderBookContract.limitDigestsOfTrader(traderAddr, 0, 15, overrides || {});
1361
1353
  let k = 0;
1362
1354
  let digests = [];
1363
- while (k < digestsRaw.length && BigNumber.from(digestsRaw[k]).gt(0)) {
1355
+ while (k < digestsRaw.length && BigInt(digestsRaw[k]) > 0n) {
1364
1356
  digests.push(digestsRaw[k]);
1365
1357
  k++;
1366
1358
  }
@@ -1536,7 +1528,7 @@ export default class MarketData extends PerpetualDataHandler {
1536
1528
  let symbol3s = _perpetualIdToSymbol.get(id);
1537
1529
  let info = _symbolToPerpStaticInfo.get(symbol3s);
1538
1530
  let S2 = floatToABK64x64(_idxPriceMap.get(info.S2Symbol)[0]);
1539
- let S3 = BigNumber.from(0);
1531
+ let S3 = 0n;
1540
1532
  if (info.S3Symbol != "") {
1541
1533
  S3 = floatToABK64x64(_idxPriceMap.get(info.S3Symbol)[0]);
1542
1534
  }
@@ -1544,13 +1536,13 @@ export default class MarketData extends PerpetualDataHandler {
1544
1536
  indexPrices.push(S3);
1545
1537
  }
1546
1538
  proxyCalls.push({
1547
- target: _proxyContract.address,
1539
+ target: _proxyContract.target,
1548
1540
  allowFailure: false,
1549
1541
  callData: _proxyContract.interface.encodeFunctionData("queryMidPrices", [perpetualIDChunks[k], indexPrices]),
1550
1542
  });
1551
1543
  }
1552
1544
  // multicall
1553
- const encodedResults = await _multicall.callStatic.aggregate3(proxyCalls, overrides || {});
1545
+ const encodedResults = await _multicall.aggregate3.staticCall(proxyCalls, overrides || {});
1554
1546
  // apply results
1555
1547
  for (let k = 0; k < perpetualIDChunks.length; k++) {
1556
1548
  let fMidPrice = _proxyContract.interface.decodeFunctionResult("queryMidPrices", encodedResults[k].returnData)[0];
@@ -1581,13 +1573,13 @@ export default class MarketData extends PerpetualDataHandler {
1581
1573
  const proxyCalls = [
1582
1574
  // getLiquidityPools
1583
1575
  {
1584
- target: _proxyContract.address,
1576
+ target: _proxyContract.target,
1585
1577
  allowFailure: false,
1586
1578
  callData: _proxyContract.interface.encodeFunctionData("getLiquidityPools", [iFrom, iFrom + chunkSize - 1]), // from-to includes "to"
1587
1579
  },
1588
1580
  // getPerpetuals
1589
1581
  {
1590
- target: _proxyContract.address,
1582
+ target: _proxyContract.target,
1591
1583
  allowFailure: false,
1592
1584
  callData: _proxyContract.interface.encodeFunctionData("getPerpetuals", [
1593
1585
  _nestedPerpetualIDs.slice(iFrom - 1, iFrom + chunkSize - 1).flat(), // from-to does not include "to"
@@ -1595,7 +1587,7 @@ export default class MarketData extends PerpetualDataHandler {
1595
1587
  },
1596
1588
  ];
1597
1589
  // multicall
1598
- const encodedResults = await _multicall.callStatic.aggregate3(proxyCalls, overrides || {});
1590
+ const encodedResults = await _multicall.aggregate3.staticCall(proxyCalls, overrides || {});
1599
1591
  const pools = _proxyContract.interface.decodeFunctionResult("getLiquidityPools", encodedResults[0].returnData)[0];
1600
1592
  const perps = _proxyContract.interface.decodeFunctionResult("getPerpetuals", encodedResults[1].returnData)[0];
1601
1593
  poolStates = poolStates.concat(MarketData._poolDataToPoolState(pools, _poolStaticInfos));
@@ -1634,7 +1626,7 @@ export default class MarketData extends PerpetualDataHandler {
1634
1626
  */
1635
1627
  static _perpetualDataToPerpetualState(_perpetuals, _symbolList) {
1636
1628
  const perpStates = _perpetuals.map((perp) => ({
1637
- id: perp.id,
1629
+ id: Number(perp.id),
1638
1630
  state: PERP_STATE_STR[perp.state],
1639
1631
  baseCurrency: contractSymbolToSymbol(perp.S2BaseCCY, _symbolList),
1640
1632
  quoteCurrency: contractSymbolToSymbol(perp.S2QuoteCCY, _symbolList),
@@ -1664,7 +1656,11 @@ export default class MarketData extends PerpetualDataHandler {
1664
1656
  */
1665
1657
  static async _exchangeInfo(_proxyContract, _multicall, _poolStaticInfos, _symbolToPerpStaticInfo, _perpetualIdToSymbol, _nestedPerpetualIDs, _symbolList, _priceFeedGetter, _oracleFactoryAddr, overrides) {
1666
1658
  // get the factory address (shared among all pools)
1667
- let info = { pools: [], oracleFactoryAddr: _oracleFactoryAddr, proxyAddr: _proxyContract.address };
1659
+ let info = {
1660
+ pools: [],
1661
+ oracleFactoryAddr: _oracleFactoryAddr,
1662
+ proxyAddr: _proxyContract.target.toString(),
1663
+ };
1668
1664
  // get all prices from off-chain price-sources: no RPC calls
1669
1665
  let idxPriceMap = await MarketData._getAllIndexPrices(_symbolToPerpStaticInfo, _priceFeedGetter);
1670
1666
  // query mid-prices from on-chain conditional on the off-chain prices
@@ -1763,7 +1759,7 @@ export default class MarketData extends PerpetualDataHandler {
1763
1759
  this.getPerpIdFromSymbol(s),
1764
1760
  ]),
1765
1761
  }));
1766
- const encodedResults = await this.multicall.callStatic.aggregate3(proxyCalls);
1762
+ const encodedResults = await this.multicall.aggregate3.staticCall(proxyCalls);
1767
1763
  const prices = encodedResults.map((result) => this.proxyContract.interface.decodeFunctionResult("getLastPerpetualBaseToUSDConversion", result.returnData)[0]);
1768
1764
  prices.forEach((px, i) => {
1769
1765
  const s = `${symbols[i].split("-")[0]}-USD`;