@d8x/perpetuals-sdk 1.3.7 → 2.0.1-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/dist/cjs/accountTrade.d.ts +9 -9
  2. package/dist/cjs/accountTrade.js +19 -17
  3. package/dist/cjs/accountTrade.js.map +1 -1
  4. package/dist/cjs/brokerTool.d.ts +11 -12
  5. package/dist/cjs/brokerTool.js +7 -8
  6. package/dist/cjs/brokerTool.js.map +1 -1
  7. package/dist/cjs/config/priceFeedConfig.json +16 -2
  8. package/dist/cjs/config/symbolList.json +2 -1
  9. package/dist/cjs/constants.d.ts +12 -12
  10. package/dist/cjs/constants.js +14 -14
  11. package/dist/cjs/constants.js.map +1 -1
  12. package/dist/cjs/contracts/ERC20.d.ts +146 -171
  13. package/dist/cjs/contracts/IPerpetualManager.d.ts +2534 -2225
  14. package/dist/cjs/contracts/IPyth.d.ts +181 -184
  15. package/dist/cjs/contracts/LimitOrderBook.d.ts +373 -401
  16. package/dist/cjs/contracts/LimitOrderBookBeacon.d.ts +53 -104
  17. package/dist/cjs/contracts/LimitOrderBookFactory.d.ts +129 -185
  18. package/dist/cjs/contracts/MockTokenSwap.d.ts +109 -169
  19. package/dist/cjs/contracts/Multicall3.d.ts +147 -211
  20. package/dist/cjs/contracts/OnDemandOracleUpgradeable.d.ts +342 -399
  21. package/dist/cjs/contracts/OracleFactory.d.ts +258 -238
  22. package/dist/cjs/contracts/PerpetualManagerProxy.d.ts +1099 -891
  23. package/dist/cjs/contracts/RedStoneAbi.d.ts +369 -488
  24. package/dist/cjs/contracts/ShareToken.d.ts +232 -285
  25. package/dist/cjs/contracts/common.d.ts +40 -11
  26. package/dist/cjs/contracts/factories/ERC20__factory.d.ts +2 -3
  27. package/dist/cjs/contracts/factories/ERC20__factory.js +3 -3
  28. package/dist/cjs/contracts/factories/ERC20__factory.js.map +1 -1
  29. package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +2 -3
  30. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +3 -3
  31. package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  32. package/dist/cjs/contracts/factories/IPyth__factory.d.ts +2 -3
  33. package/dist/cjs/contracts/factories/IPyth__factory.js +3 -3
  34. package/dist/cjs/contracts/factories/IPyth__factory.js.map +1 -1
  35. package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.d.ts +2 -3
  36. package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.js +3 -3
  37. package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.js.map +1 -1
  38. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.d.ts +2 -3
  39. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js +3 -3
  40. package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
  41. package/dist/cjs/contracts/factories/LimitOrderBook__factory.d.ts +2 -3
  42. package/dist/cjs/contracts/factories/LimitOrderBook__factory.js +3 -3
  43. package/dist/cjs/contracts/factories/LimitOrderBook__factory.js.map +1 -1
  44. package/dist/cjs/contracts/factories/MockTokenSwap__factory.d.ts +2 -3
  45. package/dist/cjs/contracts/factories/MockTokenSwap__factory.js +3 -3
  46. package/dist/cjs/contracts/factories/MockTokenSwap__factory.js.map +1 -1
  47. package/dist/cjs/contracts/factories/Multicall3__factory.d.ts +11 -9
  48. package/dist/cjs/contracts/factories/Multicall3__factory.js +7 -10
  49. package/dist/cjs/contracts/factories/Multicall3__factory.js.map +1 -1
  50. package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.d.ts +2 -3
  51. package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.js +3 -3
  52. package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.js.map +1 -1
  53. package/dist/cjs/contracts/factories/OracleFactory__factory.d.ts +2 -3
  54. package/dist/cjs/contracts/factories/OracleFactory__factory.js +3 -3
  55. package/dist/cjs/contracts/factories/OracleFactory__factory.js.map +1 -1
  56. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.d.ts +2 -3
  57. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js +3 -3
  58. package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
  59. package/dist/cjs/contracts/factories/RedStoneAbi__factory.d.ts +2 -3
  60. package/dist/cjs/contracts/factories/RedStoneAbi__factory.js +3 -3
  61. package/dist/cjs/contracts/factories/RedStoneAbi__factory.js.map +1 -1
  62. package/dist/cjs/contracts/factories/ShareToken__factory.d.ts +2 -3
  63. package/dist/cjs/contracts/factories/ShareToken__factory.js +3 -3
  64. package/dist/cjs/contracts/factories/ShareToken__factory.js.map +1 -1
  65. package/dist/cjs/d8XMath.d.ts +28 -16
  66. package/dist/cjs/d8XMath.js +70 -50
  67. package/dist/cjs/d8XMath.js.map +1 -1
  68. package/dist/cjs/liquidatorTool.d.ts +8 -8
  69. package/dist/cjs/liquidatorTool.js +5 -7
  70. package/dist/cjs/liquidatorTool.js.map +1 -1
  71. package/dist/cjs/liquidityProviderTool.d.ts +4 -5
  72. package/dist/cjs/liquidityProviderTool.js.map +1 -1
  73. package/dist/cjs/marketData.d.ts +27 -28
  74. package/dist/cjs/marketData.js +65 -69
  75. package/dist/cjs/marketData.js.map +1 -1
  76. package/dist/cjs/nodeSDKTypes.d.ts +35 -37
  77. package/dist/cjs/onChainPxFeed.d.ts +2 -2
  78. package/dist/cjs/onChainPxFeed.js +3 -3
  79. package/dist/cjs/onChainPxFeed.js.map +1 -1
  80. package/dist/cjs/onChainPxFeedAngle.d.ts +2 -2
  81. package/dist/cjs/onChainPxFeedAngle.js +4 -5
  82. package/dist/cjs/onChainPxFeedAngle.js.map +1 -1
  83. package/dist/cjs/onChainPxFeedRedStone.js +2 -2
  84. package/dist/cjs/onChainPxFeedRedStone.js.map +1 -1
  85. package/dist/cjs/orderExecutorTool.d.ts +7 -9
  86. package/dist/cjs/orderExecutorTool.js +52 -62
  87. package/dist/cjs/orderExecutorTool.js.map +1 -1
  88. package/dist/cjs/perpetualDataHandler.d.ts +44 -35
  89. package/dist/cjs/perpetualDataHandler.js +194 -170
  90. package/dist/cjs/perpetualDataHandler.js.map +1 -1
  91. package/dist/cjs/perpetualEventHandler.d.ts +4 -5
  92. package/dist/cjs/perpetualEventHandler.js +2 -2
  93. package/dist/cjs/perpetualEventHandler.js.map +1 -1
  94. package/dist/cjs/polyMktsPxFeed.d.ts +14 -0
  95. package/dist/cjs/polyMktsPxFeed.js +59 -0
  96. package/dist/cjs/polyMktsPxFeed.js.map +1 -0
  97. package/dist/cjs/priceFeeds.d.ts +2 -0
  98. package/dist/cjs/priceFeeds.js +44 -9
  99. package/dist/cjs/priceFeeds.js.map +1 -1
  100. package/dist/cjs/referralCodeSigner.d.ts +1 -1
  101. package/dist/cjs/referralCodeSigner.js +12 -16
  102. package/dist/cjs/referralCodeSigner.js.map +1 -1
  103. package/dist/cjs/traderDigests.d.ts +2 -1
  104. package/dist/cjs/traderDigests.js +9 -11
  105. package/dist/cjs/traderDigests.js.map +1 -1
  106. package/dist/cjs/traderInterface.d.ts +8 -9
  107. package/dist/cjs/traderInterface.js +40 -23
  108. package/dist/cjs/traderInterface.js.map +1 -1
  109. package/dist/cjs/utils.d.ts +2 -3
  110. package/dist/cjs/utils.js +1 -2
  111. package/dist/cjs/utils.js.map +1 -1
  112. package/dist/cjs/version.d.ts +1 -1
  113. package/dist/cjs/version.js +1 -1
  114. package/dist/cjs/version.js.map +1 -1
  115. package/dist/cjs/writeAccessHandler.d.ts +7 -9
  116. package/dist/cjs/writeAccessHandler.js +13 -16
  117. package/dist/cjs/writeAccessHandler.js.map +1 -1
  118. package/dist/esm/accountTrade.d.ts +9 -9
  119. package/dist/esm/accountTrade.js +19 -17
  120. package/dist/esm/accountTrade.js.map +1 -1
  121. package/dist/esm/brokerTool.d.ts +11 -12
  122. package/dist/esm/brokerTool.js +2 -3
  123. package/dist/esm/brokerTool.js.map +1 -1
  124. package/dist/esm/config/priceFeedConfig.json +16 -2
  125. package/dist/esm/config/symbolList.json +2 -1
  126. package/dist/esm/constants.d.ts +12 -12
  127. package/dist/esm/constants.js +13 -13
  128. package/dist/esm/constants.js.map +1 -1
  129. package/dist/esm/contracts/ERC20.d.ts +146 -171
  130. package/dist/esm/contracts/IPerpetualManager.d.ts +2534 -2225
  131. package/dist/esm/contracts/IPyth.d.ts +181 -184
  132. package/dist/esm/contracts/LimitOrderBook.d.ts +373 -401
  133. package/dist/esm/contracts/LimitOrderBookBeacon.d.ts +53 -104
  134. package/dist/esm/contracts/LimitOrderBookFactory.d.ts +129 -185
  135. package/dist/esm/contracts/MockTokenSwap.d.ts +109 -169
  136. package/dist/esm/contracts/Multicall3.d.ts +147 -211
  137. package/dist/esm/contracts/OnDemandOracleUpgradeable.d.ts +342 -399
  138. package/dist/esm/contracts/OracleFactory.d.ts +258 -238
  139. package/dist/esm/contracts/PerpetualManagerProxy.d.ts +1099 -891
  140. package/dist/esm/contracts/RedStoneAbi.d.ts +369 -488
  141. package/dist/esm/contracts/ShareToken.d.ts +232 -285
  142. package/dist/esm/contracts/common.d.ts +40 -11
  143. package/dist/esm/contracts/factories/ERC20__factory.d.ts +2 -3
  144. package/dist/esm/contracts/factories/ERC20__factory.js +4 -4
  145. package/dist/esm/contracts/factories/ERC20__factory.js.map +1 -1
  146. package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +2 -3
  147. package/dist/esm/contracts/factories/IPerpetualManager__factory.js +4 -4
  148. package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
  149. package/dist/esm/contracts/factories/IPyth__factory.d.ts +2 -3
  150. package/dist/esm/contracts/factories/IPyth__factory.js +4 -4
  151. package/dist/esm/contracts/factories/IPyth__factory.js.map +1 -1
  152. package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.d.ts +2 -3
  153. package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.js +4 -4
  154. package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.js.map +1 -1
  155. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.d.ts +2 -3
  156. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js +4 -4
  157. package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
  158. package/dist/esm/contracts/factories/LimitOrderBook__factory.d.ts +2 -3
  159. package/dist/esm/contracts/factories/LimitOrderBook__factory.js +4 -4
  160. package/dist/esm/contracts/factories/LimitOrderBook__factory.js.map +1 -1
  161. package/dist/esm/contracts/factories/MockTokenSwap__factory.d.ts +2 -3
  162. package/dist/esm/contracts/factories/MockTokenSwap__factory.js +4 -4
  163. package/dist/esm/contracts/factories/MockTokenSwap__factory.js.map +1 -1
  164. package/dist/esm/contracts/factories/Multicall3__factory.d.ts +11 -9
  165. package/dist/esm/contracts/factories/Multicall3__factory.js +8 -11
  166. package/dist/esm/contracts/factories/Multicall3__factory.js.map +1 -1
  167. package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.d.ts +2 -3
  168. package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.js +4 -4
  169. package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.js.map +1 -1
  170. package/dist/esm/contracts/factories/OracleFactory__factory.d.ts +2 -3
  171. package/dist/esm/contracts/factories/OracleFactory__factory.js +4 -4
  172. package/dist/esm/contracts/factories/OracleFactory__factory.js.map +1 -1
  173. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.d.ts +2 -3
  174. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js +4 -4
  175. package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
  176. package/dist/esm/contracts/factories/RedStoneAbi__factory.d.ts +2 -3
  177. package/dist/esm/contracts/factories/RedStoneAbi__factory.js +4 -4
  178. package/dist/esm/contracts/factories/RedStoneAbi__factory.js.map +1 -1
  179. package/dist/esm/contracts/factories/ShareToken__factory.d.ts +2 -3
  180. package/dist/esm/contracts/factories/ShareToken__factory.js +4 -4
  181. package/dist/esm/contracts/factories/ShareToken__factory.js.map +1 -1
  182. package/dist/esm/d8XMath.d.ts +28 -16
  183. package/dist/esm/d8XMath.js +67 -49
  184. package/dist/esm/d8XMath.js.map +1 -1
  185. package/dist/esm/liquidatorTool.d.ts +8 -8
  186. package/dist/esm/liquidatorTool.js +5 -7
  187. package/dist/esm/liquidatorTool.js.map +1 -1
  188. package/dist/esm/liquidityProviderTool.d.ts +4 -5
  189. package/dist/esm/liquidityProviderTool.js.map +1 -1
  190. package/dist/esm/marketData.d.ts +27 -28
  191. package/dist/esm/marketData.js +55 -59
  192. package/dist/esm/marketData.js.map +1 -1
  193. package/dist/esm/nodeSDKTypes.d.ts +35 -37
  194. package/dist/esm/onChainPxFeed.d.ts +2 -2
  195. package/dist/esm/onChainPxFeed.js +3 -3
  196. package/dist/esm/onChainPxFeed.js.map +1 -1
  197. package/dist/esm/onChainPxFeedAngle.d.ts +2 -2
  198. package/dist/esm/onChainPxFeedAngle.js +2 -3
  199. package/dist/esm/onChainPxFeedAngle.js.map +1 -1
  200. package/dist/esm/onChainPxFeedRedStone.js +1 -1
  201. package/dist/esm/onChainPxFeedRedStone.js.map +1 -1
  202. package/dist/esm/orderExecutorTool.d.ts +7 -9
  203. package/dist/esm/orderExecutorTool.js +38 -48
  204. package/dist/esm/orderExecutorTool.js.map +1 -1
  205. package/dist/esm/perpetualDataHandler.d.ts +44 -35
  206. package/dist/esm/perpetualDataHandler.js +137 -113
  207. package/dist/esm/perpetualDataHandler.js.map +1 -1
  208. package/dist/esm/perpetualEventHandler.d.ts +4 -5
  209. package/dist/esm/perpetualEventHandler.js +2 -2
  210. package/dist/esm/perpetualEventHandler.js.map +1 -1
  211. package/dist/esm/polyMktsPxFeed.d.ts +14 -0
  212. package/dist/esm/polyMktsPxFeed.js +56 -0
  213. package/dist/esm/polyMktsPxFeed.js.map +1 -0
  214. package/dist/esm/priceFeeds.d.ts +2 -0
  215. package/dist/esm/priceFeeds.js +44 -9
  216. package/dist/esm/priceFeeds.js.map +1 -1
  217. package/dist/esm/referralCodeSigner.d.ts +1 -1
  218. package/dist/esm/referralCodeSigner.js +6 -10
  219. package/dist/esm/referralCodeSigner.js.map +1 -1
  220. package/dist/esm/traderDigests.d.ts +2 -1
  221. package/dist/esm/traderDigests.js +2 -4
  222. package/dist/esm/traderDigests.js.map +1 -1
  223. package/dist/esm/traderInterface.d.ts +8 -9
  224. package/dist/esm/traderInterface.js +42 -25
  225. package/dist/esm/traderInterface.js.map +1 -1
  226. package/dist/esm/utils.d.ts +2 -3
  227. package/dist/esm/utils.js +1 -2
  228. package/dist/esm/utils.js.map +1 -1
  229. package/dist/esm/version.d.ts +1 -1
  230. package/dist/esm/version.js +1 -1
  231. package/dist/esm/version.js.map +1 -1
  232. package/dist/esm/writeAccessHandler.d.ts +7 -9
  233. package/dist/esm/writeAccessHandler.js +5 -8
  234. package/dist/esm/writeAccessHandler.js.map +1 -1
  235. package/package.json +7 -17
  236. package/src/accountTrade.ts +32 -34
  237. package/src/brokerTool.ts +17 -20
  238. package/src/config/priceFeedConfig.json +16 -2
  239. package/src/config/symbolList.json +2 -1
  240. package/src/constants.ts +13 -13
  241. package/src/contracts/ERC20.ts +236 -350
  242. package/src/contracts/IPerpetualManager.ts +3359 -5050
  243. package/src/contracts/IPyth.ts +272 -409
  244. package/src/contracts/LimitOrderBook.ts +503 -779
  245. package/src/contracts/LimitOrderBookBeacon.ts +123 -171
  246. package/src/contracts/LimitOrderBookFactory.ts +263 -332
  247. package/src/contracts/MockTokenSwap.ts +237 -275
  248. package/src/contracts/Multicall3.ts +208 -374
  249. package/src/contracts/OnDemandOracleUpgradeable.ts +569 -782
  250. package/src/contracts/OracleFactory.ts +410 -538
  251. package/src/contracts/PerpetualManagerProxy.ts +1898 -1426
  252. package/src/contracts/RedStoneAbi.ts +486 -986
  253. package/src/contracts/ShareToken.ts +376 -557
  254. package/src/contracts/common.ts +108 -21
  255. package/src/contracts/factories/ERC20__factory.ts +4 -5
  256. package/src/contracts/factories/IPerpetualManager__factory.ts +4 -5
  257. package/src/contracts/factories/IPyth__factory.ts +4 -5
  258. package/src/contracts/factories/LimitOrderBookBeacon__factory.ts +5 -6
  259. package/src/contracts/factories/LimitOrderBookFactory__factory.ts +5 -6
  260. package/src/contracts/factories/LimitOrderBook__factory.ts +4 -5
  261. package/src/contracts/factories/MockTokenSwap__factory.ts +4 -5
  262. package/src/contracts/factories/Multicall3__factory.ts +21 -19
  263. package/src/contracts/factories/OnDemandOracleUpgradeable__factory.ts +5 -6
  264. package/src/contracts/factories/OracleFactory__factory.ts +4 -5
  265. package/src/contracts/factories/PerpetualManagerProxy__factory.ts +5 -6
  266. package/src/contracts/factories/RedStoneAbi__factory.ts +4 -8
  267. package/src/contracts/factories/ShareToken__factory.ts +4 -8
  268. package/src/d8XMath.ts +78 -57
  269. package/src/liquidatorTool.ts +12 -15
  270. package/src/liquidityProviderTool.ts +7 -5
  271. package/src/marketData.ts +110 -121
  272. package/src/nodeSDKTypes.ts +51 -38
  273. package/src/onChainPxFeed.ts +4 -4
  274. package/src/onChainPxFeedAngle.ts +5 -7
  275. package/src/onChainPxFeedRedStone.ts +1 -3
  276. package/src/orderExecutorTool.ts +100 -108
  277. package/src/perpetualDataHandler.ts +209 -172
  278. package/src/perpetualEventHandler.ts +16 -17
  279. package/src/polyMktsPxFeed.ts +71 -0
  280. package/src/priceFeeds.ts +46 -10
  281. package/src/referralCodeSigner.ts +6 -10
  282. package/src/traderDigests.ts +8 -5
  283. package/src/traderInterface.ts +61 -33
  284. package/src/utils.ts +3 -4
  285. package/src/version.ts +1 -1
  286. package/src/writeAccessHandler.ts +26 -17
