@paraswap/dex-lib 3.11.8-stader.3 → 3.11.8

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 (269) hide show
  1. package/.vscode/launch.json +53 -0
  2. package/.vscode/settings.json +2 -0
  3. package/.vscode/tasks.json +15 -0
  4. package/build/abi/balancer-v3/batch-router.json +989 -0
  5. package/build/abi/balancer-v3/router.json +1792 -0
  6. package/build/abi/balancer-v3/vault-extension.json +2834 -0
  7. package/build/abi/{cables/CablesMainnetRFQ.json → inception/inception-ineth-pool.json} +489 -510
  8. package/build/abi/inception/inception-ratio-feed.json +329 -0
  9. package/build/abi/inception/inception-vault.json +991 -0
  10. package/build/abi/permit2.json +581 -0
  11. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +52 -0
  12. package/build/abi/usual-m-smart-m/usualM.abi.json +483 -0
  13. package/build/abi/usual-m-usd0/usualCollateralDao.abi.json +681 -0
  14. package/build/abi/{integral/relayer.json → wombat/pool.json} +474 -721
  15. package/build/dex/aave-v1/aave-v1.d.ts +2 -1
  16. package/build/dex/aave-v1/aave-v1.js +23 -0
  17. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  18. package/build/dex/aave-v2/tokens-avalanche.json +44 -0
  19. package/build/dex/aave-v2/tokens-mainnet.json +188 -0
  20. package/build/dex/aave-v2/tokens-polygon.json +44 -0
  21. package/build/dex/balancer-v3/abi/balancerBatchRouter.d.ts +729 -0
  22. package/build/dex/balancer-v3/abi/balancerBatchRouter.js +732 -0
  23. package/build/dex/balancer-v3/abi/balancerBatchRouter.js.map +1 -0
  24. package/build/dex/balancer-v3/abi/balancerRouter.d.ts +1406 -0
  25. package/build/dex/balancer-v3/abi/balancerRouter.js +1175 -0
  26. package/build/dex/balancer-v3/abi/balancerRouter.js.map +1 -0
  27. package/build/dex/balancer-v3/abi/vaultExtension.V3.d.ts +2081 -0
  28. package/build/dex/balancer-v3/abi/vaultExtension.V3.js +1851 -0
  29. package/build/dex/balancer-v3/abi/vaultExtension.V3.js.map +1 -0
  30. package/build/dex/balancer-v3/balancer-v3-pool.d.ts +80 -0
  31. package/build/dex/balancer-v3/balancer-v3-pool.js +461 -0
  32. package/build/dex/balancer-v3/balancer-v3-pool.js.map +1 -0
  33. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.d.ts +34 -0
  34. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js +406 -0
  35. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js.map +1 -0
  36. package/build/dex/balancer-v3/balancer-v3.d.ts +57 -0
  37. package/build/dex/balancer-v3/balancer-v3.js +383 -0
  38. package/build/dex/balancer-v3/balancer-v3.js.map +1 -0
  39. package/build/dex/balancer-v3/config.d.ts +8 -0
  40. package/build/dex/balancer-v3/config.js +24 -0
  41. package/build/dex/balancer-v3/config.js.map +1 -0
  42. package/build/dex/balancer-v3/getGasCost.d.ts +2 -0
  43. package/build/dex/balancer-v3/getGasCost.js +41 -0
  44. package/build/dex/balancer-v3/getGasCost.js.map +1 -0
  45. package/build/dex/balancer-v3/getOnChainState.d.ts +10 -0
  46. package/build/dex/balancer-v3/getOnChainState.js +164 -0
  47. package/build/dex/balancer-v3/getOnChainState.js.map +1 -0
  48. package/build/dex/balancer-v3/getPoolsApi.d.ts +2 -0
  49. package/build/dex/balancer-v3/getPoolsApi.js +81 -0
  50. package/build/dex/balancer-v3/getPoolsApi.js.map +1 -0
  51. package/build/dex/balancer-v3/getTopPoolsApi.d.ts +13 -0
  52. package/build/dex/balancer-v3/getTopPoolsApi.js +62 -0
  53. package/build/dex/balancer-v3/getTopPoolsApi.js.map +1 -0
  54. package/build/dex/balancer-v3/optimizer.d.ts +2 -0
  55. package/build/dex/{trader-joe-v2.1 → balancer-v3}/optimizer.js +17 -16
  56. package/build/dex/balancer-v3/optimizer.js.map +1 -0
  57. package/build/dex/balancer-v3/stablePool.d.ts +7 -0
  58. package/build/dex/balancer-v3/stablePool.js +73 -0
  59. package/build/dex/balancer-v3/stablePool.js.map +1 -0
  60. package/build/dex/balancer-v3/types.d.ts +62 -0
  61. package/build/dex/balancer-v3/types.js +3 -0
  62. package/build/dex/balancer-v3/types.js.map +1 -0
  63. package/build/dex/balancer-v3/weightedPool.d.ts +1 -0
  64. package/build/dex/balancer-v3/weightedPool.js +6 -0
  65. package/build/dex/balancer-v3/weightedPool.js.map +1 -0
  66. package/build/dex/bebop/constants.d.ts +1 -1
  67. package/build/dex/bebop/constants.js +1 -1
  68. package/build/dex/inception/config.d.ts +4 -0
  69. package/build/dex/inception/config.js +109 -0
  70. package/build/dex/inception/config.js.map +1 -0
  71. package/build/dex/inception/inception-event-pool.d.ts +16 -0
  72. package/build/dex/inception/inception-event-pool.js +49 -0
  73. package/build/dex/inception/inception-event-pool.js.map +1 -0
  74. package/build/dex/inception/inception.d.ts +43 -0
  75. package/build/dex/inception/inception.js +180 -0
  76. package/build/dex/inception/inception.js.map +1 -0
  77. package/build/dex/inception/tokens.d.ts +9 -0
  78. package/build/dex/inception/tokens.js +28 -0
  79. package/build/dex/inception/tokens.js.map +1 -0
  80. package/build/dex/inception/types.d.ts +22 -0
  81. package/build/dex/inception/types.js +3 -0
  82. package/build/dex/inception/types.js.map +1 -0
  83. package/build/dex/inception/utils.d.ts +7 -0
  84. package/build/dex/inception/utils.js +58 -0
  85. package/build/dex/inception/utils.js.map +1 -0
  86. package/build/dex/index.js +0 -2
  87. package/build/dex/index.js.map +1 -1
  88. package/build/dex/jarvis.d.ts +2 -1
  89. package/build/dex/jarvis.js +58 -0
  90. package/build/dex/jarvis.js.map +1 -1
  91. package/build/dex/maker-psm/scripts/gem.abi.json +136 -0
  92. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  93. package/build/dex/maker-psm/scripts/validate-state.js +185 -0
  94. package/build/dex/maker-psm/scripts/validate-state.js.map +1 -0
  95. package/build/dex/maker-psm/scripts/vat.abi.json +243 -0
  96. package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.d.ts +1 -0
  97. package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.js +20 -0
  98. package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.js.map +1 -1
  99. package/build/dex/pancakeswap-v3/pancakeswap-v3.js +4 -0
  100. package/build/dex/pancakeswap-v3/pancakeswap-v3.js.map +1 -1
  101. package/build/dex/platypus/platypus.d.ts +2 -1
  102. package/build/dex/platypus/platypus.js +45 -0
  103. package/build/dex/platypus/platypus.js.map +1 -1
  104. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +1 -0
  105. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +53 -0
  106. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +1 -0
  107. package/build/dex/stable-pool.js +1 -8
  108. package/build/dex/stable-pool.js.map +1 -1
  109. package/build/dex/swaap-v1/swaap-v1.d.ts +2 -1
  110. package/build/dex/swaap-v1/swaap-v1.js +14 -0
  111. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  112. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +17 -0
  113. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +64 -0
  114. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +1 -0
  115. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +17 -0
  116. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +79 -0
  117. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +1 -0
  118. package/build/dex/uniswap-v3/uniswap-v3-pool.d.ts +1 -0
  119. package/build/dex/uniswap-v3/uniswap-v3-pool.js +20 -0
  120. package/build/dex/uniswap-v3/uniswap-v3-pool.js.map +1 -1
  121. package/build/dex/uniswap-v3/uniswap-v3-pricing.d.ts +4 -0
  122. package/build/dex/uniswap-v3/uniswap-v3-pricing.js +43 -0
  123. package/build/dex/uniswap-v3/uniswap-v3-pricing.js.map +1 -0
  124. package/build/dex/uniswap-v3/uniswap-v3-worker.d.ts +1 -0
  125. package/build/dex/uniswap-v3/uniswap-v3-worker.js +10 -0
  126. package/build/dex/uniswap-v3/uniswap-v3-worker.js.map +1 -0
  127. package/build/dex/uniswap-v3/uniswap-v3.js +5 -0
  128. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  129. package/build/dex/usual/types.d.ts +13 -0
  130. package/build/dex/usual/types.js +3 -0
  131. package/build/dex/usual/types.js.map +1 -0
  132. package/build/dex/usual/usual-bond.d.ts +18 -0
  133. package/build/dex/usual/usual-bond.js +52 -0
  134. package/build/dex/usual/usual-bond.js.map +1 -0
  135. package/build/dex/usual/usual-m-smart-m.d.ts +17 -0
  136. package/build/dex/usual/usual-m-smart-m.js +50 -0
  137. package/build/dex/usual/usual-m-smart-m.js.map +1 -0
  138. package/build/dex/usual/usual-m-usd0.d.ts +17 -0
  139. package/build/dex/usual/usual-m-usd0.js +51 -0
  140. package/build/dex/usual/usual-m-usd0.js.map +1 -0
  141. package/build/dex/usual/usual.d.ts +27 -0
  142. package/build/dex/usual/usual.js +125 -0
  143. package/build/dex/usual/usual.js.map +1 -0
  144. package/build/dex/usual-m-smart-m/config.d.ts +3 -0
  145. package/build/dex/usual-m-smart-m/config.js +13 -0
  146. package/build/dex/usual-m-smart-m/config.js.map +1 -0
  147. package/build/dex/usual-m-smart-m/types.d.ts +7 -0
  148. package/build/dex/usual-m-smart-m/types.js +3 -0
  149. package/build/dex/usual-m-smart-m/types.js.map +1 -0
  150. package/build/dex/usual-m-smart-m/usual-m-smart-m.d.ts +35 -0
  151. package/build/dex/usual-m-smart-m/usual-m-smart-m.js +161 -0
  152. package/build/dex/usual-m-smart-m/usual-m-smart-m.js.map +1 -0
  153. package/build/dex/{stader → usual-m-usd0}/config.d.ts +1 -1
  154. package/build/dex/usual-m-usd0/config.js +14 -0
  155. package/build/dex/usual-m-usd0/config.js.map +1 -0
  156. package/build/dex/usual-m-usd0/types.d.ts +8 -0
  157. package/build/dex/usual-m-usd0/types.js +3 -0
  158. package/build/dex/usual-m-usd0/types.js.map +1 -0
  159. package/build/dex/usual-m-usd0/usual-m-usd0.d.ts +35 -0
  160. package/build/dex/usual-m-usd0/usual-m-usd0.js +159 -0
  161. package/build/dex/usual-m-usd0/usual-m-usd0.js.map +1 -0
  162. package/build/dex/zerox/index.d.ts +4 -26
  163. package/build/dex/zerox/index.js +50 -42
  164. package/build/dex/zerox/index.js.map +1 -1
  165. package/build/dex/zerox/types.d.ts +29 -0
  166. package/build/dex/zerox/types.js +8 -1
  167. package/build/dex/zerox/types.js.map +1 -1
  168. package/package.json +1 -1
  169. package/src/dex/balancer-v3/balancer-v3-sepolia-pools.ts +404 -0
  170. package/src/dex/bebop/constants.ts +1 -1
  171. package/src/dex/index.ts +0 -2
  172. package/src/dex/pancakeswap-v3/pancakeswap-v3-pool.ts +30 -0
  173. package/src/dex/pancakeswap-v3/pancakeswap-v3.ts +10 -0
  174. package/src/dex/uniswap-v3/uniswap-v3-pool.ts +30 -0
  175. package/src/dex/uniswap-v3/uniswap-v3.ts +11 -0
  176. package/tests/constants-e2e.ts +0 -5
  177. package/.idea/aws.xml +0 -17
  178. package/.idea/codeStyles/Project.xml +0 -19
  179. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  180. package/.idea/misc.xml +0 -6
  181. package/.idea/modules.xml +0 -8
  182. package/.idea/paraswap-dex-lib.iml +0 -9
  183. package/.idea/prettier.xml +0 -7
  184. package/.idea/vcs.xml +0 -6
  185. package/build/abi/SSPM.json +0 -829
  186. package/build/abi/StaderOracle.json +0 -2170
  187. package/build/abi/integral/factory.json +0 -333
  188. package/build/abi/integral/oracle.json +0 -501
  189. package/build/abi/integral/pool.json +0 -1041
  190. package/build/dex/cables/cables.d.ts +0 -59
  191. package/build/dex/cables/cables.js +0 -614
  192. package/build/dex/cables/cables.js.map +0 -1
  193. package/build/dex/cables/config.d.ts +0 -4
  194. package/build/dex/cables/config.js +0 -15
  195. package/build/dex/cables/config.js.map +0 -1
  196. package/build/dex/cables/constants.d.ts +0 -20
  197. package/build/dex/cables/constants.js +0 -24
  198. package/build/dex/cables/constants.js.map +0 -1
  199. package/build/dex/cables/rate-fetcher.d.ts +0 -34
  200. package/build/dex/cables/rate-fetcher.js +0 -106
  201. package/build/dex/cables/rate-fetcher.js.map +0 -1
  202. package/build/dex/cables/types.d.ts +0 -113
  203. package/build/dex/cables/types.js +0 -19
  204. package/build/dex/cables/types.js.map +0 -1
  205. package/build/dex/cables/validators.d.ts +0 -5
  206. package/build/dex/cables/validators.js +0 -49
  207. package/build/dex/cables/validators.js.map +0 -1
  208. package/build/dex/fluid-dex/fluid-dex-generate-pool.d.ts +0 -49
  209. package/build/dex/fluid-dex/fluid-dex-generate-pool.js +0 -104
  210. package/build/dex/fluid-dex/fluid-dex-generate-pool.js.map +0 -1
  211. package/build/dex/integral/config.d.ts +0 -4
  212. package/build/dex/integral/config.js +0 -20
  213. package/build/dex/integral/config.js.map +0 -1
  214. package/build/dex/integral/context.d.ts +0 -40
  215. package/build/dex/integral/context.js +0 -158
  216. package/build/dex/integral/context.js.map +0 -1
  217. package/build/dex/integral/integral-factory.d.ts +0 -24
  218. package/build/dex/integral/integral-factory.js +0 -95
  219. package/build/dex/integral/integral-factory.js.map +0 -1
  220. package/build/dex/integral/integral-pool.d.ts +0 -50
  221. package/build/dex/integral/integral-pool.js +0 -149
  222. package/build/dex/integral/integral-pool.js.map +0 -1
  223. package/build/dex/integral/integral-pricing.d.ts +0 -18
  224. package/build/dex/integral/integral-pricing.js +0 -114
  225. package/build/dex/integral/integral-pricing.js.map +0 -1
  226. package/build/dex/integral/integral-relayer.d.ts +0 -42
  227. package/build/dex/integral/integral-relayer.js +0 -192
  228. package/build/dex/integral/integral-relayer.js.map +0 -1
  229. package/build/dex/integral/integral-token.d.ts +0 -27
  230. package/build/dex/integral/integral-token.js +0 -59
  231. package/build/dex/integral/integral-token.js.map +0 -1
  232. package/build/dex/integral/integral.d.ts +0 -41
  233. package/build/dex/integral/integral.js +0 -376
  234. package/build/dex/integral/integral.js.map +0 -1
  235. package/build/dex/integral/types.d.ts +0 -85
  236. package/build/dex/integral/types.js +0 -9
  237. package/build/dex/integral/types.js.map +0 -1
  238. package/build/dex/integral/utils-e2e.d.ts +0 -9
  239. package/build/dex/integral/utils-e2e.js +0 -131
  240. package/build/dex/integral/utils-e2e.js.map +0 -1
  241. package/build/dex/integral/utils.d.ts +0 -17
  242. package/build/dex/integral/utils.js +0 -94
  243. package/build/dex/integral/utils.js.map +0 -1
  244. package/build/dex/stader/config.js +0 -14
  245. package/build/dex/stader/config.js.map +0 -1
  246. package/build/dex/stader/stader-pool.d.ts +0 -18
  247. package/build/dex/stader/stader-pool.js +0 -47
  248. package/build/dex/stader/stader-pool.js.map +0 -1
  249. package/build/dex/stader/stader.d.ts +0 -42
  250. package/build/dex/stader/stader.js +0 -141
  251. package/build/dex/stader/stader.js.map +0 -1
  252. package/build/dex/stader/types.d.ts +0 -13
  253. package/build/dex/stader/types.js +0 -8
  254. package/build/dex/stader/types.js.map +0 -1
  255. package/build/dex/stader/utils.d.ts +0 -4
  256. package/build/dex/stader/utils.js +0 -24
  257. package/build/dex/stader/utils.js.map +0 -1
  258. package/build/dex/trader-joe-v2.1/optimizer.d.ts +0 -2
  259. package/build/dex/trader-joe-v2.1/optimizer.js.map +0 -1
  260. package/src/abi/SSPM.json +0 -829
  261. package/src/abi/StaderOracle.json +0 -2170
  262. package/src/dex/stader/config.ts +0 -13
  263. package/src/dex/stader/stader-e2e.test.ts +0 -74
  264. package/src/dex/stader/stader-events.test.ts +0 -64
  265. package/src/dex/stader/stader-integration.test.ts +0 -210
  266. package/src/dex/stader/stader-pool.ts +0 -68
  267. package/src/dex/stader/stader.ts +0 -208
  268. package/src/dex/stader/types.ts +0 -16
  269. package/src/dex/stader/utils.ts +0 -34
