@paraswap/dex-lib 4.0.6-rfq-pub-sub.3 → 4.0.6

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 (204) hide show
  1. package/.idea/aws.xml +17 -0
  2. package/.idea/codeStyles/Project.xml +19 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/misc.xml +6 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/paraswap-dex-lib.iml +9 -0
  7. package/.idea/prettier.xml +7 -0
  8. package/.idea/vcs.xml +6 -0
  9. package/build/abi/fluid-dex/fluid-dex.abi.json +579 -25
  10. package/build/abi/integral/factory.json +333 -0
  11. package/build/abi/integral/oracle.json +501 -0
  12. package/build/abi/{inception/inception-ineth-pool.json → integral/pool.json} +522 -543
  13. package/build/abi/{wombat/pool.json → integral/relayer.json} +720 -473
  14. package/build/dex/aave-v1/aave-v1.d.ts +1 -2
  15. package/build/dex/aave-v1/aave-v1.js +0 -23
  16. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  17. package/build/dex/fluid-dex/fluid-dex-generate-pool.d.ts +49 -0
  18. package/build/dex/fluid-dex/fluid-dex-generate-pool.js +104 -0
  19. package/build/dex/fluid-dex/fluid-dex-generate-pool.js.map +1 -0
  20. package/build/dex/fluid-dex/fluid-dex-liquidity-proxy.d.ts +1 -1
  21. package/build/dex/fluid-dex/fluid-dex-liquidity-proxy.js.map +1 -1
  22. package/build/dex/fluid-dex/fluid-dex-pool.js +1 -2
  23. package/build/dex/fluid-dex/fluid-dex-pool.js.map +1 -1
  24. package/build/dex/fluid-dex/fluid-dex.d.ts +21 -2
  25. package/build/dex/fluid-dex/fluid-dex.js +108 -37
  26. package/build/dex/fluid-dex/fluid-dex.js.map +1 -1
  27. package/build/dex/fluid-dex/types.d.ts +3 -1
  28. package/build/dex/generic-rfq/generic-rfq.js +2 -1
  29. package/build/dex/generic-rfq/generic-rfq.js.map +1 -1
  30. package/build/dex/generic-rfq/rate-fetcher.d.ts +1 -4
  31. package/build/dex/generic-rfq/rate-fetcher.js +20 -52
  32. package/build/dex/generic-rfq/rate-fetcher.js.map +1 -1
  33. package/build/dex/integral/config.d.ts +4 -0
  34. package/build/dex/integral/config.js +20 -0
  35. package/build/dex/integral/config.js.map +1 -0
  36. package/build/dex/integral/context.d.ts +40 -0
  37. package/build/dex/integral/context.js +158 -0
  38. package/build/dex/integral/context.js.map +1 -0
  39. package/build/dex/integral/integral-factory.d.ts +24 -0
  40. package/build/dex/integral/integral-factory.js +95 -0
  41. package/build/dex/integral/integral-factory.js.map +1 -0
  42. package/build/dex/integral/integral-pool.d.ts +50 -0
  43. package/build/dex/integral/integral-pool.js +149 -0
  44. package/build/dex/integral/integral-pool.js.map +1 -0
  45. package/build/dex/integral/integral-pricing.d.ts +18 -0
  46. package/build/dex/integral/integral-pricing.js +114 -0
  47. package/build/dex/integral/integral-pricing.js.map +1 -0
  48. package/build/dex/integral/integral-relayer.d.ts +42 -0
  49. package/build/dex/integral/integral-relayer.js +192 -0
  50. package/build/dex/integral/integral-relayer.js.map +1 -0
  51. package/build/dex/integral/integral-token.d.ts +27 -0
  52. package/build/dex/integral/integral-token.js +59 -0
  53. package/build/dex/integral/integral-token.js.map +1 -0
  54. package/build/dex/integral/integral.d.ts +41 -0
  55. package/build/dex/integral/integral.js +376 -0
  56. package/build/dex/integral/integral.js.map +1 -0
  57. package/build/dex/integral/types.d.ts +85 -0
  58. package/build/dex/integral/types.js +9 -0
  59. package/build/dex/integral/types.js.map +1 -0
  60. package/build/dex/integral/utils-e2e.d.ts +9 -0
  61. package/build/dex/integral/utils-e2e.js +131 -0
  62. package/build/dex/integral/utils-e2e.js.map +1 -0
  63. package/build/dex/integral/utils.d.ts +17 -0
  64. package/build/dex/integral/utils.js +94 -0
  65. package/build/dex/integral/utils.js.map +1 -0
  66. package/build/dex/jarvis.d.ts +1 -2
  67. package/build/dex/jarvis.js +0 -58
  68. package/build/dex/jarvis.js.map +1 -1
  69. package/build/dex/platypus/platypus.d.ts +1 -2
  70. package/build/dex/platypus/platypus.js +0 -45
  71. package/build/dex/platypus/platypus.js.map +1 -1
  72. package/build/dex/stable-pool.js +8 -1
  73. package/build/dex/stable-pool.js.map +1 -1
  74. package/build/dex/swaap-v1/swaap-v1.d.ts +1 -2
  75. package/build/dex/swaap-v1/swaap-v1.js +0 -14
  76. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  77. package/build/dex/trader-joe-v2.1/optimizer.d.ts +2 -0
  78. package/build/dex/trader-joe-v2.1/optimizer.js +47 -0
  79. package/build/dex/trader-joe-v2.1/optimizer.js.map +1 -0
  80. package/build/dex/zerox/index.d.ts +26 -4
  81. package/build/dex/zerox/index.js +42 -50
  82. package/build/dex/zerox/index.js.map +1 -1
  83. package/build/dex/zerox/types.d.ts +0 -29
  84. package/build/dex/zerox/types.js +1 -8
  85. package/build/dex/zerox/types.js.map +1 -1
  86. package/build/dex-helper/dummy-dex-helper.js +0 -7
  87. package/build/dex-helper/dummy-dex-helper.js.map +1 -1
  88. package/build/dex-helper/icache.d.ts +0 -2
  89. package/package.json +1 -1
  90. package/src/abi/fluid-dex/fluid-dex.abi.json +581 -25
  91. package/src/dex/fluid-dex/constants.ts +1 -0
  92. package/src/dex/fluid-dex/fluid-dex-e2e.test.ts +17 -0
  93. package/src/dex/fluid-dex/fluid-dex-events.test.ts +55 -5
  94. package/src/dex/fluid-dex/fluid-dex-liquidity-proxy.ts +1 -2
  95. package/src/dex/fluid-dex/fluid-dex-pool.ts +138 -0
  96. package/src/dex/fluid-dex/fluid-dex.ts +221 -69
  97. package/src/dex/fluid-dex/types.ts +3 -1
  98. package/src/dex/generic-rfq/generic-rfq.ts +6 -1
  99. package/src/dex/generic-rfq/rate-fetcher.ts +42 -77
  100. package/src/dex-helper/dummy-dex-helper.ts +0 -13
  101. package/src/dex-helper/icache.ts +0 -4
  102. package/tests/constants-e2e.ts +5 -0
  103. package/.vscode/launch.json +0 -53
  104. package/.vscode/settings.json +0 -2
  105. package/.vscode/tasks.json +0 -15
  106. package/build/abi/inception/inception-ratio-feed.json +0 -329
  107. package/build/abi/inception/inception-vault.json +0 -991
  108. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +0 -52
  109. package/build/abi/usual-m-smart-m/usualM.abi.json +0 -483
  110. package/build/abi/usual-m-usd0/usualCollateralDao.abi.json +0 -681
  111. package/build/abi/usual-m-wrapped-m/usualM.abi.json +0 -509
  112. package/build/dex/aave-v2/tokens-avalanche.json +0 -44
  113. package/build/dex/aave-v2/tokens-mainnet.json +0 -188
  114. package/build/dex/aave-v2/tokens-polygon.json +0 -44
  115. package/build/dex/balancer-v3/abi/balancerBatchRouter.d.ts +0 -729
  116. package/build/dex/balancer-v3/abi/balancerBatchRouter.js +0 -732
  117. package/build/dex/balancer-v3/abi/balancerBatchRouter.js.map +0 -1
  118. package/build/dex/balancer-v3/abi/balancerRouter.d.ts +0 -1406
  119. package/build/dex/balancer-v3/abi/balancerRouter.js +0 -1175
  120. package/build/dex/balancer-v3/abi/balancerRouter.js.map +0 -1
  121. package/build/dex/balancer-v3/abi/vaultExtension.V3.d.ts +0 -2081
  122. package/build/dex/balancer-v3/abi/vaultExtension.V3.js +0 -1851
  123. package/build/dex/balancer-v3/abi/vaultExtension.V3.js.map +0 -1
  124. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.d.ts +0 -34
  125. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js +0 -406
  126. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js.map +0 -1
  127. package/build/dex/inception/config.d.ts +0 -4
  128. package/build/dex/inception/config.js +0 -109
  129. package/build/dex/inception/config.js.map +0 -1
  130. package/build/dex/inception/inception-event-pool.d.ts +0 -16
  131. package/build/dex/inception/inception-event-pool.js +0 -49
  132. package/build/dex/inception/inception-event-pool.js.map +0 -1
  133. package/build/dex/inception/inception.d.ts +0 -43
  134. package/build/dex/inception/inception.js +0 -180
  135. package/build/dex/inception/inception.js.map +0 -1
  136. package/build/dex/inception/tokens.d.ts +0 -9
  137. package/build/dex/inception/tokens.js +0 -28
  138. package/build/dex/inception/tokens.js.map +0 -1
  139. package/build/dex/inception/types.d.ts +0 -22
  140. package/build/dex/inception/types.js +0 -3
  141. package/build/dex/inception/types.js.map +0 -1
  142. package/build/dex/inception/utils.d.ts +0 -7
  143. package/build/dex/inception/utils.js +0 -58
  144. package/build/dex/inception/utils.js.map +0 -1
  145. package/build/dex/maker-psm/scripts/gem.abi.json +0 -136
  146. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  147. package/build/dex/maker-psm/scripts/validate-state.js +0 -185
  148. package/build/dex/maker-psm/scripts/validate-state.js.map +0 -1
  149. package/build/dex/maker-psm/scripts/vat.abi.json +0 -243
  150. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +0 -1
  151. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +0 -53
  152. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +0 -1
  153. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +0 -17
  154. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +0 -64
  155. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +0 -1
  156. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +0 -17
  157. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +0 -79
  158. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +0 -1
  159. package/build/dex/uniswap-v3/uniswap-v3-pricing.d.ts +0 -4
  160. package/build/dex/uniswap-v3/uniswap-v3-pricing.js +0 -43
  161. package/build/dex/uniswap-v3/uniswap-v3-pricing.js.map +0 -1
  162. package/build/dex/uniswap-v3/uniswap-v3-worker.d.ts +0 -1
  163. package/build/dex/uniswap-v3/uniswap-v3-worker.js +0 -10
  164. package/build/dex/uniswap-v3/uniswap-v3-worker.js.map +0 -1
  165. package/build/dex/usual/types.d.ts +0 -13
  166. package/build/dex/usual/types.js +0 -3
  167. package/build/dex/usual/types.js.map +0 -1
  168. package/build/dex/usual/usual-bond.d.ts +0 -18
  169. package/build/dex/usual/usual-bond.js +0 -52
  170. package/build/dex/usual/usual-bond.js.map +0 -1
  171. package/build/dex/usual/usual-m-smart-m.d.ts +0 -17
  172. package/build/dex/usual/usual-m-smart-m.js +0 -50
  173. package/build/dex/usual/usual-m-smart-m.js.map +0 -1
  174. package/build/dex/usual/usual-m-usd0.d.ts +0 -17
  175. package/build/dex/usual/usual-m-usd0.js +0 -51
  176. package/build/dex/usual/usual-m-usd0.js.map +0 -1
  177. package/build/dex/usual/usual-m-wrapped-m.d.ts +0 -17
  178. package/build/dex/usual/usual-m-wrapped-m.js +0 -50
  179. package/build/dex/usual/usual-m-wrapped-m.js.map +0 -1
  180. package/build/dex/usual/usual.d.ts +0 -27
  181. package/build/dex/usual/usual.js +0 -125
  182. package/build/dex/usual/usual.js.map +0 -1
  183. package/build/dex/usual-m-smart-m/config.d.ts +0 -3
  184. package/build/dex/usual-m-smart-m/config.js +0 -13
  185. package/build/dex/usual-m-smart-m/config.js.map +0 -1
  186. package/build/dex/usual-m-smart-m/types.d.ts +0 -7
  187. package/build/dex/usual-m-smart-m/types.js +0 -3
  188. package/build/dex/usual-m-smart-m/types.js.map +0 -1
  189. package/build/dex/usual-m-smart-m/usual-m-smart-m.d.ts +0 -35
  190. package/build/dex/usual-m-smart-m/usual-m-smart-m.js +0 -161
  191. package/build/dex/usual-m-smart-m/usual-m-smart-m.js.map +0 -1
  192. package/build/dex/usual-m-usd0/config.d.ts +0 -3
  193. package/build/dex/usual-m-usd0/config.js +0 -14
  194. package/build/dex/usual-m-usd0/config.js.map +0 -1
  195. package/build/dex/usual-m-usd0/types.d.ts +0 -8
  196. package/build/dex/usual-m-usd0/types.js +0 -3
  197. package/build/dex/usual-m-usd0/types.js.map +0 -1
  198. package/build/dex/usual-m-usd0/usual-m-usd0.d.ts +0 -35
  199. package/build/dex/usual-m-usd0/usual-m-usd0.js +0 -159
  200. package/build/dex/usual-m-usd0/usual-m-usd0.js.map +0 -1
  201. package/build/lib/pub-sub.d.ts +0 -39
  202. package/build/lib/pub-sub.js +0 -133
  203. package/build/lib/pub-sub.js.map +0 -1
  204. package/src/lib/pub-sub.ts +0 -174
