@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.
- package/.idea/aws.xml +17 -0
- package/.idea/codeStyles/Project.xml +19 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/misc.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/paraswap-dex-lib.iml +9 -0
- package/.idea/prettier.xml +7 -0
- package/.idea/vcs.xml +6 -0
- package/build/abi/fluid-dex/fluid-dex.abi.json +579 -25
- package/build/abi/integral/factory.json +333 -0
- package/build/abi/integral/oracle.json +501 -0
- package/build/abi/{inception/inception-ineth-pool.json → integral/pool.json} +522 -543
- package/build/abi/{wombat/pool.json → integral/relayer.json} +720 -473
- package/build/dex/aave-v1/aave-v1.d.ts +1 -2
- package/build/dex/aave-v1/aave-v1.js +0 -23
- package/build/dex/aave-v1/aave-v1.js.map +1 -1
- package/build/dex/fluid-dex/fluid-dex-generate-pool.d.ts +49 -0
- package/build/dex/fluid-dex/fluid-dex-generate-pool.js +104 -0
- package/build/dex/fluid-dex/fluid-dex-generate-pool.js.map +1 -0
- package/build/dex/fluid-dex/fluid-dex-liquidity-proxy.d.ts +1 -1
- package/build/dex/fluid-dex/fluid-dex-liquidity-proxy.js.map +1 -1
- package/build/dex/fluid-dex/fluid-dex-pool.js +1 -2
- package/build/dex/fluid-dex/fluid-dex-pool.js.map +1 -1
- package/build/dex/fluid-dex/fluid-dex.d.ts +21 -2
- package/build/dex/fluid-dex/fluid-dex.js +108 -37
- package/build/dex/fluid-dex/fluid-dex.js.map +1 -1
- package/build/dex/fluid-dex/types.d.ts +3 -1
- package/build/dex/generic-rfq/generic-rfq.js +2 -1
- package/build/dex/generic-rfq/generic-rfq.js.map +1 -1
- package/build/dex/generic-rfq/rate-fetcher.d.ts +1 -4
- package/build/dex/generic-rfq/rate-fetcher.js +20 -52
- package/build/dex/generic-rfq/rate-fetcher.js.map +1 -1
- package/build/dex/integral/config.d.ts +4 -0
- package/build/dex/integral/config.js +20 -0
- package/build/dex/integral/config.js.map +1 -0
- package/build/dex/integral/context.d.ts +40 -0
- package/build/dex/integral/context.js +158 -0
- package/build/dex/integral/context.js.map +1 -0
- package/build/dex/integral/integral-factory.d.ts +24 -0
- package/build/dex/integral/integral-factory.js +95 -0
- package/build/dex/integral/integral-factory.js.map +1 -0
- package/build/dex/integral/integral-pool.d.ts +50 -0
- package/build/dex/integral/integral-pool.js +149 -0
- package/build/dex/integral/integral-pool.js.map +1 -0
- package/build/dex/integral/integral-pricing.d.ts +18 -0
- package/build/dex/integral/integral-pricing.js +114 -0
- package/build/dex/integral/integral-pricing.js.map +1 -0
- package/build/dex/integral/integral-relayer.d.ts +42 -0
- package/build/dex/integral/integral-relayer.js +192 -0
- package/build/dex/integral/integral-relayer.js.map +1 -0
- package/build/dex/integral/integral-token.d.ts +27 -0
- package/build/dex/integral/integral-token.js +59 -0
- package/build/dex/integral/integral-token.js.map +1 -0
- package/build/dex/integral/integral.d.ts +41 -0
- package/build/dex/integral/integral.js +376 -0
- package/build/dex/integral/integral.js.map +1 -0
- package/build/dex/integral/types.d.ts +85 -0
- package/build/dex/integral/types.js +9 -0
- package/build/dex/integral/types.js.map +1 -0
- package/build/dex/integral/utils-e2e.d.ts +9 -0
- package/build/dex/integral/utils-e2e.js +131 -0
- package/build/dex/integral/utils-e2e.js.map +1 -0
- package/build/dex/integral/utils.d.ts +17 -0
- package/build/dex/integral/utils.js +94 -0
- package/build/dex/integral/utils.js.map +1 -0
- package/build/dex/jarvis.d.ts +1 -2
- package/build/dex/jarvis.js +0 -58
- package/build/dex/jarvis.js.map +1 -1
- package/build/dex/platypus/platypus.d.ts +1 -2
- package/build/dex/platypus/platypus.js +0 -45
- package/build/dex/platypus/platypus.js.map +1 -1
- package/build/dex/stable-pool.js +8 -1
- package/build/dex/stable-pool.js.map +1 -1
- package/build/dex/swaap-v1/swaap-v1.d.ts +1 -2
- package/build/dex/swaap-v1/swaap-v1.js +0 -14
- package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
- package/build/dex/trader-joe-v2.1/optimizer.d.ts +2 -0
- package/build/dex/trader-joe-v2.1/optimizer.js +47 -0
- package/build/dex/trader-joe-v2.1/optimizer.js.map +1 -0
- package/build/dex/zerox/index.d.ts +26 -4
- package/build/dex/zerox/index.js +42 -50
- package/build/dex/zerox/index.js.map +1 -1
- package/build/dex/zerox/types.d.ts +0 -29
- package/build/dex/zerox/types.js +1 -8
- package/build/dex/zerox/types.js.map +1 -1
- package/build/dex-helper/dummy-dex-helper.js +0 -7
- package/build/dex-helper/dummy-dex-helper.js.map +1 -1
- package/build/dex-helper/icache.d.ts +0 -2
- package/package.json +1 -1
- package/src/abi/fluid-dex/fluid-dex.abi.json +581 -25
- package/src/dex/fluid-dex/constants.ts +1 -0
- package/src/dex/fluid-dex/fluid-dex-e2e.test.ts +17 -0
- package/src/dex/fluid-dex/fluid-dex-events.test.ts +55 -5
- package/src/dex/fluid-dex/fluid-dex-liquidity-proxy.ts +1 -2
- package/src/dex/fluid-dex/fluid-dex-pool.ts +138 -0
- package/src/dex/fluid-dex/fluid-dex.ts +221 -69
- package/src/dex/fluid-dex/types.ts +3 -1
- package/src/dex/generic-rfq/generic-rfq.ts +6 -1
- package/src/dex/generic-rfq/rate-fetcher.ts +42 -77
- package/src/dex-helper/dummy-dex-helper.ts +0 -13
- package/src/dex-helper/icache.ts +0 -4
- package/tests/constants-e2e.ts +5 -0
- package/.vscode/launch.json +0 -53
- package/.vscode/settings.json +0 -2
- package/.vscode/tasks.json +0 -15
- package/build/abi/inception/inception-ratio-feed.json +0 -329
- package/build/abi/inception/inception-vault.json +0 -991
- package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +0 -52
- package/build/abi/usual-m-smart-m/usualM.abi.json +0 -483
- package/build/abi/usual-m-usd0/usualCollateralDao.abi.json +0 -681
- package/build/abi/usual-m-wrapped-m/usualM.abi.json +0 -509
- package/build/dex/aave-v2/tokens-avalanche.json +0 -44
- package/build/dex/aave-v2/tokens-mainnet.json +0 -188
- package/build/dex/aave-v2/tokens-polygon.json +0 -44
- package/build/dex/balancer-v3/abi/balancerBatchRouter.d.ts +0 -729
- package/build/dex/balancer-v3/abi/balancerBatchRouter.js +0 -732
- package/build/dex/balancer-v3/abi/balancerBatchRouter.js.map +0 -1
- package/build/dex/balancer-v3/abi/balancerRouter.d.ts +0 -1406
- package/build/dex/balancer-v3/abi/balancerRouter.js +0 -1175
- package/build/dex/balancer-v3/abi/balancerRouter.js.map +0 -1
- package/build/dex/balancer-v3/abi/vaultExtension.V3.d.ts +0 -2081
- package/build/dex/balancer-v3/abi/vaultExtension.V3.js +0 -1851
- package/build/dex/balancer-v3/abi/vaultExtension.V3.js.map +0 -1
- package/build/dex/balancer-v3/balancer-v3-sepolia-pools.d.ts +0 -34
- package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js +0 -406
- package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js.map +0 -1
- package/build/dex/inception/config.d.ts +0 -4
- package/build/dex/inception/config.js +0 -109
- package/build/dex/inception/config.js.map +0 -1
- package/build/dex/inception/inception-event-pool.d.ts +0 -16
- package/build/dex/inception/inception-event-pool.js +0 -49
- package/build/dex/inception/inception-event-pool.js.map +0 -1
- package/build/dex/inception/inception.d.ts +0 -43
- package/build/dex/inception/inception.js +0 -180
- package/build/dex/inception/inception.js.map +0 -1
- package/build/dex/inception/tokens.d.ts +0 -9
- package/build/dex/inception/tokens.js +0 -28
- package/build/dex/inception/tokens.js.map +0 -1
- package/build/dex/inception/types.d.ts +0 -22
- package/build/dex/inception/types.js +0 -3
- package/build/dex/inception/types.js.map +0 -1
- package/build/dex/inception/utils.d.ts +0 -7
- package/build/dex/inception/utils.js +0 -58
- package/build/dex/inception/utils.js.map +0 -1
- package/build/dex/maker-psm/scripts/gem.abi.json +0 -136
- package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
- package/build/dex/maker-psm/scripts/validate-state.js +0 -185
- package/build/dex/maker-psm/scripts/validate-state.js.map +0 -1
- package/build/dex/maker-psm/scripts/vat.abi.json +0 -243
- package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +0 -1
- package/build/dex/solidly-v3/scripts/check-event-pool-event.js +0 -53
- package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +0 -1
- package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +0 -17
- package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +0 -64
- package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +0 -1
- package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +0 -17
- package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +0 -79
- package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +0 -1
- package/build/dex/uniswap-v3/uniswap-v3-pricing.d.ts +0 -4
- package/build/dex/uniswap-v3/uniswap-v3-pricing.js +0 -43
- package/build/dex/uniswap-v3/uniswap-v3-pricing.js.map +0 -1
- package/build/dex/uniswap-v3/uniswap-v3-worker.d.ts +0 -1
- package/build/dex/uniswap-v3/uniswap-v3-worker.js +0 -10
- package/build/dex/uniswap-v3/uniswap-v3-worker.js.map +0 -1
- package/build/dex/usual/types.d.ts +0 -13
- package/build/dex/usual/types.js +0 -3
- package/build/dex/usual/types.js.map +0 -1
- package/build/dex/usual/usual-bond.d.ts +0 -18
- package/build/dex/usual/usual-bond.js +0 -52
- package/build/dex/usual/usual-bond.js.map +0 -1
- package/build/dex/usual/usual-m-smart-m.d.ts +0 -17
- package/build/dex/usual/usual-m-smart-m.js +0 -50
- package/build/dex/usual/usual-m-smart-m.js.map +0 -1
- package/build/dex/usual/usual-m-usd0.d.ts +0 -17
- package/build/dex/usual/usual-m-usd0.js +0 -51
- package/build/dex/usual/usual-m-usd0.js.map +0 -1
- package/build/dex/usual/usual-m-wrapped-m.d.ts +0 -17
- package/build/dex/usual/usual-m-wrapped-m.js +0 -50
- package/build/dex/usual/usual-m-wrapped-m.js.map +0 -1
- package/build/dex/usual/usual.d.ts +0 -27
- package/build/dex/usual/usual.js +0 -125
- package/build/dex/usual/usual.js.map +0 -1
- package/build/dex/usual-m-smart-m/config.d.ts +0 -3
- package/build/dex/usual-m-smart-m/config.js +0 -13
- package/build/dex/usual-m-smart-m/config.js.map +0 -1
- package/build/dex/usual-m-smart-m/types.d.ts +0 -7
- package/build/dex/usual-m-smart-m/types.js +0 -3
- package/build/dex/usual-m-smart-m/types.js.map +0 -1
- package/build/dex/usual-m-smart-m/usual-m-smart-m.d.ts +0 -35
- package/build/dex/usual-m-smart-m/usual-m-smart-m.js +0 -161
- package/build/dex/usual-m-smart-m/usual-m-smart-m.js.map +0 -1
- package/build/dex/usual-m-usd0/config.d.ts +0 -3
- package/build/dex/usual-m-usd0/config.js +0 -14
- package/build/dex/usual-m-usd0/config.js.map +0 -1
- package/build/dex/usual-m-usd0/types.d.ts +0 -8
- package/build/dex/usual-m-usd0/types.js +0 -3
- package/build/dex/usual-m-usd0/types.js.map +0 -1
- package/build/dex/usual-m-usd0/usual-m-usd0.d.ts +0 -35
- package/build/dex/usual-m-usd0/usual-m-usd0.js +0 -159
- package/build/dex/usual-m-usd0/usual-m-usd0.js.map +0 -1
- package/build/lib/pub-sub.d.ts +0 -39
- package/build/lib/pub-sub.js +0 -133
- package/build/lib/pub-sub.js.map +0 -1
- 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
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA6D;
|
|
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
|
-
|
|
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":";;;;;;AAAA,4CAA+C;AAG/C,uCAA4D;AAC5D,+EAA0E;AAE1E,8FAAgE;AAChE,oHAA4E;AAQ5E,mCAAkC;AAElC,MAAa,sBAAuB,SAAQ,mDAAoD;IAoBnF;IACA;IACC;IACD;IAtBX,QAAQ,GAMJ,EAAE,CAAC;IAEP,UAAU,CAAoB;IAE9B,mBAAmB,CAAY;
|
|
1
|
+
{"version":3,"file":"fluid-dex-liquidity-proxy.js","sourceRoot":"","sources":["../../../src/dex/fluid-dex/fluid-dex-liquidity-proxy.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA+C;AAG/C,uCAA4D;AAC5D,+EAA0E;AAE1E,8FAAgE;AAChE,oHAA4E;AAQ5E,mCAAkC;AAElC,MAAa,sBAAuB,SAAQ,mDAAoD;IAoBnF;IACA;IACC;IACD;IAtBX,QAAQ,GAMJ,EAAE,CAAC;IAEP,UAAU,CAAoB;IAE9B,mBAAmB,CAAY;IAEtB,cAAc,GAAG,IAAI,eAAS,CAAC,sCAAY,CAAC,CAAC;IAE7C,aAAa,GAAG,IAAI,eAAS,CAAC,2BAAW,CAAC,CAAC;IAEpD,gBAAgB,CAAW;IAE3B,YACW,UAAkB,EAClB,eAAgC,EAC/B,OAAe,EAChB,SAAqB,EAC9B,MAAc;QAEd,KAAK,CAAC,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAN/C,eAAU,GAAV,UAAU,CAAQ;QAClB,oBAAe,GAAf,eAAe,CAAiB;QAC/B,YAAO,GAAP,OAAO,CAAQ;QAChB,cAAS,GAAT,SAAS,CAAY;QAK9B,IAAI,CAAC,UAAU,GAAG,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAElE,IAAI,CAAC,gBAAgB,GAAG,IAAI,iBAAQ,CAClC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAC7B,2BAAW,EACX,IAAI,CAAC,SAAS,CAAC,QAAQ,CACxB,CAAC;QAEF,IAAI,CAAC,mBAAmB,GAAG,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAE5D,eAAe;QACf,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,KAAU,EACV,KAAgD,EAChD,GAAkB;QAElB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,UAAU,CACd,KAAgD,EAChD,GAAkB;QAElB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChC,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAA,0BAAkB,EAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;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,CAAC;YACX,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CACjB,WAAmB;QAEnB,MAAM,SAAS,GACb,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,2BAA2B,CAAC;YACjE,QAAQ,EAAE,WAAW;SACtB,CAAC,CAAC;QAEL,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,IAAI,uBAAuB,CAAC,CAAC;QAE1E,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,0BAA0B,CAChC,YAAmC;QAEnC,MAAM,MAAM,GAAkB,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YAC3D,MAAM,CACJ,IAAI,EACJ,MAAM,EACN,MAAM,EACN,MAAM,EACN,qBAAqB,EACrB,eAAe,EACf,YAAY,EACb,GAAG,WAAW,CAAC;YAEhB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEtC,MAAM,kBAAkB,GAAG;gBACzB,kBAAkB,EAAE,IAAA,iBAAS,EAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBACvD,kBAAkB,EAAE,IAAA,iBAAS,EAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBACvD,uBAAuB,EAAE,IAAA,iBAAS,EAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBAC5D,uBAAuB,EAAE,IAAA,iBAAS,EAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;aAC7D,CAAC;YAEF,MAAM,YAAY,GAAG;gBACnB,UAAU,EAAE,IAAA,iBAAS,EAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBACzC,UAAU,EAAE,IAAA,iBAAS,EAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBACzC,kBAAkB,EAAE,IAAA,iBAAS,EAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBACjD,kBAAkB,EAAE,IAAA,iBAAS,EAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBACjD,uBAAuB,EAAE,IAAA,iBAAS,EAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBACtD,uBAAuB,EAAE,IAAA,iBAAS,EAAC,eAAe,CAAC,CAAC,CAAC,CAAC;aACvD,CAAC;YAEF,MAAM,kBAAkB,GAAG;gBACzB,SAAS,EAAE,IAAA,iBAAS,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,SAAS,EAAE,IAAA,iBAAS,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,eAAe,EAAE,IAAA,iBAAS,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/C,CAAC;YAEF,MAAM,kBAAkB,GAAG;gBACzB,SAAS,EAAE,IAAA,iBAAS,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,SAAS,EAAE,IAAA,iBAAS,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,eAAe,EAAE,IAAA,iBAAS,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/C,CAAC;YAEF,MAAM,gBAAgB,GAAG;gBACvB,SAAS,EAAE,IAAA,iBAAS,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,SAAS,EAAE,IAAA,iBAAS,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,eAAe,EAAE,IAAA,iBAAS,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/C,CAAC;YAEF,MAAM,gBAAgB,GAAG;gBACvB,SAAS,EAAE,IAAA,iBAAS,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,SAAS,EAAE,IAAA,iBAAS,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,eAAe,EAAE,IAAA,iBAAS,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/C,CAAC;YAEF,MAAM,SAAS,GAAG;gBAChB,kBAAkB;gBAClB,kBAAkB;gBAClB,gBAAgB;gBAChB,gBAAgB;aACjB,CAAC;YAEF,OAAO;gBACL,IAAI;gBACJ,MAAM;gBACN,MAAM;gBACN,GAAG;gBACH,kBAAkB;gBAClB,YAAY;gBACZ,SAAS;aACV,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;IACnC,CAAC;CACF;AA7LD,wDA6LC"}
|
|
@@ -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()) >>
|
|
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
|
-
|
|
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
|
|
120
|
-
return pool
|
|
126
|
+
const pools = this.getPoolsByTokenPair(srcToken.address, destToken.address);
|
|
127
|
+
return pools.map(pool => pool.id);
|
|
121
128
|
}
|
|
122
|
-
|
|
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
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
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
|
|
145
|
-
|
|
146
|
-
if (
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
if (
|
|
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
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
return
|
|
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
|
-
|
|
161
|
-
|
|
163
|
+
const state = await eventPool.getStateOrGenerate(blockNumber);
|
|
164
|
+
if (!currentPoolReserves || state.isSwapAndArbitragePaused === true) {
|
|
165
|
+
return null;
|
|
162
166
|
}
|
|
163
|
-
|
|
164
|
-
|
|
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:
|
|
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.
|
|
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
|
|
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
|
}
|