@paraswap/dex-lib 4.3.1-0 → 4.3.1-1
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.
|
@@ -18,9 +18,10 @@ export declare class SolidlyRpcPoolTracker extends Solidly {
|
|
|
18
18
|
constructor(network: Network, dexKey: string, dexHelper: IDexHelper, isDynamicFees?: boolean);
|
|
19
19
|
protected getAllPoolsCallData(): MultiCallParams<number> | undefined;
|
|
20
20
|
protected getPoolCallData(index: number): MultiCallParams<string> | undefined;
|
|
21
|
+
updatePoolState(): Promise<void>;
|
|
21
22
|
getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
|
|
22
23
|
updatePools(): Promise<void>;
|
|
23
24
|
initPools(fromIndex: number, toIndex: number): Promise<void>;
|
|
24
|
-
updatePoolsReserves(pools:
|
|
25
|
+
updatePoolsReserves(pools: Pool[]): Promise<Pool[]>;
|
|
25
26
|
}
|
|
26
27
|
export {};
|
|
@@ -46,6 +46,31 @@ const SolidlyFactoryABI = [
|
|
|
46
46
|
stateMutability: 'view',
|
|
47
47
|
type: 'function',
|
|
48
48
|
},
|
|
49
|
+
{
|
|
50
|
+
constant: true,
|
|
51
|
+
inputs: [],
|
|
52
|
+
name: 'getReserves',
|
|
53
|
+
outputs: [
|
|
54
|
+
{
|
|
55
|
+
internalType: 'uint112',
|
|
56
|
+
name: '_reserve0',
|
|
57
|
+
type: 'uint256',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
internalType: 'uint112',
|
|
61
|
+
name: '_reserve1',
|
|
62
|
+
type: 'uint256',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
internalType: 'uint32',
|
|
66
|
+
name: '_blockTimestampLast',
|
|
67
|
+
type: 'uint256',
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
payable: false,
|
|
71
|
+
stateMutability: 'view',
|
|
72
|
+
type: 'function',
|
|
73
|
+
},
|
|
49
74
|
];
|
|
50
75
|
const solidlyFactoryIface = new abi_1.Interface(SolidlyFactoryABI);
|
|
51
76
|
class SolidlyRpcPoolTracker extends solidly_1.Solidly {
|
|
@@ -67,14 +92,19 @@ class SolidlyRpcPoolTracker extends solidly_1.Solidly {
|
|
|
67
92
|
getPoolCallData(index) {
|
|
68
93
|
return undefined;
|
|
69
94
|
}
|
|
70
|
-
async
|
|
95
|
+
async updatePoolState() {
|
|
96
|
+
this.logger.info(`Started updating pools for ${this.dexKey} on ${this.network} network`);
|
|
71
97
|
await this.updatePools();
|
|
98
|
+
await this.updatePoolsReserves(this.pools);
|
|
99
|
+
this.logger.info(`Finished updating pools for ${this.dexKey} on ${this.network} network`);
|
|
100
|
+
}
|
|
101
|
+
async getTopPoolsForToken(tokenAddress, limit) {
|
|
72
102
|
const token = tokenAddress.toLowerCase();
|
|
73
103
|
let pools = this.pools.filter(pool => pool.token0.address === token || pool.token1.address === token);
|
|
74
104
|
if (pools.length === 0) {
|
|
75
105
|
return [];
|
|
76
106
|
}
|
|
77
|
-
pools = await this.updatePoolsReserves(pools.map(pool => pool.address));
|
|
107
|
+
// pools = await this.updatePoolsReserves(pools.map(pool => pool.address));
|
|
78
108
|
const tokensAmounts = pools
|
|
79
109
|
.map(pool => {
|
|
80
110
|
const token0 = pool.token0.address;
|
|
@@ -143,20 +173,18 @@ class SolidlyRpcPoolTracker extends solidly_1.Solidly {
|
|
|
143
173
|
decodeFunction: decoders_1.addressDecode,
|
|
144
174
|
}, {
|
|
145
175
|
target: poolResult.returnData,
|
|
146
|
-
callData: solidlyFactoryIface.encodeFunctionData('
|
|
147
|
-
decodeFunction:
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
callData: solidlyFactoryIface.encodeFunctionData('reserve1', []),
|
|
151
|
-
decodeFunction: decoders_1.uint256ToBigInt,
|
|
176
|
+
callData: solidlyFactoryIface.encodeFunctionData('getReserves', []),
|
|
177
|
+
decodeFunction: (result) => {
|
|
178
|
+
return (0, decoders_1.generalDecoder)(result, ['uint256', 'uint256', 'uint256'], [0n, 0n, 0], res => [BigInt(res[0]), BigInt(res[1]), Number(res[2])]);
|
|
179
|
+
},
|
|
152
180
|
});
|
|
153
181
|
}
|
|
154
182
|
const pools = await this.dexHelper.multiWrapper.tryAggregate(true, poolsCalldata);
|
|
155
183
|
this.pools = [];
|
|
156
184
|
const tokensSet = new Set();
|
|
157
185
|
for (let i = 0; i < allPoolsResults.length; i++) {
|
|
158
|
-
const token0 = pools[i *
|
|
159
|
-
const token1 = pools[i *
|
|
186
|
+
const token0 = pools[i * 3].returnData.toLowerCase();
|
|
187
|
+
const token1 = pools[i * 3 + 1].returnData.toLowerCase();
|
|
160
188
|
tokensSet.add(token0.toLowerCase());
|
|
161
189
|
tokensSet.add(token1.toLowerCase());
|
|
162
190
|
}
|
|
@@ -177,10 +205,9 @@ class SolidlyRpcPoolTracker extends solidly_1.Solidly {
|
|
|
177
205
|
}, {});
|
|
178
206
|
for (let i = 0; i < allPoolsResults.length; i++) {
|
|
179
207
|
const poolAddress = allPoolsResults[i].returnData.toLowerCase();
|
|
180
|
-
const token0 = pools[i *
|
|
181
|
-
const token1 = pools[i *
|
|
182
|
-
const reserve0 = pools[i *
|
|
183
|
-
const reserve1 = pools[i * 4 + 3].returnData;
|
|
208
|
+
const token0 = pools[i * 3].returnData.toLowerCase();
|
|
209
|
+
const token1 = pools[i * 3 + 1].returnData.toLowerCase();
|
|
210
|
+
const [reserve0, reserve1] = pools[i * 3 + 2].returnData;
|
|
184
211
|
this.pools.push({
|
|
185
212
|
address: poolAddress,
|
|
186
213
|
token0: {
|
|
@@ -200,26 +227,19 @@ class SolidlyRpcPoolTracker extends solidly_1.Solidly {
|
|
|
200
227
|
const callData = [];
|
|
201
228
|
for (const pool of pools) {
|
|
202
229
|
callData.push({
|
|
203
|
-
target: pool,
|
|
204
|
-
callData: solidlyFactoryIface.encodeFunctionData('
|
|
205
|
-
decodeFunction:
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
callData: solidlyFactoryIface.encodeFunctionData('reserve1', []),
|
|
209
|
-
decodeFunction: decoders_1.uint256ToBigInt,
|
|
230
|
+
target: pool.address,
|
|
231
|
+
callData: solidlyFactoryIface.encodeFunctionData('getReserves', []),
|
|
232
|
+
decodeFunction: (result) => {
|
|
233
|
+
return (0, decoders_1.generalDecoder)(result, ['uint256', 'uint256', 'uint256'], [0n, 0n, 0], res => [BigInt(res[0]), BigInt(res[1]), Number(res[2])]);
|
|
234
|
+
},
|
|
210
235
|
});
|
|
211
236
|
}
|
|
212
237
|
const results = await this.dexHelper.multiWrapper.tryAggregate(true, callData);
|
|
213
238
|
const _pools = [];
|
|
214
239
|
for (let i = 0; i < pools.length; i++) {
|
|
215
|
-
const reserve0 = results[i
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
if (poolIndex !== -1) {
|
|
219
|
-
this.pools[poolIndex].reserve0 = reserve0;
|
|
220
|
-
this.pools[poolIndex].reserve1 = reserve1;
|
|
221
|
-
_pools.push(this.pools[poolIndex]);
|
|
222
|
-
}
|
|
240
|
+
const [reserve0, reserve1] = results[i].returnData;
|
|
241
|
+
pools[i].reserve0 = reserve0;
|
|
242
|
+
pools[i].reserve1 = reserve1;
|
|
223
243
|
}
|
|
224
244
|
return _pools;
|
|
225
245
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-pool-tracker.js","sourceRoot":"","sources":["../../../src/dex/solidly/rpc-pool-tracker.ts"],"names":[],"mappings":";;;AAAA,4CAA+C;AAG/C,iDAI4B;AAG5B,uCAAoC;
|
|
1
|
+
{"version":3,"file":"rpc-pool-tracker.js","sourceRoot":"","sources":["../../../src/dex/solidly/rpc-pool-tracker.ts"],"names":[],"mappings":"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"}
|