@@ -1,5 +1,5 @@
1
1
  import { Interface } from '@ethersproject/abi';
2
- import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, SimpleExchangeParam, PoolLiquidity, Logger, NumberAsString, DexExchangeParam } from '../../types';
2
+ import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, SimpleExchangeParam, PoolLiquidity, Logger } from '../../types';
3
3
  import { SwapSide, Network } from '../../constants';
4
4
  import { IDex } from '../../dex/idex';
5
5
  import { IDexHelper } from '../../dex-helper/idex-helper';
@@ -28,7 +28,6 @@ export declare class AaveV1 extends SimpleExchange implements IDex<AaveV1Data, A
28
28
  getCalldataGasCost(poolPrices: PoolPrices<AaveV1Data>): number | number[];
29
29
  getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: AaveV1Data, side: SwapSide): AdapterExchangeParam;
30
30
  getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: AaveV1Data, side: SwapSide): Promise<SimpleExchangeParam>;
31
- getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: AaveV1Data, side: SwapSide): DexExchangeParam;
32
31
  updatePoolState(): Promise<void>;
33
32
  getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
34
33
  }
@@ -139,29 +139,6 @@ class AaveV1 extends simple_exchange_1.SimpleExchange {
139
139
  const swapData = Interface.encodeFunctionData(swapFunction, swapFunctionParams);
140
140
  return this.buildSimpleParamWithoutWETHConversion(srcToken, amount, destToken, destAmount, swapData, swapCallee, spender);
141
141
  }