package/src/d8XMath.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { BigNumber, BigNumberish } from "@ethersproject/bignumber";
1
+ import { BigNumberish } from "ethers";
2
2
  import { DECIMALS, ONE_64x64 } from "./constants";
3
3
 
4
4
  /**
@@ -12,7 +12,7 @@ import { DECIMALS, ONE_64x64 } from "./constants";
12
12
  * @param {BigNumber|number} x number in ABDK-format/2^35
13
13
  * @returns {number} x/2^64 in number-format (float)
14
14
  */
15
- export function ABDK29ToFloat(x: BigNumber | number): number {
15
+ export function ABDK29ToFloat(x: bigint | number): number {
16
16
  return Number(x) / 2 ** 29;
17
17
  }
18
18
 
@@ -22,22 +22,21 @@ export function ABDK29ToFloat(x: BigNumber | number): number {
22
22
  * @param {BigNumberish|number} x number in ABDK-format or 2^29
23
23
  * @returns {number} x/2^64 in number-format (float)
24
24
  */
25
- export function ABK64x64ToFloat(x: BigNumberish | number): number {
25
+ export function ABK64x64ToFloat(x: bigint | number): number {
26
26
  if (typeof x == "number") {
27
27
  return x / 2 ** 29;
28
28
  }
29
- x = BigNumber.from(x);
30
- let s = x.lt(0) ? -1 : 1;
31
- x = x.mul(s);
32
- let xInt = x.div(ONE_64x64);
33
- let dec18 = BigNumber.from(10).pow(BigNumber.from(18));
34
- let xDec = x.sub(xInt.mul(ONE_64x64));
35
- xDec = xDec.mul(dec18).div(ONE_64x64);
29
+ let s = x < 0n ? -1n : 1n;
30
+ x = x * s;
31
+ let xInt = x / ONE_64x64;
32
+ let dec18 = 10n ** 18n; // BigNumber.from(10).pow(BigNumber.from(18));
33
+ let xDec = x - xInt * ONE_64x64;
34
+ xDec = (xDec * dec18) / ONE_64x64;
36
35
  let k = 18 - xDec.toString().length;
37
36
  // console.assert(k >= 0);
38
37
  let sPad = "0".repeat(k);
39
38
  let NumberStr = xInt.toString() + "." + sPad + xDec.toString();
40
- return parseFloat(NumberStr) * s;
39
+ return parseFloat(NumberStr) * Number(s);
41
40
  }
42
41
 
43
42
  /**
@@ -45,18 +44,19 @@ export function ABK64x64ToFloat(x: BigNumberish | number): number {
45
44
  * @param {BigNumberish} x BigNumber in Dec-N format
46
45
  * @returns {number} x as a float (number)
47
46
  */
48
- export function decNToFloat(x: BigNumberish, numDec: number) {
47
+ export function decNToFloat(x: BigNumberish, numDec: BigNumberish): number {
49
48
  //x: BigNumber in DecN format to float
50
- const DECIMALS = BigNumber.from(10).pow(BigNumber.from(numDec));
51
- x = BigNumber.from(x);
52
- let s = x.lt(0) ? -1 : 1;
53
- x = x.mul(s);
54
- let xInt = x.div(DECIMALS);
55
- let xDec = x.sub(xInt.mul(DECIMALS));
56
- let k = numDec - xDec.toString().length;
49
+ const DECIMALS = 10n ** BigInt(numDec); // BigNumber.from(10).pow(BigNumber.from(numDec));
50
+ x = BigInt(x);
51
+ numDec = BigInt(numDec);
52
+ let s = x < 0n ? -1n : 1n;
53
+ x = x * s;
54
+ let xInt = x / DECIMALS;
55
+ let xDec = x - xInt * DECIMALS;
56
+ let k = Number(numDec) - xDec.toString().length;
57
57
  let sPad = "0".repeat(k);
58
58
  let NumberStr = xInt.toString() + "." + sPad + xDec.toString();
59
- return parseFloat(NumberStr) * s;
59
+ return parseFloat(NumberStr) * Number(s);
60
60
  }
61
61
 
62
62
  /**
@@ -66,38 +66,38 @@ export function decNToFloat(x: BigNumberish, numDec: number) {
66
66
  */
67
67
  export function dec18ToFloat(x: BigNumberish): number {
68
68
  //x: BigNumber in Dec18 format to float
69
- x = BigNumber.from(x);
70
- let s = x.lt(0) ? -1 : 1;
71
- x = x.mul(s);
72
- let xInt = x.div(DECIMALS);
73
- let xDec = x.sub(xInt.mul(DECIMALS));
69
+ x = BigInt(x);
70
+ let s = x < 0n ? -1n : 1n;
71
+ x = x * s;
72
+ let xInt = x / DECIMALS;
73
+ let xDec = x - xInt * DECIMALS;
74
74
  let k = 18 - xDec.toString().length;
75
75
  let sPad = "0".repeat(k);
76
76
  let NumberStr = xInt.toString() + "." + sPad + xDec.toString();
77
- return parseFloat(NumberStr) * s;
77
+ return parseFloat(NumberStr) * Number(s);
78
78
  }
79
79
 
80
80
  /**
81
81
  * Converts x into ABDK64x64 format
82
82
  * @param {number} x number (float)
83
- * @returns {BigNumber} x^64 in big number format
83
+ * @returns {bigint} x^64 in big number format
84
84
  */
85
- export function floatToABK64x64(x: number): BigNumber {
85
+ export function floatToABK64x64(x: number): bigint {
86
86
  // convert float to ABK64x64 bigint-format
87
87
  // Create string from number with 18 decimals
88
88
  if (x === 0) {
89
- return BigNumber.from(0);
89
+ return 0n;
90
90
  }
91
91
  let sg = Math.sign(x);
92
92
  x = Math.abs(x);
93
93
  let strX = Number(x).toFixed(18);
94
94
  const arrX = strX.split(".");
95
- let xInt = BigNumber.from(arrX[0]);
96
- let xDec = BigNumber.from(arrX[1]);
97
- let xIntBig = xInt.mul(ONE_64x64);
98
- let dec18 = BigNumber.from(10).pow(BigNumber.from(18));
99
- let xDecBig = xDec.mul(ONE_64x64).div(dec18);
100
- return xIntBig.add(xDecBig).mul(sg);
95
+ let xInt = BigInt(arrX[0]);
96
+ let xDec = BigInt(arrX[1]);
97
+ let xIntBig = xInt * ONE_64x64;
98
+ let dec18 = 10n ** 18n; //BigNumber.from(10).pow(BigNumber.from(18));
99
+ let xDecBig = (xDec * ONE_64x64) / dec18;
100
+ return (xIntBig + xDecBig) * BigInt(sg);
101
101
  }
102
102
 
103
103
  /**
@@ -105,19 +105,19 @@ export function floatToABK64x64(x: number): BigNumber {
105
105
  * @param {number} x number (float)
106
106
  * @returns {BigNumber} x as a BigNumber in Dec18 format
107
107
  */
108
- export function floatToDec18(x: number): BigNumber {
108
+ export function floatToDec18(x: number): bigint {
109
109
  // float number to dec 18
110
110
  if (x === 0) {
111
- return BigNumber.from(0);
111
+ return 0n;
112
112
  }
113
113
  let sg = Math.sign(x);
114
114
  x = Math.abs(x);
115
115
  let strX = x.toFixed(18);
116
116
  const arrX = strX.split(".");
117
- let xInt = BigNumber.from(arrX[0]);
118
- let xDec = BigNumber.from(arrX[1]);
119
- let xIntBig = xInt.mul(DECIMALS);
120
- return xIntBig.add(xDec).mul(sg);
117
+ let xInt = BigInt(arrX[0]);
118
+ let xDec = BigInt(arrX[1]);
119
+ let xIntBig = xInt * DECIMALS;
120
+ return (xIntBig + xDec) * BigInt(sg);
121
121
  }
122
122
 
123
123
  /**
@@ -126,19 +126,19 @@ export function floatToDec18(x: number): BigNumber {
126
126
  * @param {number} decimals number of decimals
127
127
  * @returns {BigNumber} x as a BigNumber in Dec18 format
128
128
  */
129
- export function floatToDecN(x: number, decimals: number): BigNumber {
129
+ export function floatToDecN(x: number, decimals: number): bigint {
130
130
  // float number to dec 18
131
131
  if (x === 0) {
132
- return BigNumber.from(0);
132
+ return 0n;
133
133
  }
134
134
  let sg = Math.sign(x);
135
135
  x = Math.abs(x);
136
136
  let strX = x.toFixed(decimals);
137
137
  const arrX = strX.split(".");
138
- let xInt = BigNumber.from(arrX[0]);
139
- let xDec = BigNumber.from(arrX[1]);
140
- let xIntBig = xInt.mul(BigNumber.from(10).pow(BigNumber.from(decimals)));
141
- return xIntBig.add(xDec).mul(sg);
138
+ let xInt = BigInt(arrX[0]);
139
+ let xDec = BigInt(arrX[1]);
140
+ let xIntBig = xInt * 10n ** BigInt(decimals);
141
+ return (xIntBig + xDec) * BigInt(sg);
142
142
  }
143
143
 
144
144
  /**
@@ -189,22 +189,22 @@ export function roundToLotString(x: number, lot: number, precision: number = 7):
189
189
 
190
190
  /**
191
191
  *
192
- * @param {BigNumber} x
193
- * @param {BigNumber} y
194
- * @returns {BigNumber} x * y
192
+ * @param {bigint} x
193
+ * @param {bigint} y
194
+ * @returns {bigint} x * y
195
195
  */
196
- export function mul64x64(x: BigNumber, y: BigNumber) {
197
- return x.mul(y).div(ONE_64x64);
196
+ export function mul64x64(x: bigint, y: bigint): bigint {
197
+ return (x * y) / ONE_64x64;
198
198
  }
199
199
 
200
200
  /**
201
201
  *
202
- * @param {BigNumber} x
203
- * @param {BigNumber} y
204
- * @returns {BigNumber} x / y
202
+ * @param {bigint} x
203
+ * @param {bigint} y
204
+ * @returns {bigint} x / y
205
205
  */
206
- export function div64x64(x: BigNumber, y: BigNumber) {
207
- return x.mul(ONE_64x64).div(y);
206
+ export function div64x64(x: bigint, y: bigint): bigint {
207
+ return (x * ONE_64x64) / y;
208
208
  }
209
209
 
210
210
  /**
@@ -401,3 +401,24 @@ export function getDepositAmountForLvgTrade(
401
401
  let b = (Math.abs(pos0 + tradeAmnt) * S2Mark) / S3 / targetLvg;
402
402
  return -(b0 + pnl - b);
403
403
  }
404
+
405
+ /**
406
+ * Convert a perpetual price to probability (predtictive markets)
407
+ * @param px Perpetual price
408
+ * @returns Probability in [0,1]
409
+ */
410
+ export function priceToProb(px: number) {
411
+ if (px <= 0) {
412
+ throw new Error(`Price must be positive: ${px}`);
413
+ }
414
+ return Math.log(px);
415
+ }
416
+
417
+ /**
418
+ * Convert a probability to a predictive market price
419
+ * @param prob Probability in [0,1]
420
+ * @returns Perpetual price
421
+ */
422
+ export function probToPrice(prob: number) {
423
+ return Math.exp(prob);
424
+ }
@@ -1,7 +1,5 @@
1
- import { Signer } from "@ethersproject/abstract-signer";
2
- import { BigNumber } from "@ethersproject/bignumber";
3
- import type { CallOverrides, ContractTransaction, PayableOverrides } from "@ethersproject/contracts";
4
- import { StaticJsonRpcProvider } from "@ethersproject/providers";
1
+ import { ContractTransactionResponse, JsonRpcProvider, Overrides, Signer, TransactionResponse } from "ethers";
2
+ import { PayableOverrides } from "./contracts/common";
5
3
  import { IPyth__factory } from "./contracts/factories";
6
4
  import { ABK64x64ToFloat, floatToABK64x64 } from "./d8XMath";
7
5
  import type { NodeSDKConfig, PriceFeedSubmission } from "./nodeSDKTypes";
@@ -49,7 +47,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
49
47
  if (overrides) {
50
48
  ({ rpcURL, ...overrides } = overrides);
51
49
  }
52
- const provider = new StaticJsonRpcProvider(rpcURL ?? this.nodeURL);
50
+ const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
53
51
  let perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
54
52
  if (priceUpdates == undefined) {
55
53
  priceUpdates = await this.fetchLatestFeedPriceInfo(symbol);
@@ -101,7 +99,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
101
99
  liquidatorAddr: string = "",
102
100
  submission?: PriceFeedSubmission,
103
101
  overrides?: PayableOverrides & { rpcURL?: string; splitTx?: boolean }
104
- ): Promise<ContractTransaction> {
102
+ ): Promise<TransactionResponse> {
105
103
  // this operation spends gas, so signer is required
106
104
  if (this.proxyContract == null || this.signer == null) {
107
105
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
@@ -115,7 +113,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
115
113
  if (overrides) {
116
114
  ({ rpcURL, splitTx, ...overrides } = overrides);
117
115
  }
118
- const provider = new StaticJsonRpcProvider(rpcURL ?? this.nodeURL);
116
+ const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
119
117
  let perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
120
118
  if (submission == undefined) {
121
119
  submission = await this.fetchLatestFeedPriceInfo(symbol);
@@ -166,9 +164,8 @@ export default class LiquidatorTool extends WriteAccessHandler {
166
164
  ]);
167
165
  value = this.PRICE_UPDATE_FEE_GWEI * submission.timestamps.length;
168
166
  }
169
- if (overrides?.nonce !== undefined) {
170
- const nonce = await overrides!.nonce;
171
- overrides.nonce = BigNumber.from(nonce).add(nonceInc);
167
+ if (!!overrides?.nonce) {
168
+ overrides.nonce = overrides.nonce + nonceInc;
172
169
  }
173
170
  let unsignedTx = {
174
171
  to: this.proxyAddr,
@@ -213,7 +210,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
213
210
  symbol: string,
214
211
  traderAddr: string,
215
212
  indexPrices?: [number, number],
216
- overrides?: CallOverrides
213
+ overrides?: Overrides
217
214
  ): Promise<boolean> {
218
215
  if (this.proxyContract == null) {
219
216
  throw Error("no proxy contract initialized. Use createProxyInstance().");
@@ -228,7 +225,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
228
225
  let traderState = await this.proxyContract.getTraderState(
229
226
  perpID,
230
227
  traderAddr,
231
- indexPrices.map((x) => floatToABK64x64(x == undefined || Number.isNaN(x) ? 0 : x)) as [BigNumber, BigNumber],
228
+ indexPrices.map((x) => floatToABK64x64(x == undefined || Number.isNaN(x) ? 0 : x)) as [bigint, bigint],
232
229
  overrides || {}
233
230
  );
234
231
  if (traderState[idx_notional].eq(0)) {
@@ -269,7 +266,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
269
266
  *
270
267
  * @returns {number} Number of active accounts.
271
268
  */
272
- public async countActivePerpAccounts(symbol: string, overrides?: CallOverrides): Promise<number> {
269
+ public async countActivePerpAccounts(symbol: string, overrides?: Overrides): Promise<number> {
273
270
  if (this.proxyContract == null) {
274
271
  throw Error("no proxy contract initialized. Use createProxyInstance().");
275
272
  }
@@ -304,7 +301,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
304
301
  symbol: string,
305
302
  from: number,
306
303
  to: number,
307
- overrides?: CallOverrides
304
+ overrides?: Overrides
308
305
  ): Promise<string[]> {
309
306
  if (this.proxyContract == null) {
310
307
  throw Error("no proxy contract initialized. Use createProxyInstance().");
@@ -333,7 +330,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
333
330
  *
334
331
  * @returns {string[]} Array of addresses.
335
332
  */
336
- public async getAllActiveAccounts(symbol: string, overrides?: CallOverrides): Promise<string[]> {
333
+ public async getAllActiveAccounts(symbol: string, overrides?: Overrides): Promise<string[]> {
337
334
  // checks are done inside the intermediate functions
338
335
  let totalAccounts = await this.countActivePerpAccounts(symbol);
339
336
  return await this.getActiveAccountsByChunks(symbol, 0, totalAccounts, overrides);
@@ -1,5 +1,4 @@
1
- import { Signer } from "@ethersproject/abstract-signer";
2
- import type { ContractTransaction, Overrides } from "@ethersproject/contracts";
1
+ import { ContractTransactionResponse, Overrides, Signer } from "ethers";
3
2
  import { floatToDec18, floatToDecN } from "./d8XMath";
4
3
  import type { NodeSDKConfig } from "./nodeSDKTypes";
5
4
  import PerpetualDataHandler from "./perpetualDataHandler";
@@ -60,7 +59,7 @@ export default class LiquidityProviderTool extends WriteAccessHandler {
60
59
  poolSymbolName: string,
61
60
  amountCC: number,
62
61
  overrides?: Overrides
63
- ): Promise<ContractTransaction> {
62
+ ): Promise<ContractTransactionResponse> {
64
63
  if (this.proxyContract == null || this.signer == null) {
65
64
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
66
65
  }
@@ -101,7 +100,7 @@ export default class LiquidityProviderTool extends WriteAccessHandler {
101
100
  poolSymbolName: string,
102
101
  amountPoolShares: number,
103
102
  overrides?: Overrides
104
- ): Promise<ContractTransaction> {
103
+ ): Promise<ContractTransactionResponse> {
105
104
  if (this.proxyContract == null || this.signer == null) {
106
105
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
107
106
  }
@@ -135,7 +134,10 @@ export default class LiquidityProviderTool extends WriteAccessHandler {
135
134
  *
136
135
  * @returns Transaction object.
137
136
  */
138
- public async executeLiquidityWithdrawal(poolSymbolName: string, overrides?: Overrides): Promise<ContractTransaction> {
137
+ public async executeLiquidityWithdrawal(
138
+ poolSymbolName: string,
139
+ overrides?: Overrides
140
+ ): Promise<ContractTransactionResponse> {
139
141
  if (this.proxyContract == null || this.signer == null) {
140
142
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
141
143
  }