@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
@@ -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);
@@ -0,0 +1,71 @@
1
+ import type { PriceFeedConfig } from "./nodeSDKTypes";
2
+
3
+ interface PolyConfig {
4
+ sym: string;
5
+ idDec: string;
6
+ id: string;
7
+ }
8
+
9
+ /**
10
+ * PolyMktsPxFeed gets prices from the official polymarket api
11
+ * and applies the exp(px) transformation
12
+ *
13
+ */
14
+ export default class PolyMktsPxFeed {
15
+ private ids: Map<string, PolyConfig>;
16
+
17
+ constructor(config: PriceFeedConfig) {
18
+ this.ids = new Map<string, PolyConfig>();
19
+ for (let k = 0; k < config.ids.length; k++) {
20
+ if (config.ids[k].type == "polymarket") {
21
+ const sym = config.ids[k].symbol;
22
+ const idDec = PolyMktsPxFeed.hexToDecimalString(config.ids[k].id);
23
+ const el: PolyConfig = {
24
+ sym: sym,
25
+ id: config.ids[k].id,
26
+ idDec: idDec,
27
+ };
28
+ this.ids.set(sym, el);
29
+ }
30
+ }
31
+ }
32
+
33
+ public isPolyMktsSym(sym: string) {
34
+ return this.ids.get(sym) == undefined;
35
+ }
36
+
37
+ public async fetchPriceForSym(sym: string): Promise<number> {
38
+ const mkt = this.ids.get(sym);
39
+ if (mkt == undefined) {
40
+ throw new Error(`symbol not in polymarket universe: ${sym}`);
41
+ }
42
+ return this.fetchPrice(mkt.idDec);
43
+ }
44
+
45
+ public async fetchPrice(tokenIdDec: string): Promise<number> {
46
+ const query = "https://clob.polymarket.com/midpoint?token_id=" + tokenIdDec;
47
+ let response = await fetch(query);
48
+ if (response.status !== 200) {
49
+ throw new Error(`unexpected status code: ${response.status}`);
50
+ }
51
+ if (!response.ok) {
52
+ throw new Error(`failed to fetch posts (${response.status}): ${response.statusText} ${query}`);
53
+ }
54
+ const data = await response.json();
55
+ const px = Number(data.mid);
56
+ return Math.exp(px);
57
+ }
58
+
59
+ static hexToDecimalString(hexString: string): string {
60
+ // Remove the "0x" prefix if it exists
61
+ if (hexString.startsWith("0x")) {
62
+ hexString = hexString.slice(2);
63
+ }
64
+
65
+ // Convert the hex string to a BigInt
66
+ const bigIntValue = BigInt("0x" + hexString);
67
+
68
+ // Convert the BigInt to a decimal string
69
+ return bigIntValue.toString(10);
70
+ }
71
+ }
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 {
@@ -13,6 +12,8 @@ import PerpetualDataHandler from "./perpetualDataHandler";
13
12
  import Triangulator from "./triangulator";
14
13
  import OnChainPxFeed from "./onChainPxFeed";
15
14
  import OnChainPxFactory from "./onChainPxFactory";
15
+ import PolyMktsPxFeed from "./polyMktsPxFeed";
16
+ import { sleep } from "./utils";
16
17
  /**
17
18
  * This class communicates with the REST API that provides price-data that is
18
19
  * to be submitted to the smart contracts for certain functions such as
@@ -35,10 +36,12 @@ export default class PriceFeeds {
35
36
  // api formatting constants
36
37
  private PYTH = { endpoint: "/v2/updates/price/latest?encoding=base64&ids[]=", separator: "&ids[]=", suffix: "" };
37
38
 
39
+ private polyMktsPxFeed: PolyMktsPxFeed;
40
+
38
41
  constructor(dataHandler: PerpetualDataHandler, priceFeedConfigNetwork: string) {
39
42
  let configs = require("./config/priceFeedConfig.json") as PriceFeedConfig[];
40
43
  this.config = PriceFeeds._selectConfig(configs, priceFeedConfigNetwork);
41
-
44
+ this.polyMktsPxFeed = new PolyMktsPxFeed(this.config);
42
45
  // if SDK config contains custom price feed endpoints, these override the
43
46
  // public/default ones
44
47
  if (dataHandler.config.priceFeedEndpoints && dataHandler.config.priceFeedEndpoints.length > 0) {
@@ -52,7 +55,7 @@ export default class PriceFeeds {
52
55
  for (let k = 0; k < this.config.ids.length; k++) {
53
56
  if (this.config.ids[k].type == "onchain") {
54
57
  let sym = this.config.ids[k].symbol;
55
- this.onChainPxFeeds[sym] = OnChainPxFactory.createFeed(sym);
58
+ this.onChainPxFeeds.set(sym, OnChainPxFactory.createFeed(sym)!);
56
59
  }
57
60
  }
58
61
  [this.feedInfo, this.feedEndpoints, this.writeFeedEndpoints] = PriceFeeds._constructFeedInfo(this.config, false);
@@ -245,6 +248,7 @@ export default class PriceFeeds {
245
248
  symbolsOfEndpoint.push([]);
246
249
  }
247
250
  let onChainSyms: string[] = [];
251
+ let polyMktSyms: string[] = [];
248
252
  for (let k = 0; k < this.config.ids.length; k++) {
249
253
  let currFeed = this.config.ids[k];
250
254
  if (symbols != undefined && !symbols.includes(currFeed.symbol)) {
@@ -254,6 +258,10 @@ export default class PriceFeeds {
254
258
  onChainSyms.push(currFeed.symbol);
255
259
  continue;
256
260
  }
261
+ if (currFeed.type == "polymarket") {
262
+ polyMktSyms.push(currFeed.symbol);
263
+ continue;
264
+ }
257
265
  const apiFormat = { pyth: this.PYTH, odin: this.PYTH }[currFeed.type];
258
266
  if (apiFormat === undefined) {
259
267
  throw new Error(`API format for ${currFeed} unknown.`);
@@ -271,6 +279,7 @@ export default class PriceFeeds {
271
279
  }
272
280
  }
273
281
  let onChainPromise = this.queryOnChainPxFeeds(onChainSyms);
282
+ let polyMktsPromise = this.queryPolyMktsPxFeeds(polyMktSyms);
274
283
  let resultPrices = new Map<string, [number, boolean]>();
275
284
  for (let k = 0; k < queries.length; k++) {
276
285
  if (queries[k] == undefined) {
@@ -279,7 +288,7 @@ export default class PriceFeeds {
279
288
  let [, pxInfo]: [string[], PriceFeedFormat[]] = await this.fetchPriceQuery(queries[k] + suffixes[k]);
280
289
  let tsSecNow = Math.round(Date.now() / 1000);
281
290
  for (let j = 0; j < pxInfo.length; j++) {
282
- let price = decNToFloat(BigNumber.from(pxInfo[j].price), -pxInfo[j].expo);
291
+ let price = decNToFloat(BigInt(pxInfo[j].price), -pxInfo[j].expo);
283
292
  let isMarketClosed = tsSecNow - pxInfo[j].publish_time > this.THRESHOLD_MARKET_CLOSED_SEC;
284
293
  resultPrices.set(symbolsOfEndpoint[k][j], [price, isMarketClosed]);
285
294
  }
@@ -289,6 +298,14 @@ export default class PriceFeeds {
289
298
  let sym = onChainSyms[k];
290
299
  resultPrices.set(sym, [onChPxs[k], false]);
291
300
  }
301
+ let polyPxs = await polyMktsPromise;
302
+ for (let k = 0; k < polyPxs.length; k++) {
303
+ let sym = polyMktSyms[k];
304
+ if (polyPxs[k] == -1) {
305
+ continue;
306
+ }
307
+ resultPrices.set(sym, [polyPxs[k], false]);
308
+ }
292
309
  return resultPrices;
293
310
  }
294
311
 
@@ -296,12 +313,30 @@ export default class PriceFeeds {
296
313
  let prices: number[] = new Array<number>();
297
314
  for (let k = 0; k < symbols.length; k++) {
298
315
  let sym = symbols[k];
299
- let price = await this.onChainPxFeeds[sym].getPrice();
316
+ const feed = this.onChainPxFeeds.get(sym);
317
+ let price = await feed!.getPrice();
300
318
  prices.push(price);
301
319
  }
302
320
  return prices;
303
321
  }
304
322
 
323
+ private async queryPolyMktsPxFeeds(symbols: string[]) {
324
+ let prices: number[] = new Array<number>();
325
+ for (let k = 0; k < symbols.length; k++) {
326
+ try {
327
+ let price = await this.polyMktsPxFeed.fetchPriceForSym(symbols[k]);
328
+ prices.push(price);
329
+ } catch (error) {
330
+ console.log("fetchPriceForSym failed for " + symbols[k]);
331
+ prices.push(-1);
332
+ }
333
+ if (k > 0) {
334
+ await sleep(0.25);
335
+ }
336
+ }
337
+ return prices;
338
+ }
339
+
305
340
  /**
306
341
  * Get all configured feed prices via "latest_price_feeds".
307
342
  * @returns map of feed-price symbol to price/isMarketClosed
@@ -328,16 +363,17 @@ export default class PriceFeeds {
328
363
  throw new Error(`priceFeeds: config for symbol ${symbol} insufficient`);
329
364
  }
330
365
  // we use the first endpoint for a given symbol even if there is another symbol with the same id
331
- // and another
332
366
  let idx = info[0].endpointId;
333
367
  let feedId = feedIds[k];
334
368
  queries.push(this.writeFeedEndpoints[idx] + "/v2/updates/price/latest?encoding=base64&ids[]=" + feedId);
335
369
 
336
370
  for (let j = 0; j < info.length; j++) {
337
371
  if (symbols.has(feedId)) {
338
- symbols[feedId].append(info[j].symbol);
372
+ let v = symbols.get(feedId);
373
+ v!.push(info[j].symbol);
374
+ symbols.set(feedId, v!);
339
375
  } else {
340
- symbols[feedId] = [info[j].symbol];
376
+ symbols.set(feedId, [info[j].symbol]);
341
377
  }
342
378
  }
343
379
  }
@@ -376,7 +412,7 @@ export default class PriceFeeds {
376
412
  const tsSecNow = Math.round(Date.now() / 1000);
377
413
  for (let k = 0; k < feedIds.length; k++) {
378
414
  let pxInfo: PriceFeedFormat = data[k].prices[0];
379
- let price = decNToFloat(BigNumber.from(pxInfo.price), -pxInfo.expo);
415
+ let price = decNToFloat(BigInt(pxInfo.price), -pxInfo.expo);
380
416
  prices.push(price);
381
417
  priceFeedUpdates.push(data[k].vaas[0]);
382
418
  let isMarketClosed = tsSecNow - pxInfo.publish_time > this.THRESHOLD_MARKET_CLOSED_SEC;
@@ -404,7 +440,7 @@ export default class PriceFeeds {
404
440
  public calculateTriangulatedPricesFromFeedInfo(symbols: string[], feeds: PriceFeedSubmission): [number[], boolean[]] {
405
441
  let priceMap = new Map<string, [number, boolean]>();
406
442
  for (let j = 0; j < feeds.prices.length; j++) {
407
- const syms = feeds.symbols[feeds.ids[j]];
443
+ const syms = feeds.symbols.get(feeds.ids[j]);
408
444
  if (syms == undefined) {
409
445
  console.log("calculateTriangulatedPricesFromFeedInfo: could not find symbol for id ", feeds.ids[j]);
410
446
  continue;
@@ -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,11 +1,11 @@
1
- import { Signer } from "@ethersproject/abstract-signer";
2
- import type { CallOverrides, ContractTransaction, Overrides } from "@ethersproject/contracts";
3
- import { ZERO_ORDER_ID } from "./constants";
4
- import { ABK64x64ToFloat, floatToDec18, floatToDecN } from "./d8XMath";
1
+ import { Contract, ContractTransactionResponse, Overrides, Signer } from "ethers";
2
+ import { MASK_PREDICTIVE_MARKET, ZERO_ORDER_ID } from "./constants";
3
+ import { ABK64x64ToFloat, floatToDec18, floatToDecN, priceToProb, probToPrice } from "./d8XMath";
5
4
  import MarketData from "./marketData";
6
5
  import type { ClientOrder, NodeSDKConfig, Order, SmartContractOrder } from "./nodeSDKTypes";
7
6
  import PerpetualDataHandler from "./perpetualDataHandler";
8
7
  import TraderDigests from "./traderDigests";
8
+ import { containsFlag } from "./utils";
9
9
  /**
10
10
  * Interface that can be used by front-end that wraps all private functions
11
11
  * so that signatures can be handled in frontend via wallet
@@ -50,14 +50,19 @@ export default class TraderInterface extends MarketData {
50
50
  poolSymbolName: string,
51
51
  traderAddr: string,
52
52
  brokerAddr: string,
53
- overrides?: CallOverrides
53
+ overrides?: Overrides
54
54
  ): Promise<number> {
55
55
  if (this.proxyContract == null) {
56
56
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
57
57
  }
58
58
  let poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
59
- let feeTbps = await this.proxyContract.queryExchangeFee(poolId, traderAddr, brokerAddr, overrides || {});
60
- return feeTbps / 100_000;
59
+ let feeTbps = (await this.proxyContract.queryExchangeFee(
60
+ poolId,
61
+ traderAddr,
62
+ brokerAddr,
63
+ overrides || {}
64
+ )) as bigint;
65
+ return Number(feeTbps) / 100_000;
61
66
  }
62
67
 
63
68
  /**
@@ -82,7 +87,7 @@ export default class TraderInterface extends MarketData {
82
87
  public async getCurrentTraderVolume(
83
88
  poolSymbolName: string,
84
89
  traderAddr: string,
85
- overrides?: CallOverrides
90
+ overrides?: Overrides
86
91
  ): Promise<number> {
87
92
  if (this.proxyContract == null) {
88
93
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
@@ -117,7 +122,7 @@ export default class TraderInterface extends MarketData {
117
122
  public async cancelOrderDigest(
118
123
  symbol: string,
119
124
  orderId: string,
120
- overrides?: CallOverrides
125
+ overrides?: Overrides
121
126
  ): Promise<{ digest: string; OBContractAddr: string }> {
122
127
  if (this.proxyContract == null) {
123
128
  throw Error("no proxy contract initialized. Use createProxyInstance().");
@@ -125,7 +130,7 @@ export default class TraderInterface extends MarketData {
125
130
  let orderBookContract = this.getOrderBookContract(symbol);
126
131
  let scOrder: SmartContractOrder = await orderBookContract.orderOfDigest(orderId, overrides || {});
127
132
  let digest = this.digestTool.createDigest(scOrder, this.chainId, false, this.proxyAddr);
128
- return { digest: digest, OBContractAddr: orderBookContract.address };
133
+ return { digest: digest, OBContractAddr: orderBookContract.target.toString() };
129
134
  }
130
135
 
131
136
  /**
@@ -147,7 +152,7 @@ export default class TraderInterface extends MarketData {
147
152
  */
148
153
  public getOrderBookAddress(symbol: string): string {
149
154
  let orderBookContract = this.getOrderBookContract(symbol);
150
- return orderBookContract.address;
155
+ return orderBookContract.target.toString();
151
156
  }
152
157
 
153
158
  /**
@@ -157,6 +162,19 @@ export default class TraderInterface extends MarketData {
157
162
  * @returns Smart contract type order struct
158
163
  */
159
164
  public createSmartContractOrder(order: Order, traderAddr: string): SmartContractOrder {
165
+ const sInfo = this.symbolToPerpStaticInfo.get(order.symbol);
166
+ if (!sInfo) {
167
+ throw new Error(`No perpetual static info found for symbol ${order.symbol}`);
168
+ }
169
+ if (containsFlag(BigInt(sInfo.perpFlags), MASK_PREDICTIVE_MARKET)) {
170
+ // convert prob to actual price
171
+ if (order.limitPrice !== undefined) {
172
+ order.limitPrice = probToPrice(order.limitPrice);
173
+ }
174
+ if (order.stopPrice !== undefined) {
175
+ order.stopPrice = probToPrice(order.stopPrice);
176
+ }
177
+ }
160
178
  let scOrder = TraderInterface.toSmartContractOrder(order, traderAddr, this.symbolToPerpStaticInfo);
161
179
  return scOrder;
162
180
  }
@@ -172,20 +190,24 @@ export default class TraderInterface extends MarketData {
172
190
  if (this.proxyContract == null) {
173
191
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
174
192
  }
175
- let digest = this.digestTool.createDigest(scOrder, this.chainId, true, this.proxyContract.address);
193
+ let digest = this.digestTool.createDigest(scOrder, this.chainId, true, this.proxyContract.target.toString());
176
194
  return digest;
177
195
  }
178
196
 
179
197
  /**
180
- * Get the ABI of a method in the proxy contract
198
+ * Get the ABI of a method in the proxy contract. Throws if non-existent
181
199
  * @param method Name of the method
182
200
  * @returns ABI as a single string
183
201
  */
184
202
  public getProxyABI(method: string): string {
185
203
  if (this.proxyContract == null) {
186
- throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
204
+ throw new Error("no proxy contract or wallet initialized. Use createProxyInstance().");
205
+ }
206
+ const res = PerpetualDataHandler._getABIFromContract(this.proxyContract, method);
207
+ if (!res) {
208
+ throw new Error(`no proxy method found with name ${method}`);
187
209
  }
188
- return PerpetualDataHandler._getABIFromContract(this.proxyContract, method);
210
+ return res;
189
211
  }
190
212
 
191
213
  /**
@@ -199,7 +221,11 @@ export default class TraderInterface extends MarketData {
199
221
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
200
222
  }
201
223
  let orderBookContract = this.getOrderBookContract(symbol);
202
- return PerpetualDataHandler._getABIFromContract(orderBookContract, method);
224
+ const res = PerpetualDataHandler._getABIFromContract(orderBookContract, method);
225
+ if (!res) {
226
+ throw new Error(`no proxy method found with name ${method}`);
227
+ }
228
+ return res;
203
229
  }
204
230
 
205
231
  /**
@@ -254,16 +280,14 @@ export default class TraderInterface extends MarketData {
254
280
  poolSymbolName: string,
255
281
  amountCC: number,
256
282
  overrides?: Overrides
257
- ): Promise<ContractTransaction> {
283
+ ): Promise<ContractTransactionResponse> {
258
284
  if (this.proxyContract == null) {
259
285
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
260
286
  }
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;
287
+ const poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
288
+ const decimals = this.getSettlementTokenDecimalsFromSymbol(poolSymbolName);
289
+ const proxy = new Contract(this.proxyAddr, this.proxyABI, signer);
290
+ return await proxy.addLiquidity(poolId, floatToDecN(amountCC, decimals!), overrides || { gasLimit: this.gasLimit });
267
291
  }
268
292
 
269
293
  /**
@@ -295,15 +319,17 @@ export default class TraderInterface extends MarketData {
295
319
  poolSymbolName: string,
296
320
  amountPoolShares: number,
297
321
  overrides?: Overrides
298
- ): Promise<ContractTransaction> {
322
+ ): Promise<ContractTransactionResponse> {
299
323
  if (this.proxyContract == null) {
300
324
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
301
325
  }
302
326
  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;
327
+ const proxy = new Contract(this.proxyAddr, this.proxyABI, signer);
328
+ return await proxy.withdrawLiquidity(
329
+ poolId,
330
+ floatToDec18(amountPoolShares),
331
+ overrides || { gasLimit: this.gasLimit }
332
+ );
307
333
  }
308
334
 
309
335
  /**
@@ -332,14 +358,16 @@ export default class TraderInterface extends MarketData {
332
358
  signer: Signer,
333
359
  poolSymbolName: string,
334
360
  overrides?: Overrides
335
- ): Promise<ContractTransaction> {
361
+ ): Promise<ContractTransactionResponse> {
336
362
  if (this.proxyContract == null) {
337
363
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
338
364
  }
339
365
  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;
366
+ const proxy = new Contract(this.proxyAddr, this.proxyABI, signer);
367
+ return await proxy.executeLiquidityWithdrawal(
368
+ poolId,
369
+ await signer.getAddress(),
370
+ overrides || { gasLimit: this.gasLimit }
371
+ );
344
372
  }
345
373
  }
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.7";
1
+ export const D8X_SDK_VERSION = "2.0.1-alpha";