@paraswap/dex-lib 4.0.5-fluid-dex-pool-discovery-issue.2 → 4.0.5

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 (206) 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/fluid-dex/fluid-dex.abi.json +25 -579
  5. package/build/abi/{integral/pool.json → inception/inception-ineth-pool.json} +558 -537
  6. package/build/abi/inception/inception-ratio-feed.json +329 -0
  7. package/build/abi/inception/inception-vault.json +991 -0
  8. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +52 -0
  9. package/build/abi/usual-m-smart-m/usualM.abi.json +483 -0
  10. package/build/abi/usual-m-usd0/usualCollateralDao.abi.json +681 -0
  11. package/build/abi/usual-m-wrapped-m/usualM.abi.json +509 -0
  12. package/build/abi/{integral/relayer.json → wombat/pool.json} +474 -721
  13. package/build/dex/aave-v1/aave-v1.d.ts +2 -1
  14. package/build/dex/aave-v1/aave-v1.js +23 -0
  15. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  16. package/build/dex/aave-v2/tokens-avalanche.json +44 -0
  17. package/build/dex/aave-v2/tokens-mainnet.json +188 -0
  18. package/build/dex/aave-v2/tokens-polygon.json +44 -0
  19. package/build/dex/balancer-v3/abi/balancerBatchRouter.d.ts +729 -0
  20. package/build/dex/balancer-v3/abi/balancerBatchRouter.js +732 -0
  21. package/build/dex/balancer-v3/abi/balancerBatchRouter.js.map +1 -0
  22. package/build/dex/balancer-v3/abi/balancerRouter.d.ts +1406 -0
  23. package/build/dex/balancer-v3/abi/balancerRouter.js +1175 -0
  24. package/build/dex/balancer-v3/abi/balancerRouter.js.map +1 -0
  25. package/build/dex/balancer-v3/abi/vaultExtension.V3.d.ts +2081 -0
  26. package/build/dex/balancer-v3/abi/vaultExtension.V3.js +1851 -0
  27. package/build/dex/balancer-v3/abi/vaultExtension.V3.js.map +1 -0
  28. package/build/dex/balancer-v3/balancer-v3-pool.d.ts +1 -0
  29. package/build/dex/balancer-v3/balancer-v3-pool.js +29 -11
  30. package/build/dex/balancer-v3/balancer-v3-pool.js.map +1 -1
  31. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.d.ts +34 -0
  32. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js +406 -0
  33. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js.map +1 -0
  34. package/build/dex/balancer-v3/config.js +1 -5
  35. package/build/dex/balancer-v3/config.js.map +1 -1
  36. package/build/dex/balancer-v3/getOnChainState.d.ts +9 -0
  37. package/build/dex/balancer-v3/getOnChainState.js +38 -5
  38. package/build/dex/balancer-v3/getOnChainState.js.map +1 -1
  39. package/build/dex/balancer-v3/types.d.ts +1 -0
  40. package/build/dex/fluid-dex/fluid-dex-liquidity-proxy.d.ts +1 -1
  41. package/build/dex/fluid-dex/fluid-dex-liquidity-proxy.js.map +1 -1
  42. package/build/dex/fluid-dex/fluid-dex-pool.js +2 -1
  43. package/build/dex/fluid-dex/fluid-dex-pool.js.map +1 -1
  44. package/build/dex/fluid-dex/fluid-dex.d.ts +2 -21
  45. package/build/dex/fluid-dex/fluid-dex.js +37 -108
  46. package/build/dex/fluid-dex/fluid-dex.js.map +1 -1
  47. package/build/dex/fluid-dex/types.d.ts +1 -3
  48. package/build/dex/inception/config.d.ts +4 -0
  49. package/build/dex/inception/config.js +109 -0
  50. package/build/dex/inception/config.js.map +1 -0
  51. package/build/dex/inception/inception-event-pool.d.ts +16 -0
  52. package/build/dex/inception/inception-event-pool.js +49 -0
  53. package/build/dex/inception/inception-event-pool.js.map +1 -0
  54. package/build/dex/inception/inception.d.ts +43 -0
  55. package/build/dex/inception/inception.js +180 -0
  56. package/build/dex/inception/inception.js.map +1 -0
  57. package/build/dex/inception/tokens.d.ts +9 -0
  58. package/build/dex/inception/tokens.js +28 -0
  59. package/build/dex/inception/tokens.js.map +1 -0
  60. package/build/dex/inception/types.d.ts +22 -0
  61. package/build/dex/inception/types.js +3 -0
  62. package/build/dex/inception/types.js.map +1 -0
  63. package/build/dex/inception/utils.d.ts +7 -0
  64. package/build/dex/inception/utils.js +58 -0
  65. package/build/dex/inception/utils.js.map +1 -0
  66. package/build/dex/jarvis.d.ts +2 -1
  67. package/build/dex/jarvis.js +58 -0
  68. package/build/dex/jarvis.js.map +1 -1
  69. package/build/dex/maker-psm/scripts/gem.abi.json +136 -0
  70. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  71. package/build/dex/maker-psm/scripts/validate-state.js +185 -0
  72. package/build/dex/maker-psm/scripts/validate-state.js.map +1 -0
  73. package/build/dex/maker-psm/scripts/vat.abi.json +243 -0
  74. package/build/dex/platypus/platypus.d.ts +2 -1
  75. package/build/dex/platypus/platypus.js +45 -0
  76. package/build/dex/platypus/platypus.js.map +1 -1
  77. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +1 -0
  78. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +53 -0
  79. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +1 -0
  80. package/build/dex/stable-pool.js +1 -8
  81. package/build/dex/stable-pool.js.map +1 -1
  82. package/build/dex/swaap-v1/swaap-v1.d.ts +2 -1
  83. package/build/dex/swaap-v1/swaap-v1.js +14 -0
  84. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  85. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +17 -0
  86. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +64 -0
  87. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +1 -0
  88. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +17 -0
  89. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +79 -0
  90. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +1 -0
  91. package/build/dex/uniswap-v3/uniswap-v3-pricing.d.ts +4 -0
  92. package/build/dex/uniswap-v3/uniswap-v3-pricing.js +43 -0
  93. package/build/dex/uniswap-v3/uniswap-v3-pricing.js.map +1 -0
  94. package/build/dex/uniswap-v3/uniswap-v3-worker.d.ts +1 -0
  95. package/build/dex/uniswap-v3/uniswap-v3-worker.js +10 -0
  96. package/build/dex/uniswap-v3/uniswap-v3-worker.js.map +1 -0
  97. package/build/dex/usual/types.d.ts +13 -0
  98. package/build/dex/usual/types.js +3 -0
  99. package/build/dex/usual/types.js.map +1 -0
  100. package/build/dex/usual/usual-bond.d.ts +18 -0
  101. package/build/dex/usual/usual-bond.js +52 -0
  102. package/build/dex/usual/usual-bond.js.map +1 -0
  103. package/build/dex/usual/usual-m-smart-m.d.ts +17 -0
  104. package/build/dex/usual/usual-m-smart-m.js +50 -0
  105. package/build/dex/usual/usual-m-smart-m.js.map +1 -0
  106. package/build/dex/usual/usual-m-usd0.d.ts +17 -0
  107. package/build/dex/usual/usual-m-usd0.js +51 -0
  108. package/build/dex/usual/usual-m-usd0.js.map +1 -0
  109. package/build/dex/usual/usual-m-wrapped-m.d.ts +17 -0
  110. package/build/dex/usual/usual-m-wrapped-m.js +50 -0
  111. package/build/dex/usual/usual-m-wrapped-m.js.map +1 -0
  112. package/build/dex/usual/usual.d.ts +27 -0
  113. package/build/dex/usual/usual.js +125 -0
  114. package/build/dex/usual/usual.js.map +1 -0
  115. package/build/dex/usual-m-smart-m/config.d.ts +3 -0
  116. package/build/dex/usual-m-smart-m/config.js +13 -0
  117. package/build/dex/usual-m-smart-m/config.js.map +1 -0
  118. package/build/dex/usual-m-smart-m/types.d.ts +7 -0
  119. package/build/dex/usual-m-smart-m/types.js +3 -0
  120. package/build/dex/usual-m-smart-m/types.js.map +1 -0
  121. package/build/dex/usual-m-smart-m/usual-m-smart-m.d.ts +35 -0
  122. package/build/dex/usual-m-smart-m/usual-m-smart-m.js +161 -0
  123. package/build/dex/usual-m-smart-m/usual-m-smart-m.js.map +1 -0
  124. package/build/dex/usual-m-usd0/config.d.ts +3 -0
  125. package/build/dex/usual-m-usd0/config.js +14 -0
  126. package/build/dex/usual-m-usd0/config.js.map +1 -0
  127. package/build/dex/usual-m-usd0/types.d.ts +8 -0
  128. package/build/dex/usual-m-usd0/types.js +3 -0
  129. package/build/dex/usual-m-usd0/types.js.map +1 -0
  130. package/build/dex/usual-m-usd0/usual-m-usd0.d.ts +35 -0
  131. package/build/dex/usual-m-usd0/usual-m-usd0.js +159 -0
  132. package/build/dex/usual-m-usd0/usual-m-usd0.js.map +1 -0
  133. package/build/dex/zerox/index.d.ts +4 -26
  134. package/build/dex/zerox/index.js +50 -42
  135. package/build/dex/zerox/index.js.map +1 -1
  136. package/build/dex/zerox/types.d.ts +29 -0
  137. package/build/dex/zerox/types.js +8 -1
  138. package/build/dex/zerox/types.js.map +1 -1
  139. package/build/lib/pub-sub.d.ts +35 -0
  140. package/build/lib/pub-sub.js +106 -0
  141. package/build/lib/pub-sub.js.map +1 -0
  142. package/package.json +1 -1
  143. package/src/abi/fluid-dex/fluid-dex.abi.json +25 -581
  144. package/src/dex/balancer-v3/balancer-v3-e2e.test.ts +30 -6
  145. package/src/dex/balancer-v3/balancer-v3-integration.test.ts +229 -1
  146. package/src/dex/balancer-v3/balancer-v3-pool.ts +52 -10
  147. package/src/dex/balancer-v3/config.ts +1 -5
  148. package/src/dex/balancer-v3/getOnChainState.ts +80 -6
  149. package/src/dex/balancer-v3/types.ts +1 -0
  150. package/src/dex/fluid-dex/fluid-dex-e2e.test.ts +0 -17
  151. package/src/dex/fluid-dex/fluid-dex-events.test.ts +5 -55
  152. package/src/dex/fluid-dex/fluid-dex-liquidity-proxy.ts +2 -1
  153. package/src/dex/fluid-dex/fluid-dex.ts +69 -221
  154. package/src/dex/fluid-dex/types.ts +1 -3
  155. package/tests/constants-e2e.ts +11 -5
  156. package/.idea/aws.xml +0 -17
  157. package/.idea/codeStyles/Project.xml +0 -19
  158. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  159. package/.idea/misc.xml +0 -6
  160. package/.idea/modules.xml +0 -8
  161. package/.idea/paraswap-dex-lib.iml +0 -9
  162. package/.idea/prettier.xml +0 -7
  163. package/.idea/vcs.xml +0 -6
  164. package/build/abi/integral/factory.json +0 -333
  165. package/build/abi/integral/oracle.json +0 -501
  166. package/build/dex/fluid-dex/fluid-dex-generate-pool.d.ts +0 -49
  167. package/build/dex/fluid-dex/fluid-dex-generate-pool.js +0 -104
  168. package/build/dex/fluid-dex/fluid-dex-generate-pool.js.map +0 -1
  169. package/build/dex/integral/config.d.ts +0 -4
  170. package/build/dex/integral/config.js +0 -20
  171. package/build/dex/integral/config.js.map +0 -1
  172. package/build/dex/integral/context.d.ts +0 -40
  173. package/build/dex/integral/context.js +0 -158
  174. package/build/dex/integral/context.js.map +0 -1
  175. package/build/dex/integral/integral-factory.d.ts +0 -24
  176. package/build/dex/integral/integral-factory.js +0 -95
  177. package/build/dex/integral/integral-factory.js.map +0 -1
  178. package/build/dex/integral/integral-pool.d.ts +0 -50
  179. package/build/dex/integral/integral-pool.js +0 -149
  180. package/build/dex/integral/integral-pool.js.map +0 -1
  181. package/build/dex/integral/integral-pricing.d.ts +0 -18
  182. package/build/dex/integral/integral-pricing.js +0 -114
  183. package/build/dex/integral/integral-pricing.js.map +0 -1
  184. package/build/dex/integral/integral-relayer.d.ts +0 -42
  185. package/build/dex/integral/integral-relayer.js +0 -192
  186. package/build/dex/integral/integral-relayer.js.map +0 -1
  187. package/build/dex/integral/integral-token.d.ts +0 -27
  188. package/build/dex/integral/integral-token.js +0 -59
  189. package/build/dex/integral/integral-token.js.map +0 -1
  190. package/build/dex/integral/integral.d.ts +0 -41
  191. package/build/dex/integral/integral.js +0 -376
  192. package/build/dex/integral/integral.js.map +0 -1
  193. package/build/dex/integral/types.d.ts +0 -85
  194. package/build/dex/integral/types.js +0 -9
  195. package/build/dex/integral/types.js.map +0 -1
  196. package/build/dex/integral/utils-e2e.d.ts +0 -9
  197. package/build/dex/integral/utils-e2e.js +0 -131
  198. package/build/dex/integral/utils-e2e.js.map +0 -1
  199. package/build/dex/integral/utils.d.ts +0 -17
  200. package/build/dex/integral/utils.js +0 -94
  201. package/build/dex/integral/utils.js.map +0 -1
  202. package/build/dex/trader-joe-v2.1/optimizer.d.ts +0 -2
  203. package/build/dex/trader-joe-v2.1/optimizer.js +0 -47
  204. package/build/dex/trader-joe-v2.1/optimizer.js.map +0 -1
  205. package/src/dex/fluid-dex/constants.ts +0 -1
  206. package/src/dex/fluid-dex/fluid-dex-pool.ts +0 -138
