@d8x/perpetuals-sdk 1.3.6 → 2.0.0-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/dist/cjs/accountTrade.d.ts +9 -9
  2. package/dist/cjs/accountTrade.js +19 -17
  3. package/dist/cjs/accountTrade.js.map +1 -1
  4. package/dist/cjs/brokerTool.d.ts +11 -12
  5. package/dist/cjs/brokerTool.js +7 -8
  6. package/dist/cjs/brokerTool.js.map +1 -1
  7. package/dist/cjs/constants.d.ts +11 -12
  8. package/dist/cjs/constants.js +12 -13
  9. package/dist/cjs/constants.js.map +1 -1
  10. package/dist/cjs/contracts/ERC20.d.ts +146 -171
  11. package/dist/cjs/contracts/IPerpetualManager.d.ts +2534 -2225
  12. package/dist/cjs/contracts/IPyth.d.ts +181 -184
  13. package/dist/cjs/contracts/LimitOrderBook.d.ts +373 -401
  14. package/dist/cjs/contracts/LimitOrderBookBeacon.d.ts +53 -104
  15. package/dist/cjs/contracts/LimitOrderBookFactory.d.ts +129 -185
  16. package/dist/cjs/contracts/MockTokenSwap.d.ts +109 -169
  17. package/dist/cjs/contracts/Multicall3.d.ts +147 -211
  18. package/dist/cjs/contracts/OnDemandOracleUpgradeable.d.ts +342 -399
  19. package/dist/cjs/contracts/OracleFactory.d.ts +258 -238
  20. package/dist/cjs/contracts/PerpetualManagerProxy.d.ts +1099 -891
  21. package/dist/cjs/contracts/RedStoneAbi.d.ts +369 -488
  22. package/dist/cjs/contracts/ShareToken.d.ts +232 -285
  23. package/dist/cjs/contracts/common.d.ts +40 -11
  24. package/dist/cjs/contracts/factories/ERC20__factory.d.ts +2 -3
  25. package/dist/cjs/contracts/factories/ERC20__factory.js +3 -3
  26. package/dist/cjs/contracts/factories/ERC20__factory.js.map +1 -1
  27. package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +2 -3
  28. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +3 -3
  29. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  30. package/dist/cjs/contracts/factories/IPyth__factory.d.ts +2 -3
  31. package/dist/cjs/contracts/factories/IPyth__factory.js +3 -3
  32. package/dist/cjs/contracts/factories/IPyth__factory.js.map +1 -1
  33. package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.d.ts +2 -3
  34. package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.js +3 -3
  35. package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.js.map +1 -1
  36. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.d.ts +2 -3
  37. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js +3 -3
  38. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
  39. package/dist/cjs/contracts/factories/LimitOrderBook__factory.d.ts +2 -3
  40. package/dist/cjs/contracts/factories/LimitOrderBook__factory.js +3 -3
  41. package/dist/cjs/contracts/factories/LimitOrderBook__factory.js.map +1 -1
  42. package/dist/cjs/contracts/factories/MockTokenSwap__factory.d.ts +2 -3
  43. package/dist/cjs/contracts/factories/MockTokenSwap__factory.js +3 -3
  44. package/dist/cjs/contracts/factories/MockTokenSwap__factory.js.map +1 -1
  45. package/dist/cjs/contracts/factories/Multicall3__factory.d.ts +11 -9
  46. package/dist/cjs/contracts/factories/Multicall3__factory.js +7 -10
  47. package/dist/cjs/contracts/factories/Multicall3__factory.js.map +1 -1
  48. package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.d.ts +2 -3
  49. package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.js +3 -3
  50. package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.js.map +1 -1
  51. package/dist/cjs/contracts/factories/OracleFactory__factory.d.ts +2 -3
  52. package/dist/cjs/contracts/factories/OracleFactory__factory.js +3 -3
  53. package/dist/cjs/contracts/factories/OracleFactory__factory.js.map +1 -1
  54. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.d.ts +2 -3
  55. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js +3 -3
  56. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
  57. package/dist/cjs/contracts/factories/RedStoneAbi__factory.d.ts +2 -3
  58. package/dist/cjs/contracts/factories/RedStoneAbi__factory.js +3 -3
  59. package/dist/cjs/contracts/factories/RedStoneAbi__factory.js.map +1 -1
  60. package/dist/cjs/contracts/factories/ShareToken__factory.d.ts +2 -3
  61. package/dist/cjs/contracts/factories/ShareToken__factory.js +3 -3
  62. package/dist/cjs/contracts/factories/ShareToken__factory.js.map +1 -1
  63. package/dist/cjs/d8XMath.d.ts +16 -16
  64. package/dist/cjs/d8XMath.js +48 -49
  65. package/dist/cjs/d8XMath.js.map +1 -1
  66. package/dist/cjs/liquidatorTool.d.ts +8 -8
  67. package/dist/cjs/liquidatorTool.js +5 -7
  68. package/dist/cjs/liquidatorTool.js.map +1 -1
  69. package/dist/cjs/liquidityProviderTool.d.ts +4 -5
  70. package/dist/cjs/liquidityProviderTool.js.map +1 -1
  71. package/dist/cjs/marketData.d.ts +27 -28
  72. package/dist/cjs/marketData.js +65 -69
  73. package/dist/cjs/marketData.js.map +1 -1
  74. package/dist/cjs/nodeSDKTypes.d.ts +35 -37
  75. package/dist/cjs/onChainPxFeed.d.ts +2 -2
  76. package/dist/cjs/onChainPxFeed.js +3 -3
  77. package/dist/cjs/onChainPxFeed.js.map +1 -1
  78. package/dist/cjs/onChainPxFeedAngle.d.ts +2 -2
  79. package/dist/cjs/onChainPxFeedAngle.js +4 -5
  80. package/dist/cjs/onChainPxFeedAngle.js.map +1 -1
  81. package/dist/cjs/onChainPxFeedRedStone.js +2 -2
  82. package/dist/cjs/onChainPxFeedRedStone.js.map +1 -1
  83. package/dist/cjs/orderExecutorTool.d.ts +7 -9
  84. package/dist/cjs/orderExecutorTool.js +54 -63
  85. package/dist/cjs/orderExecutorTool.js.map +1 -1
  86. package/dist/cjs/perpetualDataHandler.d.ts +38 -35
  87. package/dist/cjs/perpetualDataHandler.js +173 -167
  88. package/dist/cjs/perpetualDataHandler.js.map +1 -1
  89. package/dist/cjs/perpetualEventHandler.d.ts +4 -5
  90. package/dist/cjs/perpetualEventHandler.js +2 -2
  91. package/dist/cjs/perpetualEventHandler.js.map +1 -1
  92. package/dist/cjs/priceFeeds.js +2 -3
  93. package/dist/cjs/priceFeeds.js.map +1 -1
  94. package/dist/cjs/referralCodeSigner.d.ts +1 -1
  95. package/dist/cjs/referralCodeSigner.js +12 -16
  96. package/dist/cjs/referralCodeSigner.js.map +1 -1
  97. package/dist/cjs/traderDigests.d.ts +2 -1
  98. package/dist/cjs/traderDigests.js +9 -11
  99. package/dist/cjs/traderDigests.js.map +1 -1
  100. package/dist/cjs/traderInterface.d.ts +8 -9
  101. package/dist/cjs/traderInterface.js +26 -23
  102. package/dist/cjs/traderInterface.js.map +1 -1
  103. package/dist/cjs/utils.d.ts +2 -3
  104. package/dist/cjs/utils.js +1 -2
  105. package/dist/cjs/utils.js.map +1 -1
  106. package/dist/cjs/version.d.ts +1 -1
  107. package/dist/cjs/version.js +1 -1
  108. package/dist/cjs/version.js.map +1 -1
  109. package/dist/cjs/writeAccessHandler.d.ts +7 -9
  110. package/dist/cjs/writeAccessHandler.js +13 -16
  111. package/dist/cjs/writeAccessHandler.js.map +1 -1
  112. package/dist/esm/accountTrade.d.ts +9 -9
  113. package/dist/esm/accountTrade.js +19 -17
  114. package/dist/esm/accountTrade.js.map +1 -1
  115. package/dist/esm/brokerTool.d.ts +11 -12
  116. package/dist/esm/brokerTool.js +2 -3
  117. package/dist/esm/brokerTool.js.map +1 -1
  118. package/dist/esm/constants.d.ts +11 -12
  119. package/dist/esm/constants.js +12 -13
  120. package/dist/esm/constants.js.map +1 -1
  121. package/dist/esm/contracts/ERC20.d.ts +146 -171
  122. package/dist/esm/contracts/IPerpetualManager.d.ts +2534 -2225
  123. package/dist/esm/contracts/IPyth.d.ts +181 -184
  124. package/dist/esm/contracts/LimitOrderBook.d.ts +373 -401
  125. package/dist/esm/contracts/LimitOrderBookBeacon.d.ts +53 -104
  126. package/dist/esm/contracts/LimitOrderBookFactory.d.ts +129 -185
  127. package/dist/esm/contracts/MockTokenSwap.d.ts +109 -169
  128. package/dist/esm/contracts/Multicall3.d.ts +147 -211
  129. package/dist/esm/contracts/OnDemandOracleUpgradeable.d.ts +342 -399
  130. package/dist/esm/contracts/OracleFactory.d.ts +258 -238
  131. package/dist/esm/contracts/PerpetualManagerProxy.d.ts +1099 -891
  132. package/dist/esm/contracts/RedStoneAbi.d.ts +369 -488
  133. package/dist/esm/contracts/ShareToken.d.ts +232 -285
  134. package/dist/esm/contracts/common.d.ts +40 -11
  135. package/dist/esm/contracts/factories/ERC20__factory.d.ts +2 -3
  136. package/dist/esm/contracts/factories/ERC20__factory.js +4 -4
  137. package/dist/esm/contracts/factories/ERC20__factory.js.map +1 -1
  138. package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +2 -3
  139. package/dist/esm/contracts/factories/IPerpetualManager__factory.js +4 -4
  140. package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  141. package/dist/esm/contracts/factories/IPyth__factory.d.ts +2 -3
  142. package/dist/esm/contracts/factories/IPyth__factory.js +4 -4
  143. package/dist/esm/contracts/factories/IPyth__factory.js.map +1 -1
  144. package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.d.ts +2 -3
  145. package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.js +4 -4
  146. package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.js.map +1 -1
  147. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.d.ts +2 -3
  148. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js +4 -4
  149. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
  150. package/dist/esm/contracts/factories/LimitOrderBook__factory.d.ts +2 -3
  151. package/dist/esm/contracts/factories/LimitOrderBook__factory.js +4 -4
  152. package/dist/esm/contracts/factories/LimitOrderBook__factory.js.map +1 -1
  153. package/dist/esm/contracts/factories/MockTokenSwap__factory.d.ts +2 -3
  154. package/dist/esm/contracts/factories/MockTokenSwap__factory.js +4 -4
  155. package/dist/esm/contracts/factories/MockTokenSwap__factory.js.map +1 -1
  156. package/dist/esm/contracts/factories/Multicall3__factory.d.ts +11 -9
  157. package/dist/esm/contracts/factories/Multicall3__factory.js +8 -11
  158. package/dist/esm/contracts/factories/Multicall3__factory.js.map +1 -1
  159. package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.d.ts +2 -3
  160. package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.js +4 -4
  161. package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.js.map +1 -1
  162. package/dist/esm/contracts/factories/OracleFactory__factory.d.ts +2 -3
  163. package/dist/esm/contracts/factories/OracleFactory__factory.js +4 -4
  164. package/dist/esm/contracts/factories/OracleFactory__factory.js.map +1 -1
  165. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.d.ts +2 -3
  166. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js +4 -4
  167. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
  168. package/dist/esm/contracts/factories/RedStoneAbi__factory.d.ts +2 -3
  169. package/dist/esm/contracts/factories/RedStoneAbi__factory.js +4 -4
  170. package/dist/esm/contracts/factories/RedStoneAbi__factory.js.map +1 -1
  171. package/dist/esm/contracts/factories/ShareToken__factory.d.ts +2 -3
  172. package/dist/esm/contracts/factories/ShareToken__factory.js +4 -4
  173. package/dist/esm/contracts/factories/ShareToken__factory.js.map +1 -1
  174. package/dist/esm/d8XMath.d.ts +16 -16
  175. package/dist/esm/d8XMath.js +48 -49
  176. package/dist/esm/d8XMath.js.map +1 -1
  177. package/dist/esm/liquidatorTool.d.ts +8 -8
  178. package/dist/esm/liquidatorTool.js +5 -7
  179. package/dist/esm/liquidatorTool.js.map +1 -1
  180. package/dist/esm/liquidityProviderTool.d.ts +4 -5
  181. package/dist/esm/liquidityProviderTool.js.map +1 -1
  182. package/dist/esm/marketData.d.ts +27 -28
  183. package/dist/esm/marketData.js +55 -59
  184. package/dist/esm/marketData.js.map +1 -1
  185. package/dist/esm/nodeSDKTypes.d.ts +35 -37
  186. package/dist/esm/onChainPxFeed.d.ts +2 -2
  187. package/dist/esm/onChainPxFeed.js +3 -3
  188. package/dist/esm/onChainPxFeed.js.map +1 -1
  189. package/dist/esm/onChainPxFeedAngle.d.ts +2 -2
  190. package/dist/esm/onChainPxFeedAngle.js +2 -3
  191. package/dist/esm/onChainPxFeedAngle.js.map +1 -1
  192. package/dist/esm/onChainPxFeedRedStone.js +1 -1
  193. package/dist/esm/onChainPxFeedRedStone.js.map +1 -1
  194. package/dist/esm/orderExecutorTool.d.ts +7 -9
  195. package/dist/esm/orderExecutorTool.js +40 -49
  196. package/dist/esm/orderExecutorTool.js.map +1 -1
  197. package/dist/esm/perpetualDataHandler.d.ts +38 -35
  198. package/dist/esm/perpetualDataHandler.js +114 -108
  199. package/dist/esm/perpetualDataHandler.js.map +1 -1
  200. package/dist/esm/perpetualEventHandler.d.ts +4 -5
  201. package/dist/esm/perpetualEventHandler.js +2 -2
  202. package/dist/esm/perpetualEventHandler.js.map +1 -1
  203. package/dist/esm/priceFeeds.js +2 -3
  204. package/dist/esm/priceFeeds.js.map +1 -1
  205. package/dist/esm/referralCodeSigner.d.ts +1 -1
  206. package/dist/esm/referralCodeSigner.js +6 -10
  207. package/dist/esm/referralCodeSigner.js.map +1 -1
  208. package/dist/esm/traderDigests.d.ts +2 -1
  209. package/dist/esm/traderDigests.js +2 -4
  210. package/dist/esm/traderDigests.js.map +1 -1
  211. package/dist/esm/traderInterface.d.ts +8 -9
  212. package/dist/esm/traderInterface.js +26 -23
  213. package/dist/esm/traderInterface.js.map +1 -1
  214. package/dist/esm/utils.d.ts +2 -3
  215. package/dist/esm/utils.js +1 -2
  216. package/dist/esm/utils.js.map +1 -1
  217. package/dist/esm/version.d.ts +1 -1
  218. package/dist/esm/version.js +1 -1
  219. package/dist/esm/version.js.map +1 -1
  220. package/dist/esm/writeAccessHandler.d.ts +7 -9
  221. package/dist/esm/writeAccessHandler.js +5 -8
  222. package/dist/esm/writeAccessHandler.js.map +1 -1
  223. package/package.json +7 -17
  224. package/src/accountTrade.ts +32 -34
  225. package/src/brokerTool.ts +17 -20
  226. package/src/constants.ts +12 -13
  227. package/src/contracts/ERC20.ts +236 -350
  228. package/src/contracts/IPerpetualManager.ts +3359 -5050
  229. package/src/contracts/IPyth.ts +272 -409
  230. package/src/contracts/LimitOrderBook.ts +503 -779
  231. package/src/contracts/LimitOrderBookBeacon.ts +123 -171
  232. package/src/contracts/LimitOrderBookFactory.ts +263 -332
  233. package/src/contracts/MockTokenSwap.ts +237 -275
  234. package/src/contracts/Multicall3.ts +208 -374
  235. package/src/contracts/OnDemandOracleUpgradeable.ts +569 -782
  236. package/src/contracts/OracleFactory.ts +410 -538
  237. package/src/contracts/PerpetualManagerProxy.ts +1898 -1426
  238. package/src/contracts/RedStoneAbi.ts +486 -986
  239. package/src/contracts/ShareToken.ts +376 -557
  240. package/src/contracts/common.ts +108 -21
  241. package/src/contracts/factories/ERC20__factory.ts +4 -5
  242. package/src/contracts/factories/IPerpetualManager__factory.ts +4 -5
  243. package/src/contracts/factories/IPyth__factory.ts +4 -5
  244. package/src/contracts/factories/LimitOrderBookBeacon__factory.ts +5 -6
  245. package/src/contracts/factories/LimitOrderBookFactory__factory.ts +5 -6
  246. package/src/contracts/factories/LimitOrderBook__factory.ts +4 -5
  247. package/src/contracts/factories/MockTokenSwap__factory.ts +4 -5
  248. package/src/contracts/factories/Multicall3__factory.ts +21 -19
  249. package/src/contracts/factories/OnDemandOracleUpgradeable__factory.ts +5 -6
  250. package/src/contracts/factories/OracleFactory__factory.ts +4 -5
  251. package/src/contracts/factories/PerpetualManagerProxy__factory.ts +5 -6
  252. package/src/contracts/factories/RedStoneAbi__factory.ts +4 -8
  253. package/src/contracts/factories/ShareToken__factory.ts +4 -8
  254. package/src/d8XMath.ts +57 -57
  255. package/src/liquidatorTool.ts +12 -15
  256. package/src/liquidityProviderTool.ts +7 -5
  257. package/src/marketData.ts +110 -121
  258. package/src/nodeSDKTypes.ts +51 -38
  259. package/src/onChainPxFeed.ts +4 -4
  260. package/src/onChainPxFeedAngle.ts +5 -7
  261. package/src/onChainPxFeedRedStone.ts +1 -3
  262. package/src/orderExecutorTool.ts +102 -109
  263. package/src/perpetualDataHandler.ts +181 -167
  264. package/src/perpetualEventHandler.ts +16 -17
  265. package/src/priceFeeds.ts +2 -3
  266. package/src/referralCodeSigner.ts +6 -10
  267. package/src/traderDigests.ts +8 -5
  268. package/src/traderInterface.ts +45 -31
  269. package/src/utils.ts +3 -4
  270. package/src/version.ts +1 -1
  271. package/src/writeAccessHandler.ts +26 -17
