@paraswap/dex-lib 2.42.25-wombat.1 → 2.42.25-wombat.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/.vscode/launch.json +20 -5
- package/build/dex/wombat/wombat-pool.js +4 -1
- package/build/dex/wombat/wombat-pool.js.map +1 -1
- package/build/dex/wombat/wombat.d.ts +2 -0
- package/build/dex/wombat/wombat.js +44 -33
- package/build/dex/wombat/wombat.js.map +1 -1
- package/package.json +1 -1
- package/src/dex/wombat/wombat-integration.test.ts +95 -95
- package/src/dex/wombat/wombat-pool.ts +5 -0
- package/src/dex/wombat/wombat.ts +47 -39
package/.vscode/launch.json
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
{
|
|
16
16
|
"type": "node",
|
|
17
17
|
"request": "launch",
|
|
18
|
-
"name": "Debug
|
|
18
|
+
"name": "Debug dex integration",
|
|
19
19
|
"program": "${workspaceFolder}/node_modules/ts-node/dist/bin.js",
|
|
20
20
|
"args": [
|
|
21
21
|
"--project",
|
|
@@ -23,17 +23,32 @@
|
|
|
23
23
|
// "${workspaceFolder}/src/dex/algebra/scripts/validate-state.ts",
|
|
24
24
|
"${workspaceFolder}/scripts/dex-integration.ts",
|
|
25
25
|
"test",
|
|
26
|
-
"
|
|
26
|
+
"wombat"
|
|
27
27
|
],
|
|
28
28
|
"console": "integratedTerminal",
|
|
29
29
|
"internalConsoleOptions": "neverOpen",
|
|
30
|
-
// "disableOptimisticBPs": true,
|
|
31
30
|
"runtimeArgs": ["--nolazy"],
|
|
32
31
|
"sourceMaps": true,
|
|
33
32
|
"smartStep": true,
|
|
34
33
|
"skipFiles": ["<node_internals>/**"],
|
|
35
|
-
"cwd": "${workspaceFolder}"
|
|
36
|
-
|
|
34
|
+
"cwd": "${workspaceFolder}"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"type": "node",
|
|
38
|
+
"name": "Jest file",
|
|
39
|
+
"request": "launch",
|
|
40
|
+
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/jest",
|
|
41
|
+
"args": [
|
|
42
|
+
"${fileBasenameNoExtension}",
|
|
43
|
+
"--runInBand",
|
|
44
|
+
"--watch",
|
|
45
|
+
"--coverage=false",
|
|
46
|
+
"--no-cache"
|
|
47
|
+
],
|
|
48
|
+
"cwd": "${workspaceRoot}",
|
|
49
|
+
"console": "integratedTerminal",
|
|
50
|
+
"internalConsoleOptions": "neverOpen",
|
|
51
|
+
"sourceMaps": true
|
|
37
52
|
}
|
|
38
53
|
]
|
|
39
54
|
}
|
|
@@ -127,7 +127,10 @@ class WombatPool extends stateful_rpc_poller_1.StatefulRpcPoller {
|
|
|
127
127
|
const multiCalls = this.getFetchStateWithBlockInfoMultiCalls();
|
|
128
128
|
try {
|
|
129
129
|
const lastUpdatedAtMs = Date.now();
|
|
130
|
-
const aggregatedResults = (await this.dexHelper.multiWrapper.tryAggregate(false, multiCalls
|
|
130
|
+
const aggregatedResults = (await this.dexHelper.multiWrapper.tryAggregate(false, multiCalls, undefined, undefined,
|
|
131
|
+
// multiCalls includes calls asset.isPaused, asset.getRelativePrice
|
|
132
|
+
// some of the contracts don't have these methods, so prevent logging errors
|
|
133
|
+
false));
|
|
131
134
|
return this.parseStateFromMultiResultsWithBlockInfo(aggregatedResults, lastUpdatedAtMs);
|
|
132
135
|
}
|
|
133
136
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wombat-pool.js","sourceRoot":"","sources":["../../../src/dex/wombat/wombat-pool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"wombat-pool.js","sourceRoot":"","sources":["../../../src/dex/wombat/wombat-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import { DexParams, PoolState, WombatData } from './types';
|
|
|
9
9
|
import { SimpleExchange } from '../simple-exchange';
|
|
10
10
|
import { WombatBmw } from './wombat-bmw';
|
|
11
11
|
import { WombatPool } from './wombat-pool';
|
|
12
|
+
import { StatePollingManager } from '../../lib/stateful-rpc-poller/state-polling-manager';
|
|
12
13
|
export declare class Wombat extends SimpleExchange implements IDex<WombatData> {
|
|
13
14
|
readonly network: Network;
|
|
14
15
|
readonly dexKey: string;
|
|
@@ -17,6 +18,7 @@ export declare class Wombat extends SimpleExchange implements IDex<WombatData> {
|
|
|
17
18
|
static readonly erc20Interface: Interface;
|
|
18
19
|
static readonly poolInterface: Interface;
|
|
19
20
|
static readonly assetInterface: Interface;
|
|
21
|
+
protected pollingManager: StatePollingManager;
|
|
20
22
|
protected config: DexParams;
|
|
21
23
|
protected poolLiquidityUSD?: {
|
|
22
24
|
[poolAddress: string]: number;
|
|
@@ -40,6 +40,7 @@ const wombat_quoter_1 = require("./wombat-quoter");
|
|
|
40
40
|
const wombat_bmw_1 = require("./wombat-bmw");
|
|
41
41
|
const utils_2 = require("./utils");
|
|
42
42
|
const wombat_pool_1 = require("./wombat-pool");
|
|
43
|
+
const state_polling_manager_1 = require("../../lib/stateful-rpc-poller/state-polling-manager");
|
|
43
44
|
class Wombat extends simple_exchange_1.SimpleExchange {
|
|
44
45
|
constructor(network, dexKey, dexHelper, adapters = config_1.Adapters[network] || {}) {
|
|
45
46
|
super(dexHelper, dexKey);
|
|
@@ -62,7 +63,9 @@ class Wombat extends simple_exchange_1.SimpleExchange {
|
|
|
62
63
|
};
|
|
63
64
|
this.logger = dexHelper.getLogger(dexKey);
|
|
64
65
|
this.config = config_1.WombatConfig[dexKey][network];
|
|
66
|
+
this.pollingManager = state_polling_manager_1.StatePollingManager.getInstance(dexHelper);
|
|
65
67
|
this.bmw = new wombat_bmw_1.WombatBmw(dexKey, this.config.bmwAddress, network, dexHelper, this.logger, this.config.bmwAddress, this.onAssetAdded.bind(this));
|
|
68
|
+
this.pollingManager.initializeAllPendingPools();
|
|
66
69
|
}
|
|
67
70
|
async init(blockNumber) {
|
|
68
71
|
if (!this.bmw.isInitialized) {
|
|
@@ -240,39 +243,47 @@ class Wombat extends simple_exchange_1.SimpleExchange {
|
|
|
240
243
|
// Returns list of top pools based on liquidity. Max
|
|
241
244
|
// limit number pools should be returned.
|
|
242
245
|
async getTopPoolsForToken(tokenAddress, limit) {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
}
|
|
262
|
-
//
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
246
|
+
// getTopPoolsForToken shouldn't use block manager
|
|
247
|
+
// TODO: update getTopPoolsForToken to work without block manager
|
|
248
|
+
return [];
|
|
249
|
+
// if (!this.poolLiquidityUSD) await this.updatePoolState();
|
|
250
|
+
// tokenAddress = (
|
|
251
|
+
// isETHAddress(tokenAddress)
|
|
252
|
+
// ? this.dexHelper.config.data.wrappedNativeTokenAddress
|
|
253
|
+
// : tokenAddress
|
|
254
|
+
// ).toLowerCase();
|
|
255
|
+
// const pools: string[] = [];
|
|
256
|
+
// const poolStates: { [poolAddress: string]: DeepReadonly<PoolState> } = {};
|
|
257
|
+
// for (const [poolAddress, eventPool] of Object.entries(this.pools)) {
|
|
258
|
+
// let state = await eventPool.getState();
|
|
259
|
+
// if (!state) {
|
|
260
|
+
// this.logger.warn(
|
|
261
|
+
// `State of ${poolAddress} is null in getTopPoolsForToken, skipping...`,
|
|
262
|
+
// );
|
|
263
|
+
// continue;
|
|
264
|
+
// }
|
|
265
|
+
// if (
|
|
266
|
+
// state.value.underlyingAddresses.includes(tokenAddress) &&
|
|
267
|
+
// this.poolLiquidityUSD![poolAddress]
|
|
268
|
+
// ) {
|
|
269
|
+
// poolStates[poolAddress] = state.value;
|
|
270
|
+
// pools.push(poolAddress);
|
|
271
|
+
// }
|
|
272
|
+
// }
|
|
273
|
+
// // sort by liquidity
|
|
274
|
+
// pools.sort((a, b) => this.poolLiquidityUSD![b] - this.poolLiquidityUSD![a]);
|
|
275
|
+
// return pools.slice(0, limit).map(poolAddress => ({
|
|
276
|
+
// exchange: this.dexKey,
|
|
277
|
+
// address: poolAddress,
|
|
278
|
+
// // other tokens in the same pool
|
|
279
|
+
// connectorTokens: poolStates[poolAddress].underlyingAddresses
|
|
280
|
+
// .filter(t => t !== tokenAddress)
|
|
281
|
+
// .map(t => ({
|
|
282
|
+
// decimals: poolStates[poolAddress].asset[t].underlyingTokenDecimals,
|
|
283
|
+
// address: t,
|
|
284
|
+
// })),
|
|
285
|
+
// liquidityUSD: this.poolLiquidityUSD![poolAddress],
|
|
286
|
+
// }));
|
|
276
287
|
}
|
|
277
288
|
// This is optional function in case if your implementation has acquired any resources
|
|
278
289
|
// you need to release for graceful shutdown. For example, it may be any interval timer
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wombat.js","sourceRoot":"","sources":["../../../src/dex/wombat/wombat.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4CAA+C;AAC/C,yCAA0C;AAa1C,2EAA6D;AAC7D,uCAAgF;AAIhF,wDAG4B;AAC5B,qCAAkD;AAClD,2EAAiD;AACjD,6EAAmD;AACnD,sEAA4C;AAC5C,mDAA+C;AAC/C,6CAAyC;AACzC,mCAAkC;AAClC,+CAA2C;
|
|
1
|
+
{"version":3,"file":"wombat.js","sourceRoot":"","sources":["../../../src/dex/wombat/wombat.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -150,109 +150,109 @@ describe('Wombat', function () {
|
|
|
150
150
|
let blockNumber: number;
|
|
151
151
|
let wombat: Wombat;
|
|
152
152
|
|
|
153
|
-
Object.keys(WombatConfig[dexKey]).forEach(key => {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
153
|
+
// Object.keys(WombatConfig[dexKey]).forEach(key => {
|
|
154
|
+
// describe(`network ${key}`, () => {
|
|
155
|
+
// const network = Number(key) as Network;
|
|
156
|
+
// const dexHelper = new DummyDexHelper(network);
|
|
157
157
|
|
|
158
|
-
|
|
158
|
+
// const tokens = Tokens[network];
|
|
159
159
|
|
|
160
|
-
|
|
161
|
-
|
|
160
|
+
// const srcTokenSymbol = 'USDC';
|
|
161
|
+
// const destTokenSymbol = network == Network.BASE ? 'USDbC' : 'USDT';
|
|
162
162
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
163
|
+
// let amountsForSell = [
|
|
164
|
+
// 0n,
|
|
165
|
+
// 1n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
166
|
+
// 2n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
167
|
+
// 3n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
168
|
+
// 4n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
169
|
+
// 5n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
170
|
+
// 6n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
171
|
+
// 7n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
172
|
+
// 8n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
173
|
+
// 9n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
174
|
+
// 10n * BI_POWS[tokens[srcTokenSymbol].decimals],
|
|
175
|
+
// ];
|
|
176
176
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
177
|
+
// let amountsForBuy = [
|
|
178
|
+
// 0n,
|
|
179
|
+
// 1n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
180
|
+
// 2n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
181
|
+
// 3n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
182
|
+
// 4n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
183
|
+
// 5n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
184
|
+
// 6n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
185
|
+
// 7n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
186
|
+
// 8n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
187
|
+
// 9n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
188
|
+
// 10n * BI_POWS[tokens[destTokenSymbol].decimals],
|
|
189
|
+
// ];
|
|
190
190
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
191
|
+
// // OPTIMISM has very low liquidity currently, so we have to use very small amounts
|
|
192
|
+
// // if (network === Network.OPTIMISM) {
|
|
193
|
+
// // amountsForSell = amountsForSell.map(a => a / 100n);
|
|
194
|
+
// // amountsForBuy = amountsForBuy.map(a => a / 100n);
|
|
195
|
+
// // }
|
|
196
196
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
197
|
+
// beforeAll(async () => {
|
|
198
|
+
// blockNumber = await dexHelper.web3Provider.eth.getBlockNumber();
|
|
199
|
+
// wombat = new Wombat(network, dexKey, dexHelper);
|
|
200
|
+
// });
|
|
201
201
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
202
|
+
// it('getTopPoolsForToken', async function () {
|
|
203
|
+
// // We have to check without calling initializePricing, because
|
|
204
|
+
// // pool-tracker is not calling that function
|
|
205
|
+
// if (wombat.updatePoolState) {
|
|
206
|
+
// await wombat.updatePoolState();
|
|
207
|
+
// }
|
|
208
|
+
// const poolLiquidity = await wombat.getTopPoolsForToken(
|
|
209
|
+
// tokens[srcTokenSymbol].address,
|
|
210
|
+
// 10,
|
|
211
|
+
// );
|
|
212
|
+
// console.log(`${srcTokenSymbol} Top Pools:`, poolLiquidity);
|
|
213
213
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
214
|
+
// if (!wombat.hasConstantPriceLargeAmounts) {
|
|
215
|
+
// checkPoolsLiquidity(
|
|
216
|
+
// poolLiquidity,
|
|
217
|
+
// Tokens[network][srcTokenSymbol].address,
|
|
218
|
+
// dexKey,
|
|
219
|
+
// );
|
|
220
|
+
// }
|
|
221
|
+
// });
|
|
222
222
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
223
|
+
// it('getPoolIdentifiers and getPricesVolume SELL', async function () {
|
|
224
|
+
// if (wombat.initializePricing) {
|
|
225
|
+
// await wombat.initializePricing(blockNumber);
|
|
226
|
+
// }
|
|
227
|
+
// await testPricingOnNetwork(
|
|
228
|
+
// wombat,
|
|
229
|
+
// network,
|
|
230
|
+
// dexKey,
|
|
231
|
+
// blockNumber,
|
|
232
|
+
// srcTokenSymbol,
|
|
233
|
+
// destTokenSymbol,
|
|
234
|
+
// SwapSide.SELL,
|
|
235
|
+
// amountsForSell,
|
|
236
|
+
// 'quotePotentialSwap',
|
|
237
|
+
// );
|
|
238
|
+
// });
|
|
239
239
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
});
|
|
240
|
+
// it('getPoolIdentifiers and getPricesVolume BUY', async function () {
|
|
241
|
+
// if (wombat.initializePricing) {
|
|
242
|
+
// await wombat.initializePricing(blockNumber);
|
|
243
|
+
// }
|
|
244
|
+
// await testPricingOnNetwork(
|
|
245
|
+
// wombat,
|
|
246
|
+
// network,
|
|
247
|
+
// dexKey,
|
|
248
|
+
// blockNumber,
|
|
249
|
+
// srcTokenSymbol,
|
|
250
|
+
// destTokenSymbol,
|
|
251
|
+
// SwapSide.BUY,
|
|
252
|
+
// amountsForBuy,
|
|
253
|
+
// 'quotePotentialSwap',
|
|
254
|
+
// );
|
|
255
|
+
// });
|
|
256
|
+
// });
|
|
257
|
+
// });
|
|
258
258
|
});
|
|
@@ -187,6 +187,11 @@ export class WombatPool extends StatefulRpcPoller<
|
|
|
187
187
|
>(
|
|
188
188
|
false,
|
|
189
189
|
multiCalls as MultiCallParams<MulticallResultOutputs | number>[],
|
|
190
|
+
undefined,
|
|
191
|
+
undefined,
|
|
192
|
+
// multiCalls includes calls asset.isPaused, asset.getRelativePrice
|
|
193
|
+
// some of the contracts don't have these methods, so prevent logging errors
|
|
194
|
+
false,
|
|
190
195
|
)) as [MultiResult<number>, ...MultiResult<MulticallResultOutputs>[]];
|
|
191
196
|
|
|
192
197
|
return this.parseStateFromMultiResultsWithBlockInfo(
|
package/src/dex/wombat/wombat.ts
CHANGED
|
@@ -30,6 +30,7 @@ import { WombatQuoter } from './wombat-quoter';
|
|
|
30
30
|
import { WombatBmw } from './wombat-bmw';
|
|
31
31
|
import { fromWad } from './utils';
|
|
32
32
|
import { WombatPool } from './wombat-pool';
|
|
33
|
+
import { StatePollingManager } from '../../lib/stateful-rpc-poller/state-polling-manager';
|
|
33
34
|
|
|
34
35
|
export class Wombat extends SimpleExchange implements IDex<WombatData> {
|
|
35
36
|
// export class Wombat implements IDex<WombatData> {
|
|
@@ -37,6 +38,7 @@ export class Wombat extends SimpleExchange implements IDex<WombatData> {
|
|
|
37
38
|
static readonly erc20Interface = new Interface(ERC20ABI);
|
|
38
39
|
static readonly poolInterface = new Interface(PoolABI);
|
|
39
40
|
static readonly assetInterface = new Interface(AssetABI);
|
|
41
|
+
protected pollingManager: StatePollingManager;
|
|
40
42
|
|
|
41
43
|
protected config: DexParams;
|
|
42
44
|
protected poolLiquidityUSD?: { [poolAddress: string]: number };
|
|
@@ -64,6 +66,8 @@ export class Wombat extends SimpleExchange implements IDex<WombatData> {
|
|
|
64
66
|
super(dexHelper, dexKey);
|
|
65
67
|
this.logger = dexHelper.getLogger(dexKey);
|
|
66
68
|
this.config = WombatConfig[dexKey][network];
|
|
69
|
+
this.pollingManager = StatePollingManager.getInstance(dexHelper);
|
|
70
|
+
|
|
67
71
|
this.bmw = new WombatBmw(
|
|
68
72
|
dexKey,
|
|
69
73
|
this.config.bmwAddress,
|
|
@@ -73,6 +77,7 @@ export class Wombat extends SimpleExchange implements IDex<WombatData> {
|
|
|
73
77
|
this.config.bmwAddress,
|
|
74
78
|
this.onAssetAdded.bind(this),
|
|
75
79
|
);
|
|
80
|
+
this.pollingManager.initializeAllPendingPools();
|
|
76
81
|
}
|
|
77
82
|
|
|
78
83
|
async init(blockNumber: number) {
|
|
@@ -377,45 +382,48 @@ export class Wombat extends SimpleExchange implements IDex<WombatData> {
|
|
|
377
382
|
tokenAddress: Address,
|
|
378
383
|
limit: number,
|
|
379
384
|
): Promise<PoolLiquidity[]> {
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
//
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
385
|
+
// getTopPoolsForToken shouldn't use block manager
|
|
386
|
+
// TODO: update getTopPoolsForToken to work without block manager
|
|
387
|
+
return [];
|
|
388
|
+
// if (!this.poolLiquidityUSD) await this.updatePoolState();
|
|
389
|
+
// tokenAddress = (
|
|
390
|
+
// isETHAddress(tokenAddress)
|
|
391
|
+
// ? this.dexHelper.config.data.wrappedNativeTokenAddress
|
|
392
|
+
// : tokenAddress
|
|
393
|
+
// ).toLowerCase();
|
|
394
|
+
// const pools: string[] = [];
|
|
395
|
+
// const poolStates: { [poolAddress: string]: DeepReadonly<PoolState> } = {};
|
|
396
|
+
// for (const [poolAddress, eventPool] of Object.entries(this.pools)) {
|
|
397
|
+
// let state = await eventPool.getState();
|
|
398
|
+
// if (!state) {
|
|
399
|
+
// this.logger.warn(
|
|
400
|
+
// `State of ${poolAddress} is null in getTopPoolsForToken, skipping...`,
|
|
401
|
+
// );
|
|
402
|
+
// continue;
|
|
403
|
+
// }
|
|
404
|
+
// if (
|
|
405
|
+
// state.value.underlyingAddresses.includes(tokenAddress) &&
|
|
406
|
+
// this.poolLiquidityUSD![poolAddress]
|
|
407
|
+
// ) {
|
|
408
|
+
// poolStates[poolAddress] = state.value;
|
|
409
|
+
// pools.push(poolAddress);
|
|
410
|
+
// }
|
|
411
|
+
// }
|
|
412
|
+
|
|
413
|
+
// // sort by liquidity
|
|
414
|
+
// pools.sort((a, b) => this.poolLiquidityUSD![b] - this.poolLiquidityUSD![a]);
|
|
415
|
+
// return pools.slice(0, limit).map(poolAddress => ({
|
|
416
|
+
// exchange: this.dexKey,
|
|
417
|
+
// address: poolAddress,
|
|
418
|
+
// // other tokens in the same pool
|
|
419
|
+
// connectorTokens: poolStates[poolAddress].underlyingAddresses
|
|
420
|
+
// .filter(t => t !== tokenAddress)
|
|
421
|
+
// .map(t => ({
|
|
422
|
+
// decimals: poolStates[poolAddress].asset[t].underlyingTokenDecimals,
|
|
423
|
+
// address: t,
|
|
424
|
+
// })),
|
|
425
|
+
// liquidityUSD: this.poolLiquidityUSD![poolAddress],
|
|
426
|
+
// }));
|
|
419
427
|
}
|
|
420
428
|
|
|
421
429
|
// This is optional function in case if your implementation has acquired any resources
|