@@ -0,0 +1,164 @@
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.getOnChainState = exports.decodeThrowError = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const config_1 = require("./config");
9
+ // Encoding & Decoding for onchain calls to fetch mutable pool data
10
+ // Each supported pool type should have its own specific calls if needed
11
+ const poolOnChain = {
12
+ ['COMMON']: {
13
+ count: 6,
14
+ ['encode']: (network, contractInterface, address) => {
15
+ return [
16
+ {
17
+ target: config_1.BalancerV3Config.BalancerV3[network].vaultAddress,
18
+ callData: contractInterface.encodeFunctionData('getPoolTokenRates', [
19
+ address,
20
+ ]),
21
+ },
22
+ {
23
+ target: config_1.BalancerV3Config.BalancerV3[network].vaultAddress,
24
+ callData: contractInterface.encodeFunctionData('getCurrentLiveBalances', [address]),
25
+ },
26
+ {
27
+ target: config_1.BalancerV3Config.BalancerV3[network].vaultAddress,
28
+ callData: contractInterface.encodeFunctionData('getPoolConfig', [
29
+ address,
30
+ ]),
31
+ },
32
+ {
33
+ target: config_1.BalancerV3Config.BalancerV3[network].vaultAddress,
34
+ callData: contractInterface.encodeFunctionData('totalSupply', [
35
+ address,
36
+ ]),
37
+ },
38
+ {
39
+ target: config_1.BalancerV3Config.BalancerV3[network].vaultAddress,
40
+ callData: contractInterface.encodeFunctionData('isPoolPaused', [
41
+ address,
42
+ ]),
43
+ },
44
+ {
45
+ target: config_1.BalancerV3Config.BalancerV3[network].vaultAddress,
46
+ callData: contractInterface.encodeFunctionData('getHooksConfig', [
47
+ address,
48
+ ]),
49
+ },
50
+ ];
51
+ },
52
+ ['decode']: (contractInterface, poolAddress, data, startIndex) => {
53
+ const resultTokenRates = decodeThrowError(contractInterface, 'getPoolTokenRates', data[startIndex++], poolAddress);
54
+ if (!resultTokenRates)
55
+ throw new Error(`Failed to get result for getPoolTokenRates for ${poolAddress}`);
56
+ const resultLiveBalances = decodeThrowError(contractInterface, 'getCurrentLiveBalances', data[startIndex++], poolAddress);
57
+ if (!resultLiveBalances)
58
+ throw new Error(`Failed to get result for getCurrentLiveBalances for ${poolAddress}`);
59
+ const resultGetPoolConfig = decodeThrowError(contractInterface, 'getPoolConfig', data[startIndex++], poolAddress);
60
+ if (!resultGetPoolConfig)
61
+ throw new Error(`Failed to get result for getPoolConfig for ${poolAddress}`);
62
+ const resultTotalSupply = decodeThrowError(contractInterface, 'totalSupply', data[startIndex++], poolAddress);
63
+ if (!resultTotalSupply)
64
+ throw new Error(`Failed to get result for totalSupply for ${poolAddress}`);
65
+ const resultIsPoolPaused = decodeThrowError(contractInterface, 'isPoolPaused', data[startIndex++], poolAddress);
66
+ if (!resultIsPoolPaused)
67
+ throw new Error(`Failed to get result for isPoolPaused for ${poolAddress}`);
68
+ const resultHooksConfig = decodeThrowError(contractInterface, 'getHooksConfig', data[startIndex++], poolAddress);
69
+ if (!resultHooksConfig)
70
+ throw new Error(`Failed to get result for resultHooksConfig for ${poolAddress}`);
71
+ return {
72
+ tokenRates: resultTokenRates.tokenRates.map((r) => BigInt(r)),
73
+ balancesLiveScaled18: resultLiveBalances.balancesLiveScaled18.map((b) => BigInt(b)),
74
+ swapFee: BigInt(resultGetPoolConfig[0].staticSwapFeePercentage),
75
+ aggregateSwapFee: BigInt(resultGetPoolConfig[0].aggregateSwapFeePercentage),
76
+ totalSupply: BigInt(resultTotalSupply[0]),
77
+ scalingFactors: resultTokenRates.decimalScalingFactors.map((r) => BigInt(r)),
78
+ isPoolPaused: resultIsPoolPaused[0],
79
+ hasHook: resultHooksConfig[0].hooksContract !==
80
+ '0x0000000000000000000000000000000000000000',
81
+ };
82
+ },
83
+ },
84
+ ['WEIGHTED']: {
85
+ count: 0,
86
+ ['encode']: (network, contractInterface, address) => {
87
+ return [];
88
+ },
89
+ ['decode']: (contractInterface, poolAddress, data, startIndex) => {
90
+ return {};
91
+ },
92
+ },
93
+ ['STABLE']: {
94
+ count: 2,
95
+ ['encode']: (network, contractInterface, address) => {
96
+ return [
97
+ {
98
+ target: address,
99
+ callData: contractInterface.encodeFunctionData('getAmplificationParameter'),
100
+ },
101
+ {
102
+ target: address,
103
+ callData: contractInterface.encodeFunctionData('getAmplificationState'),
104
+ },
105
+ ];
106
+ },
107
+ ['decode']: (contractInterface, poolAddress, data, startIndex) => {
108
+ const resultAmp = decodeThrowError(contractInterface, 'getAmplificationParameter', data[startIndex++], poolAddress);
109
+ if (!resultAmp)
110
+ throw new Error(`Failed to get result for getAmplificationParameter for ${poolAddress}`);
111
+ const resultAmpState = decodeThrowError(contractInterface, 'getAmplificationState', data[startIndex++], poolAddress);
112
+ if (!resultAmpState)
113
+ throw new Error(`Failed to get result for getAmplificationState for ${poolAddress}`);
114
+ return {
115
+ amp: resultAmp[0].toBigInt(),
116
+ ampIsUpdating: !!resultAmp[1],
117
+ ampStartValue: resultAmpState[0][0].toBigInt(),
118
+ ampEndValue: resultAmpState[0][1].toBigInt(),
119
+ ampStartTime: BigInt(resultAmpState[0][2]),
120
+ ampStopTime: BigInt(resultAmpState[0][3]),
121
+ };
122
+ },
123
+ },
124
+ };
125
+ function decodeThrowError(contractInterface, functionName, resultEntry, poolAddress) {
126
+ if (!resultEntry.success)
127
+ throw new Error(`Failed to execute ${functionName} for ${poolAddress}`);
128
+ return contractInterface.decodeFunctionResult(functionName, resultEntry.returnData);
129
+ }
130
+ exports.decodeThrowError = decodeThrowError;
131
+ // Any data from API will be immutable. Mutable data such as balances, etc will be fetched via onchain/event state.
132
+ async function getOnChainState(network, immutablePoolStateMap, dexHelper, interfaces, blockNumber) {
133
+ const multiCallData = Object.entries(immutablePoolStateMap)
134
+ .map(([address, pool]) => {
135
+ return [
136
+ ...poolOnChain['COMMON'].encode(network, interfaces['VAULT'], address),
137
+ ...poolOnChain[pool.poolType].encode(network, interfaces[pool.poolType], address),
138
+ ];
139
+ })
140
+ .flat();
141
+ // 500 is an arbitrary number chosen based on the blockGasLimit
142
+ const slicedMultiCallData = lodash_1.default.chunk(multiCallData, 500);
143
+ const multicallData = (await Promise.all(slicedMultiCallData.map(async (_multiCallData) => dexHelper.multiContract.methods
144
+ .tryAggregate(false, _multiCallData)
145
+ .call({}, blockNumber)))).flat();
146
+ let i = 0;
147
+ const poolStateMap = Object.fromEntries(Object.entries(immutablePoolStateMap).map(([address, pool]) => {
148
+ const commonMutableData = poolOnChain['COMMON'].decode(interfaces['VAULT'], address, multicallData, i);
149
+ i = i + poolOnChain['COMMON'].count;
150
+ const poolMutableData = poolOnChain[pool.poolType].decode(interfaces[pool.poolType], address, multicallData, i);
151
+ i = i + poolOnChain[pool.poolType].count;
152
+ return [
153
+ address,
154
+ {
155
+ ...pool,
156
+ ...commonMutableData,
157
+ ...poolMutableData,
158
+ },
159
+ ];
160
+ }));
161
+ return poolStateMap;
162
+ }
163
+ exports.getOnChainState = getOnChainState;
164
+ //# sourceMappingURL=getOnChainState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOnChainState.js","sourceRoot":"","sources":["../../../src/dex/balancer-v3/getOnChainState.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ImmutablePoolStateMap } from './types';
2
+ export declare function getPoolsApi(network: number, timestamp?: number): Promise<ImmutablePoolStateMap>;
@@ -0,0 +1,81 @@
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.getPoolsApi = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const config_1 = require("./config");
9
+ const utils_1 = require("ethers/lib/utils");
10
+ function createQuery(networkId, poolTypes, timestamp) {
11
+ const poolTypesString = poolTypes.map(type => `${type}`).join(', ');
12
+ const networkString = config_1.BalancerV3Config.BalancerV3[networkId].apiNetworkName;
13
+ // Build the where clause conditionally
14
+ const whereClause = {
15
+ chainIn: networkString,
16
+ protocolVersionIn: 3,
17
+ hasHook: false,
18
+ poolTypeIn: `[${poolTypesString}]`,
19
+ ...(timestamp && { createTime: `{lt: ${timestamp}}` }),
20
+ };
21
+ // Convert where clause to string, filtering out undefined values
22
+ const whereString = Object.entries(whereClause)
23
+ .map(([key, value]) => `${key}: ${value}`)
24
+ .join(', ');
25
+ return `
26
+ query MyQuery {
27
+ poolGetAggregatorPools(
28
+ where: {${whereString}}
29
+ ) {
30
+ id
31
+ type
32
+ poolTokens {
33
+ address
34
+ weight
35
+ isErc4626
36
+ underlyingToken {
37
+ address
38
+ }
39
+ }
40
+ }
41
+ }
42
+ `;
43
+ }
44
+ function toImmutablePoolStateMap(pools) {
45
+ return pools.reduce((map, pool) => {
46
+ const immutablePoolState = {
47
+ poolAddress: pool.id,
48
+ tokens: pool.poolTokens.map(t => t.address),
49
+ tokensUnderlying: pool.poolTokens.map(t => t.underlyingToken ? t.underlyingToken.address : null),
50
+ weights: pool.poolTokens.map(t => t.weight ? (0, utils_1.parseUnits)(t.weight, 18).toBigInt() : 0n),
51
+ poolType: pool.type,
52
+ // TODO add scalingFactors once API provides them
53
+ // scalingFactors: pool.poolTokens.map(t => parseUnits('1', 18).toBigInt()),
54
+ // TODO Hook support will be added in future PR
55
+ hookType: undefined,
56
+ };
57
+ map[pool.id] = immutablePoolState;
58
+ return map;
59
+ }, {});
60
+ }
61
+ // Any data from API will be immutable. Mutable data such as balances, etc will be fetched via onchain/event state.
62
+ async function getPoolsApi(network, timestamp) {
63
+ try {
64
+ const query = createQuery(network, Object.values(config_1.SUPPORTED_POOLS), timestamp);
65
+ const response = await axios_1.default.post(config_1.apiUrl, {
66
+ query,
67
+ }, {
68
+ headers: {
69
+ 'Content-Type': 'application/json',
70
+ },
71
+ });
72
+ const pools = response.data.data.poolGetAggregatorPools;
73
+ return toImmutablePoolStateMap(pools);
74
+ }
75
+ catch (error) {
76
+ // console.error('Error executing GraphQL query:', error);
77
+ throw error;
78
+ }
79
+ }
80
+ exports.getPoolsApi = getPoolsApi;
81
+ //# sourceMappingURL=getPoolsApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPoolsApi.js","sourceRoot":"","sources":["../../../src/dex/balancer-v3/getPoolsApi.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,qCAAqE;AAErE,4CAA8C;AAuB9C,SAAS,WAAW,CAClB,SAAiB,EACjB,SAA4B,EAC5B,SAAkB;IAElB,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,MAAM,aAAa,GAAG,yBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC;IAC5E,uCAAuC;IACvC,MAAM,WAAW,GAAG;QAClB,OAAO,EAAE,aAAa;QACtB,iBAAiB,EAAE,CAAC;QACpB,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,IAAI,eAAe,GAAG;QAClC,GAAG,CAAC,SAAS,IAAI,EAAE,UAAU,EAAE,QAAQ,SAAS,GAAG,EAAE,CAAC;KACvD,CAAC;IAEF,iEAAiE;IACjE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SAC5C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC;SACzC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;;;kBAGS,WAAW;;;;;;;;;;;;;;GAc1B,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QAChC,MAAM,kBAAkB,GAA6B;YACnD,WAAW,EAAE,IAAI,CAAC,EAAE;YACpB,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3C,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACxC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACrD;YACD,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC/B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CACpD;YACD,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,iDAAiD;YACjD,4EAA4E;YAC5E,+CAA+C;YAC/C,QAAQ,EAAE,SAAS;SACpB,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC;QAClC,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA2B,CAAC,CAAC;AAClC,CAAC;AAED,mHAAmH;AAC5G,KAAK,UAAU,WAAW,CAC/B,OAAe,EACf,SAAkB;IAElB,IAAI;QACF,MAAM,KAAK,GAAG,WAAW,CACvB,OAAO,EACP,MAAM,CAAC,MAAM,CAAC,wBAAe,CAAC,EAC9B,SAAS,CACV,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,eAAM,EACN;YACE,KAAK;SACN,EACD;YACE,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CACF,CAAC;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;QACxD,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;KACvC;IAAC,OAAO,KAAK,EAAE;QACd,0DAA0D;QAC1D,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AA5BD,kCA4BC"}
@@ -0,0 +1,13 @@
1
+ interface PoolToken {
2
+ address: string;
3
+ decimals: number;
4
+ }
5
+ interface Pool {
6
+ address: string;
7
+ poolTokens: PoolToken[];
8
+ dynamicData: {
9
+ totalLiquidity: string;
10
+ };
11
+ }
12
+ export declare function getTopPoolsApi(networkId: number, poolsFilter: string[], count: number): Promise<Pool[]>;
13
+ export {};
@@ -0,0 +1,62 @@
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.getTopPoolsApi = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const config_1 = require("./config");
9
+ function createQuery(networkId, poolsFilter, count) {
10
+ const networkString = config_1.BalancerV3Config.BalancerV3[networkId].apiNetworkName;
11
+ const poolIdString = poolsFilter.map(a => `"${a}"`).join(', ');
12
+ // Build the where clause conditionally
13
+ const whereClause = {
14
+ chainIn: networkString,
15
+ protocolVersionIn: 3,
16
+ hasHook: false,
17
+ idIn: `[${poolIdString}]`,
18
+ };
19
+ // Convert where clause to string, filtering out undefined values
20
+ const whereString = Object.entries(whereClause)
21
+ .map(([key, value]) => `${key}: ${value}`)
22
+ .join(', ');
23
+ return `
24
+ query MyQuery {
25
+ poolGetAggregatorPools(
26
+ where: {${whereString}}
27
+ first: ${count}
28
+ orderBy: totalLiquidity
29
+ orderDirection: desc
30
+ ) {
31
+ address
32
+ poolTokens {
33
+ address
34
+ decimals
35
+ }
36
+ dynamicData {
37
+ totalLiquidity
38
+ }
39
+ }
40
+ }
41
+ `;
42
+ }
43
+ async function getTopPoolsApi(networkId, poolsFilter, count) {
44
+ try {
45
+ const query = createQuery(networkId, poolsFilter, count);
46
+ const response = await axios_1.default.post(config_1.apiUrl, {
47
+ query,
48
+ }, {
49
+ headers: {
50
+ 'Content-Type': 'application/json',
51
+ },
52
+ });
53
+ const pools = response.data.data.poolGetAggregatorPools;
54
+ return pools;
55
+ }
56
+ catch (error) {
57
+ // console.error('Error executing GraphQL query:', error);
58
+ throw error;
59
+ }
60
+ }
61
+ exports.getTopPoolsApi = getTopPoolsApi;
62
+ //# sourceMappingURL=getTopPoolsApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTopPoolsApi.js","sourceRoot":"","sources":["../../../src/dex/balancer-v3/getTopPoolsApi.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,qCAAoD;AAqBpD,SAAS,WAAW,CAClB,SAAiB,EACjB,WAAqB,EACrB,KAAa;IAEb,MAAM,aAAa,GAAG,yBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC;IAC5E,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,uCAAuC;IACvC,MAAM,WAAW,GAAG;QAClB,OAAO,EAAE,aAAa;QACtB,iBAAiB,EAAE,CAAC;QACpB,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,IAAI,YAAY,GAAG;KAC1B,CAAC;IAEF,iEAAiE;IACjE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SAC5C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC;SACzC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;;;kBAGS,WAAW;iBACZ,KAAK;;;;;;;;;;;;;;GAcnB,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,WAAqB,EACrB,KAAa;IAEb,IAAI;QACF,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,eAAM,EACN;YACE,KAAK;SACN,EACD;YACE,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CACF,CAAC;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;QACxD,OAAO,KAAK,CAAC;KACd;IAAC,OAAO,KAAK,EAAE;QACd,0DAA0D;QAC1D,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AAzBD,wCAyBC"}
@@ -0,0 +1,2 @@
1
+ import { UnoptimizedRate } from '../../types';
2
+ export declare function balancerV3Merge(or: UnoptimizedRate): UnoptimizedRate;
@@ -3,37 +3,38 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.traderJoeMerge = void 0;
6
+ exports.balancerV3Merge = void 0;
7
7
  const lodash_1 = __importDefault(require("lodash"));
