@d8x/perpetuals-sdk 1.3.7 → 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 +52 -62
  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 +38 -48
  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 +100 -108
  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,16 @@
1
- import { Signer } from "@ethersproject/abstract-signer";
2
- import { BigNumber, BigNumberish } from "@ethersproject/bignumber";
3
- import { HashZero } from "@ethersproject/constants";
4
- import type { CallOverrides, ContractTransaction, PayableOverrides } from "@ethersproject/contracts";
5
- import { BlockTag, StaticJsonRpcProvider, TransactionRequest } from "@ethersproject/providers";
1
+ import {
2
+ BigNumberish,
3
+ BlockTag,
4
+ JsonRpcProvider,
5
+ Overrides,
6
+ Signer,
7
+ TransactionRequest,
8
+ TransactionResponse,
9
+ ZeroHash,
10
+ } from "ethers";
6
11
  import { BUY_SIDE, MULTICALL_ADDRESS, OrderStatus, SELL_SIDE, ZERO_ADDRESS, ZERO_ORDER_ID } from "./constants";
7
- import { IPyth__factory, LimitOrderBook, LimitOrderBook__factory, Multicall3, Multicall3__factory } from "./contracts";
12
+ import { IPyth__factory, LimitOrderBook__factory, Multicall3, Multicall3__factory } from "./contracts";
13
+ import { PayableOverrides } from "./contracts/common";
8
14
  import { ABK64x64ToFloat, floatToABK64x64 } from "./d8XMath";
9
15
  import {
10
16
  type NodeSDKConfig,
@@ -88,7 +94,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
88
94
  executorAddr?: string,
89
95
  submission?: PriceFeedSubmission,
90
96
  overrides?: PayableOverrides
91
- ): Promise<ContractTransaction> {
97
+ ): Promise<TransactionResponse> {
92
98
  return this.executeOrders(symbol, [orderId], executorAddr, submission, overrides);
93
99
  }
94
100
 
@@ -126,7 +132,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
126
132
  executorAddr?: string,
127
133
  submission?: PriceFeedSubmission,
128
134
  overrides?: PayableOverrides & { rpcURL?: string; splitTx?: boolean; maxGasLimit?: BigNumberish }
129
- ): Promise<ContractTransaction> {
135
+ ): Promise<TransactionResponse> {
130
136
  if (this.proxyContract == null || this.signer == null) {
131
137
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
132
138
  }
@@ -136,7 +142,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
136
142
  if (overrides) {
137
143
  ({ rpcURL, splitTx, maxGasLimit, ...overrides } = overrides);
138
144
  }
139
- const provider = new StaticJsonRpcProvider(rpcURL ?? this.nodeURL);
145
+ const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL);
140
146
 
