@paraswap/dex-lib 2.48.2 → 2.48.4-etherfi.0

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 (232) hide show
  1. package/build/abi/algebra/AlgebraPool.abi.json +724 -724
  2. package/build/abi/etherfi/eETHPool.json +9 -0
  3. package/build/abi/etherfi/weETH.json +20 -0
  4. package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +191 -191
  5. package/build/abi/wombat/pool.json +1289 -0
  6. package/build/dex/algebra/algebra-pool.d.ts +37 -105
  7. package/build/dex/algebra/algebra-pool.js +322 -434
  8. package/build/dex/etherfi.d.ts +26 -0
  9. package/build/dex/etherfi.js +82 -0
  10. package/build/dex/etherfi.js.map +1 -0
  11. package/build/dex/index.js +2 -0
  12. package/build/dex/index.js.map +1 -1
  13. package/build/dex/solidly-v3/contract-math/Tick.js.map +1 -1
  14. package/build/dex/solidly-v3/contract-math/uniswap-v3-math.js +4 -4
  15. package/build/dex/solidly-v3/contract-math/uniswap-v3-math.js.map +1 -1
  16. package/build/dex/uniswap-v2/rebase-tokens.json +7 -0
  17. package/build/dex/uniswap-v3/config.js +20 -1
  18. package/build/dex/uniswap-v3/config.js.map +1 -1
  19. package/build/dex/uniswap-v3/uniswap-v3.js +1 -0
  20. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  21. package/build/dex-helper/Cache.d.ts +31 -0
  22. package/build/dex-helper/Cache.js +106 -0
  23. package/build/dex-helper/Cache.js.map +1 -0
  24. package/build/dex-helper/RedisWrapper.d.ts +37 -0
  25. package/build/dex-helper/RedisWrapper.js +165 -0
  26. package/build/dex-helper/RedisWrapper.js.map +1 -0
  27. package/package.json +1 -1
  28. package/src/abi/etherfi/eETHPool.json +9 -0
  29. package/src/abi/etherfi/weETH.json +20 -0
  30. package/src/dex/etherfi.ts +144 -0
  31. package/src/dex/index.ts +2 -0
  32. package/src/dex/solidly-v3/contract-math/Tick.ts +1 -4
  33. package/src/dex/solidly-v3/contract-math/uniswap-v3-math.ts +6 -14
  34. package/src/dex/solidly-v3/solidly-v3-events.test.ts +9 -7
  35. package/src/dex/uniswap-v3/config.ts +22 -1
  36. package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +25 -0
  37. package/src/dex/uniswap-v3/uniswap-v3-integration.test.ts +147 -0
  38. package/src/dex/uniswap-v3/uniswap-v3.ts +1 -0
  39. package/.idea/aws.xml +0 -17
  40. package/.idea/codeStyles/Project.xml +0 -19
  41. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  42. package/.idea/misc.xml +0 -6
  43. package/.idea/modules.xml +0 -8
  44. package/.idea/paraswap-dex-lib.iml +0 -9
  45. package/.idea/prettier.xml +0 -7
  46. package/.idea/vcs.xml +0 -6
  47. package/build/abi/AugustusV6.abi.json +0 -395
  48. package/build/abi/curve-v1/StableSwapFRXETH.json +0 -889
  49. package/build/abi/curve-v1/StableSwapWBETH.json +0 -1223
  50. package/build/abi/sushiswap-v3/QuoterV2.json +0 -267
  51. package/build/abi/sushiswap-v3/RouterProcessor3.json +0 -289
  52. package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3QuoterV2.abi.json +0 -285
  53. package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3Router.abi.json +0 -583
  54. package/build/abi/wBETH.json +0 -1527
  55. package/build/abi/woo-fi/WooFeeManager.abi.json +0 -318
  56. package/build/abi/woo-fi/WooPP.abi.json +0 -548
  57. package/build/abi/woo-fi/Wooracle.abi.json +0 -260
  58. package/build/dex/aave-v3/tokens/arbitrum.json +0 -50
  59. package/build/dex/aave-v3/tokens/avalanche.json +0 -74
  60. package/build/dex/aave-v3/tokens/fantom.json +0 -62
  61. package/build/dex/aave-v3/tokens/optimism.json +0 -50
  62. package/build/dex/aave-v3/tokens/polygon.json +0 -116
  63. package/build/dex/balancer-v2/Gyro3Pool.d.ts +0 -43
  64. package/build/dex/balancer-v2/Gyro3Pool.js +0 -160
  65. package/build/dex/balancer-v2/Gyro3Pool.js.map +0 -1
  66. package/build/dex/balancer-v2/LinearMath.d.ts +0 -88
  67. package/build/dex/balancer-v2/LinearMath.js +0 -285
  68. package/build/dex/balancer-v2/LinearMath.js.map +0 -1
  69. package/build/dex/balancer-v2/LinearPool.d.ts +0 -81
  70. package/build/dex/balancer-v2/LinearPool.js +0 -444
  71. package/build/dex/balancer-v2/LinearPool.js.map +0 -1
  72. package/build/dex/balancer-v2/PhantomStablePool.d.ts +0 -90
  73. package/build/dex/balancer-v2/PhantomStablePool.js +0 -418
  74. package/build/dex/balancer-v2/PhantomStablePool.js.map +0 -1
  75. package/build/dex/balancer-v2/StableMath.d.ts +0 -9
  76. package/build/dex/balancer-v2/StableMath.js +0 -272
  77. package/build/dex/balancer-v2/StableMath.js.map +0 -1
  78. package/build/dex/balancer-v2/balancer-v2-pool.d.ts +0 -140
  79. package/build/dex/balancer-v2/balancer-v2-pool.js +0 -647
  80. package/build/dex/balancer-v2/balancer-v2-pool.js.map +0 -1
  81. package/build/dex/curve-v1/pools/frxETHpool.d.ts +0 -7
  82. package/build/dex/curve-v1/pools/frxETHpool.js +0 -27
  83. package/build/dex/curve-v1/pools/frxETHpool.js.map +0 -1
  84. package/build/dex/curve-v1/pools/wbETHpool.d.ts +0 -29
  85. package/build/dex/curve-v1/pools/wbETHpool.js +0 -408
  86. package/build/dex/curve-v1/pools/wbETHpool.js.map +0 -1
  87. package/build/dex/lighter-v1/abi/erc20.json +0 -222
  88. package/build/dex/lighter-v1/abi/factory.json +0 -291
  89. package/build/dex/lighter-v1/abi/order_book.json +0 -594
  90. package/build/dex/lighter-v1/abi/order_book_helper.json +0 -176
  91. package/build/dex/lighter-v1/abi/router.json +0 -488
  92. package/build/dex/lighter-v1/config.d.ts +0 -4
  93. package/build/dex/lighter-v1/config.js +0 -17
  94. package/build/dex/lighter-v1/config.js.map +0 -1
  95. package/build/dex/lighter-v1/constants.d.ts +0 -2
  96. package/build/dex/lighter-v1/constants.js +0 -13
  97. package/build/dex/lighter-v1/constants.js.map +0 -1
  98. package/build/dex/lighter-v1/lighter-v1-pool.d.ts +0 -57
  99. package/build/dex/lighter-v1/lighter-v1-pool.js +0 -310
  100. package/build/dex/lighter-v1/lighter-v1-pool.js.map +0 -1
  101. package/build/dex/lighter-v1/lighter-v1.d.ts +0 -45
  102. package/build/dex/lighter-v1/lighter-v1.js +0 -331
  103. package/build/dex/lighter-v1/lighter-v1.js.map +0 -1
  104. package/build/dex/lighter-v1/types.d.ts +0 -40
  105. package/build/dex/lighter-v1/types.js +0 -3
  106. package/build/dex/lighter-v1/types.js.map +0 -1
  107. package/build/dex/pancakeswap-v3/types.d.ts +0 -14
  108. package/build/dex/pancakeswap-v3/types.js +0 -3
  109. package/build/dex/pancakeswap-v3/types.js.map +0 -1
  110. package/build/dex/quickswap-v3.d.ts +0 -21
  111. package/build/dex/quickswap-v3.js +0 -40
  112. package/build/dex/quickswap-v3.js.map +0 -1
  113. package/build/dex/ramses-v2/config.d.ts +0 -4
  114. package/build/dex/ramses-v2/config.js +0 -28
  115. package/build/dex/ramses-v2/config.js.map +0 -1
  116. package/build/dex/ramses-v2/constants.d.ts +0 -28
  117. package/build/dex/ramses-v2/constants.js +0 -35
  118. package/build/dex/ramses-v2/constants.js.map +0 -1
  119. package/build/dex/ramses-v2/contract-math/BitMath.d.ts +0 -4
  120. package/build/dex/ramses-v2/contract-math/BitMath.js +0 -93
  121. package/build/dex/ramses-v2/contract-math/BitMath.js.map +0 -1
  122. package/build/dex/ramses-v2/contract-math/FixedPoint128.d.ts +0 -3
  123. package/build/dex/ramses-v2/contract-math/FixedPoint128.js +0 -8
  124. package/build/dex/ramses-v2/contract-math/FixedPoint128.js.map +0 -1
  125. package/build/dex/ramses-v2/contract-math/FixedPoint96.d.ts +0 -4
  126. package/build/dex/ramses-v2/contract-math/FixedPoint96.js +0 -9
  127. package/build/dex/ramses-v2/contract-math/FixedPoint96.js.map +0 -1
  128. package/build/dex/ramses-v2/contract-math/FullMath.d.ts +0 -4
  129. package/build/dex/ramses-v2/contract-math/FullMath.js +0 -19
  130. package/build/dex/ramses-v2/contract-math/FullMath.js.map +0 -1
  131. package/build/dex/ramses-v2/contract-math/LiquidityMath.d.ts +0 -3
  132. package/build/dex/ramses-v2/contract-math/LiquidityMath.js +0 -22
  133. package/build/dex/ramses-v2/contract-math/LiquidityMath.js.map +0 -1
  134. package/build/dex/ramses-v2/contract-math/Oracle.d.ts +0 -10
  135. package/build/dex/ramses-v2/contract-math/Oracle.js +0 -133
  136. package/build/dex/ramses-v2/contract-math/Oracle.js.map +0 -1
  137. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.d.ts +0 -10
  138. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js +0 -91
  139. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js.map +0 -1
  140. package/build/dex/ramses-v2/contract-math/SwapMath.d.ts +0 -8
  141. package/build/dex/ramses-v2/contract-math/SwapMath.js +0 -70
  142. package/build/dex/ramses-v2/contract-math/SwapMath.js.map +0 -1
  143. package/build/dex/ramses-v2/contract-math/Tick.d.ts +0 -7
  144. package/build/dex/ramses-v2/contract-math/Tick.js +0 -45
  145. package/build/dex/ramses-v2/contract-math/Tick.js.map +0 -1
  146. package/build/dex/ramses-v2/contract-math/TickBitMap.d.ts +0 -8
  147. package/build/dex/ramses-v2/contract-math/TickBitMap.js +0 -87
  148. package/build/dex/ramses-v2/contract-math/TickBitMap.js.map +0 -1
  149. package/build/dex/ramses-v2/contract-math/TickMath.d.ts +0 -8
  150. package/build/dex/ramses-v2/contract-math/TickMath.js +0 -162
  151. package/build/dex/ramses-v2/contract-math/TickMath.js.map +0 -1
  152. package/build/dex/ramses-v2/contract-math/UnsafeMath.d.ts +0 -3
  153. package/build/dex/ramses-v2/contract-math/UnsafeMath.js +0 -10
  154. package/build/dex/ramses-v2/contract-math/UnsafeMath.js.map +0 -1
  155. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.d.ts +0 -18
  156. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js +0 -392
  157. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js.map +0 -1
  158. package/build/dex/ramses-v2/contract-math/utils.d.ts +0 -3
  159. package/build/dex/ramses-v2/contract-math/utils.js +0 -16
  160. package/build/dex/ramses-v2/contract-math/utils.js.map +0 -1
  161. package/build/dex/ramses-v2/ramses-v2-pool.d.ts +0 -42
  162. package/build/dex/ramses-v2/ramses-v2-pool.js +0 -307
  163. package/build/dex/ramses-v2/ramses-v2-pool.js.map +0 -1
  164. package/build/dex/ramses-v2/ramses-v2.d.ts +0 -61
  165. package/build/dex/ramses-v2/ramses-v2.js +0 -690
  166. package/build/dex/ramses-v2/ramses-v2.js.map +0 -1
  167. package/build/dex/ramses-v2/types.d.ts +0 -154
  168. package/build/dex/ramses-v2/types.js +0 -9
  169. package/build/dex/ramses-v2/types.js.map +0 -1
  170. package/build/dex/ramses-v2/utils.d.ts +0 -6
  171. package/build/dex/ramses-v2/utils.js +0 -71
  172. package/build/dex/ramses-v2/utils.js.map +0 -1
  173. package/build/dex/solidly/forks-override/fvm.d.ts +0 -20
  174. package/build/dex/solidly/forks-override/fvm.js +0 -42
  175. package/build/dex/solidly/forks-override/fvm.js.map +0 -1
  176. package/build/dex/sushiswap-v3/config.d.ts +0 -4
  177. package/build/dex/sushiswap-v3/config.js +0 -132
  178. package/build/dex/sushiswap-v3/config.js.map +0 -1
  179. package/build/dex/sushiswap-v3/constants.d.ts +0 -4
  180. package/build/dex/sushiswap-v3/constants.js +0 -32
  181. package/build/dex/sushiswap-v3/constants.js.map +0 -1
  182. package/build/dex/sushiswap-v3/sushiswap-v3-original.d.ts +0 -56
  183. package/build/dex/sushiswap-v3/sushiswap-v3-original.js +0 -598
  184. package/build/dex/sushiswap-v3/sushiswap-v3-original.js.map +0 -1
  185. package/build/dex/sushiswap-v3/sushiswap-v3-pool.d.ts +0 -1
  186. package/build/dex/sushiswap-v3/sushiswap-v3-pool.js +0 -6
  187. package/build/dex/sushiswap-v3/sushiswap-v3-pool.js.map +0 -1
  188. package/build/dex/sushiswap-v3/sushiswap-v3.d.ts +0 -21
  189. package/build/dex/sushiswap-v3/sushiswap-v3.js +0 -58
  190. package/build/dex/sushiswap-v3/sushiswap-v3.js.map +0 -1
  191. package/build/dex/sushiswap-v3/token.d.ts +0 -6
  192. package/build/dex/sushiswap-v3/token.js +0 -23
  193. package/build/dex/sushiswap-v3/token.js.map +0 -1
  194. package/build/dex/sushiswap-v3/types.d.ts +0 -15
  195. package/build/dex/sushiswap-v3/types.js +0 -18
  196. package/build/dex/sushiswap-v3/types.js.map +0 -1
  197. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.d.ts +0 -12
  198. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js +0 -23
  199. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js.map +0 -1
  200. package/build/dex/woo-fi/config.d.ts +0 -4
  201. package/build/dex/woo-fi/config.js +0 -141
  202. package/build/dex/woo-fi/config.js.map +0 -1
  203. package/build/dex/woo-fi/constants.d.ts +0 -5
  204. package/build/dex/woo-fi/constants.js +0 -20
  205. package/build/dex/woo-fi/constants.js.map +0 -1
  206. package/build/dex/woo-fi/types.d.ts +0 -48
  207. package/build/dex/woo-fi/types.js +0 -3
  208. package/build/dex/woo-fi/types.js.map +0 -1
  209. package/build/dex/woo-fi/woo-fi-decimal-math.d.ts +0 -14
  210. package/build/dex/woo-fi/woo-fi-decimal-math.js +0 -42
  211. package/build/dex/woo-fi/woo-fi-decimal-math.js.map +0 -1
  212. package/build/dex/woo-fi/woo-fi-math.d.ts +0 -31
  213. package/build/dex/woo-fi/woo-fi-math.js +0 -300
  214. package/build/dex/woo-fi/woo-fi-math.js.map +0 -1
  215. package/build/dex/woo-fi/woo-fi.d.ts +0 -65
  216. package/build/dex/woo-fi/woo-fi.js +0 -480
  217. package/build/dex/woo-fi/woo-fi.js.map +0 -1
  218. package/build/executor/Executor01BytecodeBuilder.d.ts +0 -77
  219. package/build/executor/Executor01BytecodeBuilder.js +0 -359
  220. package/build/executor/Executor01BytecodeBuilder.js.map +0 -1
  221. package/build/executor/Executor02BytecodeBuilder.d.ts +0 -12
  222. package/build/executor/Executor02BytecodeBuilder.js +0 -14
  223. package/build/executor/Executor02BytecodeBuilder.js.map +0 -1
  224. package/build/executor/ExecutorDetector.d.ts +0 -28
  225. package/build/executor/ExecutorDetector.js +0 -89
  226. package/build/executor/ExecutorDetector.js.map +0 -1
  227. package/build/executor/IExecutorBytecodeBuilder.d.ts +0 -6
  228. package/build/executor/IExecutorBytecodeBuilder.js +0 -3
  229. package/build/executor/IExecutorBytecodeBuilder.js.map +0 -1
  230. package/build/generic-swap-transaction-builder.d.ts +0 -39
  231. package/build/generic-swap-transaction-builder.js +0 -156
  232. package/build/generic-swap-transaction-builder.js.map +0 -1
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DexlibCache = void 0;
7
+ const node_cache_1 = __importDefault(require("node-cache"));
8
+ const RedisWrapper_1 = __importDefault(require("./RedisWrapper"));
9
+ class DexlibCache {
10
+ constructor() {
11
+ this._constructCacheKey = (dexKey, network, cacheKey) => `${dexKey}_${network}_${cacheKey}`;
12
+ this.localCache = new node_cache_1.default();
13
+ }
14
+ get(dexKey, network, cacheKey) {
15
+ const key = this._constructCacheKey(dexKey, network, cacheKey);
16
+ return RedisWrapper_1.default.get(key);
17
+ }
18
+ del(dexKey, network, cacheKey) {
19
+ const key = this._constructCacheKey(dexKey, network, cacheKey);
20
+ return RedisWrapper_1.default.del(key);
21
+ }
22
+ rawget(key) {
23
+ return RedisWrapper_1.default.get(key);
24
+ }
25
+ async rawset(key, value, ttl) {
26
+ return RedisWrapper_1.default.setex(key, ttl, value);
27
+ }
28
+ rawdel(key) {
29
+ return RedisWrapper_1.default.del(key).then(() => { });
30
+ }
31
+ setex(dexKey, network, cacheKey, ttlSeconds, value) {
32
+ const key = this._constructCacheKey(dexKey, network, cacheKey);
33
+ return RedisWrapper_1.default.setex(key, ttlSeconds, value).then(() => { });
34
+ }
35
+ async getAndCacheLocally(dexKey, network, cacheKey, ttlSeconds) {
36
+ const key = this._constructCacheKey(dexKey, network, cacheKey);
37
+ const locallyCached = this.localCache.get(key);
38
+ if (locallyCached)
39
+ return locallyCached;
40
+ const remotelyCached = await this.get(dexKey, network, cacheKey);
41
+ if (!remotelyCached)
42
+ return null;
43
+ this.localCache.set(key, remotelyCached, ttlSeconds);
44
+ return remotelyCached;
45
+ }
46
+ async setexAndCacheLocally(dexKey, network, cacheKey, ttlSeconds, value) {
47
+ const setExStatus = await this.setex(dexKey, network, cacheKey, ttlSeconds, value);
48
+ const key = this._constructCacheKey(dexKey, network, cacheKey);
49
+ this.localCache.set(key, value, ttlSeconds);
50
+ return setExStatus;
51
+ }
52
+ async zremrangebyscore(key, min, max) {
53
+ return RedisWrapper_1.default.zremrangebyscore(key, min, max);
54
+ }
55
+ async zadd(key, bulkItemsToAdd, option) {
56
+ return RedisWrapper_1.default.zadd(key, bulkItemsToAdd, option);
57
+ }
58
+ async zrem(key, membersKeys) {
59
+ return RedisWrapper_1.default.zrem(key, membersKeys);
60
+ }
61
+ zscore(setKey, key) {
62
+ return RedisWrapper_1.default.zscore(setKey, key);
63
+ }
64
+ async hset(mapKey, key, value) {
65
+ return RedisWrapper_1.default.hset(mapKey, {
66
+ [key]: value,
67
+ }).then(() => { });
68
+ }
69
+ async hmset(mapKey, mappings) {
70
+ return RedisWrapper_1.default.hset(mapKey, mappings).then(() => { });
71
+ }
72
+ hdel(mapKey, keys) {
73
+ return RedisWrapper_1.default.hdel(mapKey, keys);
74
+ }
75
+ hget(mapKey, key) {
76
+ return RedisWrapper_1.default.hget(mapKey, key);
77
+ }
78
+ hmget(mapKey, keys) {
79
+ return RedisWrapper_1.default.hmget(mapKey, keys);
80
+ }
81
+ hgetAll(mapKey) {
82
+ return RedisWrapper_1.default.hgetAll(mapKey);
83
+ }
84
+ async publish(channel, msg) {
85
+ // return apiPubSub.publish(channel, msg);
86
+ }
87
+ subscribe(channel, cb) {
88
+ return () => { };
89
+ // return apiPubSub.subscribe(channel, cb);
90
+ }
91
+ addBatchHGet(mapKey, key, cb) {
92
+ return;
93
+ }
94
+ async sadd(setKey, key) {
95
+ await RedisWrapper_1.default.sadd(setKey, [key]);
96
+ }
97
+ async sismember(setKey, key) {
98
+ let res = await RedisWrapper_1.default.sismember(setKey, key);
99
+ return res === 1;
100
+ }
101
+ async init() {
102
+ await RedisWrapper_1.default.connect().catch(err => `Could not connect to redis: ${err}`);
103
+ }
104
+ }
105
+ exports.DexlibCache = DexlibCache;
106
+ //# sourceMappingURL=Cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../src/dex-helper/Cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { Redis } from 'ioredis';
2
+ interface Pool<T> extends Array<T> {
3
+ next: () => T;
4
+ }
5
+ export declare class DexlibRedisWrapper {
6
+ static MAX_SCORE_VALUE: number;
7
+ private redisMasterUrl;
8
+ private redisSlavesUrl;
9
+ masterPool: Pool<Redis>;
10
+ slavesPool: Pool<Redis>;
11
+ connect(redisMasterUrl?: string, redisSlavesUrl?: string, connectionPerPool?: number): Promise<void>;
12
+ private _checkConnected;
13
+ checkConnected(): void;
14
+ close(): Promise<void>;
15
+ get(key: string): Promise<string | null>;
16
+ set(key: string, value: string): Promise<"OK">;
17
+ setex(key: string, seconds: number, value: string): Promise<"OK">;
18
+ incrWithTTLSec(key: string, ttlSec: number): Promise<number>;
19
+ sismember(set: string, key: string): Promise<number>;
20
+ publish(channel: string, value: string): Promise<number>;
21
+ subscribe(channel: string, cb: (channel: string, message: string) => void): Promise<unknown>;
22
+ del(key: string): Promise<number>;
23
+ zremrangebyscore(key: string, min: number, max: number): Promise<number>;
24
+ zadd(key: string, bulkItemsToAdd: (number | string)[], option?: 'NX'): Promise<number>;
25
+ zrem(key: string, membersKeys: string[]): Promise<number>;
26
+ zscore(key: string, member: string): Promise<string | null>;
27
+ hset(mapKey: string, mappings: Record<string, string>): Promise<number | undefined>;
28
+ hdel(mapKey: string, keys: string[]): Promise<number>;
29
+ hget(keyMap: string, key: string): Promise<string | null>;
30
+ hmget(keyMap: string, keys: string[]): Promise<(string | null)[]>;
31
+ hgetAll(keyMap: string): Promise<Record<string, string>>;
32
+ zrangebyscore(key: string, min: number, max: number, isWithScores?: boolean): Promise<string[]>;
33
+ zcount(key: string, min: number, max: number): Promise<number>;
34
+ sadd(set: string, keys: string[], ttl?: number): Promise<number | [error: Error | null, result: unknown][] | null>;
35
+ }
36
+ declare const _default: DexlibRedisWrapper;
37
+ export default _default;
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DexlibRedisWrapper = void 0;
7
+ const ioredis_1 = __importDefault(require("ioredis"));
8
+ const logger = console;
9
+ const IOREDIS_OPTION = {
10
+ enableAutoPipelining: true,
11
+ lazyConnect: true,
12
+ stringNumbers: true,
13
+ };
14
+ function makePool(url, connectionPerPool) {
15
+ const pool = Array.apply(null, new Array(connectionPerPool)).map(() => new ioredis_1.default(url, IOREDIS_OPTION));
16
+ const lastIdx = pool.length - 1;
17
+ pool.idx = 0;
18
+ pool.next = () => {
19
+ const n = pool[pool.idx];
20
+ pool.idx = pool.idx === lastIdx ? 0 : pool.idx + 1;
21
+ return n;
22
+ };
23
+ return pool;
24
+ }
25
+ class DexlibRedisWrapper {
26
+ constructor() {
27
+ this.redisMasterUrl = '';
28
+ this.redisSlavesUrl = '';
29
+ }
30
+ async connect(redisMasterUrl = 'redis://localhost:32768', redisSlavesUrl = 'redis://localhost:32768', connectionPerPool = 5) {
31
+ this.redisMasterUrl = redisMasterUrl;
32
+ this.redisSlavesUrl = redisSlavesUrl;
33
+ this.masterPool = makePool(redisMasterUrl, connectionPerPool);
34
+ this.slavesPool = makePool(redisSlavesUrl, connectionPerPool);
35
+ try {
36
+ logger.info(`Connecting to REDIS... ${this.redisMasterUrl}`);
37
+ await Promise.all([...this.masterPool, ...this.slavesPool].map(redis => redis.connect()));
38
+ logger.info('Connected to REDIS');
39
+ }
40
+ catch (e) {
41
+ logger.error(`Connecting to REDIS ${e}`);
42
+ throw e;
43
+ }
44
+ }
45
+ _checkConnected(redis) {
46
+ if (redis.status !== 'ready') {
47
+ throw new Error('Redis connection down!');
48
+ }
49
+ }
50
+ checkConnected() {
51
+ this.masterPool.forEach(this._checkConnected);
52
+ this.slavesPool.forEach(this._checkConnected);
53
+ }
54
+ async close() {
55
+ try {
56
+ logger.info('Closing REDIS...');
57
+ await Promise.all([...this.masterPool, ...this.slavesPool].map(redis => redis.quit()));
58
+ logger.info('Closed REDIS');
59
+ }
60
+ catch (e) {
61
+ logger.error(`Closing REDIS ${e}`);
62
+ throw e;
63
+ }
64
+ }
65
+ async get(key) {
66
+ return this.slavesPool.next().get(key);
67
+ }
68
+ set(key, value) {
69
+ return this.masterPool.next().set(key, value);
70
+ }
71
+ setex(key, seconds, value) {
72
+ return this.masterPool.next().setex(key, seconds, value);
73
+ }
74
+ async incrWithTTLSec(key, ttlSec) {
75
+ const results = await this.masterPool
76
+ .next()
77
+ .multi()
78
+ .incr(key)
79
+ .expire(key, ttlSec)
80
+ .exec();
81
+ if (!results || results[0] === null) {
82
+ throw new Error(`incrWithTTLSec failed`);
83
+ }
84
+ return parseInt(results[0][1], 10);
85
+ }
86
+ async sismember(set, key) {
87
+ const res = await this.masterPool.next().sismember(set, key);
88
+ return typeof res === 'number' ? res : parseInt(res, 10);
89
+ }
90
+ publish(channel, value) {
91
+ return this.masterPool.next().publish(channel, value);
92
+ }
93
+ subscribe(channel, cb) {
94
+ const redis = new ioredis_1.default(this.redisSlavesUrl, IOREDIS_OPTION);
95
+ redis.on('error', (error) => {
96
+ logger.error(`redis_subscribe_error(${channel}): ${error}`);
97
+ });
98
+ redis.on('connect', () => logger.info(`Redis_subscriber_connected(${channel})`));
99
+ redis.on('message', cb);
100
+ return redis.subscribe(channel);
101
+ }
102
+ async del(key) {
103
+ return this.masterPool.next().del(key);
104
+ }
105
+ async zremrangebyscore(key, min, max) {
106
+ return this.masterPool.next().zremrangebyscore(key, min, max);
107
+ }
108
+ async zadd(key, bulkItemsToAdd, option) {
109
+ return option === undefined
110
+ ? this.masterPool.next().zadd(key, ...bulkItemsToAdd)
111
+ : this.masterPool.next().zadd(key, option, ...bulkItemsToAdd);
112
+ }
113
+ async zrem(key, membersKeys) {
114
+ return this.masterPool.next().zrem(key, membersKeys);
115
+ }
116
+ async zscore(key, member) {
117
+ return this.slavesPool.next().zscore(key, member);
118
+ }
119
+ async hset(mapKey, mappings) {
120
+ if (!Object.keys(mappings).length) {
121
+ return;
122
+ }
123
+ return this.masterPool.next().hset(mapKey, mappings);
124
+ }
125
+ async hdel(mapKey, keys) {
126
+ if (keys.length === 0) {
127
+ return 0;
128
+ }
129
+ return this.masterPool.next().hdel(mapKey, ...keys);
130
+ }
131
+ async hget(keyMap, key) {
132
+ return this.slavesPool.next().hget(keyMap, key);
133
+ }
134
+ async hmget(keyMap, keys) {
135
+ return this.slavesPool.next().hmget(keyMap, ...keys);
136
+ }
137
+ async hgetAll(keyMap) {
138
+ return this.slavesPool.next().hgetall(keyMap);
139
+ }
140
+ async zrangebyscore(key, min, max, isWithScores = false) {
141
+ return isWithScores
142
+ ? this.slavesPool.next().zrangebyscore(key, min, max, 'WITHSCORES')
143
+ : this.slavesPool.next().zrangebyscore(key, min, max);
144
+ }
145
+ async zcount(key, min, max) {
146
+ return this.slavesPool.next().zcount(key, min, max);
147
+ }
148
+ async sadd(set, keys, ttl) {
149
+ if (ttl) {
150
+ return this.masterPool
151
+ .next()
152
+ .multi()
153
+ .sadd(set, keys)
154
+ .expire(set, ttl)
155
+ .exec();
156
+ }
157
+ else {
158
+ return this.masterPool.next().sadd(set, keys);
159
+ }
160
+ }
161
+ }
162
+ exports.DexlibRedisWrapper = DexlibRedisWrapper;
163
+ DexlibRedisWrapper.MAX_SCORE_VALUE = 9007199254740991;
164
+ exports.default = new DexlibRedisWrapper();
165
+ //# sourceMappingURL=RedisWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedisWrapper.js","sourceRoot":"","sources":["../../src/dex-helper/RedisWrapper.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.48.2",
3
+ "version": "2.48.4-etherfi.0",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",
@@ -0,0 +1,9 @@
1
+ [
2
+ {
3
+ "inputs": [],
4
+ "name": "deposit",
5
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
6
+ "stateMutability": "payable",
7
+ "type": "function"
8
+ }
9
+ ]
@@ -0,0 +1,20 @@
1
+ [
2
+ {
3
+ "inputs": [
4
+ { "internalType": "uint256", "name": "_eETHAmount", "type": "uint256" }
5
+ ],
6
+ "name": "wrap",
7
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
8
+ "stateMutability": "nonpayable",
9
+ "type": "function"
10
+ },
11
+ {
12
+ "inputs": [
13
+ { "internalType": "uint256", "name": "_weETHAmount", "type": "uint256" }
14
+ ],
15
+ "name": "unwrap",
16
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
17
+ "stateMutability": "nonpayable",
18
+ "type": "function"
19
+ }
20
+ ]
@@ -0,0 +1,144 @@
1
+ import { Interface, JsonFragment } from '@ethersproject/abi';
2
+ import { SwapSide } from '../constants';
3
+ import { AdapterExchangeParam, Address, SimpleExchangeParam } from '../types';
4
+ import { IDexTxBuilder } from './idex';
5
+ import { SimpleExchange } from './simple-exchange';
6
+ import eETHPoolABI from '../abi/etherfi/eETHPool.json';
7
+ import weETHABI from '../abi/etherfi/weETH.json';
8
+ import { IDexHelper } from '../dex-helper';
9
+ import { isETHAddress } from '../utils';
10
+ import { assert } from 'ts-essentials';
11
+
12
+ type EtherFiData = void;
13
+
14
+ type eETHPoolDepositParam = [];
15
+ type weETHWrap = [_eETHAmount: string];
16
+ type weETHUnwrap = [_weETHAmount: string];
17
+
18
+ type EtherFiParam = eETHPoolDepositParam | weETHWrap | weETHUnwrap;
19
+
20
+ enum EtherFiFunctions {
21
+ deposit = 'deposit',
22
+ wrap = 'wrap',
23
+ unwrap = 'unwrap',
24
+ }
25
+
26
+ const EtherFiConfig: Record<
27
+ number,
28
+ { eETH: string; eETHPool: string; weETH: string }
29
+ > = {
30
+ 1: {
31
+ eETH: '0x35fa164735182de50811e8e2e824cfb9b6118ac2',
32
+ eETHPool: '0x308861a430be4cce5502d0a12724771fc6daf216',
33
+ weETH: '0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee',
34
+ },
35
+ };
36
+
37
+ export class EtherFi
38
+ extends SimpleExchange
39
+ implements IDexTxBuilder<EtherFiData, EtherFiParam>
40
+ {
41
+ static dexKeys = ['etherfi'];
42
+
43
+ eETHPoolInterface: Interface;
44
+ weETHInterface: Interface;
45
+ needWrapNative = false;
46
+
47
+ eETH: string;
48
+ eETHPool: string;
49
+ weETH: string;
50
+
51
+ constructor(dexHelper: IDexHelper) {
52
+ super(dexHelper, 'etherfi');
53
+
54
+ this.eETHPoolInterface = new Interface(eETHPoolABI as JsonFragment[]);
55
+ this.weETHInterface = new Interface(weETHABI as JsonFragment[]);
56
+
57
+ this.eETH = EtherFiConfig[this.network].eETH.toLowerCase();
58
+ this.eETHPool = EtherFiConfig[this.network].eETHPool.toLowerCase();
59
+ this.weETH = EtherFiConfig[this.network].weETH.toLowerCase();
60
+ }
61
+
62
+ is_eETH = (token: string) => token.toLowerCase() === this.eETH;
63
+ is_weETH = (token: string) => token.toLowerCase() === this.weETH;
64
+
65
+ async getSimpleParam(
66
+ srcToken: string,
67
+ destToken: string,
68
+ srcAmount: string,
69
+ destAmount: string,
70
+ data: EtherFiData,
71
+ side: SwapSide,
72
+ ): Promise<SimpleExchangeParam> {
73
+ const [Interface, swapCallee, swapFunction, swapFunctionParams] = ((): [
74
+ Interface,
75
+ Address,
76
+ EtherFiFunctions,
77
+ EtherFiParam,
78
+ ] => {
79
+ if (this.is_eETH(destToken)) {
80
+ assert(
81
+ this.isWETH(srcToken) || isETHAddress(srcToken),
82
+ 'srcToken should be eth',
83
+ );
84
+ return [
85
+ this.eETHPoolInterface,
86
+ this.eETHPool,
87
+ EtherFiFunctions.deposit,
88
+ [],
89
+ ];
90
+ }
91
+
92
+ if (this.is_weETH(destToken)) {
93
+ assert(this.is_eETH(srcToken), 'srcToken should be eETH');
94
+ return [
95
+ this.weETHInterface,
96
+ this.weETH,
97
+ EtherFiFunctions.wrap,
98
+ [srcAmount],
99
+ ];
100
+ }
101
+
102
+ if (this.is_weETH(srcToken)) {
103
+ assert(this.is_eETH(destToken), 'destToken should be eETH');
104
+ return [
105
+ this.weETHInterface,
106
+ this.weETH,
107
+ EtherFiFunctions.unwrap,
108
+ [srcAmount],
109
+ ];
110
+ }
111
+
112
+ throw new Error('LOGIC ERROR');
113
+ })();
114
+
115
+ const swapData = Interface.encodeFunctionData(
116
+ swapFunction,
117
+ swapFunctionParams,
118
+ );
119
+
120
+ return this.buildSimpleParamWithoutWETHConversion(
121
+ srcToken,
122
+ srcAmount,
123
+ destToken,
124
+ destAmount,
125
+ swapData,
126
+ swapCallee,
127
+ );
128
+ }
129
+
130
+ getAdapterParam(
131
+ srcToken: string,
132
+ destToken: string,
133
+ srcAmount: string,
134
+ destAmount: string,
135
+ data: EtherFiData,
136
+ side: SwapSide,
137
+ ): AdapterExchangeParam {
138
+ return {
139
+ targetExchange: '0x',
140
+ payload: '0x',
141
+ networkFee: '0',
142
+ };
143
+ }
144
+ }
package/src/dex/index.ts CHANGED
@@ -85,6 +85,7 @@ import { Dexalot } from './dexalot/dexalot';
85
85
  import { Smardex } from './smardex/smardex';