8
- // We support multihop for TraderJoeV2.1 and TraderJoeV2.2
9
- const TraderJoeV2Forks = ['TraderJoeV2.1', 'TraderJoeV2.2'].map(dexName => dexName.toLowerCase());
10
- function traderJoeMerge(or) {
8
+ function balancerV3Merge(or) {
11
9
  const fixRoute = (rawRate) => {
12
10
  let lastExchange = false;
13
11
  let optimizedRate = new Array();
14
12
  rawRate.forEach((s) => {
15
13
  if (s.swapExchanges.length !== 1 ||
16
- !TraderJoeV2Forks.includes(s.swapExchanges[0].exchange.toLowerCase())) {
14
+ s.swapExchanges[0].exchange.toLowerCase() !== 'balancerv3') {
17
15
  lastExchange = false;
18
16
  optimizedRate.push(s);
17
+ return;
19
18
  }
20
- else if (lastExchange &&
21
- lodash_1.default.last(lastExchange.swapExchanges[0].data.tokenPath).toLowerCase() === s.swapExchanges[0].data.tokenPath[0].toLowerCase()) {
22
- lastExchange.swapExchanges[0].data.tokenPath.push(s.swapExchanges[0].data.tokenPath[1]);
23
- lastExchange.swapExchanges[0].data.binSteps.push(s.swapExchanges[0].data.binSteps[0]);
24
- lastExchange.swapExchanges[0].data.versions.push(s.swapExchanges[0].data.versions[0]);
25
- lastExchange.swapExchanges[0].poolAddresses.push(s.swapExchanges[0].poolAddresses[0]);
19
+ if (lastExchange &&
20
+ lastExchange.swapExchanges[0].exchange.toLowerCase() ===
21
+ s.swapExchanges[0].exchange.toLowerCase() &&
22
+ lodash_1.default.last(lastExchange.swapExchanges[0].data.steps).swapInput.tokenOut.toLowerCase() ===
23
+ s.swapExchanges[0].data.steps[0].swapInput.tokenIn.toLowerCase()) {
24
+ lastExchange.swapExchanges[0].data.steps =
25
+ lastExchange.swapExchanges[0].data.steps.concat(s.swapExchanges[0].data.steps);
26
+ lastExchange.swapExchanges[0].poolAddresses =
27
+ lastExchange.swapExchanges[0].poolAddresses.concat(s.swapExchanges[0].poolAddresses);
26
28
  lastExchange.swapExchanges[0].data.gasUSD = (parseFloat(lastExchange.swapExchanges[0].data.gasUSD) +
27
29
  parseFloat(s.swapExchanges[0].data.gasUSD)).toFixed(6);
28
30
  lastExchange.destToken = s.destToken;
29
31
  lastExchange.destDecimals = s.destDecimals;
30
32
  lastExchange.swapExchanges[0].destAmount =
31
33
  s.swapExchanges[0].destAmount;
34
+ return;
32
35
  }
33
- else {
34
- lastExchange = lodash_1.default.cloneDeep(s);
35
- optimizedRate.push(lastExchange);
36
- }
36
+ lastExchange = lodash_1.default.cloneDeep(s);
37
+ optimizedRate.push(lastExchange);
37
38
  });
38
39
  return optimizedRate;
39
40
  };
@@ -43,5 +44,5 @@ function traderJoeMerge(or) {
43
44
  }));
44
45
  return or;
45
46
  }