142
- // DEAD
143
- getDexParam(srcToken, destToken, srcAmount, destAmount, recipient, data, side) {
144
- const amount = side === constants_1.SwapSide.SELL ? srcAmount : destAmount;
145
- const [Interface, swapFunction, swapFunctionParams, swapCallee] = (() => {
146
- if (data.fromAToken) {
147
- return [this.aContract, AaveV1Functions.redeem, [amount], srcToken];
148
- }
149
- return [
150
- this.aavePool,
151
- AaveV1Functions.deposit,
152
- [srcToken, amount, REF_CODE],
153
- AAVE_LENDING_POOL,
154
- ];
155
- })();
156
- const exchangeData = Interface.encodeFunctionData(swapFunction, swapFunctionParams);
157
- return {
158
- needWrapNative: this.needWrapNative,
159
- dexFuncHasRecipient: false,
160
- exchangeData,
161
- targetExchange: swapCallee,
162
- returnAmountPos: undefined,
163
- };
164
- }
165
142
  // This is called once before getTopPoolsForToken is
166
143
  // called for multiple tokens. This can be helpful to
167
144
  // update common state required for calculating
@@ -1 +1 @@
1
- {"version":3,"file":"aave-v1.js","sourceRoot":"","sources":["../../../src/dex/aave-v1/aave-v1.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aave-v1.js","sourceRoot":"","sources":["../../../src/dex/aave-v1/aave-v1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { Interface } from '@ethersproject/abi';
2
+ import { BytesLike } from 'ethers/lib/utils';
3
+ import { DeepReadonly } from 'ts-essentials';
4
+ import { Log, Logger } from '../../types';
5
+ import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
6
+ import { IDexHelper } from '../../dex-helper/idex-helper';
7
+ import { CommonAddresses, Pool } from './types';
8
+ import { MultiResult } from '../../lib/multi-wrapper';
9
+ import { Address } from '../../types';
10
+ export declare class FluidDexCommonAddresses extends StatefulEventSubscriber<Pool[]> {
11
+ readonly parentName: string;
12
+ readonly commonAddresses: CommonAddresses;
13
+ protected network: number;
14
+ protected dexHelper: IDexHelper;
15
+ handlers: {
16
+ [event: string]: (event: any, state: DeepReadonly<Pool[]>, log: Readonly<Log>) => Promise<DeepReadonly<Pool[]> | null>;
17
+ };
18
+ logDecoder: (log: Log) => any;
19
+ addressesSubscribed: Address[];
20
+ protected dexFactoryIface: Interface;
21
+ protected resolverIface: Interface;
22
+ constructor(parentName: string, commonAddresses: CommonAddresses, network: number, dexHelper: IDexHelper, logger: Logger);
23
+ /**
24
+ * Handle a trade rate change on the pool.
25
+ */
26
+ handleDexDeployed(event: any, state: DeepReadonly<Pool[]>, log: Readonly<Log>): Promise<DeepReadonly<Pool[]> | null>;
27
+ decodePool: (result: MultiResult<BytesLike> | BytesLike) => Pool;
28
+ /**
29
+ * The function is called every time any of the subscribed
30
+ * addresses release log. The function accepts the current
31
+ * state, updates the state according to the log, and returns
32
+ * the updated state.
33
+ * @param state - Current state of event subscriber
34
+ * @param log - Log released by one of the subscribed addresses
35
+ * @returns Updates state of the event subscriber after the log
36
+ */
37
+ processLog(state: DeepReadonly<Pool[]>, log: Readonly<Log>): Promise<DeepReadonly<Pool[]> | null>;
38
+ getStateOrGenerate(blockNumber: number, readonly?: boolean): Promise<DeepReadonly<Pool[]>>;
39
+ /**
40
+ * The function generates state using on-chain calls. This
41
+ * function is called to regenerate state if the event based
42
+ * system fails to fetch events and the local state is no
43
+ * more correct.
44
+ * @param blockNumber - Blocknumber for which the state should
45
+ * should be generated
46
+ * @returns state of the event subscriber at blocknumber
47
+ */
48
+ generateState(blockNumber: number): Promise<DeepReadonly<Pool[]>>;
49
+ }
@@ -0,0 +1,104 @@
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.FluidDexCommonAddresses = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const utils_1 = require("../../utils");
9
+ const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
10
+ const resolver_abi_json_1 = __importDefault(require("../../abi/fluid-dex/resolver.abi.json"));
11
+ const dexFactory_abi_json_1 = __importDefault(require("../../abi/fluid-dex/dexFactory.abi.json"));
12
+ const decoders_1 = require("../../lib/decoders");
13
+ const ethers_1 = require("ethers");
14
+ class FluidDexCommonAddresses extends stateful_event_subscriber_1.StatefulEventSubscriber {
15
+ constructor(parentName, commonAddresses, network, dexHelper, logger) {
16
+ super(parentName, 'getAllPools', dexHelper, logger);
17
+ this.parentName = parentName;
18
+ this.commonAddresses = commonAddresses;
19
+ this.network = network;
20
+ this.dexHelper = dexHelper;
21
+ this.handlers = {};
22
+ this.dexFactoryIface = new abi_1.Interface(dexFactory_abi_json_1.default);
23
+ this.resolverIface = new abi_1.Interface(resolver_abi_json_1.default);
24
+ this.decodePool = (result) => {
25
+ return (0, decoders_1.generalDecoder)(result, ['tuple(address pool, address token0, address token1, uint256 fee)'], undefined, decoded => {
26
+ return {
27
+ address: decoded[0].toLowerCase(),
28
+ token0: decoded[1].toLowerCase(),
29
+ token1: decoded[2].toLowerCase(),
30
+ };
31
+ });
32
+ };
33
+ this.logDecoder = (log) => this.dexFactoryIface.parseLog(log);
34
+ this.addressesSubscribed = [commonAddresses.dexFactory];
35
+ // Add handlers
36
+ this.handlers['DexDeployed'] = this.handleDexDeployed.bind(this);
37
+ }
38
+ /**
39
+ * Handle a trade rate change on the pool.
40
+ */
41
+ async handleDexDeployed(event, state, log) {
42
+ const blockNumber_ = await this.dexHelper.provider.getBlockNumber();
43
+ return this.getStateOrGenerate(blockNumber_, false);
44
+ }
45
+ /**
46
+ * The function is called every time any of the subscribed
47
+ * addresses release log. The function accepts the current
48
+ * state, updates the state according to the log, and returns
49
+ * the updated state.
50
+ * @param state - Current state of event subscriber
51
+ * @param log - Log released by one of the subscribed addresses
52
+ * @returns Updates state of the event subscriber after the log
53
+ */
54
+ async processLog(state, log) {
55
+ try {
56
+ let event;
57
+ try {
58
+ event = this.logDecoder(log);
59
+ }
60
+ catch (e) {
61
+ return null;
62
+ }
63
+ if (event.name in this.handlers) {
64
+ return await this.handlers[event.name](event, state, log);
65
+ }
66
+ }
67
+ catch (e) {
68
+ (0, utils_1.catchParseLogError)(e, this.logger);
69
+ }
70
+ return null;
71
+ }
72
+ async getStateOrGenerate(blockNumber, readonly = false) {
73
+ let state = this.getState(blockNumber);
74
+ if (!state) {
75
+ state = await this.generateState(blockNumber);
76
+ if (!readonly)
77
+ this.setState(state, blockNumber);
78
+ }
79
+ return state;
80
+ }
81
+ /**
82
+ * The function generates state using on-chain calls. This
83
+ * function is called to regenerate state if the event based
84
+ * system fails to fetch events and the local state is no
85
+ * more correct.
86
+ * @param blockNumber - Blocknumber for which the state should
87
+ * should be generated
88
+ * @returns state of the event subscriber at blocknumber
89
+ */
90
+ async generateState(blockNumber) {
91
+ const resolverContract = new ethers_1.Contract(this.commonAddresses.resolver, resolver_abi_json_1.default, this.dexHelper.provider);
92
+ const rawResult = await resolverContract.callStatic.getAllPools({
93
+ blockTag: blockNumber,
94
+ });
95
+ const pools = rawResult.map((result) => ({
96
+ address: result[0],
97
+ token0: result[1],
98
+ token1: result[2],
99
+ }));
100
+ return pools;
101
+ }
102
+ }
103
+ exports.FluidDexCommonAddresses = FluidDexCommonAddresses;
104
+ //# sourceMappingURL=fluid-dex-generate-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fluid-dex-generate-pool.js","sourceRoot":"","sources":["../../../src/dex/fluid-dex/fluid-dex-generate-pool.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA+C;AAI/C,uCAAiD;AACjD,+EAA0E;AAE1E,8FAAgE;AAChE,kGAAoE;AAIpE,iDAAoD;AACpD,mCAAkC;AAElC,MAAa,uBAAwB,SAAQ,mDAA+B;IAe1E,YACW,UAAkB,EAClB,eAAgC,EAC/B,OAAe,EACf,SAAqB,EAC/B,MAAc;QAEd,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAN3C,eAAU,GAAV,UAAU,CAAQ;QAClB,oBAAe,GAAf,eAAe,CAAiB;QAC/B,YAAO,GAAP,OAAO,CAAQ;QACf,cAAS,GAAT,SAAS,CAAY;QAlBjC,aAAQ,GAMJ,EAAE,CAAC;QAKG,oBAAe,GAAG,IAAI,eAAS,CAAC,6BAAa,CAAC,CAAC;QAC/C,kBAAa,GAAG,IAAI,eAAS,CAAC,2BAAW,CAAC,CAAC;QA8BrD,eAAU,GAAG,CAAC,MAA0C,EAAQ,EAAE;YAChE,OAAO,IAAA,yBAAc,EACnB,MAAM,EACN,CAAC,kEAAkE,CAAC,EACpE,SAAS,EACT,OAAO,CAAC,EAAE;gBACR,OAAO;oBACL,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;oBACjC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;oBAChC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;iBACjC,CAAC;YACJ,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;QAhCA,IAAI,CAAC,UAAU,GAAG,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnE,IAAI,CAAC,mBAAmB,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAExD,eAAe;QACf,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACrB,KAAU,EACV,KAA2B,EAC3B,GAAkB;QAElB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAiBD;;;;;;;;OAQG;IACH,KAAK,CAAC,UAAU,CACd,KAA2B,EAC3B,GAAkB;QAElB,IAAI;YACF,IAAI,KAAK,CAAC;YACV,IAAI;gBACF,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aAC9B;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,IAAI,CAAC;aACb;YACD,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAC/B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;aAC3D;SACF;QAAC,OAAO,CAAC,EAAE;YACV,IAAA,0BAAkB,EAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACpC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,WAAmB,EACnB,WAAoB,KAAK;QAEzB,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE;YACV,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;SAClD;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CAAC,WAAmB;QACrC,MAAM,gBAAgB,GAAG,IAAI,iBAAQ,CACnC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAC7B,2BAAW,EACX,IAAI,CAAC,SAAS,CAAC,QAAQ,CACxB,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC;YAC9D,QAAQ,EAAE,WAAW;SACtB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAW,SAAS,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,CAAC;YACpD,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAClB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YACjB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;SAClB,CAAC,CAAC,CAAC;QAEJ,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA/HD,0DA+HC"}
@@ -16,7 +16,7 @@ export declare class FluidDexLiquidityProxy extends StatefulEventSubscriber<Flui
16
16
  };
17
17
  logDecoder: (log: Log) => any;
18
18
  addressesSubscribed: Address[];
19
- protected liquidityIface: Interface;
19
+ readonly liquidityIface: Interface;
20
20
  readonly resolverIface: Interface;
21
21
  resolverContract: Contract;
22
22
  constructor(parentName: string, commonAddresses: CommonAddresses, network: number, dexHelper: IDexHelper, logger: Logger);
@@ -1 +1 @@
1
- {"version":3,"file":"fluid-dex-liquidity-proxy.js","sourceRoot":"","sources":["../../../src/dex/fluid-dex/fluid-dex-liquidity-proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fluid-dex-liquidity-proxy.js","sourceRoot":"","sources":["../../../src/dex/fluid-dex/fluid-dex-liquidity-proxy.ts"],"names":[],"mappings":"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"}
@@ -96,8 +96,7 @@ class FluidDexEventPool extends stateful_event_subscriber_1.StatefulEventSubscri
96
96
  },
97
97
  ];
98
98
  const storageResults = await this.dexHelper.multiWrapper.tryAggregate(false, multicallData, blockNumber, this.dexHelper.multiWrapper.defaultBatchSize, false);
99
- const isSwapAndArbitragePaused = BigInt(storageResults[0].returnData.toString()) >> BigInt(255) ===
100
- BigInt(1);
99
+ const isSwapAndArbitragePaused = BigInt(storageResults[0].returnData.toString()) >> 255n === 1n;
101
100
  return { isSwapAndArbitragePaused };
102
101
  }