141
147
  if (typeof executorAddr == "undefined") {
142
148
  executorAddr = this.traderAddr;
@@ -182,9 +188,8 @@ export default class OrderExecutorTool extends WriteAccessHandler {
182
188
  value = this.PRICE_UPDATE_FEE_GWEI * submission.timestamps.length;
183
189
  }
184
190
 
185
- if (overrides?.nonce !== undefined) {
186
- const nonce = await overrides.nonce;
187
- overrides.nonce = BigNumber.from(nonce).add(nonceInc);
191
+ if (overrides?.nonce != undefined) {
192
+ overrides.nonce = overrides.nonce + nonceInc;
188
193
  }
189
194
 
190
195
  if (overrides?.gasLimit !== undefined) {
@@ -200,7 +205,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
200
205
  }
201
206
 
202
207
  const unsignedTx: TransactionRequest = {
203
- to: this.getOrderBookContract(symbol).address,
208
+ to: this.getOrderBookContract(symbol).target,
204
209
  from: this.traderAddr,
205
210
  nonce: overrides?.nonce,
206
211
  data: txData,
@@ -212,29 +217,21 @@ export default class OrderExecutorTool extends WriteAccessHandler {
212
217
  };
213
218
  // no gas limit was specified, explicitly estimate
214
219
  if (!overrides?.gasLimit) {
215
- // given gas price might be conservative, which leads to a lower a gas estimate
216
- //-> compensate with larger buffer
217
220
  let gasLimit = await this.signer
218
221
  .estimateGas(unsignedTx)
219
- .then((gas) => gas.mul(1500).div(1000))
222
+ .then((gas) => (gas * 1500n) / 1000n)
220
223
  .catch((_e) => undefined);
221
-
222
224
  if (!gasLimit) {
223
225
  // gas estimate failed - txn would probably revert, double check (and possibly re-throw):
224
- overrides = {
225
- ...overrides,
226
- gasLimit: maxGasLimit ?? this.gasLimit,
227
- value: unsignedTx.value,
228
- };
229
- await this.getOrderBookContract(symbol, provider).callStatic.executeOrders(
226
+ overrides = { gasLimit: maxGasLimit ?? this.gasLimit, value: unsignedTx.value, ...overrides };
227
+ await this.getOrderBookContract(symbol).executeOrders.staticCall(
230
228
  orderIds,
231
229
  executorAddr,
232
230
  submission.priceFeedVaas,
233
231
  submission.timestamps,
234
232
  overrides
235
233
  );
236
- // it worked - use fallback
237
- gasLimit = BigNumber.from(maxGasLimit ?? this.gasLimit);
234
+ gasLimit = BigInt(maxGasLimit ?? this.gasLimit);
238
235
  }
239
236
  unsignedTx.gasLimit = gasLimit;
240
237
  }
@@ -266,7 +263,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
266
263
  public async getOrderById(
267
264
  symbol: string,
268
265
  id: string,
269
- overrides?: CallOverrides & { rpcURL?: string }
266
+ overrides?: Overrides & { rpcURL?: string }
270
267
  ): Promise<Order | undefined> {
271
268
  let ob = this.getOrderBookContract(symbol);
272
269
  // multicall
@@ -274,63 +271,65 @@ export default class OrderExecutorTool extends WriteAccessHandler {
274
271
  if (overrides) {
275
272
  ({ rpcURL, ...overrides } = overrides);
276
273
  }
277
- const provider = new StaticJsonRpcProvider(rpcURL ?? this.nodeURL);
274
+ const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
278
275
  const multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, provider);
279
276
  const calls: Multicall3.Call3Struct[] = [
280
277
  // 0: orderOfDigest
281
278
  {
282
- target: ob.address,
279
+ target: ob.target,
283
280
  allowFailure: false,
284
281
  callData: ob.interface.encodeFunctionData("orderOfDigest", [id]),
285
282
  },
286
283
  // 1: orderDependency
287
284
  {
288
- target: ob.address,
285
+ target: ob.target,
289
286
  allowFailure: false,
290
287
  callData: ob.interface.encodeFunctionData("orderDependency", [id]),
291
288
  },
292
289
  ];
293
- const encodedResults = await multicall.callStatic.aggregate3(calls, overrides || {});
290
+ const encodedResults = await multicall.aggregate3.staticCall(calls, overrides || {});
294
291
  if (encodedResults.some(({ success }) => !success)) {
295
292
  return undefined;
296
293
  }
297
294
 
298
- const smartContractOrder = ob.interface.decodeFunctionResult("orderOfDigest", encodedResults[0].returnData) as [
299
- number,
300
- number,
301
- number,
295
+ const smartContractOrder = ob.interface.decodeFunctionResult(
296
+ "orderOfDigest",
297
+ encodedResults[0].returnData
298
+ ) as unknown as [
299
+ bigint,
300
+ bigint,
301
+ bigint,
302
302
  string,
303
- number,
303
+ bigint,
304
304
  string,
305
- number,
306
- number,
307
- number,
305
+ bigint,
306
+ bigint,
307
+ bigint,
308
308
  string,
309
- BigNumber,
310
- BigNumber,
311
- BigNumber,
309
+ bigint,
310
+ bigint,
311
+ bigint,
312
312
  string
313
313
  ] & {
314
- leverageTDR: number;
315
- brokerFeeTbps: number;
316
- iPerpetualId: number;
314
+ leverageTDR: bigint;
315
+ brokerFeeTbps: bigint;
316
+ iPerpetualId: bigint;
317
317
  traderAddr: string;
318
- executionTimestamp: number;
318
+ executionTimestamp: bigint;
319
319
  brokerAddr: string;
320
- submittedTimestamp: number;
321
- flags: number;
322
- iDeadline: number;
320
+ submittedTimestamp: bigint;
321
+ flags: bigint;
322
+ iDeadline: bigint;
323
323
  executorAddr: string;
324
- fAmount: BigNumber;
325
- fLimitPrice: BigNumber;
326
- fTriggerPrice: BigNumber;
324
+ fAmount: bigint;
325
+ fLimitPrice: bigint;
326
+ fTriggerPrice: bigint;
327
327
  brokerSignature: string;
328
328
  };
329
-
330
- const orderDependency = ob.interface.decodeFunctionResult("orderDependency", encodedResults[1].returnData) as [
331
- string,
332
- string
333
- ] & {
329
+ const orderDependency = ob.interface.decodeFunctionResult(
330
+ "orderDependency",
331
+ encodedResults[1].returnData
332
+ ) as unknown as [string, string] & {
334
333
  parentChildDigest1: string;
335
334
  parentChildDigest2: string;
336
335
  };
@@ -369,7 +368,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
369
368
  orderId: string,
370
369
  blockTimestamp?: number,
371
370
  indexPrices?: [number, number],
372
- overrides?: CallOverrides & { rpcURL?: string }
371
+ overrides?: Overrides & { rpcURL?: string }
373
372
  ): Promise<boolean> {
374
373
  if (this.proxyContract == null || this.multicall == null) {
375
374
  throw Error("no proxy contract initialized. Use createProxyInstance().");
@@ -382,11 +381,11 @@ export default class OrderExecutorTool extends WriteAccessHandler {
382
381
  if (overrides) {
383
382
  ({ rpcURL, ...overrides } = overrides);
384
383
  }
385
- const provider = new StaticJsonRpcProvider(rpcURL ?? this.nodeURL);
384
+ const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
386
385
 
387
386
  const fS2S3 = indexPrices.map((x) => floatToABK64x64(x == undefined || Number.isNaN(x) ? 0 : x)) as [
388
- BigNumber,
389
- BigNumber
387
+ bigint,
388
+ bigint
390
389
  ];
391
390
  const perpId = this.getPerpIdFromSymbol(order.symbol);
392
391
  const fAmount = floatToABK64x64(order.quantity * (order.side == BUY_SIDE ? 1 : -1));
@@ -395,25 +394,25 @@ export default class OrderExecutorTool extends WriteAccessHandler {
395
394
  const proxyCalls: Multicall3.Call3Struct[] = [
396
395
  // 0: trade amount price
397
396
  {
398
- target: this.proxyContract.address,
397
+ target: this.proxyContract.target,
399
398
  allowFailure: true,
400
399
  callData: this.proxyContract.interface.encodeFunctionData("queryPerpetualPrice", [perpId, fAmount, fS2S3]),
401
400
  },
402
401
  // 1: amm state to get the mark price
403
402
  {
404
- target: this.proxyContract.address,
403
+ target: this.proxyContract.target,
405
404
  allowFailure: true,
406
405
  callData: this.proxyContract.interface.encodeFunctionData("getAMMState", [perpId, fS2S3]),
407
406
  },
408
407
  // 2: order status to see if it's still open
409
408
  {
410
- target: orderBook.address,
409
+ target: orderBook.target,
411
410
  allowFailure: true,
412
411
  callData: orderBook.interface.encodeFunctionData("getOrderStatus", [orderId]),
413
412
  },
414
413
  // 3: block timestamp
415
414
  {
416
- target: this.multicall.address,
415
+ target: this.multicall.target,
417
416
  allowFailure: false,
418
417
  callData: this.multicall.interface.encodeFunctionData("getCurrentBlockTimestamp"),
419
418
  },
@@ -421,23 +420,23 @@ export default class OrderExecutorTool extends WriteAccessHandler {
421
420
 
422
421
  const hasParent =
423
422
  order.parentChildOrderIds != undefined &&
424
- order.parentChildOrderIds[0] == HashZero &&
425
- order.parentChildOrderIds[1] != HashZero;
423
+ order.parentChildOrderIds[0] == ZeroHash &&
424
+ order.parentChildOrderIds[1] != ZeroHash;
426
425
 
427
426
  if (hasParent) {
428
427
  // 4: order has a parent, one more call needed:
429
428
  proxyCalls.push({
430
- target: orderBook.address,
429
+ target: orderBook.target,
431
430
  allowFailure: true,
432
431
  callData: orderBook.interface.encodeFunctionData("getOrderStatus", [order.parentChildOrderIds![1]]),
433
432
  });
434
433
  }
435
434
  // multicall
436
435
  const multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, provider);
437
- const encodedResults = await multicall.callStatic.aggregate3(proxyCalls, overrides || {});
436
+ const encodedResults = await multicall.aggregate3.staticCall(proxyCalls, overrides || {});
438
437
 
439
438
  // order status
440
- let iOrderStatus: number;
439
+ let iOrderStatus: BigNumberish;
441
440
  if (encodedResults[2].success) {
442
441
  iOrderStatus = orderBook.interface.decodeFunctionResult("getOrderStatus", encodedResults[2].returnData)[0];
443
442
  } else {
@@ -450,7 +449,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
450
449
 
451
450
  // parent status
452
451
  if (hasParent) {
453
- let iParentOrderStatus: number;
452
+ let iParentOrderStatus: BigNumberish;
454
453
  if (encodedResults[4].success) {
455
454
  iParentOrderStatus = orderBook.interface.decodeFunctionResult(
456
455
  "getOrderStatus",
@@ -466,37 +465,35 @@ export default class OrderExecutorTool extends WriteAccessHandler {
466
465
  }
467
466
 
468
467
  // mark price
469
- let ammState: BigNumber[];
468
+ let ammState: bigint[];
470
469
  if (encodedResults[1].success) {
471
470
  ammState = this.proxyContract.interface.decodeFunctionResult(
472
471
  "getAMMState",
473
472
  encodedResults[1].returnData
474
- )[0] as BigNumber[];
473
+ )[0] as bigint[];
475
474
  } else {
476
475
  ammState = await this.proxyContract.getAMMState(perpId, fS2S3);
477
476
  }
478
477
  const markPrice = indexPrices[0] * (1 + ABK64x64ToFloat(ammState[8]));
479
478
 
480
479
  // price
481
- let fOrderPrice: BigNumber;
480
+ let fOrderPrice: bigint;
482
481
  if (encodedResults[0].success) {
483
482
  fOrderPrice = this.proxyContract.interface.decodeFunctionResult(
484
483
  "queryPerpetualPrice",
485
484
  encodedResults[0].returnData
486
- )[0] as BigNumber;
485
+ )[0] as bigint;
487
486
  } else {
488
487
  fOrderPrice = await this.proxyContract.queryPerpetualPrice(perpId, fAmount, fS2S3);
489
488
  }
490
489
  const orderPrice = ABK64x64ToFloat(fOrderPrice);
491
490
 
492
491
  // block timestamp
493
- const ts = (
494
- this.multicall.interface.decodeFunctionResult(
495
- "getCurrentBlockTimestamp",
496
- encodedResults[3].returnData
497
- )[0] as BigNumber
498
- ).toNumber();
499
- blockTimestamp = Math.max(ts + 1, blockTimestamp ?? 0);
492
+ const ts = this.multicall.interface.decodeFunctionResult(
493
+ "getCurrentBlockTimestamp",
494
+ encodedResults[3].returnData
495
+ )[0] as bigint;
496
+ blockTimestamp = Math.max(Number(ts) + 1, blockTimestamp ?? 0);
500
497
  return this._isTradeable(order, orderPrice, markPrice, blockTimestamp, this.symbolToPerpStaticInfo);
501
498
  }
502
499
 
@@ -530,7 +527,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
530
527
  orderIds: string[],
531
528
  blockTimestamp?: number,
532
529
  indexPrices?: [number, number, boolean, boolean],
533
- overrides?: CallOverrides & { rpcURL?: string }
530
+ overrides?: Overrides & { rpcURL?: string }
534
531
  ): Promise<boolean[]> {
535
532
  const MAX_ORDERS_CHECKED = 10;
536
533
  let totalOrders = orders.length;
@@ -565,7 +562,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
565
562
  orderIds: string[],
566
563
  blockTimestamp?: number,
567
564
  indexPrices?: [number, number, boolean, boolean],
568
- overrides?: CallOverrides & { rpcURL?: string }
565
+ overrides?: Overrides & { rpcURL?: string }
569
566
  ): Promise<boolean[]> {
570
567
  if (orders.length == 0) {
571
568
  return [];
@@ -588,11 +585,11 @@ export default class OrderExecutorTool extends WriteAccessHandler {
588
585
  if (overrides) {
589
586
  ({ rpcURL, ...overrides } = overrides);
590
587
  }
591
- const provider = new StaticJsonRpcProvider(rpcURL ?? this.nodeURL);
588
+ const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
592
589
 
593
590
  const fS2S3 = [indexPrices[0], indexPrices[1]].map((x) =>
594
591
  floatToABK64x64(x == undefined || Number.isNaN(x) ? 0 : x)
595
- ) as [BigNumber, BigNumber];
592
+ ) as [bigint, bigint];
596
593
  const perpId = this.getPerpIdFromSymbol(orders[0].symbol);
597
594
  const fAmounts = orders.map((order) => floatToABK64x64(order.quantity * (order.side == BUY_SIDE ? 1 : -1)));
598
595
  const orderBook = this.getOrderBookContract(orders[0].symbol).connect(provider);
@@ -602,13 +599,13 @@ export default class OrderExecutorTool extends WriteAccessHandler {
602
599
  let proxyCalls: Multicall3.Call3Struct[] = [
603
600
  // 0: amm state to get the mark price
604
601
  {
605
- target: this.proxyContract.address,
602
+ target: this.proxyContract.target,
606
603
  allowFailure: false,
607
604
  callData: this.proxyContract.interface.encodeFunctionData("getAMMState", [perpId, fS2S3]),
608
605
  },
609
606
  // 1: block timestamp
610
607
  {
611
- target: this.multicall.address,
608
+ target: this.multicall.target,
612
609
  allowFailure: false,
613
610
  callData: this.multicall.interface.encodeFunctionData("getCurrentBlockTimestamp"),
614
611
  },
@@ -616,7 +613,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
616
613
 
617
614
  // status calls
618
615
  const statusCalls: Multicall3.Call3Struct[] = orderIds.map((orderId) => ({
619
- target: orderBook.address,
616
+ target: orderBook.target,
620
617
  allowFailure: false,
621
618
  callData: orderBook.interface.encodeFunctionData("getOrderStatus", [orderId]),
622
619
  }));
@@ -624,7 +621,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
624
621
 
625
622
  // price calls
626
623
  const priceCalls: Multicall3.Call3Struct[] = fAmounts.map((fAmount) => ({
627
- target: this.proxyContract!.address,
624
+ target: this.proxyContract!.target,
628
625
  allowFailure: false,
629
626
  callData: this.proxyContract!.interface.encodeFunctionData("queryPerpetualPrice", [perpId, fAmount, fS2S3]),
630
627
  }));
@@ -635,12 +632,12 @@ export default class OrderExecutorTool extends WriteAccessHandler {
635
632
  .filter(
636
633
  (order) =>
637
634
  order.parentChildOrderIds != undefined &&
638
- order.parentChildOrderIds[0] == HashZero &&
639
- order.parentChildOrderIds[1] != HashZero
635
+ order.parentChildOrderIds[0] == ZeroHash &&
636
+ order.parentChildOrderIds[1] != ZeroHash
640
637
  )
641
638
  .map((order) => {
642
639
  return {
643
- target: orderBook.address,
640
+ target: orderBook.target,
644
641
  allowFailure: false,
645
642
  callData: orderBook.interface.encodeFunctionData("getOrderStatus", [order.parentChildOrderIds![1]]),
646
643
  };
@@ -648,23 +645,21 @@ export default class OrderExecutorTool extends WriteAccessHandler {
648
645
  proxyCalls = proxyCalls.concat(parentStatusCalls);
649
646
 
650
647
  // --- multicall ---
651
- const encodedResults = await multicall.callStatic.aggregate3(proxyCalls, overrides || {});
648
+ const encodedResults = await multicall.aggregate3.staticCall(proxyCalls, overrides || {});
652
649
 
653
650
  // mark price
654
651
  const ammState = this.proxyContract.interface.decodeFunctionResult(
655
652
  "getAMMState",
656
653
  encodedResults[0].returnData
657
- )[0] as BigNumber[];
654
+ )[0] as bigint[];
658
655
  const markPrice = indexPrices[0] * (1 + ABK64x64ToFloat(ammState[8]));
659
656
 
660
657
  // block timestamp
661
- const ts = (
662
- this.multicall.interface.decodeFunctionResult(
663
- "getCurrentBlockTimestamp",
664
- encodedResults[1].returnData
665
- )[0] as BigNumber
666
- ).toNumber();
667
- blockTimestamp = Math.max(ts, blockTimestamp ?? 0);
658
+ const ts = this.multicall.interface.decodeFunctionResult(
659
+ "getCurrentBlockTimestamp",
660
+ encodedResults[1].returnData
661
+ )[0] as bigint;
662
+ blockTimestamp = Math.max(Number(ts), blockTimestamp ?? 0);
668
663
 
669
664
  // order status
670
665
  const isOrderOpen = encodedResults.slice(2, 2 + orders.length).map((encodedResult) => {
@@ -675,10 +670,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
675
670
  // order prices
676
671
  const orderPrices = encodedResults.slice(2 + orders.length, 2 + 2 * orders.length).map((encodedResult) => {
677
672
  const orderPrice = ABK64x64ToFloat(
678
- this.proxyContract!.interface.decodeFunctionResult(
679
- "queryPerpetualPrice",
680
- encodedResult.returnData
681
- )[0] as BigNumber
673
+ this.proxyContract!.interface.decodeFunctionResult("queryPerpetualPrice", encodedResult.returnData)[0] as bigint
682
674
  );
683
675
  return orderPrice;
684
676
  });
@@ -690,8 +682,8 @@ export default class OrderExecutorTool extends WriteAccessHandler {
690
682
  const order = orders[i];
691
683
  const hasParent =
692
684
  order.parentChildOrderIds != undefined &&
693
- order.parentChildOrderIds[0] == HashZero &&
694
- order.parentChildOrderIds[1] != HashZero;
685
+ order.parentChildOrderIds[0] == ZeroHash &&
686
+ order.parentChildOrderIds[1] != ZeroHash;
695
687
  if (hasParent) {
696
688
  const iParentStatus = orderBook.interface.decodeFunctionResult(
697
689
  "getOrderStatus",
@@ -791,6 +783,6 @@ export default class OrderExecutorTool extends WriteAccessHandler {
791
783
  if (this.signer == null) {
792
784
  throw Error("no wallet initialized. Use createProxyInstance().");
793
785
  }
794
- return await this.signer.getTransactionCount(blockTag);
786
+ return await this.signer.getNonce(blockTag);
795
787
  }
796
788
  }