46
- exports.traderJoeMerge = traderJoeMerge;
47
+ exports.balancerV3Merge = balancerV3Merge;
47
48
  //# sourceMappingURL=optimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimizer.js","sourceRoot":"","sources":["../../../src/dex/balancer-v3/optimizer.ts"],"names":[],"mappings":";;;;;;AACA,oDAAuB;AAEvB,SAAgB,eAAe,CAAC,EAAmB;IACjD,MAAM,QAAQ,GAAG,CAAC,OAAsB,EAAiB,EAAE;QACzD,IAAI,YAAY,GAAwB,KAAK,CAAC;QAE9C,IAAI,aAAa,GAAG,IAAI,KAAK,EAAe,CAAC;QAE7C,OAAO,CAAC,OAAO,CAAC,CAAC,CAAc,EAAE,EAAE;YACjC,IACE,CAAC,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;gBAC5B,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,YAAY,EAC1D;gBACA,YAAY,GAAG,KAAK,CAAC;gBACrB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACtB,OAAO;aACR;YAED,IACE,YAAY;gBACZ,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE;oBAClD,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE;gBAC3C,gBAAC,CAAC,IAAI,CACG,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAC/C,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE;oBACjC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAClE;gBACA,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;oBACtC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAC7C,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAC9B,CAAC;gBAEJ,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa;oBACzC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAc,CAAC,MAAM,CACjD,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAc,CAClC,CAAC;gBAEJ,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAC1C,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;oBACrD,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAC3C,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAEb,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;gBACrC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;gBAE3C,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU;oBACtC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;gBAEhC,OAAO;aACR;YAED,YAAY,GAAG,gBAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC;IAEF,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpC,GAAG,CAAC;QACJ,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;KACzB,CAAC,CAAC,CAAC;IAEJ,OAAO,EAAE,CAAC;AACZ,CAAC;AA9DD,0CA8DC"}
