@paraswap/dex-lib 4.3.5 → 4.3.6-algebra-ring.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/build/abi/algebra-integral/AlgebraFactory.abi.json +947 -0
  2. package/build/abi/algebra-integral/Quoter.abi.json +231 -0
  3. package/build/abi/algebra-integral/SwapRouter.abi.json +810 -0
  4. package/build/abi/ekubo/twamm-data-fetcher.json +216 -0
  5. package/build/abi/ekubo/twamm.json +720 -0
  6. package/build/abi/ring-v2/few-wrapped-token.json +587 -0
  7. package/build/abi/ring-v2/ring-v2-factory.json +125 -0
  8. package/build/abi/ring-v2/ring-v2-pool.json +461 -0
  9. package/build/abi/ring-v2/ring-v2-router.json +332 -0
  10. package/build/dex/algebra-integral/algebra-integral-factory.d.ts +29 -0
  11. package/build/dex/algebra-integral/algebra-integral-factory.js +159 -0
  12. package/build/dex/algebra-integral/algebra-integral-factory.js.map +1 -0
  13. package/build/dex/algebra-integral/algebra-integral.d.ts +43 -0
  14. package/build/dex/algebra-integral/algebra-integral.js +425 -0
  15. package/build/dex/algebra-integral/algebra-integral.js.map +1 -0
  16. package/build/dex/algebra-integral/config.d.ts +3 -0
  17. package/build/dex/algebra-integral/config.js +17 -0
  18. package/build/dex/algebra-integral/config.js.map +1 -0
  19. package/build/dex/algebra-integral/types.d.ts +35 -0
  20. package/build/dex/algebra-integral/types.js +10 -0
  21. package/build/dex/algebra-integral/types.js.map +1 -0
  22. package/build/dex/ekubo/pools/base.d.ts +36 -0
  23. package/build/dex/ekubo/pools/base.js +289 -0
  24. package/build/dex/ekubo/pools/base.js.map +1 -0
  25. package/build/dex/ekubo/pools/full-range.d.ts +23 -0
  26. package/build/dex/ekubo/pools/full-range.js +99 -0
  27. package/build/dex/ekubo/pools/full-range.js.map +1 -0
  28. package/build/dex/ekubo/pools/iface.d.ts +46 -0
  29. package/build/dex/ekubo/pools/iface.js +75 -0
  30. package/build/dex/ekubo/pools/iface.js.map +1 -0
  31. package/build/dex/ekubo/pools/math/twamm/exp2.d.ts +1 -0
  32. package/build/dex/ekubo/pools/math/twamm/exp2.js +86 -0
  33. package/build/dex/ekubo/pools/math/twamm/exp2.js.map +1 -0
  34. package/build/dex/ekubo/pools/math/twamm/sqrt-ratio.d.ts +1 -0
  35. package/build/dex/ekubo/pools/math/twamm/sqrt-ratio.js +56 -0
  36. package/build/dex/ekubo/pools/math/twamm/sqrt-ratio.js.map +1 -0
  37. package/build/dex/ekubo/pools/oracle.d.ts +8 -0
  38. package/build/dex/ekubo/pools/oracle.js +19 -0
  39. package/build/dex/ekubo/pools/oracle.js.map +1 -0
  40. package/build/dex/ekubo/pools/twamm.d.ts +38 -0
  41. package/build/dex/ekubo/pools/twamm.js +253 -0
  42. package/build/dex/ekubo/pools/twamm.js.map +1 -0
  43. package/build/dex/ekubo/pools/utils.d.ts +28 -0
  44. package/build/dex/ekubo/pools/utils.js +80 -0
  45. package/build/dex/ekubo/pools/utils.js.map +1 -0
  46. package/build/dex/index.js +4 -0
  47. package/build/dex/index.js.map +1 -1
  48. package/build/dex/miro-migrator/constants.d.ts +1 -1
  49. package/build/dex/miro-migrator/constants.js +1 -1
  50. package/build/dex/miro-migrator/miro-migrator-pool.d.ts +5 -5
  51. package/build/dex/miro-migrator/miro-migrator-pool.js +13 -22
  52. package/build/dex/miro-migrator/miro-migrator-pool.js.map +1 -1
  53. package/build/dex/miro-migrator/miro-migrator-state.d.ts +27 -0
  54. package/build/dex/miro-migrator/miro-migrator-state.js +89 -0
  55. package/build/dex/miro-migrator/miro-migrator-state.js.map +1 -0
  56. package/build/dex/miro-migrator/miro-migrator.js +4 -2
  57. package/build/dex/miro-migrator/miro-migrator.js.map +1 -1
  58. package/build/dex/uniswap-v2/ring-v2.d.ts +35 -0
  59. package/build/dex/uniswap-v2/ring-v2.js +247 -0
  60. package/build/dex/uniswap-v2/ring-v2.js.map +1 -0
  61. package/build/dex/uniswap-v2/uniswap-v2.d.ts +1 -1
  62. package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
  63. package/package.json +1 -1
