@d8x/perpetuals-sdk 1.3.7 → 2.0.1-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/dist/cjs/accountTrade.d.ts +9 -9
  2. package/dist/cjs/accountTrade.js +19 -17
  3. package/dist/cjs/accountTrade.js.map +1 -1
  4. package/dist/cjs/brokerTool.d.ts +11 -12
  5. package/dist/cjs/brokerTool.js +7 -8
  6. package/dist/cjs/brokerTool.js.map +1 -1
  7. package/dist/cjs/config/priceFeedConfig.json +16 -2
  8. package/dist/cjs/config/symbolList.json +2 -1
  9. package/dist/cjs/constants.d.ts +12 -12
  10. package/dist/cjs/constants.js +14 -14
  11. package/dist/cjs/constants.js.map +1 -1
  12. package/dist/cjs/contracts/ERC20.d.ts +146 -171
  13. package/dist/cjs/contracts/IPerpetualManager.d.ts +2534 -2225
  14. package/dist/cjs/contracts/IPyth.d.ts +181 -184
  15. package/dist/cjs/contracts/LimitOrderBook.d.ts +373 -401
  16. package/dist/cjs/contracts/LimitOrderBookBeacon.d.ts +53 -104
  17. package/dist/cjs/contracts/LimitOrderBookFactory.d.ts +129 -185
  18. package/dist/cjs/contracts/MockTokenSwap.d.ts +109 -169
  19. package/dist/cjs/contracts/Multicall3.d.ts +147 -211
  20. package/dist/cjs/contracts/OnDemandOracleUpgradeable.d.ts +342 -399
  21. package/dist/cjs/contracts/OracleFactory.d.ts +258 -238
  22. package/dist/cjs/contracts/PerpetualManagerProxy.d.ts +1099 -891
  23. package/dist/cjs/contracts/RedStoneAbi.d.ts +369 -488
  24. package/dist/cjs/contracts/ShareToken.d.ts +232 -285
  25. package/dist/cjs/contracts/common.d.ts +40 -11
  26. package/dist/cjs/contracts/factories/ERC20__factory.d.ts +2 -3
  27. package/dist/cjs/contracts/factories/ERC20__factory.js +3 -3
  28. package/dist/cjs/contracts/factories/ERC20__factory.js.map +1 -1
  29. package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +2 -3
  30. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +3 -3
  31. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  32. package/dist/cjs/contracts/factories/IPyth__factory.d.ts +2 -3
  33. package/dist/cjs/contracts/factories/IPyth__factory.js +3 -3
  34. package/dist/cjs/contracts/factories/IPyth__factory.js.map +1 -1
  35. package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.d.ts +2 -3
  36. package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.js +3 -3
  37. package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.js.map +1 -1
  38. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.d.ts +2 -3
  39. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js +3 -3
  40. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
  41. package/dist/cjs/contracts/factories/LimitOrderBook__factory.d.ts +2 -3
  42. package/dist/cjs/contracts/factories/LimitOrderBook__factory.js +3 -3
  43. package/dist/cjs/contracts/factories/LimitOrderBook__factory.js.map +1 -1
  44. package/dist/cjs/contracts/factories/MockTokenSwap__factory.d.ts +2 -3
  45. package/dist/cjs/contracts/factories/MockTokenSwap__factory.js +3 -3
  46. package/dist/cjs/contracts/factories/MockTokenSwap__factory.js.map +1 -1
  47. package/dist/cjs/contracts/factories/Multicall3__factory.d.ts +11 -9
  48. package/dist/cjs/contracts/factories/Multicall3__factory.js +7 -10
  49. package/dist/cjs/contracts/factories/Multicall3__factory.js.map +1 -1
  50. package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.d.ts +2 -3
  51. package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.js +3 -3
  52. package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.js.map +1 -1
  53. package/dist/cjs/contracts/factories/OracleFactory__factory.d.ts +2 -3
  54. package/dist/cjs/contracts/factories/OracleFactory__factory.js +3 -3
  55. package/dist/cjs/contracts/factories/OracleFactory__factory.js.map +1 -1
  56. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.d.ts +2 -3
  57. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js +3 -3
  58. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
  59. package/dist/cjs/contracts/factories/RedStoneAbi__factory.d.ts +2 -3
  60. package/dist/cjs/contracts/factories/RedStoneAbi__factory.js +3 -3
  61. package/dist/cjs/contracts/factories/RedStoneAbi__factory.js.map +1 -1
  62. package/dist/cjs/contracts/factories/ShareToken__factory.d.ts +2 -3
  63. package/dist/cjs/contracts/factories/ShareToken__factory.js +3 -3
  64. package/dist/cjs/contracts/factories/ShareToken__factory.js.map +1 -1
  65. package/dist/cjs/d8XMath.d.ts +28 -16
  66. package/dist/cjs/d8XMath.js +70 -50
  67. package/dist/cjs/d8XMath.js.map +1 -1
  68. package/dist/cjs/liquidatorTool.d.ts +8 -8
  69. package/dist/cjs/liquidatorTool.js +5 -7
  70. package/dist/cjs/liquidatorTool.js.map +1 -1
  71. package/dist/cjs/liquidityProviderTool.d.ts +4 -5
  72. package/dist/cjs/liquidityProviderTool.js.map +1 -1
  73. package/dist/cjs/marketData.d.ts +27 -28
  74. package/dist/cjs/marketData.js +65 -69
  75. package/dist/cjs/marketData.js.map +1 -1
  76. package/dist/cjs/nodeSDKTypes.d.ts +35 -37
  77. package/dist/cjs/onChainPxFeed.d.ts +2 -2
  78. package/dist/cjs/onChainPxFeed.js +3 -3
  79. package/dist/cjs/onChainPxFeed.js.map +1 -1
  80. package/dist/cjs/onChainPxFeedAngle.d.ts +2 -2
  81. package/dist/cjs/onChainPxFeedAngle.js +4 -5
  82. package/dist/cjs/onChainPxFeedAngle.js.map +1 -1
  83. package/dist/cjs/onChainPxFeedRedStone.js +2 -2
  84. package/dist/cjs/onChainPxFeedRedStone.js.map +1 -1
  85. package/dist/cjs/orderExecutorTool.d.ts +7 -9
  86. package/dist/cjs/orderExecutorTool.js +52 -62
  87. package/dist/cjs/orderExecutorTool.js.map +1 -1
  88. package/dist/cjs/perpetualDataHandler.d.ts +44 -35
  89. package/dist/cjs/perpetualDataHandler.js +194 -170
  90. package/dist/cjs/perpetualDataHandler.js.map +1 -1
  91. package/dist/cjs/perpetualEventHandler.d.ts +4 -5
  92. package/dist/cjs/perpetualEventHandler.js +2 -2
  93. package/dist/cjs/perpetualEventHandler.js.map +1 -1
  94. package/dist/cjs/polyMktsPxFeed.d.ts +14 -0
  95. package/dist/cjs/polyMktsPxFeed.js +59 -0
  96. package/dist/cjs/polyMktsPxFeed.js.map +1 -0
  97. package/dist/cjs/priceFeeds.d.ts +2 -0
  98. package/dist/cjs/priceFeeds.js +44 -9
  99. package/dist/cjs/priceFeeds.js.map +1 -1
  100. package/dist/cjs/referralCodeSigner.d.ts +1 -1
  101. package/dist/cjs/referralCodeSigner.js +12 -16
  102. package/dist/cjs/referralCodeSigner.js.map +1 -1
  103. package/dist/cjs/traderDigests.d.ts +2 -1
  104. package/dist/cjs/traderDigests.js +9 -11
  105. package/dist/cjs/traderDigests.js.map +1 -1
  106. package/dist/cjs/traderInterface.d.ts +8 -9
  107. package/dist/cjs/traderInterface.js +40 -23
  108. package/dist/cjs/traderInterface.js.map +1 -1
  109. package/dist/cjs/utils.d.ts +2 -3
  110. package/dist/cjs/utils.js +1 -2
  111. package/dist/cjs/utils.js.map +1 -1
  112. package/dist/cjs/version.d.ts +1 -1
  113. package/dist/cjs/version.js +1 -1
  114. package/dist/cjs/version.js.map +1 -1
  115. package/dist/cjs/writeAccessHandler.d.ts +7 -9
  116. package/dist/cjs/writeAccessHandler.js +13 -16
  117. package/dist/cjs/writeAccessHandler.js.map +1 -1
  118. package/dist/esm/accountTrade.d.ts +9 -9
  119. package/dist/esm/accountTrade.js +19 -17
  120. package/dist/esm/accountTrade.js.map +1 -1
  121. package/dist/esm/brokerTool.d.ts +11 -12
  122. package/dist/esm/brokerTool.js +2 -3
  123. package/dist/esm/brokerTool.js.map +1 -1
  124. package/dist/esm/config/priceFeedConfig.json +16 -2
  125. package/dist/esm/config/symbolList.json +2 -1
  126. package/dist/esm/constants.d.ts +12 -12
  127. package/dist/esm/constants.js +13 -13
  128. package/dist/esm/constants.js.map +1 -1
  129. package/dist/esm/contracts/ERC20.d.ts +146 -171
  130. package/dist/esm/contracts/IPerpetualManager.d.ts +2534 -2225
  131. package/dist/esm/contracts/IPyth.d.ts +181 -184
  132. package/dist/esm/contracts/LimitOrderBook.d.ts +373 -401
  133. package/dist/esm/contracts/LimitOrderBookBeacon.d.ts +53 -104
  134. package/dist/esm/contracts/LimitOrderBookFactory.d.ts +129 -185
  135. package/dist/esm/contracts/MockTokenSwap.d.ts +109 -169
  136. package/dist/esm/contracts/Multicall3.d.ts +147 -211
  137. package/dist/esm/contracts/OnDemandOracleUpgradeable.d.ts +342 -399
  138. package/dist/esm/contracts/OracleFactory.d.ts +258 -238
  139. package/dist/esm/contracts/PerpetualManagerProxy.d.ts +1099 -891
  140. package/dist/esm/contracts/RedStoneAbi.d.ts +369 -488
  141. package/dist/esm/contracts/ShareToken.d.ts +232 -285
  142. package/dist/esm/contracts/common.d.ts +40 -11
  143. package/dist/esm/contracts/factories/ERC20__factory.d.ts +2 -3
  144. package/dist/esm/contracts/factories/ERC20__factory.js +4 -4
  145. package/dist/esm/contracts/factories/ERC20__factory.js.map +1 -1
  146. package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +2 -3
  147. package/dist/esm/contracts/factories/IPerpetualManager__factory.js +4 -4
  148. package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  149. package/dist/esm/contracts/factories/IPyth__factory.d.ts +2 -3
  150. package/dist/esm/contracts/factories/IPyth__factory.js +4 -4
  151. package/dist/esm/contracts/factories/IPyth__factory.js.map +1 -1
  152. package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.d.ts +2 -3
  153. package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.js +4 -4
  154. package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.js.map +1 -1
  155. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.d.ts +2 -3
  156. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js +4 -4
  157. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
  158. package/dist/esm/contracts/factories/LimitOrderBook__factory.d.ts +2 -3
  159. package/dist/esm/contracts/factories/LimitOrderBook__factory.js +4 -4
  160. package/dist/esm/contracts/factories/LimitOrderBook__factory.js.map +1 -1
  161. package/dist/esm/contracts/factories/MockTokenSwap__factory.d.ts +2 -3
  162. package/dist/esm/contracts/factories/MockTokenSwap__factory.js +4 -4
  163. package/dist/esm/contracts/factories/MockTokenSwap__factory.js.map +1 -1
  164. package/dist/esm/contracts/factories/Multicall3__factory.d.ts +11 -9
  165. package/dist/esm/contracts/factories/Multicall3__factory.js +8 -11
  166. package/dist/esm/contracts/factories/Multicall3__factory.js.map +1 -1
  167. package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.d.ts +2 -3
  168. package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.js +4 -4
  169. package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.js.map +1 -1
  170. package/dist/esm/contracts/factories/OracleFactory__factory.d.ts +2 -3
  171. package/dist/esm/contracts/factories/OracleFactory__factory.js +4 -4
  172. package/dist/esm/contracts/factories/OracleFactory__factory.js.map +1 -1
  173. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.d.ts +2 -3
  174. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js +4 -4
  175. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
  176. package/dist/esm/contracts/factories/RedStoneAbi__factory.d.ts +2 -3
  177. package/dist/esm/contracts/factories/RedStoneAbi__factory.js +4 -4
  178. package/dist/esm/contracts/factories/RedStoneAbi__factory.js.map +1 -1
  179. package/dist/esm/contracts/factories/ShareToken__factory.d.ts +2 -3
  180. package/dist/esm/contracts/factories/ShareToken__factory.js +4 -4
  181. package/dist/esm/contracts/factories/ShareToken__factory.js.map +1 -1
  182. package/dist/esm/d8XMath.d.ts +28 -16
  183. package/dist/esm/d8XMath.js +67 -49
  184. package/dist/esm/d8XMath.js.map +1 -1
  185. package/dist/esm/liquidatorTool.d.ts +8 -8
  186. package/dist/esm/liquidatorTool.js +5 -7
  187. package/dist/esm/liquidatorTool.js.map +1 -1
  188. package/dist/esm/liquidityProviderTool.d.ts +4 -5
  189. package/dist/esm/liquidityProviderTool.js.map +1 -1
  190. package/dist/esm/marketData.d.ts +27 -28
  191. package/dist/esm/marketData.js +55 -59
  192. package/dist/esm/marketData.js.map +1 -1
  193. package/dist/esm/nodeSDKTypes.d.ts +35 -37
  194. package/dist/esm/onChainPxFeed.d.ts +2 -2
  195. package/dist/esm/onChainPxFeed.js +3 -3
  196. package/dist/esm/onChainPxFeed.js.map +1 -1
  197. package/dist/esm/onChainPxFeedAngle.d.ts +2 -2
  198. package/dist/esm/onChainPxFeedAngle.js +2 -3
  199. package/dist/esm/onChainPxFeedAngle.js.map +1 -1
  200. package/dist/esm/onChainPxFeedRedStone.js +1 -1
  201. package/dist/esm/onChainPxFeedRedStone.js.map +1 -1
  202. package/dist/esm/orderExecutorTool.d.ts +7 -9
  203. package/dist/esm/orderExecutorTool.js +38 -48
  204. package/dist/esm/orderExecutorTool.js.map +1 -1
  205. package/dist/esm/perpetualDataHandler.d.ts +44 -35
  206. package/dist/esm/perpetualDataHandler.js +137 -113
  207. package/dist/esm/perpetualDataHandler.js.map +1 -1
  208. package/dist/esm/perpetualEventHandler.d.ts +4 -5
  209. package/dist/esm/perpetualEventHandler.js +2 -2
  210. package/dist/esm/perpetualEventHandler.js.map +1 -1
  211. package/dist/esm/polyMktsPxFeed.d.ts +14 -0
  212. package/dist/esm/polyMktsPxFeed.js +56 -0
  213. package/dist/esm/polyMktsPxFeed.js.map +1 -0
  214. package/dist/esm/priceFeeds.d.ts +2 -0
  215. package/dist/esm/priceFeeds.js +44 -9
  216. package/dist/esm/priceFeeds.js.map +1 -1
  217. package/dist/esm/referralCodeSigner.d.ts +1 -1
  218. package/dist/esm/referralCodeSigner.js +6 -10
  219. package/dist/esm/referralCodeSigner.js.map +1 -1
  220. package/dist/esm/traderDigests.d.ts +2 -1
  221. package/dist/esm/traderDigests.js +2 -4
  222. package/dist/esm/traderDigests.js.map +1 -1
  223. package/dist/esm/traderInterface.d.ts +8 -9
  224. package/dist/esm/traderInterface.js +42 -25
  225. package/dist/esm/traderInterface.js.map +1 -1
  226. package/dist/esm/utils.d.ts +2 -3
  227. package/dist/esm/utils.js +1 -2
  228. package/dist/esm/utils.js.map +1 -1
  229. package/dist/esm/version.d.ts +1 -1
  230. package/dist/esm/version.js +1 -1
  231. package/dist/esm/version.js.map +1 -1
  232. package/dist/esm/writeAccessHandler.d.ts +7 -9
  233. package/dist/esm/writeAccessHandler.js +5 -8
  234. package/dist/esm/writeAccessHandler.js.map +1 -1
  235. package/package.json +7 -17
  236. package/src/accountTrade.ts +32 -34
  237. package/src/brokerTool.ts +17 -20
  238. package/src/config/priceFeedConfig.json +16 -2
  239. package/src/config/symbolList.json +2 -1
  240. package/src/constants.ts +13 -13
  241. package/src/contracts/ERC20.ts +236 -350
  242. package/src/contracts/IPerpetualManager.ts +3359 -5050
  243. package/src/contracts/IPyth.ts +272 -409
  244. package/src/contracts/LimitOrderBook.ts +503 -779
  245. package/src/contracts/LimitOrderBookBeacon.ts +123 -171
  246. package/src/contracts/LimitOrderBookFactory.ts +263 -332
  247. package/src/contracts/MockTokenSwap.ts +237 -275
  248. package/src/contracts/Multicall3.ts +208 -374
  249. package/src/contracts/OnDemandOracleUpgradeable.ts +569 -782
  250. package/src/contracts/OracleFactory.ts +410 -538
  251. package/src/contracts/PerpetualManagerProxy.ts +1898 -1426
  252. package/src/contracts/RedStoneAbi.ts +486 -986
  253. package/src/contracts/ShareToken.ts +376 -557
  254. package/src/contracts/common.ts +108 -21
  255. package/src/contracts/factories/ERC20__factory.ts +4 -5
  256. package/src/contracts/factories/IPerpetualManager__factory.ts +4 -5
  257. package/src/contracts/factories/IPyth__factory.ts +4 -5
  258. package/src/contracts/factories/LimitOrderBookBeacon__factory.ts +5 -6
  259. package/src/contracts/factories/LimitOrderBookFactory__factory.ts +5 -6
  260. package/src/contracts/factories/LimitOrderBook__factory.ts +4 -5
  261. package/src/contracts/factories/MockTokenSwap__factory.ts +4 -5
  262. package/src/contracts/factories/Multicall3__factory.ts +21 -19
  263. package/src/contracts/factories/OnDemandOracleUpgradeable__factory.ts +5 -6
  264. package/src/contracts/factories/OracleFactory__factory.ts +4 -5
  265. package/src/contracts/factories/PerpetualManagerProxy__factory.ts +5 -6
  266. package/src/contracts/factories/RedStoneAbi__factory.ts +4 -8
  267. package/src/contracts/factories/ShareToken__factory.ts +4 -8
  268. package/src/d8XMath.ts +78 -57
  269. package/src/liquidatorTool.ts +12 -15
  270. package/src/liquidityProviderTool.ts +7 -5
  271. package/src/marketData.ts +110 -121
  272. package/src/nodeSDKTypes.ts +51 -38
  273. package/src/onChainPxFeed.ts +4 -4
  274. package/src/onChainPxFeedAngle.ts +5 -7
  275. package/src/onChainPxFeedRedStone.ts +1 -3
  276. package/src/orderExecutorTool.ts +100 -108
  277. package/src/perpetualDataHandler.ts +209 -172
  278. package/src/perpetualEventHandler.ts +16 -17
  279. package/src/polyMktsPxFeed.ts +71 -0
  280. package/src/priceFeeds.ts +46 -10
  281. package/src/referralCodeSigner.ts +6 -10
  282. package/src/traderDigests.ts +8 -5
  283. package/src/traderInterface.ts +61 -33
  284. package/src/utils.ts +3 -4
  285. package/src/version.ts +1 -1
  286. package/src/writeAccessHandler.ts +26 -17