103
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fluid-dex-pool.js","sourceRoot":"","sources":["../../../src/dex/fluid-dex/fluid-dex-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fluid-dex-pool.js","sourceRoot":"","sources":["../../../src/dex/fluid-dex/fluid-dex-pool.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import { SimpleExchange } from '../simple-exchange';
9
9
  import { FluidDexFactory } from './fluid-dex-factory';
10
10
  import { MultiResult } from '../../lib/multi-wrapper';
11
11
  import { FluidDexLiquidityProxy } from './fluid-dex-liquidity-proxy';
12
+ import { FluidDexEventPool } from './fluid-dex-pool';
12
13
  export declare class FluidDex extends SimpleExchange implements IDex<FluidDexData> {
13
14
  readonly network: Network;
14
15
  readonly dexKey: string;
@@ -22,10 +23,10 @@ export declare class FluidDex extends SimpleExchange implements IDex<FluidDexDat
22
23
  }[];
23
24
  logger: Logger;
24
25
  pools: FluidDexPool[];
26
+ eventPools: FluidDexEventPool[];
25
27
  readonly factory: FluidDexFactory;
26
28
  readonly liquidityProxy: FluidDexLiquidityProxy;
27
29
  readonly fluidDexPoolIface: Interface;
28
- FEE_100_PERCENT: bigint;
29
30
  constructor(network: Network, dexKey: string, dexHelper: IDexHelper);