@@ -1,4 +1,3 @@
1
- import { BigNumber } from "@ethersproject/bignumber";
2
1
  import { ONE_64x64 } from "./constants";
3
2
  import { ABK64x64ToFloat, mul64x64 } from "./d8XMath";
4
3
  import MarketData from "./marketData";
@@ -194,9 +193,9 @@ export default class PerpetualEventHandler {
194
193
  */
195
194
  public onUpdateMarkPrice(
196
195
  perpetualId: number,
197
- fMidPricePremium: BigNumber,
198
- fMarkPricePremium: BigNumber,
199
- fSpotIndexPrice: BigNumber
196
+ fMidPricePremium: bigint,
197
+ fMarkPricePremium: bigint,
198
+ fSpotIndexPrice: bigint
200
199
  ): void {
201
200
  let [newMidPrice, newMarkPrice, newIndexPrice] = PerpetualEventHandler.ConvertUpdateMarkPrice(
202
201
  fMidPricePremium,
@@ -218,7 +217,7 @@ export default class PerpetualEventHandler {
218
217
  * UpdateFundingRate(uint24 indexed perpetualId, int128 fFundingRate)
219
218
  * @param fFundingRate funding rate in ABDK format
220
219
  */
221
- public onUpdateUpdateFundingRate(perpetualId: number, fFundingRate: BigNumber): void {
220
+ public onUpdateUpdateFundingRate(perpetualId: number, fFundingRate: bigint): void {
222
221
  let newRate = ABK64x64ToFloat(fFundingRate);
223
222
  let perpetual = this.getPerpetualData(perpetualId.toString());
224
223
  if (perpetual == undefined) {
@@ -332,11 +331,11 @@ export default class PerpetualEventHandler {
332
331
  perpetualId: number,
333
332
  trader: string,
334
333
  _positionId: string,
335
- _fPositionBC: BigNumber,
336
- _fCashCC: BigNumber,
337
- _fLockedInValueQC: BigNumber,
338
- _fFundingPaymentCC: BigNumber,
339
- fOpenInterestBC: BigNumber
334
+ _fPositionBC: bigint,
335
+ _fCashCC: bigint,
336
+ _fLockedInValueQC: bigint,
337
+ _fFundingPaymentCC: bigint,
338
+ fOpenInterestBC: bigint
340
339
  ): Promise<void> {
341
340
  let perpetual = this.getPerpetualData(perpetualId.toString());
342
341
  if (perpetual == undefined) {
@@ -369,8 +368,8 @@ export default class PerpetualEventHandler {
369
368
  positionId: string,
370
369
  _order: SmartContractOrder,
371
370
  orderDigest: string,
372
- newPositionSizeBC: BigNumber,
373
- _price: BigNumber
371
+ newPositionSizeBC: bigint,
372
+ _price: bigint
374
373
  ): TradeEvent {
375
374
  // remove order digest from open orders
376
375
  let orderStructs = this.ordersInPerpetual.get(perpetualId);
@@ -440,12 +439,12 @@ export default class PerpetualEventHandler {
440
439
  * @returns mark price and spot index in float
441
440
  */
442
441
  private static ConvertUpdateMarkPrice(
443
- fMidPricePremium: BigNumber,
444
- fMarkPricePremium: BigNumber,
445
- fSpotIndexPrice: BigNumber
442
+ fMidPricePremium: bigint,
443
+ fMarkPricePremium: bigint,
444
+ fSpotIndexPrice: bigint
446
445
  ): [number, number, number] {
447
- let fMarkPrice = mul64x64(fSpotIndexPrice, ONE_64x64.add(fMarkPricePremium));
448
- let fMidPrice = mul64x64(fSpotIndexPrice, ONE_64x64.add(fMidPricePremium));
446
+ let fMarkPrice = mul64x64(fSpotIndexPrice, ONE_64x64 + fMarkPricePremium);
447
+ let fMidPrice = mul64x64(fSpotIndexPrice, ONE_64x64 + fMidPricePremium);
449
448
  let midPrice = ABK64x64ToFloat(fMidPrice);
450
449
  let markPrice = ABK64x64ToFloat(fMarkPrice);
451
450
  let indexPrice = ABK64x64ToFloat(fSpotIndexPrice);
package/src/priceFeeds.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { BigNumber } from "@ethersproject/bignumber";
2
1
  import { Buffer } from "buffer";
3
2
  import { decNToFloat, floatToDec18 } from "./d8XMath";
4
3
  import type {
@@ -279,7 +278,7 @@ export default class PriceFeeds {
279
278
  let [, pxInfo]: [string[], PriceFeedFormat[]] = await this.fetchPriceQuery(queries[k] + suffixes[k]);
280
279
  let tsSecNow = Math.round(Date.now() / 1000);
281
280
  for (let j = 0; j < pxInfo.length; j++) {
282
- let price = decNToFloat(BigNumber.from(pxInfo[j].price), -pxInfo[j].expo);
281
+ let price = decNToFloat(BigInt(pxInfo[j].price), -pxInfo[j].expo);
283
282
  let isMarketClosed = tsSecNow - pxInfo[j].publish_time > this.THRESHOLD_MARKET_CLOSED_SEC;
284
283
  resultPrices.set(symbolsOfEndpoint[k][j], [price, isMarketClosed]);
285
284
  }
@@ -376,7 +375,7 @@ export default class PriceFeeds {
376
375
  const tsSecNow = Math.round(Date.now() / 1000);
377
376
  for (let k = 0; k < feedIds.length; k++) {
378
377
  let pxInfo: PriceFeedFormat = data[k].prices[0];
379
- let price = decNToFloat(BigNumber.from(pxInfo.price), -pxInfo.expo);
378
+ let price = decNToFloat(BigInt(pxInfo.price), -pxInfo.expo);
380
379
  prices.push(price);
381
380
  priceFeedUpdates.push(data[k].vaas[0]);
382
381
  let isMarketClosed = tsSecNow - pxInfo.publish_time > this.THRESHOLD_MARKET_CLOSED_SEC;
@@ -1,8 +1,4 @@
1
- import { defaultAbiCoder } from "@ethersproject/abi";
2
- import { Signer } from "@ethersproject/abstract-signer";
3
- import { keccak256 } from "@ethersproject/keccak256";
4
- import { Provider, StaticJsonRpcProvider } from "@ethersproject/providers";
5
- import { Wallet, verifyMessage } from "@ethersproject/wallet";
1
+ import { AbiCoder, JsonRpcProvider, keccak256, Provider, Signer, verifyMessage, Wallet } from "ethers";
6
2
  import type { APIReferPayload, APIReferralCodePayload, APIReferralCodeSelectionPayload } from "./nodeSDKTypes";
7
3
 
8
4
  /**
@@ -31,7 +27,7 @@ export default class ReferralCodeSigner {
31
27
  if (typeof signer == "string") {
32
28
  const wallet = this.createSignerInstance(signer);
33
29
  this.signingFun = (x: string | Uint8Array) => wallet.signMessage(x);
34
- } else if (Signer.isSigner(signer)) {
30
+ } else if ("signMessage" in signer) {
35
31
  this.signingFun = (x: string | Uint8Array) => signer.signMessage(x);
36
32
  } else {
37
33
  this.signingFun = signer;
@@ -39,7 +35,7 @@ export default class ReferralCodeSigner {
39
35
  }
40
36
 
41
37
  public createSignerInstance(_privateKey: string): Signer {
42
- this.provider = new StaticJsonRpcProvider(this.rpcURL);
38
+ this.provider = new JsonRpcProvider(this.rpcURL);
43
39
  const wallet = new Wallet(_privateKey);
44
40
  return wallet.connect(this.provider);
45
41
  }
@@ -120,7 +116,7 @@ export default class ReferralCodeSigner {
120
116
  }
121
117
 
122
118
  private static _referralNewToMessage(rc: APIReferPayload): string {
123
- let abiCoder = defaultAbiCoder;
119
+ let abiCoder = new AbiCoder();
124
120
  const passOnPercTwoDigitsFormat = Math.round(rc.passOnPercTDF);
125
121
  let digest = keccak256(
126
122
  abiCoder.encode(
@@ -137,7 +133,7 @@ export default class ReferralCodeSigner {
137
133
  * @returns the hex-string to be signed
138
134
  */
139
135
  private static _referralCodeNewCodePayloadToMessage(rc: APIReferralCodePayload): string {
140
- let abiCoder = defaultAbiCoder;
136
+ let abiCoder = new AbiCoder();
141
137
  const passOnPercTwoDigitsFormat = Math.round(rc.passOnPercTDF);
142
138
  let digest = keccak256(
143
139
  abiCoder.encode(
@@ -154,7 +150,7 @@ export default class ReferralCodeSigner {
154
150
  * @returns the hex-string to be signed
155
151
  */
156
152
  private static _codeSelectionPayloadToMessage(rc: APIReferralCodeSelectionPayload): string {
157
- let abiCoder = defaultAbiCoder;
153
+ let abiCoder = new AbiCoder();
158
154
  let digest = keccak256(
159
155
  abiCoder.encode(["string", "address", "uint256"], [rc.code, rc.traderAddr, Math.round(rc.createdOn)])
160
156
  );
@@ -1,8 +1,5 @@
1
- import { defaultAbiCoder } from "@ethersproject/abi";
2
- import { concat } from "@ethersproject/bytes";
3
- import { keccak256 } from "@ethersproject/keccak256";
4
- import { toUtf8Bytes } from "@ethersproject/strings";
5
1
  import { Buffer } from "buffer";
2
+ import { AbiCoder, BigNumberish, concat, keccak256, toUtf8Bytes } from "ethers";
6
3
  import { type SmartContractOrder } from "./nodeSDKTypes";
7
4
 
8
5
  export default class TraderDigests {
@@ -30,11 +27,17 @@ export default class TraderDigests {
30
27
  * @returns digest
31
28
  * @ignore
32
29
  */
33
- public createDigest(order: SmartContractOrder, chainId: number, isNewOrder: boolean, proxyAddress: string): string {
30
+ public createDigest(
31
+ order: SmartContractOrder,
32
+ chainId: BigNumberish,
33
+ isNewOrder: boolean,
34
+ proxyAddress: string
35
+ ): string {
34
36
  const NAME = "Perpetual Trade Manager";
35
37
  const DOMAIN_TYPEHASH = keccak256(
36
38
  Buffer.from("EIP712Domain(string name,uint256 chainId,address verifyingContract)")
37
39
  );
40
+ const defaultAbiCoder = new AbiCoder();
38
41
  let domainSeparator = keccak256(
39
42
  defaultAbiCoder.encode(
40
43
  ["bytes32", "bytes32", "uint256", "address"],
@@ -1,5 +1,4 @@
1
- import { Signer } from "@ethersproject/abstract-signer";
2
- import type { CallOverrides, ContractTransaction, Overrides } from "@ethersproject/contracts";
1
+ import { Contract, ContractTransactionResponse, Overrides, Signer } from "ethers";
3
2
  import { ZERO_ORDER_ID } from "./constants";
4
3
  import { ABK64x64ToFloat, floatToDec18, floatToDecN } from "./d8XMath";
5
4
  import MarketData from "./marketData";
@@ -50,14 +49,19 @@ export default class TraderInterface extends MarketData {
50
49
  poolSymbolName: string,
51
50
  traderAddr: string,
52
51
  brokerAddr: string,
53
- overrides?: CallOverrides
52
+ overrides?: Overrides
54
53
  ): Promise<number> {
55
54
  if (this.proxyContract == null) {
56
55
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
57
56
  }
58
57
  let poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
59
- let feeTbps = await this.proxyContract.queryExchangeFee(poolId, traderAddr, brokerAddr, overrides || {});
60
- return feeTbps / 100_000;
58
+ let feeTbps = (await this.proxyContract.queryExchangeFee(
59
+ poolId,
60
+ traderAddr,
61
+ brokerAddr,
62
+ overrides || {}
63
+ )) as bigint;
64
+ return Number(feeTbps) / 100_000;
61
65
  }
62
66
 
63
67
  /**
@@ -82,7 +86,7 @@ export default class TraderInterface extends MarketData {
82
86
  public async getCurrentTraderVolume(
83
87
  poolSymbolName: string,
84
88
  traderAddr: string,
85
- overrides?: CallOverrides
89
+ overrides?: Overrides
86
90
  ): Promise<number> {
87
91
  if (this.proxyContract == null) {
88
92
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
@@ -117,7 +121,7 @@ export default class TraderInterface extends MarketData {
117
121
  public async cancelOrderDigest(
118
122
  symbol: string,
119
123
  orderId: string,
120
- overrides?: CallOverrides
124
+ overrides?: Overrides
121
125
  ): Promise<{ digest: string; OBContractAddr: string }> {
122
126
  if (this.proxyContract == null) {
123
127
  throw Error("no proxy contract initialized. Use createProxyInstance().");
@@ -125,7 +129,7 @@ export default class TraderInterface extends MarketData {
125
129
  let orderBookContract = this.getOrderBookContract(symbol);
126
130
  let scOrder: SmartContractOrder = await orderBookContract.orderOfDigest(orderId, overrides || {});
127
131
  let digest = this.digestTool.createDigest(scOrder, this.chainId, false, this.proxyAddr);
128
- return { digest: digest, OBContractAddr: orderBookContract.address };
132
+ return { digest: digest, OBContractAddr: orderBookContract.target.toString() };
129
133
  }
130
134
 
131
135
  /**
@@ -147,7 +151,7 @@ export default class TraderInterface extends MarketData {
147
151
  */
148
152
  public getOrderBookAddress(symbol: string): string {
149
153
  let orderBookContract = this.getOrderBookContract(symbol);
150
- return orderBookContract.address;
154
+ return orderBookContract.target.toString();
151
155
  }
152
156
 
153
157
  /**
@@ -172,20 +176,24 @@ export default class TraderInterface extends MarketData {
172
176
  if (this.proxyContract == null) {
173
177
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
174
178
  }
175
- let digest = this.digestTool.createDigest(scOrder, this.chainId, true, this.proxyContract.address);
179
+ let digest = this.digestTool.createDigest(scOrder, this.chainId, true, this.proxyContract.target.toString());
176
180
  return digest;
177
181
  }
178
182
 
179
183
  /**
180
- * Get the ABI of a method in the proxy contract
184
+ * Get the ABI of a method in the proxy contract. Throws if non-existent
181
185
  * @param method Name of the method
182
186
  * @returns ABI as a single string
183
187
  */
184
188
  public getProxyABI(method: string): string {
185
189
  if (this.proxyContract == null) {
186
- throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
190
+ throw new Error("no proxy contract or wallet initialized. Use createProxyInstance().");
187
191
  }
188
- return PerpetualDataHandler._getABIFromContract(this.proxyContract, method);
192
+ const res = PerpetualDataHandler._getABIFromContract(this.proxyContract, method);
193
+ if (!res) {
194
+ throw new Error(`no proxy method found with name ${method}`);
195
+ }
196
+ return res;
189
197
  }
190
198
 
191
199
  /**
@@ -199,7 +207,11 @@ export default class TraderInterface extends MarketData {
199
207
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
200
208
  }
201
209
  let orderBookContract = this.getOrderBookContract(symbol);
202
- return PerpetualDataHandler._getABIFromContract(orderBookContract, method);
210
+ const res = PerpetualDataHandler._getABIFromContract(orderBookContract, method);
211
+ if (!res) {
212
+ throw new Error(`no proxy method found with name ${method}`);
213
+ }
214
+ return res;
203
215
  }
204
216
 
205
217
  /**
@@ -254,16 +266,14 @@ export default class TraderInterface extends MarketData {
254
266
  poolSymbolName: string,
255
267
  amountCC: number,
256
268
  overrides?: Overrides
257
- ): Promise<ContractTransaction> {
269
+ ): Promise<ContractTransactionResponse> {
258
270
  if (this.proxyContract == null) {
259
271
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
260
272
  }
261
- let poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
262
- let decimals = this.getMarginTokenDecimalsFromSymbol(poolSymbolName);
263
- let tx = await this.proxyContract
264
- .connect(signer)
265
- .addLiquidity(poolId, floatToDecN(amountCC, decimals!), overrides || { gasLimit: this.gasLimit });
266
- return tx;
273
+ const poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
274
+ const decimals = this.getSettlementTokenDecimalsFromSymbol(poolSymbolName);
275
+ const proxy = new Contract(this.proxyAddr, this.proxyABI, signer);
276
+ return await proxy.addLiquidity(poolId, floatToDecN(amountCC, decimals!), overrides || { gasLimit: this.gasLimit });
267
277
  }
268
278
 
269
279
  /**
@@ -295,15 +305,17 @@ export default class TraderInterface extends MarketData {
295
305
  poolSymbolName: string,
296
306
  amountPoolShares: number,
297
307
  overrides?: Overrides
298
- ): Promise<ContractTransaction> {
308
+ ): Promise<ContractTransactionResponse> {
299
309
  if (this.proxyContract == null) {
300
310
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
301
311
  }
302
312
  let poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
303
- let tx = await this.proxyContract
304
- .connect(signer)
305
- .withdrawLiquidity(poolId, floatToDec18(amountPoolShares), overrides || { gasLimit: this.gasLimit });
306
- return tx;
313
+ const proxy = new Contract(this.proxyAddr, this.proxyABI, signer);
314
+ return await proxy.withdrawLiquidity(
315
+ poolId,
316
+ floatToDec18(amountPoolShares),
317
+ overrides || { gasLimit: this.gasLimit }
318
+ );
307
319
  }
308
320
 
309
321
  /**
@@ -332,14 +344,16 @@ export default class TraderInterface extends MarketData {
332
344
  signer: Signer,
333
345
  poolSymbolName: string,
334
346
  overrides?: Overrides
335
- ): Promise<ContractTransaction> {
347
+ ): Promise<ContractTransactionResponse> {
336
348
  if (this.proxyContract == null) {
337
349
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
338
350
  }
339
351
  let poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
340
- let tx = await this.proxyContract
341
- .connect(signer)
342
- .executeLiquidityWithdrawal(poolId, await signer.getAddress(), overrides || { gasLimit: this.gasLimit });
343
- return tx;
352
+ const proxy = new Contract(this.proxyAddr, this.proxyABI, signer);
353
+ return await proxy.executeLiquidityWithdrawal(
354
+ poolId,
355
+ await signer.getAddress(),
356
+ overrides || { gasLimit: this.gasLimit }
357
+ );
344
358
  }
345
359
  }
package/src/utils.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { BigNumber } from "@ethersproject/bignumber";
2
1
  import { Buffer } from "buffer";
3
2
  import { NodeSDKConfig } from "./nodeSDKTypes";
4
3
 
@@ -126,11 +125,11 @@ export function symbol4BToLongSymbol(s: string, mapping: Map<string, string>): s
126
125
  return longCCY.substring(1);
127
126
  }
128
127
 
129
- export function combineFlags(f1: BigNumber, f2: BigNumber): BigNumber {
130
- return BigNumber.from((parseInt(f1.toString()) | parseInt(f2.toString())) >>> 0);
128
+ export function combineFlags(f1: bigint, f2: bigint): bigint {
129
+ return BigInt((parseInt(f1.toString()) | parseInt(f2.toString())) >>> 0);
131
130
  }
132
131
 
133
- export function containsFlag(f1: BigNumber, f2: BigNumber): boolean {
132
+ export function containsFlag(f1: bigint, f2: bigint): boolean {
134
133
  return (BigInt(f1.toString()) & BigInt(f2.toString())) > 0;
135
134
  }
136
135
 
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const D8X_SDK_VERSION = "1.3.6";
1
+ export const D8X_SDK_VERSION = "2.0.0-alpha";
@@ -1,11 +1,16 @@
1
- import { Signer } from "@ethersproject/abstract-signer";
2
- import { BigNumber } from "@ethersproject/bignumber";
3
- import { CallOverrides, Contract, ContractTransaction, Overrides, PayableOverrides } from "@ethersproject/contracts";
4
- import { Provider, StaticJsonRpcProvider } from "@ethersproject/providers";
5
- import { parseEther } from "@ethersproject/units";
6
- import { Wallet } from "@ethersproject/wallet";
1
+ import {
2
+ Contract,
3
+ ContractTransactionResponse,
4
+ JsonRpcProvider,
5
+ Overrides,
6
+ parseEther,
7
+ Provider,
8
+ Signer,
9
+ Wallet,
10
+ } from "ethers";
7
11
  import { MAX_UINT_256, MULTICALL_ADDRESS } from "./constants";
8
12
  import { ERC20__factory, MockTokenSwap__factory, Multicall3__factory } from "./contracts";
13
+ import { PayableOverrides } from "./contracts/common";
9
14
  import { floatToDecN } from "./d8XMath";
10
15
  import MarketData from "./marketData";
11
16
  import { type NodeSDKConfig } from "./nodeSDKTypes";
@@ -39,7 +44,7 @@ export default class WriteAccessHandler extends PerpetualDataHandler {
39
44
  }
40
45
  }
41
46
 
42
- public async createProxyInstance(provider?: Provider, overrides?: CallOverrides): Promise<void>;
47
+ public async createProxyInstance(provider?: Provider, overrides?: Overrides): Promise<void>;
43
48
 
44
49
  public async createProxyInstance(marketData: MarketData): Promise<void>;
45
50
 
@@ -49,9 +54,9 @@ export default class WriteAccessHandler extends PerpetualDataHandler {
49
54
  * about perpetual currencies
50
55
  * @param provider optional provider
51
56
  */
52
- public async createProxyInstance(providerOrMarketData?: Provider | MarketData, overrides?: CallOverrides) {
53
- if (providerOrMarketData == undefined || Provider.isProvider(providerOrMarketData)) {
54
- this.provider = providerOrMarketData ?? new StaticJsonRpcProvider(this.nodeURL);
57
+ public async createProxyInstance(providerOrMarketData?: Provider | MarketData, overrides?: Overrides) {
58
+ if (providerOrMarketData == undefined || !("createProxyInstance" in providerOrMarketData)) {
59
+ this.provider = providerOrMarketData ?? new JsonRpcProvider(this.nodeURL, this.network, { staticNetwork: true });
55
60
  if (!this.signer) {
56
61
  const wallet = new Wallet(this.privateKey!);
57
62
  this.signer = wallet.connect(this.provider);
@@ -60,7 +65,7 @@ export default class WriteAccessHandler extends PerpetualDataHandler {
60
65
  } else {
61
66
  const mktData = providerOrMarketData;
62
67
  this.nodeURL = mktData.config.nodeURL;
63
- this.provider = new StaticJsonRpcProvider(mktData.config.nodeURL);
68
+ this.provider = new JsonRpcProvider(mktData.config.nodeURL, mktData.network, { staticNetwork: true });
64
69
  this.proxyContract = new Contract(mktData.getProxyAddress(), this.config.proxyABI!, this.provider);
65
70
  this.multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, this.provider);
66
71
  ({
@@ -84,9 +89,13 @@ export default class WriteAccessHandler extends PerpetualDataHandler {
84
89
  * Set allowance for ar margin token (e.g., MATIC, ETH, USDC)
85
90
  * @param symbol token in 'long-form' such as MATIC, symbol also fine (ETH-USD-MATIC)
86
91
  * @param amount optional, amount to approve if not 'infinity'
87
- * @returns ContractTransaction
92
+ * @returns Contract Transaction
88
93
  */
89
- public async setAllowance(symbol: string, amount?: number, overrides?: Overrides): Promise<ContractTransaction> {
94
+ public async setAllowance(
95
+ symbol: string,
96
+ amount?: number,
97
+ overrides?: Overrides
98
+ ): Promise<ContractTransactionResponse> {
90
99
  // extract margin-currency name
91
100
  let symbolarr = symbol.split("-");
92
101
  symbol = symbol.length == 3 ? symbolarr[2] : symbolarr[0];
@@ -95,7 +104,7 @@ export default class WriteAccessHandler extends PerpetualDataHandler {
95
104
  if (settleTokenAddr == undefined || this.signer == null) {
96
105
  throw Error("No margin token or signer defined, call createProxyInstance");
97
106
  }
98
- let amountDec18: BigNumber;
107
+ let amountDec18: bigint;
99
108
  if (amount == undefined) {
100
109
  amountDec18 = MAX_UINT_256;
101
110
  } else {
@@ -108,9 +117,9 @@ export default class WriteAccessHandler extends PerpetualDataHandler {
108
117
  tokenAddr: string,
109
118
  proxyAddr: string,
110
119
  signer: Signer,
111
- amount: BigNumber,
120
+ amount: bigint,
112
121
  overrides?: Overrides
113
- ): Promise<ContractTransaction> {
122
+ ): Promise<ContractTransactionResponse> {
114
123
  const marginToken = ERC20__factory.connect(tokenAddr, signer);
115
124
  return await marginToken.approve(proxyAddr, amount, overrides || {});
116
125
  }
@@ -134,7 +143,7 @@ export default class WriteAccessHandler extends PerpetualDataHandler {
134
143
  symbol: string,
135
144
  amountToPay: string,
136
145
  overrides?: PayableOverrides
137
- ): Promise<ContractTransaction> {
146
+ ): Promise<ContractTransactionResponse> {
138
147
  if (this.signer == null) {
139
148
  throw Error("no wallet initialized. Use createProxyInstance().");
140
149
  }