@@ -0,0 +1,425 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.AlgebraIntegral = void 0;
40
+ const abi_1 = require("@ethersproject/abi");
41
+ const solidity_1 = require("@ethersproject/solidity");
42
+ const lodash_1 = __importDefault(require("lodash"));
43
+ const constants_1 = require("../../constants");
44
+ const CALLDATA_GAS_COST = __importStar(require("../../calldata-gas-cost"));
45
+ const utils_1 = require("ethers/lib/utils");
46
+ const balancer_fetcher_1 = require("../../lib/tokens/balancer-fetcher");
47
+ const SwapRouter_abi_json_1 = __importDefault(require("../../abi/algebra-integral/SwapRouter.abi.json"));
48
+ const Quoter_abi_json_1 = __importDefault(require("../../abi/algebra-integral/Quoter.abi.json"));
49
+ const UniswapMulti_abi_json_1 = __importDefault(require("../../abi/uniswap-v3/UniswapMulti.abi.json"));
50
+ const utils_2 = require("../../utils");
51
+ const types_1 = require("./types");
52
+ const simple_exchange_1 = require("../simple-exchange");
53
+ const token_transfer_fee_1 = require("../../lib/token-transfer-fee");
54
+ const config_1 = require("./config");
55
+ const types_2 = require("../../lib/tokens/types");
56
+ const utils_3 = require("../../executor/utils");
57
+ const algebra_integral_factory_1 = require("./algebra-integral-factory");
58
+ const ALGEBRA_QUOTE_GASLIMIT = 2_000_000;
59
+ const ALGEBRA_EFFICIENCY_FACTOR = 3;
60
+ class AlgebraIntegral extends simple_exchange_1.SimpleExchange {
61
+ network;
62
+ dexKey;
63
+ dexHelper;
64
+ routerIface;
65
+ quoterIface;
66
+ config;
67
+ hasConstantPriceLargeAmounts = false;
68
+ needWrapNative = true;
69
+ isFeeOnTransferSupported = true;
70
+ factory;
71
+ static dexKeysWithNetwork = (0, utils_2.getDexKeysWithNetwork)(config_1.AlgebraIntegralConfig);
72
+ logger;
73
+ uniswapMulti;
74
+ constructor(network, dexKey, dexHelper, routerIface = new utils_1.Interface(SwapRouter_abi_json_1.default), quoterIface = new utils_1.Interface(Quoter_abi_json_1.default), config = config_1.AlgebraIntegralConfig[dexKey][network]) {
75
+ super(dexHelper, dexKey);
76
+ this.network = network;
77
+ this.dexKey = dexKey;
78
+ this.dexHelper = dexHelper;
79
+ this.routerIface = routerIface;
80
+ this.quoterIface = quoterIface;
81
+ this.config = config;
82
+ this.logger = dexHelper.getLogger(dexKey);
83
+ this.uniswapMulti = new this.dexHelper.web3Provider.eth.Contract(UniswapMulti_abi_json_1.default, this.config.uniswapMulticall);
84
+ this.factory = new algebra_integral_factory_1.AlgebraIntegralFactory(dexKey, this.network, dexHelper, this.logger, this.config.factory, this.config.subgraphURL);
85
+ }
86
+ async initializePricing(blockNumber) {
87
+ await this.factory.initialize(blockNumber);
88
+ }
89
+ getAdapters(side) {
90
+ return null;
91
+ }
92
+ getPoolIdentifier(srcAddress, destAddress, deployerAddress) {
93
+ const tokenAddresses = this._sortTokens(srcAddress, destAddress).join('_');
94
+ return `${this.dexKey}_${tokenAddresses}_${deployerAddress}`;
95
+ }
96
+ // Returns list of pool identifiers that can be used
97
+ // for a given swap. poolIdentifiers must be unique
98
+ // across DEXes. It is recommended to use
99
+ // ${dexKey}_${poolAddress} as a poolIdentifier
100
+ async getPoolIdentifiers(srcToken, destToken, side, blockNumber) {
101
+ const _srcToken = this.dexHelper.config.wrapETH(srcToken);
102
+ const _destToken = this.dexHelper.config.wrapETH(destToken);
103
+ const [_srcAddress, _destAddress] = this._getLoweredAddresses(_srcToken, _destToken);
104
+ if (_srcAddress === _destAddress)
105
+ return [];
106
+ const pools = await this.factory.getAvailablePoolsForPair(_srcAddress, _destAddress, blockNumber);
107
+ if (pools.length === 0)
108
+ return [];
109
+ return pools.map(pool => this.getPoolIdentifier(_srcAddress, _destAddress, pool.deployer));
110
+ }
111
+ async getPricingFromRpc(from, to, amounts, side, pools, transferFees = {
112
+ srcFee: 0,
113
+ destFee: 0,
114
+ srcDexFee: 0,
115
+ destDexFee: 0,
116
+ }) {
117
+ if (pools.length === 0) {
118
+ return null;
119
+ }
120
+ this.logger.warn(`fallback to rpc for ${pools.length} pool(s)`);
121
+ const requests = pools.map(pool => ({
122
+ owner: pool.poolAddress,
123
+ asset: side === constants_1.SwapSide.SELL ? from.address : to.address,
124
+ assetType: types_2.AssetType.ERC20,
125
+ ids: [
126
+ {
127
+ id: types_2.DEFAULT_ID_ERC20,
128
+ spenders: [],
129
+ },
130
+ ],
131
+ }));
132
+ const balances = await (0, balancer_fetcher_1.getBalances)(this.dexHelper.multiWrapper, requests);
133
+ const _isSrcTokenTransferFeeToBeExchanged = (0, utils_2.isSrcTokenTransferFeeToBeExchanged)(transferFees);
134
+ const _isDestTokenTransferFeeToBeExchanged = (0, utils_2.isDestTokenTransferFeeToBeExchanged)(transferFees);
135
+ const unitVolume = (0, utils_2.getBigIntPow)((side === constants_1.SwapSide.SELL ? from : to).decimals);
136
+ const chunks = amounts.length - 1;
137
+ const _width = Math.floor(chunks / this.config.chunksCount);
138
+ const chunkedAmounts = [unitVolume].concat(Array.from(Array(this.config.chunksCount).keys()).map(i => amounts[(i + 1) * _width]));
139
+ const availableAmountsPerPool = pools.map((pool, index) => {
140
+ const balance = balances[index].amounts[types_2.DEFAULT_ID_ERC20_AS_STRING];
141
+ return chunkedAmounts.map(amount => (balance >= amount ? amount : 0n));
142
+ });
143
+ const amountsWithFeePerPool = availableAmountsPerPool.map(poolAmounts => _isSrcTokenTransferFeeToBeExchanged
144
+ ? (0, token_transfer_fee_1.applyTransferFee)(poolAmounts, side, transferFees.srcDexFee, constants_1.SRC_TOKEN_DEX_TRANSFERS)
145
+ : poolAmounts);
146
+ const calldata = pools.flatMap((pool, poolIndex) => {
147
+ const amountsForPool = amountsWithFeePerPool[poolIndex];
148
+ return amountsForPool
149
+ .filter(amount => amount !== 0n)
150
+ .map(amount => ({
151
+ target: this.config.quoter,
152
+ gasLimit: ALGEBRA_QUOTE_GASLIMIT,
153
+ callData: side === constants_1.SwapSide.SELL
154
+ ? this.quoterIface.encodeFunctionData('quoteExactInputSingle', [
155
+ from.address,
156
+ to.address,
157
+ pool.deployer,
158
+ amount.toString(),
159
+ 0,
160
+ ])
161
+ : this.quoterIface.encodeFunctionData('quoteExactOutputSingle', [
162
+ from.address,
163
+ to.address,
164
+ pool.deployer,
165
+ amount.toString(),
166
+ 0,
167
+ ]),
168
+ }));
169
+ });
170
+ const data = await this.uniswapMulti.methods.multicall(calldata).call();
171
+ let totalGasCost = 0;
172
+ let totalSuccessFullSwaps = 0;
173
+ const decode = (j) => {
174
+ const { success, gasUsed, returnData } = data.returnData[j];
175
+ if (!success) {
176
+ return 0n;
177
+ }
178
+ const decoded = abi_1.defaultAbiCoder.decode(['uint256'], returnData);
179
+ totalGasCost += +gasUsed;
180
+ totalSuccessFullSwaps++;
181
+ return BigInt(decoded[0].toString());
182
+ };
183
+ const averageGasCost = !totalSuccessFullSwaps
184
+ ? ALGEBRA_QUOTE_GASLIMIT
185
+ : Math.round(totalGasCost / totalSuccessFullSwaps);
186
+ let i = 0;
187
+ const result = pools.map((pool, poolIndex) => {
188
+ const amountsForPool = amountsWithFeePerPool[poolIndex];
189
+ const _rates = amountsForPool.map(a => (a === 0n ? 0n : decode(i++)));
190
+ const _ratesWithFee = _isDestTokenTransferFeeToBeExchanged
191
+ ? (0, token_transfer_fee_1.applyTransferFee)(_rates, side, transferFees.destDexFee, constants_1.DEST_TOKEN_DEX_TRANSFERS)
192
+ : _rates;
193
+ const unit = _ratesWithFee[0];
194
+ const prices = (0, utils_2.interpolate)(chunkedAmounts.slice(1), _ratesWithFee.slice(1), amounts, side);
195
+ return {
196
+ prices,
197
+ unit,
198
+ data: {
199
+ feeOnTransfer: _isSrcTokenTransferFeeToBeExchanged,
200
+ path: [
201
+ {
202
+ tokenIn: from.address,
203
+ tokenOut: to.address,
204
+ deployer: pool.deployer,
205
+ },
206
+ ],
207
+ },
208
+ poolIdentifier: this.getPoolIdentifier(pool.token0, pool.token1, pool.deployer),
209
+ exchange: this.dexKey,
210
+ gasCost: prices.map(p => (p === 0n ? 0 : averageGasCost)),
211
+ poolAddresses: [pool.poolAddress],
212
+ };
213
+ });
214
+ return result;
215
+ }
216
+ // Returns pool prices for amounts.
217
+ // If limitPools is defined only pools in limitPools
218
+ // should be used. If limitPools is undefined then
219
+ // any pools can be used.
220
+ async getPricesVolume(srcToken, destToken, amounts, side, blockNumber, limitPools, transferFees = {
221
+ srcFee: 0,
222
+ destFee: 0,
223
+ srcDexFee: 0,
224
+ destDexFee: 0,
225
+ }) {
226
+ try {
227
+ const _isSrcTokenTransferFeeToBeExchanged = (0, utils_2.isSrcTokenTransferFeeToBeExchanged)(transferFees);
228
+ if (_isSrcTokenTransferFeeToBeExchanged && side == constants_1.SwapSide.BUY) {
229
+ return null;
230
+ }
231
+ const _srcToken = this.dexHelper.config.wrapETH(srcToken);
232
+ const _destToken = this.dexHelper.config.wrapETH(destToken);
233
+ const [_srcAddress, _destAddress] = this._getLoweredAddresses(_srcToken, _destToken);
234
+ if (_srcAddress === _destAddress)
235
+ return null;
236
+ let pools = await this.factory.getAvailablePoolsForPair(_srcAddress, _destAddress, blockNumber);
237
+ if (limitPools && limitPools.length > 0) {
238
+ const limitPoolsSet = new Set(limitPools);
239
+ pools = pools.filter(pool => {
240
+ const poolIdentifier = this.getPoolIdentifier(_srcAddress, _destAddress, pool.deployer);
241
+ return limitPoolsSet.has(poolIdentifier);
242
+ });
243
+ }
244
+ const rpcPrice = await this.getPricingFromRpc(_srcToken, _destToken, amounts, side, pools, transferFees);
245
+ return rpcPrice;
246
+ }
247
+ catch (e) {
248
+ this.logger.error(`Error_getPricesVolume ${srcToken.symbol || srcToken.address}, ${destToken.symbol || destToken.address}, ${side}:`, e);
249
+ return null;
250
+ }
251
+ }
252
+ // Returns estimated gas cost of calldata for this DEX in multiSwap
253
+ getCalldataGasCost(poolPrices) {
254
+ // TODO: update if there is any payload in getAdapterParam
255
+ return CALLDATA_GAS_COST.DEX_NO_PAYLOAD;
256
+ }
257
+ getDexParam(srcToken, destToken, srcAmount, destAmount, recipient, data, side) {
258
+ let swapFunction;
259
+ let swapFunctionParams;
260
+ if (data.feeOnTransfer) {
261
+ (0, utils_2._require)(data.path.length === 1, `LOGIC ERROR: multihop is not supported for feeOnTransfer token, passed: ${data.path
262
+ .map(p => `${p?.tokenIn}->${p?.tokenOut}`)
263
+ .join(' ')}`);
264
+ swapFunction = types_1.AlgebraIntegralFunctions.exactInputWithFeeToken;
265
+ swapFunctionParams = {
266
+ limitSqrtPrice: '0',
267
+ recipient: recipient,
268
+ deadline: (0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(),
269
+ amountIn: srcAmount,
270
+ amountOutMinimum: destAmount,
271
+ tokenIn: data.path[0].tokenIn,
272
+ tokenOut: data.path[0].tokenOut,
273
+ deployer: data.path[0].deployer,
274
+ };
275
+ }
276
+ else {
277
+ swapFunction =
278
+ side === constants_1.SwapSide.SELL
279
+ ? types_1.AlgebraIntegralFunctions.exactInput
280
+ : types_1.AlgebraIntegralFunctions.exactOutput;
281
+ const path = this._encodePath(data.path, side);
282
+ swapFunctionParams =
283
+ side === constants_1.SwapSide.SELL
284
+ ? {
285
+ recipient: recipient,
286
+ deadline: (0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(),
287
+ amountIn: srcAmount,
288
+ amountOutMinimum: destAmount,
289
+ path,
290
+ }
291
+ : {
292
+ recipient: recipient,
293
+ deadline: (0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(),
294
+ amountOut: destAmount,
295
+ amountInMaximum: srcAmount,
296
+ path,
297
+ };
298
+ }
299
+ const exchangeData = this.routerIface.encodeFunctionData(swapFunction, [
300
+ swapFunctionParams,
301
+ ]);
302
+ return {
303
+ needWrapNative: this.needWrapNative,
304
+ dexFuncHasRecipient: true,
305
+ exchangeData,
306
+ targetExchange: this.config.router,
307
+ returnAmountPos: side === constants_1.SwapSide.SELL
308
+ ? (0, utils_3.extractReturnAmountPosition)(this.routerIface, swapFunction, 'amountOut')
309
+ : undefined,
310
+ };
311
+ }
312
+ getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
313
+ // Encode here the payload for adapter
314
+ const payload = '';
315
+ return {
316
+ targetExchange: this.config.router,
317
+ payload,
318
+ networkFee: '0',
319
+ };
320
+ }
321
+ // Returns list of top pools based on liquidity. Max
322
+ // limit number pools should be returned.
323
+ async getTopPoolsForToken(tokenAddress, limit) {
324
+ const _tokenAddress = tokenAddress.toLowerCase();
325
+ const res = await this._querySubgraph(`query ($token: Bytes!, $count: Int) {
326
+ pools0: pools(first: $count, orderBy: totalValueLockedUSD, orderDirection: desc, where: {token0: $token}) {
327
+ id
328
+ deployer
329
+ token0 {
330
+ id
331
+ decimals
332
+ }
333
+ token1 {
334
+ id
335
+ decimals
336
+ }
337
+ totalValueLockedUSD
338
+ }
339
+ pools1: pools(first: $count, orderBy: totalValueLockedUSD, orderDirection: desc, where: {token1: $token}) {
340
+ id
341
+ deployer
342
+ token0 {
343
+ id
344
+ decimals
345
+ }
346
+ token1 {
347
+ id
348
+ decimals
349
+ }
350
+ totalValueLockedUSD
351
+ }
352
+ }`, {
353
+ token: _tokenAddress,
354
+ count: limit,
355
+ });
356
+ if (!(res && res.pools0 && res.pools1)) {
357
+ this.logger.error(`Error_${this.dexKey}_Subgraph: couldn't fetch the pools from the subgraph`);
358
+ return [];
359
+ }
360
+ const pools0 = lodash_1.default.map(res.pools0, pool => ({
361
+ exchange: this.dexKey,
362
+ address: pool.id.toLowerCase(),
363
+ connectorTokens: [
364
+ {
365
+ address: pool.token1.id.toLowerCase(),
366
+ decimals: parseInt(pool.token1.decimals),
367
+ },
368
+ ],
369
+ liquidityUSD: parseFloat(pool.totalValueLockedUSD) * ALGEBRA_EFFICIENCY_FACTOR,
370
+ }));
371
+ const pools1 = lodash_1.default.map(res.pools1, pool => ({
372
+ exchange: this.dexKey,
373
+ address: pool.id.toLowerCase(),
374
+ connectorTokens: [
375
+ {
376
+ address: pool.token0.id.toLowerCase(),
377
+ decimals: parseInt(pool.token0.decimals),
378
+ },
379
+ ],
380
+ liquidityUSD: parseFloat(pool.totalValueLockedUSD) * ALGEBRA_EFFICIENCY_FACTOR,
381
+ }));
382
+ const pools = lodash_1.default.slice(lodash_1.default.sortBy(lodash_1.default.concat(pools0, pools1), [pool => -1 * pool.liquidityUSD]), 0, limit);
383
+ return pools;
384
+ }
385
+ async _querySubgraph(query, variables, timeout = 30000) {
386
+ try {
387
+ const res = await this.dexHelper.httpRequest.querySubgraph(this.config.subgraphURL, { query, variables }, { timeout });
388
+ return res.data;
389
+ }
390
+ catch (e) {
391
+ this.logger.error(`${this.dexKey}: can not query subgraph: `, e);
392
+ return {};
393
+ }
394
+ }
395
+ _encodePath(path, side) {
396
+ if (path.length === 0) {
397
+ return '0x';
398
+ }
399
+ const { _path, types } = path.reduce(({ _path, types }, curr, index) => {
400
+ if (index === 0) {
401
+ return {
402
+ types: ['address', 'address', 'address'],
403
+ _path: [curr.tokenIn, curr.deployer, curr.tokenOut],
404
+ };
405
+ }
406
+ else {
407
+ return {
408
+ types: [...types, 'address', 'address'],
409
+ _path: [..._path, curr.deployer, curr.tokenOut],
410
+ };
411
+ }
412
+ }, { _path: [], types: [] });
413
+ return side === constants_1.SwapSide.BUY
414
+ ? (0, solidity_1.pack)(types.reverse(), _path.reverse())
415
+ : (0, solidity_1.pack)(types, _path);
416
+ }
417
+ _sortTokens(srcAddress, destAddress) {
418
+ return [srcAddress, destAddress].sort((a, b) => (a < b ? -1 : 1));
419
+ }
420
+ _getLoweredAddresses(srcToken, destToken) {
421
+ return [srcToken.address.toLowerCase(), destToken.address.toLowerCase()];
422
+ }
423
+ }
424
+ exports.AlgebraIntegral = AlgebraIntegral;
425
+ //# sourceMappingURL=algebra-integral.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"algebra-integral.js","sourceRoot":"","sources":["../../../src/dex/algebra-integral/algebra-integral.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { DexParams } from './types';
2
+ import { DexConfigMap } from '../../types';
3
+ export declare const AlgebraIntegralConfig: DexConfigMap<DexParams>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AlgebraIntegralConfig = void 0;
4
+ const constants_1 = require("../../constants");
5
+ exports.AlgebraIntegralConfig = {
6
+ AlgebraIntegral: {
7
+ [constants_1.Network.POLYGON]: {
8
+ factory: '0x96117a894c2c99aafeeacb972c3310e6ac83e810',
9
+ subgraphURL: 'B8VaWM5T8miDW4TKdGRAkZXvLekpptQykxNV8vVP8fhg',
10
+ quoter: '0xae65e71bcd7c84c8bc53532f6f784ed15a68f8b7',
11
+ router: '0xee2a7a531bcf524392dc3db67bb400bae3833991',
12
+ uniswapMulticall: '0x536310b521120dd3c195e78e5c26d61b938a4594',
13
+ chunksCount: 10,
14
+ },
15
+ },
16
+ };
17
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/algebra-integral/config.ts"],"names":[],"mappings":";;;AAEA,+CAA0C;AAE7B,QAAA,qBAAqB,GAA4B;IAC5D,eAAe,EAAE;QACf,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,OAAO,EAAE,4CAA4C;YACrD,WAAW,EAAE,8CAA8C;YAC3D,MAAM,EAAE,4CAA4C;YACpD,MAAM,EAAE,4CAA4C;YACpD,gBAAgB,EAAE,4CAA4C;YAC9D,WAAW,EAAE,EAAE;SAChB;KACF;CACF,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { Address } from '../../types';
2
+ export type AlgebraIntegralData = {
3
+ path: {
4
+ tokenIn: Address;
5
+ tokenOut: Address;
6
+ deployer: Address;
7
+ }[];
8
+ feeOnTransfer: boolean;
9
+ isApproved?: boolean;
10
+ };
11
+ export type AlgebraDataWithFee = {
12
+ tokenIn: Address;
13
+ tokenOut: Address;
14
+ };
15
+ export type DexParams = {
16
+ factory: Address;
17
+ quoter: Address;
18
+ router: Address;
19
+ subgraphURL: string;
20
+ uniswapMulticall: Address;
21
+ chunksCount: number;
22
+ };
23
+ export type Pool = {
24
+ poolAddress: Address;
25
+ token0: Address;
26
+ token1: Address;
27
+ deployer: string;
28
+ tvlUSD: number;
29
+ };
30
+ export type FactoryState = Record<string, never>;
31
+ export declare enum AlgebraIntegralFunctions {
32
+ exactInput = "exactInput",
33
+ exactOutput = "exactOutput",
34
+ exactInputWithFeeToken = "exactInputSingleSupportingFeeOnTransferTokens"
35
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AlgebraIntegralFunctions = void 0;
4
+ var AlgebraIntegralFunctions;
5
+ (function (AlgebraIntegralFunctions) {
6
+ AlgebraIntegralFunctions["exactInput"] = "exactInput";
7
+ AlgebraIntegralFunctions["exactOutput"] = "exactOutput";
8
+ AlgebraIntegralFunctions["exactInputWithFeeToken"] = "exactInputSingleSupportingFeeOnTransferTokens";
9
+ })(AlgebraIntegralFunctions || (exports.AlgebraIntegralFunctions = AlgebraIntegralFunctions = {}));
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/algebra-integral/types.ts"],"names":[],"mappings":";;;AAoCA,IAAY,wBAIX;AAJD,WAAY,wBAAwB;IAClC,qDAAyB,CAAA;IACzB,uDAA2B,CAAA;IAC3B,oGAAwE,CAAA;AAC1E,CAAC,EAJW,wBAAwB,wCAAxB,wBAAwB,QAInC"}
@@ -0,0 +1,36 @@
1
+ import { DeepReadonly } from 'ts-essentials';
2
+ import { IDexHelper } from '../../../dex-helper/idex-helper';
3
+ import { Logger } from '../../../types';
4
+ import { BasicQuoteData, EkuboContracts } from '../types';
5
+ import { EkuboPool } from './iface';
6
+ import { PoolKey, SwappedEvent } from './utils';
7
+ export declare class BasePool extends EkuboPool<BasePoolState.Object> {
8
+ private readonly dataFetcher;
9
+ constructor(parentName: string, dexHelper: IDexHelper, logger: Logger, contracts: EkuboContracts, key: PoolKey);
10
+ generateState(blockNumber: number): Promise<DeepReadonly<BasePoolState.Object>>;
11
+ }
12
+ export interface Tick {
13
+ readonly number: number;
14
+ liquidityDelta: bigint;
15
+ }
16
+ /**
17
+ * Returns the index in the sorted tick array that has the greatest value of tick that is not greater than the given tick
18
+ * @param sortedTicks the sorted list of ticks to search in
19
+ * @param tick the tick to search for
20
+ */
21
+ export declare function findNearestInitializedTickIndex(sortedTicks: Tick[], tick: number): number | null;
22
+ export declare namespace BasePoolState {
23
+ type Object = {
24
+ sqrtRatio: bigint;
25
+ liquidity: bigint;
26
+ activeTick: number;
27
+ readonly sortedTicks: Tick[];
28
+ activeTickIndex: number | null;
29
+ readonly checkedTicksBounds: readonly [number, number];
30
+ };
31
+ function fromQuoter(data: BasicQuoteData): DeepReadonly<Object>;
32
+ function fromSwappedEvent(oldState: DeepReadonly<Object>, ev: SwappedEvent): Object;
33
+ function fromPositionUpdatedEvent(oldState: DeepReadonly<Object>, [lowTick, highTick]: [number, number], liquidityDelta: bigint): Object | null;
34
+ function addLiquidityCutoffs(state: BasePoolState.Object): void;
35
+ function updateTick(state: Object, updatedTickNumber: number, liquidityDelta: bigint, upper: boolean, forceInsert: boolean): void;
36
+ }