package/src/marketData.ts CHANGED
@@ -1,8 +1,4 @@
1
- import { Interface } from "@ethersproject/abi";
2
- import { BigNumber } from "@ethersproject/bignumber";
3
- import { CallOverrides, Contract } from "@ethersproject/contracts";
4
- import { Provider, StaticJsonRpcProvider } from "@ethersproject/providers";
5
- import { formatUnits } from "@ethersproject/units";
1
+ import { Contract, formatUnits, Interface, JsonRpcProvider, Overrides, Provider } from "ethers";
6
2
  import {
7
3
  BUY_SIDE,
8
4
  CLOSED_SIDE,
@@ -89,7 +85,7 @@ export default class MarketData extends PerpetualDataHandler {
89
85
  * about perpetual currencies
90
86
  * @param provider optional provider to perform blockchain calls
91
87
  */
92
- public async createProxyInstance(provider?: Provider, overrides?: CallOverrides): Promise<void>;
88
+ public async createProxyInstance(provider?: Provider, overrides?: Overrides): Promise<void>;
93
89
 
94
90
  /**
95
91
  * Initialize the marketData-Class with this function
@@ -105,17 +101,14 @@ export default class MarketData extends PerpetualDataHandler {
105
101
  * about perpetual currencies
106
102
  * @param providerOrMarketData optional provider or existing market data instance
107
103
  */
108
- public async createProxyInstance(
109
- providerOrMarketData?: Provider | MarketData,
110
- overrides?: CallOverrides
111
- ): Promise<void> {
112
- if (providerOrMarketData == undefined || Provider.isProvider(providerOrMarketData)) {
113
- this.provider = providerOrMarketData ?? new StaticJsonRpcProvider(this.nodeURL);
104
+ public async createProxyInstance(providerOrMarketData?: Provider | MarketData, overrides?: Overrides): Promise<void> {
105
+ if (providerOrMarketData == undefined || !("createProxyInstance" in providerOrMarketData)) {
106
+ this.provider = providerOrMarketData ?? new JsonRpcProvider(this.nodeURL);
114
107
  await this.initContractsAndData(this.provider, overrides);
115
108
  } else {
116
109
  const mktData = providerOrMarketData;
117
110
  this.nodeURL = mktData.config.nodeURL;
118
- this.provider = new StaticJsonRpcProvider(mktData.config.nodeURL);
111
+ this.provider = new JsonRpcProvider(mktData.config.nodeURL, mktData.network, { staticNetwork: true });
119
112
  this.proxyContract = new Contract(mktData.getProxyAddress(), this.config.proxyABI!, this.provider);
120
113
  this.multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, this.provider);
121
114
  ({
@@ -138,7 +131,7 @@ export default class MarketData extends PerpetualDataHandler {
138
131
  if (this.proxyContract == null) {
139
132
  throw Error("no proxy contract initialized. Use createProxyInstance().");
140
133
  }
141
- return this.proxyContract.address;
134
+ return this.proxyContract.target.toString();
142
135
  }
143
136
 
144
137
  /**
@@ -208,7 +201,7 @@ export default class MarketData extends PerpetualDataHandler {
208
201
  *
209
202
  * @returns {ExchangeInfo} Array of static data for all the pools and perpetuals in the system.
210
203
  */
211
- public async exchangeInfo(overrides?: CallOverrides & { rpcURL?: string }): Promise<ExchangeInfo> {
204
+ public async exchangeInfo(overrides?: Overrides & { rpcURL?: string }): Promise<ExchangeInfo> {
212
205
  if (this.proxyContract == null || this.multicall == null) {
213
206
  throw Error("no proxy contract initialized. Use createProxyInstance().");
214
207
  }
@@ -216,7 +209,7 @@ export default class MarketData extends PerpetualDataHandler {
216
209
  if (overrides) {
217
210
  ({ rpcURL, ...overrides } = overrides);
218
211
  }
219
- const provider = new StaticJsonRpcProvider(rpcURL ?? this.nodeURL);
212
+ const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
220
213
  return await MarketData._exchangeInfo(
221
214
  new Contract(this.proxyAddr, this.config.proxyABI!, provider),
222
215
  Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, provider),
@@ -227,7 +220,7 @@ export default class MarketData extends PerpetualDataHandler {
227
220
  this.symbolList,
228
221
  this.priceFeedGetter,
229
222
  this.oraclefactoryAddr!, // not undefined if proxy contract was initialized
230
- overrides as CallOverrides
223
+ overrides as Overrides
231
224
  );
232
225
  }
233
226
 
@@ -257,7 +250,7 @@ export default class MarketData extends PerpetualDataHandler {
257
250
  public async openOrders(
258
251
  traderAddr: string,
259
252
  symbol?: string,
260
- overrides?: CallOverrides & { rpcURL?: string }
253
+ overrides?: Overrides & { rpcURL?: string }
261
254
  ): Promise<{ orders: Order[]; orderIds: string[] }[]> {
262
255
  // open orders requested only for given symbol
263
256
  let resArray: Array<{ orders: Order[]; orderIds: string[] }> = [];
@@ -274,7 +267,7 @@ export default class MarketData extends PerpetualDataHandler {
274
267
  if (overrides) {
275
268
  ({ rpcURL, ...overrides } = overrides);
276
269
  }
277
- const provider = new StaticJsonRpcProvider(rpcURL ?? this.nodeURL);
270
+ const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
278
271
  if (symbols.length < 1) {
279
272
  throw new Error(`No perpetuals found for symbol ${symbol}`);
280
273
  } else if (symbols.length < 2) {
@@ -297,10 +290,10 @@ export default class MarketData extends PerpetualDataHandler {
297
290
  traderAddr: string,
298
291
  symbol: string,
299
292
  provider: Provider,
300
- overrides?: CallOverrides
293
+ overrides?: Overrides
301
294
  ): Promise<{ orders: Order[]; orderIds: string[] }> {
302
295
  // open orders requested only for given symbol
303
- const orderBookContract = LimitOrderBook__factory.connect(this.getOrderBookContract(symbol).address, provider);
296
+ const orderBookContract = this.getOrderBookContract(symbol, provider);
304
297
  const orders = await MarketData.openOrdersOnOrderBook(
305
298
  traderAddr,
306
299
  orderBookContract,
@@ -322,14 +315,12 @@ export default class MarketData extends PerpetualDataHandler {
322
315
  traderAddr: string,
323
316
  symbols: string[],
324
317
  provider: Provider,
325
- overrides?: CallOverrides
318
+ overrides?: Overrides
326
319
  ): Promise<{ orders: Order[]; orderIds: string[] }[]> {
327
320
  // filter by perpetuals with valid order book
328
321
  symbols = symbols.filter((symbol) => this.symbolToPerpStaticInfo.get(symbol)?.limitOrderBookAddr !== ZERO_ADDRESS);
329
322
  // open orders requested only for given symbol
330
- const orderBookContracts = symbols.map((symbol) =>
331
- LimitOrderBook__factory.connect(this.getOrderBookContract(symbol).address, provider)
332
- );
323
+ const orderBookContracts = symbols.map((symbol) => this.getOrderBookContract(symbol, provider), this);
333
324
  const multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, provider);
334
325
  const { orders, digests } = await MarketData._openOrdersOnOrderBooks(
335
326
  traderAddr,
@@ -368,7 +359,7 @@ export default class MarketData extends PerpetualDataHandler {
368
359
  public async positionRisk(
369
360
  traderAddr: string,
370
361
  symbol?: string,
371
- overrides?: CallOverrides & { rpcURL?: string }
362
+ overrides?: Overrides & { rpcURL?: string }
372
363
  ): Promise<MarginAccount[]> {
373
364
  if (this.proxyContract == null) {
374
365
  throw Error("no proxy contract initialized. Use createProxyInstance().");
@@ -387,7 +378,7 @@ export default class MarketData extends PerpetualDataHandler {
387
378
  if (overrides) {
388
379
  ({ rpcURL, ...overrides } = overrides);
389
380
  }
390
- const provider = new StaticJsonRpcProvider(rpcURL ?? this.nodeURL);
381
+ const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
391
382
 
392
383
  if (symbols.length < 1) {
393
384
  throw new Error(`No perpetuals found for symbol ${symbol}`);
@@ -411,7 +402,7 @@ export default class MarketData extends PerpetualDataHandler {
411
402
  traderAddr: string,
412
403
  symbol: string,
413
404
  provider: Provider,
414
- overrides?: CallOverrides
405
+ overrides?: Overrides
415
406
  ): Promise<MarginAccount> {
416
407
  let obj = await this.priceFeedGetter.fetchPricesForPerpetual(symbol);
417
408
  let mgnAcct = await PerpetualDataHandler.getMarginAccount(
@@ -436,7 +427,7 @@ export default class MarketData extends PerpetualDataHandler {
436
427
  traderAddr: string,
437
428
  symbols: string[],
438
429
  provider: Provider,
439
- overrides?: CallOverrides
430
+ overrides?: Overrides
440
431
  ): Promise<MarginAccount[]> {
441
432
  const MAX_SYMBOLS_PER_CALL = 10;
442
433
  const S2S3 = new Array<[number, number]>();
@@ -498,7 +489,7 @@ export default class MarketData extends PerpetualDataHandler {
498
489
  order: Order,
499
490
  account?: MarginAccount,
500
491
  indexPriceInfo?: [number, number, boolean, boolean],
501
- overrides?: CallOverrides & { tradingFeeTbps?: number }
492
+ overrides?: Overrides & { tradingFeeTbps?: number }
502
493
  ): Promise<{ newPositionRisk: MarginAccount; orderCost: number; maxLongTrade: number; maxShortTrade: number }> {
503
494
  if (this.proxyContract == null || this.multicall == null) {
504
495
  throw Error("no proxy contract initialized. Use createProxyInstance().");
@@ -524,23 +515,23 @@ export default class MarketData extends PerpetualDataHandler {
524
515
  // create all calls
525
516
  const poolId = PerpetualDataHandler._getPoolIdFromSymbol(order.symbol, this.poolStaticInfos);
526
517
  const perpId = PerpetualDataHandler.symbolToPerpetualId(order.symbol, this.symbolToPerpStaticInfo);
527
- const fS2S3 = [indexPriceInfo[0], indexPriceInfo[1]].map((x) => floatToABK64x64(x)) as [BigNumber, BigNumber];
518
+ const fS2S3 = [indexPriceInfo[0], indexPriceInfo[1]].map((x) => floatToABK64x64(x)) as [bigint, bigint];
528
519
  const proxyCalls: Multicall3.Call3Struct[] = [
529
520
  // 0: traderState
530
521
  {
531
- target: this.proxyContract.address,
522
+ target: this.proxyContract.target,
532
523
  allowFailure: true,
533
524
  callData: this.proxyContract.interface.encodeFunctionData("getTraderState", [perpId, traderAddr, fS2S3]),
534
525
  },
535
526
  // 1: ammState
536
527
  {
537
- target: this.proxyContract.address,
528
+ target: this.proxyContract.target,
538
529
  allowFailure: true,
539
530
  callData: this.proxyContract.interface.encodeFunctionData("getAMMState", [perpId, fS2S3]),
540
531
  },
541
532
  // 2: exchangeFee
542
533
  {
543
- target: this.proxyContract.address,
534
+ target: this.proxyContract.target,
544
535
  allowFailure: false,
545
536
  callData: this.proxyContract.interface.encodeFunctionData("queryExchangeFee", [
546
537
  poolId,
@@ -550,7 +541,7 @@ export default class MarketData extends PerpetualDataHandler {
550
541
  },
551
542
  // 3: perpetual price
552
543
  {
553
- target: this.proxyContract.address,
544
+ target: this.proxyContract.target,
554
545
  allowFailure: true,
555
546
  callData: this.proxyContract.interface.encodeFunctionData("queryPerpetualPrice", [
556
547
  perpId,
@@ -560,36 +551,32 @@ export default class MarketData extends PerpetualDataHandler {
560
551
  },
561
552
  // 4: max long pos
562
553
  {
563
- target: this.proxyContract.address,
554
+ target: this.proxyContract.target,
564
555
  allowFailure: false,
565
556
  callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
566
557
  perpId,
567
- account
568
- ? floatToABK64x64(account.positionNotionalBaseCCY * (account.side === BUY_SIDE ? 1 : -1))
569
- : BigNumber.from(0),
558
+ account ? floatToABK64x64(account.positionNotionalBaseCCY * (account.side === BUY_SIDE ? 1 : -1)) : 0n,
570
559
  true,
571
560
  ]),
572
561
  },
573
562
  // 5: max short pos
574
563
  {
575
- target: this.proxyContract.address,
564
+ target: this.proxyContract.target,
576
565
  allowFailure: false,
577
566
  callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
578
567
  perpId,
579
- account
580
- ? floatToABK64x64(account.positionNotionalBaseCCY * (account.side === BUY_SIDE ? 1 : -1))
581
- : BigNumber.from(0),
568
+ account ? floatToABK64x64(account.positionNotionalBaseCCY * (account.side === BUY_SIDE ? 1 : -1)) : 0n,
582
569
  false,
583
570
  ]),
584
571
  },
585
572
  ];
586
573
 
587
574
  // multicall
588
- const encodedResults = await this.multicall.callStatic.aggregate3(proxyCalls, (overrides || {}) as CallOverrides);
575
+ const encodedResults = await this.multicall.aggregate3.staticCall(proxyCalls, (overrides || {}) as Overrides);
589
576
 
590
577
  // positionRisk to apply this trade on: if not given, defaults to the current trader's position
591
578
  if (!account) {
592
- let traderState: BigNumber[];
579
+ let traderState: bigint[];
593
580
  if (encodedResults[0].success) {
594
581
  traderState = this.proxyContract.interface.decodeFunctionResult(
595
582
  "getTraderState",
@@ -605,7 +592,7 @@ export default class MarketData extends PerpetualDataHandler {
605
592
  }
606
593
 
607
594
  // perpetualState, for prices
608
- let ammState: BigNumber[];
595
+ let ammState: bigint[];
609
596
  if (encodedResults[1].success) {
610
597
  ammState = this.proxyContract.interface.decodeFunctionResult("getAMMState", encodedResults[1].returnData)[0];
611
598
  } else {
@@ -623,12 +610,12 @@ export default class MarketData extends PerpetualDataHandler {
623
610
  const exchangeFeeTbps = this.proxyContract.interface.decodeFunctionResult(
624
611
  "queryExchangeFee",
625
612
  encodedResults[2].returnData
626
- )[0] as number;
613
+ )[0] as bigint;
627
614
 
628
615
  // amm price for this trade amount
629
616
  let ammPrice: number;
630
617
  {
631
- let fPrice: BigNumber;
618
+ let fPrice: bigint;
632
619
  if (encodedResults[3].success) {
633
620
  fPrice = this.proxyContract.interface.decodeFunctionResult(
634
621
  "queryPerpetualPrice",
@@ -676,7 +663,7 @@ export default class MarketData extends PerpetualDataHandler {
676
663
  const fMaxLong = this.proxyContract.interface.decodeFunctionResult(
677
664
  "getMaxSignedOpenTradeSizeForPos",
678
665
  encodedResults[4].returnData
679
- )[0] as BigNumber;
666
+ )[0] as bigint;
680
667
  const maxLongTrade =
681
668
  account.side == BUY_SIDE
682
669
  ? Math.max(0, ABK64x64ToFloat(fMaxLong) - (accountGiven ? 0 : account.positionNotionalBaseCCY))
@@ -685,11 +672,14 @@ export default class MarketData extends PerpetualDataHandler {
685
672
  const fMaxShort = this.proxyContract.interface.decodeFunctionResult(
686
673
  "getMaxSignedOpenTradeSizeForPos",
687
674
  encodedResults[5].returnData
688
- )[0] as BigNumber;
675
+ )[0] as bigint;
689
676
  const maxShortTrade =
690
677
  account.side == SELL_SIDE
691
- ? Math.max(0, ABK64x64ToFloat(fMaxShort.abs()) - (accountGiven ? 0 : Math.abs(account.positionNotionalBaseCCY)))
692
- : ABK64x64ToFloat(fMaxShort.abs()) + Math.abs(account.positionNotionalBaseCCY);
678
+ ? Math.max(
679
+ 0,
680
+ Math.abs(ABK64x64ToFloat(fMaxShort)) - (accountGiven ? 0 : Math.abs(account.positionNotionalBaseCCY))
681
+ )
682
+ : Math.abs(ABK64x64ToFloat(fMaxShort)) + Math.abs(account.positionNotionalBaseCCY);
693
683
 
694
684
  // Current state:
695
685
  let lotSizeBC = MarketData._getLotSize(order.symbol, this.symbolToPerpStaticInfo);
@@ -716,7 +706,7 @@ export default class MarketData extends PerpetualDataHandler {
716
706
 
717
707
  if (tradingFeeTbps === undefined) {
718
708
  // use usual input if not overriden
719
- tradingFeeTbps = exchangeFeeTbps + (order.brokerFeeTbps ?? 0);
709
+ tradingFeeTbps = Number(exchangeFeeTbps) + (order.brokerFeeTbps ?? 0);
720
710
  }
721
711
  let tradingFeeCC = (Math.abs(tradeAmountBC) * tradingFeeTbps * 1e-5 * S2) / S3;
722
712
  let referralFeeCC = this.symbolToPerpStaticInfo.get(account.symbol)!.referralRebate;
@@ -829,7 +819,7 @@ export default class MarketData extends PerpetualDataHandler {
829
819
  deltaCollateral: number,
830
820
  account: MarginAccount,
831
821
  indexPriceInfo?: [number, number, boolean, boolean],
832
- overrides?: CallOverrides
822
+ overrides?: Overrides
833
823
  ): Promise<MarginAccount> {
834
824
  if (this.proxyContract == null) {
835
825
  throw new Error("no proxy contract initialized. Use createProxyInstance().");
@@ -980,7 +970,7 @@ export default class MarketData extends PerpetualDataHandler {
980
970
  * }
981
971
  * main();
982
972
  */
983
- public async getWalletBalance(address: string, symbol: string, overrides?: CallOverrides): Promise<number> {
973
+ public async getWalletBalance(address: string, symbol: string, overrides?: Overrides): Promise<number> {
984
974
  let poolIdx = this.getPoolStaticInfoIndexFromSymbol(symbol);
985
975
  let settleTokenAddr = this.poolStaticInfos[poolIdx].poolSettleTokenAddr;
986
976
  let token = ERC20__factory.connect(settleTokenAddr, this.provider!);
@@ -1011,7 +1001,7 @@ export default class MarketData extends PerpetualDataHandler {
1011
1001
  public async getPoolShareTokenBalance(
1012
1002
  address: string,
1013
1003
  symbolOrId: string | number,
1014
- overrides?: CallOverrides
1004
+ overrides?: Overrides
1015
1005
  ): Promise<number> {
1016
1006
  let poolId = this._poolSymbolOrIdToPoolId(symbolOrId);
1017
1007
  return this._getPoolShareTokenBalanceFromId(address, poolId, overrides);
@@ -1027,7 +1017,7 @@ export default class MarketData extends PerpetualDataHandler {
1027
1017
  private async _getPoolShareTokenBalanceFromId(
1028
1018
  address: string,
1029
1019
  poolId: number,
1030
- overrides?: CallOverrides
1020
+ overrides?: Overrides
1031
1021
  ): Promise<number> {
1032
1022
  let shareTokenAddr = this.poolStaticInfos[poolId - 1].shareTokenAddr;
1033
1023
  let shareToken = ERC20__factory.connect(shareTokenAddr, this.provider!);
@@ -1053,7 +1043,7 @@ export default class MarketData extends PerpetualDataHandler {
1053
1043
  * }
1054
1044
  * main();
1055
1045
  */
1056
- public async getShareTokenPrice(symbolOrId: string | number, overrides?: CallOverrides): Promise<number> {
1046
+ public async getShareTokenPrice(symbolOrId: string | number, overrides?: Overrides): Promise<number> {
1057
1047
  let poolId = this._poolSymbolOrIdToPoolId(symbolOrId);
1058
1048
  const priceDec18 = await this.proxyContract!.getShareTokenPriceD18(poolId, overrides || {});
1059
1049
  const price = dec18ToFloat(priceDec18);
@@ -1083,7 +1073,7 @@ export default class MarketData extends PerpetualDataHandler {
1083
1073
  public async getParticipationValue(
1084
1074
  address: string,
1085
1075
  symbolOrId: string | number,
1086
- overrides?: CallOverrides
1076
+ overrides?: Overrides
1087
1077
  ): Promise<{ value: number; shareTokenBalance: number; poolShareToken: string }> {
1088
1078
  let poolId = this._poolSymbolOrIdToPoolId(symbolOrId);
1089
1079
  const shareTokens = await this._getPoolShareTokenBalanceFromId(address, poolId, overrides);
@@ -1141,7 +1131,7 @@ export default class MarketData extends PerpetualDataHandler {
1141
1131
  public async maxOrderSizeForTrader(
1142
1132
  traderAddr: string,
1143
1133
  symbol: string,
1144
- overrides?: CallOverrides
1134
+ overrides?: Overrides
1145
1135
  ): Promise<{ buy: number; sell: number }> {
1146
1136
  if (!this.proxyContract || !this.multicall) {
1147
1137
  throw new Error("proxy contract not initialized");
@@ -1155,12 +1145,12 @@ export default class MarketData extends PerpetualDataHandler {
1155
1145
  const indexPriceInfo: [number, number, boolean, boolean] = await this.priceFeedGetter
1156
1146
  .fetchPricesForPerpetual(symbol)
1157
1147
  .then((obj) => [obj.idxPrices[0], obj.idxPrices[1], obj.mktClosed[0], obj.mktClosed[1]]);
1158
- const fS2S3 = [indexPriceInfo[0], indexPriceInfo[1]].map((x) => floatToABK64x64(x)) as [BigNumber, BigNumber];
1148
+ const fS2S3 = [indexPriceInfo[0], indexPriceInfo[1]].map((x) => floatToABK64x64(x)) as [bigint, bigint];
1159
1149
  let coll2SettlePromise = this.fetchCollateralToSettlementConversion(symbol);
1160
1150
  const proxyCalls: Multicall3.Call3Struct[] = [
1161
1151
  // 0: traderState
1162
1152
  {
1163
- target: this.proxyContract.address,
1153
+ target: this.proxyContract.target,
1164
1154
  allowFailure: false,
1165
1155
  callData: this.proxyContract.interface.encodeFunctionData("getTraderState", [perpId, traderAddr, fS2S3]),
1166
1156
  },
@@ -1173,7 +1163,7 @@ export default class MarketData extends PerpetualDataHandler {
1173
1163
  },
1174
1164
  // 2: exchange fee
1175
1165
  {
1176
- target: this.proxyContract.address,
1166
+ target: this.proxyContract.target,
1177
1167
  allowFailure: false,
1178
1168
  callData: this.proxyContract.interface.encodeFunctionData("queryExchangeFee", [
1179
1169
  poolId,
@@ -1184,7 +1174,7 @@ export default class MarketData extends PerpetualDataHandler {
1184
1174
  ];
1185
1175
 
1186
1176
  // multicall
1187
- const encodedResults = await this.multicall.callStatic.aggregate3(proxyCalls, overrides || {});
1177
+ const encodedResults = await this.multicall.aggregate3.staticCall(proxyCalls, overrides || {});
1188
1178
 
1189
1179
  // position risk
1190
1180
  const idxNotional = 4;
@@ -1198,23 +1188,23 @@ export default class MarketData extends PerpetualDataHandler {
1198
1188
  ]);
1199
1189
 
1200
1190
  // fee rate
1201
- const feeRate =
1202
- 1e-5 *
1203
- (this.proxyContract.interface.decodeFunctionResult(
1204
- "queryExchangeFee",
1205
- encodedResults[2].returnData
1206
- )[0] as number);
1191
+ const feeRateTbps = this.proxyContract.interface.decodeFunctionResult(
1192
+ "queryExchangeFee",
1193
+ encodedResults[2].returnData
1194
+ )[0] as bigint;
1195
+
1196
+ const feeRate = 1e-5 * Number(feeRateTbps);
1207
1197
 
1208
1198
  // Max based on margin requirements:
1209
1199
  const walletBalance = decNToFloat(
1210
1200
  IERC20.decodeFunctionResult("balanceOf", encodedResults[1].returnData)[0],
1211
- poolInfo.poolSettleTokenDecimals!
1201
+ poolInfo.poolSettleTokenDecimals
1212
1202
  );
1213
1203
 
1214
1204
  const proxyCalls2: Multicall3.Call3Struct[] = [
1215
1205
  // 0: max long
1216
1206
  {
1217
- target: this.proxyContract.address,
1207
+ target: this.proxyContract.target,
1218
1208
  allowFailure: false,
1219
1209
  callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
1220
1210
  perpId,
@@ -1224,7 +1214,7 @@ export default class MarketData extends PerpetualDataHandler {
1224
1214
  },
1225
1215
  // 1: max short
1226
1216
  {
1227
- target: this.proxyContract.address,
1217
+ target: this.proxyContract.target,
1228
1218
  allowFailure: false,
1229
1219
  callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
1230
1220
  perpId,
@@ -1235,7 +1225,7 @@ export default class MarketData extends PerpetualDataHandler {
1235
1225
  ];
1236
1226
 
1237
1227
  // multicall
1238
- const encodedResults2 = await this.multicall.callStatic.aggregate3(proxyCalls2, overrides || {});
1228
+ const encodedResults2 = await this.multicall.aggregate3.staticCall(proxyCalls2, overrides || {});
1239
1229
 
1240
1230
  // Max based on perp:
1241
1231
  // max buy
@@ -1243,7 +1233,7 @@ export default class MarketData extends PerpetualDataHandler {
1243
1233
  this.proxyContract.interface.decodeFunctionResult(
1244
1234
  "getMaxSignedOpenTradeSizeForPos",
1245
1235
  encodedResults2[0].returnData
1246
- )[0] as BigNumber
1236
+ )[0] as bigint
1247
1237
  );
1248
1238
  const maxLongPosPerp = maxLongOrderPerp + ABK64x64ToFloat(traderState[idxNotional]);
1249
1239
  // max short
@@ -1251,7 +1241,7 @@ export default class MarketData extends PerpetualDataHandler {
1251
1241
  this.proxyContract.interface.decodeFunctionResult(
1252
1242
  "getMaxSignedOpenTradeSizeForPos",
1253
1243
  encodedResults2[1].returnData
1254
- )[0] as BigNumber
1244
+ )[0] as bigint
1255
1245
  );
1256
1246
  const maxShortPosPerp = maxShortOrderPerp + ABK64x64ToFloat(traderState[idxNotional]);
1257
1247
 
@@ -1321,15 +1311,10 @@ export default class MarketData extends PerpetualDataHandler {
1321
1311
  * }
1322
1312
  * main();
1323
1313
  */
1324
- public async maxSignedPosition(side: string, symbol: string, overrides?: CallOverrides): Promise<number> {
1314
+ public async maxSignedPosition(side: string, symbol: string, overrides?: Overrides): Promise<number> {
1325
1315
  let perpId = this.getPerpIdFromSymbol(symbol);
1326
1316
  let isBuy = side == BUY_SIDE;
1327
- let maxSignedPos = await this.proxyContract!.getMaxSignedOpenTradeSizeForPos(
1328
- perpId,
1329
- BigNumber.from(0),
1330
- isBuy,
1331
- overrides || {}
1332
- );
1317
+ let maxSignedPos = await this.proxyContract!.getMaxSignedOpenTradeSizeForPos(perpId, 0n, isBuy, overrides || {});
1333
1318
  return ABK64x64ToFloat(maxSignedPos);
1334
1319
  }
1335
1320
 
@@ -1353,7 +1338,7 @@ export default class MarketData extends PerpetualDataHandler {
1353
1338
  *
1354
1339
  * @returns {number} Price of index in given currency.
1355
1340
  */
1356
- public async getOraclePrice(base: string, quote: string, overrides?: CallOverrides): Promise<number | undefined> {
1341
+ public async getOraclePrice(base: string, quote: string, overrides?: Overrides): Promise<number | undefined> {
1357
1342
  if (!this.proxyContract) {
1358
1343
  throw Error("no proxy contract initialized. Use createProxyInstance().");
1359
1344
  }
@@ -1382,12 +1367,12 @@ export default class MarketData extends PerpetualDataHandler {
1382
1367
  * main();
1383
1368
  *
1384
1369
  */
1385
- public async getOrderStatus(symbol: string, orderId: string, overrides?: CallOverrides): Promise<OrderStatus> {
1370
+ public async getOrderStatus(symbol: string, orderId: string, overrides?: Overrides): Promise<OrderStatus> {
1386
1371
  if (!this.proxyContract) {
1387
1372
  throw Error("no proxy contract initialized. Use createProxyInstance().");
1388
1373
  }
1389
1374
  const orderBookContract = this.getOrderBookContract(symbol);
1390
- const status = (await orderBookContract.getOrderStatus(orderId, overrides || {})) as OrderStatus;
1375
+ const status = Number(await orderBookContract.getOrderStatus(orderId, overrides || {})) as OrderStatus;
1391
1376
  return status;
1392
1377
  }
1393
1378
 
@@ -1411,19 +1396,19 @@ export default class MarketData extends PerpetualDataHandler {
1411
1396
  * main();
1412
1397
  *
1413
1398
  */
1414
- public async getOrdersStatus(symbol: string, orderId: string[], overrides?: CallOverrides): Promise<OrderStatus[]> {
1399
+ public async getOrdersStatus(symbol: string, orderId: string[], overrides?: Overrides): Promise<OrderStatus[]> {
1415
1400
  if (!this.proxyContract || !this.multicall) {
1416
1401
  throw Error("no proxy contract initialized. Use createProxyInstance().");
1417
1402
  }
1418
1403
  const orderBookContract = this.getOrderBookContract(symbol);
1419
1404
 
1420
1405
  const statusCalls: Multicall3.Call3Struct[] = orderId.map((id) => ({
1421
- target: orderBookContract.address,
1406
+ target: orderBookContract.target,
1422
1407
  allowFailure: false,
1423
1408
  callData: orderBookContract.interface.encodeFunctionData("getOrderStatus", [id]),
1424
1409
  }));
1425
1410
  // multicall
1426
- const encodedResults = await this.multicall.callStatic.aggregate3(statusCalls, overrides || {});
1411
+ const encodedResults = await this.multicall.aggregate3.staticCall(statusCalls, overrides || {});
1427
1412
  // order status
1428
1413
  return encodedResults.map(
1429
1414
  (encodedResult) =>
@@ -1490,7 +1475,7 @@ export default class MarketData extends PerpetualDataHandler {
1490
1475
  symbol: string,
1491
1476
  quantity: number,
1492
1477
  indexPrices?: [number, number],
1493
- overrides?: CallOverrides
1478
+ overrides?: Overrides
1494
1479
  ): Promise<number> {
1495
1480
  if (this.proxyContract == null) {
1496
1481
  throw Error("no proxy contract initialized. Use createProxyInstance().");
@@ -1518,7 +1503,7 @@ export default class MarketData extends PerpetualDataHandler {
1518
1503
  public async getPerpetualState(
1519
1504
  symbol: string,
1520
1505
  indexPriceInfo?: [number, number, boolean, boolean],
1521
- overrides?: CallOverrides
1506
+ overrides?: Overrides
1522
1507
  ): Promise<PerpetualState> {
1523
1508
  if (this.proxyContract == null) {
1524
1509
  throw Error("no proxy contract initialized. Use createProxyInstance().");
@@ -1542,7 +1527,7 @@ export default class MarketData extends PerpetualDataHandler {
1542
1527
  * @param {string} poolSymbol symbol of the form USDC
1543
1528
  * @returns {PoolState} PoolState copy
1544
1529
  */
1545
- public async getPoolState(poolSymbol: string, overrides?: CallOverrides): Promise<PoolState> {
1530
+ public async getPoolState(poolSymbol: string, overrides?: Overrides): Promise<PoolState> {
1546
1531
  if (this.proxyContract == null) {
1547
1532
  throw new Error("no proxy contract initialized. Use createProxyInstance().");
1548
1533
  }
@@ -1632,7 +1617,7 @@ export default class MarketData extends PerpetualDataHandler {
1632
1617
  traderAddr: string,
1633
1618
  orderBookContract: LimitOrderBook,
1634
1619
  symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>,
1635
- overrides?: CallOverrides
1620
+ overrides?: Overrides
1636
1621
  ): Promise<Order[]> {
1637
1622
  //eliminate empty orders and map to user friendly orders
1638
1623
  let userFriendlyOrders: Order[] = new Array<Order>();
@@ -1669,7 +1654,7 @@ export default class MarketData extends PerpetualDataHandler {
1669
1654
  orderBookContracts: LimitOrderBook[],
1670
1655
  multicall: Multicall3,
1671
1656
  symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>,
1672
- overrides?: CallOverrides
1657
+ overrides?: Overrides
1673
1658
  ): Promise<{ orders: Order[][]; digests: string[][] }> {
1674
1659
  // eliminate empty orders and map to user friendly orders
1675
1660
  const numOBs = orderBookContracts.length;
@@ -1686,28 +1671,28 @@ export default class MarketData extends PerpetualDataHandler {
1686
1671
  const contracts = orderBookContracts.filter((_c, i) => haveMoreOrders[i]);
1687
1672
  // prepare calls
1688
1673
  const ordersCalls: Multicall3.Call3Struct[] = contracts.map((c, i) => ({
1689
- target: c.address,
1674
+ target: c.target,
1690
1675
  allowFailure: true,
1691
1676
  callData: c.interface.encodeFunctionData("getOrders", [traderAddr, from[i], bulkSize]),
1692
1677
  }));
1693
1678
  const digestsCalls: Multicall3.Call3Struct[] = contracts.map((c, i) => ({
1694
- target: c.address,
1679
+ target: c.target,
1695
1680
  allowFailure: true,
1696
1681
  callData: c.interface.encodeFunctionData("limitDigestsOfTrader", [traderAddr, from[i], bulkSize]),
1697
1682
  }));
1698
1683
  // call
1699
- const encodedResults = await multicall.callStatic.aggregate3(ordersCalls.concat(digestsCalls), overrides || {});
1684
+ const encodedResults = await multicall.aggregate3.staticCall(ordersCalls.concat(digestsCalls), overrides || {});
1700
1685
  const encodedOrders = encodedResults.slice(0, ordersCalls.length);
1701
1686
  const encodedDigests = encodedResults.slice(ordersCalls.length);
1702
1687
  // parse
1703
1688
  const allOrders: IClientOrder.ClientOrderStructOutput[][] = encodedOrders
1704
1689
  .slice(0, ordersCalls.length)
1705
1690
  .map(({ success, returnData }, i) => {
1706
- if (!success) throw new Error(`Failed to get orders for order book ${contracts[i].address}`);
1691
+ if (!success) throw new Error(`Failed to get orders for order book ${contracts[i].target}`);
1707
1692
  return contracts[i].interface.decodeFunctionResult("getOrders", returnData)[0];
1708
1693
  });
1709
1694
  const allDigests: string[][] = encodedDigests.map(({ success, returnData }, i) => {
1710
- if (!success) throw new Error(`Failed to get orders for order book ${contracts[i].address}`);
1695
+ if (!success) throw new Error(`Failed to get orders for order book ${contracts[i].target}`);
1711
1696
  return contracts[i].interface.decodeFunctionResult("limitDigestsOfTrader", returnData)[0];
1712
1697
  });
1713
1698
  // arrange
@@ -1715,7 +1700,7 @@ export default class MarketData extends PerpetualDataHandler {
1715
1700
  let orders = allOrders[j].filter((o) => o.traderAddr != ZERO_ADDRESS);
1716
1701
  let digests = allDigests[j].filter((d) => d != ZERO_ORDER_ID);
1717
1702
 
1718
- let i = orderBookContracts.findIndex((c) => c.address == contracts[j].address);
1703
+ let i = orderBookContracts.findIndex((c) => c.target == contracts[j].target);
1719
1704
  let k = 0;
1720
1705
  while (k < orders.length && orders[k].traderAddr != ZERO_ADDRESS) {
1721
1706
  userFriendlyOrders[i].push(PerpetualDataHandler.fromClientOrder(orders[k], symbolToPerpStaticInfo));
@@ -1739,12 +1724,12 @@ export default class MarketData extends PerpetualDataHandler {
1739
1724
  public static async orderIdsOfTrader(
1740
1725
  traderAddr: string,
1741
1726
  orderBookContract: LimitOrderBook,
1742
- overrides?: CallOverrides
1727
+ overrides?: Overrides
1743
1728
  ): Promise<string[]> {
1744
1729
  let digestsRaw: string[] = await orderBookContract.limitDigestsOfTrader(traderAddr, 0, 15, overrides || {});
1745
1730
  let k: number = 0;
1746
1731
  let digests: string[] = [];
1747
- while (k < digestsRaw.length && BigNumber.from(digestsRaw[k]).gt(0)) {
1732
+ while (k < digestsRaw.length && BigInt(digestsRaw[k]) > 0n) {
1748
1733
  digests.push(digestsRaw[k]);
1749
1734
  k++;
1750
1735
  }
@@ -1776,7 +1761,7 @@ export default class MarketData extends PerpetualDataHandler {
1776
1761
  traderAddr: string,
1777
1762
  symbol: string,
1778
1763
  indexPrices?: [number, number],
1779
- overrides?: CallOverrides
1764
+ overrides?: Overrides
1780
1765
  ): Promise<number> {
1781
1766
  if (!this.proxyContract) {
1782
1767
  throw Error("no proxy contract initialized. Use createProxyInstance().");
@@ -1791,7 +1776,7 @@ export default class MarketData extends PerpetualDataHandler {
1791
1776
  let traderState = await this.proxyContract.getTraderState(
1792
1777
  perpID,
1793
1778
  traderAddr,
1794
- indexPrices.map((x) => floatToABK64x64(x == undefined || Number.isNaN(x) ? 0 : x)) as [BigNumber, BigNumber],
1779
+ indexPrices.map((x) => floatToABK64x64(x == undefined || Number.isNaN(x) ? 0 : x)) as [bigint, bigint],
1795
1780
  overrides || {}
1796
1781
  );
1797
1782
  const idx_availableMargin = 1;
@@ -1817,12 +1802,12 @@ export default class MarketData extends PerpetualDataHandler {
1817
1802
  * }
1818
1803
  * main();
1819
1804
  */
1820
- public async getTraderLoyalityScore(traderAddr: string, overrides?: CallOverrides): Promise<number> {
1805
+ public async getTraderLoyalityScore(traderAddr: string, overrides?: Overrides): Promise<number> {
1821
1806
  if (this.proxyContract == null) {
1822
1807
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
1823
1808
  }
1824
1809
  // loop over all pools and query volumes
1825
- let traderProm: Array<Promise<BigNumber>> = [];
1810
+ let traderProm: Array<Promise<bigint>> = [];
1826
1811
  for (let k = 0; k < this.poolStaticInfos.length; k++) {
1827
1812
  let trdrVol = this.proxyContract.getCurrentTraderVolume(
1828
1813
  this.poolStaticInfos[k].poolId,
@@ -1940,7 +1925,7 @@ export default class MarketData extends PerpetualDataHandler {
1940
1925
  _symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>,
1941
1926
  _perpetualIdToSymbol: Map<number, string>,
1942
1927
  _idxPriceMap: Map<string, [number, boolean]>,
1943
- overrides?: CallOverrides
1928
+ overrides?: Overrides
1944
1929
  ): Promise<Map<string, number>> {
1945
1930
  // what is the maximal number of queries at once?
1946
1931
  const chunkSize = 10;
@@ -1952,14 +1937,14 @@ export default class MarketData extends PerpetualDataHandler {
1952
1937
  const proxyCalls: Multicall3.Call3Struct[] = [];
1953
1938
  let midPriceMap = new Map<string, number>();
1954
1939
  for (let k = 0; k < perpetualIDChunks.length; k++) {
1955
- let indexPrices: BigNumber[] = [];
1940
+ let indexPrices: bigint[] = [];
1956
1941
  // collect/order all index prices
1957
1942
  for (let j = 0; j < perpetualIDChunks[k].length; j++) {
1958
1943
  let id = perpetualIDChunks[k][j];
1959
1944
  let symbol3s = _perpetualIdToSymbol.get(id);
1960
1945
  let info = _symbolToPerpStaticInfo.get(symbol3s!);
1961
1946
  let S2 = floatToABK64x64(_idxPriceMap.get(info!.S2Symbol)![0]);
1962
- let S3 = BigNumber.from(0);
1947
+ let S3 = 0n;
1963
1948
  if (info!.S3Symbol != "") {
1964
1949
  S3 = floatToABK64x64(_idxPriceMap.get(info!.S3Symbol)![0]);
1965
1950
  }
@@ -1967,19 +1952,19 @@ export default class MarketData extends PerpetualDataHandler {
1967
1952
  indexPrices.push(S3);
1968
1953
  }
1969
1954
  proxyCalls.push({
1970
- target: _proxyContract.address,
1955
+ target: _proxyContract.target,
1971
1956
  allowFailure: false,
1972
1957
  callData: _proxyContract.interface.encodeFunctionData("queryMidPrices", [perpetualIDChunks[k], indexPrices]),
1973
1958
  });
1974
1959
  }
1975
1960
  // multicall
1976
- const encodedResults = await _multicall.callStatic.aggregate3(proxyCalls, overrides || {});
1961
+ const encodedResults = await _multicall.aggregate3.staticCall(proxyCalls, overrides || {});
1977
1962
  // apply results
1978
1963
  for (let k = 0; k < perpetualIDChunks.length; k++) {
1979
1964
  let fMidPrice = _proxyContract.interface.decodeFunctionResult(
1980
1965
  "queryMidPrices",
1981
1966
  encodedResults[k].returnData
1982
- )[0] as BigNumber[];
1967
+ )[0] as bigint[];
1983
1968
  for (let j = 0; j < fMidPrice.length; j++) {
1984
1969
  let id = perpetualIDChunks[k][j];
1985
1970
  let symbol3s = _perpetualIdToSymbol.get(id);
@@ -2004,7 +1989,7 @@ export default class MarketData extends PerpetualDataHandler {
2004
1989
  _poolStaticInfos: PoolStaticInfo[],
2005
1990
  _symbolList: Map<string, string>,
2006
1991
  _nestedPerpetualIDs: Array<Array<number>>,
2007
- overrides?: CallOverrides
1992
+ overrides?: Overrides
2008
1993
  ): Promise<{ pools: Array<PoolState>; perpetuals: Array<PerpetualState> }> {
2009
1994
  const chunkSize = 5;
2010
1995
  const numPools = _nestedPerpetualIDs.length;
@@ -2015,13 +2000,13 @@ export default class MarketData extends PerpetualDataHandler {
2015
2000
  const proxyCalls: Multicall3.Call3Struct[] = [
2016
2001
  // getLiquidityPools
2017
2002
  {
2018
- target: _proxyContract.address,
2003
+ target: _proxyContract.target,
2019
2004
  allowFailure: false,
2020
2005
  callData: _proxyContract.interface.encodeFunctionData("getLiquidityPools", [iFrom, iFrom + chunkSize - 1]), // from-to includes "to"
2021
2006
  },
2022
2007
  // getPerpetuals
2023
2008
  {
2024
- target: _proxyContract.address,
2009
+ target: _proxyContract.target,
2025
2010
  allowFailure: false,
2026
2011
  callData: _proxyContract.interface.encodeFunctionData("getPerpetuals", [
2027
2012
  _nestedPerpetualIDs.slice(iFrom - 1, iFrom + chunkSize - 1).flat(), // from-to does not include "to"
@@ -2029,7 +2014,7 @@ export default class MarketData extends PerpetualDataHandler {
2029
2014
  },
2030
2015
  ];
2031
2016
  // multicall
2032
- const encodedResults = await _multicall.callStatic.aggregate3(proxyCalls, overrides || {});
2017
+ const encodedResults = await _multicall.aggregate3.staticCall(proxyCalls, overrides || {});
2033
2018
  const pools = _proxyContract.interface.decodeFunctionResult(
2034
2019
  "getLiquidityPools",
2035
2020
  encodedResults[0].returnData
@@ -2086,7 +2071,7 @@ export default class MarketData extends PerpetualDataHandler {
2086
2071
  _symbolList: Map<string, string>
2087
2072
  ): PerpetualState[] {
2088
2073
  const perpStates = _perpetuals.map((perp) => ({
2089
- id: perp.id!,
2074
+ id: Number(perp.id!),
2090
2075
  state: PERP_STATE_STR[perp.state!],
2091
2076
  baseCurrency: contractSymbolToSymbol(perp.S2BaseCCY!, _symbolList)!,
2092
2077
  quoteCurrency: contractSymbolToSymbol(perp.S2QuoteCCY!, _symbolList)!,
@@ -2125,10 +2110,14 @@ export default class MarketData extends PerpetualDataHandler {
2125
2110
  _symbolList: Map<string, string>,
2126
2111
  _priceFeedGetter: PriceFeeds,
2127
2112
  _oracleFactoryAddr: string,
2128
- overrides?: CallOverrides
2113
+ overrides?: Overrides
2129
2114
  ): Promise<ExchangeInfo> {
2130
2115
  // get the factory address (shared among all pools)
2131
- let info: ExchangeInfo = { pools: [], oracleFactoryAddr: _oracleFactoryAddr, proxyAddr: _proxyContract.address };
2116
+ let info: ExchangeInfo = {
2117
+ pools: [],
2118
+ oracleFactoryAddr: _oracleFactoryAddr,
2119
+ proxyAddr: _proxyContract.target.toString(),
2120
+ };
2132
2121
 
2133
2122
  // get all prices from off-chain price-sources: no RPC calls
2134
2123
  let idxPriceMap = await MarketData._getAllIndexPrices(_symbolToPerpStaticInfo, _priceFeedGetter);
@@ -2244,13 +2233,13 @@ export default class MarketData extends PerpetualDataHandler {
2244
2233
  this.getPerpIdFromSymbol(s),
2245
2234
  ]),
2246
2235
  }));
2247
- const encodedResults = await this.multicall!.callStatic.aggregate3(proxyCalls);
2236
+ const encodedResults = await this.multicall.aggregate3.staticCall(proxyCalls);
2248
2237
  const prices = encodedResults.map(
2249
2238
  (result) =>
2250
2239
  this.proxyContract!.interface.decodeFunctionResult(
2251
2240
  "getLastPerpetualBaseToUSDConversion",
2252
2241
  result.returnData
2253
- )[0] as BigNumber
2242
+ )[0] as bigint
2254
2243
  );
2255
2244
 
2256
2245
  prices.forEach((px, i) => {