@@ -0,0 +1,7 @@
1
+ import { PoolState } from '@balancer-labs/balancer-maths';
2
+ import { StableMutableState } from './types';
3
+ export declare const STABLE_GAS_COST = 155000;
4
+ export declare function isStableMutableState(poolState: any): poolState is StableMutableState;
5
+ export declare function getAmplificationParameter(startValue: bigint, endValue: bigint, startTime: bigint, endTime: bigint, timestamp: bigint): bigint;
6
+ export declare function ampUpdateStartedEvent(poolState: PoolState, eventData: any): void;
7
+ export declare function ampUpdateStoppedEvent(poolState: PoolState, eventData: any): void;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ampUpdateStoppedEvent = exports.ampUpdateStartedEvent = exports.getAmplificationParameter = exports.isStableMutableState = exports.STABLE_GAS_COST = void 0;
4
+ const abi_1 = require("@ethersproject/abi");
5
+ // TODO - Update with more accurate
6
+ exports.STABLE_GAS_COST = 155000;
7
+ function isStableMutableState(poolState) {
8
+ return (poolState &&
9
+ typeof poolState === 'object' &&
10
+ 'amp' in poolState &&
11
+ 'ampIsUpdating' in poolState &&
12
+ 'ampStartValue' in poolState &&
13
+ 'ampEndValue' in poolState &&
14
+ 'ampStartTime' in poolState &&
15
+ 'ampStopTime' in poolState);
16
+ }
17
+ exports.isStableMutableState = isStableMutableState;
18
+ // https://github.com/balancer/balancer-v3-monorepo/blob/009f2793abda248b150ccd15c1db25930c96ca82/pkg/pool-stable/contracts/StablePool.sol#L274
19
+ function getAmplificationParameter(startValue, endValue, startTime, endTime, timestamp) {
20
+ let value;
21
+ if (timestamp < endTime) {
22
+ if (endValue > startValue) {
23
+ value =
24
+ startValue +
25
+ ((endValue - startValue) * (timestamp - startTime)) /
26
+ (endTime - startTime);
27
+ }
28
+ else {
29
+ value =
30
+ startValue -
31
+ ((startValue - endValue) * (timestamp - startTime)) /
32
+ (endTime - startTime);
33
+ }
34
+ }
35
+ else {
36
+ value = endValue;
37
+ }
38
+ return value;
39
+ }
40
+ exports.getAmplificationParameter = getAmplificationParameter;
41
+ function ampUpdateStartedEvent(poolState, eventData) {
42
+ // abi.encode(currentValueUint64, endValueUint64, startTimeUint32, endTimeUint32)
43
+ const decodedParams = abi_1.defaultAbiCoder.decode(['uint64', 'uint64', 'uint32', 'uint32'], eventData);
44
+ if (isStableMutableState(poolState)) {
45
+ if (decodedParams[3] > decodedParams[2])
46
+ poolState.ampIsUpdating = true;
47
+ poolState.ampStartValue = decodedParams[0].toBigInt();
48
+ poolState.ampEndValue = decodedParams[1].toBigInt();
49
+ poolState.ampStartTime = BigInt(decodedParams[2]);
50
+ poolState.ampStopTime = BigInt(decodedParams[3]);
51
+ }
52
+ else
53
+ throw new Error("Can't update amp on non-stable pool");
54
+ }
55
+ exports.ampUpdateStartedEvent = ampUpdateStartedEvent;
56
+ function ampUpdateStoppedEvent(poolState, eventData) {
57
+ // abi.encode(currentValue)
58
+ const decodedParams = abi_1.defaultAbiCoder.decode(['uint256'], eventData);
59
+ if (isStableMutableState(poolState)) {
60
+ poolState.ampIsUpdating = false;
61
+ poolState.amp = decodedParams[0].toBigInt();
62
+ poolState.ampStartValue = decodedParams[0].toBigInt();
63
+ poolState.ampEndValue = decodedParams[0].toBigInt();
64
+ // In Contract these are update to timestamp event is called.
65
+ // There doesn't appear to be a way to easily get timestamp non-async so default to 0n which should have no effect
66
+ poolState.ampStartTime = BigInt(0n);
67
+ poolState.ampStopTime = BigInt(0n);
68
+ }
69
+ else
70
+ throw new Error("Can't update amp on non-stable pool");
71
+ }
72
+ exports.ampUpdateStoppedEvent = ampUpdateStoppedEvent;
73
+ //# sourceMappingURL=stablePool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stablePool.js","sourceRoot":"","sources":["../../../src/dex/balancer-v3/stablePool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { BufferState } from '@balancer-labs/balancer-maths';
2
+ import { Address } from '../../types';
3
+ export declare type CommonImmutablePoolState = {
4
+ poolAddress: string;
5
+ poolType: string;
6
+ tokens: string[];
7
+ tokensUnderlying: (string | null)[];
8
+ weights: bigint[];
9
+ hookType: string | undefined;
10
+ };
11
+ export interface CommonMutableState {
12
+ tokenRates: bigint[];
13
+ balancesLiveScaled18: bigint[];
14
+ swapFee: bigint;
15
+ aggregateSwapFee: bigint;
16
+ totalSupply: bigint;
17
+ isPoolPaused: boolean;
18
+ scalingFactors: bigint[];
19
+ hasHook: boolean;
20
+ }
21
+ declare type CommonPoolState = CommonImmutablePoolState & CommonMutableState;
22
+ export declare type PoolState = CommonPoolState | (CommonPoolState & StableMutableState);
23
+ export interface StableMutableState {
24
+ amp: bigint;
25
+ ampIsUpdating: boolean;
26
+ ampStartValue: bigint;
27
+ ampEndValue: bigint;
28
+ ampStartTime: bigint;
29
+ ampStopTime: bigint;
30
+ }
31
+ export declare type PoolStateMap = {
32
+ [address: string]: PoolState;
33
+ };
34
+ export declare type ImmutablePoolStateMap = {
35
+ [address: string]: CommonImmutablePoolState;
36
+ };
37
+ export declare type Step = {
38
+ pool: Address;
39
+ isBuffer: boolean;
40
+ swapInput: {
41
+ tokenIn: Address;
42
+ tokenOut: Address;
43
+ };
44
+ poolState: PoolState | BufferState;
45
+ };
46
+ export declare type BalancerV3Data = {
47
+ steps: Step[];
48
+ };
49
+ export declare type DexParams = {
50
+ apiNetworkName: string;
51
+ vaultAddress: string;
52
+ balancerRouterAddress: string;
53
+ balancerBatchRouterAddress: string;
54
+ };
55
+ export declare type TokenInfo = {
56
+ isBoosted: boolean;
57
+ underlyingToken: string | null;
58
+ mainToken: string;
59
+ index: number;
60
+ rate: bigint;
61
+ };
62
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/balancer-v3/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export declare const WEIGHTED_GAS_COST = 154000;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WEIGHTED_GAS_COST = void 0;
4
+ // https://sepolia.etherscan.io/tx/0xe07958ff341aab57ab96a10347b65979b5b041f6408336d7e160e59bd02f9a40
5
+ exports.WEIGHTED_GAS_COST = 154000;
6
+ //# sourceMappingURL=weightedPool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weightedPool.js","sourceRoot":"","sources":["../../../src/dex/balancer-v3/weightedPool.ts"],"names":[],"mappings":";;;AAAA,qGAAqG;AACxF,QAAA,iBAAiB,GAAG,MAAM,CAAC"}
@@ -6,7 +6,7 @@ export declare const BEBOP_API_URL = "https://api.bebop.xyz";
6
6
  export declare const BEBOP_WS_API_URL = "wss://api.bebop.xyz";