30
31
  private fetchFluidDexPools;
31
32
  private generateFluidDexPoolsFromPoolsFactory;
@@ -34,7 +35,7 @@ export declare class FluidDex extends SimpleExchange implements IDex<FluidDexDat
34
35
  protected onPoolCreatedUpdatePools(poolsFromFactory: readonly Pool[]): void;
35
36
  decodePools: (result: MultiResult<BytesLike> | BytesLike) => Pool[];
36
37
  getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
37
- getPoolByTokenPair(srcToken: Address, destToken: Address): FluidDexPool | null;
38
+ getPoolsByTokenPair(srcToken: Address, destToken: Address): FluidDexPool[];
38
39
  getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<FluidDexData>>;
39
40
  getCalldataGasCost(poolPrices: PoolPrices<FluidDexData>): number | number[];
40
41
  getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: FluidDexData, side: SwapSide): AdapterExchangeParam;
@@ -60,6 +61,24 @@ export declare class FluidDex extends SimpleExchange implements IDex<FluidDexDat
60
61
  * @returns The calculated output amount.
61
62
  */
62
63
  swapInAdjusted(swap0To1: boolean, amountToSwap: bigint, colReserves: CollateralReserves, debtReserves: DebtReserves, fee: bigint, outDecimals: number, currentLimits: DexLimits, syncTime: number): bigint;