@@ -1,94 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPoolBackReferencedFrom = exports.getPoolIdentifier = exports.isInverted = exports.getTickCumulatives = exports.getAveragePrice = exports.getSpotPrice = exports.getPrice = exports.getDecimalsConverter = exports.sortTokens = exports.uint32ToNumber = exports.ceil_div = void 0;
4
- const decoders_1 = require("../../lib/decoders");
5
- const utils_1 = require("../../utils");
6
- const FullMath_1 = require("../uniswap-v3/contract-math/FullMath");
7
- const Oracle_1 = require("../uniswap-v3/contract-math/Oracle");
8
- const TickMath_1 = require("../uniswap-v3/contract-math/TickMath");
9
- function ceil_div(a, b) {
10
- const c = a / b;
11
- if (a != b * c) {
12
- return c + 1n;
13
- }
14
- else {
15
- return c;
16
- }
17
- }
18
- exports.ceil_div = ceil_div;
19
- const uint32ToNumber = (result) => {
20
- return (0, decoders_1.generalDecoder)(result, ['uint32'], 0, value => parseInt(value[0].toString(), 10));
21
- };
22
- exports.uint32ToNumber = uint32ToNumber;
23
- function sortTokens(srcAddress, destAddress) {
24
- return [srcAddress, destAddress].sort((a, b) => (a < b ? -1 : 1));
25
- }
26
- exports.sortTokens = sortTokens;
27
- function getDecimalsConverter(decimals0, decimals1, inverted) {
28
- return (10n **
29
- (18n + BigInt(inverted ? decimals1 - decimals0 : decimals0 - decimals1)));
30
- }
31
- exports.getDecimalsConverter = getDecimalsConverter;
32
- function getPrice(states, inverted) {
33
- const { base, pricing, relayer } = states;
34
- const decimalsConverter = getDecimalsConverter(base.decimals0, base.decimals1, false);
35
- const spotPrice = getSpotPrice(pricing, decimalsConverter);
36
- const averagePrice = getAveragePrice(relayer, pricing, decimalsConverter);
37
- if (inverted) {
38
- return 10n ** 36n / (spotPrice > averagePrice ? spotPrice : averagePrice);
39
- }
40
- else {
41
- return spotPrice < averagePrice ? spotPrice : averagePrice;
42
- }
43
- }
44
- exports.getPrice = getPrice;
45
- function getSpotPrice(pricing, decimalsConverter) {
46
- const sqrtPriceX96 = pricing.slot0.sqrtPriceX96;
47
- const priceX128 = FullMath_1.FullMath.mulDiv(sqrtPriceX96, sqrtPriceX96, 2n ** 64n);
48
- return FullMath_1.FullMath.mulDiv(priceX128, decimalsConverter, 2n ** 128n);
49
- }
50
- exports.getSpotPrice = getSpotPrice;
51
- function getAveragePrice(relayer, pricing, decimalsConverter) {
52
- (0, utils_1._require)(relayer.twapInterval > 0, 'Twap Interval not set');
53
- const secondsAgo = BigInt(relayer.twapInterval);
54
- const secondsAgos = [secondsAgo, 0n];
55
- const tickCumulatives = getTickCumulatives(pricing, secondsAgos);
56
- const delta = tickCumulatives[1] - tickCumulatives[0];
57
- let arithmeticMeanTick = delta / secondsAgo;
58
- if (delta < 0 && delta % secondsAgo != 0n) {
59
- --arithmeticMeanTick;
60
- }
61
- const sqrtRatioX96 = TickMath_1.TickMath.getSqrtRatioAtTick(arithmeticMeanTick);
62
- const ratioX128 = FullMath_1.FullMath.mulDiv(sqrtRatioX96, sqrtRatioX96, 2n ** 64n);
63
- return FullMath_1.FullMath.mulDiv(ratioX128, decimalsConverter, 2n ** 128n);
64
- }
65
- exports.getAveragePrice = getAveragePrice;
66
- function getTickCumulatives(poolState, secondsAgos) {
67
- const { tickCumulatives } = secondsAgos.reduce((memo, secondsAgo, i) => {
68
- [memo.tickCumulatives[i], memo.secondsPerLiquidityCumulativeX128s[i]] =
69
- Oracle_1.Oracle.observeSingle(poolState, BigInt.asUintN(32, poolState.blockTimestamp), secondsAgo, poolState.slot0.tick, poolState.slot0.observationIndex, poolState.liquidity, poolState.slot0.observationCardinality);
70
- return memo;
71
- }, {
72
- tickCumulatives: Array(secondsAgos.length),
73
- secondsPerLiquidityCumulativeX128s: Array(secondsAgos.length),
74
- });
75
- return tickCumulatives;
76
- }
77
- exports.getTickCumulatives = getTickCumulatives;
78
- function isInverted(tokenIn, tokenOut) {
79
- const [, token1] = tokenIn.toLowerCase() < tokenOut.toLowerCase()
80
- ? [tokenIn, tokenOut]
81
- : [tokenOut, tokenIn];
82
- return tokenIn === token1;
83
- }
84
- exports.isInverted = isInverted;
85
- function getPoolIdentifier(dexKey, srcAddress, destAddress) {
86
- const tokenAddresses = sortTokens(srcAddress.toLowerCase(), destAddress.toLowerCase()).join('_');
87
- return `${dexKey}_${tokenAddresses}`;
88
- }
89
- exports.getPoolIdentifier = getPoolIdentifier;
90
- function getPoolBackReferencedFrom(context, poolAddress) {
91
- return Object.entries(context.pools).find(([, pool]) => pool.base?.poolAddress === poolAddress);
92
- }
93
- exports.getPoolBackReferencedFrom = getPoolBackReferencedFrom;
94
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/dex/integral/utils.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { UnoptimizedRate } from '../../types';
2
- export declare function traderJoeMerge(or: UnoptimizedRate): UnoptimizedRate;
@@ -1,47 +0,0 @@
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.traderJoeMerge = void 0;
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) {
11
- const fixRoute = (rawRate) => {
12
- let lastExchange = false;
13
- let optimizedRate = new Array();
14
- rawRate.forEach((s) => {
15
- if (s.swapExchanges.length !== 1 ||
16
- !TraderJoeV2Forks.includes(s.swapExchanges[0].exchange.toLowerCase())) {
17
- lastExchange = false;
18
- optimizedRate.push(s);
19
- }
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]);
26
- lastExchange.swapExchanges[0].data.gasUSD = (parseFloat(lastExchange.swapExchanges[0].data.gasUSD) +
27
- parseFloat(s.swapExchanges[0].data.gasUSD)).toFixed(6);
28
- lastExchange.destToken = s.destToken;
29
- lastExchange.destDecimals = s.destDecimals;
30
- lastExchange.swapExchanges[0].destAmount =
31
- s.swapExchanges[0].destAmount;
32
- }
33
- else {
34
- lastExchange = lodash_1.default.cloneDeep(s);
35
- optimizedRate.push(lastExchange);
36
- }
37
- });
38
- return optimizedRate;
39
- };
40
- or.bestRoute = or.bestRoute.map(r => ({
41
- ...r,
42
- swaps: fixRoute(r.swaps),
43
- }));
44
- return or;
45
- }
46
- exports.traderJoeMerge = traderJoeMerge;
47
- //# sourceMappingURL=optimizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"optimizer.js","sourceRoot":"","sources":["../../../src/dex/trader-joe-v2.1/optimizer.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export const MIN_SWAP_LIQUIDITY = 10n ** 4n;
@@ -1,138 +0,0 @@
1
- import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
2
- import { DeepReadonly } from 'ts-essentials';
3
- import { Address, Log, Logger } from '../../types';
4
- import { IDexHelper } from '../../dex-helper';
5
- import { Interface } from '@ethersproject/abi';
6
- import FluidDexPoolABI from '../../abi/fluid-dex/fluid-dex.abi.json';
7
- import { catchParseLogError } from '../../utils';
8
- import { ethers } from 'ethers';
9
- import { uint256ToBigInt } from '../../lib/decoders';
10
- import { DecodedStateMultiCallResultWithRelativeBitmaps } from '../uniswap-v3/types';
11
-
12
- const {
13
- utils: { hexlify, hexZeroPad },
14
- } = ethers;
15
-
16
- type PoolState = {
17
- isSwapAndArbitragePaused: boolean;
18
- };
19
-
20
- export class FluidDexEventPool extends StatefulEventSubscriber<PoolState> {
21
- handlers: {
22
- [event: string]: (
23
- event: any,
24
- state: DeepReadonly<PoolState>,
25
- log: Readonly<Log>,
26
- ) => DeepReadonly<PoolState> | null;
27
- } = {};
28
-
29
- logDecoder: (log: Log) => any;
30
- addressesSubscribed: Address[];
31
- protected poolIface = new Interface(FluidDexPoolABI);
32
-
33
- constructor(
34
- readonly parentName: string,
35
- readonly poolAddress: string,
36
- protected network: number,
37
- protected dexHelper: IDexHelper,
38
- logger: Logger,
39
- ) {
40
- super(parentName, 'pool', dexHelper, logger);
41
-
42
- this.logDecoder = (log: Log) => this.poolIface.parseLog(log);
43
- this.addressesSubscribed = [poolAddress];
44
-
45
- // Add handlers
46
- this.handlers['LogPauseSwapAndArbitrage'] =
47
- this.handleLogPauseSwapAndArbitrage.bind(this);
48
- this.handlers['LogUnpauseSwapAndArbitrage'] =
49
- this.handleLogUnpauseSwapAndArbitrage.bind(this);
50
- }
51
-
52
- /**
53
- * The function is called every time any of the subscribed
54
- * addresses release log. The function accepts the current
55
- * state, updates the state according to the log, and returns
56
- * the updated state.
57
- * @param state - Current state of event subscriber
58
- * @param log - Log released by one of the subscribed addresses
59
- * @returns Updates state of the event subscriber after the log
60
- */
61
- async processLog(
62
- state: DeepReadonly<PoolState>,
63
- log: Readonly<Log>,
64
- ): Promise<DeepReadonly<PoolState> | null> {
65
- try {
66
- let event;
67
- try {
68
- event = this.logDecoder(log);
69
- } catch (e) {
70
- return null;
71
- }
72
-
73
- if (event.name in this.handlers) {
74
- return this.handlers[event.name](event, state, log);
75
- }
76
- } catch (e) {
77
- catchParseLogError(e, this.logger);
78
- }
79
-
80
- return null;
81
- }
82
-
83
- handleLogPauseSwapAndArbitrage(): PoolState {
84
- return { isSwapAndArbitragePaused: true };
85
- }
86
-
87
- handleLogUnpauseSwapAndArbitrage(): PoolState {
88
- return { isSwapAndArbitragePaused: false };
89
- }
90
-
91
- async getStateOrGenerate(
92
- blockNumber: number,
93
- readonly: boolean = false,
94
- ): Promise<DeepReadonly<PoolState>> {
95
- let state = this.getState(blockNumber);
96
- if (!state) {
97
- state = await this.generateState(blockNumber);
98
- if (!readonly) this.setState(state, blockNumber);
99
- }
100
- return state;
101
- }
102
-
103
- /**
104
- * The function generates state using on-chain calls. This
105
- * function is called to regenerate state if the event based
106
- * system fails to fetch events and the local state is no
107
- * more correct.
108
- * @param blockNumber - Blocknumber for which the state should
109
- * should be generated
110
- * @returns state of the event subscriber at blocknumber
111
- */
112
- async generateState(blockNumber: number): Promise<DeepReadonly<PoolState>> {
113
- const multicallData = [
114
- {
115
- target: this.addressesSubscribed[0],
116
- callData: this.poolIface.encodeFunctionData('readFromStorage', [
117
- hexZeroPad(hexlify(1), 32),
118
- ]),
119
- decodeFunction: uint256ToBigInt,
120
- },
121
- ];
122
-
123
- const storageResults = await this.dexHelper.multiWrapper.tryAggregate<
124
- bigint | DecodedStateMultiCallResultWithRelativeBitmaps
125
- >(
126
- false,
127
- multicallData,
128
- blockNumber,
129
- this.dexHelper.multiWrapper.defaultBatchSize,
130
- false,
131
- );
132
-
133
- const isSwapAndArbitragePaused =
134
- BigInt(storageResults[0].returnData.toString()) >> 255n === 1n;
135
-
136
- return { isSwapAndArbitragePaused };
137
- }
138
- }