7
7
  export declare const BEBOP_GAS_COST = 120000;
8
8
  export declare const BEBOP_AUTH_NAME = "paraswap";
9
- export declare const BEBOP_QUOTE_TIMEOUT_MS = 2000;
9
+ export declare const BEBOP_QUOTE_TIMEOUT_MS = 3000;
10
10
  export declare const BEBOP_ERRORS_CACHE_KEY = "errors";
11
11
  export declare const BEBOP_RESTRICTED_CACHE_KEY = "restricted";
12
12
  export declare const BEBOP_RESTRICT_TTL_S: number;
@@ -9,7 +9,7 @@ exports.BEBOP_API_URL = 'https://api.bebop.xyz';
9
9
  exports.BEBOP_WS_API_URL = 'wss://api.bebop.xyz';
10
10
  exports.BEBOP_GAS_COST = 120000;
11
11
  exports.BEBOP_AUTH_NAME = 'paraswap';
12
- exports.BEBOP_QUOTE_TIMEOUT_MS = 2000;
12
+ exports.BEBOP_QUOTE_TIMEOUT_MS = 3000;
13
13
  exports.BEBOP_ERRORS_CACHE_KEY = 'errors';
14
14
  exports.BEBOP_RESTRICTED_CACHE_KEY = 'restricted';
15
15
  // Restrict for BEBOP_RESTRICT_TTL_S if an error occured >= BEBOP_RESTRICT_COUNT_THRESHOLD times within BEBOP_RESTRICT_CHECK_INTERVAL_S interval
@@ -0,0 +1,4 @@
1
+ import { DexParams, PricePoolParams } from './types';
2
+ import { DexConfigMap } from '../../types';
3
+ export declare const InceptionConfig: DexConfigMap<DexParams[]>;
4
+ export declare const InceptionPricePoolConfig: DexConfigMap<PricePoolParams>;