@paraswap/dex-lib 3.9.7-fluid-dex.1 → 3.9.7-fluid-dex.2
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/build/dex/fluid-dex/config.js +0 -1
- package/build/dex/fluid-dex/config.js.map +1 -1
- package/build/dex/fluid-dex/fluid-dex.d.ts +0 -1
- package/build/dex/fluid-dex/fluid-dex.js +11 -106
- package/build/dex/fluid-dex/fluid-dex.js.map +1 -1
- package/build/dex/fluid-dex/types.d.ts +0 -1
- package/package.json +1 -1
- package/src/dex/fluid-dex/config.ts +0 -1
- package/src/dex/fluid-dex/fluid-dex-e2e.test.ts +40 -24
- package/src/dex/fluid-dex/fluid-dex-integration.test.ts +132 -53
- package/src/dex/fluid-dex/fluid-dex.ts +12 -110
- package/src/dex/fluid-dex/types.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/fluid-dex/config.ts"],"names":[],"mappings":";;;AAEA,+CAA0C;AAE7B,QAAA,cAAc,GAA4B;IACrD,QAAQ,EAAE;QACR,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,eAAe,EAAE;gBACf,cAAc,EAAE,4CAA4C;gBAC5D,QAAQ,EAAE,4CAA4C;gBACtD,UAAU,EAAE,4CAA4C;aACzD;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/fluid-dex/config.ts"],"names":[],"mappings":";;;AAEA,+CAA0C;AAE7B,QAAA,cAAc,GAA4B;IACrD,QAAQ,EAAE;QACR,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,eAAe,EAAE;gBACf,cAAc,EAAE,4CAA4C;gBAC5D,QAAQ,EAAE,4CAA4C;gBACtD,UAAU,EAAE,4CAA4C;aACzD;SACF;KACF;CACF,CAAC;AAEF,mGAAmG;AACnG,kGAAkG;AAClG,2DAA2D;AAC9C,QAAA,kBAAkB,GAAG,MAAO,CAAC"}
|
|
@@ -30,7 +30,6 @@ export declare class FluidDex extends SimpleExchange implements IDex<FluidDexDat
|
|
|
30
30
|
FEE_100_PERCENT: bigint;
|
|
31
31
|
constructor(network: Network, dexKey: string, dexHelper: IDexHelper);
|
|
32
32
|
private fetchFluidDexPools;
|
|
33
|
-
updatePoolAndEventPool(blockNumber: number): Promise<void>;
|
|
34
33
|
initializePricing(blockNumber: number): Promise<void>;
|
|
35
34
|
getAdapters(side: SwapSide): null;
|
|
36
35
|
decodePools: (result: MultiResult<BytesLike> | BytesLike) => Pool[];
|
|
@@ -48,6 +48,7 @@ class FluidDex extends simple_exchange_1.SimpleExchange {
|
|
|
48
48
|
this.hasConstantPriceLargeAmounts = false;
|
|
49
49
|
this.needWrapNative = false;
|
|
50
50
|
this.isFeeOnTransferSupported = false;
|
|
51
|
+
this.pools = [];
|
|
51
52
|
this.FEE_100_PERCENT = BigInt(1000000);
|
|
52
53
|
this.decodePools = (result) => {
|
|
53
54
|
return (0, decoders_1.generalDecoder)(result, ['tuple(address pool, address token0, address token1)[]'], undefined, decoded => {
|
|
@@ -60,7 +61,6 @@ class FluidDex extends simple_exchange_1.SimpleExchange {
|
|
|
60
61
|
};
|
|
61
62
|
this.logger = dexHelper.getLogger(dexKey);
|
|
62
63
|
this.fluidCommonAddresses = new fluid_dex_generate_pool_1.FluidDexCommonAddresses('FluidDex', config_1.FluidDexConfig['FluidDex'][network].commonAddresses, network, dexHelper, this.logger);
|
|
63
|
-
this.pools = config_1.FluidDexConfig['FluidDex'][network].pools;
|
|
64
64
|
this.fluidDexPoolIface = new abi_1.Interface(fluid_dex_abi_json_1.default);
|
|
65
65
|
}
|
|
66
66
|
async fetchFluidDexPools(blockNumber) {
|
|
@@ -72,7 +72,11 @@ class FluidDex extends simple_exchange_1.SimpleExchange {
|
|
|
72
72
|
token1: pool.token1.toLowerCase(),
|
|
73
73
|
}));
|
|
74
74
|
}
|
|
75
|
-
|
|
75
|
+
// Initialize pricing is called once in the start of
|
|
76
|
+
// pricing service. It is intended to setup the integration
|
|
77
|
+
// for pricing requests. It is optional for a DEX to
|
|
78
|
+
// implement this function
|
|
79
|
+
async initializePricing(blockNumber) {
|
|
76
80
|
this.pools = await this.fetchFluidDexPools(blockNumber);
|
|
77
81
|
for (const pool of this.pools) {
|
|
78
82
|
if (!this.eventPools[pool.id]) {
|
|
@@ -80,13 +84,6 @@ class FluidDex extends simple_exchange_1.SimpleExchange {
|
|
|
80
84
|
}
|
|
81
85
|
}
|
|
82
86
|
}
|
|
83
|
-
// Initialize pricing is called once in the start of
|
|
84
|
-
// pricing service. It is intended to setup the integration
|
|
85
|
-
// for pricing requests. It is optional for a DEX to
|
|
86
|
-
// implement this function
|
|
87
|
-
async initializePricing(blockNumber) {
|
|
88
|
-
await this.updatePoolAndEventPool(blockNumber);
|
|
89
|
-
}
|
|
90
87
|
getAdapters(side) {
|
|
91
88
|
return null;
|
|
92
89
|
}
|
|
@@ -95,7 +92,6 @@ class FluidDex extends simple_exchange_1.SimpleExchange {
|
|
|
95
92
|
// across DEXes. It is recommended to use
|
|
96
93
|
// ${dexKey}_${poolAddress} as a poolIdentifier
|
|
97
94
|
async getPoolIdentifiers(srcToken, destToken, side, blockNumber) {
|
|
98
|
-
await this.updatePoolAndEventPool(blockNumber);
|
|
99
95
|
const pool = await this.getPoolByTokenPair(srcToken.address, destToken.address);
|
|
100
96
|
return pool ? [pool.id] : [];
|
|
101
97
|
}
|
|
@@ -118,8 +114,9 @@ class FluidDex extends simple_exchange_1.SimpleExchange {
|
|
|
118
114
|
// should be used. If limitPools is undefined then
|
|
119
115
|
// any pools can be used.
|
|
120
116
|
async getPricesVolume(srcToken, destToken, amounts, side, blockNumber, limitPools) {
|
|
121
|
-
await this.updatePoolAndEventPool(blockNumber);
|
|
122
117
|
try {
|
|
118
|
+
if (srcToken.address.toLowerCase() === destToken.address.toLowerCase())
|
|
119
|
+
return null;
|
|
123
120
|
if (side === constants_1.SwapSide.BUY)
|
|
124
121
|
throw new Error(`Buy not supported`);
|
|
125
122
|
// Get the pool to use.
|
|
@@ -190,110 +187,18 @@ class FluidDex extends simple_exchange_1.SimpleExchange {
|
|
|
190
187
|
// Returns list of top pools based on liquidity. Max
|
|
191
188
|
// limit number pools should be returned.
|
|
192
189
|
async getTopPoolsForToken(tokenAddress, limit) {
|
|
193
|
-
|
|
194
|
-
// let liquidityAmounts: { [id: string]: bigint } = {};
|
|
195
|
-
// for (const pool of this.pools) {
|
|
196
|
-
// if (
|
|
197
|
-
// pool.token0 === tokenAddress.toLowerCase() ||
|
|
198
|
-
// pool.token1 === tokenAddress.toLowerCase()
|
|
199
|
-
// ) {
|
|
200
|
-
// const state: FluidDexPoolState = await this.eventPools[
|
|
201
|
-
// pool.id
|
|
202
|
-
// ].getStateOrGenerate(latestBlockNumber_, false);
|
|
203
|
-
//
|
|
204
|
-
// liquidityAmounts[pool.id] =
|
|
205
|
-
// pool.token0 === tokenAddress
|
|
206
|
-
// ? state.collateralReserves.token0RealReserves +
|
|
207
|
-
// state.debtReserves.token0RealReserves
|
|
208
|
-
// : state.collateralReserves.token1RealReserves +
|
|
209
|
-
// state.debtReserves.token1RealReserves;
|
|
210
|
-
// }
|
|
211
|
-
// }
|
|
212
|
-
//
|
|
213
|
-
// const entries = Object.entries(liquidityAmounts);
|
|
214
|
-
//
|
|
215
|
-
// // Sort the entries based on the values in descending order
|
|
216
|
-
// entries.sort((a, b) => {
|
|
217
|
-
// if (b[1] > a[1]) return 1;
|
|
218
|
-
// if (b[1] < a[1]) return -1;
|
|
219
|
-
// return 0;
|
|
220
|
-
// });
|
|
221
|
-
//
|
|
222
|
-
// // Take the top k entries
|
|
223
|
-
// const topKEntries = entries.slice(0, limit);
|
|
224
|
-
//
|
|
225
|
-
// // Convert the array back to an object
|
|
226
|
-
// const sortedAmounts = Object.fromEntries(topKEntries);
|
|
227
|
-
//
|
|
228
|
-
// const poolLiquidities: PoolLiquidity[] = [];
|
|
229
|
-
//
|
|
230
|
-
// for (const [id, amount] of Object.entries(sortedAmounts)) {
|
|
231
|
-
// const pool = this.pools.find(p => p.id === id);
|
|
232
|
-
// if (!pool) continue; // Skip if pool not found
|
|
233
|
-
//
|
|
234
|
-
// const state: FluidDexPoolState = await this.eventPools[
|
|
235
|
-
// pool.id
|
|
236
|
-
// ].getStateOrGenerate(latestBlockNumber_, false);
|
|
237
|
-
//
|
|
238
|
-
// // let token0decimals: number;
|
|
239
|
-
// // for (const [networkStr, symbolMapping] of Object.entries(Tokens)) {
|
|
240
|
-
// // let found = false;
|
|
241
|
-
// // for (const [symbol, tokenParams] of Object.entries(symbolMapping)) {
|
|
242
|
-
// // if (tokenParams.address.toLowerCase() === pool.token0.toLowerCase()) {
|
|
243
|
-
// // token0decimals = tokenParams.decimals;
|
|
244
|
-
// // found = true;
|
|
245
|
-
// // break;
|
|
246
|
-
// // }
|
|
247
|
-
// // if (found) break;
|
|
248
|
-
// // }
|
|
249
|
-
// // }
|
|
250
|
-
// //
|
|
251
|
-
// // let token1decimals: number;
|
|
252
|
-
// // for (const [networkStr, symbolMapping] of Object.entries(Tokens)) {
|
|
253
|
-
// // let found = false;
|
|
254
|
-
// // for (const [symbol, tokenParams] of Object.entries(symbolMapping)) {
|
|
255
|
-
// // if (tokenParams.address.toLowerCase() === pool.token1.toLowerCase()) {
|
|
256
|
-
// // token1decimals = tokenParams.decimals;
|
|
257
|
-
// // found = true;
|
|
258
|
-
// // break;
|
|
259
|
-
// // }
|
|
260
|
-
// // if (found) break;
|
|
261
|
-
// // }
|
|
262
|
-
// // }
|
|
263
|
-
//
|
|
264
|
-
// const usd0 = await this.dexHelper.getTokenUSDPrice(
|
|
265
|
-
// { address: pool.token0, decimals: token0decimals! },
|
|
266
|
-
// state.collateralReserves.token0RealReserves +
|
|
267
|
-
// state.debtReserves.token0RealReserves,
|
|
268
|
-
// );
|
|
269
|
-
//
|
|
270
|
-
// const usd1 = await this.dexHelper.getTokenUSDPrice(
|
|
271
|
-
// { address: pool.token1, decimals: token1decimals! },
|
|
272
|
-
// state.collateralReserves.token1RealReserves +
|
|
273
|
-
// state.debtReserves.token1RealReserves,
|
|
274
|
-
// );
|
|
275
|
-
//
|
|
276
|
-
// poolLiquidities.push({
|
|
277
|
-
// exchange: 'FluidDex',
|
|
278
|
-
// address: pool.address,
|
|
279
|
-
// connectorTokens: [],
|
|
280
|
-
// liquidityUSD: Number(usd0 + usd1), // converted to number
|
|
281
|
-
// });
|
|
282
|
-
// }
|
|
283
|
-
// return poolLiquidities;
|
|
190
|
+
//@TODO
|
|
284
191
|
return [];
|
|
285
192
|
}
|
|
286
193
|
async getDexParam(srcToken, destToken, srcAmount, destAmount, recipient, data, side, context, executorAddress) {
|
|
287
|
-
const latestBlockNumber_ = await this.dexHelper.provider.getBlockNumber();
|
|
288
|
-
await this.updatePoolAndEventPool(latestBlockNumber_);
|
|
289
194
|
if (side === constants_1.SwapSide.BUY)
|
|
290
195
|
throw new Error(`Buy not supported`);
|
|
291
196
|
let args;
|
|
292
|
-
let returnAmountPos
|
|
197
|
+
let returnAmountPos;
|
|
293
198
|
const method = 'swapIn';
|
|
294
199
|
returnAmountPos = (0, utils_2.extractReturnAmountPosition)(this.fluidDexPoolIface, method, 'amountOut_', 1);
|
|
295
200
|
const pool = await this.getPoolByTokenPair(srcToken, destToken);
|
|
296
|
-
if (pool.token0.toLowerCase()
|
|
201
|
+
if (pool.token0.toLowerCase() !== srcToken.toLowerCase()) {
|
|
297
202
|
args = [false, BigInt(srcAmount), BigInt(destAmount), recipient];
|
|
298
203
|
}
|
|
299
204
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fluid-dex.js","sourceRoot":"","sources":["../../../src/dex/fluid-dex/fluid-dex.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fluid-dex.js","sourceRoot":"","sources":["../../../src/dex/fluid-dex/fluid-dex.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -60,7 +60,6 @@ function testForNetwork(
|
|
|
60
60
|
tokenBSymbol: string,
|
|
61
61
|
tokenAAmount: string,
|
|
62
62
|
tokenBAmount: string,
|
|
63
|
-
nativeTokenAmount: string,
|
|
64
63
|
) {
|
|
65
64
|
const provider = new StaticJsonRpcProvider(
|
|
66
65
|
generateConfig(network).privateHttpProvider,
|
|
@@ -79,11 +78,11 @@ function testForNetwork(
|
|
|
79
78
|
describe(`${side}`, () => {
|
|
80
79
|
contractMethods.forEach((contractMethod: string) => {
|
|
81
80
|
describe(`${contractMethod}`, () => {
|
|
82
|
-
it(`${
|
|
81
|
+
it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
|
|
83
82
|
await testE2E(
|
|
84
|
-
tokens[nativeTokenSymbol],
|
|
85
83
|
tokens[tokenASymbol],
|
|
86
|
-
|
|
84
|
+
tokens[tokenBSymbol],
|
|
85
|
+
holders[tokenASymbol],
|
|
87
86
|
tokenBAmount,
|
|
88
87
|
SwapSide.SELL,
|
|
89
88
|
dexKey,
|
|
@@ -92,12 +91,12 @@ function testForNetwork(
|
|
|
92
91
|
provider,
|
|
93
92
|
);
|
|
94
93
|
});
|
|
95
|
-
it(`${
|
|
94
|
+
it(`${tokenBSymbol} -> ${tokenASymbol}`, async () => {
|
|
96
95
|
await testE2E(
|
|
96
|
+
tokens[tokenBSymbol],
|
|
97
97
|
tokens[tokenASymbol],
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
tokenAAmount,
|
|
98
|
+
holders[tokenBSymbol],
|
|
99
|
+
tokenBAmount,
|
|
101
100
|
SwapSide.SELL,
|
|
102
101
|
dexKey,
|
|
103
102
|
contractMethod as ContractMethod,
|
|
@@ -118,21 +117,38 @@ describe('FluidDex E2E', () => {
|
|
|
118
117
|
describe('Mainnet', () => {
|
|
119
118
|
const network = Network.MAINNET;
|
|
120
119
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
);
|
|
120
|
+
describe('ETH -> wstETH', () => {
|
|
121
|
+
const tokenASymbol: string = 'wstETH';
|
|
122
|
+
const tokenBSymbol: string = 'ETH';
|
|
123
|
+
|
|
124
|
+
const tokenAAmount: string = '100000000000000';
|
|
125
|
+
const tokenBAmount: string = '100000000000000';
|
|
126
|
+
|
|
127
|
+
testForNetwork(
|
|
128
|
+
network,
|
|
129
|
+
dexKey,
|
|
130
|
+
tokenASymbol,
|
|
131
|
+
tokenBSymbol,
|
|
132
|
+
tokenAAmount,
|
|
133
|
+
tokenBAmount,
|
|
134
|
+
);
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
describe('USDC -> USDT', () => {
|
|
138
|
+
const tokenASymbol: string = 'USDC';
|
|
139
|
+
const tokenBSymbol: string = 'USDT';
|
|
140
|
+
|
|
141
|
+
const tokenAAmount: string = '1000000';
|
|
142
|
+
const tokenBAmount: string = '100000000';
|
|
143
|
+
|
|
144
|
+
testForNetwork(
|
|
145
|
+
network,
|
|
146
|
+
dexKey,
|
|
147
|
+
tokenASymbol,
|
|
148
|
+
tokenBSymbol,
|
|
149
|
+
tokenAAmount,
|
|
150
|
+
tokenBAmount,
|
|
151
|
+
);
|
|
152
|
+
});
|
|
137
153
|
});
|
|
138
154
|
});
|
|
@@ -133,11 +133,6 @@ async function testPricingOnNetwork(
|
|
|
133
133
|
pools,
|
|
134
134
|
);
|
|
135
135
|
expect(poolPrices).not.toBeNull();
|
|
136
|
-
if (fluidDex.hasConstantPriceLargeAmounts) {
|
|
137
|
-
checkConstantPoolPrices(poolPrices!, amounts, dexKey);
|
|
138
|
-
} else {
|
|
139
|
-
checkPoolPrices(poolPrices!, amounts, side, dexKey);
|
|
140
|
-
}
|
|
141
136
|
|
|
142
137
|
// Check if onchain pricing equals to calculated ones
|
|
143
138
|
await checkOnChainPricing(
|
|
@@ -160,24 +155,6 @@ describe('FluidDex', function () {
|
|
|
160
155
|
|
|
161
156
|
const tokens = Tokens[network];
|
|
162
157
|
|
|
163
|
-
// Don't forget to update relevant tokens in constant-e2e.ts
|
|
164
|
-
const srcTokenSymbol = 'wstETH';
|
|
165
|
-
const destTokenSymbol = 'ETH';
|
|
166
|
-
|
|
167
|
-
const amountsForSell = [
|
|
168
|
-
0n,
|
|
169
|
-
1n * BI_POWS[tokens[srcTokenSymbol].decimals - 10],
|
|
170
|
-
2n * BI_POWS[tokens[srcTokenSymbol].decimals - 10],
|
|
171
|
-
3n * BI_POWS[tokens[srcTokenSymbol].decimals - 10],
|
|
172
|
-
4n * BI_POWS[tokens[srcTokenSymbol].decimals - 10],
|
|
173
|
-
5n * BI_POWS[tokens[srcTokenSymbol].decimals - 10],
|
|
174
|
-
6n * BI_POWS[tokens[srcTokenSymbol].decimals - 10],
|
|
175
|
-
7n * BI_POWS[tokens[srcTokenSymbol].decimals - 10],
|
|
176
|
-
8n * BI_POWS[tokens[srcTokenSymbol].decimals - 10],
|
|
177
|
-
9n * BI_POWS[tokens[srcTokenSymbol].decimals - 10],
|
|
178
|
-
10n * BI_POWS[tokens[srcTokenSymbol].decimals - 10],
|
|
179
|
-
];
|
|
180
|
-
|
|
181
158
|
beforeAll(async () => {
|
|
182
159
|
blockNumber = await dexHelper.provider.getBlockNumber();
|
|
183
160
|
fluidDex = new FluidDex(network, dexKey, dexHelper);
|
|
@@ -186,40 +163,142 @@ describe('FluidDex', function () {
|
|
|
186
163
|
}
|
|
187
164
|
});
|
|
188
165
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
166
|
+
describe('wstETH -> ETH', () => {
|
|
167
|
+
const tokenASymbol = 'wstETH';
|
|
168
|
+
const tokenBSymbol = 'ETH';
|
|
169
|
+
|
|
170
|
+
const amountsForSell = [
|
|
171
|
+
0n,
|
|
172
|
+
1n * BI_POWS[8],
|
|
173
|
+
2n * BI_POWS[8],
|
|
174
|
+
3n * BI_POWS[8],
|
|
175
|
+
4n * BI_POWS[8],
|
|
176
|
+
5n * BI_POWS[8],
|
|
177
|
+
6n * BI_POWS[8],
|
|
178
|
+
7n * BI_POWS[8],
|
|
179
|
+
8n * BI_POWS[8],
|
|
180
|
+
9n * BI_POWS[8],
|
|
181
|
+
10n * BI_POWS[8],
|
|
182
|
+
];
|
|
183
|
+
|
|
184
|
+
it('wstETH -> ETH, getPoolIdentifiers and getPricesVolume SELL', async function () {
|
|
185
|
+
await testPricingOnNetwork(
|
|
186
|
+
fluidDex,
|
|
187
|
+
network,
|
|
188
|
+
dexKey,
|
|
189
|
+
blockNumber,
|
|
190
|
+
tokenASymbol,
|
|
191
|
+
tokenBSymbol,
|
|
192
|
+
SwapSide.SELL,
|
|
193
|
+
amountsForSell,
|
|
194
|
+
'estimateSwapIn',
|
|
195
|
+
);
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
it('ETH -> wstETH, getPoolIdentifiers and getPricesVolume SELL', async function () {
|
|
199
|
+
await testPricingOnNetwork(
|
|
200
|
+
fluidDex,
|
|
201
|
+
network,
|
|
202
|
+
dexKey,
|
|
203
|
+
blockNumber,
|
|
204
|
+
tokenBSymbol,
|
|
205
|
+
tokenASymbol,
|
|
206
|
+
SwapSide.SELL,
|
|
207
|
+
amountsForSell,
|
|
208
|
+
'estimateSwapIn',
|
|
209
|
+
);
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
it.skip('getTopPoolsForToken', async function () {
|
|
213
|
+
// We have to check without calling initializePricing, because
|
|
214
|
+
// pool-tracker is not calling that function
|
|
215
|
+
const newFluidDex = new FluidDex(network, dexKey, dexHelper);
|
|
216
|
+
await newFluidDex.initializePricing(blockNumber);
|
|
217
|
+
if (newFluidDex.updatePoolState) {
|
|
218
|
+
await newFluidDex.updatePoolState();
|
|
219
|
+
}
|
|
220
|
+
const poolLiquidity = await newFluidDex.getTopPoolsForToken(
|
|
221
|
+
tokens[tokenASymbol].address,
|
|
222
|
+
1,
|
|
223
|
+
);
|
|
224
|
+
|
|
225
|
+
if (!newFluidDex.hasConstantPriceLargeAmounts) {
|
|
226
|
+
checkPoolsLiquidity(
|
|
227
|
+
poolLiquidity,
|
|
228
|
+
Tokens[network][tokenASymbol].address,
|
|
229
|
+
dexKey,
|
|
230
|
+
);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
201
233
|
});
|
|
202
234
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
235
|
+
describe('USDC -> USDT', () => {
|
|
236
|
+
const tokenASymbol = 'USDC';
|
|
237
|
+
const tokenBSymbol = 'USDT';
|
|
238
|
+
|
|
239
|
+
const amountsForSell = [
|
|
240
|
+
0n,
|
|
241
|
+
1n * BI_POWS[6],
|
|
242
|
+
2n * BI_POWS[6],
|
|
243
|
+
3n * BI_POWS[6],
|
|
244
|
+
4n * BI_POWS[6],
|
|
245
|
+
5n * BI_POWS[6],
|
|
246
|
+
6n * BI_POWS[6],
|
|
247
|
+
7n * BI_POWS[6],
|
|
248
|
+
8n * BI_POWS[6],
|
|
249
|
+
9n * BI_POWS[6],
|
|
250
|
+
10n * BI_POWS[6],
|
|
251
|
+
];
|
|
252
|
+
|
|
253
|
+
it('USDC -> USDT getPoolIdentifiers and getPricesVolume SELL', async function () {
|
|
254
|
+
await testPricingOnNetwork(
|
|
255
|
+
fluidDex,
|
|
256
|
+
network,
|
|
220
257
|
dexKey,
|
|
258
|
+
blockNumber,
|
|
259
|
+
tokenASymbol,
|
|
260
|
+
tokenBSymbol,
|
|
261
|
+
SwapSide.SELL,
|
|
262
|
+
amountsForSell,
|
|
263
|
+
'estimateSwapIn',
|
|
221
264
|
);
|
|
222
|
-
}
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
it('USDT -> USDC getPoolIdentifiers and getPricesVolume SELL', async function () {
|
|
268
|
+
await testPricingOnNetwork(
|
|
269
|
+
fluidDex,
|
|
270
|
+
network,
|
|
271
|
+
dexKey,
|
|
272
|
+
blockNumber,
|
|
273
|
+
tokenBSymbol,
|
|
274
|
+
tokenASymbol,
|
|
275
|
+
SwapSide.SELL,
|
|
276
|
+
amountsForSell,
|
|
277
|
+
'estimateSwapIn',
|
|
278
|
+
);
|
|
279
|
+
});
|
|
280
|
+
|
|
281
|
+
it.skip('getTopPoolsForToken', async function () {
|
|
282
|
+
// We have to check without calling initializePricing, because
|
|
283
|
+
// pool-tracker is not calling that function
|
|
284
|
+
const newFluidDex = new FluidDex(network, dexKey, dexHelper);
|
|
285
|
+
await newFluidDex.initializePricing(blockNumber);
|
|
286
|
+
if (newFluidDex.updatePoolState) {
|
|
287
|
+
await newFluidDex.updatePoolState();
|
|
288
|
+
}
|
|
289
|
+
const poolLiquidity = await newFluidDex.getTopPoolsForToken(
|
|
290
|
+
tokens[tokenASymbol].address,
|
|
291
|
+
1,
|
|
292
|
+
);
|
|
293
|
+
|
|
294
|
+
if (!newFluidDex.hasConstantPriceLargeAmounts) {
|
|
295
|
+
checkPoolsLiquidity(
|
|
296
|
+
poolLiquidity,
|
|
297
|
+
Tokens[network][tokenASymbol].address,
|
|
298
|
+
dexKey,
|
|
299
|
+
);
|
|
300
|
+
}
|
|
301
|
+
});
|
|
223
302
|
});
|
|
224
303
|
});
|
|
225
304
|
});
|
|
@@ -42,7 +42,7 @@ export class FluidDex extends SimpleExchange implements IDex<FluidDexData> {
|
|
|
42
42
|
|
|
43
43
|
logger: Logger;
|
|
44
44
|
|
|
45
|
-
pools: FluidDexPool[];
|
|
45
|
+
pools: FluidDexPool[] = [];
|
|
46
46
|
|
|
47
47
|
readonly fluidCommonAddresses: FluidDexCommonAddresses;
|
|
48
48
|
|
|
@@ -64,7 +64,6 @@ export class FluidDex extends SimpleExchange implements IDex<FluidDexData> {
|
|
|
64
64
|
dexHelper,
|
|
65
65
|
this.logger,
|
|
66
66
|
);
|
|
67
|
-
this.pools = FluidDexConfig['FluidDex'][network].pools;
|
|
68
67
|
this.fluidDexPoolIface = new Interface(FluidDexPoolABI);
|
|
69
68
|
}
|
|
70
69
|
|
|
@@ -81,7 +80,11 @@ export class FluidDex extends SimpleExchange implements IDex<FluidDexData> {
|
|
|
81
80
|
}));
|
|
82
81
|
}
|
|
83
82
|
|
|
84
|
-
|
|
83
|
+
// Initialize pricing is called once in the start of
|
|
84
|
+
// pricing service. It is intended to setup the integration
|
|
85
|
+
// for pricing requests. It is optional for a DEX to
|
|
86
|
+
// implement this function
|
|
87
|
+
async initializePricing(blockNumber: number) {
|
|
85
88
|
this.pools = await this.fetchFluidDexPools(blockNumber);
|
|
86
89
|
for (const pool of this.pools) {
|
|
87
90
|
if (!this.eventPools[pool.id]) {
|
|
@@ -97,14 +100,6 @@ export class FluidDex extends SimpleExchange implements IDex<FluidDexData> {
|
|
|
97
100
|
}
|
|
98
101
|
}
|
|
99
102
|
|
|
100
|
-
// Initialize pricing is called once in the start of
|
|
101
|
-
// pricing service. It is intended to setup the integration
|
|
102
|
-
// for pricing requests. It is optional for a DEX to
|
|
103
|
-
// implement this function
|
|
104
|
-
async initializePricing(blockNumber: number) {
|
|
105
|
-
await this.updatePoolAndEventPool(blockNumber);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
103
|
getAdapters(side: SwapSide) {
|
|
109
104
|
return null;
|
|
110
105
|
}
|
|
@@ -134,7 +129,6 @@ export class FluidDex extends SimpleExchange implements IDex<FluidDexData> {
|
|
|
134
129
|
side: SwapSide,
|
|
135
130
|
blockNumber: number,
|
|
136
131
|
): Promise<string[]> {
|
|
137
|
-
await this.updatePoolAndEventPool(blockNumber);
|
|
138
132
|
const pool = await this.getPoolByTokenPair(
|
|
139
133
|
srcToken.address,
|
|
140
134
|
destToken.address,
|
|
@@ -175,8 +169,10 @@ export class FluidDex extends SimpleExchange implements IDex<FluidDexData> {
|
|
|
175
169
|
blockNumber: number,
|
|
176
170
|
limitPools?: string[],
|
|
177
171
|
): Promise<null | ExchangePrices<FluidDexData>> {
|
|
178
|
-
await this.updatePoolAndEventPool(blockNumber);
|
|
179
172
|
try {
|
|
173
|
+
if (srcToken.address.toLowerCase() === destToken.address.toLowerCase())
|
|
174
|
+
return null;
|
|
175
|
+
|
|
180
176
|
if (side === SwapSide.BUY) throw new Error(`Buy not supported`);
|
|
181
177
|
// Get the pool to use.
|
|
182
178
|
const pool = await this.getPoolByTokenPair(
|
|
@@ -283,98 +279,7 @@ export class FluidDex extends SimpleExchange implements IDex<FluidDexData> {
|
|
|
283
279
|
tokenAddress: Address,
|
|
284
280
|
limit: number,
|
|
285
281
|
): Promise<PoolLiquidity[]> {
|
|
286
|
-
|
|
287
|
-
// let liquidityAmounts: { [id: string]: bigint } = {};
|
|
288
|
-
// for (const pool of this.pools) {
|
|
289
|
-
// if (
|
|
290
|
-
// pool.token0 === tokenAddress.toLowerCase() ||
|
|
291
|
-
// pool.token1 === tokenAddress.toLowerCase()
|
|
292
|
-
// ) {
|
|
293
|
-
// const state: FluidDexPoolState = await this.eventPools[
|
|
294
|
-
// pool.id
|
|
295
|
-
// ].getStateOrGenerate(latestBlockNumber_, false);
|
|
296
|
-
//
|
|
297
|
-
// liquidityAmounts[pool.id] =
|
|
298
|
-
// pool.token0 === tokenAddress
|
|
299
|
-
// ? state.collateralReserves.token0RealReserves +
|
|
300
|
-
// state.debtReserves.token0RealReserves
|
|
301
|
-
// : state.collateralReserves.token1RealReserves +
|
|
302
|
-
// state.debtReserves.token1RealReserves;
|
|
303
|
-
// }
|
|
304
|
-
// }
|
|
305
|
-
//
|
|
306
|
-
// const entries = Object.entries(liquidityAmounts);
|
|
307
|
-
//
|
|
308
|
-
// // Sort the entries based on the values in descending order
|
|
309
|
-
// entries.sort((a, b) => {
|
|
310
|
-
// if (b[1] > a[1]) return 1;
|
|
311
|
-
// if (b[1] < a[1]) return -1;
|
|
312
|
-
// return 0;
|
|
313
|
-
// });
|
|
314
|
-
//
|
|
315
|
-
// // Take the top k entries
|
|
316
|
-
// const topKEntries = entries.slice(0, limit);
|
|
317
|
-
//
|
|
318
|
-
// // Convert the array back to an object
|
|
319
|
-
// const sortedAmounts = Object.fromEntries(topKEntries);
|
|
320
|
-
//
|
|
321
|
-
// const poolLiquidities: PoolLiquidity[] = [];
|
|
322
|
-
//
|
|
323
|
-
// for (const [id, amount] of Object.entries(sortedAmounts)) {
|
|
324
|
-
// const pool = this.pools.find(p => p.id === id);
|
|
325
|
-
// if (!pool) continue; // Skip if pool not found
|
|
326
|
-
//
|
|
327
|
-
// const state: FluidDexPoolState = await this.eventPools[
|
|
328
|
-
// pool.id
|
|
329
|
-
// ].getStateOrGenerate(latestBlockNumber_, false);
|
|
330
|
-
//
|
|
331
|
-
// // let token0decimals: number;
|
|
332
|
-
// // for (const [networkStr, symbolMapping] of Object.entries(Tokens)) {
|
|
333
|
-
// // let found = false;
|
|
334
|
-
// // for (const [symbol, tokenParams] of Object.entries(symbolMapping)) {
|
|
335
|
-
// // if (tokenParams.address.toLowerCase() === pool.token0.toLowerCase()) {
|
|
336
|
-
// // token0decimals = tokenParams.decimals;
|
|
337
|
-
// // found = true;
|
|
338
|
-
// // break;
|
|
339
|
-
// // }
|
|
340
|
-
// // if (found) break;
|
|
341
|
-
// // }
|
|
342
|
-
// // }
|
|
343
|
-
// //
|
|
344
|
-
// // let token1decimals: number;
|
|
345
|
-
// // for (const [networkStr, symbolMapping] of Object.entries(Tokens)) {
|
|
346
|
-
// // let found = false;
|
|
347
|
-
// // for (const [symbol, tokenParams] of Object.entries(symbolMapping)) {
|
|
348
|
-
// // if (tokenParams.address.toLowerCase() === pool.token1.toLowerCase()) {
|
|
349
|
-
// // token1decimals = tokenParams.decimals;
|
|
350
|
-
// // found = true;
|
|
351
|
-
// // break;
|
|
352
|
-
// // }
|
|
353
|
-
// // if (found) break;
|
|
354
|
-
// // }
|
|
355
|
-
// // }
|
|
356
|
-
//
|
|
357
|
-
// const usd0 = await this.dexHelper.getTokenUSDPrice(
|
|
358
|
-
// { address: pool.token0, decimals: token0decimals! },
|
|
359
|
-
// state.collateralReserves.token0RealReserves +
|
|
360
|
-
// state.debtReserves.token0RealReserves,
|
|
361
|
-
// );
|
|
362
|
-
//
|
|
363
|
-
// const usd1 = await this.dexHelper.getTokenUSDPrice(
|
|
364
|
-
// { address: pool.token1, decimals: token1decimals! },
|
|
365
|
-
// state.collateralReserves.token1RealReserves +
|
|
366
|
-
// state.debtReserves.token1RealReserves,
|
|
367
|
-
// );
|
|
368
|
-
//
|
|
369
|
-
// poolLiquidities.push({
|
|
370
|
-
// exchange: 'FluidDex',
|
|
371
|
-
// address: pool.address,
|
|
372
|
-
// connectorTokens: [],
|
|
373
|
-
// liquidityUSD: Number(usd0 + usd1), // converted to number
|
|
374
|
-
// });
|
|
375
|
-
// }
|
|
376
|
-
// return poolLiquidities;
|
|
377
|
-
|
|
282
|
+
//@TODO
|
|
378
283
|
return [];
|
|
379
284
|
}
|
|
380
285
|
|
|
@@ -389,13 +294,10 @@ export class FluidDex extends SimpleExchange implements IDex<FluidDexData> {
|
|
|
389
294
|
context: Context,
|
|
390
295
|
executorAddress: Address,
|
|
391
296
|
): Promise<DexExchangeParam> {
|
|
392
|
-
const latestBlockNumber_ = await this.dexHelper.provider.getBlockNumber();
|
|
393
|
-
await this.updatePoolAndEventPool(latestBlockNumber_);
|
|
394
|
-
|
|
395
297
|
if (side === SwapSide.BUY) throw new Error(`Buy not supported`);
|
|
396
298
|
|
|
397
299
|
let args: any;
|
|
398
|
-
let returnAmountPos: number | undefined
|
|
300
|
+
let returnAmountPos: number | undefined;
|
|
399
301
|
|
|
400
302
|
const method = 'swapIn';
|
|
401
303
|
|
|
@@ -408,7 +310,7 @@ export class FluidDex extends SimpleExchange implements IDex<FluidDexData> {
|
|
|
408
310
|
|
|
409
311
|
const pool = await this.getPoolByTokenPair(srcToken, destToken);
|
|
410
312
|
|
|
411
|
-
if (pool!.token0.toLowerCase()
|
|
313
|
+
if (pool!.token0.toLowerCase() !== srcToken.toLowerCase()) {
|
|
412
314
|
args = [false, BigInt(srcAmount), BigInt(destAmount), recipient];
|
|
413
315
|
} else {
|
|
414
316
|
args = [true, BigInt(srcAmount), BigInt(destAmount), recipient];
|