64
+ /**
65
+ * Checks if token0 reserves are sufficient compared to token1 reserves.
66
+ * This helps prevent edge cases and ensures high precision in calculations.
67
+ * @param {number} token0Reserves - The reserves of token0.
68
+ * @param {number} token1Reserves - The reserves of token1.
69
+ * @param {number} price - The current price used for calculation.
70
+ * @returns {boolean} - Returns false if token0 reserves are too low, true otherwise.
71
+ */
72
+ protected verifyToken0Reserves(token0Reserves: bigint, token1Reserves: bigint, price: bigint): boolean;
73
+ /**
74
+ * Checks if token1 reserves are sufficient compared to token0 reserves.
75
+ * This helps prevent edge cases and ensures high precision in calculations.
76
+ * @param {number} token0Reserves - The reserves of token0.
77
+ * @param {number} token1Reserves - The reserves of token1.
78
+ * @param {number} price - The current price used for calculation.
79
+ * @returns {boolean} - Returns false if token1 reserves are too low, true otherwise.
80
+ */
81
+ protected verifyToken1Reserves(token0Reserves: bigint, token1Reserves: bigint, price: bigint): boolean;
63
82
  /**
64
83
  * Calculates the currently available swappable amount for a token limit considering expansion since last syncTime.
65
84
  * @param syncTime - timestamp in seconds when the limits were synced
@@ -50,6 +50,8 @@ const decoders_1 = require("../../lib/decoders");
50
50
  const ethers_1 = require("ethers");
51
51
  const utils_3 = require("./utils");
52
52
  const fluid_dex_liquidity_proxy_1 = require("./fluid-dex-liquidity-proxy");
53
+ const fluid_dex_pool_1 = require("./fluid-dex-pool");
54
+ const constants_2 = require("./constants");
53
55
  class FluidDex extends simple_exchange_1.SimpleExchange {
54
56
  network;
55
57
  dexKey;
@@ -60,10 +62,10 @@ class FluidDex extends simple_exchange_1.SimpleExchange {
60
62
  static dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(config_1.FluidDexConfig);
61
63
  logger;
62
64
  pools = [];
65
+ eventPools = [];
63
66
  factory;
64
67
  liquidityProxy;
65
68
  fluidDexPoolIface;
66
- FEE_100_PERCENT = BigInt(1000000);
67
69
  constructor(network, dexKey, dexHelper) {
68
70
  super(dexHelper, dexKey);
69
71
  this.network = network;
@@ -93,6 +95,11 @@ class FluidDex extends simple_exchange_1.SimpleExchange {
93
95
  async initializePricing(blockNumber) {
94
96
  await this.factory.initialize(blockNumber);
95
97
  this.pools = await this.fetchFluidDexPools(blockNumber);
98
+ this.eventPools = await Promise.all(this.pools.map(async (pool) => {
99
+ const eventPool = new fluid_dex_pool_1.FluidDexEventPool(this.dexKey, pool.address, this.network, this.dexHelper, this.logger);
100
+ await eventPool.initialize(blockNumber);
101
+ return eventPool;
102
+ }));
96
103
  await this.liquidityProxy.initialize(blockNumber);
97
104
  }
98
105
  getAdapters(side) {
@@ -116,22 +123,18 @@ class FluidDex extends simple_exchange_1.SimpleExchange {
116
123
  // across DEXes. It is recommended to use
117
124
  // ${dexKey}_${poolAddress} as a poolIdentifier
118
125
  async getPoolIdentifiers(srcToken, destToken, side, blockNumber) {
119
- const pool = this.getPoolByTokenPair(srcToken.address, destToken.address);
120
- return pool ? [pool.id] : [];
126
+ const pools = this.getPoolsByTokenPair(srcToken.address, destToken.address);
127
+ return pools.map(pool => pool.id);
121
128
  }
122
- getPoolByTokenPair(srcToken, destToken) {
129
+ getPoolsByTokenPair(srcToken, destToken) {
123
130
  const srcAddress = srcToken.toLowerCase();
124
131
  const destAddress = destToken.toLowerCase();
125
132
  // A pair must have 2 different tokens.
126
133
  if (srcAddress === destAddress)
127
- return null;
128
- for (const pool of this.pools) {
129
- if ((srcAddress === pool.token0 && destAddress === pool.token1) ||
130
- (srcAddress === pool.token1 && destAddress === pool.token0)) {
131
- return pool;
132
- }
133
- }
134
- return null;
134
+ return [];
135
+ const pools = this.pools.filter(pool => (srcAddress === pool.token0 && destAddress === pool.token1) ||
136
+ (srcAddress === pool.token1 && destAddress === pool.token0));
137
+ return pools;
135
138
  }
136
139
  // Returns pool prices for amounts.
137
140
  // If limitPools is defined only pools in limitPools
@@ -141,37 +144,48 @@ class FluidDex extends simple_exchange_1.SimpleExchange {
141
144
  try {
142
145
  if (srcToken.address.toLowerCase() === destToken.address.toLowerCase())
143
146
  return null;
144
- // Get the pool to use.
145
- const pool = this.getPoolByTokenPair(srcToken.address, destToken.address);
146
- if (!pool)
147
- return null;
148
- // Make sure the pool meets the optional limitPools filter.
149
- if (limitPools && !limitPools.includes(pool.id))
147
+ // Get the pools to use.
148
+ let pools = this.getPoolsByTokenPair(srcToken.address, destToken.address);
149
+ if (limitPools) {
150
+ pools = pools.filter(pool => limitPools.includes(pool.id));
151
+ }
152
+ if (!pools.length)
150
153
  return null;
151
154
  const liquidityProxyState = await this.liquidityProxy.getStateOrGenerate(blockNumber);
152
- const currentPoolReserves = liquidityProxyState.poolsReserves.find(poolReserve => poolReserve.pool.toLowerCase() === pool.address.toLowerCase());
153
- if (!currentPoolReserves) {
154
- return null;
155
- }
156
- const prices = amounts.map(amount => {
157
- if (side === constants_1.SwapSide.SELL) {
158
- return this.swapIn(srcToken.address.toLowerCase() === pool.token0.toLowerCase(), amount, currentPoolReserves.collateralReserves, currentPoolReserves.debtReserves, srcToken.decimals, destToken.decimals, BigInt(currentPoolReserves.fee), currentPoolReserves.dexLimits, Math.floor(Date.now() / 1000));
155
+ const poolsPrices = await Promise.all(pools.map(async (pool) => {
156
+ const currentPoolReserves = liquidityProxyState.poolsReserves.find(poolReserve => poolReserve.pool.toLowerCase() === pool.address.toLowerCase());
157
+ const eventPool = this.eventPools.find(eventPool => eventPool.poolAddress.toLowerCase() ===
158
+ pool.address.toLowerCase());
159
+ if (!eventPool) {
160
+ this.logger.warn(`${this.dexKey}-${this.network}: Event pool ${pool.address} was not found...`);
161
+ return null;
159
162
  }
160
- else {
161
- return this.swapOut(srcToken.address.toLowerCase() === pool.token0.toLowerCase(), amount, currentPoolReserves.collateralReserves, currentPoolReserves.debtReserves, srcToken.decimals, destToken.decimals, BigInt(currentPoolReserves.fee), currentPoolReserves.dexLimits, Math.floor(Date.now() / 1000));
163
+ const state = await eventPool.getStateOrGenerate(blockNumber);
164
+ if (!currentPoolReserves || state.isSwapAndArbitragePaused === true) {
165
+ return null;
162
166
  }
163
- });
164
- return [
165
- {
167
+ const prices = amounts.map(amount => {
168
+ if (side === constants_1.SwapSide.SELL) {
169
+ return this.swapIn(srcToken.address.toLowerCase() === pool.token0.toLowerCase(), amount, currentPoolReserves.collateralReserves, currentPoolReserves.debtReserves, srcToken.decimals, destToken.decimals, BigInt(currentPoolReserves.fee), currentPoolReserves.dexLimits, Math.floor(Date.now() / 1000));
170
+ }
171
+ else {
172
+ return this.swapOut(srcToken.address.toLowerCase() === pool.token0.toLowerCase(), amount, currentPoolReserves.collateralReserves, currentPoolReserves.debtReserves, srcToken.decimals, destToken.decimals, BigInt(currentPoolReserves.fee), currentPoolReserves.dexLimits, Math.floor(Date.now() / 1000));
173
+ }
174
+ });
175
+ return {
166
176
  prices: prices,
167
177
  unit: (0, utils_1.getBigIntPow)(destToken.decimals),
168
- data: {},
178
+ data: {
179
+ poolId: pool.id,
180
+ },
169
181
  exchange: this.dexKey,
170
182
  poolIdentifier: pool.id,
171
183
  gasCost: config_1.FLUID_DEX_GAS_COST,
172
184
  poolAddresses: [pool.address],
173
- },
174
- ];
185
+ };
186
+ }));
187
+ const notNullResults = poolsPrices.filter(res => res !== null);
188
+ return notNullResults;
175
189
  }
176
190
  catch (e) {
177
191
  this.logger.error(`Error_getPricesVolume ${srcToken.address || srcToken.symbol}, ${destToken.address || destToken.symbol}, ${side}:`, e);
@@ -189,9 +203,8 @@ class FluidDex extends simple_exchange_1.SimpleExchange {
189
203
  getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
190
204
  // Encode here the payload for adapter
191
205
  const payload = '';
192
- const pool = this.getPoolByTokenPair(srcToken, destToken);
193
206
  return {
194
- targetExchange: pool.address,
207
+ targetExchange: '0x',
195
208
  payload,
196
209
  networkFee: '0',
197
210
  };
@@ -207,7 +220,9 @@ class FluidDex extends simple_exchange_1.SimpleExchange {
207
220
  let returnAmountPos;
208
221
  const method = side === constants_1.SwapSide.SELL ? 'swapIn' : 'swapOut';
209
222
  returnAmountPos = (0, utils_2.extractReturnAmountPosition)(this.fluidDexPoolIface, method, side === constants_1.SwapSide.SELL ? 'amountOut_' : 'amountIn_');
210
- const pool = this.getPoolByTokenPair(srcToken, destToken);
223
+ const pool = this.pools.find(pool => pool.id === data.poolId);
224
+ if (!pool)
225
+ throw new Error(`${this.dexKey}-${this.network}: Pool with id: ${data.poolId} was not found`);
211
226
  if (side === constants_1.SwapSide.SELL) {
212
227
  if (pool.token0.toLowerCase() !== srcToken.toLowerCase()) {
213
228
  args = [false, BigInt(srcAmount), BigInt(destAmount), recipient];
@@ -387,9 +402,49 @@ class FluidDex extends simple_exchange_1.SimpleExchange {
387
402
  if (priceDiff > maxAllowedDiff) {
388
403
  return 0n;
389
404
  }
405
+ if (amountInCollateral > 0) {
406
+ let reservesRatioValid = swap0To1
407
+ ? this.verifyToken1Reserves(colReserveIn + amountInCollateral, colReserveOut - amountOutCollateral, oldPrice)
408
+ : this.verifyToken0Reserves(colReserveOut - amountOutCollateral, colReserveIn + amountInCollateral, oldPrice);
409
+ if (!reservesRatioValid) {
410
+ return 0n;
411
+ }
412
+ }
413
+ if (amountInDebt > 0) {
414
+ let reservesRatioValid = swap0To1
415
+ ? this.verifyToken1Reserves(debtReserveIn + amountInDebt, debtReserveOut - amountOutDebt, oldPrice)
416
+ : this.verifyToken0Reserves(debtReserveOut - amountOutDebt, debtReserveIn + amountInDebt, oldPrice);
417
+ if (!reservesRatioValid) {
418
+ return 0n;
419
+ }
420
+ }
390
421
  const totalAmountOut = amountOutCollateral + amountOutDebt;
391
422
  return totalAmountOut;
392
423
  }
424
+ /**
425
+ * Checks if token0 reserves are sufficient compared to token1 reserves.
426
+ * This helps prevent edge cases and ensures high precision in calculations.
427
+ * @param {number} token0Reserves - The reserves of token0.
428
+ * @param {number} token1Reserves - The reserves of token1.
429
+ * @param {number} price - The current price used for calculation.
430
+ * @returns {boolean} - Returns false if token0 reserves are too low, true otherwise.
431
+ */
432
+ verifyToken0Reserves(token0Reserves, token1Reserves, price) {
433
+ return (token0Reserves >=
434
+ (token1Reserves * 10n ** 27n) / (price * constants_2.MIN_SWAP_LIQUIDITY));
435
+ }
436
+ /**
437
+ * Checks if token1 reserves are sufficient compared to token0 reserves.
438
+ * This helps prevent edge cases and ensures high precision in calculations.
439
+ * @param {number} token0Reserves - The reserves of token0.
440
+ * @param {number} token1Reserves - The reserves of token1.
441
+ * @param {number} price - The current price used for calculation.
442
+ * @returns {boolean} - Returns false if token1 reserves are too low, true otherwise.
443
+ */
444
+ verifyToken1Reserves(token0Reserves, token1Reserves, price) {
445
+ return (token1Reserves >=
446
+ (token0Reserves * price) / (10n ** 27n * constants_2.MIN_SWAP_LIQUIDITY));
447
+ }
393
448
  /**
394
449
  * Calculates the currently available swappable amount for a token limit considering expansion since last syncTime.
395
450
  * @param syncTime - timestamp in seconds when the limits were synced
@@ -503,7 +558,7 @@ class FluidDex extends simple_exchange_1.SimpleExchange {
503
558
  swapOut(swap0to1, amountOut, colReserves, debtReserves, inDecimals, outDecimals, fee, currentLimits, syncTime) {
504
559
  const amountOutAdjusted = (amountOut * BigInt(10 ** 12)) / BigInt(10 ** outDecimals);
505
560
  const amountIn = this.swapOutAdjusted(swap0to1, amountOutAdjusted, colReserves, debtReserves, fee, outDecimals, currentLimits, syncTime);
506
- if (amountIn == 2n ** 256n - 1n) {
561
+ if (amountIn === 2n ** 256n - 1n) {
507
562
  return amountIn;
508
563
  }
509
564
  const ans = (amountIn * BigInt(10 ** inDecimals)) / BigInt(10 ** 12);
@@ -652,6 +707,22 @@ class FluidDex extends simple_exchange_1.SimpleExchange {
652
707
  // if price diff is > 5% then swap would revert.
653
708
  return 2n ** 256n - 1n;
654
709
  }
710
+ if (amountInCollateral > 0) {
711
+ let reservesRatioValid = swap0to1
712
+ ? this.verifyToken1Reserves(colReserveIn + amountInCollateral, colReserveOut - amountOutCollateral, oldPrice)
713
+ : this.verifyToken0Reserves(colReserveOut - amountOutCollateral, colReserveIn + amountInCollateral, oldPrice);
714
+ if (!reservesRatioValid) {
715
+ return 0n;
716
+ }
717
+ }
718
+ if (amountInDebt > 0) {
719
+ let reservesRatioValid = swap0to1
720
+ ? this.verifyToken1Reserves(debtReserveIn + amountInDebt, debtReserveOut - amountOutDebt, oldPrice)
721
+ : this.verifyToken0Reserves(debtReserveOut - amountOutDebt, debtReserveIn + amountInDebt, oldPrice);
722
+ if (!reservesRatioValid) {
723
+ return 0n;
724
+ }
725
+ }
655
726
  const totalAmountIn = amountInCollateral + amountInDebt;
656
727
  return totalAmountIn;
657
728
  }