@paraswap/dex-lib 2.42.11 → 2.42.13

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 (228) hide show
  1. package/build/abi/kyberswap-elastic/IAntiSnipAttackPositionManager.json +1276 -0
  2. package/build/abi/kyberswap-elastic/IFactory.json +550 -0
  3. package/build/abi/kyberswap-elastic/IPool.json +1042 -0
  4. package/build/abi/kyberswap-elastic/IQuoterV2.json +226 -0
  5. package/build/abi/kyberswap-elastic/IRouter.json +239 -0
  6. package/build/abi/kyberswap-elastic/TicksFeesReader.json +142 -0
  7. package/build/abi/wombat/asset.json +769 -0
  8. package/build/abi/wombat/bmw.json +1247 -0
  9. package/build/abi/wombat/pool.json +1364 -0
  10. package/build/dex/baseswap-v3/baseswap-v3-factory.d.ts +26 -0
  11. package/build/dex/baseswap-v3/baseswap-v3-factory.js +44 -0
  12. package/build/dex/baseswap-v3/baseswap-v3-factory.js.map +1 -0
  13. package/build/dex/{algebra/algebra-pool.d.ts → baseswap-v3/baseswap-v3-pool.d.ts} +16 -16
  14. package/build/dex/{algebra/algebra-pool.js → baseswap-v3/baseswap-v3-pool.js} +137 -161
  15. package/build/dex/baseswap-v3/baseswap-v3-pool.js.map +1 -0
  16. package/build/dex/baseswap-v3/baseswap-v3.d.ts +71 -0
  17. package/build/dex/baseswap-v3/baseswap-v3.js +752 -0
  18. package/build/dex/baseswap-v3/baseswap-v3.js.map +1 -0
  19. package/build/dex/baseswap-v3/config.d.ts +9 -0
  20. package/build/dex/baseswap-v3/config.js +48 -0
  21. package/build/dex/baseswap-v3/config.js.map +1 -0
  22. package/build/dex/baseswap-v3/constants.d.ts +28 -0
  23. package/build/dex/baseswap-v3/constants.js +35 -0
  24. package/build/dex/baseswap-v3/constants.js.map +1 -0
  25. package/build/dex/baseswap-v3/contract-math/BitMath.d.ts +4 -0
  26. package/build/dex/baseswap-v3/contract-math/BitMath.js +93 -0
  27. package/build/dex/baseswap-v3/contract-math/BitMath.js.map +1 -0
  28. package/build/dex/baseswap-v3/contract-math/FixedPoint128.d.ts +3 -0
  29. package/build/dex/baseswap-v3/contract-math/FixedPoint128.js +8 -0
  30. package/build/dex/baseswap-v3/contract-math/FixedPoint128.js.map +1 -0
  31. package/build/dex/baseswap-v3/contract-math/FixedPoint96.d.ts +4 -0
  32. package/build/dex/baseswap-v3/contract-math/FixedPoint96.js +9 -0
  33. package/build/dex/baseswap-v3/contract-math/FixedPoint96.js.map +1 -0
  34. package/build/dex/baseswap-v3/contract-math/FullMath.d.ts +4 -0
  35. package/build/dex/baseswap-v3/contract-math/FullMath.js +19 -0
  36. package/build/dex/baseswap-v3/contract-math/FullMath.js.map +1 -0
  37. package/build/dex/baseswap-v3/contract-math/LiquidityMath.d.ts +3 -0
  38. package/build/dex/baseswap-v3/contract-math/LiquidityMath.js +22 -0
  39. package/build/dex/baseswap-v3/contract-math/LiquidityMath.js.map +1 -0
  40. package/build/dex/baseswap-v3/contract-math/Oracle.d.ts +10 -0
  41. package/build/dex/baseswap-v3/contract-math/Oracle.js +133 -0
  42. package/build/dex/baseswap-v3/contract-math/Oracle.js.map +1 -0
  43. package/build/dex/baseswap-v3/contract-math/SqrtPriceMath.d.ts +10 -0
  44. package/build/dex/baseswap-v3/contract-math/SqrtPriceMath.js +91 -0
  45. package/build/dex/baseswap-v3/contract-math/SqrtPriceMath.js.map +1 -0
  46. package/build/dex/baseswap-v3/contract-math/SwapMath.d.ts +8 -0
  47. package/build/dex/baseswap-v3/contract-math/SwapMath.js +70 -0
  48. package/build/dex/baseswap-v3/contract-math/SwapMath.js.map +1 -0
  49. package/build/dex/baseswap-v3/contract-math/Tick.d.ts +7 -0
  50. package/build/dex/baseswap-v3/contract-math/Tick.js +45 -0
  51. package/build/dex/baseswap-v3/contract-math/Tick.js.map +1 -0
  52. package/build/dex/baseswap-v3/contract-math/TickBitMap.d.ts +7 -0
  53. package/build/dex/baseswap-v3/contract-math/TickBitMap.js +84 -0
  54. package/build/dex/baseswap-v3/contract-math/TickBitMap.js.map +1 -0
  55. package/build/dex/baseswap-v3/contract-math/TickMath.d.ts +8 -0
  56. package/build/dex/baseswap-v3/contract-math/TickMath.js +162 -0
  57. package/build/dex/baseswap-v3/contract-math/TickMath.js.map +1 -0
  58. package/build/dex/baseswap-v3/contract-math/UnsafeMath.d.ts +3 -0
  59. package/build/dex/baseswap-v3/contract-math/UnsafeMath.js +10 -0
  60. package/build/dex/baseswap-v3/contract-math/UnsafeMath.js.map +1 -0
  61. package/build/dex/baseswap-v3/contract-math/uniswap-v3-math.d.ts +37 -0
  62. package/build/dex/baseswap-v3/contract-math/uniswap-v3-math.js +393 -0
  63. package/build/dex/baseswap-v3/contract-math/uniswap-v3-math.js.map +1 -0
  64. package/build/dex/baseswap-v3/contract-math/utils.d.ts +7 -0
  65. package/build/dex/baseswap-v3/contract-math/utils.js +42 -0
  66. package/build/dex/baseswap-v3/contract-math/utils.js.map +1 -0
  67. package/build/dex/baseswap-v3/types.d.ts +164 -0
  68. package/build/dex/baseswap-v3/types.js +9 -0
  69. package/build/dex/baseswap-v3/types.js.map +1 -0
  70. package/build/dex/baseswap-v3/utils.d.ts +6 -0
  71. package/build/dex/baseswap-v3/utils.js +65 -0
  72. package/build/dex/baseswap-v3/utils.js.map +1 -0
  73. package/build/dex/dexalot/dexalot.d.ts +3 -2
  74. package/build/dex/dexalot/dexalot.js +33 -19
  75. package/build/dex/dexalot/dexalot.js.map +1 -1
  76. package/build/dex/hello/config.d.ts +4 -0
  77. package/build/dex/hello/config.js +15 -0
  78. package/build/dex/hello/config.js.map +1 -0
  79. package/build/dex/hello/hello-pool.d.ts +39 -0
  80. package/build/dex/hello/hello-pool.js +64 -0
  81. package/build/dex/hello/hello-pool.js.map +1 -0
  82. package/build/dex/hello/hello.d.ts +37 -0
  83. package/build/dex/hello/hello.js +126 -0
  84. package/build/dex/hello/hello.js.map +1 -0
  85. package/build/dex/hello/types.d.ts +6 -0
  86. package/build/dex/hello/types.js +3 -0
  87. package/build/dex/hello/types.js.map +1 -0
  88. package/build/dex/kyberswap-elastic/config.d.ts +4 -0
  89. package/build/dex/kyberswap-elastic/config.js +80 -0
  90. package/build/dex/kyberswap-elastic/config.js.map +1 -0
  91. package/build/dex/kyberswap-elastic/constants.d.ts +17 -0
  92. package/build/dex/kyberswap-elastic/constants.js +42 -0
  93. package/build/dex/kyberswap-elastic/constants.js.map +1 -0
  94. package/build/dex/kyberswap-elastic/contract-math/FixedPoint96.d.ts +4 -0
  95. package/build/dex/kyberswap-elastic/contract-math/FixedPoint96.js +9 -0
  96. package/build/dex/kyberswap-elastic/contract-math/FixedPoint96.js.map +1 -0
  97. package/build/dex/kyberswap-elastic/contract-math/FullMath.d.ts +5 -0
  98. package/build/dex/kyberswap-elastic/contract-math/FullMath.js +22 -0
  99. package/build/dex/kyberswap-elastic/contract-math/FullMath.js.map +1 -0
  100. package/build/dex/kyberswap-elastic/contract-math/LiqDeltaMath.d.ts +3 -0
  101. package/build/dex/kyberswap-elastic/contract-math/LiqDeltaMath.js +12 -0
  102. package/build/dex/kyberswap-elastic/contract-math/LiqDeltaMath.js.map +1 -0
  103. package/build/dex/kyberswap-elastic/contract-math/LiquidityMath.d.ts +3 -0
  104. package/build/dex/kyberswap-elastic/contract-math/LiquidityMath.js +22 -0
  105. package/build/dex/kyberswap-elastic/contract-math/LiquidityMath.js.map +1 -0
  106. package/build/dex/kyberswap-elastic/contract-math/QtyDeltaMath.d.ts +5 -0
  107. package/build/dex/kyberswap-elastic/contract-math/QtyDeltaMath.js +25 -0
  108. package/build/dex/kyberswap-elastic/contract-math/QtyDeltaMath.js.map +1 -0
  109. package/build/dex/kyberswap-elastic/contract-math/QuadMath.d.ts +4 -0
  110. package/build/dex/kyberswap-elastic/contract-math/QuadMath.js +27 -0
  111. package/build/dex/kyberswap-elastic/contract-math/QuadMath.js.map +1 -0
  112. package/build/dex/kyberswap-elastic/contract-math/ReinvestmentMath.d.ts +3 -0
  113. package/build/dex/kyberswap-elastic/contract-math/ReinvestmentMath.js +14 -0
  114. package/build/dex/kyberswap-elastic/contract-math/ReinvestmentMath.js.map +1 -0
  115. package/build/dex/kyberswap-elastic/contract-math/SafeCast.d.ts +8 -0
  116. package/build/dex/kyberswap-elastic/contract-math/SafeCast.js +30 -0
  117. package/build/dex/kyberswap-elastic/contract-math/SafeCast.js.map +1 -0
  118. package/build/dex/kyberswap-elastic/contract-math/SqrtPriceMath.d.ts +10 -0
  119. package/build/dex/kyberswap-elastic/contract-math/SqrtPriceMath.js +91 -0
  120. package/build/dex/kyberswap-elastic/contract-math/SqrtPriceMath.js.map +1 -0
  121. package/build/dex/kyberswap-elastic/contract-math/SwapMath.d.ts +13 -0
  122. package/build/dex/kyberswap-elastic/contract-math/SwapMath.js +188 -0
  123. package/build/dex/kyberswap-elastic/contract-math/SwapMath.js.map +1 -0
  124. package/build/dex/kyberswap-elastic/contract-math/TickLinkedList.d.ts +6 -0
  125. package/build/dex/kyberswap-elastic/contract-math/TickLinkedList.js +41 -0
  126. package/build/dex/kyberswap-elastic/contract-math/TickLinkedList.js.map +1 -0
  127. package/build/dex/kyberswap-elastic/contract-math/TickMath.d.ts +9 -0
  128. package/build/dex/kyberswap-elastic/contract-math/TickMath.js +165 -0
  129. package/build/dex/kyberswap-elastic/contract-math/TickMath.js.map +1 -0
  130. package/build/dex/kyberswap-elastic/contract-math/UnsafeMath.d.ts +3 -0
  131. package/build/dex/kyberswap-elastic/contract-math/UnsafeMath.js +10 -0
  132. package/build/dex/kyberswap-elastic/contract-math/UnsafeMath.js.map +1 -0
  133. package/build/dex/kyberswap-elastic/contract-math/kyberswap-elastic-math.d.ts +28 -0
  134. package/build/dex/kyberswap-elastic/contract-math/kyberswap-elastic-math.js +502 -0
  135. package/build/dex/kyberswap-elastic/contract-math/kyberswap-elastic-math.js.map +1 -0
  136. package/build/dex/kyberswap-elastic/contract-math/utils.d.ts +3 -0
  137. package/build/dex/kyberswap-elastic/contract-math/utils.js +16 -0
  138. package/build/dex/kyberswap-elastic/contract-math/utils.js.map +1 -0
  139. package/build/dex/kyberswap-elastic/errors.d.ts +2 -0
  140. package/build/dex/kyberswap-elastic/errors.js +6 -0
  141. package/build/dex/kyberswap-elastic/errors.js.map +1 -0
  142. package/build/dex/kyberswap-elastic/kyberswap-elastic-pool.d.ts +80 -0
  143. package/build/dex/kyberswap-elastic/kyberswap-elastic-pool.js +458 -0
  144. package/build/dex/kyberswap-elastic/kyberswap-elastic-pool.js.map +1 -0
  145. package/build/dex/kyberswap-elastic/kyberswap-elastic.d.ts +53 -0
  146. package/build/dex/kyberswap-elastic/kyberswap-elastic.js +610 -0
  147. package/build/dex/kyberswap-elastic/kyberswap-elastic.js.map +1 -0
  148. package/build/dex/kyberswap-elastic/types.d.ts +134 -0
  149. package/build/dex/kyberswap-elastic/types.js +9 -0
  150. package/build/dex/kyberswap-elastic/types.js.map +1 -0
  151. package/build/dex/kyberswap-elastic/utils/decoders.d.ts +9 -0
  152. package/build/dex/kyberswap-elastic/utils/decoders.js +78 -0
  153. package/build/dex/kyberswap-elastic/utils/decoders.js.map +1 -0
  154. package/build/dex/morphex/config.d.ts +11 -0
  155. package/build/dex/morphex/config.js +43 -0
  156. package/build/dex/morphex/config.js.map +1 -0
  157. package/build/dex/morphex/morphex.d.ts +25 -0
  158. package/build/dex/morphex/morphex.js +19 -0
  159. package/build/dex/morphex/morphex.js.map +1 -0
  160. package/build/dex/my-test-dex/config.d.ts +4 -0
  161. package/build/dex/my-test-dex/config.js +15 -0
  162. package/build/dex/my-test-dex/config.js.map +1 -0
  163. package/build/dex/my-test-dex/my-test-dex-pool.d.ts +39 -0
  164. package/build/dex/my-test-dex/my-test-dex-pool.js +64 -0
  165. package/build/dex/my-test-dex/my-test-dex-pool.js.map +1 -0
  166. package/build/dex/my-test-dex/my-test-dex.d.ts +37 -0
  167. package/build/dex/my-test-dex/my-test-dex.js +126 -0
  168. package/build/dex/my-test-dex/my-test-dex.js.map +1 -0
  169. package/build/dex/my-test-dex/types.d.ts +6 -0
  170. package/build/dex/my-test-dex/types.js +3 -0
  171. package/build/dex/my-test-dex/types.js.map +1 -0
  172. package/build/dex/solidly/forks-override/fvm.d.ts +20 -0
  173. package/build/dex/solidly/forks-override/fvm.js +42 -0
  174. package/build/dex/solidly/forks-override/fvm.js.map +1 -0
  175. package/build/dex/swaap-v2/constants.d.ts +7 -3
  176. package/build/dex/swaap-v2/constants.js +8 -4
  177. package/build/dex/swaap-v2/constants.js.map +1 -1
  178. package/build/dex/swaap-v2/rate-fetcher.d.ts +2 -1
  179. package/build/dex/swaap-v2/rate-fetcher.js +25 -0
  180. package/build/dex/swaap-v2/rate-fetcher.js.map +1 -1
  181. package/build/dex/swaap-v2/swaap-v2.d.ts +4 -2
  182. package/build/dex/swaap-v2/swaap-v2.js +57 -20
  183. package/build/dex/swaap-v2/swaap-v2.js.map +1 -1
  184. package/build/dex/swaap-v2/types.d.ts +8 -0
  185. package/build/dex/swaap-v2/utils.d.ts +3 -3
  186. package/build/dex/swaap-v2/utils.js +6 -8
  187. package/build/dex/swaap-v2/utils.js.map +1 -1
  188. package/build/dex/swaap-v2/validators.d.ts +1 -0
  189. package/build/dex/swaap-v2/validators.js +6 -1
  190. package/build/dex/swaap-v2/validators.js.map +1 -1
  191. package/build/dex/wombat/config.d.ts +5 -0
  192. package/build/dex/wombat/config.js +50 -0
  193. package/build/dex/wombat/config.js.map +1 -0
  194. package/build/dex/wombat/types.d.ts +33 -0
  195. package/build/dex/wombat/types.js +3 -0
  196. package/build/dex/wombat/types.js.map +1 -0
  197. package/build/dex/wombat/utils.d.ts +9 -0
  198. package/build/dex/wombat/utils.js +66 -0
  199. package/build/dex/wombat/utils.js.map +1 -0
  200. package/build/dex/wombat/wombat-bmw.d.ts +40 -0
  201. package/build/dex/wombat/wombat-bmw.js +145 -0
  202. package/build/dex/wombat/wombat-bmw.js.map +1 -0
  203. package/build/dex/wombat/wombat-pool.d.ts +22 -0
  204. package/build/dex/wombat/wombat-pool.js +161 -0
  205. package/build/dex/wombat/wombat-pool.js.map +1 -0
  206. package/build/dex/wombat/wombat-quoter.d.ts +16 -0
  207. package/build/dex/wombat/wombat-quoter.js +176 -0
  208. package/build/dex/wombat/wombat-quoter.js.map +1 -0
  209. package/build/dex/wombat/wombat.d.ts +55 -0
  210. package/build/dex/wombat/wombat.js +292 -0
  211. package/build/dex/wombat/wombat.js.map +1 -0
  212. package/package.json +1 -1
  213. package/src/dex/dexalot/dexalot.ts +48 -22
  214. package/src/dex/swaap-v2/constants.ts +11 -3
  215. package/src/dex/swaap-v2/rate-fetcher.ts +51 -1
  216. package/src/dex/swaap-v2/swaap-v2.ts +97 -43
  217. package/src/dex/swaap-v2/types.ts +10 -0
  218. package/src/dex/swaap-v2/utils.ts +9 -16
  219. package/src/dex/swaap-v2/validators.ts +6 -0
  220. package/build/abi/algebra/AlgebraPool.abi.json +0 -727
  221. package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +0 -193
  222. package/build/dex/algebra/algebra-pool.js.map +0 -1
  223. package/build/dex/quickswap/camelot-v3.d.ts +0 -6
  224. package/build/dex/quickswap/camelot-v3.js +0 -19
  225. package/build/dex/quickswap/camelot-v3.js.map +0 -1
  226. package/build/dex/quickswap/zyberswap-v3.d.ts +0 -6
  227. package/build/dex/quickswap/zyberswap-v3.js +0 -19
  228. package/build/dex/quickswap/zyberswap-v3.js.map +0 -1
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WombatQuoter = void 0;
4
+ const utils_1 = require("./utils");
5
+ class WombatQuoter {
6
+ constructor(poolParams) {
7
+ this.ampFactor = poolParams.ampFactor;
8
+ this.haircutRate = poolParams.haircutRate;
9
+ this.startCovRatio = poolParams.startCovRatio;
10
+ this.endCovRatio = poolParams.endCovRatio;
11
+ }
12
+ getQuote(fromAsset, toAsset, fromAmount) {
13
+ if (fromAmount === 0n || fromAsset.paused) {
14
+ return 0n;
15
+ }
16
+ fromAmount = (0, utils_1.toWad)(fromAmount, BigInt(fromAsset.underlyingTokenDecimals));
17
+ try {
18
+ const { actualToAmount, haircut } = this._highCovRatioPoolQuoteFrom(fromAsset, toAsset, fromAmount);
19
+ const toCash = toAsset.cash - actualToAmount - haircut;
20
+ if ((0, utils_1.wdiv)(toCash, toAsset.liability) < utils_1.WAD / 100n) {
21
+ return 0n;
22
+ }
23
+ return (0, utils_1.fromWad)(actualToAmount, BigInt(toAsset.underlyingTokenDecimals));
24
+ }
25
+ catch (e) {
26
+ return 0n;
27
+ }
28
+ }
29
+ _highCovRatioPoolQuoteFrom(fromAsset, toAsset, fromAmount) {
30
+ let { actualToAmount, haircut } = this._quoteFrom(fromAsset, toAsset, fromAmount);
31
+ if (fromAmount > 0n) {
32
+ const fromCash = fromAsset.cash;
33
+ const fromLiability = fromAsset.liability;
34
+ const finalFromAssetCovRatio = (0, utils_1.wdiv)(fromCash + fromAmount, fromLiability);
35
+ if (finalFromAssetCovRatio > this.startCovRatio) {
36
+ // charge high cov ratio fee
37
+ const highCovRatioFee = (0, utils_1.wmul)(this._highCovRatioFee((0, utils_1.wdiv)(fromCash, fromLiability), finalFromAssetCovRatio), actualToAmount);
38
+ actualToAmount -= highCovRatioFee;
39
+ haircut += highCovRatioFee;
40
+ }
41
+ }
42
+ else {
43
+ // reverse quote
44
+ const toCash = toAsset.cash;
45
+ const toLiability = toAsset.liability;
46
+ const finalToAssetCovRatio = (0, utils_1.wdiv)(toCash + actualToAmount, toLiability);
47
+ if (finalToAssetCovRatio <= this.startCovRatio) {
48
+ // happy path: no high cov ratio fee is charged
49
+ return { actualToAmount, haircut };
50
+ }
51
+ else if ((0, utils_1.wdiv)(toCash, toLiability) >= this.endCovRatio) {
52
+ // the to-asset exceeds it's cov ratio limit, further swap to increase cov ratio is impossible
53
+ throw new Error('WOMBAT_COV_RATIO_LIMIT_EXCEEDED');
54
+ }
55
+ // reverse quote: cov ratio of the to-asset exceed endCovRatio. direct reverse quote is not supported
56
+ // we binary search for a upper bound
57
+ actualToAmount = this._findUpperBound(toAsset, fromAsset, -fromAmount);
58
+ const result = this._highCovRatioPoolQuoteFrom(toAsset, fromAsset, actualToAmount);
59
+ haircut = result.haircut;
60
+ }
61
+ return { actualToAmount, haircut };
62
+ }
63
+ _highCovRatioFee(initCovRatio, finalCovRatio) {
64
+ const startCovRatio = this.startCovRatio;
65
+ const endCovRatio = this.endCovRatio;
66
+ if (finalCovRatio > endCovRatio) {
67
+ // invalid swap
68
+ throw new Error('WOMBAT_COV_RATIO_LIMIT_EXCEEDED');
69
+ }
70
+ else if (finalCovRatio <= startCovRatio ||
71
+ finalCovRatio <= initCovRatio) {
72
+ return 0n;
73
+ }
74
+ // 1. Calculate the area of fee(r) = (r - startCovRatio) / (endCovRatio - startCovRatio)
75
+ // when r increase from initCovRatio to finalCovRatio
76
+ // 2. Then multiply it by (endCovRatio - startCovRatio) / (finalCovRatio - initCovRatio)
77
+ // to get the average fee over the range
78
+ const a = initCovRatio <= startCovRatio
79
+ ? 0n
80
+ : (initCovRatio - startCovRatio) * (initCovRatio - startCovRatio);
81
+ const b = (finalCovRatio - startCovRatio) * (finalCovRatio - startCovRatio);
82
+ return (0, utils_1.wdiv)((b - a) / (finalCovRatio - initCovRatio) / BigInt(2), endCovRatio - startCovRatio);
83
+ }
84
+ _quoteFrom(fromAsset, toAsset, fromAmount) {
85
+ if (fromAmount < 0n) {
86
+ fromAmount = (0, utils_1.wdiv)(fromAmount, utils_1.WAD - this.haircutRate);
87
+ }
88
+ let fromCash = fromAsset.cash;
89
+ const toCash = toAsset.cash;
90
+ let fromLiability = fromAsset.liability;
91
+ const toLiability = toAsset.liability;
92
+ const scaleFactor = this._quoteFactor(fromAsset, toAsset);
93
+ if (scaleFactor !== utils_1.WAD) {
94
+ fromCash = (fromCash * scaleFactor) / utils_1.WAD;
95
+ fromLiability = (fromLiability * scaleFactor) / utils_1.WAD;
96
+ fromAmount = (fromAmount * scaleFactor) / utils_1.WAD;
97
+ }
98
+ const idealToAmount = WombatQuoter.swapQuoteFunc(fromCash, toCash, fromLiability, toLiability, fromAmount, this.ampFactor);
99
+ if ((fromAmount > 0n && toCash < idealToAmount) ||
100
+ (fromAmount < 0n && fromCash < -fromAmount)) {
101
+ throw new Error('WOMBAT_CASH_NOT_ENOUGH');
102
+ }
103
+ let actualToAmount, haircut;
104
+ if (fromAmount > 0) {
105
+ haircut = (0, utils_1.wmul)(idealToAmount, this.haircutRate);
106
+ actualToAmount = idealToAmount - haircut;
107
+ }
108
+ else {
109
+ actualToAmount = idealToAmount;
110
+ haircut = (0, utils_1.wmul)(-fromAmount, this.haircutRate);
111
+ }
112
+ return { actualToAmount, haircut };
113
+ }
114
+ _findUpperBound(fromAsset, toAsset, toAmount) {
115
+ const decimals = BigInt(fromAsset.underlyingTokenDecimals);
116
+ const toWadFactor = (0, utils_1.toWad)(1n, decimals);
117
+ // the search value uses the same number of digits as the token
118
+ let high = (0, utils_1.fromWad)((0, utils_1.wmul)(fromAsset.liability, this.endCovRatio) - fromAsset.cash, decimals);
119
+ let low = 1n;
120
+ // verify `high` is a valid upper bound
121
+ const { actualToAmount: quote } = this._highCovRatioPoolQuoteFrom(fromAsset, toAsset, high * toWadFactor);
122
+ if (quote < toAmount) {
123
+ throw new Error('WOMBAT_COV_RATIO_LIMIT_EXCEEDED');
124
+ }
125
+ // Note: we might limit the maximum number of rounds if the request is always rejected by the RPC server
126
+ while (low < high) {
127
+ const mid = (low + high) / BigInt(2);
128
+ const { actualToAmount: quote } = this._highCovRatioPoolQuoteFrom(fromAsset, toAsset, mid * toWadFactor);
129
+ if (quote >= toAmount) {
130
+ high = mid;
131
+ }
132
+ else {
133
+ low = mid + 1n;
134
+ }
135
+ }
136
+ return high * toWadFactor;
137
+ }
138
+ _quoteFactor(fromAsset, toAsset) {
139
+ if (!fromAsset.relativePrice || !toAsset.relativePrice) {
140
+ return utils_1.WAD;
141
+ }
142
+ return (utils_1.WAD * fromAsset.relativePrice) / toAsset.relativePrice;
143
+ }
144
+ static solveQuad(b, c) {
145
+ return ((0, utils_1.sqrt)(b * b + c * 4n * utils_1.WAD, b) - b) / 2n;
146
+ }
147
+ static swapQuoteFunc(aX, aY, lX, lY, dX, a) {
148
+ if (lX == 0n || lY == 0n) {
149
+ // in case div of 0, CORE_UNDERFLOW
150
+ return 0n;
151
+ }
152
+ // int256 D = Ax + Ay - A.wmul((Lx * Lx) / Ax + (Ly * Ly) / Ay); // flattened _invariantFunc
153
+ const d = aX + aY - (0, utils_1.wmul)(a, (lX * lX) / aX + (lY * lY) / aY);
154
+ // int256 rx_ = (Ax + Dx).wdiv(Lx);
155
+ const rX = (0, utils_1.wdiv)(aX + dX, lX);
156
+ // int256 b = (Lx * (rx_ - A.wdiv(rx_))) / Ly - D.wdiv(Ly); // flattened _coefficientFunc
157
+ const b = (lX * (rX - (0, utils_1.wdiv)(a, rX))) / lY - (0, utils_1.wdiv)(d, lY);
158
+ // int256 ry_ = _solveQuad(b, A);
159
+ const rY = WombatQuoter.solveQuad(b, a);
160
+ // int256 Dy = Ly.wmul(ry_) - Ay;
161
+ const dY = (0, utils_1.wmul)(lY, rY) - aY;
162
+ // if (Dy < 0) {
163
+ // quote = uint256(-Dy);
164
+ // } else {
165
+ // quote = uint256(Dy);
166
+ // }
167
+ if (dY < 0n) {
168
+ return -dY;
169
+ }
170
+ else {
171
+ return dY;
172
+ }
173
+ }
174
+ }
175
+ exports.WombatQuoter = WombatQuoter;
176
+ //# sourceMappingURL=wombat-quoter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wombat-quoter.js","sourceRoot":"","sources":["../../../src/dex/wombat/wombat-quoter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { AsyncOrSync, DeepReadonly } from 'ts-essentials';
2
+ import { Interface } from '@ethersproject/abi';
3
+ import { SwapSide } from '@paraswap/core';
4
+ import { AdapterExchangeParam, Address, ExchangePrices, Logger, PoolLiquidity, PoolPrices, SimpleExchangeParam, Token } from '../../types';
5
+ import { Network } from '../../constants';
6
+ import { IDex } from '../idex';
7
+ import { IDexHelper } from '../../dex-helper';
8
+ import { DexParams, PoolState, WombatData } from './types';
9
+ import { SimpleExchange } from '../simple-exchange';
10
+ import { WombatBmw } from './wombat-bmw';
11
+ import { WombatPool } from './wombat-pool';
12
+ export declare class Wombat extends SimpleExchange implements IDex<WombatData> {
13
+ readonly network: Network;
14
+ readonly dexKey: string;
15
+ readonly dexHelper: IDexHelper;
16
+ protected adapters: import("../../types").AdapterMappings;
17
+ static readonly erc20Interface: Interface;
18
+ static readonly poolInterface: Interface;
19
+ static readonly assetInterface: Interface;
20
+ protected config: DexParams;
21
+ protected poolLiquidityUSD?: {
22
+ [poolAddress: string]: number;
23
+ };
24
+ bmw: WombatBmw;
25
+ pools: {
26
+ [poolAddress: string]: WombatPool;
27
+ };
28
+ readonly hasConstantPriceLargeAmounts = false;
29
+ readonly needWrapNative = true;
30
+ readonly isFeeOnTransferSupported = false;
31
+ static dexKeysWithNetwork: {
32
+ key: string;
33
+ networks: Network[];
34
+ }[];
35
+ logger: Logger;
36
+ constructor(network: Network, dexKey: string, dexHelper: IDexHelper, adapters?: import("../../types").AdapterMappings);
37
+ init(blockNumber: number): Promise<void>;
38
+ initializePricing(blockNumber: number): Promise<void>;
39
+ onAssetAdded: (pool: Address, asset2TokenMap: Map<Address, Address>, blockNumber: number) => void;
40
+ getAdapters(side: SwapSide): {
41
+ name: string;
42
+ index: number;
43
+ }[] | null;
44
+ getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
45
+ protected getPoolIdentifier(poolAddress: Address): string;
46
+ getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<WombatData>>;
47
+ protected computePrices(srcTokenAddress: Address, destTokenAddress: Address, amounts: bigint[], side: SwapSide, state: DeepReadonly<PoolState>): bigint[];
48
+ protected findPools(srcTokenAddress: Address, destTokenAddress: Address, blockNumber: number, liquidityThresholdInUSD?: number): Promise<Address[]>;
49
+ getCalldataGasCost(poolPrices: PoolPrices<WombatData>): number | number[];
50
+ getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: WombatData, side: SwapSide): AdapterExchangeParam;
51
+ getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: WombatData, side: SwapSide): Promise<SimpleExchangeParam>;
52
+ updatePoolState(): Promise<void>;
53
+ getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
54
+ releaseResources(): AsyncOrSync<void>;
55
+ }
@@ -0,0 +1,292 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.Wombat = void 0;
30
+ const abi_1 = require("@ethersproject/abi");
31
+ const core_1 = require("@paraswap/core");
32
+ const CALLDATA_GAS_COST = __importStar(require("../../calldata-gas-cost"));
33
+ const utils_1 = require("../../utils");
34
+ const simple_exchange_1 = require("../simple-exchange");
35
+ const config_1 = require("./config");
36
+ const pool_json_1 = __importDefault(require("../../abi/wombat/pool.json"));
37
+ const asset_json_1 = __importDefault(require("../../abi/wombat/asset.json"));
38
+ const erc20_json_1 = __importDefault(require("../../abi/erc20.json"));
39
+ const wombat_quoter_1 = require("./wombat-quoter");
40
+ const wombat_bmw_1 = require("./wombat-bmw");
41
+ const utils_2 = require("./utils");
42
+ const wombat_pool_1 = require("./wombat-pool");
43
+ class Wombat extends simple_exchange_1.SimpleExchange {
44
+ constructor(network, dexKey, dexHelper, adapters = config_1.Adapters[network] || {}) {
45
+ super(dexHelper, dexKey);
46
+ this.network = network;
47
+ this.dexKey = dexKey;
48
+ this.dexHelper = dexHelper;
49
+ this.adapters = adapters;
50
+ this.pools = {};
51
+ this.hasConstantPriceLargeAmounts = false;
52
+ this.needWrapNative = true;
53
+ this.isFeeOnTransferSupported = false;
54
+ this.onAssetAdded = (pool, asset2TokenMap, blockNumber) => {
55
+ if (!this.pools[pool]) {
56
+ this.pools[pool] = new wombat_pool_1.WombatPool(this.dexKey, this.getPoolIdentifier(pool), this.dexHelper, pool, asset2TokenMap);
57
+ }
58
+ else {
59
+ this.pools[pool].addAssets(asset2TokenMap);
60
+ }
61
+ };
62
+ this.logger = dexHelper.getLogger(dexKey);
63
+ this.config = config_1.WombatConfig[dexKey][network];
64
+ this.bmw = new wombat_bmw_1.WombatBmw(dexKey, this.config.bmwAddress, network, dexHelper, this.logger, this.config.bmwAddress, this.onAssetAdded.bind(this));
65
+ }
66
+ async init(blockNumber) {
67
+ if (!this.bmw.isInitialized) {
68
+ await this.bmw.initialize(blockNumber);
69
+ }
70
+ }
71
+ // Initialize pricing is called once in the start of
72
+ // pricing service. It is intended to setup the integration
73
+ // for pricing requests. It is optional for a DEX to
74
+ // implement this function
75
+ async initializePricing(blockNumber) {
76
+ await this.init(blockNumber);
77
+ const bmwState = this.bmw.getState(blockNumber);
78
+ if (!bmwState) {
79
+ throw new Error('initializePricing: bmwState still null after init');
80
+ }
81
+ }
82
+ // Returns the list of contract adapters (name and index)
83
+ // for a buy/sell. Return null if there are no adapters.
84
+ getAdapters(side) {
85
+ return this.adapters[side] ? this.adapters[side] : null;
86
+ }
87
+ // Returns list of pool identifiers that can be used
88
+ // for a given swap. poolIdentifiers must be unique
89
+ // across DEXes. It is recommended to use
90
+ // ${dexKey}_${poolAddress} as a poolIdentifier
91
+ async getPoolIdentifiers(srcToken, destToken, side, blockNumber) {
92
+ await this.updatePoolState();
93
+ return (await this.findPools(srcToken.address.toLowerCase(), destToken.address.toLowerCase(), blockNumber, config_1.LIQUIDITY_THRESHOLD_IN_USD)).map(p => this.getPoolIdentifier(p));
94
+ }
95
+ getPoolIdentifier(poolAddress) {
96
+ return `${this.dexKey}_${poolAddress}`;
97
+ }
98
+ // Returns pool prices for amounts.
99
+ // If limitPools is defined only pools in limitPools
100
+ // should be used. If limitPools is undefined then
101
+ // any pools can be used.
102
+ async getPricesVolume(srcToken, destToken, amounts, side, blockNumber, limitPools) {
103
+ if (!this.pools) {
104
+ this.logger.error(`Missing pools for ${this.dexKey} in getPricesVolume`);
105
+ return null;
106
+ }
107
+ const srcTokenAddress = srcToken.address.toLowerCase();
108
+ const destTokenAddress = destToken.address.toLowerCase();
109
+ if (srcTokenAddress === destTokenAddress)
110
+ return null;
111
+ const pools = (await this.findPools(srcTokenAddress, destTokenAddress, blockNumber)).filter(poolAddress => !limitPools || limitPools.includes(this.getPoolIdentifier(poolAddress)));
112
+ const promises = [];
113
+ for (const poolAddress of pools) {
114
+ let state = await this.pools[poolAddress].getState(blockNumber);
115
+ if (!state) {
116
+ this.logger.warn(`State of pool ${poolAddress} is null in getPricesVolume, skipping...`);
117
+ continue;
118
+ }
119
+ const [unit, ...prices] = this.computePrices(srcTokenAddress, destTokenAddress, [(0, utils_1.getBigIntPow)(srcToken.decimals), ...amounts], side, state.value);
120
+ promises.push({
121
+ prices,
122
+ unit,
123
+ data: {
124
+ exchange: poolAddress,
125
+ },
126
+ poolAddresses: [poolAddress],
127
+ exchange: this.dexKey,
128
+ /** @todo specify gas cost */
129
+ gasCost: 260 * 1000,
130
+ poolIdentifier: this.getPoolIdentifier(poolAddress),
131
+ });
132
+ }
133
+ return await Promise.all(promises);
134
+ }
135
+ // take PoolState to compute price
136
+ computePrices(srcTokenAddress, destTokenAddress, amounts, side, state) {
137
+ const srcAsset = state.asset[srcTokenAddress];
138
+ const destAsset = state.asset[destTokenAddress];
139
+ const quoter = new wombat_quoter_1.WombatQuoter(state.params);
140
+ return amounts.map(fromAmount => {
141
+ return side === core_1.SwapSide.SELL
142
+ ? quoter.getQuote(srcAsset, destAsset, fromAmount)
143
+ : quoter.getQuote(destAsset, srcAsset, -fromAmount);
144
+ });
145
+ }
146
+ async findPools(srcTokenAddress, destTokenAddress, blockNumber, liquidityThresholdInUSD = 0) {
147
+ const pools = [];
148
+ for (const [poolAddress, pool] of Object.entries(this.pools)) {
149
+ let stateOj = await pool.getState(blockNumber);
150
+ if (!stateOj) {
151
+ this.logger.warn(`State of pool ${poolAddress} is null in findPools, skipping...`);
152
+ continue;
153
+ }
154
+ const state = stateOj.value;
155
+ if (state &&
156
+ !state.params.paused &&
157
+ state.asset[srcTokenAddress] &&
158
+ state.asset[destTokenAddress] &&
159
+ (liquidityThresholdInUSD === 0 ||
160
+ (this.poolLiquidityUSD[poolAddress] &&
161
+ this.poolLiquidityUSD[poolAddress] > liquidityThresholdInUSD))) {
162
+ pools.push(poolAddress);
163
+ }
164
+ }
165
+ return pools;
166
+ }
167
+ // Returns estimated gas cost of calldata for this DEX in multiSwap
168
+ getCalldataGasCost(poolPrices) {
169
+ // TODO: update if there is any payload in getAdapterParam
170
+ return CALLDATA_GAS_COST.DEX_NO_PAYLOAD;
171
+ }
172
+ // Encode params required by the exchange adapter
173
+ // Used for multiSwap, buy & megaSwap
174
+ // Hint: abiCoder.encodeParameter() could be useful
175
+ getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
176
+ // TODO: complete me!
177
+ const { exchange } = data;
178
+ // Encode here the payload for adapter
179
+ const payload = '0x';
180
+ return {
181
+ targetExchange: exchange,
182
+ payload,
183
+ networkFee: '0',
184
+ };
185
+ }
186
+ // Encode call data used by simpleSwap like routers
187
+ // Used for simpleSwap & simpleBuy
188
+ // Hint: this.buildSimpleParamWithoutWETHConversion
189
+ // could be useful
190
+ async getSimpleParam(srcToken, destToken, srcAmount, destAmount, data, side) {
191
+ const { exchange } = data;
192
+ // Encode here the transaction arguments
193
+ const swapData = Wombat.poolInterface.encodeFunctionData('swap', [
194
+ srcToken,
195
+ destToken,
196
+ srcAmount,
197
+ 1 /** @todo assume slippage tolorence is 2% and set the minimum receive accordingly */,
198
+ this.augustusAddress,
199
+ (0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(),
200
+ ]);
201
+ return this.buildSimpleParamWithoutWETHConversion(srcToken, srcAmount, destToken, destAmount, swapData, exchange);
202
+ }
203
+ // This is called once before getTopPoolsForToken is
204
+ // called for multiple tokens. This can be helpful to
205
+ // update common state required for calculating
206
+ // getTopPoolsForToken. For example, poolLiquidityUSD.
207
+ async updatePoolState() {
208
+ const blockNumber = await this.dexHelper.provider.getBlockNumber();
209
+ await this.init(blockNumber);
210
+ const bmwState = this.bmw.getState(blockNumber);
211
+ if (!bmwState) {
212
+ throw new Error('updatePoolState: bmwState still null after init');
213
+ }
214
+ // All tokens are USD stablecoins so to estimate liquidity can just add
215
+ // the cash balances of all the tokens
216
+ const poolLiquidityUSD = {};
217
+ const usdPromises = [];
218
+ const poolStates = {};
219
+ const poolStateObjs = await Promise.all(Object.values(this.pools).map(pool => pool.getState()));
220
+ for (const [poolAddress, pool] of Object.entries(this.pools)) {
221
+ const index = Object.keys(this.pools).indexOf(poolAddress);
222
+ let state = poolStateObjs[index];
223
+ if (!state) {
224
+ this.logger.warn(`State of ${poolAddress} is null in updatePoolState, skipping...`);
225
+ continue;
226
+ }
227
+ poolStates[poolAddress] = state.value;
228
+ for (const [tokenAddress, assetState] of Object.entries(state.value.asset)) {
229
+ usdPromises.push(this.dexHelper.getTokenUSDPrice({
230
+ address: tokenAddress,
231
+ decimals: assetState.underlyingTokenDecimals,
232
+ }, (0, utils_2.fromWad)(assetState.cash, BigInt(assetState.underlyingTokenDecimals))));
233
+ }
234
+ }
235
+ const usdValues = await Promise.all(usdPromises);
236
+ for (const [poolAddress, poolState] of Object.entries(poolStates)) {
237
+ poolLiquidityUSD[poolAddress] = 0;
238
+ for (let i = 0; i < poolState.underlyingAddresses.length; i++) {
239
+ poolLiquidityUSD[poolAddress] += usdValues[i];
240
+ }
241
+ }
242
+ this.poolLiquidityUSD = poolLiquidityUSD;
243
+ }
244
+ // Returns list of top pools based on liquidity. Max
245
+ // limit number pools should be returned.
246
+ async getTopPoolsForToken(tokenAddress, limit) {
247
+ if (!this.poolLiquidityUSD)
248
+ await this.updatePoolState();
249
+ tokenAddress = tokenAddress.toLowerCase();
250
+ const pools = [];
251
+ const poolStates = {};
252
+ for (const [poolAddress, eventPool] of Object.entries(this.pools)) {
253
+ let state = await eventPool.getState();
254
+ if (!state) {
255
+ this.logger.warn(`State of ${poolAddress} is null in getTopPoolsForToken, skipping...`);
256
+ continue;
257
+ }
258
+ if (state.value.underlyingAddresses.includes(tokenAddress) &&
259
+ this.poolLiquidityUSD[poolAddress]) {
260
+ poolStates[poolAddress] = state.value;
261
+ pools.push(poolAddress);
262
+ }
263
+ }
264
+ // sort by liquidity
265
+ pools.sort((a, b) => this.poolLiquidityUSD[b] - this.poolLiquidityUSD[a]);
266
+ return pools.slice(0, limit).map(poolAddress => ({
267
+ exchange: this.dexKey,
268
+ address: poolAddress,
269
+ // other tokens in the same pool
270
+ connectorTokens: poolStates[poolAddress].underlyingAddresses
271
+ .filter(t => t !== tokenAddress)
272
+ .map(t => ({
273
+ decimals: poolStates[poolAddress].asset[t].underlyingTokenDecimals,
274
+ address: t,
275
+ })),
276
+ liquidityUSD: this.poolLiquidityUSD[poolAddress],
277
+ }));
278
+ }
279
+ // This is optional function in case if your implementation has acquired any resources
280
+ // you need to release for graceful shutdown. For example, it may be any interval timer
281
+ releaseResources() {
282
+ // TODO: complete me!
283
+ }
284
+ }
285
+ exports.Wombat = Wombat;
286
+ // export class Wombat implements IDex<WombatData> {
287
+ // contract interfaces
288
+ Wombat.erc20Interface = new abi_1.Interface(erc20_json_1.default);
289
+ Wombat.poolInterface = new abi_1.Interface(pool_json_1.default);
290
+ Wombat.assetInterface = new abi_1.Interface(asset_json_1.default);
291
+ Wombat.dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(config_1.WombatConfig);
292
+ //# sourceMappingURL=wombat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wombat.js","sourceRoot":"","sources":["../../../src/dex/wombat/wombat.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraswap/dex-lib",
3
- "version": "2.42.11",
3
+ "version": "2.42.13",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",