86
86
  import { Wombat } from './wombat/wombat';
87
87
  import { Swell } from './swell/swell';
88
+ import { EtherFi } from './etherfi';
88
89
 
89
90
  const LegacyDexes = [
90
91
  CurveV2,
@@ -108,6 +109,7 @@ const LegacyDexes = [
108
109
  Jarvis,
109
110
  Lido,
110
111
  AugustusRFQOrder,
112
+ EtherFi,
111
113
  ];
112
114
 
113
115
  const Dexes = [
@@ -56,10 +56,7 @@ export class Tick {
56
56
  delete state.ticks[Number(tick)];
57
57
  }
58
58
 
59
- static cross(
60
- ticks: Record<NumberAsString, TickInfo>,
61
- tick: bigint,
62
- ): bigint {
59
+ static cross(ticks: Record<NumberAsString, TickInfo>, tick: bigint): bigint {
63
60
  const info = ticks[Number(tick)];
64
61
  return info.liquidityNet;
65
62
  }
@@ -159,7 +159,6 @@ function _priceComputationCycles(
159
159
 
160
160
  if (state.sqrtPriceX96 === step.sqrtPriceNextX96) {
161
161
  if (step.initialized) {
162
-
163
162
  if (state.amountSpecifiedRemaining === 0n) {
164
163
  const castTickNext = Number(step.tickNext);
165
164
  lastTicksCopy = {
@@ -168,10 +167,7 @@ function _priceComputationCycles(
168
167
  };
169
168
  }
170
169
 
171
- let liquidityNet = Tick.cross(
172
- ticksCopy,
173
- step.tickNext,
174
- );
170
+ let liquidityNet = Tick.cross(ticksCopy, step.tickNext);
175
171
  if (zeroForOne) liquidityNet = -liquidityNet;
176
172
 
177
173
  state.liquidity = LiquidityMath.addDelta(state.liquidity, liquidityNet);
@@ -424,11 +420,7 @@ class UniswapV3Math {
424
420
 
425
421
  if (state.sqrtPriceX96 == step.sqrtPriceNextX96) {
426
422
  if (step.initialized) {
427
-
428
- let liquidityNet = Tick.cross(
429
- poolState.ticks,
430
- step.tickNext,
431
- );
423
+ let liquidityNet = Tick.cross(poolState.ticks, step.tickNext);
432
424
 
433
425
  if (zeroForOne) liquidityNet = -liquidityNet;
434
426
 
@@ -445,10 +437,10 @@ class UniswapV3Math {
445
437
  }
446
438
 
447
439
  if (slot0Start.tick !== newTick) {
448
- [
449
- poolState.slot0.sqrtPriceX96,
450
- poolState.slot0.tick,
451
- ] = [newSqrtPriceX96, newTick];
440
+ [poolState.slot0.sqrtPriceX96, poolState.slot0.tick] = [
441
+ newSqrtPriceX96,
442
+ newTick,
443
+ ];
452
444
  } else {
453
445
  poolState.slot0.sqrtPriceX96 = newSqrtPriceX96;
454
446
  }
@@ -8,9 +8,9 @@ import { Address } from '../../types';
8
8
  import { DummyDexHelper } from '../../dex-helper/index';
9
9
  import { testEventSubscriber } from '../../../tests/utils-events';
10
10
  import { PoolState } from './types';
11
- import {SolidlyV3Config} from "./config";
12
- import {AbiItem} from "web3-utils";
13
- import {Interface} from "@ethersproject/abi";
11
+ import { SolidlyV3Config } from './config';
12
+ import { AbiItem } from 'web3-utils';
13
+ import { Interface } from '@ethersproject/abi';
14
14
  import StateMulticallABI from '../../abi/solidly-v3/SolidlyV3StateMulticall.abi.json';
15
15
  import { decodeStateMultiCallResultWithRelativeBitmaps } from './utils';
16
16
  import ERC20ABI from '../../abi/erc20.json';
@@ -81,17 +81,19 @@ describe('SolidlyV3 Event', function () {
81
81
  const blockNumbers: { [eventName: string]: number[] } = {
82
82
  // topic0 - 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67
83
83
  ['Swap']: [
84
- 18600853, 18616106, 18616441, 18619851, 18622968, 18625121, 18626415, 18627297, 18630574,
85
- 18718946, 18726197, 18730166, 18758602
84
+ 18600853, 18616106, 18616441, 18619851, 18622968, 18625121, 18626415,
85
+ 18627297, 18630574, 18718946, 18726197, 18730166, 18758602,
86
86
  ],
87
87
  ['Burn']: [18737937],
88
88
  ['Mint']: [18708230, 18709265, 18737969],
89
89
  ['Collect']: [18751597],
90
90
  //topic0 0x0eb63f4a36d6bdeee05aa00020a97d80c3e84f1b5b3ebf345fb67262e62b0f33
91
- ['SetFee']: [18427614, 18423073, 18423143, 18425324, 18430069, 18442932, 18442934],
91
+ ['SetFee']: [
92
+ 18427614, 18423073, 18423143, 18425324, 18430069, 18442932, 18442934,
93
+ ],
92
94
  ['Flash']: [18758872],
93
95
  ['CollectProtocol']: [18530529, 18577493],
94
- }
96
+ };
95
97
 
96
98
  describe('SolidlyV3EventPool', function () {
97
99
  Object.keys(blockNumbers).forEach((event: string) => {
@@ -8,6 +8,7 @@ import { decodeStateMultiCallResultWithRelativeBitmaps } from './forks/ramses-v2
8
8
  import { RamsesV2EventPool } from './forks/ramses-v2/ramses-v2-pool';
9
9
 
10
10
  const SUPPORTED_FEES = [10000n, 3000n, 500n, 100n];
11
+ const RAMSES_FORKS_FEES = [...SUPPORTED_FEES, 50n, 250n];
11
12
 
12
13
  // Pools that will be initialized on app startup
13
14
  // They are added for testing
@@ -246,7 +247,7 @@ export const UniswapV3Config: DexConfigMap<DexParams> = {
246
247
  deployer: '0xb3e423ab9cE6C03D98326A3A2a0D7D96b0829f22',
247
248
  quoter: '0xAA20EFF7ad2F523590dE6c04918DaAE0904E3b20',
248
249
  router: '0xAA23611badAFB62D37E7295A682D21960ac85A90',
249
- supportedFees: [...SUPPORTED_FEES, 50n],
250
+ supportedFees: RAMSES_FORKS_FEES,
250
251
  stateMulticall: '0x50EE4112Cab9c79812F23bE079aB3911395ACc8e',
251
252
  stateMultiCallAbi: RamsesV2StateMulticallABI as AbiItem[],
252
253
  uniswapMulticall: '0x1F98415757620B543A52E61c46B32eB19261F984',
@@ -260,6 +261,26 @@ export const UniswapV3Config: DexConfigMap<DexParams> = {
260
261
  'https://api.thegraph.com/subgraphs/name/ramsesexchange/concentrated-liquidity-graph',
261
262
  },
262
263
  },
264
+ Pharaoh: {
265
+ [Network.AVALANCHE]: {
266
+ factory: '0xAAA32926fcE6bE95ea2c51cB4Fcb60836D320C42',
267
+ deployer: '0x95120704f4E2D545Aea8b6B3c16d9Da1fa32E30F',
268
+ quoter: '0xAAAEA10b0e6FBe566FE27c3A023DC5D8cA6Bca3d',
269
+ router: '0xAAAE99091Fbb28D400029052821653C1C752483B',
270
+ supportedFees: RAMSES_FORKS_FEES,
271
+ stateMulticall: '0xd32C191e0febaa6Cc93A29Cb676474c72486E00b',
272
+ stateMultiCallAbi: RamsesV2StateMulticallABI as AbiItem[],
273
+ uniswapMulticall: '0x0139141Cd4Ee88dF3Cdb65881D411bAE271Ef0C2',
274
+ chunksCount: 10,
275
+ initRetryFrequency: 10,
276
+ eventPoolImplementation: RamsesV2EventPool,
277
+ decodeStateMultiCallResultWithRelativeBitmaps,
278
+ initHash:
279
+ '0x1565b129f2d1790f12d45301b9b084335626f0c92410bc43130763b69971135d',
280
+ subgraphURL:
281
+ 'https://api.studio.thegraph.com/query/66247/pharaoh-cl/version/latest',
282
+ },
283
+ },
263
284
  'QuickSwapV3.1': {
264
285
  [Network.ZKEVM]: {
265
286
  factory: '0xD9a2AD9E927Bd7014116CC5c7328f028D4318178',